<?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>147979</bug_id>
          
          <creation_ts>2015-08-13 09:22:23 -0700</creation_ts>
          <short_desc>Refactor HTMLCollection to be as fast as CachedLiveNodeList</short_desc>
          <delta_ts>2015-08-16 12:00:10 -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>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>148058</dependson>
          <blocked>110611</blocked>
    
    <blocked>147980</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>barraclough</cc>
    
    <cc>commit-queue</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1117238</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-08-13 09:22:23 -0700</bug_when>
    <thetext>Refactor HTMLCollection to be as fast as CachedLiveNodeList. This is in preparation of having getElementsByTagName*() / getElementsByClassName() return an HTMLCollection instead of a NodeList, as per the specification. Chrome and Firefox already match the specification in this case.

HTMLCollection currently has a lot of branching which makes iterating over it slower than over a CachedLiveNodeList.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117570</commentid>
    <comment_count>1</comment_count>
      <attachid>258979</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-08-13 22:04:11 -0700</bug_when>
    <thetext>Created attachment 258979
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117618</commentid>
    <comment_count>2</comment_count>
      <attachid>258979</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2015-08-14 01:21:57 -0700</bug_when>
    <thetext>Comment on attachment 258979
Patch

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

I&apos;ve just done the first pass through but I&apos;m going to read through it again tomorrow.

&gt; Source/WebCore/ChangeLog:9
&gt; +        preparation of having getElementsByTagName*() / getElementsByClassName()

What&apos;s up with * between Name and ()?

&gt; Source/WebCore/dom/ContainerNode.cpp:906
&gt; -    return ensureCachedHTMLCollection(NodeChildren);
&gt; +    return ensureRareData().ensureNodeLists().addCachedCollection&lt;GenericCachedHTMLCollection&lt;CollectionTypeTraits&lt;NodeChildren&gt;::traversalType&gt;&gt;(*this, NodeChildren);

We should make children() faster at some point.

&gt; Source/WebCore/html/CachedHTMLCollection.h:89
&gt; +template &lt;typename HTMLCollectionClass, CollectionTraversalType traversalType&gt;
&gt; +auto CachedHTMLCollection&lt;HTMLCollectionClass, traversalType&gt;::collectionBegin() const -&gt; IteratorType
&gt; +{
&gt; +    return CollectionTraversal&lt;traversalType&gt;::begin(static_cast&lt;const HTMLCollectionClass&amp;&gt;(*this), rootNode());
&gt; +}

Why don&apos;t we put these one-liners into the class declaration?
We can avoid duplicating the template boilerplate everywhere.

&gt; Source/WebCore/html/CachedHTMLCollection.h:156
&gt; +static inline bool nameShouldBeVisibleInDocumentAll(HTMLElement&amp; element)

I&apos;d call this IsNameAttrNamedProperty instead (named property is the WebIDL term for named getters).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117640</commentid>
    <comment_count>3</comment_count>
      <attachid>258979</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-08-14 09:13:09 -0700</bug_when>
    <thetext>Comment on attachment 258979
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:9
&gt;&gt; +        preparation of having getElementsByTagName*() / getElementsByClassName()
&gt; 
&gt; What&apos;s up with * between Name and ()?

wild card so it matches getElementsByTagNameNS() as well as  getElementsByTagName().

&gt;&gt; Source/WebCore/html/CachedHTMLCollection.h:89
&gt;&gt; +}
&gt; 
&gt; Why don&apos;t we put these one-liners into the class declaration?
&gt; We can avoid duplicating the template boilerplate everywhere.

Hmm, we can. The templates do add a lot of boilerplate.

&gt;&gt; Source/WebCore/html/CachedHTMLCollection.h:156
&gt;&gt; +static inline bool nameShouldBeVisibleInDocumentAll(HTMLElement&amp; element)
&gt; 
&gt; I&apos;d call this IsNameAttrNamedProperty instead (named property is the WebIDL term for named getters).

Note that I merely moved this function in this, it isn&apos;t new. Also note that this function is only used for document.all but your name proposal seems very generic.
We basically want something like &quot;shouldHTMLAllCollectionNamedGetterReturnElementByName(element)&quot; I think.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117648</commentid>
    <comment_count>4</comment_count>
      <attachid>259004</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-08-14 09:40:49 -0700</bug_when>
    <thetext>Created attachment 259004
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117651</commentid>
    <comment_count>5</comment_count>
      <attachid>259005</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-08-14 09:43:29 -0700</bug_when>
    <thetext>Created attachment 259005
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117659</commentid>
    <comment_count>6</comment_count>
      <attachid>258979</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2015-08-14 10:23:24 -0700</bug_when>
    <thetext>Comment on attachment 258979
Patch

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

&gt; Source/WebCore/html/CachedHTMLCollection.h:56
&gt; +    // For CollectionIndexCache; do not use elsewhere.
&gt; +    IteratorType collectionBegin() const;
&gt; +    IteratorType collectionLast() const;
&gt; +    IteratorType collectionEnd() const;
&gt; +    void collectionTraverseForward(IteratorType&amp;, unsigned count, unsigned&amp; traversedCount) const;
&gt; +    void collectionTraverseBackward(IteratorType&amp;, unsigned count) const;
&gt; +    bool collectionCanTraverseBackward() const;
&gt; +    void willValidateIndexCache() const;

Not really this patch but it would be nice to rename willValidateIndexCache to something that follows the pattern (collectionWillValidateIndexCache or similar).

&gt; Source/WebCore/html/CollectionType.h:70
&gt; +enum class CollectionTraversalType { Descendants, ChildrenOnly, CustomForwardOnly };
&gt; +template&lt;CollectionType collectionType&gt;
&gt; +struct CollectionTypeTraits {
&gt; +    static const CollectionTraversalType traversalType = CollectionTraversalType::Descendants;
&gt; +};
&gt; +
&gt; +template&lt;&gt;
&gt; +struct CollectionTypeTraits&lt;NodeChildren&gt; {
&gt; +    static const CollectionTraversalType traversalType = CollectionTraversalType::ChildrenOnly;
&gt; +};
&gt; +
&gt; +template&lt;&gt;
&gt; +struct CollectionTypeTraits&lt;TRCells&gt; {
&gt; +    static const CollectionTraversalType traversalType = CollectionTraversalType::ChildrenOnly;
&gt; +};

Wonder if C++14 constexprs could be used to reduce this sort boilerplate (when that is ok&apos;d).

&gt; Source/WebCore/html/GenericCachedHTMLCollection.cpp:40
&gt; +    switch (Base::type()) {

type() should be sufficient.

&gt; Source/WebCore/html/GenericCachedHTMLCollection.cpp:82
&gt; +    case DocAll:
&gt; +    case DocumentNamedItems:
&gt; +    case FormControls:
&gt; +    case SelectOptions:
&gt; +    case TableRows:
&gt; +    case WindowNamedItems:
&gt; +        break;
&gt; +    }
&gt; +    ASSERT_NOT_REACHED();

It would be good to add a comment that these have non-generic handling for performance reasons and some other types may need it too.

&gt; Source/WebCore/html/HTMLFormControlsCollection.h:46
&gt; +    using Base = CachedHTMLCollection&lt;HTMLFormControlsCollection, CollectionTypeTraits&lt;FormControls&gt;::traversalType&gt;;

Why are these Base typedefs needed? They don&apos;t seem to save much (any?) characters and I can&apos;t see how they are necessary for functionality. Additional type makes code harder to understand.

If they are needed can it be defined in the CachedHTMLCollection template instead for all subclasses?

&gt; Source/WebCore/html/HTMLNameCollection.h:51
&gt; +    : CachedHTMLCollection&lt;HTMLCollectionClass, traversalType&gt;(document, type)

You could use Base here since defined it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117660</commentid>
    <comment_count>7</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2015-08-14 10:23:47 -0700</bug_when>
    <thetext>(the comments are for the original patch)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117662</commentid>
    <comment_count>8</comment_count>
      <attachid>258979</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-08-14 10:28:12 -0700</bug_when>
    <thetext>Comment on attachment 258979
Patch

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

&gt;&gt; Source/WebCore/html/GenericCachedHTMLCollection.cpp:40
&gt;&gt; +    switch (Base::type()) {
&gt; 
&gt; type() should be sufficient.

No, this would not build because the parent class is templated. I need to use Base::type() (or I think this-&gt;type() would work as well).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117706</commentid>
    <comment_count>9</comment_count>
      <attachid>259021</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-08-14 12:20:32 -0700</bug_when>
    <thetext>Created attachment 259021
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117708</commentid>
    <comment_count>10</comment_count>
      <attachid>258979</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-08-14 12:22:24 -0700</bug_when>
    <thetext>Comment on attachment 258979
Patch

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

&gt;&gt;&gt; Source/WebCore/html/CachedHTMLCollection.h:89
&gt;&gt;&gt; +}
&gt;&gt; 
&gt;&gt; Why don&apos;t we put these one-liners into the class declaration?
&gt;&gt; We can avoid duplicating the template boilerplate everywhere.
&gt; 
&gt; Hmm, we can. The templates do add a lot of boilerplate.

Done in the latest iteration.

&gt;&gt;&gt; Source/WebCore/html/GenericCachedHTMLCollection.cpp:40
&gt;&gt;&gt; +    switch (Base::type()) {
&gt;&gt; 
&gt;&gt; type() should be sufficient.
&gt; 
&gt; No, this would not build because the parent class is templated. I need to use Base::type() (or I think this-&gt;type() would work as well).

I use this-&gt;type() in the latest iteration.

&gt;&gt; Source/WebCore/html/HTMLFormControlsCollection.h:46
&gt;&gt; +    using Base = CachedHTMLCollection&lt;HTMLFormControlsCollection, CollectionTypeTraits&lt;FormControls&gt;::traversalType&gt;;
&gt; 
&gt; Why are these Base typedefs needed? They don&apos;t seem to save much (any?) characters and I can&apos;t see how they are necessary for functionality. Additional type makes code harder to understand.
&gt; 
&gt; If they are needed can it be defined in the CachedHTMLCollection template instead for all subclasses?

I dropped them in the latest iteration.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117709</commentid>
    <comment_count>11</comment_count>
      <attachid>259023</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-08-14 12:26:56 -0700</bug_when>
    <thetext>Created attachment 259023
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117713</commentid>
    <comment_count>12</comment_count>
      <attachid>259026</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-08-14 12:29:23 -0700</bug_when>
    <thetext>Created attachment 259026
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117714</commentid>
    <comment_count>13</comment_count>
      <attachid>258979</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-08-14 12:30:29 -0700</bug_when>
    <thetext>Comment on attachment 258979
Patch

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

Made a build fix for EFL.

&gt;&gt; Source/WebCore/html/GenericCachedHTMLCollection.cpp:82
&gt;&gt; +    ASSERT_NOT_REACHED();
&gt; 
&gt; It would be good to add a comment that these have non-generic handling for performance reasons and some other types may need it too.

Added comment in latest iteration.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117841</commentid>
    <comment_count>14</comment_count>
      <attachid>259026</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2015-08-14 17:41:08 -0700</bug_when>
    <thetext>Comment on attachment 259026
Patch

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

Sorry for the delay. It took me a while to comprehend the entirely of the patch.

&gt; Source/WebCore/dom/LiveNodeList.h:103
&gt; +    using Traversal = CollectionTraversal&lt;CollectionTraversalType::Descendants&gt;;

I find Traversal:: shorthands to be confusing because it looks overly generic.
If anything, we might wanna simply define DescendantsCollectionTraversal instead inside CollectionTraversal.h

&gt; Source/WebCore/html/CachedHTMLCollection.h:38
&gt; +    using Traversal = CollectionTraversal&lt;traversalType&gt;;

Ditto about this shorthand. I think it&apos;s fine to repeat CollectionTraversal&lt;traversalType&gt; everywhere instead.

&gt; Source/WebCore/html/CachedHTMLCollection.h:39
&gt; +    using IteratorType = typename Traversal::IteratorType;

&quot;IteratorType&quot; seems overly generic. How about CollectionTraversalIterator?

&gt; Source/WebCore/html/CachedHTMLCollection.h:86
&gt; +    document().registerCollection(const_cast&lt;CachedHTMLCollection&lt;HTMLCollectionClass, traversalType&gt;&amp;&gt;(*this));

It seems like this one-liner can also be defined inside the declaration.

&gt; Source/WebCore/html/CachedHTMLCollection.h:102
&gt; +    // We should call the elementMatches() method directly on the subclass instead for performance.

&quot;We should call&quot; sounds as if this is a FIXME to address.
Not don&apos;t we just say &quot;We call&quot; instead?

&gt; Source/WebCore/html/CollectionTraversal.h:96
&gt; +template &lt;typename CollectionClass&gt;
&gt; +inline ElementDescendantIterator CollectionTraversal&lt;CollectionTraversalType::Descendants&gt;::begin(const CollectionClass&amp; collection, ContainerNode&amp; rootNode)

I&apos;d prefer putting these function definitions right beneath each class declaration so that decorations and definitions are paired up.
Otherwise, it&apos;s hard to figure out which definitions correspond with which declaration.

&gt; Source/WebCore/html/CollectionTraversal.h:129
&gt; +    auto end = descendants.end();

It&apos;s odd to check against end() when we&apos;re traversing backwards.
Perhaps this deserves a comment?
Alternatively, we can get begin() and exit the loop once we&apos;ve hit that.

&gt; Source/WebCore/html/CollectionTraversal.h:141
&gt; +    auto end = children.end();

Ditto.

&gt; Source/WebCore/html/CollectionTraversal.h:161
&gt; +    auto end = collection.collectionEnd();

It&apos;s unclear to me why this wouldn&apos;t traverse the DOM tree given its definition: Traversal::end(rootNode())
We may want to add a comment or revise the code.

&gt; Source/WebCore/html/CollectionTraversal.h:175
&gt; +    auto end = collection.collectionEnd();

Ditto.

&gt; Source/WebCore/html/HTMLCollection.cpp:137
&gt;      // The pathological case. We need to walk the entire subtree.
&gt;      updateNamedElementCache();

It&apos;s a bit strange to keep this fallback in HTMLCollection::namedItem.
Why don&apos;t we rename to something like CachedHTMLCollection::namedItemSlowCase and make HTMLCollection::namedItem pure virtual?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117894</commentid>
    <comment_count>15</comment_count>
      <attachid>259082</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-08-14 21:37:01 -0700</bug_when>
    <thetext>Created attachment 259082
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117900</commentid>
    <comment_count>16</comment_count>
      <attachid>259082</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-08-14 22:45:12 -0700</bug_when>
    <thetext>Comment on attachment 259082
Patch

Clearing flags on attachment: 259082

Committed r188508: &lt;http://trac.webkit.org/changeset/188508&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117901</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-08-14 22:45:17 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117956</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-08-15 11:05:17 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 148058</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1118008</commentid>
    <comment_count>19</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-08-15 20:09:17 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; Re-opened since this is blocked by bug 148058

Based on the traces:
Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   com.apple.JavaScriptCore      	0x0000000116ac6f17 WTFCrashWithSecurityImplication + 39
1   com.apple.WebCore             	0x0000000118698865 WebCore::dispatchChildRemovalEvents(WebCore::Node&amp;) + 117 (ContainerNode.cpp:818)
2   com.apple.WebCore             	0x0000000118698783 WebCore::ContainerNode::willRemoveChild(WebCore::Node&amp;) + 147 (ContainerNode.cpp:486)
3   com.apple.WebCore             	0x0000000118698576 WebCore::ContainerNode::removeChild(WebCore::Node*, int&amp;) + 422 (ContainerNode.cpp:555)
4   com.apple.WebCore             	0x0000000119a97d18 WebCore::Node::removeChild(WebCore::Node*, int&amp;) + 88 (Node.cpp:466)
5   com.apple.WebCore             	0x000000011958107e WebCore::JSNode::removeChild(JSC::ExecState*) + 78 (JSNodeCustom.cpp:139)
6   com.apple.WebCore             	0x000000011957d64f WebCore::jsNodePrototypeFunctionRemoveChild(JSC::ExecState*) + 383 (JSNode.cpp:671)
7   ???                           	0x00003d3825a01028 0 + 67311358709800
8   com.apple.JavaScriptCore      	0x000000011684b826 llint_entry + 25866
9   com.apple.JavaScriptCore      	0x000000011684b826 llint_entry + 25866
10  com.apple.JavaScriptCore      	0x000000011684b826 llint_entry + 25866
11  com.apple.JavaScriptCore      	0x000000011684b826 llint_entry + 25866
12  com.apple.JavaScriptCore      	0x00000001168450d9 vmEntryToJavaScript + 361
13  com.apple.JavaScriptCore      	0x000000011669915c JSC::JITCode::execute(JSC::VM*, JSC::ProtoCallFrame*) + 252
14  com.apple.JavaScriptCore      	0x000000011667df77 JSC::Interpreter::executeCall(JSC::ExecState*, JSC::JSObject*, JSC::CallType, JSC::CallData const&amp;, JSC::JSValue, JSC::ArgList const&amp;) + 1255
15  com.apple.JavaScriptCore      	0x00000001160abd4e JSC::call(JSC::ExecState*, JSC::JSValue, JSC::CallType, JSC::CallData const&amp;, JSC::JSValue, JSC::ArgList const&amp;) + 190
16  com.apple.JavaScriptCore      	0x00000001160abdb3 JSC::call(JSC::ExecState*, JSC::JSValue, JSC::CallType, JSC::CallData const&amp;, JSC::JSValue, JSC::ArgList const&amp;, WTF::NakedPtr&lt;JSC::Exception&gt;&amp;) + 83
17  com.apple.WebCore             	0x000000011925df0b WebCore::JSMainThreadExecState::call(JSC::ExecState*, JSC::JSValue, JSC::CallType, JSC::CallData const&amp;, JSC::JSValue, JSC::ArgList const&amp;, WTF::NakedPtr&lt;JSC::Exception&gt;&amp;) + 107 (JSMainThreadExecState.h:56)
18  com.apple.WebCore             	0x00000001193dfe12 WebCore::JSEventListener::handleEvent(WebCore::ScriptExecutionContext*, WebCore::Event*) + 1218 (JSEventListener.cpp:130)
19  com.apple.WebCore             	0x0000000118b8b9b4 WebCore::EventTarget::fireEventListeners(WebCore::Event*, WebCore::EventTargetData*, WTF::Vector&lt;WebCore::RegisteredEventListener, 1ul, WTF::CrashOnOverflow, 16ul&gt;&amp;) + 1444 (EventTarget.cpp:256)
20  com.apple.WebCore             	0x0000000118b8b1ee WebCore::EventTarget::fireEventListeners(WebCore::Event*) + 334 (EventTarget.cpp:208)
21  com.apple.WebCore             	0x0000000118ab353b WebCore::DOMWindow::dispatchEvent(WTF::PassRefPtr&lt;WebCore::Event&gt;, WTF::PassRefPtr&lt;WebCore::EventTarget&gt;) + 539 (DOMWindow.cpp:1900)
22  com.apple.WebCore             	0x0000000118abadd5 WebCore::DOMWindow::dispatchLoadEvent() + 293 (DOMWindow.cpp:1858)
23  com.apple.WebCore             	0x000000011897aa3d WebCore::Document::dispatchWindowLoadEvent() + 141 (Document.cpp:4032)
24  com.apple.WebCore             	0x00000001189774ad WebCore::Document::implicitClose() + 557 (Document.cpp:2610)
25  com.apple.WebCore             	0x0000000118d091db WebCore::FrameLoader::checkCallImplicitClose() + 155 (FrameLoader.cpp:891)
26  com.apple.WebCore             	0x0000000118d08eae WebCore::FrameLoader::checkCompleted() + 270 (FrameLoader.cpp:838)
27  com.apple.WebCore             	0x0000000118d09025 WebCore::FrameLoader::loadDone() + 21 (FrameLoader.cpp:770)
28  com.apple.WebCore             	0x00000001185b87f9 WebCore::CachedResourceLoader::loadDone(WebCore::CachedResource*, bool) + 121 (CachedResourceLoader.cpp:930)
29  com.apple.WebCore             	0x000000011a273f65 WebCore::SubresourceLoader::notifyDone() + 293 (SubresourceLoader.cpp:457)
30  com.apple.WebCore             	0x000000011a273b76 WebCore::SubresourceLoader::didFinishLoading(double) + 662 (SubresourceLoader.cpp:382)
31  com.apple.WebKit              	0x00000001138456c7 WebKit::WebResourceLoader::didFinishResourceLoad(double) + 151 (WebResourceLoader.cpp:161)
32  com.apple.WebKit              	0x000000011384a793 void IPC::callMemberFunctionImpl&lt;WebKit::WebResourceLoader, void (WebKit::WebResourceLoader::*)(double), std::__1::tuple&lt;double&gt;, 0ul&gt;(WebKit::WebResourceLoader*, void (WebKit::WebResourceLoader::*)(double), std::__1::tuple&lt;double&gt;&amp;&amp;, std::index_sequence&lt;0ul&gt;) + 163 (HandleMessage.h:17)
33  com.apple.WebKit              	0x000000011384a6e8 void IPC::callMemberFunction&lt;WebKit::WebResourceLoader, void (WebKit::WebResourceLoader::*)(double), std::__1::tuple&lt;double&gt;, std::make_index_sequence&lt;1ul&gt; &gt;(std::__1::tuple&lt;double&gt;&amp;&amp;, WebKit::WebResourceLoader*, void (WebKit::WebResourceLoader::*)(double)) + 88 

This has likely to do with ElementIteratorAssertions. It looks like it can hold a NoEventDispatchAssertion, which would explain the crashes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1118011</commentid>
    <comment_count>20</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-08-15 21:28:39 -0700</bug_when>
    <thetext>CollectionIndexCache hold an ElementIterator (m_current). When this iterator is valid, it prevents JS events from being fired. If I understand it correctly, this seems overkill in the context of HTMLCollections because we already make sure HTMLCollection caches are invalidated when relevant DOM tree modifications happens.

Consider the following case:
&lt;div&gt;
    &lt;p&gt;&lt;/p&gt;
    &lt;table id=&quot;myTable&quot;&gt;&lt;tr&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;

- If I access myTable.rows(), the returned HTMLCollection&apos;s CollectionIndexCache will have a valid m_current iterator.
- If the JS then removes the &lt;p&gt; element, we will NOT invalidate the HTMLCollection returned by myTable.rows() (because there is no need). However, we will fire DOMMutation events. When firing the events, we will hit an assertion because the collection iterator in CollectionIndexCache is holding a NoEventDispatchAssertion.

Antti, any thoughts?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1118034</commentid>
    <comment_count>21</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2015-08-16 09:22:27 -0700</bug_when>
    <thetext>Yeah, we should probably add a way to construct ElementIterators without the assertion for this as we have a fine-grained invalidation scheme.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1118035</commentid>
    <comment_count>22</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-08-16 09:40:20 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; Yeah, we should probably add a way to construct ElementIterators without the
&gt; assertion for this as we have a fine-grained invalidation scheme.

Ok. Also, I believe I found out why this wasn&apos;t happening for CachedLiveNodeList. CachedLiveNodeList is using only ElementDescendantIterator (while CachedHTMLCollection is using both ElementDescendantIterator and ElementChildIterator). ElementDescendantIterator has an m_assertion member, however, its constructor doesn&apos;t pass the current Element to the ElementIteratorAssertions constructor. Therefore, the ElementIteratorAssertions never takes a NoEventDispatchAssertion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1118036</commentid>
    <comment_count>23</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2015-08-16 09:43:53 -0700</bug_when>
    <thetext>Yeah. It would be good to fix that too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1118040</commentid>
    <comment_count>24</comment_count>
      <attachid>259125</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-08-16 10:57:10 -0700</bug_when>
    <thetext>Created attachment 259125
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1118041</commentid>
    <comment_count>25</comment_count>
      <attachid>259126</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-08-16 11:01:37 -0700</bug_when>
    <thetext>Created attachment 259126
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1118042</commentid>
    <comment_count>26</comment_count>
      <attachid>259126</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-08-16 11:04:47 -0700</bug_when>
    <thetext>Comment on attachment 259126
Patch

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

Still in the process of running all the layout tests in debug.

&gt; Source/WebCore/dom/ElementDescendantIterator.h:120
&gt; +    , m_assertions(current)

Really enable assertions for ElementDescendantIterator.

&gt; Source/WebCore/dom/ElementDescendantIterator.h:233
&gt; +    , m_assertions(current)

Really enable assertions for ElementDescendantConstIterator.

&gt; Source/WebCore/html/CollectionTraversal.h:65
&gt; +            it.dropAssertions();

Drop iterator assertions before returning it to CollectionIndexCache.

&gt; Source/WebCore/html/CollectionTraversal.h:80
&gt; +            it.dropAssertions();

Drop iterator assertions before returning it to CollectionIndexCache.

&gt; Source/WebCore/html/CollectionTraversal.h:142
&gt; +            it.dropAssertions();

Drop iterator assertions before returning it to CollectionIndexCache.

&gt; Source/WebCore/html/CollectionTraversal.h:158
&gt; +            it.dropAssertions();

Drop iterator assertions before returning it to CollectionIndexCache.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1118046</commentid>
    <comment_count>27</comment_count>
      <attachid>259126</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-08-16 11:48:11 -0700</bug_when>
    <thetext>Comment on attachment 259126
Patch

Ok, I ran ALL the layout tests in debug this time (not just the fast/ folder XD)

Antti, are you ok with the latest changes?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1118047</commentid>
    <comment_count>28</comment_count>
      <attachid>259126</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2015-08-16 11:56:53 -0700</bug_when>
    <thetext>Comment on attachment 259126
Patch

Looks good though I would have done ElementIterator changes in a separate patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1118048</commentid>
    <comment_count>29</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2015-08-16 11:57:14 -0700</bug_when>
    <thetext>r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1118049</commentid>
    <comment_count>30</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-08-16 11:59:21 -0700</bug_when>
    <thetext>Committed r188520: &lt;http://trac.webkit.org/changeset/188520&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>258979</attachid>
            <date>2015-08-13 22:04:11 -0700</date>
            <delta_ts>2015-08-14 09:40:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-147979-20150813220358.patch</filename>
            <type>text/plain</type>
            <size>104783</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg4MzY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzE2NDY1NDRmOTcyZmEx
NzYyNDIxN2VkMTdiZDI3ZWQzZDFjNjZmOC4uYzUwMjZlZjM3OTUyNjRmNWE0ZDk4NDk0YjQxMzM4
ZjM3ZDM1ZWRhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4MCBAQAorMjAxNS0wOC0xMyAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFJlZmFjdG9yIEhUTUxDb2xs
ZWN0aW9uIHRvIGJlIGFzIGZhc3QgYXMgQ2FjaGVkTGl2ZU5vZGVMaXN0CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDc5NzkKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWZhY3RvciBIVE1MQ29sbGVjdGlv
biB0byBiZSBhcyBmYXN0IGFzIENhY2hlZExpdmVOb2RlTGlzdC4gVGhpcyBpcyBpbgorICAgICAg
ICBwcmVwYXJhdGlvbiBvZiBoYXZpbmcgZ2V0RWxlbWVudHNCeVRhZ05hbWUqKCkgLyBnZXRFbGVt
ZW50c0J5Q2xhc3NOYW1lKCkKKyAgICAgICAgcmV0dXJuIGFuIEhUTUxDb2xsZWN0aW9uIGluc3Rl
YWQgb2YgYSBOb2RlTGlzdCwgYXMgcGVyIHRoZQorICAgICAgICBzcGVjaWZpY2F0aW9uLiBDaHJv
bWUgYW5kIEZpcmVmb3ggYWxyZWFkeSBtYXRjaCB0aGUgc3BlY2lmaWNhdGlvbiBpbgorICAgICAg
ICB0aGlzIGNhc2UuCisKKyAgICAgICAgVHJhdmVyc2luZyBhbiBIVE1MQ29sbGVjdGlvbiB3YXMg
c2xvdyBiZWNhdXNlIG9mIGFsbCB0aGUgZXh0cmEKKyAgICAgICAgYnJhbmNoaW5nIGl0IGhhZCBj
b21wYXJlZCB0byBDYWNoZWRMaXZlTm9kZUxpc3QuIFRvIGFkZHJlc3MgdGhlIGlzc3VlLAorICAg
ICAgICB0aGlzIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgdGVtcGxhdGVkIENhY2hlZEhUTUxDb2xs
ZWN0aW9uIHN1YmNsYXNzLAorICAgICAgICB3aGljaCBiZWhhdmVzIGluIGEgc2ltaWxhciB3YXkg
YXMgQ2FjaGVkTGl2ZU5vZGVMaXN0LiBUaGUgMiB0ZW1wbGF0ZQorICAgICAgICBwYXJhbWV0ZXJz
IGFyZToKKyAgICAgICAgMS4gVGhlIHR5cGUgb2YgdGhlIHN1YmNsYXNzIG9mIENhY2hlZEhUTUxD
b2xsZWN0aW9uLCBzbyB3ZSBjYW4gY2FsbAorICAgICAgICAgICBlbGVtZW50TWF0Y2hlcygpIGRp
cmVjdGx5IG9uIHRoZSBzdWJjbGFzcywgd2l0aG91dCBuZWVkZWQgYW55CisgICAgICAgICAgIHZp
cnR1YWwgZnVuY3Rpb24gY2FsbCBvciBzd2l0Y2ggc3RhdGVtZW50LiBUaGlzIGlzIHRoZSBzYW1l
IGFwcHJvYWNoCisgICAgICAgICAgIGFzIGluIENhY2hlZExpdmVOb2RlTGlzdC4KKyAgICAgICAg
Mi4gVGhlIHR5cGUgb2YgdHJlZSB0cmF2ZXJzYWwgdXNlZCAoRGVzY2VuZGFudHMsIENoaWxkcmVu
T25seSwKKyAgICAgICAgICAgQ3VzdG9tRm9yd2FyZE9ubHkpLiBVbmxpa2UgTGl2ZU5vZGVMaXN0
LCBIVE1MQ29sbGVjdGlvbiBuZWVkcyB0bworICAgICAgICAgICBzdXBwb3J0IHRoZXNlIDMgdHlw
ZXMgb2YgdHJlZSB0cmF2ZXJzYWwuIFRoZXNlIHdlcmUgY2F1c2luZyBleHRyYQorICAgICAgICAg
ICBicmFuY2hpbmcgZm9yIGV2ZXJ5IGl0ZW0oKSBjYWxsLiBXZSBhcmUgbm93IGFibGUgdG8gY2hv
b3NlIHRoZSByaWdodAorICAgICAgICAgICB0eXBlIG9mIHRyYXZlcnNhbCBmb3IgdGhlIENhY2hl
ZEhUTUxDb2xsZWN0aW9uIGF0IGNvbXBpbGUgdGltZS4KKworICAgICAgICAqIFdlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgQWRkIG5ldyBmaWxlcyB0byB0aGUgUHJv
amVjdC4KKworICAgICAgICAqIGRvbS9Db250YWluZXJOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNvbnRhaW5lck5vZGU6OmNoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRhaW5l
ck5vZGU6OmNhY2hlZEhUTUxDb2xsZWN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBkb20vQ29u
dGFpbmVyTm9kZS5oOgorICAgICAgICBEcm9wIENvbnRhaW5lck5vZGU6OmVuc3VyZUNhY2hlZEhU
TUxDb2xsZWN0aW9uKCkgYW5kIHVzZQorICAgICAgICBOb2RlTGlzdHNOb2RlRGF0YTo6YWRkQ2Fj
aGVkQ29sbGVjdGlvbigpIGRpcmVjdGx5IGF0IGNhbGwgc2l0ZXMKKyAgICAgICAgaW5zdGVhZC4g
V2UgbmVlZCBhY2Nlc3MgdG8gdGhlIENvbGxlY3Rpb25UeXBlIGF0IGJ1aWxkLXRpbWUgc28KKyAg
ICAgICAgd2UgY2FuIHJlc29sdmUgdGhlIENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlIHBhcmFtZXRl
ciBmb3IgdGhlCisgICAgICAgIEdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbiB1c2luZyBDb2xs
ZWN0aW9uVHlwZVRyYWl0cy4KKworICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAg
ICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgIFVwZGF0ZSBlbnN1cmVDYWNoZWRDb2xsZWN0aW9u
KCkgc28gdGhlIENvbGxlY3Rpb25UeXBlIGlzIG5vdyBhIHRlbXBsYXRlCisgICAgICAgIHBhcmFt
ZXRlciBpbnN0ZWFkIG9mIGEgbWV0aG9kIGFyZ3VtZW50LiBXZSBuZWVkIHRvIGtub3cgdGhlCisg
ICAgICAgIENvbGxlY3Rpb25UeXBlIGF0IGJ1aWxkIHRpbWUgdG8gY29uc3RydWN0IHRoZSBHZW5l
cmljQ2FjaGVkSFRNTENvbGxlY3Rpb24uCisKKyAgICAgICAgKiBkb20vRWxlbWVudENoaWxkSXRl
cmF0b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnRU
eXBlPjo6b3BlcmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudENoaWxkQ29uc3RJdGVy
YXRvcjxFbGVtZW50VHlwZT46Om9wZXJhdG9yKToKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIGRl
Y3JlbWVudGluZyBhbiBFbGVtZW50Q2hpbGRJdGVyYXRvciwgZm9yIGNvbnNpc3RlbmN5CisgICAg
ICAgIHdpdGggRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvci4gV2UgbmVlZCB0aGlzIHRvIHN1cHBv
cnQgYmFja3dhcmQKKyAgICAgICAgdHJhdmVyc2FsIGluIENhY2hlZEhUTUxDb2xsZWN0aW9ucyB0
aGF0IHVzZSB0aGUgJ0NoaWxkcmVuT25seScgdHlwZQorICAgICAgICBvZiB0cmF2ZXJzYWwuCisK
KyAgICAgICAgKiBkb20vTGl2ZU5vZGVMaXN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRM
aXZlTm9kZUxpc3Q8Tm9kZUxpc3RUeXBlPjo6Y29sbGVjdGlvbkJlZ2luKToKKyAgICAgICAgKFdl
YkNvcmU6OkNhY2hlZExpdmVOb2RlTGlzdDxOb2RlTGlzdFR5cGU+Ojpjb2xsZWN0aW9uTGFzdCk6
CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRMaXZlTm9kZUxpc3Q8Tm9kZUxpc3RUeXBlPjo6Y29s
bGVjdGlvblRyYXZlcnNlRm9yd2FyZCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRMaXZlTm9k
ZUxpc3Q8Tm9kZUxpc3RUeXBlPjo6Y29sbGVjdGlvblRyYXZlcnNlQmFja3dhcmQpOgorICAgICAg
ICBNb3ZlIHRyYXZlcnNhbCBpbXBsZW1lbnRhdGlvbiB0byBDb2xsZWN0aW9uVHJhdmVyc2FsLmgs
IHNvIGl0IGNhbiBiZQorICAgICAgICBzaGFyZWQgd2l0aCBhY2hlZEhUTUxDb2xsZWN0aW9uLmgu
CisKKyAgICAgICAgKiBodG1sL0NhY2hlZEhUTUxDb2xsZWN0aW9uLmg6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6dHJhdmVyc2FsVHlwZT46OkNhY2hlZEhUTUxDb2xsZWN0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OnRyYXZlcnNhbFR5cGU+Ojp+Q2FjaGVkSFRNTENvbGxlY3Rpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6dHJhdmVyc2FsVHlwZT46OkNhY2hlZEhUTUxDb2xsZWN0aW9uOjptZW1v
cnlDb3N0KToKKyAgICAgICAgKFdlYkNvcmU6OnRyYXZlcnNhbFR5cGU+Ojpjb2xsZWN0aW9uQ2Fu
VHJhdmVyc2VCYWNrd2FyZCk6CisgICAgICAgIChXZWJDb3JlOjp0cmF2ZXJzYWxUeXBlPjo6Y29s
bGVjdGlvblRyYXZlcnNlRm9yd2FyZCk6CisgICAgICAgIChXZWJDb3JlOjp0cmF2ZXJzYWxUeXBl
Pjo6Y29sbGVjdGlvblRyYXZlcnNlQmFja3dhcmQpOgorICAgICAgICAoV2ViQ29yZTo6dHJhdmVy
c2FsVHlwZT46OndpbGxWYWxpZGF0ZUluZGV4Q2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6dHJh
dmVyc2FsVHlwZT46Omxlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjp0cmF2ZXJzYWxUeXBlPjo6
aXRlbSk6CisgICAgICAgIChXZWJDb3JlOjp0cmF2ZXJzYWxUeXBlPjo6aW52YWxpZGF0ZUNhY2hl
KToKKyAgICAgICAgKFdlYkNvcmU6OnRyYXZlcnNhbFR5cGU+OjplbGVtZW50TWF0Y2hlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpuYW1lU2hvdWxkQmVWaXNpYmxlSW5Eb2N1bWVudEFsbCk6CisgICAg
ICAgIChXZWJDb3JlOjp0cmF2ZXJzYWxUeXBlPjo6bmFtZWRJdGVtKToKKworICAgICAgICAqIGh0
bWwvQ29sbGVjdGlvblRyYXZlcnNhbC5oOiBBZGRlZC4KKyAgICAgICAgQWRkIG5ldyB0ZW1wbGF0
ZSBjbGFzcyB0aGF0IHByb3ZpZGUgdGhlIGNvbGxlY3Rpb24gdHJhdmVyc2FsIGNvZGUKKyAgICAg
ICAgbmVlZGVkIGJ5IENvbGxlY3Rpb25JbmRleENhY2hlLiBJdCBoYXMgdGVtcGxhdGUgc3BlY2lh
bGl6YXRpb25zIGZvcgorICAgICAgICBhbGwgMyB0eXBlcyBvZiB0cmF2ZXJzYWw6IERlc2NlbmRh
bnRzLCBDaGlsZHJlbk9ubHksIGFuZAorICAgICAgICBDdXN0b21Gb3J3YXJkT25seS4KKworICAg
ICAgICAqIGh0bWwvQ29sbGVjdGlvblR5cGUuaDoKKyAgICAgICAgQWRkIENvbGxlY3Rpb25UeXBl
VHJhaXRzIHRyYWl0cyBzbyB3ZSBjYW4gcmVzb2x2ZSB0aGUKKyAgICAgICAgQ29sbGVjdGlvblRy
YXZlcnNhbFR5cGUgdXNlZCBieSBhIHNwZWNpZmljIENvbGxlY3Rpb25UeXBlIGF0CisgICAgICAg
IGNvbXBpbGUtdGltZS4gVGhpcyBpcyBuZWVkZWQgZm9yIHRoZSBzZWNvbmQgdGVtcGxhdGUgcGFy
YW1ldGVyIG9mCisgICAgICAgIENhY2hlZEhUTUxDb2xsZWN0aW9uLgorCisgICAgICAgICogaHRt
bC9HZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbjx0cmF2ZXJzYWxUeXBlPjo6ZWxlbWVudE1h
dGNoZXMpOgorICAgICAgICAqIGh0bWwvR2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uLmg6IEFk
ZGVkLgorICAgICAgICBBZGQgQ2FjaGVkSFRNTENvbGxlY3Rpb24gc3ViY2xhc3MgaXMgdGhlIGdl
bmVyaWMgb25lIHVzZWQgZm9yIGFsbAorICAgICAgICBDb2xsZWN0aW9uVHlwZXMgdGhhdCBkbyBu
b3QgaGF2ZSB0aGVpciBvd24gc3ViY2xhc3MgKGUuZy4gTm9kZUNoaWxkcmVuKS4KKyAgICAgICAg
VGhpcyBoYXMgYW4gZWxlbWVudE1hdGNoZXMoKSBtZXRob2Qgd2l0aCBhIHN3aXRjaCgpIHN0YXRl
bWVudCBoYW5kbGluZworICAgICAgICBhbGwgdGhlc2UgQ29sbGVjdGlvblR5cGVzLiBUaG9zZSBh
cmUgbm90IG5vcm1hbGx5IG5vdCBwZXJmb3JtYW5jZQorICAgICAgICBzZW5zaXRpdmUuCisKKyAg
ICAgICAgKiBodG1sL0hUTUxBbGxDb2xsZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxBbGxDb2xsZWN0aW9uOjpIVE1MQWxsQ29sbGVjdGlvbik6CisgICAgICAgICogaHRtbC9IVE1M
QWxsQ29sbGVjdGlvbi5oOgorICAgICAgICBTdWJjbGFzcyBDYWNoZWRIVE1MQ29sbGVjdGlvbiBp
bnN0ZWFkIG9mIEhUTUxDb2xsZWN0aW9uLiBBbHNvIHByb3ZpZGUKKyAgICAgICAgYW4gZWxlbWVu
dE1hdGNoZXMoKSBtZXRob2QgdGhhdCBzaW1wbHkgcmV0dXJucyB0cnVlIGFzIHdlIHdhbnQgdG8K
KyAgICAgICAgbWF0Y2ggYWxsIGVsZW1lbnRzLgorCisgICAgICAgICogaHRtbC9IVE1MQ29sbGVj
dGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ29sbGVjdGlvbjo6SFRNTENvbGxlY3Rp
b24pOgorICAgICAgICBNb3ZlIENvbGxlY3Rpb25JbmRleENhY2hlIG1lbWJlciB0byB0aGUgc3Vi
Y2xhc3MgYW5kIGRyb3AgdGhlIDIgb3RoZXIKKyAgICAgICAgbWVtYmVycyBhcyB0aGV5IGFyZSBy
ZXBsYWNlZCB3aXRoIHRoZSBDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZSB0ZW1wbGF0ZQorICAgICAg
ICBwYXJhbWV0ZXIgb2YgQ2FjaGVkSFRNTENvbGxlY3Rpb24uCisKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxDb2xsZWN0aW9uOjp+SFRNTENvbGxlY3Rpb24pOgorICAgICAgICBNb3ZlIERvY3VtZW50
Ojp1bnJlZ2lzdGVyQ29sbGVjdGlvbigpIGNhbGwgdG8gfkNhY2hlZEhUTUxDb2xsZWN0aW9uKCkK
KyAgICAgICAgYXMgd2UgbmVlZGVkIHRvIGNoZWNrIGlmIHRoZSBDb2xsZWN0aW9uSW5kZXhDYWNo
ZSB3YXMgdmFsaWQgZmlyc3QuCisKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb2xsZWN0aW9uOjp1
cGRhdGVOYW1lZEVsZW1lbnRDYWNoZSk6CisgICAgICAgIE1vdmUgcGFydCBvZiB0aGUgaW1wbGVt
ZW50YXRpb24gdG8gdGhlIENhY2hlZEhUTUxDb2xsZWN0aW9uIHN1YmNsYXNzCisgICAgICAgIGFz
IGl0IG5lZWRzIHRvIGtub3cgYWJvdXQgdGhlIHR5cGUgb2YgdHJhdmVyc2FsIGFuZCBpdCBuZWVk
cyB0byBiZQorICAgICAgICBhYmxlIHRvIGNhbGwgZWxlbWVudE1hdGNoZXMoKS4KKworICAgICAg
ICAqIGh0bWwvSFRNTENvbGxlY3Rpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb2xsZWN0
aW9uOjpyb290Tm9kZSk6CisgICAgICAgIElubGluZSBmb3IgcGVyZm9ybWFuY2UgcmVhc29ucyBh
bmQgY29uc2lzdGVuY3kgd2l0aCBDYWNoZWRMaXZlTm9kZUxpc3QuCisKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxDb2xsZWN0aW9uOjptZW1vcnlDb3N0KToKKyAgICAgICAgTWFrZSB2aXJ0dWFsIGFu
ZCBtb3ZlIHBhcnQgb2YgdGhlIGltcGxlbWVudGF0aW9uIHRvIHRoZQorICAgICAgICBDYWNoZWRI
VE1MQ29sbGVjdGlvbiBzdWJjbGFzcyB0byBjb21wdXRlIHRoZSBjb3N0IG9mIHRoZQorICAgICAg
ICBDb2xsZWN0aW9uSW5kZXhDYWNoZS4KKworICAgICAgICAoV2ViQ29yZTo6SFRNTENvbGxlY3Rp
b246OmludmFsaWRhdGVDYWNoZSk6CisgICAgICAgIE1vdmUgcGFydCBvZiB0aGUgaW1wbGVtZW50
YXRpb24gdG8gdGhlIHN1YmNsYXNzIHRvIGludmFsaWRhdGUgdGhlCisgICAgICAgIENvbGxlY3Rp
b25JbmRleENhY2hlLgorCisgICAgICAgICogaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxGaWVsZFNldEVsZW1lbnQ6OmVsZW1lbnRzKToKKworICAg
ICAgICAqIGh0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uY3BwOgorICAgICAgICAqIGh0
bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uaDoKKyAgICAgICAgU3ViY2xhc3MgQ2FjaGVk
SFRNTENvbGxlY3Rpb24gaW5zdGVhZCBvZiBIVE1MQ29sbGVjdGlvbi4KKyAgICAgICAgY3VzdG9t
RWxlbWVudEFmdGVyKCkgbm8gbG9uZ2VyIG5lZWRzIHRvIGJlIHZpcnR1YWwgYXMgaXQKKyAgICAg
ICAgaXMgY2FsbGVkIGRpcmVjdGx5IGJ5IENhY2hlZEhUTUxDb2xsZWN0aW9uIG9uIHRoZSBzdWJj
bGFzcy4KKworICAgICAgICAqIGh0bWwvSFRNTEZvcm1FbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxGb3JtRWxlbWVudDo6ZWxlbWVudHMpOgorICAgICAgICAqIGh0bWwvSFRNTE1h
cEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1hcEVsZW1lbnQ6OmFyZWFzKToK
KyAgICAgICAgQ2FsbCBOb2RlTGlzdHNOb2RlRGF0YTo6YWRkQ2FjaGVkQ29sbGVjdGlvbigpIGRp
cmVjdGx5LgorCisgICAgICAgICogaHRtbC9IVE1MTmFtZUNvbGxlY3Rpb24uY3BwOgorICAgICAg
ICAqIGh0bWwvSFRNTE5hbWVDb2xsZWN0aW9uLmg6CisgICAgICAgIFN1YmNsYXNzIENhY2hlZEhU
TUxDb2xsZWN0aW9uIGluc3RlYWQgb2YgSFRNTENvbGxlY3Rpb24uCisKKyAgICAgICAgKiBodG1s
L0hUTUxPcHRpb25zQ29sbGVjdGlvbi5jcHA6CisgICAgICAgICogaHRtbC9IVE1MT3B0aW9uc0Nv
bGxlY3Rpb24uaDoKKyAgICAgICAgU3ViY2xhc3MgQ2FjaGVkSFRNTENvbGxlY3Rpb24gaW5zdGVh
ZCBvZiBIVE1MQ29sbGVjdGlvbi4KKworICAgICAgICAqIGh0bWwvSFRNTFNlbGVjdEVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OnNlbGVjdGVkT3B0aW9u
cyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6b3B0aW9ucyk6CisgICAg
ICAgICogaHRtbC9IVE1MVGFibGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxU
YWJsZUVsZW1lbnQ6OnJvd3MpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRhYmxlRWxlbWVudDo6
dEJvZGllcyk6CisgICAgICAgICogaHRtbC9IVE1MVGFibGVSb3dFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxUYWJsZVJvd0VsZW1lbnQ6OmNlbGxzKToKKyAgICAgICAgQ2FsbCBO
b2RlTGlzdHNOb2RlRGF0YTo6YWRkQ2FjaGVkQ29sbGVjdGlvbigpIGRpcmVjdGx5LgorCisgICAg
ICAgICogaHRtbC9IVE1MVGFibGVSb3dzQ29sbGVjdGlvbi5jcHA6CisgICAgICAgICogaHRtbC9I
VE1MVGFibGVSb3dzQ29sbGVjdGlvbi5oOgorICAgICAgICBTdWJjbGFzcyBDYWNoZWRIVE1MQ29s
bGVjdGlvbiBpbnN0ZWFkIG9mIEhUTUxDb2xsZWN0aW9uLgorICAgICAgICBjdXN0b21FbGVtZW50
QWZ0ZXIoKSBubyBsb25nZXIgbmVlZHMgdG8gYmUgdmlydHVhbCBhcyBpdAorICAgICAgICBpcyBj
YWxsZWQgZGlyZWN0bHkgYnkgQ2FjaGVkSFRNTENvbGxlY3Rpb24gb24gdGhlIHN1YmNsYXNzLgor
CisgICAgICAgICogaHRtbC9IVE1MVGFibGVTZWN0aW9uRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MVGFibGVTZWN0aW9uRWxlbWVudDo6cm93cyk6CisgICAgICAgIENhbGwgTm9k
ZUxpc3RzTm9kZURhdGE6OmFkZENhY2hlZENvbGxlY3Rpb24oKSBkaXJlY3RseS4KKwogMjAxNS0w
OC0xMiAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgQ2FjaGVk
UmVzb3VyY2UgbGVhayBpbiB2YWxpZGF0aW9uIGNvZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXgg
ZTY4MzIxZWEyODQ4OTViYjFjYTc5OWYyZTUwY2E3NTc1Y2NkM2Y3Zi4uMDU4ZGY2ZWNhNzkxOGEy
MDQ2NTIzYTA5N2FiZGM1MWQ3Nzk0YTMwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTE2MDgs
NiArMTYwOCw3IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBodG1sL0Zvcm1Bc3NvY2lhdGVk
RWxlbWVudC5jcHAKICAgICBodG1sL0Zvcm1Db250cm9sbGVyLmNwcAogICAgIGh0bWwvRm9ybURh
dGFMaXN0LmNwcAorICAgIGh0bWwvR2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uLmNwcAogICAg
IGh0bWwvSFRNTEFsbENvbGxlY3Rpb24uY3BwCiAgICAgaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5j
cHAKICAgICBodG1sL0hUTUxBcHBsZXRFbGVtZW50LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDQxNzZmN2YzNmU5ZjdlN2Y2
NTZlZjdkNWRlMjM5NDIwNGU0YTQ5NjguLjNkYWM3ZWJmYzQwMTIwMzM1NjU2NDI2Y2RjMGEyODk0
YzFlOTI3OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTE2ODUsNiArMTY4NSw3IEBACiAJCTQ2QzgzRUZFMUE5QkJFMjkwMEE3
OUE0MSAvKiBHZW9Ob3RpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDZDODNFRkMxQTlCQkUyOTAwQTc5QTQxIC8qIEdlb05vdGlmaWVyLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDZEQjdENTcx
QjIwRkU0NjAwNTY1MUIyIC8qIFZOb2RlVHJhY2tlckNvY29hLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2REI3RDU2MUIyMEZFM0MwMDU2NTFCMiAv
KiBWTm9kZVRyYWNrZXJDb2NvYS5jcHAgKi87IH07CiAJCTQ2REJCNjUwMUFCOEM5NkYwMEQ5QTgx
MyAvKiBQb3dlck9ic2VydmVyTWFjLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0NkRCQjY0RTFBQjhDOTZGMDBEOUE4MTMgLyogUG93ZXJPYnNlcnZlck1h
Yy5oICovOyB9OworCQk0NkVCRUEwMjFCN0Q0RDY1MDBCRTQ5NDEgLyogQ29sbGVjdGlvblRyYXZl
cnNhbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZF
QkVBMDExQjdENEQ1RDAwQkU0OTQxIC8qIENvbGxlY3Rpb25UcmF2ZXJzYWwuaCAqLzsgfTsKIAkJ
NDZGM0UzRjkxQjIxMDkwMDAwODdFRDEzIC8qIFZOb2RlVHJhY2tlci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkRCN0Q1ODFCMjBGRTU4MDA1NjUx
QjIgLyogVk5vZGVUcmFja2VyLmNwcCAqLzsgfTsKIAkJNDZGM0UzRkExQjIxMDkxMDAwODdFRDEz
IC8qIFZOb2RlVHJhY2tlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDZEQjdENTkxQjIwRkU1ODAwNTY1MUIyIC8qIFZOb2RlVHJhY2tlci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2RkNCNjE4MUE3
MDgyMEUwMEM1QTIxRSAvKiBEaWFnbm9zdGljTG9nZ2luZ0tleXMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMzdCMzc1MTVDMUE3RTEwMDZEQzg5OCAv
KiBEaWFnbm9zdGljTG9nZ2luZ0tleXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwpAQCAtMjY2OSw2ICsyNjcwLDExIEBACiAJCTgyQUIxNzc2MTI1Qzgy
NjcwMEM1MDY5RCAvKiBJbnNwZWN0b3JSZXNvdXJjZUFnZW50LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MkFCMTc3MjEyNUM4MjY3MDBDNTA2OUQgLyog
SW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oICovOyB9OwogCQk4MkUzRDhERTEyMkVBMEQxMDAzQUU1
QkMgLyogQ1NTUHJvcGVydHlTb3VyY2VEYXRhLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgyRTNEOERDMTIyRUEwRDEwMDNBRTVCQyAvKiBDU1NQcm9w
ZXJ0eVNvdXJjZURhdGEuY3BwICovOyB9OwogCQk4MkUzRDhERjEyMkVBMEQxMDAzQUU1QkMgLyog
Q1NTUHJvcGVydHlTb3VyY2VEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4MkUzRDhERDEyMkVBMEQxMDAzQUU1QkMgLyogQ1NTUHJvcGVydHlTb3Vy
Y2VEYXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJODMwMDMwRjUxQjdEMzNCNTAwRUQzQUFDIC8qIEdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlv
bi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzAw
MzBGMzFCN0QzM0E2MDBFRDNBQUMgLyogR2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uLmNwcCAq
LzsgfTsKKwkJODMwMDMwRjYxQjdEMzNCNTAwRUQzQUFDIC8qIEdlbmVyaWNDYWNoZWRIVE1MQ29s
bGVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
ODMwMDMwRjQxQjdEMzNBNjAwRUQzQUFDIC8qIEdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbi5o
ICovOyB9OworCQk4MzAwMzBGODFCN0QzQjc4MDBFRDNBQUMgLyogQ2FjaGVkSFRNTENvbGxlY3Rp
b24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzMDAz
MEY3MUI3RDM5ODgwMEVEM0FBQyAvKiBDYWNoZWRIVE1MQ29sbGVjdGlvbi5oICovOyB9OworCQk4
MzFENDhDMDFCN0Q5QTUyMDA2REUzOUEgLyogQ2xhc3NOb2RlTGlzdC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzFENDhCRTFCN0Q5QTQ2MDA2REUz
OUEgLyogQ2xhc3NOb2RlTGlzdC5jcHAgKi87IH07CisJCTgzMUQ0OEMxMUI3RDlBNTIwMDZERTM5
QSAvKiBDbGFzc05vZGVMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4MzFENDhCRjFCN0Q5QTQ2MDA2REUzOUEgLyogQ2xhc3NOb2RlTGlzdC5oICov
OyB9OwogCQk4MzJCODQzNDE5RDhFNTUxMDBCMjYwNTUgLyogU1ZHQW5pbWF0ZUVsZW1lbnRCYXNl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzJCODQz
MzE5RDhFNTUxMDBCMjYwNTUgLyogU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmggKi87IH07CiAJCTgz
MkI4NDM2MTlEOEU1NzQwMEIyNjA1NSAvKiBTVkdBbmltYXRlRWxlbWVudEJhc2UuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODMyQjg0MzUxOUQ4RTU3
NDAwQjI2MDU1IC8qIFNWR0FuaW1hdGVFbGVtZW50QmFzZS5jcHAgKi87IH07CiAJCTgzNTIwQzdF
MUE3MUJGQ0MwMDZCRDJBQSAvKiBDU1NGb250RmFtaWx5LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzUyMEM3RDFBNzFCRkNDMDA2QkQyQUEgLyogQ1NT
Rm9udEZhbWlseS5oICovOyB9OwpAQCAtNTQxMCw4ICs1NDE2LDYgQEAKIAkJQkM4QkYxNUExMDU4
MTQxODAwQTQwQTA3IC8qIFVzZXJTdHlsZVNoZWV0VHlwZXMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDOEJGMTU5MTA1ODE0MTgwMEE0MEEwNyAvKiBV
c2VyU3R5bGVTaGVldFR5cGVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJQkM4QzhGQUQwRERDRDMxQjAwQjU5MkY0IC8qIFJlbmRlclN0eWxlLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDOEM4RkFC
MEREQ0QzMUIwMEI1OTJGNCAvKiBSZW5kZXJTdHlsZS5jcHAgKi87IH07CiAJCUJDOEM4RkFFMERE
Q0QzMUIwMEI1OTJGNCAvKiBSZW5kZXJTdHlsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQkM4QzhGQUMwRERDRDMxQjAwQjU5MkY0IC8qIFJlbmRlclN0
eWxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJ
QkM5MDRCNzYwRDEwOTk4RjAwNjgwRDMyIC8qIENsYXNzTm9kZUxpc3QuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM5MDRCNzIwRDEwOTk4RjAwNjgw
RDMyIC8qIENsYXNzTm9kZUxpc3QuY3BwICovOyB9OwotCQlCQzkwNEI3NzBEMTA5OThGMDA2ODBE
MzIgLyogQ2xhc3NOb2RlTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQkM5MDRCNzMwRDEwOTk4RjAwNjgwRDMyIC8qIENsYXNzTm9kZUxpc3QuaCAq
LzsgfTsKIAkJQkM5MjZGODAwQzA1NTI0NzAwODI3NzZCIC8qIEpTSFRNTEZyYW1lU2V0RWxlbWVu
dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzky
NkY3RTBDMDU1MjQ3MDA4Mjc3NkIgLyogSlNIVE1MRnJhbWVTZXRFbGVtZW50LmNwcCAqLzsgfTsK
IAkJQkM5MjZGODEwQzA1NTI0NzAwODI3NzZCIC8qIEpTSFRNTEZyYW1lU2V0RWxlbWVudC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM5MjZGN0YwQzA1
NTI0NzAwODI3NzZCIC8qIEpTSFRNTEZyYW1lU2V0RWxlbWVudC5oICovOyB9OwogCQlCQzk0MzlD
MzExNkNGNDk0MDA0OEM3NTAgLyogSlNOb2RlQ3VzdG9tLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzk0MzlDMjExNkNGNDk0MDA0OEM3NTAgLyogSlNO
b2RlQ3VzdG9tLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKQEAgLTg5MjQsNiArODkyOCw3IEBACiAJCTQ2REI3RDU4MUIyMEZFNTgwMDU2NTFCMiAvKiBW
Tm9kZVRyYWNrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVk5v
ZGVUcmFja2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZEQjdENTkxQjIw
RkU1ODAwNTY1MUIyIC8qIFZOb2RlVHJhY2tlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBWTm9kZVRyYWNrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZE
QkI2NEUxQUI4Qzk2RjAwRDlBODEzIC8qIFBvd2VyT2JzZXJ2ZXJNYWMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUG93ZXJPYnNlcnZlck1hYy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk0NkVCRUEwMTFCN0Q0RDVEMDBCRTQ5NDEgLyogQ29sbGVjdGlvblRyYXZl
cnNhbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb2xsZWN0aW9uVHJhdmVy
c2FsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5MDcwN0U0MTIxOUMwNDMwMEQ5
MEU1MSAvKiBBTkdMRVdlYktpdEJyaWRnZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBBTkdMRVdlYktpdEJyaWRnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQ5MDcwN0U1MTIxOUMwNDMwMEQ5MEU1MSAvKiBBTkdMRVdlYktpdEJyaWRnZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBTkdMRVdlYktpdEJyaWRnZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OTI5MUU0QTEzNDE3MkM4MDBFNzUzREUgLyogSW1h
Z2VSZW5kZXJpbmdNb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEltYWdl
UmVuZGVyaW5nTW9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTAwMjQsNiAr
MTAwMjksMTEgQEAKIAkJODJBQjE3NzIxMjVDODI2NzAwQzUwNjlEIC8qIEluc3BlY3RvclJlc291
cmNlQWdlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yUmVz
b3VyY2VBZ2VudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MkUzRDhEQzEyMkVB
MEQxMDAzQUU1QkMgLyogQ1NTUHJvcGVydHlTb3VyY2VEYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENTU1Byb3BlcnR5U291cmNlRGF0YS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgyRTNEOEREMTIyRUEwRDEwMDNBRTVCQyAvKiBDU1NQcm9w
ZXJ0eVNvdXJjZURhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1NTUHJv
cGVydHlTb3VyY2VEYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTgzMDAzMEYz
MUI3RDMzQTYwMEVEM0FBQyAvKiBHZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb24uY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0
aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODMwMDMwRjQxQjdEMzNBNjAw
RUQzQUFDIC8qIEdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBHZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb24uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODMwMDMwRjcxQjdEMzk4ODAwRUQzQUFDIC8qIENhY2hlZEhU
TUxDb2xsZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhY2hlZEhU
TUxDb2xsZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTgzMUQ0OEJFMUI3
RDlBNDYwMDZERTM5QSAvKiBDbGFzc05vZGVMaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IENsYXNzTm9kZUxpc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk4MzFENDhCRjFCN0Q5QTQ2MDA2REUzOUEgLyogQ2xhc3NOb2RlTGlzdC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDbGFzc05vZGVMaXN0Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTgzMkI4NDMzMTlEOEU1NTEwMEIyNjA1NSAvKiBTVkdBbmltYXRl
RWxlbWVudEJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHQW5pbWF0
ZUVsZW1lbnRCYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzMkI4NDM1MTlE
OEU1NzQwMEIyNjA1NSAvKiBTVkdBbmltYXRlRWxlbWVudEJhc2UuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODM1MjBDN0QxQTcxQkZDQzAwNkJEMkFBIC8qIENTU0Zv
bnRGYW1pbHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1NTRm9udEZhbWls
eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTI5OTIsOCArMTMwMDIsNiBAQAog
CQlCQzhCRjE1OTEwNTgxNDE4MDBBNDBBMDcgLyogVXNlclN0eWxlU2hlZXRUeXBlcy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVc2VyU3R5bGVTaGVldFR5cGVzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDOEM4RkFCMEREQ0QzMUIwMEI1OTJGNCAvKiBSZW5k
ZXJTdHlsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJT
dHlsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDOEM4RkFDMEREQ0QzMUIw
MEI1OTJGNCAvKiBSZW5kZXJTdHlsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBSZW5kZXJTdHlsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlCQzkwNEI3MjBE
MTA5OThGMDA2ODBEMzIgLyogQ2xhc3NOb2RlTGlzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBDbGFzc05vZGVMaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJQkM5MDRCNzMwRDEwOTk4RjAwNjgwRDMyIC8qIENsYXNzTm9kZUxpc3QuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2xhc3NOb2RlTGlzdC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlCQzkyNkY3RTBDMDU1MjQ3MDA4Mjc3NkIgLyogSlNIVE1MRnJh
bWVTZXRFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U0hUTUxGcmFtZVNldEVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlC
QzkyNkY3RjBDMDU1MjQ3MDA4Mjc3NkIgLyogSlNIVE1MRnJhbWVTZXRFbGVtZW50LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0hUTUxGcmFtZVNldEVsZW1lbnQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM5NDM5QzIxMTZDRjQ5NDAwNDhDNzUwIC8qIEpT
Tm9kZUN1c3RvbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU05vZGVDdXN0
b20uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE4MTYyLDEwICsxODE3MCwxMiBA
QAogCQkJCUY1NUIzRDdBMTI1MUYxMkQwMDNFRjI2OSAvKiBCYXNlVGV4dElucHV0VHlwZS5oICov
LAogCQkJCUY1NUIzRDdCMTI1MUYxMkQwMDNFRjI2OSAvKiBCdXR0b25JbnB1dFR5cGUuY3BwICov
LAogCQkJCUY1NUIzRDdDMTI1MUYxMkQwMDNFRjI2OSAvKiBCdXR0b25JbnB1dFR5cGUuaCAqLywK
KwkJCQk4MzAwMzBGNzFCN0QzOTg4MDBFRDNBQUMgLyogQ2FjaGVkSFRNTENvbGxlY3Rpb24uaCAq
LywKIAkJCQlGNTVCM0Q3RDEyNTFGMTJEMDAzRUYyNjkgLyogQ2hlY2tib3hJbnB1dFR5cGUuY3Bw
ICovLAogCQkJCUY1NUIzRDdFMTI1MUYxMkQwMDNFRjI2OSAvKiBDaGVja2JveElucHV0VHlwZS5o
ICovLAogCQkJCTRBQ0JDMEJDMTI3MTNDQkQwMDk0RjlCMiAvKiBDbGFzc0xpc3QuY3BwICovLAog
CQkJCTRBQ0JDMEJEMTI3MTNDQkQwMDk0RjlCMiAvKiBDbGFzc0xpc3QuaCAqLywKKwkJCQk0NkVC
RUEwMTFCN0Q0RDVEMDBCRTQ5NDEgLyogQ29sbGVjdGlvblRyYXZlcnNhbC5oICovLAogCQkJCTkz
QzQ0MUZGMEY4MTNBRTEwMEMxQTYzNCAvKiBDb2xsZWN0aW9uVHlwZS5oICovLAogCQkJCUJDMjk5
MzVDMTdBMURENTgwMEJDRTg4MCAvKiBDb2xvcklucHV0VHlwZS5jcHAgKi8sCiAJCQkJRjU1QjNE
ODAxMjUxRjEyRDAwM0VGMjY5IC8qIENvbG9ySW5wdXRUeXBlLmggKi8sCkBAIC0xODIwMCw2ICsx
ODIxMCw4IEBACiAJCQkJOUI1MEIxREMxN0NENEMwRjAwODdGNjNDIC8qIEZvcm1OYW1lZEl0ZW0u
aCAqLywKIAkJCQk5NzIwNUFBRDEyMzkyOENBMDBCMTczODAgLyogRlRQRGlyZWN0b3J5RG9jdW1l
bnQuY3BwICovLAogCQkJCTk3MjA1QUFFMTIzOTI4Q0EwMEIxNzM4MCAvKiBGVFBEaXJlY3RvcnlE
b2N1bWVudC5oICovLAorCQkJCTgzMDAzMEYzMUI3RDMzQTYwMEVEM0FBQyAvKiBHZW5lcmljQ2Fj
aGVkSFRNTENvbGxlY3Rpb24uY3BwICovLAorCQkJCTgzMDAzMEY0MUI3RDMzQTYwMEVEM0FBQyAv
KiBHZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb24uaCAqLywKIAkJCQlGNTVCM0Q4QjEyNTFGMTJE
MDAzRUYyNjkgLyogSGlkZGVuSW5wdXRUeXBlLmNwcCAqLywKIAkJCQlGNTVCM0Q4QzEyNTFGMTJE
MDAzRUYyNjkgLyogSGlkZGVuSW5wdXRUeXBlLmggKi8sCiAJCQkJQkM5N0UyMzkxMDkxNDQ5NTAw
MTBEMzYxIC8qIEhUTUxBbGxDb2xsZWN0aW9uLmNwcCAqLywKQEAgLTIzMTUzLDggKzIzMTY1LDgg
QEAKIAkJCQk4M0QyNkQzQzFBRkRDQzUwMDAxQjM4NzMgLyogQ2hpbGROb2RlLmlkbCAqLywKIAkJ
CQlBODE4NzIxQTA5NzdEM0MwMDA1ODI2RDkgLyogQ2hpbGROb2RlTGlzdC5jcHAgKi8sCiAJCQkJ
QTgxODcyMTUwOTc3RDNDMDAwNTgyNkQ5IC8qIENoaWxkTm9kZUxpc3QuaCAqLywKLQkJCQlCQzkw
NEI3MjBEMTA5OThGMDA2ODBEMzIgLyogQ2xhc3NOb2RlTGlzdC5jcHAgKi8sCi0JCQkJQkM5MDRC
NzMwRDEwOTk4RjAwNjgwRDMyIC8qIENsYXNzTm9kZUxpc3QuaCAqLywKKwkJCQk4MzFENDhCRTFC
N0Q5QTQ2MDA2REUzOUEgLyogQ2xhc3NOb2RlTGlzdC5jcHAgKi8sCisJCQkJODMxRDQ4QkYxQjdE
OUE0NjAwNkRFMzlBIC8qIENsYXNzTm9kZUxpc3QuaCAqLywKIAkJCQlCQ0MwNjU3NzBGM0NFMUI3
MDBDRDJEODcgLyogQ2xpZW50UmVjdC5jcHAgKi8sCiAJCQkJQkNDMDY1NzgwRjNDRTFCNzAwQ0Qy
RDg3IC8qIENsaWVudFJlY3QuaCAqLywKIAkJCQlCQ0MwNjU3OTBGM0NFMUI3MDBDRDJEODcgLyog
Q2xpZW50UmVjdC5pZGwgKi8sCkBAIC0yNDE3MCw3ICsyNDE4Miw2IEBACiAJCQkJMTREODIzNTIw
QUY5MkE3OTAwMDRGMDU3IC8qIENocm9tZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTREODI0MDgw
QUY5M0FFQjAwMDRGMDU3IC8qIENocm9tZUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNEFD
QkMwQkYxMjcxM0NCRDAwOTRGOUIyIC8qIENsYXNzTGlzdC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJ
QkM5MDRCNzcwRDEwOTk4RjAwNjgwRDMyIC8qIENsYXNzTm9kZUxpc3QuaCBpbiBIZWFkZXJzICov
LAogCQkJCUJDQzA2NTdFMEYzQ0UxQjcwMENEMkQ4NyAvKiBDbGllbnRSZWN0LmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCQ0MwNjU4MTBGM0NFMUI3MDBDRDJEODcgLyogQ2xpZW50UmVjdExpc3QuaCBp
biBIZWFkZXJzICovLAogCQkJCTg1MDMxQjQwMEE0NEVGQzcwMEY5OTJFMCAvKiBDbGlwYm9hcmRF
dmVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNDQ0Miw2ICsyNDQ1Myw3IEBACiAJCQkJODM3MkRC
MzExQTY3ODBBODAwQzY5N0M1IC8qIERpYWdub3N0aWNMb2dnaW5nUmVzdWx0VHlwZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQ0VDQURGQzcxNTM3NzhGRjAwRTM3MDY4IC8qIERpY3RhdGlvbkFsdGVy
bmF0aXZlLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRUNBREZDOTE1Mzc3OEZGMDBFMzcwNjggLyog
RGljdGF0aW9uQ29tbWFuZC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDZFQkVBMDIxQjdENEQ2NTAw
QkU0OTQxIC8qIENvbGxlY3Rpb25UcmF2ZXJzYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCUQwQkQ0
RjVEMTQwODg1MEYwMDY4MzlCNiAvKiBEaWN0YXRpb25Db21tYW5kSU9TLmggaW4gSGVhZGVycyAq
LywKIAkJCQkxNTE0NUI5MDFCM0ExQ0UwMDA2NjJCRjcgLyogTWVkaWFEZXZpY2VJbmZvLmggaW4g
SGVhZGVycyAqLywKIAkJCQkzMTYwMjNGMDE1MzJDNDBDMDBENTBGRjQgLyogRGljdGlvbmFyeS5o
IGluIEhlYWRlcnMgKi8sCkBAIC0yNDU0Nyw2ICsyNDU1OSw3IEBACiAJCQkJODVFNzExOTYwQUM1
RDUzNTAwNTMyNzBGIC8qIERPTURvY3VtZW50VHlwZUludGVybmFsLmggaW4gSGVhZGVycyAqLywK
IAkJCQk4NTE4RENFOTBBOUNDODBEMDA5MUI3QTYgLyogRE9NRE9NSW1wbGVtZW50YXRpb24uaCBp
biBIZWFkZXJzICovLAogCQkJCTg1RTcxMTk3MEFDNUQ1MzUwMDUzMjcwRiAvKiBET01ET01JbXBs
ZW1lbnRhdGlvbkludGVybmFsLmggaW4gSGVhZGVycyAqLywKKwkJCQk4MzFENDhDMTFCN0Q5QTUy
MDA2REUzOUEgLyogQ2xhc3NOb2RlTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTJDQ0E5RTgx
NUUzRjY0QzAwNTNDNzdGIC8qIERPTURPTU5hbWVkRmxvd0NvbGxlY3Rpb24uaCBpbiBIZWFkZXJz
ICovLAogCQkJCTUyQ0NBOUVBMTVFM0Y2NEMwMDUzQzc3RiAvKiBET01ET01OYW1lZEZsb3dDb2xs
ZWN0aW9uSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTJEOUEyNDc0MTVCOUMyRTMwMEQz
NDUyNyAvKiBET01ET01TZWN1cml0eVBvbGljeS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNTYyOSw2
ICsyNTY0Miw3IEBACiAJCQkJRkRBMTVFQjIxMkIwM0VFMTAwM0E1ODNBIC8qIEpTUGFubmVyTm9k
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOEE5QTU4NzUxMUU4NEM4MTAwOEFDRkQxIC8qIEpTUGVy
Zm9ybWFuY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCThBOUE1ODcxMTFFODRDMzYwMDhBQ0ZEMSAv
KiBKU1BlcmZvcm1hbmNlTmF2aWdhdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJODMwMDMwRjYx
QjdEMzNCNTAwRUQzQUFDIC8qIEdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbi5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJOEE5QTU4ODgxMUU4NEYzNzAwOEFDRkQxIC8qIEpTUGVyZm9ybWFuY2VUaW1p
bmcuaCBpbiBIZWFkZXJzICovLAogCQkJCUZERUE2MjQ3MTUyMTAyRkMwMDQ3OURGMCAvKiBKU1Bl
cmlvZGljV2F2ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNCNzBENkMwOUVCMEM3QzAwOUQ4NDY4
IC8qIEpTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNjk2OCw2
ICsyNjk4Miw3IEBACiAJCQkJQjIyMjdBNTEwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR051bWJlckxp
c3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3QTU0MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdQ
YWludC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjdBNTcwRDAwQkYyMjAwNzFCNzgyIC8qIFNW
R1BhcnNlclV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJODMwMDMwRjgxQjdEM0I3ODAw
RUQzQUFDIC8qIENhY2hlZEhUTUxDb2xsZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDNB
MEUzNjEzQTdENzYxMDBFODVBRjAgLyogU1ZHUGFyc2luZ0Vycm9yLmggaW4gSGVhZGVycyAqLywK
IAkJCQk4NEM2Nzg0RDEyMTQ4MTQ3MDBBOTI5MDIgLyogU1ZHUGF0aEJsZW5kZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTg0NzZDOUVCMTFERjZBMjkwMDU1NUIwMiAvKiBTVkdQYXRoQnVpbGRlci5o
IGluIEhlYWRlcnMgKi8sCkBAIC0yNzk2Myw3ICsyNzk3OCw2IEBACiAJCQkJMTREODIzOEIwQUY5
MkRGNjAwMDRGMDU3IC8qIENocm9tZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBQkFGMjIwODBD
MDNCMUM3MDBCMEJDRjAgLyogQ2hyb21lTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNEFDQkMw
QkUxMjcxM0NCRDAwOTRGOUIyIC8qIENsYXNzTGlzdC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlC
QzkwNEI3NjBEMTA5OThGMDA2ODBEMzIgLyogQ2xhc3NOb2RlTGlzdC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlCQ0MwNjU3RDBGM0NFMUI3MDBDRDJEODcgLyogQ2xpZW50UmVjdC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlCQ0MwNjU4MDBGM0NFMUI3MDBDRDJEODcgLyogQ2xpZW50UmVjdExpc3Qu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODUwMzFCM0YwQTQ0RUZDNzAwRjk5MkUwIC8qIENsaXBi
b2FyZEV2ZW50LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjg5NzAsNiArMjg5ODQsNyBAQAogCQkJ
CUE5QzZFNjRDMEQ3NDY1RTcwMDY0NDJFOSAvKiBKU0RPTVBsdWdpbkFycmF5Q3VzdG9tLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUE5QzZFNjREMEQ3NDY1RTcwMDY0NDJFOSAvKiBKU0RPTVBsdWdp
bkN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMTcyQUY4RjE4MTFCQzM3MDBGQkFEQjkg
LyogSlNET01Qcm9taXNlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTgzMUQ0OEMwMUI3RDlBNTIw
MDZERTM5QSAvKiBDbGFzc05vZGVMaXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDNUE4NkI1
MEMzMzY3RTgwMEVFQTY0OSAvKiBKU0RPTVNlbGVjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk0QUNCQzBDQTEyNzEzRDBBMDA5NEY5QjIgLyogSlNET01TZXR0YWJsZVRva2VuTGlzdC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlDNTEzN0NGMjExQTU4Mzc4MDA0QURCOTkgLyogSlNET01TdHJp
bmdMaXN0LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjkyNjIsNiArMjkyNzcsNyBAQAogCQkJCTA3
OTY5REJEMTdEMTQxNTEwMDdGRjg0MiAvKiBKU1JUQ1Nlc3Npb25EZXNjcmlwdGlvbkNhbGxiYWNr
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA3RDA3QjE0MTgzNDE1ODgwMEFCREQzQyAvKiBKU1JU
Q1Nlc3Npb25EZXNjcmlwdGlvbkN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzk2OURC
RjE3RDE0MTUxMDA3RkY4NDIgLyogSlNSVENTdGF0c0NhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCTgzMDAzMEY1MUI3RDMzQjUwMEVEM0FBQyAvKiBHZW5lcmljQ2FjaGVkSFRNTENvbGxl
Y3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDc5NjlEQzExN0QxNDE1MTAwN0ZGODQyIC8q
IEpTUlRDU3RhdHNSZXBvcnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDc5NjlEQzMxN0QxNDE1
MTAwN0ZGODQyIC8qIEpTUlRDU3RhdHNSZXNwb25zZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkw
N0RDNUZENDE3RDNFRUU5MDA5OUY4OTAgLyogSlNSVENTdGF0c1Jlc3BvbnNlQ3VzdG9tLmNwcCBp
biBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5v
ZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCmluZGV4IGJlM2Ez
YzE4N2E4NWMxYzdlOWY4NjRmZDNjZDdiMWE3ZGUyNmRhNjEuLmJlOTY0YmNmYzRhYmQ5ZTY2OGYz
NGYwZDRiMjAzNTExNzA2ZDdlNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250
YWluZXJOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAK
QEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJFZGl0b3IuaCIKICNpbmNsdWRlICJGbG9hdFJl
Y3QuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKKyNpbmNsdWRlICJHZW5lcmljQ2FjaGVkSFRN
TENvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5oIgog
I2luY2x1ZGUgIkhUTUxPcHRpb25zQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxUYWJsZVJv
d3NDb2xsZWN0aW9uLmgiCkBAIC05MDIsNyArOTAzLDcgQEAgUmVmUHRyPFJhZGlvTm9kZUxpc3Q+
IENvbnRhaW5lck5vZGU6OnJhZGlvTm9kZUxpc3QoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKQog
CiBSZWY8SFRNTENvbGxlY3Rpb24+IENvbnRhaW5lck5vZGU6OmNoaWxkcmVuKCkKIHsKLSAgICBy
ZXR1cm4gZW5zdXJlQ2FjaGVkSFRNTENvbGxlY3Rpb24oTm9kZUNoaWxkcmVuKTsKKyAgICByZXR1
cm4gZW5zdXJlUmFyZURhdGEoKS5lbnN1cmVOb2RlTGlzdHMoKS5hZGRDYWNoZWRDb2xsZWN0aW9u
PEdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbjxDb2xsZWN0aW9uVHlwZVRyYWl0czxOb2RlQ2hp
bGRyZW4+Ojp0cmF2ZXJzYWxUeXBlPj4oKnRoaXMsIE5vZGVDaGlsZHJlbik7CiB9CiAKIEVsZW1l
bnQqIENvbnRhaW5lck5vZGU6OmZpcnN0RWxlbWVudENoaWxkKCkgY29uc3QKQEAgLTkzOSwyMiAr
OTQwLDYgQEAgdm9pZCBDb250YWluZXJOb2RlOjpwcmVwZW5kKFZlY3RvcjxOb2RlT3JTdHJpbmc+
JiYgbm9kZU9yU3RyaW5nVmVjdG9yLCBFeGNlcHRpb24KICAgICBpbnNlcnRCZWZvcmUobm9kZS5y
ZWxlYXNlKCksIGZpcnN0Q2hpbGQoKSwgZWMpOwogfQogCi1SZWY8SFRNTENvbGxlY3Rpb24+IENv
bnRhaW5lck5vZGU6OmVuc3VyZUNhY2hlZEhUTUxDb2xsZWN0aW9uKENvbGxlY3Rpb25UeXBlIHR5
cGUpCi17Ci0gICAgaWYgKEhUTUxDb2xsZWN0aW9uKiBjb2xsZWN0aW9uID0gY2FjaGVkSFRNTENv
bGxlY3Rpb24odHlwZSkpCi0gICAgICAgIHJldHVybiAqY29sbGVjdGlvbjsKLQotICAgIGlmICh0
eXBlID09IFRhYmxlUm93cykKLSAgICAgICAgcmV0dXJuIGVuc3VyZVJhcmVEYXRhKCkuZW5zdXJl
Tm9kZUxpc3RzKCkuYWRkQ2FjaGVkQ29sbGVjdGlvbjxIVE1MVGFibGVSb3dzQ29sbGVjdGlvbj4o
ZG93bmNhc3Q8SFRNTFRhYmxlRWxlbWVudD4oKnRoaXMpLCB0eXBlKTsKLSAgICBlbHNlIGlmICh0
eXBlID09IFNlbGVjdE9wdGlvbnMpCi0gICAgICAgIHJldHVybiBlbnN1cmVSYXJlRGF0YSgpLmVu
c3VyZU5vZGVMaXN0cygpLmFkZENhY2hlZENvbGxlY3Rpb248SFRNTE9wdGlvbnNDb2xsZWN0aW9u
Pihkb3duY2FzdDxIVE1MU2VsZWN0RWxlbWVudD4oKnRoaXMpLCB0eXBlKTsKLSAgICBlbHNlIGlm
ICh0eXBlID09IEZvcm1Db250cm9scykgewotICAgICAgICBBU1NFUlQoaGFzVGFnTmFtZShIVE1M
TmFtZXM6OmZvcm1UYWcpIHx8IGhhc1RhZ05hbWUoSFRNTE5hbWVzOjpmaWVsZHNldFRhZykpOwot
ICAgICAgICByZXR1cm4gZW5zdXJlUmFyZURhdGEoKS5lbnN1cmVOb2RlTGlzdHMoKS5hZGRDYWNo
ZWRDb2xsZWN0aW9uPEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uPigqdGhpcywgdHlwZSk7Ci0g
ICAgfQotICAgIHJldHVybiBlbnN1cmVSYXJlRGF0YSgpLmVuc3VyZU5vZGVMaXN0cygpLmFkZENh
Y2hlZENvbGxlY3Rpb248SFRNTENvbGxlY3Rpb24+KCp0aGlzLCB0eXBlKTsKLX0KLQogSFRNTENv
bGxlY3Rpb24qIENvbnRhaW5lck5vZGU6OmNhY2hlZEhUTUxDb2xsZWN0aW9uKENvbGxlY3Rpb25U
eXBlIHR5cGUpCiB7CiAgICAgcmV0dXJuIGhhc1JhcmVEYXRhKCkgJiYgcmFyZURhdGEoKS0+bm9k
ZUxpc3RzKCkgPyByYXJlRGF0YSgpLT5ub2RlTGlzdHMoKS0+Y2FjaGVkQ29sbGVjdGlvbjxIVE1M
Q29sbGVjdGlvbj4odHlwZSkgOiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0NvbnRhaW5lck5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmgK
aW5kZXggZGEwNjIxZDdmMDVjNmVhYjgxZjBjNTdhMWRmZjU2MGJmZTY4OTlkZS4uMDViM2ZjYWVk
ODQ4ZGRkYjY2NTE3MTg0NzVjYjc2NGVmOTUwMTFiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0NvbnRhaW5lck5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVy
Tm9kZS5oCkBAIC0xNjksNyArMTY5LDYgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgc2V0Rmlyc3RD
aGlsZChOb2RlKiBjaGlsZCkgeyBtX2ZpcnN0Q2hpbGQgPSBjaGlsZDsgfQogICAgIHZvaWQgc2V0
TGFzdENoaWxkKE5vZGUqIGNoaWxkKSB7IG1fbGFzdENoaWxkID0gY2hpbGQ7IH0KIAotICAgIFJl
ZjxIVE1MQ29sbGVjdGlvbj4gZW5zdXJlQ2FjaGVkSFRNTENvbGxlY3Rpb24oQ29sbGVjdGlvblR5
cGUpOwogICAgIEhUTUxDb2xsZWN0aW9uKiBjYWNoZWRIVE1MQ29sbGVjdGlvbihDb2xsZWN0aW9u
VHlwZSk7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCAzM2Q3MTVkM2Yx
MjY2OTczNTRkYmUzMTEyYmY1NDU2YWUwOTVkOGNmLi5iMzcxN2Q5N2E0MWJhZjMzZTg3YTZkOTgy
ZDAzYjAyM2I0ZDllMjE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTYzLDEyICs2Mywx
MiBAQAogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGll
bnQuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKKyNpbmNsdWRlICJHZW5lcmljQ2FjaGVkSFRN
TENvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJIVE1MQWxsQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUg
IkhUTUxBbmNob3JFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEJhc2VFbGVtZW50LmgiCiAjaW5j
bHVkZSAiSFRNTEJvZHlFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTENhbnZhc0VsZW1lbnQuaCIK
LSNpbmNsdWRlICJIVE1MQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxEb2N1bWVudC5oIgog
I2luY2x1ZGUgIkhUTUxFbGVtZW50RmFjdG9yeS5oIgogI2luY2x1ZGUgIkhUTUxGb3JtQ29udHJv
bEVsZW1lbnQuaCIKQEAgLTQ3NzIsNTAgKzQ3NzIsNTEgQEAgYm9vbCBEb2N1bWVudDo6aGFzU1ZH
Um9vdE5vZGUoKSBjb25zdAogICAgIHJldHVybiBkb2N1bWVudEVsZW1lbnQoKSAmJiBkb2N1bWVu
dEVsZW1lbnQoKS0+aGFzVGFnTmFtZShTVkdOYW1lczo6c3ZnVGFnKTsKIH0KIAotUmVmPEhUTUxD
b2xsZWN0aW9uPiBEb2N1bWVudDo6ZW5zdXJlQ2FjaGVkQ29sbGVjdGlvbihDb2xsZWN0aW9uVHlw
ZSB0eXBlKQordGVtcGxhdGUgPENvbGxlY3Rpb25UeXBlIGNvbGxlY3Rpb25UeXBlPgorUmVmPEhU
TUxDb2xsZWN0aW9uPiBEb2N1bWVudDo6ZW5zdXJlQ2FjaGVkQ29sbGVjdGlvbigpCiB7Ci0gICAg
cmV0dXJuIGVuc3VyZVJhcmVEYXRhKCkuZW5zdXJlTm9kZUxpc3RzKCkuYWRkQ2FjaGVkQ29sbGVj
dGlvbjxIVE1MQ29sbGVjdGlvbj4oKnRoaXMsIHR5cGUpOworICAgIHJldHVybiBlbnN1cmVSYXJl
RGF0YSgpLmVuc3VyZU5vZGVMaXN0cygpLmFkZENhY2hlZENvbGxlY3Rpb248R2VuZXJpY0NhY2hl
ZEhUTUxDb2xsZWN0aW9uPENvbGxlY3Rpb25UeXBlVHJhaXRzPGNvbGxlY3Rpb25UeXBlPjo6dHJh
dmVyc2FsVHlwZT4+KCp0aGlzLCBjb2xsZWN0aW9uVHlwZSk7CiB9CiAKIFJlZjxIVE1MQ29sbGVj
dGlvbj4gRG9jdW1lbnQ6OmltYWdlcygpCiB7Ci0gICAgcmV0dXJuIGVuc3VyZUNhY2hlZENvbGxl
Y3Rpb24oRG9jSW1hZ2VzKTsKKyAgICByZXR1cm4gZW5zdXJlQ2FjaGVkQ29sbGVjdGlvbjxEb2NJ
bWFnZXM+KCk7CiB9CiAKIFJlZjxIVE1MQ29sbGVjdGlvbj4gRG9jdW1lbnQ6OmFwcGxldHMoKQog
ewotICAgIHJldHVybiBlbnN1cmVDYWNoZWRDb2xsZWN0aW9uKERvY0FwcGxldHMpOworICAgIHJl
dHVybiBlbnN1cmVDYWNoZWRDb2xsZWN0aW9uPERvY0FwcGxldHM+KCk7CiB9CiAKIFJlZjxIVE1M
Q29sbGVjdGlvbj4gRG9jdW1lbnQ6OmVtYmVkcygpCiB7Ci0gICAgcmV0dXJuIGVuc3VyZUNhY2hl
ZENvbGxlY3Rpb24oRG9jRW1iZWRzKTsKKyAgICByZXR1cm4gZW5zdXJlQ2FjaGVkQ29sbGVjdGlv
bjxEb2NFbWJlZHM+KCk7CiB9CiAKIFJlZjxIVE1MQ29sbGVjdGlvbj4gRG9jdW1lbnQ6OnBsdWdp
bnMoKQogewogICAgIC8vIFRoaXMgaXMgYW4gYWxpYXMgZm9yIGVtYmVkcygpIHJlcXVpcmVkIGZv
ciB0aGUgSlMgRE9NIGJpbmRpbmdzLgotICAgIHJldHVybiBlbnN1cmVDYWNoZWRDb2xsZWN0aW9u
KERvY0VtYmVkcyk7CisgICAgcmV0dXJuIGVuc3VyZUNhY2hlZENvbGxlY3Rpb248RG9jRW1iZWRz
PigpOwogfQogCiBSZWY8SFRNTENvbGxlY3Rpb24+IERvY3VtZW50OjpzY3JpcHRzKCkKIHsKLSAg
ICByZXR1cm4gZW5zdXJlQ2FjaGVkQ29sbGVjdGlvbihEb2NTY3JpcHRzKTsKKyAgICByZXR1cm4g
ZW5zdXJlQ2FjaGVkQ29sbGVjdGlvbjxEb2NTY3JpcHRzPigpOwogfQogCiBSZWY8SFRNTENvbGxl
Y3Rpb24+IERvY3VtZW50OjpsaW5rcygpCiB7Ci0gICAgcmV0dXJuIGVuc3VyZUNhY2hlZENvbGxl
Y3Rpb24oRG9jTGlua3MpOworICAgIHJldHVybiBlbnN1cmVDYWNoZWRDb2xsZWN0aW9uPERvY0xp
bmtzPigpOwogfQogCiBSZWY8SFRNTENvbGxlY3Rpb24+IERvY3VtZW50Ojpmb3JtcygpCiB7Ci0g
ICAgcmV0dXJuIGVuc3VyZUNhY2hlZENvbGxlY3Rpb24oRG9jRm9ybXMpOworICAgIHJldHVybiBl
bnN1cmVDYWNoZWRDb2xsZWN0aW9uPERvY0Zvcm1zPigpOwogfQogCiBSZWY8SFRNTENvbGxlY3Rp
b24+IERvY3VtZW50OjphbmNob3JzKCkKIHsKLSAgICByZXR1cm4gZW5zdXJlQ2FjaGVkQ29sbGVj
dGlvbihEb2NBbmNob3JzKTsKKyAgICByZXR1cm4gZW5zdXJlQ2FjaGVkQ29sbGVjdGlvbjxEb2NB
bmNob3JzPigpOwogfQogCiBSZWY8SFRNTENvbGxlY3Rpb24+IERvY3VtZW50OjphbGwoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuaAppbmRleCA4MGZlN2E0OGVlZjIxYjc0MTA1NDI0MjI4YTZmNzMyNmY2Y2Q0
YTI3Li5lNTNiZjNlMWM2YzFlZjIwOWIzMjkzMzZmMzcyZTFmODEwY2U5Zjk3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuaApAQCAtMTEzLDcgKzExMyw2IEBAIGNsYXNzIEhUTUxJRnJhbWVFbGVtZW50Owog
Y2xhc3MgSFRNTEltYWdlRWxlbWVudDsKIGNsYXNzIEhUTUxNYXBFbGVtZW50OwogY2xhc3MgSFRN
TE1lZGlhRWxlbWVudDsKLWNsYXNzIEhUTUxOYW1lQ29sbGVjdGlvbjsKIGNsYXNzIEhUTUxTY3Jp
cHRFbGVtZW50OwogY2xhc3MgSGl0VGVzdFJlcXVlc3Q7CiBjbGFzcyBIaXRUZXN0UmVzdWx0OwpA
QCAtMTM0NSw3ICsxMzQ0LDggQEAgcHJpdmF0ZToKIAogICAgIE5vZGUqIG5vZGVGcm9tUG9pbnQo
Y29uc3QgTGF5b3V0UG9pbnQmIGNsaWVudFBvaW50LCBMYXlvdXRQb2ludCogbG9jYWxQb2ludCA9
IG51bGxwdHIpOwogCi0gICAgUmVmPEhUTUxDb2xsZWN0aW9uPiBlbnN1cmVDYWNoZWRDb2xsZWN0
aW9uKENvbGxlY3Rpb25UeXBlKTsKKyAgICB0ZW1wbGF0ZSA8Q29sbGVjdGlvblR5cGUgY29sbGVj
dGlvblR5cGU+CisgICAgUmVmPEhUTUxDb2xsZWN0aW9uPiBlbnN1cmVDYWNoZWRDb2xsZWN0aW9u
KCk7CiAKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCiAgICAgdm9pZCBkaXNwYXRjaEZ1bGxT
Y3JlZW5DaGFuZ2VPckVycm9yRXZlbnQoRGVxdWU8UmVmUHRyPE5vZGU+PiYsIGNvbnN0IEF0b21p
Y1N0cmluZyYgZXZlbnROYW1lLCBib29sIHNob3VsZE5vdGlmeU1lZGlhRWxlbWVudCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudENoaWxkSXRlcmF0b3IuaCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50Q2hpbGRJdGVyYXRvci5oCmluZGV4IDk0Y2QzMTMyMjQzNGJk
YTA1YzlmNTZlMTdiMGUwNjRjMjI1ZTUxY2YuLjFhOTQ2YmI4ZmIxOTNjNjA0NTIwOWZmYmQ1MmNk
MzVhODljZmVjOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50Q2hpbGRJ
dGVyYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50Q2hpbGRJdGVyYXRvci5o
CkBAIC00MSw2ICs0MSw3IEBAIHB1YmxpYzoKIAogICAgIEVsZW1lbnRDaGlsZEl0ZXJhdG9yKGNv
bnN0IENvbnRhaW5lck5vZGUmIHBhcmVudCk7CiAgICAgRWxlbWVudENoaWxkSXRlcmF0b3IoY29u
c3QgQ29udGFpbmVyTm9kZSYgcGFyZW50LCBFbGVtZW50VHlwZSogY3VycmVudCk7CisgICAgRWxl
bWVudENoaWxkSXRlcmF0b3ImIG9wZXJhdG9yLS0oKTsKICAgICBFbGVtZW50Q2hpbGRJdGVyYXRv
ciYgb3BlcmF0b3IrKygpOwogfTsKIApAQCAtNTUsNiArNTYsNyBAQCBwdWJsaWM6CiAKICAgICBF
bGVtZW50Q2hpbGRDb25zdEl0ZXJhdG9yKGNvbnN0IENvbnRhaW5lck5vZGUmIHBhcmVudCk7CiAg
ICAgRWxlbWVudENoaWxkQ29uc3RJdGVyYXRvcihjb25zdCBDb250YWluZXJOb2RlJiBwYXJlbnQs
IGNvbnN0IEVsZW1lbnRUeXBlKiBjdXJyZW50KTsKKyAgICBFbGVtZW50Q2hpbGRDb25zdEl0ZXJh
dG9yJiBvcGVyYXRvci0tKCk7CiAgICAgRWxlbWVudENoaWxkQ29uc3RJdGVyYXRvciYgb3BlcmF0
b3IrKygpOwogfTsKIApAQCAtMTA4LDYgKzExMCwxMiBAQCBpbmxpbmUgRWxlbWVudENoaWxkSXRl
cmF0b3I8RWxlbWVudFR5cGU+OjpFbGVtZW50Q2hpbGRJdGVyYXRvcihjb25zdCBDb250YWluZXJO
bwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+CitpbmxpbmUgRWxlbWVudENo
aWxkSXRlcmF0b3I8RWxlbWVudFR5cGU+JiBFbGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50VHlw
ZT46Om9wZXJhdG9yLS0oKQoreworICAgIHJldHVybiBzdGF0aWNfY2FzdDxFbGVtZW50Q2hpbGRJ
dGVyYXRvcjxFbGVtZW50VHlwZT4mPihFbGVtZW50SXRlcmF0b3I8RWxlbWVudFR5cGU+Ojp0cmF2
ZXJzZVByZXZpb3VzU2libGluZygpKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRU
eXBlPgogaW5saW5lIEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiYgRWxlbWVudENo
aWxkSXRlcmF0b3I8RWxlbWVudFR5cGU+OjpvcGVyYXRvcisrKCkKIHsKICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8RWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVudFR5cGU+Jj4oRWxlbWVudEl0ZXJh
dG9yPEVsZW1lbnRUeXBlPjo6dHJhdmVyc2VOZXh0U2libGluZygpKTsKQEAgLTEyOCw2ICsxMzYs
MTMgQEAgaW5saW5lIEVsZW1lbnRDaGlsZENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+OjpFbGVt
ZW50Q2hpbGRDb25zdEl0ZXJhdG9yKGNvbnN0IEMKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIEVs
ZW1lbnRUeXBlPgoraW5saW5lIEVsZW1lbnRDaGlsZENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+
JiBFbGVtZW50Q2hpbGRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6b3BlcmF0b3ItLSgpCit7
CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEVsZW1lbnRDaGlsZENvbnN0SXRlcmF0b3I8RWxlbWVu
dFR5cGU+Jj4oRWxlbWVudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+Ojp0cmF2ZXJzZVByZXZp
b3VzU2libGluZygpKTsKK30KKworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+CiBp
bmxpbmUgRWxlbWVudENoaWxkQ29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT4mIEVsZW1lbnRDaGls
ZENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+OjpvcGVyYXRvcisrKCkKIHsKICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8RWxlbWVudENoaWxkQ29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT4mPihFbGVt
ZW50Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT46OnRyYXZlcnNlTmV4dFNpYmxpbmcoKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTGl2ZU5vZGVMaXN0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vTGl2ZU5vZGVMaXN0LmgKaW5kZXggMTk2ZTUwYmI4MmJlYmNjZjcyNjRiNDYzYTJl
ZWU2M2VhNmQxMGFiYi4uMzg5M2YxMDZjMGY0NjFmYmRiOTFmOTAyMGE4ZWMzMmNiMTExOTkxOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0xpdmVOb2RlTGlzdC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9MaXZlTm9kZUxpc3QuaApAQCAtMjUsNiArMjUsNyBAQAogI2RlZmluZSBM
aXZlTm9kZUxpc3RfaAogCiAjaW5jbHVkZSAiQ29sbGVjdGlvbkluZGV4Q2FjaGUuaCIKKyNpbmNs
dWRlICJDb2xsZWN0aW9uVHJhdmVyc2FsLmgiCiAjaW5jbHVkZSAiQ29sbGVjdGlvblR5cGUuaCIK
ICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkVsZW1lbnREZXNjZW5kYW50SXRlcmF0
b3IuaCIKQEAgLTE1NSw1NyArMTU2LDI1IEBAIGlubGluZSBDb250YWluZXJOb2RlJiBDYWNoZWRM
aXZlTm9kZUxpc3Q8Tm9kZUxpc3RUeXBlPjo6cm9vdE5vZGUoKSBjb25zdAogdGVtcGxhdGUgPGNs
YXNzIE5vZGVMaXN0VHlwZT4KIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IgQ2FjaGVkTGl2ZU5v
ZGVMaXN0PE5vZGVMaXN0VHlwZT46OmNvbGxlY3Rpb25CZWdpbigpIGNvbnN0CiB7Ci0gICAgYXV0
byYgbm9kZUxpc3QgPSBzdGF0aWNfY2FzdDxjb25zdCBOb2RlTGlzdFR5cGUmPigqdGhpcyk7Ci0g
ICAgYXV0byBkZXNjZW5kYW50cyA9IGVsZW1lbnREZXNjZW5kYW50cyhyb290Tm9kZSgpKTsKLSAg
ICBhdXRvIGVuZCA9IGRlc2NlbmRhbnRzLmVuZCgpOwotICAgIGZvciAoYXV0byBpdCA9IGRlc2Nl
bmRhbnRzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBpZiAobm9kZUxpc3Qu
ZWxlbWVudE1hdGNoZXMoKml0KSkKLSAgICAgICAgICAgIHJldHVybiBpdDsKLSAgICB9Ci0gICAg
cmV0dXJuIGVuZDsKKyAgICByZXR1cm4gQ29sbGVjdGlvblRyYXZlcnNhbDxDb2xsZWN0aW9uVHJh
dmVyc2FsVHlwZTo6RGVzY2VuZGFudHM+OjpiZWdpbihzdGF0aWNfY2FzdDxjb25zdCBOb2RlTGlz
dFR5cGUmPigqdGhpcyksIHJvb3ROb2RlKCkpOwogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgTm9kZUxp
c3RUeXBlPgogRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciBDYWNoZWRMaXZlTm9kZUxpc3Q8Tm9k
ZUxpc3RUeXBlPjo6Y29sbGVjdGlvbkxhc3QoKSBjb25zdAogewotICAgIGF1dG8mIG5vZGVMaXN0
ID0gc3RhdGljX2Nhc3Q8Y29uc3QgTm9kZUxpc3RUeXBlJj4oKnRoaXMpOwotICAgIGF1dG8gZGVz
Y2VuZGFudHMgPSBlbGVtZW50RGVzY2VuZGFudHMocm9vdE5vZGUoKSk7Ci0gICAgYXV0byBlbmQg
PSBkZXNjZW5kYW50cy5lbmQoKTsKLSAgICBmb3IgKGF1dG8gaXQgPSBkZXNjZW5kYW50cy5sYXN0
KCk7IGl0ICE9IGVuZDsgLS1pdCkgewotICAgICAgICBpZiAobm9kZUxpc3QuZWxlbWVudE1hdGNo
ZXMoKml0KSkKLSAgICAgICAgICAgIHJldHVybiBpdDsKLSAgICB9Ci0gICAgcmV0dXJuIGVuZDsK
KyAgICByZXR1cm4gQ29sbGVjdGlvblRyYXZlcnNhbDxDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6
RGVzY2VuZGFudHM+OjpsYXN0KHN0YXRpY19jYXN0PGNvbnN0IE5vZGVMaXN0VHlwZSY+KCp0aGlz
KSwgcm9vdE5vZGUoKSk7CiB9CiAKIHRlbXBsYXRlIDxjbGFzcyBOb2RlTGlzdFR5cGU+CiB2b2lk
IENhY2hlZExpdmVOb2RlTGlzdDxOb2RlTGlzdFR5cGU+Ojpjb2xsZWN0aW9uVHJhdmVyc2VGb3J3
YXJkKEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3ImIGN1cnJlbnQsIHVuc2lnbmVkIGNvdW50LCB1
bnNpZ25lZCYgdHJhdmVyc2VkQ291bnQpIGNvbnN0CiB7Ci0gICAgYXV0byYgbm9kZUxpc3QgPSBz
dGF0aWNfY2FzdDxjb25zdCBOb2RlTGlzdFR5cGUmPigqdGhpcyk7Ci0gICAgQVNTRVJUKG5vZGVM
aXN0LmVsZW1lbnRNYXRjaGVzKCpjdXJyZW50KSk7Ci0gICAgYXV0byBlbmQgPSBjb2xsZWN0aW9u
RW5kKCk7Ci0gICAgZm9yICh0cmF2ZXJzZWRDb3VudCA9IDA7IHRyYXZlcnNlZENvdW50IDwgY291
bnQ7ICsrdHJhdmVyc2VkQ291bnQpIHsKLSAgICAgICAgZG8gewotICAgICAgICAgICAgKytjdXJy
ZW50OwotICAgICAgICAgICAgaWYgKGN1cnJlbnQgPT0gZW5kKQotICAgICAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgfSB3aGlsZSAoIW5vZGVMaXN0LmVsZW1lbnRNYXRjaGVzKCpjdXJyZW50
KSk7Ci0gICAgfQorICAgIENvbGxlY3Rpb25UcmF2ZXJzYWw8Q29sbGVjdGlvblRyYXZlcnNhbFR5
cGU6OkRlc2NlbmRhbnRzPjo6dHJhdmVyc2VGb3J3YXJkKHN0YXRpY19jYXN0PGNvbnN0IE5vZGVM
aXN0VHlwZSY+KCp0aGlzKSwgY3VycmVudCwgY291bnQsIHRyYXZlcnNlZENvdW50KTsKIH0KIAog
dGVtcGxhdGUgPGNsYXNzIE5vZGVMaXN0VHlwZT4KIHZvaWQgQ2FjaGVkTGl2ZU5vZGVMaXN0PE5v
ZGVMaXN0VHlwZT46OmNvbGxlY3Rpb25UcmF2ZXJzZUJhY2t3YXJkKEVsZW1lbnREZXNjZW5kYW50
SXRlcmF0b3ImIGN1cnJlbnQsIHVuc2lnbmVkIGNvdW50KSBjb25zdAogewotICAgIGF1dG8mIG5v
ZGVMaXN0ID0gc3RhdGljX2Nhc3Q8Y29uc3QgTm9kZUxpc3RUeXBlJj4oKnRoaXMpOwotICAgIEFT
U0VSVChub2RlTGlzdC5lbGVtZW50TWF0Y2hlcygqY3VycmVudCkpOwotICAgIGF1dG8gZW5kID0g
Y29sbGVjdGlvbkVuZCgpOwotICAgIGZvciAoOyBjb3VudDsgLS1jb3VudCkgewotICAgICAgICBk
byB7Ci0gICAgICAgICAgICAtLWN1cnJlbnQ7Ci0gICAgICAgICAgICBpZiAoY3VycmVudCA9PSBl
bmQpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9IHdoaWxlICghbm9kZUxpc3Qu
ZWxlbWVudE1hdGNoZXMoKmN1cnJlbnQpKTsKLSAgICB9CisgICAgQ29sbGVjdGlvblRyYXZlcnNh
bDxDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6RGVzY2VuZGFudHM+Ojp0cmF2ZXJzZUJhY2t3YXJk
KHN0YXRpY19jYXN0PGNvbnN0IE5vZGVMaXN0VHlwZSY+KCp0aGlzKSwgY3VycmVudCwgY291bnQp
OwogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgTm9kZUxpc3RUeXBlPgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9DYWNoZWRIVE1MQ29sbGVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9DYWNoZWRIVE1MQ29sbGVjdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFhZTU0ZGJkZDU2NjJmMWEwZmRi
OTExOWJjODE0YTc0YmVlODc0MGYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0NhY2hlZEhUTUxDb2xsZWN0aW9uLmgKQEAgLTAsMCArMSwyMTYgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIENhY2hlZEhUTUxDb2xsZWN0aW9uX2gKKyNkZWZpbmUgQ2FjaGVkSFRNTENvbGxl
Y3Rpb25faAorCisjaW5jbHVkZSAiQ29sbGVjdGlvblRyYXZlcnNhbC5oIgorI2luY2x1ZGUgIkhU
TUxDb2xsZWN0aW9uLmgiCisjaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgSFRNTENvbGxlY3Rpb25DbGFzcywgQ29sbGVj
dGlvblRyYXZlcnNhbFR5cGUgdHJhdmVyc2FsVHlwZT4KK2NsYXNzIENhY2hlZEhUTUxDb2xsZWN0
aW9uIDogcHVibGljIEhUTUxDb2xsZWN0aW9uIHsKK3B1YmxpYzoKKyAgICB1c2luZyBJdGVyYXRv
clR5cGUgPSB0eXBlbmFtZSBDb2xsZWN0aW9uVHJhdmVyc2FsPHRyYXZlcnNhbFR5cGU+OjpJdGVy
YXRvclR5cGU7CisKKyAgICBDYWNoZWRIVE1MQ29sbGVjdGlvbihDb250YWluZXJOb2RlJiBiYXNl
LCBDb2xsZWN0aW9uVHlwZSk7CisKKyAgICB2aXJ0dWFsIH5DYWNoZWRIVE1MQ29sbGVjdGlvbigp
OworCisgICAgdmlydHVhbCB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCBvdmVycmlkZSBmaW5hbDsK
KyAgICB2aXJ0dWFsIEVsZW1lbnQqIGl0ZW0odW5zaWduZWQgb2Zmc2V0KSBjb25zdCBvdmVycmlk
ZSBmaW5hbDsKKyAgICB2aXJ0dWFsIEVsZW1lbnQqIG5hbWVkSXRlbShjb25zdCBBdG9taWNTdHJp
bmcmIG5hbWUpIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgc2l6ZV90IG1lbW9yeUNvc3Qo
KSBjb25zdCBvdmVycmlkZSBmaW5hbDsKKworICAgIC8vIEZvciBDb2xsZWN0aW9uSW5kZXhDYWNo
ZTsgZG8gbm90IHVzZSBlbHNld2hlcmUuCisgICAgSXRlcmF0b3JUeXBlIGNvbGxlY3Rpb25CZWdp
bigpIGNvbnN0OworICAgIEl0ZXJhdG9yVHlwZSBjb2xsZWN0aW9uTGFzdCgpIGNvbnN0OworICAg
IEl0ZXJhdG9yVHlwZSBjb2xsZWN0aW9uRW5kKCkgY29uc3Q7CisgICAgdm9pZCBjb2xsZWN0aW9u
VHJhdmVyc2VGb3J3YXJkKEl0ZXJhdG9yVHlwZSYsIHVuc2lnbmVkIGNvdW50LCB1bnNpZ25lZCYg
dHJhdmVyc2VkQ291bnQpIGNvbnN0OworICAgIHZvaWQgY29sbGVjdGlvblRyYXZlcnNlQmFja3dh
cmQoSXRlcmF0b3JUeXBlJiwgdW5zaWduZWQgY291bnQpIGNvbnN0OworICAgIGJvb2wgY29sbGVj
dGlvbkNhblRyYXZlcnNlQmFja3dhcmQoKSBjb25zdDsKKyAgICB2b2lkIHdpbGxWYWxpZGF0ZUlu
ZGV4Q2FjaGUoKSBjb25zdDsKKworICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlQ2FjaGUoRG9j
dW1lbnQmKSBvdmVycmlkZTsKKworICAgIGJvb2wgZWxlbWVudE1hdGNoZXMoRWxlbWVudCYpIGNv
bnN0OworCitwcml2YXRlOgorICAgIG11dGFibGUgQ29sbGVjdGlvbkluZGV4Q2FjaGU8SFRNTENv
bGxlY3Rpb25DbGFzcywgSXRlcmF0b3JUeXBlPiBtX2luZGV4Q2FjaGU7Cit9OworCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgSFRNTENvbGxlY3Rpb25DbGFzcywgQ29sbGVjdGlvblRyYXZlcnNhbFR5cGUg
dHJhdmVyc2FsVHlwZT4KK0NhY2hlZEhUTUxDb2xsZWN0aW9uPEhUTUxDb2xsZWN0aW9uQ2xhc3Ms
IHRyYXZlcnNhbFR5cGU+OjpDYWNoZWRIVE1MQ29sbGVjdGlvbihDb250YWluZXJOb2RlJiBiYXNl
LCBDb2xsZWN0aW9uVHlwZSBjb2xsZWN0aW9uVHlwZSkKKyAgICA6IEhUTUxDb2xsZWN0aW9uKGJh
c2UsIGNvbGxlY3Rpb25UeXBlKQorICAgICwgbV9pbmRleENhY2hlKHN0YXRpY19jYXN0PEhUTUxD
b2xsZWN0aW9uQ2xhc3MmPigqdGhpcykpCit7IH0KKwordGVtcGxhdGUgPHR5cGVuYW1lIEhUTUxD
b2xsZWN0aW9uQ2xhc3MsIENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlIHRyYXZlcnNhbFR5cGU+CitD
YWNoZWRIVE1MQ29sbGVjdGlvbjxIVE1MQ29sbGVjdGlvbkNsYXNzLCB0cmF2ZXJzYWxUeXBlPjo6
fkNhY2hlZEhUTUxDb2xsZWN0aW9uKCkKK3sKKyAgICBpZiAobV9pbmRleENhY2hlLmhhc1ZhbGlk
Q2FjaGUoc3RhdGljX2Nhc3Q8SFRNTENvbGxlY3Rpb25DbGFzcyY+KCp0aGlzKSkpCisgICAgICAg
IGRvY3VtZW50KCkudW5yZWdpc3RlckNvbGxlY3Rpb24oKnRoaXMpOworfQorCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgSFRNTENvbGxlY3Rpb25DbGFzcywgQ29sbGVjdGlvblRyYXZlcnNhbFR5cGUgdHJh
dmVyc2FsVHlwZT4KK3NpemVfdCBDYWNoZWRIVE1MQ29sbGVjdGlvbjxIVE1MQ29sbGVjdGlvbkNs
YXNzLCB0cmF2ZXJzYWxUeXBlPjo6Q2FjaGVkSFRNTENvbGxlY3Rpb246Om1lbW9yeUNvc3QoKSBj
b25zdAoreworICAgIHJldHVybiBtX2luZGV4Q2FjaGUubWVtb3J5Q29zdCgpICsgSFRNTENvbGxl
Y3Rpb246Om1lbW9yeUNvc3QoKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIEhUTUxDb2xsZWN0
aW9uQ2xhc3MsIENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlIHRyYXZlcnNhbFR5cGU+CithdXRvIENh
Y2hlZEhUTUxDb2xsZWN0aW9uPEhUTUxDb2xsZWN0aW9uQ2xhc3MsIHRyYXZlcnNhbFR5cGU+Ojpj
b2xsZWN0aW9uQmVnaW4oKSBjb25zdCAtPiBJdGVyYXRvclR5cGUKK3sKKyAgICByZXR1cm4gQ29s
bGVjdGlvblRyYXZlcnNhbDx0cmF2ZXJzYWxUeXBlPjo6YmVnaW4oc3RhdGljX2Nhc3Q8Y29uc3Qg
SFRNTENvbGxlY3Rpb25DbGFzcyY+KCp0aGlzKSwgcm9vdE5vZGUoKSk7Cit9CisKK3RlbXBsYXRl
IDx0eXBlbmFtZSBIVE1MQ29sbGVjdGlvbkNsYXNzLCBDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZSB0
cmF2ZXJzYWxUeXBlPgorYXV0byBDYWNoZWRIVE1MQ29sbGVjdGlvbjxIVE1MQ29sbGVjdGlvbkNs
YXNzLCB0cmF2ZXJzYWxUeXBlPjo6Y29sbGVjdGlvbkxhc3QoKSBjb25zdCAtPiBJdGVyYXRvclR5
cGUKK3sKKyAgICByZXR1cm4gQ29sbGVjdGlvblRyYXZlcnNhbDx0cmF2ZXJzYWxUeXBlPjo6bGFz
dChzdGF0aWNfY2FzdDxjb25zdCBIVE1MQ29sbGVjdGlvbkNsYXNzJj4oKnRoaXMpLCByb290Tm9k
ZSgpKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIEhUTUxDb2xsZWN0aW9uQ2xhc3MsIENvbGxl
Y3Rpb25UcmF2ZXJzYWxUeXBlIHRyYXZlcnNhbFR5cGU+CithdXRvIENhY2hlZEhUTUxDb2xsZWN0
aW9uPEhUTUxDb2xsZWN0aW9uQ2xhc3MsIHRyYXZlcnNhbFR5cGU+Ojpjb2xsZWN0aW9uRW5kKCkg
Y29uc3QgLT4gSXRlcmF0b3JUeXBlCit7CisgICAgcmV0dXJuIENvbGxlY3Rpb25UcmF2ZXJzYWw8
dHJhdmVyc2FsVHlwZT46OmVuZChyb290Tm9kZSgpKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1l
IEhUTUxDb2xsZWN0aW9uQ2xhc3MsIENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlIHRyYXZlcnNhbFR5
cGU+Citib29sIENhY2hlZEhUTUxDb2xsZWN0aW9uPEhUTUxDb2xsZWN0aW9uQ2xhc3MsIHRyYXZl
cnNhbFR5cGU+Ojpjb2xsZWN0aW9uQ2FuVHJhdmVyc2VCYWNrd2FyZCgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIHRyYXZlcnNhbFR5cGUgIT0gQ29sbGVjdGlvblRyYXZlcnNhbFR5cGU6OkN1c3RvbUZv
cndhcmRPbmx5OworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgSFRNTENvbGxlY3Rpb25DbGFzcywg
Q29sbGVjdGlvblRyYXZlcnNhbFR5cGUgdHJhdmVyc2FsVHlwZT4KK3ZvaWQgQ2FjaGVkSFRNTENv
bGxlY3Rpb248SFRNTENvbGxlY3Rpb25DbGFzcywgdHJhdmVyc2FsVHlwZT46OmNvbGxlY3Rpb25U
cmF2ZXJzZUZvcndhcmQoSXRlcmF0b3JUeXBlJiBjdXJyZW50LCB1bnNpZ25lZCBjb3VudCwgdW5z
aWduZWQmIHRyYXZlcnNlZENvdW50KSBjb25zdAoreworICAgIENvbGxlY3Rpb25UcmF2ZXJzYWw8
dHJhdmVyc2FsVHlwZT46OnRyYXZlcnNlRm9yd2FyZChzdGF0aWNfY2FzdDxjb25zdCBIVE1MQ29s
bGVjdGlvbkNsYXNzJj4oKnRoaXMpLCBjdXJyZW50LCBjb3VudCwgdHJhdmVyc2VkQ291bnQpOwor
fQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgSFRNTENvbGxlY3Rpb25DbGFzcywgQ29sbGVjdGlvblRy
YXZlcnNhbFR5cGUgdHJhdmVyc2FsVHlwZT4KK3ZvaWQgQ2FjaGVkSFRNTENvbGxlY3Rpb248SFRN
TENvbGxlY3Rpb25DbGFzcywgdHJhdmVyc2FsVHlwZT46OmNvbGxlY3Rpb25UcmF2ZXJzZUJhY2t3
YXJkKEl0ZXJhdG9yVHlwZSYgY3VycmVudCwgdW5zaWduZWQgY291bnQpIGNvbnN0Cit7CisgICAg
Q29sbGVjdGlvblRyYXZlcnNhbDx0cmF2ZXJzYWxUeXBlPjo6dHJhdmVyc2VCYWNrd2FyZChzdGF0
aWNfY2FzdDxjb25zdCBIVE1MQ29sbGVjdGlvbkNsYXNzJj4oKnRoaXMpLCBjdXJyZW50LCBjb3Vu
dCk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBIVE1MQ29sbGVjdGlvbkNsYXNzLCBDb2xsZWN0
aW9uVHJhdmVyc2FsVHlwZSB0cmF2ZXJzYWxUeXBlPgordm9pZCBDYWNoZWRIVE1MQ29sbGVjdGlv
bjxIVE1MQ29sbGVjdGlvbkNsYXNzLCB0cmF2ZXJzYWxUeXBlPjo6d2lsbFZhbGlkYXRlSW5kZXhD
YWNoZSgpIGNvbnN0Cit7CisgICAgZG9jdW1lbnQoKS5yZWdpc3RlckNvbGxlY3Rpb24oY29uc3Rf
Y2FzdDxDYWNoZWRIVE1MQ29sbGVjdGlvbjxIVE1MQ29sbGVjdGlvbkNsYXNzLCB0cmF2ZXJzYWxU
eXBlPiY+KCp0aGlzKSk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBIVE1MQ29sbGVjdGlvbkNs
YXNzLCBDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZSB0cmF2ZXJzYWxUeXBlPgordW5zaWduZWQgQ2Fj
aGVkSFRNTENvbGxlY3Rpb248SFRNTENvbGxlY3Rpb25DbGFzcywgdHJhdmVyc2FsVHlwZT46Omxl
bmd0aCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faW5kZXhDYWNoZS5ub2RlQ291bnQoc3RhdGlj
X2Nhc3Q8Y29uc3QgSFRNTENvbGxlY3Rpb25DbGFzcyY+KCp0aGlzKSk7Cit9CisKK3RlbXBsYXRl
IDx0eXBlbmFtZSBIVE1MQ29sbGVjdGlvbkNsYXNzLCBDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZSB0
cmF2ZXJzYWxUeXBlPgorRWxlbWVudCogQ2FjaGVkSFRNTENvbGxlY3Rpb248SFRNTENvbGxlY3Rp
b25DbGFzcywgdHJhdmVyc2FsVHlwZT46Oml0ZW0odW5zaWduZWQgb2Zmc2V0KSBjb25zdAorewor
ICAgIHJldHVybiBtX2luZGV4Q2FjaGUubm9kZUF0KHN0YXRpY19jYXN0PGNvbnN0IEhUTUxDb2xs
ZWN0aW9uQ2xhc3MmPigqdGhpcyksIG9mZnNldCk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBI
VE1MQ29sbGVjdGlvbkNsYXNzLCBDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZSB0cmF2ZXJzYWxUeXBl
Pgordm9pZCBDYWNoZWRIVE1MQ29sbGVjdGlvbjxIVE1MQ29sbGVjdGlvbkNsYXNzLCB0cmF2ZXJz
YWxUeXBlPjo6aW52YWxpZGF0ZUNhY2hlKERvY3VtZW50JiBkb2N1bWVudCkKK3sKKyAgICBIVE1M
Q29sbGVjdGlvbjo6aW52YWxpZGF0ZUNhY2hlKGRvY3VtZW50KTsKKyAgICBpZiAobV9pbmRleENh
Y2hlLmhhc1ZhbGlkQ2FjaGUoc3RhdGljX2Nhc3Q8SFRNTENvbGxlY3Rpb25DbGFzcyY+KCp0aGlz
KSkpIHsKKyAgICAgICAgZG9jdW1lbnQudW5yZWdpc3RlckNvbGxlY3Rpb24oY29uc3RfY2FzdDxD
YWNoZWRIVE1MQ29sbGVjdGlvbjxIVE1MQ29sbGVjdGlvbkNsYXNzLCB0cmF2ZXJzYWxUeXBlPiY+
KCp0aGlzKSk7CisgICAgICAgIG1faW5kZXhDYWNoZS5pbnZhbGlkYXRlKHN0YXRpY19jYXN0PEhU
TUxDb2xsZWN0aW9uQ2xhc3MmPigqdGhpcykpOworICAgIH0KK30KKwordGVtcGxhdGUgPHR5cGVu
YW1lIEhUTUxDb2xsZWN0aW9uQ2xhc3MsIENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlIHRyYXZlcnNh
bFR5cGU+Citib29sIENhY2hlZEhUTUxDb2xsZWN0aW9uPEhUTUxDb2xsZWN0aW9uQ2xhc3MsIHRy
YXZlcnNhbFR5cGU+OjplbGVtZW50TWF0Y2hlcyhFbGVtZW50JikgY29uc3QKK3sKKyAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3N0YXRpYyBpbmxpbmUg
Ym9vbCBuYW1lU2hvdWxkQmVWaXNpYmxlSW5Eb2N1bWVudEFsbChIVE1MRWxlbWVudCYgZWxlbWVu
dCkKK3sKKyAgICAvLyBUaGUgZG9jdW1lbnQuYWxsIGNvbGxlY3Rpb24gcmV0dXJucyBvbmx5IGNl
cnRhaW4gdHlwZXMgb2YgZWxlbWVudHMgYnkgbmFtZSwKKyAgICAvLyBhbHRob3VnaCBpdCByZXR1
cm5zIGFueSB0eXBlIG9mIGVsZW1lbnQgYnkgaWQuCisgICAgcmV0dXJuIGVsZW1lbnQuaGFzVGFn
TmFtZShIVE1MTmFtZXM6OmFwcGxldFRhZykKKyAgICAgICAgfHwgZWxlbWVudC5oYXNUYWdOYW1l
KEhUTUxOYW1lczo6ZW1iZWRUYWcpCisgICAgICAgIHx8IGVsZW1lbnQuaGFzVGFnTmFtZShIVE1M
TmFtZXM6OmZvcm1UYWcpCisgICAgICAgIHx8IGVsZW1lbnQuaGFzVGFnTmFtZShIVE1MTmFtZXM6
OmltZ1RhZykKKyAgICAgICAgfHwgZWxlbWVudC5oYXNUYWdOYW1lKEhUTUxOYW1lczo6aW5wdXRU
YWcpCisgICAgICAgIHx8IGVsZW1lbnQuaGFzVGFnTmFtZShIVE1MTmFtZXM6Om9iamVjdFRhZykK
KyAgICAgICAgfHwgZWxlbWVudC5oYXNUYWdOYW1lKEhUTUxOYW1lczo6c2VsZWN0VGFnKTsKK30K
Kworc3RhdGljIGlubGluZSBib29sIG5hbWVTaG91bGRCZVZpc2libGVJbkRvY3VtZW50QWxsKEVs
ZW1lbnQmIGVsZW1lbnQpCit7CisgICAgcmV0dXJuIGlzPEhUTUxFbGVtZW50PihlbGVtZW50KSAm
JiBuYW1lU2hvdWxkQmVWaXNpYmxlSW5Eb2N1bWVudEFsbChkb3duY2FzdDxIVE1MRWxlbWVudD4o
ZWxlbWVudCkpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgSFRNTENvbGxlY3Rpb25DbGFzcywg
Q29sbGVjdGlvblRyYXZlcnNhbFR5cGUgdHJhdmVyc2FsVHlwZT4KK0VsZW1lbnQqIENhY2hlZEhU
TUxDb2xsZWN0aW9uPEhUTUxDb2xsZWN0aW9uQ2xhc3MsIHRyYXZlcnNhbFR5cGU+OjpuYW1lZEl0
ZW0oY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKSBjb25zdAoreworICAgIC8vIGh0dHA6Ly9tc2Ru
Lm1pY3Jvc29mdC5jb20vd29ya3Nob3AvYXV0aG9yL2RodG1sL3JlZmVyZW5jZS9tZXRob2RzL25h
bWVkaXRlbS5hc3AKKyAgICAvLyBUaGlzIG1ldGhvZCBmaXJzdCBzZWFyY2hlcyBmb3IgYW4gb2Jq
ZWN0IHdpdGggYSBtYXRjaGluZyBpZAorICAgIC8vIGF0dHJpYnV0ZS4gSWYgYSBtYXRjaCBpcyBu
b3QgZm91bmQsIHRoZSBtZXRob2QgdGhlbiBzZWFyY2hlcyBmb3IgYW4KKyAgICAvLyBvYmplY3Qg
d2l0aCBhIG1hdGNoaW5nIG5hbWUgYXR0cmlidXRlLCBidXQgb25seSBvbiB0aG9zZSBlbGVtZW50
cworICAgIC8vIHRoYXQgYXJlIGFsbG93ZWQgYSBuYW1lIGF0dHJpYnV0ZS4KKworICAgIGlmIChu
YW1lLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBDb250YWluZXJO
b2RlJiByb290ID0gcm9vdE5vZGUoKTsKKyAgICBpZiAodHJhdmVyc2FsVHlwZSAhPSBDb2xsZWN0
aW9uVHJhdmVyc2FsVHlwZTo6Q3VzdG9tRm9yd2FyZE9ubHkgJiYgcm9vdC5pc0luVHJlZVNjb3Bl
KCkpIHsKKyAgICAgICAgRWxlbWVudCogY2FuZGlkYXRlID0gbnVsbHB0cjsKKworICAgICAgICBU
cmVlU2NvcGUmIHRyZWVTY29wZSA9IHJvb3QudHJlZVNjb3BlKCk7CisgICAgICAgIGlmICh0cmVl
U2NvcGUuaGFzRWxlbWVudFdpdGhJZCgqbmFtZS5pbXBsKCkpKSB7CisgICAgICAgICAgICBpZiAo
IXRyZWVTY29wZS5jb250YWluc011bHRpcGxlRWxlbWVudHNXaXRoSWQobmFtZSkpCisgICAgICAg
ICAgICAgICAgY2FuZGlkYXRlID0gdHJlZVNjb3BlLmdldEVsZW1lbnRCeUlkKG5hbWUpOworICAg
ICAgICB9IGVsc2UgaWYgKHRyZWVTY29wZS5oYXNFbGVtZW50V2l0aE5hbWUoKm5hbWUuaW1wbCgp
KSkgeworICAgICAgICAgICAgaWYgKCF0cmVlU2NvcGUuY29udGFpbnNNdWx0aXBsZUVsZW1lbnRz
V2l0aE5hbWUobmFtZSkpIHsKKyAgICAgICAgICAgICAgICBjYW5kaWRhdGUgPSB0cmVlU2NvcGUu
Z2V0RWxlbWVudEJ5TmFtZShuYW1lKTsKKyAgICAgICAgICAgICAgICBpZiAoY2FuZGlkYXRlICYm
IHR5cGUoKSA9PSBEb2NBbGwgJiYgIW5hbWVTaG91bGRCZVZpc2libGVJbkRvY3VtZW50QWxsKCpj
YW5kaWRhdGUpKQorICAgICAgICAgICAgICAgICAgICBjYW5kaWRhdGUgPSBudWxscHRyOworICAg
ICAgICAgICAgfQorICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOwor
CisgICAgICAgIGNvbnN0IGF1dG8mIGNvbGxlY3Rpb24gPSBzdGF0aWNfY2FzdDxjb25zdCBIVE1M
Q29sbGVjdGlvbkNsYXNzJj4oKnRoaXMpOworICAgICAgICBpZiAoY2FuZGlkYXRlICYmIGNvbGxl
Y3Rpb24uZWxlbWVudE1hdGNoZXMoKmNhbmRpZGF0ZSkpIHsKKyAgICAgICAgICAgIGlmICh0cmF2
ZXJzYWxUeXBlID09IENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlOjpDaGlsZHJlbk9ubHkgPyBjYW5k
aWRhdGUtPnBhcmVudE5vZGUoKSA9PSAmcm9vdCA6IGNhbmRpZGF0ZS0+aXNEZXNjZW5kYW50T2Yo
JnJvb3QpKQorICAgICAgICAgICAgICAgIHJldHVybiBjYW5kaWRhdGU7CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICByZXR1cm4gSFRNTENvbGxlY3Rpb246Om5hbWVkSXRlbShuYW1lKTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gQ2FjaGVkSFRNTENvbGxlY3Rpb25f
aAorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0NvbGxlY3Rpb25UcmF2ZXJzYWwu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ29sbGVjdGlvblRyYXZlcnNhbC5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
Ljc5OTk2ZjEzOWM0MTJhM2Y3NzYyOWM5NWYxNmVmMGY1ZDU2NGZmY2IKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0NvbGxlY3Rpb25UcmF2ZXJzYWwuaApAQCAtMCwwICsx
LDIzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQ29sbGVjdGlvblRyYXZlcnNhbF9oCisjZGVm
aW5lIENvbGxlY3Rpb25UcmF2ZXJzYWxfaAorCisjaW5jbHVkZSAiQ29sbGVjdGlvblR5cGUuaCIK
KyNpbmNsdWRlICJFbGVtZW50Q2hpbGRJdGVyYXRvci5oIgorI2luY2x1ZGUgIkVsZW1lbnREZXNj
ZW5kYW50SXRlcmF0b3IuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit0ZW1wbGF0ZSA8Q29s
bGVjdGlvblRyYXZlcnNhbFR5cGUgdHJhdmVyc2FsVHlwZT4KK3N0cnVjdCBDb2xsZWN0aW9uVHJh
dmVyc2FsIHsgfTsKKwordGVtcGxhdGUgPD4KK3N0cnVjdCBDb2xsZWN0aW9uVHJhdmVyc2FsPENv
bGxlY3Rpb25UcmF2ZXJzYWxUeXBlOjpEZXNjZW5kYW50cz4geworICAgIHVzaW5nIEl0ZXJhdG9y
VHlwZSA9IEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I7CisKKyAgICBzdGF0aWMgRWxlbWVudERl
c2NlbmRhbnRJdGVyYXRvciBlbmQoQ29udGFpbmVyTm9kZSYpIHsgcmV0dXJuIEVsZW1lbnREZXNj
ZW5kYW50SXRlcmF0b3IoKTsgfQorCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIENvbGxlY3Rpb25D
bGFzcz4KKyAgICBzdGF0aWMgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciBiZWdpbihjb25zdCBD
b2xsZWN0aW9uQ2xhc3MmLCBDb250YWluZXJOb2RlJiByb290Tm9kZSk7CisKKyAgICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgQ29sbGVjdGlvbkNsYXNzPgorICAgIHN0YXRpYyBFbGVtZW50RGVzY2VuZGFu
dEl0ZXJhdG9yIGxhc3QoY29uc3QgQ29sbGVjdGlvbkNsYXNzJiwgQ29udGFpbmVyTm9kZSYgcm9v
dE5vZGUpOworCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIENvbGxlY3Rpb25DbGFzcz4KKyAgICBz
dGF0aWMgdm9pZCB0cmF2ZXJzZUZvcndhcmQoY29uc3QgQ29sbGVjdGlvbkNsYXNzJiwgRWxlbWVu
dERlc2NlbmRhbnRJdGVyYXRvciYgY3VycmVudCwgdW5zaWduZWQgY291bnQsIHVuc2lnbmVkJiB0
cmF2ZXJzZWRDb3VudCk7CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ29sbGVjdGlvbkNsYXNz
PgorICAgIHN0YXRpYyB2b2lkIHRyYXZlcnNlQmFja3dhcmQoY29uc3QgQ29sbGVjdGlvbkNsYXNz
JiwgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciYgY3VycmVudCwgdW5zaWduZWQgY291bnQpOwor
fTsKKwordGVtcGxhdGUgPD4KK3N0cnVjdCBDb2xsZWN0aW9uVHJhdmVyc2FsPENvbGxlY3Rpb25U
cmF2ZXJzYWxUeXBlOjpDaGlsZHJlbk9ubHk+IHsKKyAgICB1c2luZyBJdGVyYXRvclR5cGUgPSBF
bGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50PjsKKworICAgIHN0YXRpYyBFbGVtZW50Q2hpbGRJ
dGVyYXRvcjxFbGVtZW50PiBlbmQoQ29udGFpbmVyTm9kZSYgcm9vdE5vZGUpIHsgcmV0dXJuIEVs
ZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnQ+KHJvb3ROb2RlKTsgfQorCisgICAgdGVtcGxhdGUg
PHR5cGVuYW1lIENvbGxlY3Rpb25DbGFzcz4KKyAgICBzdGF0aWMgRWxlbWVudENoaWxkSXRlcmF0
b3I8RWxlbWVudD4gYmVnaW4oY29uc3QgQ29sbGVjdGlvbkNsYXNzJiwgQ29udGFpbmVyTm9kZSYg
cm9vdE5vZGUpOworCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIENvbGxlY3Rpb25DbGFzcz4KKyAg
ICBzdGF0aWMgRWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVudD4gbGFzdChjb25zdCBDb2xsZWN0
aW9uQ2xhc3MmLCBDb250YWluZXJOb2RlJiByb290Tm9kZSk7CisKKyAgICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgQ29sbGVjdGlvbkNsYXNzPgorICAgIHN0YXRpYyB2b2lkIHRyYXZlcnNlRm9yd2FyZChj
b25zdCBDb2xsZWN0aW9uQ2xhc3MmLCBFbGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50PiYgY3Vy
cmVudCwgdW5zaWduZWQgY291bnQsIHVuc2lnbmVkJiB0cmF2ZXJzZWRDb3VudCk7CisKKyAgICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgQ29sbGVjdGlvbkNsYXNzPgorICAgIHN0YXRpYyB2b2lkIHRyYXZl
cnNlQmFja3dhcmQoY29uc3QgQ29sbGVjdGlvbkNsYXNzJiwgRWxlbWVudENoaWxkSXRlcmF0b3I8
RWxlbWVudD4mIGN1cnJlbnQsIHVuc2lnbmVkIGNvdW50KTsKK307CisKK3RlbXBsYXRlIDw+Citz
dHJ1Y3QgQ29sbGVjdGlvblRyYXZlcnNhbDxDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6Q3VzdG9t
Rm9yd2FyZE9ubHk+IHsKKyAgICB1c2luZyBJdGVyYXRvclR5cGUgPSBFbGVtZW50KjsKKworICAg
IHN0YXRpYyBFbGVtZW50KiBlbmQoQ29udGFpbmVyTm9kZSYpIHsgcmV0dXJuIG51bGxwdHI7IH0K
KworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDb2xsZWN0aW9uQ2xhc3M+CisgICAgc3RhdGljIEVs
ZW1lbnQqIGJlZ2luKGNvbnN0IENvbGxlY3Rpb25DbGFzcyYsIENvbnRhaW5lck5vZGUmKTsKKwor
ICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDb2xsZWN0aW9uQ2xhc3M+CisgICAgc3RhdGljIEVsZW1l
bnQqIGxhc3QoY29uc3QgQ29sbGVjdGlvbkNsYXNzJiwgQ29udGFpbmVyTm9kZSYpOworCisgICAg
dGVtcGxhdGUgPHR5cGVuYW1lIENvbGxlY3Rpb25DbGFzcz4KKyAgICBzdGF0aWMgdm9pZCB0cmF2
ZXJzZUZvcndhcmQoY29uc3QgQ29sbGVjdGlvbkNsYXNzJiwgRWxlbWVudComIGN1cnJlbnQsIHVu
c2lnbmVkIGNvdW50LCB1bnNpZ25lZCYgdHJhdmVyc2VkQ291bnQpOworCisgICAgdGVtcGxhdGUg
PHR5cGVuYW1lIENvbGxlY3Rpb25DbGFzcz4KKyAgICBzdGF0aWMgdm9pZCB0cmF2ZXJzZUJhY2t3
YXJkKGNvbnN0IENvbGxlY3Rpb25DbGFzcyYsIEVsZW1lbnQqJiwgdW5zaWduZWQgY291bnQpOwor
fTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIENvbGxlY3Rpb25DbGFzcz4KK2lubGluZSBFbGVtZW50
RGVzY2VuZGFudEl0ZXJhdG9yIENvbGxlY3Rpb25UcmF2ZXJzYWw8Q29sbGVjdGlvblRyYXZlcnNh
bFR5cGU6OkRlc2NlbmRhbnRzPjo6YmVnaW4oY29uc3QgQ29sbGVjdGlvbkNsYXNzJiBjb2xsZWN0
aW9uLCBDb250YWluZXJOb2RlJiByb290Tm9kZSkKK3sKKyAgICBhdXRvIGRlc2NlbmRhbnRzID0g
ZWxlbWVudERlc2NlbmRhbnRzKHJvb3ROb2RlKTsKKyAgICBhdXRvIGVuZCA9IGRlc2NlbmRhbnRz
LmVuZCgpOworICAgIGZvciAoYXV0byBpdCA9IGRlc2NlbmRhbnRzLmJlZ2luKCk7IGl0ICE9IGVu
ZDsgKytpdCkgeworICAgICAgICBpZiAoY29sbGVjdGlvbi5lbGVtZW50TWF0Y2hlcygqaXQpKQor
ICAgICAgICAgICAgcmV0dXJuIGl0OworICAgIH0KKyAgICByZXR1cm4gZW5kOworfQorCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgQ29sbGVjdGlvbkNsYXNzPgoraW5saW5lIEVsZW1lbnRDaGlsZEl0ZXJh
dG9yPEVsZW1lbnQ+IENvbGxlY3Rpb25UcmF2ZXJzYWw8Q29sbGVjdGlvblRyYXZlcnNhbFR5cGU6
OkNoaWxkcmVuT25seT46OmJlZ2luKGNvbnN0IENvbGxlY3Rpb25DbGFzcyYgY29sbGVjdGlvbiwg
Q29udGFpbmVyTm9kZSYgcm9vdE5vZGUpCit7CisgICAgYXV0byBjaGlsZHJlbiA9IGNoaWxkcmVu
T2ZUeXBlPEVsZW1lbnQ+KHJvb3ROb2RlKTsKKyAgICBhdXRvIGVuZCA9IGNoaWxkcmVuLmVuZCgp
OworICAgIGZvciAoYXV0byBpdCA9IGNoaWxkcmVuLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkg
eworICAgICAgICBpZiAoY29sbGVjdGlvbi5lbGVtZW50TWF0Y2hlcygqaXQpKQorICAgICAgICAg
ICAgcmV0dXJuIGl0OworICAgIH0KKyAgICByZXR1cm4gZW5kOworfQorCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgQ29sbGVjdGlvbkNsYXNzPgoraW5saW5lIEVsZW1lbnQqIENvbGxlY3Rpb25UcmF2ZXJz
YWw8Q29sbGVjdGlvblRyYXZlcnNhbFR5cGU6OkN1c3RvbUZvcndhcmRPbmx5Pjo6YmVnaW4oY29u
c3QgQ29sbGVjdGlvbkNsYXNzJiBjb2xsZWN0aW9uLCBDb250YWluZXJOb2RlJikKK3sKKyAgICBy
ZXR1cm4gY29sbGVjdGlvbi5jdXN0b21FbGVtZW50QWZ0ZXIobnVsbHB0cik7Cit9CisKK3RlbXBs
YXRlIDx0eXBlbmFtZSBDb2xsZWN0aW9uQ2xhc3M+CitpbmxpbmUgRWxlbWVudERlc2NlbmRhbnRJ
dGVyYXRvciBDb2xsZWN0aW9uVHJhdmVyc2FsPENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlOjpEZXNj
ZW5kYW50cz46Omxhc3QoY29uc3QgQ29sbGVjdGlvbkNsYXNzJiBjb2xsZWN0aW9uLCBDb250YWlu
ZXJOb2RlJiByb290Tm9kZSkKK3sKKyAgICBhdXRvIGRlc2NlbmRhbnRzID0gZWxlbWVudERlc2Nl
bmRhbnRzKHJvb3ROb2RlKTsKKyAgICBhdXRvIGVuZCA9IGRlc2NlbmRhbnRzLmVuZCgpOworICAg
IGZvciAoYXV0byBpdCA9IGRlc2NlbmRhbnRzLmxhc3QoKTsgaXQgIT0gZW5kOyAtLWl0KSB7Cisg
ICAgICAgIGlmIChjb2xsZWN0aW9uLmVsZW1lbnRNYXRjaGVzKCppdCkpCisgICAgICAgICAgICBy
ZXR1cm4gaXQ7CisgICAgfQorICAgIHJldHVybiBlbmQ7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBDb2xsZWN0aW9uQ2xhc3M+CitpbmxpbmUgRWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVudD4g
Q29sbGVjdGlvblRyYXZlcnNhbDxDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6Q2hpbGRyZW5Pbmx5
Pjo6bGFzdChjb25zdCBDb2xsZWN0aW9uQ2xhc3MmIGNvbGxlY3Rpb24sIENvbnRhaW5lck5vZGUm
IHJvb3ROb2RlKQoreworICAgIGF1dG8gY2hpbGRyZW4gPSBjaGlsZHJlbk9mVHlwZTxFbGVtZW50
Pihyb290Tm9kZSk7CisgICAgYXV0byBlbmQgPSBjaGlsZHJlbi5lbmQoKTsKKyAgICBFbGVtZW50
Q2hpbGRJdGVyYXRvcjxFbGVtZW50PiBsYXN0KHJvb3ROb2RlLCBjaGlsZHJlbi5sYXN0KCkpOwor
ICAgIGZvciAoYXV0byBpdCA9IGxhc3Q7IGl0ICE9IGVuZDsgLS1pdCkgeworICAgICAgICBpZiAo
Y29sbGVjdGlvbi5lbGVtZW50TWF0Y2hlcygqaXQpKQorICAgICAgICAgICAgcmV0dXJuIGl0Owor
ICAgIH0KKyAgICByZXR1cm4gZW5kOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ29sbGVjdGlv
bkNsYXNzPgoraW5saW5lIEVsZW1lbnQqIENvbGxlY3Rpb25UcmF2ZXJzYWw8Q29sbGVjdGlvblRy
YXZlcnNhbFR5cGU6OkN1c3RvbUZvcndhcmRPbmx5Pjo6bGFzdChjb25zdCBDb2xsZWN0aW9uQ2xh
c3MmLCBDb250YWluZXJOb2RlJikKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBy
ZXR1cm4gbnVsbHB0cjsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIENvbGxlY3Rpb25DbGFzcz4K
K2lubGluZSB2b2lkIENvbGxlY3Rpb25UcmF2ZXJzYWw8Q29sbGVjdGlvblRyYXZlcnNhbFR5cGU6
OkRlc2NlbmRhbnRzPjo6dHJhdmVyc2VGb3J3YXJkKGNvbnN0IENvbGxlY3Rpb25DbGFzcyYgY29s
bGVjdGlvbiwgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciYgY3VycmVudCwgdW5zaWduZWQgY291
bnQsIHVuc2lnbmVkJiB0cmF2ZXJzZWRDb3VudCkKK3sKKyAgICBBU1NFUlQoY29sbGVjdGlvbi5l
bGVtZW50TWF0Y2hlcygqY3VycmVudCkpOworICAgIGF1dG8gZW5kID0gY29sbGVjdGlvbi5jb2xs
ZWN0aW9uRW5kKCk7CisgICAgZm9yICh0cmF2ZXJzZWRDb3VudCA9IDA7IHRyYXZlcnNlZENvdW50
IDwgY291bnQ7ICsrdHJhdmVyc2VkQ291bnQpIHsKKyAgICAgICAgZG8geworICAgICAgICAgICAg
KytjdXJyZW50OworICAgICAgICAgICAgaWYgKGN1cnJlbnQgPT0gZW5kKQorICAgICAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfSB3aGlsZSAoIWNvbGxlY3Rpb24uZWxlbWVudE1hdGNoZXMo
KmN1cnJlbnQpKTsKKyAgICB9Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBDb2xsZWN0aW9uQ2xh
c3M+CitpbmxpbmUgdm9pZCBDb2xsZWN0aW9uVHJhdmVyc2FsPENvbGxlY3Rpb25UcmF2ZXJzYWxU
eXBlOjpDaGlsZHJlbk9ubHk+Ojp0cmF2ZXJzZUZvcndhcmQoY29uc3QgQ29sbGVjdGlvbkNsYXNz
JiBjb2xsZWN0aW9uLCBFbGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50PiYgY3VycmVudCwgdW5z
aWduZWQgY291bnQsIHVuc2lnbmVkJiB0cmF2ZXJzZWRDb3VudCkKK3sKKyAgICBBU1NFUlQoY29s
bGVjdGlvbi5lbGVtZW50TWF0Y2hlcygqY3VycmVudCkpOworICAgIGF1dG8gZW5kID0gY29sbGVj
dGlvbi5jb2xsZWN0aW9uRW5kKCk7CisgICAgZm9yICh0cmF2ZXJzZWRDb3VudCA9IDA7IHRyYXZl
cnNlZENvdW50IDwgY291bnQ7ICsrdHJhdmVyc2VkQ291bnQpIHsKKyAgICAgICAgZG8geworICAg
ICAgICAgICAgKytjdXJyZW50OworICAgICAgICAgICAgaWYgKGN1cnJlbnQgPT0gZW5kKQorICAg
ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfSB3aGlsZSAoIWNvbGxlY3Rpb24uZWxlbWVu
dE1hdGNoZXMoKmN1cnJlbnQpKTsKKyAgICB9Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBDb2xs
ZWN0aW9uQ2xhc3M+CitpbmxpbmUgdm9pZCBDb2xsZWN0aW9uVHJhdmVyc2FsPENvbGxlY3Rpb25U
cmF2ZXJzYWxUeXBlOjpDdXN0b21Gb3J3YXJkT25seT46OnRyYXZlcnNlRm9yd2FyZChjb25zdCBD
b2xsZWN0aW9uQ2xhc3MmIGNvbGxlY3Rpb24sIEVsZW1lbnQqJiBjdXJyZW50LCB1bnNpZ25lZCBj
b3VudCwgdW5zaWduZWQmIHRyYXZlcnNlZENvdW50KQoreworICAgIEVsZW1lbnQqIGVsZW1lbnQg
PSBjdXJyZW50OworICAgIGZvciAodHJhdmVyc2VkQ291bnQgPSAwOyB0cmF2ZXJzZWRDb3VudCA8
IGNvdW50OyArK3RyYXZlcnNlZENvdW50KSB7CisgICAgICAgIGVsZW1lbnQgPSBjb2xsZWN0aW9u
LmN1c3RvbUVsZW1lbnRBZnRlcihlbGVtZW50KTsKKyAgICAgICAgaWYgKCFlbGVtZW50KSB7Cisg
ICAgICAgICAgICBjdXJyZW50ID0gbnVsbHB0cjsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorICAgIH0KKyAgICBjdXJyZW50ID0gZWxlbWVudDsKK30KKwordGVtcGxhdGUgPHR5cGVu
YW1lIENvbGxlY3Rpb25DbGFzcz4KK2lubGluZSB2b2lkIENvbGxlY3Rpb25UcmF2ZXJzYWw8Q29s
bGVjdGlvblRyYXZlcnNhbFR5cGU6OkRlc2NlbmRhbnRzPjo6dHJhdmVyc2VCYWNrd2FyZChjb25z
dCBDb2xsZWN0aW9uQ2xhc3MmIGNvbGxlY3Rpb24sIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3Im
IGN1cnJlbnQsIHVuc2lnbmVkIGNvdW50KQoreworICAgIEFTU0VSVChjb2xsZWN0aW9uLmVsZW1l
bnRNYXRjaGVzKCpjdXJyZW50KSk7CisgICAgYXV0byBlbmQgPSBjb2xsZWN0aW9uLmNvbGxlY3Rp
b25FbmQoKTsKKyAgICBmb3IgKDsgY291bnQ7IC0tY291bnQpIHsKKyAgICAgICAgZG8geworICAg
ICAgICAgICAgLS1jdXJyZW50OworICAgICAgICAgICAgaWYgKGN1cnJlbnQgPT0gZW5kKQorICAg
ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfSB3aGlsZSAoIWNvbGxlY3Rpb24uZWxlbWVu
dE1hdGNoZXMoKmN1cnJlbnQpKTsKKyAgICB9Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBDb2xs
ZWN0aW9uQ2xhc3M+CitpbmxpbmUgdm9pZCBDb2xsZWN0aW9uVHJhdmVyc2FsPENvbGxlY3Rpb25U
cmF2ZXJzYWxUeXBlOjpDaGlsZHJlbk9ubHk+Ojp0cmF2ZXJzZUJhY2t3YXJkKGNvbnN0IENvbGxl
Y3Rpb25DbGFzcyYgY29sbGVjdGlvbiwgRWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVudD4mIGN1
cnJlbnQsIHVuc2lnbmVkIGNvdW50KQoreworICAgIEFTU0VSVChjb2xsZWN0aW9uLmVsZW1lbnRN
YXRjaGVzKCpjdXJyZW50KSk7CisgICAgYXV0byBlbmQgPSBjb2xsZWN0aW9uLmNvbGxlY3Rpb25F
bmQoKTsKKyAgICBmb3IgKDsgY291bnQ7IC0tY291bnQpIHsKKyAgICAgICAgZG8geworICAgICAg
ICAgICAgLS1jdXJyZW50OworICAgICAgICAgICAgaWYgKGN1cnJlbnQgPT0gZW5kKQorICAgICAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfSB3aGlsZSAoIWNvbGxlY3Rpb24uZWxlbWVudE1h
dGNoZXMoKmN1cnJlbnQpKTsKKyAgICB9Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBDb2xsZWN0
aW9uQ2xhc3M+CitpbmxpbmUgdm9pZCBDb2xsZWN0aW9uVHJhdmVyc2FsPENvbGxlY3Rpb25UcmF2
ZXJzYWxUeXBlOjpDdXN0b21Gb3J3YXJkT25seT46OnRyYXZlcnNlQmFja3dhcmQoY29uc3QgQ29s
bGVjdGlvbkNsYXNzJiwgRWxlbWVudComLCB1bnNpZ25lZCBjb3VudCkKK3sKKyAgICBVTlVTRURf
UEFSQU0oY291bnQpOworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBDb2xsZWN0aW9uVHJhdmVyc2FsX2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ29sbGVjdGlvblR5cGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvQ29sbGVjdGlvblR5cGUuaAppbmRleCA1MTMwYWY5MWRhZTg2OGE3MTRmNmUwNTUwYmZh
YWRmNDAxZjY1YmJjLi4xYTkyMmQwZmY5MDYwODRhZDE3MzRiMDcwZjg1YTA0Y2ZiODk0YjFlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0NvbGxlY3Rpb25UeXBlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9Db2xsZWN0aW9uVHlwZS5oCkBAIC01Myw2ICs1Myw0MiBAQCBlbnVt
IENvbGxlY3Rpb25UeXBlIHsKICAgICBGb3JtQ29udHJvbHMKIH07CiAKLX0gLy8gbmFtZXNwYWNl
CitlbnVtIGNsYXNzIENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlIHsgRGVzY2VuZGFudHMsIENoaWxk
cmVuT25seSwgQ3VzdG9tRm9yd2FyZE9ubHkgfTsKK3RlbXBsYXRlPENvbGxlY3Rpb25UeXBlIGNv
bGxlY3Rpb25UeXBlPgorc3RydWN0IENvbGxlY3Rpb25UeXBlVHJhaXRzIHsKKyAgICBzdGF0aWMg
Y29uc3QgQ29sbGVjdGlvblRyYXZlcnNhbFR5cGUgdHJhdmVyc2FsVHlwZSA9IENvbGxlY3Rpb25U
cmF2ZXJzYWxUeXBlOjpEZXNjZW5kYW50czsKK307CisKK3RlbXBsYXRlPD4KK3N0cnVjdCBDb2xs
ZWN0aW9uVHlwZVRyYWl0czxOb2RlQ2hpbGRyZW4+IHsKKyAgICBzdGF0aWMgY29uc3QgQ29sbGVj
dGlvblRyYXZlcnNhbFR5cGUgdHJhdmVyc2FsVHlwZSA9IENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBl
OjpDaGlsZHJlbk9ubHk7Cit9OworCit0ZW1wbGF0ZTw+CitzdHJ1Y3QgQ29sbGVjdGlvblR5cGVU
cmFpdHM8VFJDZWxscz4geworICAgIHN0YXRpYyBjb25zdCBDb2xsZWN0aW9uVHJhdmVyc2FsVHlw
ZSB0cmF2ZXJzYWxUeXBlID0gQ29sbGVjdGlvblRyYXZlcnNhbFR5cGU6OkNoaWxkcmVuT25seTsK
K307CisKK3RlbXBsYXRlPD4KK3N0cnVjdCBDb2xsZWN0aW9uVHlwZVRyYWl0czxUU2VjdGlvblJv
d3M+IHsKKyAgICBzdGF0aWMgY29uc3QgQ29sbGVjdGlvblRyYXZlcnNhbFR5cGUgdHJhdmVyc2Fs
VHlwZSA9IENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlOjpDaGlsZHJlbk9ubHk7Cit9OworCit0ZW1w
bGF0ZTw+CitzdHJ1Y3QgQ29sbGVjdGlvblR5cGVUcmFpdHM8VGFibGVUQm9kaWVzPiB7CisgICAg
c3RhdGljIGNvbnN0IENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlIHRyYXZlcnNhbFR5cGUgPSBDb2xs
ZWN0aW9uVHJhdmVyc2FsVHlwZTo6Q2hpbGRyZW5Pbmx5OworfTsKKwordGVtcGxhdGU8Pgorc3Ry
dWN0IENvbGxlY3Rpb25UeXBlVHJhaXRzPFRhYmxlUm93cz4geworICAgIHN0YXRpYyBjb25zdCBD
b2xsZWN0aW9uVHJhdmVyc2FsVHlwZSB0cmF2ZXJzYWxUeXBlID0gQ29sbGVjdGlvblRyYXZlcnNh
bFR5cGU6OkN1c3RvbUZvcndhcmRPbmx5OworfTsKKwordGVtcGxhdGU8Pgorc3RydWN0IENvbGxl
Y3Rpb25UeXBlVHJhaXRzPEZvcm1Db250cm9scz4geworICAgIHN0YXRpYyBjb25zdCBDb2xsZWN0
aW9uVHJhdmVyc2FsVHlwZSB0cmF2ZXJzYWxUeXBlID0gQ29sbGVjdGlvblRyYXZlcnNhbFR5cGU6
OkN1c3RvbUZvcndhcmRPbmx5OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvR2VuZXJpY0NhY2hlZEhUTUxDb2xs
ZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvR2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0
aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi44MzRlZTEwYmExZjk2YTUwNGRlN2Y5ZTdmZjE3M2I2ZDQ2Y2Uy
ZDYwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9HZW5lcmljQ2FjaGVk
SFRNTENvbGxlY3Rpb24uY3BwCkBAIC0wLDAgKzEsODkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uLmgiCisK
KyNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJIVE1MT2JqZWN0RWxlbWVudC5oIgor
I2luY2x1ZGUgIkhUTUxPcHRpb25FbGVtZW50LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
dXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKKwordGVtcGxhdGUgPENvbGxlY3Rpb25UcmF2ZXJz
YWxUeXBlIHRyYXZlcnNhbFR5cGU+Citib29sIEdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbjx0
cmF2ZXJzYWxUeXBlPjo6ZWxlbWVudE1hdGNoZXMoRWxlbWVudCYgZWxlbWVudCkgY29uc3QKK3sK
KyAgICBzd2l0Y2ggKEJhc2U6OnR5cGUoKSkgeworICAgIGNhc2UgTm9kZUNoaWxkcmVuOgorICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICBjYXNlIERvY0ltYWdlczoKKyAgICAgICAgcmV0dXJuIGVs
ZW1lbnQuaGFzVGFnTmFtZShpbWdUYWcpOworICAgIGNhc2UgRG9jU2NyaXB0czoKKyAgICAgICAg
cmV0dXJuIGVsZW1lbnQuaGFzVGFnTmFtZShzY3JpcHRUYWcpOworICAgIGNhc2UgRG9jRm9ybXM6
CisgICAgICAgIHJldHVybiBlbGVtZW50Lmhhc1RhZ05hbWUoZm9ybVRhZyk7CisgICAgY2FzZSBU
YWJsZVRCb2RpZXM6CisgICAgICAgIHJldHVybiBlbGVtZW50Lmhhc1RhZ05hbWUodGJvZHlUYWcp
OworICAgIGNhc2UgVFJDZWxsczoKKyAgICAgICAgcmV0dXJuIGVsZW1lbnQuaGFzVGFnTmFtZSh0
ZFRhZykgfHwgZWxlbWVudC5oYXNUYWdOYW1lKHRoVGFnKTsKKyAgICBjYXNlIFRTZWN0aW9uUm93
czoKKyAgICAgICAgcmV0dXJuIGVsZW1lbnQuaGFzVGFnTmFtZSh0clRhZyk7CisgICAgY2FzZSBT
ZWxlY3RlZE9wdGlvbnM6CisgICAgICAgIHJldHVybiBpczxIVE1MT3B0aW9uRWxlbWVudD4oZWxl
bWVudCkgJiYgZG93bmNhc3Q8SFRNTE9wdGlvbkVsZW1lbnQ+KGVsZW1lbnQpLnNlbGVjdGVkKCk7
CisgICAgY2FzZSBEYXRhTGlzdE9wdGlvbnM6CisgICAgICAgIGlmIChpczxIVE1MT3B0aW9uRWxl
bWVudD4oZWxlbWVudCkpIHsKKyAgICAgICAgICAgIEhUTUxPcHRpb25FbGVtZW50JiBvcHRpb24g
PSBkb3duY2FzdDxIVE1MT3B0aW9uRWxlbWVudD4oZWxlbWVudCk7CisgICAgICAgICAgICBpZiAo
IW9wdGlvbi5pc0Rpc2FibGVkRm9ybUNvbnRyb2woKSAmJiAhb3B0aW9uLnZhbHVlKCkuaXNFbXB0
eSgpKQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICBjYXNlIE1hcEFyZWFzOgorICAgICAgICByZXR1cm4gZWxlbWVudC5o
YXNUYWdOYW1lKGFyZWFUYWcpOworICAgIGNhc2UgRG9jQXBwbGV0czoKKyAgICAgICAgcmV0dXJu
IGlzPEhUTUxBcHBsZXRFbGVtZW50PihlbGVtZW50KSB8fCAoaXM8SFRNTE9iamVjdEVsZW1lbnQ+
KGVsZW1lbnQpICYmIGRvd25jYXN0PEhUTUxPYmplY3RFbGVtZW50PihlbGVtZW50KS5jb250YWlu
c0phdmFBcHBsZXQoKSk7CisgICAgY2FzZSBEb2NFbWJlZHM6CisgICAgICAgIHJldHVybiBlbGVt
ZW50Lmhhc1RhZ05hbWUoZW1iZWRUYWcpOworICAgIGNhc2UgRG9jTGlua3M6CisgICAgICAgIHJl
dHVybiAoZWxlbWVudC5oYXNUYWdOYW1lKGFUYWcpIHx8IGVsZW1lbnQuaGFzVGFnTmFtZShhcmVh
VGFnKSkgJiYgZWxlbWVudC5mYXN0SGFzQXR0cmlidXRlKGhyZWZBdHRyKTsKKyAgICBjYXNlIERv
Y0FuY2hvcnM6CisgICAgICAgIHJldHVybiBlbGVtZW50Lmhhc1RhZ05hbWUoYVRhZykgJiYgZWxl
bWVudC5mYXN0SGFzQXR0cmlidXRlKG5hbWVBdHRyKTsKKyAgICBjYXNlIERvY0FsbDoKKyAgICBj
YXNlIERvY3VtZW50TmFtZWRJdGVtczoKKyAgICBjYXNlIEZvcm1Db250cm9sczoKKyAgICBjYXNl
IFNlbGVjdE9wdGlvbnM6CisgICAgY2FzZSBUYWJsZVJvd3M6CisgICAgY2FzZSBXaW5kb3dOYW1l
ZEl0ZW1zOgorICAgICAgICBicmVhazsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgcmV0dXJuIGZhbHNlOworfQordGVtcGxhdGUgYm9vbCBHZW5lcmljQ2FjaGVkSFRNTENv
bGxlY3Rpb248Q29sbGVjdGlvblRyYXZlcnNhbFR5cGU6OkRlc2NlbmRhbnRzPjo6ZWxlbWVudE1h
dGNoZXMoRWxlbWVudCYpIGNvbnN0OwordGVtcGxhdGUgYm9vbCBHZW5lcmljQ2FjaGVkSFRNTENv
bGxlY3Rpb248Q29sbGVjdGlvblRyYXZlcnNhbFR5cGU6OkNoaWxkcmVuT25seT46OmVsZW1lbnRN
YXRjaGVzKEVsZW1lbnQmKSBjb25zdDsKK3RlbXBsYXRlIGJvb2wgR2VuZXJpY0NhY2hlZEhUTUxD
b2xsZWN0aW9uPENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlOjpDdXN0b21Gb3J3YXJkT25seT46OmVs
ZW1lbnRNYXRjaGVzKEVsZW1lbnQmKSBjb25zdDsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9HZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rp
b24uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvR2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGY0MDc1NzkwNTgyZWMyNzg1Zjc1NzFiNjJhYmE0NWEyNmE5YTgwMQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvR2VuZXJpY0NhY2hlZEhUTUxDb2xs
ZWN0aW9uLmgKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgR2VuZXJpY0Nh
Y2hlZEhUTUxDb2xsZWN0aW9uX2gKKyNkZWZpbmUgR2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9u
X2gKKworI2luY2x1ZGUgIkNhY2hlZEhUTUxDb2xsZWN0aW9uLmgiCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKwordGVtcGxhdGUgPENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlIHRyYXZlcnNhbFR5cGU+
CitjbGFzcyBHZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb24gZmluYWwgOiBwdWJsaWMgQ2FjaGVk
SFRNTENvbGxlY3Rpb248R2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uPHRyYXZlcnNhbFR5cGU+
LCB0cmF2ZXJzYWxUeXBlPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxHZW5lcmljQ2FjaGVk
SFRNTENvbGxlY3Rpb24+IGNyZWF0ZShDb250YWluZXJOb2RlJiBiYXNlLCBDb2xsZWN0aW9uVHlw
ZSBjb2xsZWN0aW9uVHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEdl
bmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbihiYXNlLCBjb2xsZWN0aW9uVHlwZSkpOworICAgIH0K
KworICAgIGJvb2wgZWxlbWVudE1hdGNoZXMoRWxlbWVudCYpIGNvbnN0OworCitwcml2YXRlOgor
ICAgIHVzaW5nIEJhc2UgPSBDYWNoZWRIVE1MQ29sbGVjdGlvbjxHZW5lcmljQ2FjaGVkSFRNTENv
bGxlY3Rpb248dHJhdmVyc2FsVHlwZT4sIHRyYXZlcnNhbFR5cGU+OworICAgIEdlbmVyaWNDYWNo
ZWRIVE1MQ29sbGVjdGlvbihDb250YWluZXJOb2RlJiBiYXNlLCBDb2xsZWN0aW9uVHlwZSBjb2xs
ZWN0aW9uVHlwZSkKKyAgICAgICAgOiBCYXNlKGJhc2UsIGNvbGxlY3Rpb25UeXBlKQorICAgIHsg
fQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gR2VuZXJpY0NhY2hl
ZEhUTUxDb2xsZWN0aW9uX2gKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
QWxsQ29sbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbGxDb2xsZWN0aW9u
LmNwcAppbmRleCAwMTY2ODcxNGVjYmJiZDBmZWJkMWU1MGM0YWJkNGIwOTEzYjQyN2YzLi5kYWIw
NTAwZmFkODhjNjU0YTViOTFjYmU1ZDNkOWE3NDYyNzk4YjFiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxBbGxDb2xsZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxBbGxDb2xsZWN0aW9uLmNwcApAQCAtMzYsNyArMzYsNyBAQCBSZWY8SFRNTEFsbENv
bGxlY3Rpb24+IEhUTUxBbGxDb2xsZWN0aW9uOjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBD
b2xsZWN0aW9uVAogfQogCiBpbmxpbmUgSFRNTEFsbENvbGxlY3Rpb246OkhUTUxBbGxDb2xsZWN0
aW9uKERvY3VtZW50JiBkb2N1bWVudCwgQ29sbGVjdGlvblR5cGUgdHlwZSkKLSAgICA6IEhUTUxD
b2xsZWN0aW9uKGRvY3VtZW50LCB0eXBlKQorICAgIDogQ2FjaGVkSFRNTENvbGxlY3Rpb248SFRN
TEFsbENvbGxlY3Rpb24sIENvbGxlY3Rpb25UeXBlVHJhaXRzPERvY0FsbD46OnRyYXZlcnNhbFR5
cGU+KGRvY3VtZW50LCB0eXBlKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxBbGxDb2xsZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbGxDb2xs
ZWN0aW9uLmgKaW5kZXggNTE0NTExNzRiZDI4M2IyMDFjODkyZTJlYTRhNWFiOWZiNjE1YmYwMS4u
YjYwMTFiNDk2MmRlMGM3NzczY2IzMWJlOTE2NmQzZTk4YjkwNGRjMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MQWxsQ29sbGVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEFsbENvbGxlY3Rpb24uaApAQCAtMjYsMTYgKzI2LDE5IEBACiAjaWZuZGVmIEhU
TUxBbGxDb2xsZWN0aW9uX2gKICNkZWZpbmUgSFRNTEFsbENvbGxlY3Rpb25faAogCi0jaW5jbHVk
ZSAiSFRNTENvbGxlY3Rpb24uaCIKKyNpbmNsdWRlICJDYWNoZWRIVE1MQ29sbGVjdGlvbi5oIgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEhUTUxBbGxDb2xsZWN0aW9uIGZpbmFsIDog
cHVibGljIEhUTUxDb2xsZWN0aW9uIHsKK2NsYXNzIEhUTUxBbGxDb2xsZWN0aW9uIGZpbmFsIDog
cHVibGljIENhY2hlZEhUTUxDb2xsZWN0aW9uPEhUTUxBbGxDb2xsZWN0aW9uLCBDb2xsZWN0aW9u
VHlwZVRyYWl0czxEb2NBbGw+Ojp0cmF2ZXJzYWxUeXBlPiB7CiBwdWJsaWM6CiAgICAgc3RhdGlj
IFJlZjxIVE1MQWxsQ29sbGVjdGlvbj4gY3JlYXRlKERvY3VtZW50JiwgQ29sbGVjdGlvblR5cGUp
OwogCiAgICAgRWxlbWVudCogbmFtZWRJdGVtV2l0aEluZGV4KGNvbnN0IEF0b21pY1N0cmluZyYg
bmFtZSwgdW5zaWduZWQgaW5kZXgpIGNvbnN0OwogCisgICAgLy8gRm9yIENhY2hlZEhUTUxDb2xs
ZWN0aW9uLgorICAgIGJvb2wgZWxlbWVudE1hdGNoZXMoRWxlbWVudCYpIGNvbnN0IHsgcmV0dXJu
IHRydWU7IH0KKwogcHJpdmF0ZToKICAgICBIVE1MQWxsQ29sbGVjdGlvbihEb2N1bWVudCYsIENv
bGxlY3Rpb25UeXBlKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxD
b2xsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uY3BwCmlu
ZGV4IDNiNGI2MmY3MjZiYzQ1MDM4Y2IzOTMxMTYwNGY4NTc1MzBiNjgxZGYuLjMwODEwY2ZhZDI4
MzI5MjQ2ZjRjOTE3ZDJiNzc5YjIwMjdkNWYwY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTENvbGxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENv
bGxlY3Rpb24uY3BwCkBAIC0yMyw0OCArMjMsMTQgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJIVE1MQ29sbGVjdGlvbi5oIgogCi0jaW5jbHVkZSAiRWxlbWVudFRyYXZlcnNhbC5o
IgotI2luY2x1ZGUgIkhUTUxEb2N1bWVudC5oIgotI2luY2x1ZGUgIkhUTUxOYW1lQ29sbGVjdGlv
bi5oIgorI2luY2x1ZGUgIkNhY2hlZEhUTUxDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiSFRNTE5h
bWVzLmgiCi0jaW5jbHVkZSAiSFRNTE9iamVjdEVsZW1lbnQuaCIKLSNpbmNsdWRlICJIVE1MT3B0
aW9uRWxlbWVudC5oIgogI2luY2x1ZGUgIk5vZGVSYXJlRGF0YS5oIgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKLXN0YXRpYyBib29sIHNob3Vs
ZE9ubHlJbmNsdWRlRGlyZWN0Q2hpbGRyZW4oQ29sbGVjdGlvblR5cGUgdHlwZSkKLXsKLSAgICBz
d2l0Y2ggKHR5cGUpIHsKLSAgICBjYXNlIERvY0FsbDoKLSAgICBjYXNlIERvY0FuY2hvcnM6Ci0g
ICAgY2FzZSBEb2NBcHBsZXRzOgotICAgIGNhc2UgRG9jRW1iZWRzOgotICAgIGNhc2UgRG9jRm9y
bXM6Ci0gICAgY2FzZSBEb2NJbWFnZXM6Ci0gICAgY2FzZSBEb2NMaW5rczoKLSAgICBjYXNlIERv
Y1NjcmlwdHM6Ci0gICAgY2FzZSBEb2N1bWVudE5hbWVkSXRlbXM6Ci0gICAgY2FzZSBNYXBBcmVh
czoKLSAgICBjYXNlIFRhYmxlUm93czoKLSAgICBjYXNlIFNlbGVjdE9wdGlvbnM6Ci0gICAgY2Fz
ZSBTZWxlY3RlZE9wdGlvbnM6Ci0gICAgY2FzZSBEYXRhTGlzdE9wdGlvbnM6Ci0gICAgY2FzZSBX
aW5kb3dOYW1lZEl0ZW1zOgotICAgIGNhc2UgRm9ybUNvbnRyb2xzOgotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgY2FzZSBOb2RlQ2hpbGRyZW46Ci0gICAgY2FzZSBUUkNlbGxzOgotICAgIGNh
c2UgVFNlY3Rpb25Sb3dzOgotICAgIGNhc2UgVGFibGVUQm9kaWVzOgotICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICB9Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIGZhbHNl
OwotfQotCiBpbmxpbmUgYXV0byBIVE1MQ29sbGVjdGlvbjo6cm9vdFR5cGVGcm9tQ29sbGVjdGlv
blR5cGUoQ29sbGVjdGlvblR5cGUgdHlwZSkgLT4gUm9vdFR5cGUKIHsKICAgICBzd2l0Y2ggKHR5
cGUpIHsKQEAgLTEzMSwyNjIgKzk3LDI5IEBAIHN0YXRpYyBOb2RlTGlzdEludmFsaWRhdGlvblR5
cGUgaW52YWxpZGF0aW9uVHlwZUV4Y2x1ZGluZ0lkQW5kTmFtZUF0dHJpYnV0ZXMoQ29sCiAgICAg
cmV0dXJuIERvTm90SW52YWxpZGF0ZU9uQXR0cmlidXRlQ2hhbmdlczsKIH0KIAotSFRNTENvbGxl
Y3Rpb246OkhUTUxDb2xsZWN0aW9uKENvbnRhaW5lck5vZGUmIG93bmVyTm9kZSwgQ29sbGVjdGlv
blR5cGUgdHlwZSwgRWxlbWVudFRyYXZlcnNhbFR5cGUgdHJhdmVyc2FsVHlwZSkKK0hUTUxDb2xs
ZWN0aW9uOjpIVE1MQ29sbGVjdGlvbihDb250YWluZXJOb2RlJiBvd25lck5vZGUsIENvbGxlY3Rp
b25UeXBlIHR5cGUpCiAgICAgOiBtX293bmVyTm9kZShvd25lck5vZGUpCi0gICAgLCBtX2luZGV4
Q2FjaGUoKnRoaXMpCiAgICAgLCBtX2NvbGxlY3Rpb25UeXBlKHR5cGUpCiAgICAgLCBtX2ludmFs
aWRhdGlvblR5cGUoaW52YWxpZGF0aW9uVHlwZUV4Y2x1ZGluZ0lkQW5kTmFtZUF0dHJpYnV0ZXMo
dHlwZSkpCiAgICAgLCBtX3Jvb3RUeXBlKHJvb3RUeXBlRnJvbUNvbGxlY3Rpb25UeXBlKHR5cGUp
KQotICAgICwgbV9zaG91bGRPbmx5SW5jbHVkZURpcmVjdENoaWxkcmVuKHNob3VsZE9ubHlJbmNs
dWRlRGlyZWN0Q2hpbGRyZW4odHlwZSkpCi0gICAgLCBtX3VzZXNDdXN0b21Gb3J3YXJkT25seVRy
YXZlcnNhbCh0cmF2ZXJzYWxUeXBlID09IEN1c3RvbUZvcndhcmRPbmx5VHJhdmVyc2FsKQogewog
ICAgIEFTU0VSVChtX3Jvb3RUeXBlID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihyb290VHlwZUZy
b21Db2xsZWN0aW9uVHlwZSh0eXBlKSkpOwogICAgIEFTU0VSVChtX2ludmFsaWRhdGlvblR5cGUg
PT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGludmFsaWRhdGlvblR5cGVFeGNsdWRpbmdJZEFuZE5h
bWVBdHRyaWJ1dGVzKHR5cGUpKSk7CiAgICAgQVNTRVJUKG1fY29sbGVjdGlvblR5cGUgPT0gc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KHR5cGUpKTsKIH0KIAotUmVmPEhUTUxDb2xsZWN0aW9uPiBIVE1M
Q29sbGVjdGlvbjo6Y3JlYXRlKENvbnRhaW5lck5vZGUmIGJhc2UsIENvbGxlY3Rpb25UeXBlIHR5
cGUpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSFRNTENvbGxlY3Rpb24oYmFzZSwgdHlw
ZSkpOwotfQotCiBIVE1MQ29sbGVjdGlvbjo6fkhUTUxDb2xsZWN0aW9uKCkKIHsKLSAgICBpZiAo
bV9pbmRleENhY2hlLmhhc1ZhbGlkQ2FjaGUoKnRoaXMpKQotICAgICAgICBkb2N1bWVudCgpLnVu
cmVnaXN0ZXJDb2xsZWN0aW9uKCp0aGlzKTsKICAgICBpZiAoaGFzTmFtZWRFbGVtZW50Q2FjaGUo
KSkKICAgICAgICAgZG9jdW1lbnQoKS5jb2xsZWN0aW9uV2lsbENsZWFySWROYW1lTWFwKCp0aGlz
KTsKKwogICAgIC8vIEhUTUxOYW1lQ29sbGVjdGlvbiByZW1vdmVzIGNhY2hlIGJ5IGl0c2VsZi4K
ICAgICBpZiAodHlwZSgpICE9IFdpbmRvd05hbWVkSXRlbXMgJiYgdHlwZSgpICE9IERvY3VtZW50
TmFtZWRJdGVtcykKICAgICAgICAgb3duZXJOb2RlKCkubm9kZUxpc3RzKCktPnJlbW92ZUNhY2hl
ZENvbGxlY3Rpb24odGhpcyk7CiB9CiAKLUNvbnRhaW5lck5vZGUmIEhUTUxDb2xsZWN0aW9uOjpy
b290Tm9kZSgpIGNvbnN0Ci17Ci0gICAgaWYgKGlzUm9vdGVkQXREb2N1bWVudCgpICYmIG93bmVy
Tm9kZSgpLmluRG9jdW1lbnQoKSkKLSAgICAgICAgcmV0dXJuIG93bmVyTm9kZSgpLmRvY3VtZW50
KCk7Ci0KLSAgICByZXR1cm4gb3duZXJOb2RlKCk7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgYm9vbCBp
c01hdGNoaW5nSFRNTEVsZW1lbnQoY29uc3QgSFRNTENvbGxlY3Rpb24mIGNvbGxlY3Rpb24sIEhU
TUxFbGVtZW50JiBlbGVtZW50KQordm9pZCBIVE1MQ29sbGVjdGlvbjo6aW52YWxpZGF0ZUNhY2hl
KERvY3VtZW50JiBkb2N1bWVudCkKIHsKLSAgICBzd2l0Y2ggKGNvbGxlY3Rpb24udHlwZSgpKSB7
Ci0gICAgY2FzZSBEb2NJbWFnZXM6Ci0gICAgICAgIHJldHVybiBlbGVtZW50Lmhhc1RhZ05hbWUo
aW1nVGFnKTsKLSAgICBjYXNlIERvY1NjcmlwdHM6Ci0gICAgICAgIHJldHVybiBlbGVtZW50Lmhh
c1RhZ05hbWUoc2NyaXB0VGFnKTsKLSAgICBjYXNlIERvY0Zvcm1zOgotICAgICAgICByZXR1cm4g
ZWxlbWVudC5oYXNUYWdOYW1lKGZvcm1UYWcpOwotICAgIGNhc2UgVGFibGVUQm9kaWVzOgotICAg
ICAgICByZXR1cm4gZWxlbWVudC5oYXNUYWdOYW1lKHRib2R5VGFnKTsKLSAgICBjYXNlIFRSQ2Vs
bHM6Ci0gICAgICAgIHJldHVybiBlbGVtZW50Lmhhc1RhZ05hbWUodGRUYWcpIHx8IGVsZW1lbnQu
aGFzVGFnTmFtZSh0aFRhZyk7Ci0gICAgY2FzZSBUU2VjdGlvblJvd3M6Ci0gICAgICAgIHJldHVy
biBlbGVtZW50Lmhhc1RhZ05hbWUodHJUYWcpOwotICAgIGNhc2UgU2VsZWN0T3B0aW9uczoKLSAg
ICAgICAgcmV0dXJuIGVsZW1lbnQuaGFzVGFnTmFtZShvcHRpb25UYWcpOwotICAgIGNhc2UgU2Vs
ZWN0ZWRPcHRpb25zOgotICAgICAgICByZXR1cm4gaXM8SFRNTE9wdGlvbkVsZW1lbnQ+KGVsZW1l
bnQpICYmIGRvd25jYXN0PEhUTUxPcHRpb25FbGVtZW50PihlbGVtZW50KS5zZWxlY3RlZCgpOwot
ICAgIGNhc2UgRGF0YUxpc3RPcHRpb25zOgotICAgICAgICBpZiAoaXM8SFRNTE9wdGlvbkVsZW1l
bnQ+KGVsZW1lbnQpKSB7Ci0gICAgICAgICAgICBIVE1MT3B0aW9uRWxlbWVudCYgb3B0aW9uID0g
ZG93bmNhc3Q8SFRNTE9wdGlvbkVsZW1lbnQ+KGVsZW1lbnQpOwotICAgICAgICAgICAgaWYgKCFv
cHRpb24uaXNEaXNhYmxlZEZvcm1Db250cm9sKCkgJiYgIW9wdGlvbi52YWx1ZSgpLmlzRW1wdHko
KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgY2FzZSBNYXBBcmVhczoKLSAgICAgICAgcmV0dXJuIGVsZW1lbnQuaGFz
VGFnTmFtZShhcmVhVGFnKTsKLSAgICBjYXNlIERvY0FwcGxldHM6Ci0gICAgICAgIHJldHVybiBp
czxIVE1MQXBwbGV0RWxlbWVudD4oZWxlbWVudCkgfHwgKGlzPEhUTUxPYmplY3RFbGVtZW50Pihl
bGVtZW50KSAmJiBkb3duY2FzdDxIVE1MT2JqZWN0RWxlbWVudD4oZWxlbWVudCkuY29udGFpbnNK
YXZhQXBwbGV0KCkpOwotICAgIGNhc2UgRG9jRW1iZWRzOgotICAgICAgICByZXR1cm4gZWxlbWVu
dC5oYXNUYWdOYW1lKGVtYmVkVGFnKTsKLSAgICBjYXNlIERvY0xpbmtzOgotICAgICAgICByZXR1
cm4gKGVsZW1lbnQuaGFzVGFnTmFtZShhVGFnKSB8fCBlbGVtZW50Lmhhc1RhZ05hbWUoYXJlYVRh
ZykpICYmIGVsZW1lbnQuZmFzdEhhc0F0dHJpYnV0ZShocmVmQXR0cik7Ci0gICAgY2FzZSBEb2NB
bmNob3JzOgotICAgICAgICByZXR1cm4gZWxlbWVudC5oYXNUYWdOYW1lKGFUYWcpICYmIGVsZW1l
bnQuZmFzdEhhc0F0dHJpYnV0ZShuYW1lQXR0cik7Ci0gICAgY2FzZSBEb2N1bWVudE5hbWVkSXRl
bXM6Ci0gICAgICAgIHJldHVybiBkb3duY2FzdDxEb2N1bWVudE5hbWVDb2xsZWN0aW9uPihjb2xs
ZWN0aW9uKS5lbGVtZW50TWF0Y2hlcyhlbGVtZW50KTsKLSAgICBjYXNlIERvY0FsbDoKLSAgICBj
YXNlIE5vZGVDaGlsZHJlbjoKLSAgICBjYXNlIFdpbmRvd05hbWVkSXRlbXM6Ci0gICAgY2FzZSBG
b3JtQ29udHJvbHM6Ci0gICAgY2FzZSBUYWJsZVJvd3M6Ci0gICAgICAgIGJyZWFrOwotICAgIH0K
LSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLXN0YXRp
YyBpbmxpbmUgYm9vbCBpc01hdGNoaW5nRWxlbWVudChjb25zdCBIVE1MQ29sbGVjdGlvbiYgY29s
bGVjdGlvbiwgRWxlbWVudCYgZWxlbWVudCkKLXsKLSAgICAvLyBDb2xsZWN0aW9uIHR5cGVzIHRo
YXQgZGVhbCB3aXRoIGFueSB0eXBlIG9mIEVsZW1lbnRzLCBub3QganVzdCBIVE1MRWxlbWVudHMu
Ci0gICAgc3dpdGNoIChjb2xsZWN0aW9uLnR5cGUoKSkgewotICAgIGNhc2UgRG9jQWxsOgotICAg
IGNhc2UgTm9kZUNoaWxkcmVuOgotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBjYXNlIFdpbmRv
d05hbWVkSXRlbXM6Ci0gICAgICAgIHJldHVybiBkb3duY2FzdDxXaW5kb3dOYW1lQ29sbGVjdGlv
bj4oY29sbGVjdGlvbikuZWxlbWVudE1hdGNoZXMoZWxlbWVudCk7Ci0gICAgZGVmYXVsdDoKLSAg
ICAgICAgLy8gQ29sbGVjdGlvbiB0eXBlcyB0aGF0IG9ubHkgZGVhbCB3aXRoIEhUTUxFbGVtZW50
cy4KLSAgICAgICAgcmV0dXJuIGlzPEhUTUxFbGVtZW50PihlbGVtZW50KSAmJiBpc01hdGNoaW5n
SFRNTEVsZW1lbnQoY29sbGVjdGlvbiwgZG93bmNhc3Q8SFRNTEVsZW1lbnQ+KGVsZW1lbnQpKTsK
LSAgICB9Ci19Ci0KLXN0YXRpYyBpbmxpbmUgRWxlbWVudCogcHJldmlvdXNFbGVtZW50KENvbnRh
aW5lck5vZGUmIGJhc2UsIEVsZW1lbnQmIGVsZW1lbnQsIGJvb2wgb25seUluY2x1ZGVEaXJlY3RD
aGlsZHJlbikKLXsKLSAgICByZXR1cm4gb25seUluY2x1ZGVEaXJlY3RDaGlsZHJlbiA/IEVsZW1l
bnRUcmF2ZXJzYWw6OnByZXZpb3VzU2libGluZyhlbGVtZW50KSA6IEVsZW1lbnRUcmF2ZXJzYWw6
OnByZXZpb3VzKGVsZW1lbnQsICZiYXNlKTsKLX0KLQotQUxXQVlTX0lOTElORSBFbGVtZW50KiBI
VE1MQ29sbGVjdGlvbjo6aXRlcmF0ZUZvclByZXZpb3VzRWxlbWVudChFbGVtZW50KiBlbGVtZW50
KSBjb25zdAotewotICAgIGJvb2wgb25seUluY2x1ZGVEaXJlY3RDaGlsZHJlbiA9IG1fc2hvdWxk
T25seUluY2x1ZGVEaXJlY3RDaGlsZHJlbjsKLSAgICBDb250YWluZXJOb2RlJiByb290Tm9kZSA9
IHRoaXMtPnJvb3ROb2RlKCk7Ci0gICAgZm9yICg7IGVsZW1lbnQ7IGVsZW1lbnQgPSBwcmV2aW91
c0VsZW1lbnQocm9vdE5vZGUsICplbGVtZW50LCBvbmx5SW5jbHVkZURpcmVjdENoaWxkcmVuKSkg
ewotICAgICAgICBpZiAoaXNNYXRjaGluZ0VsZW1lbnQoKnRoaXMsICplbGVtZW50KSkKLSAgICAg
ICAgICAgIHJldHVybiBlbGVtZW50OwotICAgIH0KLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLQot
c3RhdGljIGlubGluZSBFbGVtZW50KiBmaXJzdE1hdGNoaW5nRWxlbWVudChjb25zdCBIVE1MQ29s
bGVjdGlvbiYgY29sbGVjdGlvbiwgQ29udGFpbmVyTm9kZSYgcm9vdCkKLXsKLSAgICBFbGVtZW50
KiBlbGVtZW50ID0gRWxlbWVudFRyYXZlcnNhbDo6Zmlyc3RXaXRoaW4ocm9vdCk7Ci0gICAgd2hp
bGUgKGVsZW1lbnQgJiYgIWlzTWF0Y2hpbmdFbGVtZW50KGNvbGxlY3Rpb24sICplbGVtZW50KSkK
LSAgICAgICAgZWxlbWVudCA9IEVsZW1lbnRUcmF2ZXJzYWw6Om5leHQoKmVsZW1lbnQsICZyb290
KTsKLSAgICByZXR1cm4gZWxlbWVudDsKLX0KLQotc3RhdGljIGlubGluZSBFbGVtZW50KiBuZXh0
TWF0Y2hpbmdFbGVtZW50KGNvbnN0IEhUTUxDb2xsZWN0aW9uJiBjb2xsZWN0aW9uLCBFbGVtZW50
JiBlbGVtZW50LCBDb250YWluZXJOb2RlJiByb290KQotewotICAgIEVsZW1lbnQqIG5leHQgPSAm
ZWxlbWVudDsKLSAgICBkbyB7Ci0gICAgICAgIG5leHQgPSBFbGVtZW50VHJhdmVyc2FsOjpuZXh0
KCpuZXh0LCAmcm9vdCk7Ci0gICAgfSB3aGlsZSAobmV4dCAmJiAhaXNNYXRjaGluZ0VsZW1lbnQo
Y29sbGVjdGlvbiwgKm5leHQpKTsKLSAgICByZXR1cm4gbmV4dDsKLX0KLQotdW5zaWduZWQgSFRN
TENvbGxlY3Rpb246Omxlbmd0aCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1faW5kZXhDYWNoZS5u
b2RlQ291bnQoKnRoaXMpOwotfQotCi1FbGVtZW50KiBIVE1MQ29sbGVjdGlvbjo6aXRlbSh1bnNp
Z25lZCBvZmZzZXQpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1faW5kZXhDYWNoZS5ub2RlQXQoKnRo
aXMsIG9mZnNldCk7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgYm9vbCBuYW1lU2hvdWxkQmVWaXNpYmxl
SW5Eb2N1bWVudEFsbChIVE1MRWxlbWVudCYgZWxlbWVudCkKLXsKLSAgICAvLyBUaGUgZG9jdW1l
bnQuYWxsIGNvbGxlY3Rpb24gcmV0dXJucyBvbmx5IGNlcnRhaW4gdHlwZXMgb2YgZWxlbWVudHMg
YnkgbmFtZSwKLSAgICAvLyBhbHRob3VnaCBpdCByZXR1cm5zIGFueSB0eXBlIG9mIGVsZW1lbnQg
YnkgaWQuCi0gICAgcmV0dXJuIGVsZW1lbnQuaGFzVGFnTmFtZShhcHBsZXRUYWcpCi0gICAgICAg
IHx8IGVsZW1lbnQuaGFzVGFnTmFtZShlbWJlZFRhZykKLSAgICAgICAgfHwgZWxlbWVudC5oYXNU
YWdOYW1lKGZvcm1UYWcpCi0gICAgICAgIHx8IGVsZW1lbnQuaGFzVGFnTmFtZShpbWdUYWcpCi0g
ICAgICAgIHx8IGVsZW1lbnQuaGFzVGFnTmFtZShpbnB1dFRhZykKLSAgICAgICAgfHwgZWxlbWVu
dC5oYXNUYWdOYW1lKG9iamVjdFRhZykKLSAgICAgICAgfHwgZWxlbWVudC5oYXNUYWdOYW1lKHNl
bGVjdFRhZyk7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgYm9vbCBuYW1lU2hvdWxkQmVWaXNpYmxlSW5E
b2N1bWVudEFsbChFbGVtZW50JiBlbGVtZW50KQotewotICAgIHJldHVybiBpczxIVE1MRWxlbWVu
dD4oZWxlbWVudCkgJiYgbmFtZVNob3VsZEJlVmlzaWJsZUluRG9jdW1lbnRBbGwoZG93bmNhc3Q8
SFRNTEVsZW1lbnQ+KGVsZW1lbnQpKTsKLX0KLQotc3RhdGljIGlubGluZSBFbGVtZW50KiBmaXJz
dE1hdGNoaW5nQ2hpbGRFbGVtZW50KGNvbnN0IEhUTUxDb2xsZWN0aW9uJiBub2RlTGlzdCwgQ29u
dGFpbmVyTm9kZSYgcm9vdCkKLXsKLSAgICBFbGVtZW50KiBlbGVtZW50ID0gRWxlbWVudFRyYXZl
cnNhbDo6Zmlyc3RXaXRoaW4ocm9vdCk7Ci0gICAgd2hpbGUgKGVsZW1lbnQgJiYgIWlzTWF0Y2hp
bmdFbGVtZW50KG5vZGVMaXN0LCAqZWxlbWVudCkpCi0gICAgICAgIGVsZW1lbnQgPSBFbGVtZW50
VHJhdmVyc2FsOjpuZXh0U2libGluZygqZWxlbWVudCk7Ci0gICAgcmV0dXJuIGVsZW1lbnQ7Ci19
Ci0KLXN0YXRpYyBpbmxpbmUgRWxlbWVudCogbmV4dE1hdGNoaW5nU2libGluZ0VsZW1lbnQoY29u
c3QgSFRNTENvbGxlY3Rpb24mIG5vZGVMaXN0LCBFbGVtZW50JiBlbGVtZW50KQotewotICAgIEVs
ZW1lbnQqIG5leHQgPSAmZWxlbWVudDsKLSAgICBkbyB7Ci0gICAgICAgIG5leHQgPSBFbGVtZW50
VHJhdmVyc2FsOjpuZXh0U2libGluZygqbmV4dCk7Ci0gICAgfSB3aGlsZSAobmV4dCAmJiAhaXNN
YXRjaGluZ0VsZW1lbnQobm9kZUxpc3QsICpuZXh0KSk7Ci0gICAgcmV0dXJuIG5leHQ7Ci19Ci0K
LWlubGluZSBib29sIEhUTUxDb2xsZWN0aW9uOjp1c2VzQ3VzdG9tRm9yd2FyZE9ubHlUcmF2ZXJz
YWwoKSBjb25zdAotewotICAgIHJldHVybiBtX3VzZXNDdXN0b21Gb3J3YXJkT25seVRyYXZlcnNh
bDsKLX0KLQotaW5saW5lIEVsZW1lbnQqIEhUTUxDb2xsZWN0aW9uOjpmaXJzdEVsZW1lbnQoQ29u
dGFpbmVyTm9kZSYgcm9vdCkgY29uc3QKLXsKLSAgICBpZiAodXNlc0N1c3RvbUZvcndhcmRPbmx5
VHJhdmVyc2FsKCkpCi0gICAgICAgIHJldHVybiBjdXN0b21FbGVtZW50QWZ0ZXIobnVsbHB0cik7
Ci0gICAgaWYgKG1fc2hvdWxkT25seUluY2x1ZGVEaXJlY3RDaGlsZHJlbikKLSAgICAgICAgcmV0
dXJuIGZpcnN0TWF0Y2hpbmdDaGlsZEVsZW1lbnQoKnRoaXMsIHJvb3QpOwotICAgIHJldHVybiBm
aXJzdE1hdGNoaW5nRWxlbWVudCgqdGhpcywgcm9vdCk7Ci19Ci0KLWlubGluZSBFbGVtZW50KiBI
VE1MQ29sbGVjdGlvbjo6dHJhdmVyc2VGb3J3YXJkKEVsZW1lbnQmIGN1cnJlbnQsIHVuc2lnbmVk
IGNvdW50LCB1bnNpZ25lZCYgdHJhdmVyc2VkQ291bnQsIENvbnRhaW5lck5vZGUmIHJvb3QpIGNv
bnN0Ci17Ci0gICAgRWxlbWVudCogZWxlbWVudCA9ICZjdXJyZW50OwotICAgIGlmICh1c2VzQ3Vz
dG9tRm9yd2FyZE9ubHlUcmF2ZXJzYWwoKSkgewotICAgICAgICBmb3IgKHRyYXZlcnNlZENvdW50
ID0gMDsgdHJhdmVyc2VkQ291bnQgPCBjb3VudDsgKyt0cmF2ZXJzZWRDb3VudCkgewotICAgICAg
ICAgICAgZWxlbWVudCA9IGN1c3RvbUVsZW1lbnRBZnRlcihlbGVtZW50KTsKLSAgICAgICAgICAg
IGlmICghZWxlbWVudCkKLSAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAg
fQotICAgIH0gZWxzZSBpZiAobV9zaG91bGRPbmx5SW5jbHVkZURpcmVjdENoaWxkcmVuKSB7Ci0g
ICAgICAgIGZvciAodHJhdmVyc2VkQ291bnQgPSAwOyB0cmF2ZXJzZWRDb3VudCA8IGNvdW50OyAr
K3RyYXZlcnNlZENvdW50KSB7Ci0gICAgICAgICAgICBlbGVtZW50ID0gbmV4dE1hdGNoaW5nU2li
bGluZ0VsZW1lbnQoKnRoaXMsICplbGVtZW50KTsKLSAgICAgICAgICAgIGlmICghZWxlbWVudCkK
LSAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgfQotICAgIH0gZWxzZSB7
Ci0gICAgICAgIGZvciAodHJhdmVyc2VkQ291bnQgPSAwOyB0cmF2ZXJzZWRDb3VudCA8IGNvdW50
OyArK3RyYXZlcnNlZENvdW50KSB7Ci0gICAgICAgICAgICBlbGVtZW50ID0gbmV4dE1hdGNoaW5n
RWxlbWVudCgqdGhpcywgKmVsZW1lbnQsIHJvb3QpOwotICAgICAgICAgICAgaWYgKCFlbGVtZW50
KQotICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICB9Ci0gICAgfQotICAg
IHJldHVybiBlbGVtZW50OwotfQotCi1FbGVtZW50KiBIVE1MQ29sbGVjdGlvbjo6Y29sbGVjdGlv
bkJlZ2luKCkgY29uc3QKLXsKLSAgICByZXR1cm4gZmlyc3RFbGVtZW50KHJvb3ROb2RlKCkpOwot
fQotCi1FbGVtZW50KiBIVE1MQ29sbGVjdGlvbjo6Y29sbGVjdGlvbkxhc3QoKSBjb25zdAotewot
ICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBvcHRpbWl6ZWQgc2ltaWxhcmx5IHRvIHRoZSBm
b3J3YXJkIGNhc2UuCi0gICAgYXV0byYgcm9vdCA9IHJvb3ROb2RlKCk7Ci0gICAgRWxlbWVudCog
bGFzdCA9IG1fc2hvdWxkT25seUluY2x1ZGVEaXJlY3RDaGlsZHJlbiA/IEVsZW1lbnRUcmF2ZXJz
YWw6Omxhc3RDaGlsZChyb290KSA6IEVsZW1lbnRUcmF2ZXJzYWw6Omxhc3RXaXRoaW4ocm9vdCk7
Ci0gICAgcmV0dXJuIGl0ZXJhdGVGb3JQcmV2aW91c0VsZW1lbnQobGFzdCk7Ci19Ci0KLXZvaWQg
SFRNTENvbGxlY3Rpb246OmNvbGxlY3Rpb25UcmF2ZXJzZUZvcndhcmQoRWxlbWVudComIGN1cnJl
bnQsIHVuc2lnbmVkIGNvdW50LCB1bnNpZ25lZCYgdHJhdmVyc2VkQ291bnQpIGNvbnN0Ci17Ci0g
ICAgY3VycmVudCA9IHRyYXZlcnNlRm9yd2FyZCgqY3VycmVudCwgY291bnQsIHRyYXZlcnNlZENv
dW50LCByb290Tm9kZSgpKTsKLX0KLQotdm9pZCBIVE1MQ29sbGVjdGlvbjo6Y29sbGVjdGlvblRy
YXZlcnNlQmFja3dhcmQoRWxlbWVudComIGN1cnJlbnQsIHVuc2lnbmVkIGNvdW50KSBjb25zdAot
ewotICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBvcHRpbWl6ZWQgc2ltaWxhcmx5IHRvIHRo
ZSBmb3J3YXJkIGNhc2UuCi0gICAgaWYgKG1fc2hvdWxkT25seUluY2x1ZGVEaXJlY3RDaGlsZHJl
bikgewotICAgICAgICBmb3IgKDsgY291bnQgJiYgY3VycmVudDsgLS1jb3VudCkKLSAgICAgICAg
ICAgIGN1cnJlbnQgPSBpdGVyYXRlRm9yUHJldmlvdXNFbGVtZW50KEVsZW1lbnRUcmF2ZXJzYWw6
OnByZXZpb3VzU2libGluZygqY3VycmVudCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAg
IGF1dG8mIHJvb3QgPSByb290Tm9kZSgpOwotICAgIGZvciAoOyBjb3VudCAmJiBjdXJyZW50OyAt
LWNvdW50KQotICAgICAgICBjdXJyZW50ID0gaXRlcmF0ZUZvclByZXZpb3VzRWxlbWVudChFbGVt
ZW50VHJhdmVyc2FsOjpwcmV2aW91cygqY3VycmVudCwgJnJvb3QpKTsKLX0KLQotdm9pZCBIVE1M
Q29sbGVjdGlvbjo6aW52YWxpZGF0ZUNhY2hlKERvY3VtZW50JiBkb2N1bWVudCkgY29uc3QKLXsK
LSAgICBpZiAobV9pbmRleENhY2hlLmhhc1ZhbGlkQ2FjaGUoKnRoaXMpKSB7Ci0gICAgICAgIGRv
Y3VtZW50LnVucmVnaXN0ZXJDb2xsZWN0aW9uKGNvbnN0X2Nhc3Q8SFRNTENvbGxlY3Rpb24mPigq
dGhpcykpOwotICAgICAgICBtX2luZGV4Q2FjaGUuaW52YWxpZGF0ZSgqdGhpcyk7Ci0gICAgfQog
ICAgIGlmIChoYXNOYW1lZEVsZW1lbnRDYWNoZSgpKQogICAgICAgICBpbnZhbGlkYXRlTmFtZWRF
bGVtZW50Q2FjaGUoZG9jdW1lbnQpOwogfQpAQCAtNDAwLDM4ICsxMzMsNiBAQCB2b2lkIEhUTUxD
b2xsZWN0aW9uOjppbnZhbGlkYXRlTmFtZWRFbGVtZW50Q2FjaGUoRG9jdW1lbnQmIGRvY3VtZW50
KSBjb25zdAogCiBFbGVtZW50KiBIVE1MQ29sbGVjdGlvbjo6bmFtZWRJdGVtKGNvbnN0IEF0b21p
Y1N0cmluZyYgbmFtZSkgY29uc3QKIHsKLSAgICAvLyBodHRwOi8vbXNkbi5taWNyb3NvZnQuY29t
L3dvcmtzaG9wL2F1dGhvci9kaHRtbC9yZWZlcmVuY2UvbWV0aG9kcy9uYW1lZGl0ZW0uYXNwCi0g
ICAgLy8gVGhpcyBtZXRob2QgZmlyc3Qgc2VhcmNoZXMgZm9yIGFuIG9iamVjdCB3aXRoIGEgbWF0
Y2hpbmcgaWQKLSAgICAvLyBhdHRyaWJ1dGUuIElmIGEgbWF0Y2ggaXMgbm90IGZvdW5kLCB0aGUg
bWV0aG9kIHRoZW4gc2VhcmNoZXMgZm9yIGFuCi0gICAgLy8gb2JqZWN0IHdpdGggYSBtYXRjaGlu
ZyBuYW1lIGF0dHJpYnV0ZSwgYnV0IG9ubHkgb24gdGhvc2UgZWxlbWVudHMKLSAgICAvLyB0aGF0
IGFyZSBhbGxvd2VkIGEgbmFtZSBhdHRyaWJ1dGUuCi0KLSAgICBpZiAobmFtZS5pc0VtcHR5KCkp
Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgQ29udGFpbmVyTm9kZSYgcm9vdCA9IHJv
b3ROb2RlKCk7Ci0gICAgaWYgKCF1c2VzQ3VzdG9tRm9yd2FyZE9ubHlUcmF2ZXJzYWwoKSAmJiBy
b290LmlzSW5UcmVlU2NvcGUoKSkgewotICAgICAgICBFbGVtZW50KiBjYW5kaWRhdGUgPSBudWxs
cHRyOwotCi0gICAgICAgIFRyZWVTY29wZSYgdHJlZVNjb3BlID0gcm9vdC50cmVlU2NvcGUoKTsK
LSAgICAgICAgaWYgKHRyZWVTY29wZS5oYXNFbGVtZW50V2l0aElkKCpuYW1lLmltcGwoKSkpIHsK
LSAgICAgICAgICAgIGlmICghdHJlZVNjb3BlLmNvbnRhaW5zTXVsdGlwbGVFbGVtZW50c1dpdGhJ
ZChuYW1lKSkKLSAgICAgICAgICAgICAgICBjYW5kaWRhdGUgPSB0cmVlU2NvcGUuZ2V0RWxlbWVu
dEJ5SWQobmFtZSk7Ci0gICAgICAgIH0gZWxzZSBpZiAodHJlZVNjb3BlLmhhc0VsZW1lbnRXaXRo
TmFtZSgqbmFtZS5pbXBsKCkpKSB7Ci0gICAgICAgICAgICBpZiAoIXRyZWVTY29wZS5jb250YWlu
c011bHRpcGxlRWxlbWVudHNXaXRoTmFtZShuYW1lKSkgewotICAgICAgICAgICAgICAgIGNhbmRp
ZGF0ZSA9IHRyZWVTY29wZS5nZXRFbGVtZW50QnlOYW1lKG5hbWUpOwotICAgICAgICAgICAgICAg
IGlmIChjYW5kaWRhdGUgJiYgdHlwZSgpID09IERvY0FsbCAmJiAhbmFtZVNob3VsZEJlVmlzaWJs
ZUluRG9jdW1lbnRBbGwoKmNhbmRpZGF0ZSkpCi0gICAgICAgICAgICAgICAgICAgIGNhbmRpZGF0
ZSA9IG51bGxwdHI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0KLSAgICAgICAgaWYgKGNhbmRpZGF0ZSAmJiBpc01hdGNoaW5nRWxl
bWVudCgqdGhpcywgKmNhbmRpZGF0ZSkpIHsKLSAgICAgICAgICAgIGlmIChtX3Nob3VsZE9ubHlJ
bmNsdWRlRGlyZWN0Q2hpbGRyZW4gPyBjYW5kaWRhdGUtPnBhcmVudE5vZGUoKSA9PSAmcm9vdCA6
IGNhbmRpZGF0ZS0+aXNEZXNjZW5kYW50T2YoJnJvb3QpKQotICAgICAgICAgICAgICAgIHJldHVy
biBjYW5kaWRhdGU7Ci0gICAgICAgIH0KLSAgICB9Ci0KICAgICAvLyBUaGUgcGF0aG9sb2dpY2Fs
IGNhc2UuIFdlIG5lZWQgdG8gd2FsayB0aGUgZW50aXJlIHN1YnRyZWUuCiAgICAgdXBkYXRlTmFt
ZWRFbGVtZW50Q2FjaGUoKTsKICAgICBBU1NFUlQobV9uYW1lZEVsZW1lbnRDYWNoZSk7CkBAIC00
NTYsOSArMTU3LDkgQEAgdm9pZCBIVE1MQ29sbGVjdGlvbjo6dXBkYXRlTmFtZWRFbGVtZW50Q2Fj
aGUoKSBjb25zdAogCiAgICAgYXV0byBjYWNoZSA9IHN0ZDo6bWFrZV91bmlxdWU8Q29sbGVjdGlv
bk5hbWVkRWxlbWVudENhY2hlPigpOwogCi0gICAgdW5zaWduZWQgc2l6ZSA9IG1faW5kZXhDYWNo
ZS5ub2RlQ291bnQoKnRoaXMpOworICAgIHVuc2lnbmVkIHNpemUgPSBsZW5ndGgoKTsKICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7Ci0gICAgICAgIEVsZW1lbnQmIGVs
ZW1lbnQgPSAqbV9pbmRleENhY2hlLm5vZGVBdCgqdGhpcywgaSk7CisgICAgICAgIEVsZW1lbnQm
IGVsZW1lbnQgPSAqaXRlbShpKTsKICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBpZCA9IGVs
ZW1lbnQuZ2V0SWRBdHRyaWJ1dGUoKTsKICAgICAgICAgaWYgKCFpZC5pc0VtcHR5KCkpCiAgICAg
ICAgICAgICBjYWNoZS0+YXBwZW5kVG9JZENhY2hlKGlkLCBlbGVtZW50KTsKQEAgLTUxMywxMCAr
MjE0LDQgQEAgUGFzc1JlZlB0cjxOb2RlTGlzdD4gSFRNTENvbGxlY3Rpb246OnRhZ3MoY29uc3Qg
U3RyaW5nJiBuYW1lKQogICAgIHJldHVybiBvd25lck5vZGUoKS5nZXRFbGVtZW50c0J5VGFnTmFt
ZShuYW1lKTsKIH0KIAotRWxlbWVudCogSFRNTENvbGxlY3Rpb246OmN1c3RvbUVsZW1lbnRBZnRl
cihFbGVtZW50KikgY29uc3QKLXsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1
cm4gbnVsbHB0cjsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQ29sbGVjdGlvbi5oCmluZGV4IDQ3MTRlOTA4ZGRiNWQ5Yjg4OWMzYjZjZTY1N2ExNDBkN2Ez
YzU5ZTIuLmU2ZDhjZTYyNDdlNTNhNzAwNzdkYjY0YjY2ODAyNTViMjFhNjM1ZjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmgKQEAgLTYwLDU3ICs2MCwzOCBAQCBwcml2YXRlOgog
CiBjbGFzcyBIVE1MQ29sbGVjdGlvbiA6IHB1YmxpYyBTY3JpcHRXcmFwcGFibGUsIHB1YmxpYyBS
ZWZDb3VudGVkPEhUTUxDb2xsZWN0aW9uPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxIVE1M
Q29sbGVjdGlvbj4gY3JlYXRlKENvbnRhaW5lck5vZGUmIGJhc2UsIENvbGxlY3Rpb25UeXBlKTsK
ICAgICB2aXJ0dWFsIH5IVE1MQ29sbGVjdGlvbigpOwogCiAgICAgLy8gRE9NIEFQSQotICAgIHVu
c2lnbmVkIGxlbmd0aCgpIGNvbnN0OwotICAgIEVsZW1lbnQqIGl0ZW0odW5zaWduZWQgb2Zmc2V0
KSBjb25zdDsKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0ID0gMDsKKyAgICB2
aXJ0dWFsIEVsZW1lbnQqIGl0ZW0odW5zaWduZWQgb2Zmc2V0KSBjb25zdCA9IDA7CiAgICAgdmly
dHVhbCBFbGVtZW50KiBuYW1lZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKSBjb25zdDsK
ICAgICBQYXNzUmVmUHRyPE5vZGVMaXN0PiB0YWdzKGNvbnN0IFN0cmluZyYpOwogCiAgICAgLy8g
Tm9uLURPTSBBUEkKICAgICBib29sIGhhc05hbWVkSXRlbShjb25zdCBBdG9taWNTdHJpbmcmIG5h
bWUpIGNvbnN0OwogICAgIFZlY3RvcjxSZWY8RWxlbWVudD4+IG5hbWVkSXRlbXMoY29uc3QgQXRv
bWljU3RyaW5nJiBuYW1lKSBjb25zdDsKLSAgICBzaXplX3QgbWVtb3J5Q29zdCgpIGNvbnN0Owor
ICAgIHZpcnR1YWwgc2l6ZV90IG1lbW9yeUNvc3QoKSBjb25zdDsKIAogICAgIGJvb2wgaXNSb290
ZWRBdERvY3VtZW50KCkgY29uc3Q7CiAgICAgTm9kZUxpc3RJbnZhbGlkYXRpb25UeXBlIGludmFs
aWRhdGlvblR5cGUoKSBjb25zdDsKICAgICBDb2xsZWN0aW9uVHlwZSB0eXBlKCkgY29uc3Q7CiAg
ICAgQ29udGFpbmVyTm9kZSYgb3duZXJOb2RlKCkgY29uc3Q7Ci0gICAgdm9pZCBpbnZhbGlkYXRl
Q2FjaGUoY29uc3QgUXVhbGlmaWVkTmFtZSogYXR0cmlidXRlTmFtZSkgY29uc3Q7Ci0gICAgdmly
dHVhbCB2b2lkIGludmFsaWRhdGVDYWNoZShEb2N1bWVudCYpIGNvbnN0OwotCi0gICAgLy8gRm9y
IENvbGxlY3Rpb25JbmRleENhY2hlOyBkbyBub3QgdXNlIGVsc2V3aGVyZS4KLSAgICBFbGVtZW50
KiBjb2xsZWN0aW9uQmVnaW4oKSBjb25zdDsKLSAgICBFbGVtZW50KiBjb2xsZWN0aW9uTGFzdCgp
IGNvbnN0OwotICAgIEVsZW1lbnQqIGNvbGxlY3Rpb25FbmQoKSBjb25zdDsKLSAgICB2b2lkIGNv
bGxlY3Rpb25UcmF2ZXJzZUZvcndhcmQoRWxlbWVudComLCB1bnNpZ25lZCBjb3VudCwgdW5zaWdu
ZWQmIHRyYXZlcnNlZENvdW50KSBjb25zdDsKLSAgICB2b2lkIGNvbGxlY3Rpb25UcmF2ZXJzZUJh
Y2t3YXJkKEVsZW1lbnQqJiwgdW5zaWduZWQgY291bnQpIGNvbnN0OwotICAgIGJvb2wgY29sbGVj
dGlvbkNhblRyYXZlcnNlQmFja3dhcmQoKSBjb25zdDsKLSAgICB2b2lkIHdpbGxWYWxpZGF0ZUlu
ZGV4Q2FjaGUoKSBjb25zdDsKKyAgICB2b2lkIGludmFsaWRhdGVDYWNoZShjb25zdCBRdWFsaWZp
ZWROYW1lKiBhdHRyaWJ1dGVOYW1lKTsKKyAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZUNhY2hl
KERvY3VtZW50Jik7CiAKICAgICBib29sIGhhc05hbWVkRWxlbWVudENhY2hlKCkgY29uc3Q7CiAK
IHByb3RlY3RlZDoKLSAgICBlbnVtIEVsZW1lbnRUcmF2ZXJzYWxUeXBlIHsgTm9ybWFsVHJhdmVy
c2FsLCBDdXN0b21Gb3J3YXJkT25seVRyYXZlcnNhbCB9OwotICAgIEhUTUxDb2xsZWN0aW9uKENv
bnRhaW5lck5vZGUmIGJhc2UsIENvbGxlY3Rpb25UeXBlLCBFbGVtZW50VHJhdmVyc2FsVHlwZSA9
IE5vcm1hbFRyYXZlcnNhbCk7CisgICAgSFRNTENvbGxlY3Rpb24oQ29udGFpbmVyTm9kZSYgYmFz
ZSwgQ29sbGVjdGlvblR5cGUpOwogCiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZU5hbWVkRWxlbWVu
dENhY2hlKCkgY29uc3Q7CiAKICAgICB2b2lkIHNldE5hbWVkSXRlbUNhY2hlKHN0ZDo6dW5pcXVl
X3B0cjxDb2xsZWN0aW9uTmFtZWRFbGVtZW50Q2FjaGU+KSBjb25zdDsKICAgICBjb25zdCBDb2xs
ZWN0aW9uTmFtZWRFbGVtZW50Q2FjaGUmIG5hbWVkSXRlbUNhY2hlcygpIGNvbnN0OwogCi1wcml2
YXRlOgogICAgIERvY3VtZW50JiBkb2N1bWVudCgpIGNvbnN0OwogICAgIENvbnRhaW5lck5vZGUm
IHJvb3ROb2RlKCkgY29uc3Q7Ci0gICAgYm9vbCB1c2VzQ3VzdG9tRm9yd2FyZE9ubHlUcmF2ZXJz
YWwoKSBjb25zdDsKLQotICAgIEVsZW1lbnQqIGl0ZXJhdGVGb3JQcmV2aW91c0VsZW1lbnQoRWxl
bWVudCopIGNvbnN0OwotICAgIEVsZW1lbnQqIGZpcnN0RWxlbWVudChDb250YWluZXJOb2RlJiBy
b290KSBjb25zdDsKLSAgICBFbGVtZW50KiB0cmF2ZXJzZUZvcndhcmQoRWxlbWVudCYsIHVuc2ln
bmVkIGNvdW50LCB1bnNpZ25lZCYgdHJhdmVyc2VkQ291bnQsIENvbnRhaW5lck5vZGUmIHJvb3Qp
IGNvbnN0OwotCi0gICAgdmlydHVhbCBFbGVtZW50KiBjdXN0b21FbGVtZW50QWZ0ZXIoRWxlbWVu
dCopIGNvbnN0OwogCiAgICAgdm9pZCBpbnZhbGlkYXRlTmFtZWRFbGVtZW50Q2FjaGUoRG9jdW1l
bnQmKSBjb25zdDsKIApAQCAtMTE5LDE2ICsxMDAsMjEgQEAgcHJpdmF0ZToKIAogICAgIFJlZjxD
b250YWluZXJOb2RlPiBtX293bmVyTm9kZTsKIAotICAgIG11dGFibGUgQ29sbGVjdGlvbkluZGV4
Q2FjaGU8SFRNTENvbGxlY3Rpb24sIEVsZW1lbnQqPiBtX2luZGV4Q2FjaGU7CiAgICAgbXV0YWJs
ZSBzdGQ6OnVuaXF1ZV9wdHI8Q29sbGVjdGlvbk5hbWVkRWxlbWVudENhY2hlPiBtX25hbWVkRWxl
bWVudENhY2hlOwogCiAgICAgY29uc3QgdW5zaWduZWQgbV9jb2xsZWN0aW9uVHlwZSA6IDU7CiAg
ICAgY29uc3QgdW5zaWduZWQgbV9pbnZhbGlkYXRpb25UeXBlIDogNDsKICAgICBjb25zdCB1bnNp
Z25lZCBtX3Jvb3RUeXBlIDogMTsKLSAgICBjb25zdCB1bnNpZ25lZCBtX3Nob3VsZE9ubHlJbmNs
dWRlRGlyZWN0Q2hpbGRyZW4gOiAxOwotICAgIGNvbnN0IHVuc2lnbmVkIG1fdXNlc0N1c3RvbUZv
cndhcmRPbmx5VHJhdmVyc2FsIDogMTsKIH07CiAKK2lubGluZSBDb250YWluZXJOb2RlJiBIVE1M
Q29sbGVjdGlvbjo6cm9vdE5vZGUoKSBjb25zdAoreworICAgIGlmIChpc1Jvb3RlZEF0RG9jdW1l
bnQoKSAmJiBvd25lck5vZGUoKS5pbkRvY3VtZW50KCkpCisgICAgICAgIHJldHVybiBvd25lck5v
ZGUoKS5kb2N1bWVudCgpOworCisgICAgcmV0dXJuIG93bmVyTm9kZSgpOworfQorCiBpbmxpbmUg
Y29uc3QgVmVjdG9yPEVsZW1lbnQqPiogQ29sbGVjdGlvbk5hbWVkRWxlbWVudENhY2hlOjpmaW5k
RWxlbWVudHNXaXRoSWQoY29uc3QgQXRvbWljU3RyaW5nJiBpZCkgY29uc3QKIHsKICAgICByZXR1
cm4gZmluZChtX2lkTWFwLCBpZCk7CkBAIC0xNzcsNyArMTYzLDcgQEAgaW5saW5lIHZvaWQgQ29s
bGVjdGlvbk5hbWVkRWxlbWVudENhY2hlOjphcHBlbmQoU3RyaW5nVG9FbGVtZW50c01hcCYgbWFw
LCBjb25zdAogCiBpbmxpbmUgc2l6ZV90IEhUTUxDb2xsZWN0aW9uOjptZW1vcnlDb3N0KCkgY29u
c3QKIHsKLSAgICByZXR1cm4gbV9pbmRleENhY2hlLm1lbW9yeUNvc3QoKSArIChtX25hbWVkRWxl
bWVudENhY2hlID8gbV9uYW1lZEVsZW1lbnRDYWNoZS0+bWVtb3J5Q29zdCgpIDogMCk7CisgICAg
cmV0dXJuIG1fbmFtZWRFbGVtZW50Q2FjaGUgPyBtX25hbWVkRWxlbWVudENhY2hlLT5tZW1vcnlD
b3N0KCkgOiAwOwogfQogCiBpbmxpbmUgYm9vbCBIVE1MQ29sbGVjdGlvbjo6aXNSb290ZWRBdERv
Y3VtZW50KCkgY29uc3QKQEAgLTIwNSw3ICsxOTEsNyBAQCBpbmxpbmUgRG9jdW1lbnQmIEhUTUxD
b2xsZWN0aW9uOjpkb2N1bWVudCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fb3duZXJOb2RlLT5kb2N1
bWVudCgpOwogfQogCi1pbmxpbmUgdm9pZCBIVE1MQ29sbGVjdGlvbjo6aW52YWxpZGF0ZUNhY2hl
KGNvbnN0IFF1YWxpZmllZE5hbWUqIGF0dHJpYnV0ZU5hbWUpIGNvbnN0CitpbmxpbmUgdm9pZCBI
VE1MQ29sbGVjdGlvbjo6aW52YWxpZGF0ZUNhY2hlKGNvbnN0IFF1YWxpZmllZE5hbWUqIGF0dHJp
YnV0ZU5hbWUpCiB7CiAgICAgaWYgKCFhdHRyaWJ1dGVOYW1lIHx8IHNob3VsZEludmFsaWRhdGVU
eXBlT25BdHRyaWJ1dGVDaGFuZ2UoaW52YWxpZGF0aW9uVHlwZSgpLCAqYXR0cmlidXRlTmFtZSkp
CiAgICAgICAgIGludmFsaWRhdGVDYWNoZShkb2N1bWVudCgpKTsKQEAgLTIxMywyMSArMTk5LDYg
QEAgaW5saW5lIHZvaWQgSFRNTENvbGxlY3Rpb246OmludmFsaWRhdGVDYWNoZShjb25zdCBRdWFs
aWZpZWROYW1lKiBhdHRyaWJ1dGVOYW1lKQogICAgICAgICBpbnZhbGlkYXRlTmFtZWRFbGVtZW50
Q2FjaGUoZG9jdW1lbnQoKSk7CiB9CiAKLWlubGluZSBFbGVtZW50KiBIVE1MQ29sbGVjdGlvbjo6
Y29sbGVjdGlvbkVuZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KLWlubGlu
ZSBib29sIEhUTUxDb2xsZWN0aW9uOjpjb2xsZWN0aW9uQ2FuVHJhdmVyc2VCYWNrd2FyZCgpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuICFtX3VzZXNDdXN0b21Gb3J3YXJkT25seVRyYXZlcnNhbDsKLX0K
LQotaW5saW5lIHZvaWQgSFRNTENvbGxlY3Rpb246OndpbGxWYWxpZGF0ZUluZGV4Q2FjaGUoKSBj
b25zdAotewotICAgIGRvY3VtZW50KCkucmVnaXN0ZXJDb2xsZWN0aW9uKGNvbnN0X2Nhc3Q8SFRN
TENvbGxlY3Rpb24mPigqdGhpcykpOwotfQotCiBpbmxpbmUgYm9vbCBIVE1MQ29sbGVjdGlvbjo6
aGFzTmFtZWRFbGVtZW50Q2FjaGUoKSBjb25zdAogewogICAgIHJldHVybiAhIW1fbmFtZWRFbGVt
ZW50Q2FjaGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGaWVsZFNldEVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmNwcApp
bmRleCBhYzMzMmU4NzAyMjYxOGMyZTQ5M2I2OTc3YjA4M2Q1NWFiODZhZDdkLi40MDBhMGJhZTBl
ZDk0ZmUwNTNmZDYzNTcxYjQwYWFjOThmYmFjOGRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEZpZWxkU2V0RWxlbWVudC5jcHAKQEAgLTI2LDEwICsyNiwxMSBAQAogI2luY2x1ZGUgIkhU
TUxGaWVsZFNldEVsZW1lbnQuaCIKIAogI2luY2x1ZGUgIkVsZW1lbnRJdGVyYXRvci5oIgotI2lu
Y2x1ZGUgIkhUTUxDb2xsZWN0aW9uLmgiCisjaW5jbHVkZSAiSFRNTEZvcm1Db250cm9sc0NvbGxl
Y3Rpb24uaCIKICNpbmNsdWRlICJIVE1MTGVnZW5kRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxO
YW1lcy5oIgogI2luY2x1ZGUgIkhUTUxPYmplY3RFbGVtZW50LmgiCisjaW5jbHVkZSAiTm9kZVJh
cmVEYXRhLmgiCiAjaW5jbHVkZSAiUmVuZGVyRmllbGRzZXQuaCIKICNpbmNsdWRlIDx3dGYvU3Rk
TGliRXh0cmFzLmg+CiAKQEAgLTE2MSw3ICsxNjIsNyBAQCBIVE1MTGVnZW5kRWxlbWVudCogSFRN
TEZpZWxkU2V0RWxlbWVudDo6bGVnZW5kKCkgY29uc3QKIAogUmVmPEhUTUxDb2xsZWN0aW9uPiBI
VE1MRmllbGRTZXRFbGVtZW50OjplbGVtZW50cygpCiB7Ci0gICAgcmV0dXJuIGVuc3VyZUNhY2hl
ZEhUTUxDb2xsZWN0aW9uKEZvcm1Db250cm9scyk7CisgICAgcmV0dXJuIGVuc3VyZVJhcmVEYXRh
KCkuZW5zdXJlTm9kZUxpc3RzKCkuYWRkQ2FjaGVkQ29sbGVjdGlvbjxIVE1MRm9ybUNvbnRyb2xz
Q29sbGVjdGlvbj4oKnRoaXMsIEZvcm1Db250cm9scyk7CiB9CiAKIHZvaWQgSFRNTEZpZWxkU2V0
RWxlbWVudDo6cmVmcmVzaEVsZW1lbnRzSWZOZWVkZWQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmNwcAppbmRleCAwZGVlY2My
NGVjZDliNWMzN2IwYWMwOWMzMTc1MjczNDJiNzExZDg0Li4zODBlZWI2MDg1NGY0OTE3MzczOTE0
MzRkMjVhZTA3YjY1ZTgyMWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxG
b3JtQ29udHJvbHNDb2xsZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxG
b3JtQ29udHJvbHNDb2xsZWN0aW9uLmNwcApAQCAtMzYsNyArMzYsNyBAQCB1c2luZyBuYW1lc3Bh
Y2UgSFRNTE5hbWVzOwogLy8gY2FsY3VsYXRpb24gZXZlcnkgdGltZSBpZiBhbnl0aGluZyBoYXMg
Y2hhbmdlZC4KIAogSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246OkhUTUxGb3JtQ29udHJvbHND
b2xsZWN0aW9uKENvbnRhaW5lck5vZGUmIG93bmVyTm9kZSkKLSAgICA6IEhUTUxDb2xsZWN0aW9u
KG93bmVyTm9kZSwgRm9ybUNvbnRyb2xzLCBDdXN0b21Gb3J3YXJkT25seVRyYXZlcnNhbCkKKyAg
ICA6IEJhc2Uob3duZXJOb2RlLCBGb3JtQ29udHJvbHMpCiAgICAgLCBtX2NhY2hlZEVsZW1lbnQo
bnVsbHB0cikKICAgICAsIG1fY2FjaGVkRWxlbWVudE9mZnNldEluQXJyYXkoMCkKIHsKQEAgLTE3
Nyw5ICsxNzcsOSBAQCB2b2lkIEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uOjp1cGRhdGVOYW1l
ZEVsZW1lbnRDYWNoZSgpIGNvbnN0CiAgICAgc2V0TmFtZWRJdGVtQ2FjaGUoV1RGOjptb3ZlKGNh
Y2hlKSk7CiB9CiAKLXZvaWQgSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246OmludmFsaWRhdGVD
YWNoZShEb2N1bWVudCYgZG9jdW1lbnQpIGNvbnN0Cit2b2lkIEhUTUxGb3JtQ29udHJvbHNDb2xs
ZWN0aW9uOjppbnZhbGlkYXRlQ2FjaGUoRG9jdW1lbnQmIGRvY3VtZW50KQogewotICAgIEhUTUxD
b2xsZWN0aW9uOjppbnZhbGlkYXRlQ2FjaGUoZG9jdW1lbnQpOworICAgIEJhc2U6OmludmFsaWRh
dGVDYWNoZShkb2N1bWVudCk7CiAgICAgbV9jYWNoZWRFbGVtZW50ID0gbnVsbHB0cjsKICAgICBt
X2NhY2hlZEVsZW1lbnRPZmZzZXRJbkFycmF5ID0gMDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uaAppbmRleCBiMTY4YWQ5YzA2MDU0NDhh
OTk0OWQ0YThlMTVlNDQ2NWQ3ODViYjczLi41NDlmMDM2Y2I4OTc1Nzc1MDJkZWY4N2FkOWU5NGUw
OWJjMTRjNmY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJv
bHNDb2xsZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xz
Q29sbGVjdGlvbi5oCkBAIC0yMyw3ICsyMyw3IEBACiAjaWZuZGVmIEhUTUxGb3JtQ29udHJvbHND
b2xsZWN0aW9uX2gKICNkZWZpbmUgSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb25faAogCi0jaW5j
bHVkZSAiSFRNTENvbGxlY3Rpb24uaCIKKyNpbmNsdWRlICJDYWNoZWRIVE1MQ29sbGVjdGlvbi5o
IgogI2luY2x1ZGUgIkhUTUxFbGVtZW50LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM0
LDIxICszNCwyNCBAQCBjbGFzcyBIVE1MSW1hZ2VFbGVtZW50OwogLy8gVGhpcyBjbGFzcyBpcyBq
dXN0IGEgYmlnIGhhY2sgdG8gZmluZCBmb3JtIGVsZW1lbnRzIGV2ZW4gaW4gbWFsZm9ybWVkIEhU
TUwgZWxlbWVudHMuCiAvLyBUaGUgZmFtb3VzIDx0YWJsZT48dHI+PGZvcm0+PHRkPiBwcm9ibGVt
LgogCi1jbGFzcyBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbiBmaW5hbCA6IHB1YmxpYyBIVE1M
Q29sbGVjdGlvbiB7CitjbGFzcyBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbiBmaW5hbCA6IHB1
YmxpYyBDYWNoZWRIVE1MQ29sbGVjdGlvbjxIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbiwgQ29s
bGVjdGlvblR5cGVUcmFpdHM8Rm9ybUNvbnRyb2xzPjo6dHJhdmVyc2FsVHlwZT4gewogcHVibGlj
OgogICAgIHN0YXRpYyBSZWY8SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24+IGNyZWF0ZShDb250
YWluZXJOb2RlJiwgQ29sbGVjdGlvblR5cGUpOwogICAgIHZpcnR1YWwgfkhUTUxGb3JtQ29udHJv
bHNDb2xsZWN0aW9uKCk7CiAKKyAgICAvLyBGb3IgQ2FjaGVkSFRNTENvbGxlY3Rpb24uCisgICAg
RWxlbWVudCogY3VzdG9tRWxlbWVudEFmdGVyKEVsZW1lbnQqKSBjb25zdDsKKwogcHJpdmF0ZToK
KyAgICB1c2luZyBCYXNlID0gQ2FjaGVkSFRNTENvbGxlY3Rpb248SFRNTEZvcm1Db250cm9sc0Nv
bGxlY3Rpb24sIENvbGxlY3Rpb25UeXBlVHJhaXRzPEZvcm1Db250cm9scz46OnRyYXZlcnNhbFR5
cGU+OwogICAgIGV4cGxpY2l0IEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uKENvbnRhaW5lck5v
ZGUmKTsKIAogICAgIHZpcnR1YWwgSFRNTEVsZW1lbnQqIG5hbWVkSXRlbShjb25zdCBBdG9taWNT
dHJpbmcmIG5hbWUpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRl
Q2FjaGUoRG9jdW1lbnQmKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgaW52YWxp
ZGF0ZUNhY2hlKERvY3VtZW50Jikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZU5h
bWVkRWxlbWVudENhY2hlKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBjb25zdCBWZWN0b3I8Rm9y
bUFzc29jaWF0ZWRFbGVtZW50Kj4mIGZvcm1Db250cm9sRWxlbWVudHMoKSBjb25zdDsKICAgICBj
b25zdCBWZWN0b3I8SFRNTEltYWdlRWxlbWVudCo+JiBmb3JtSW1hZ2VFbGVtZW50cygpIGNvbnN0
OwotICAgIHZpcnR1YWwgRWxlbWVudCogY3VzdG9tRWxlbWVudEFmdGVyKEVsZW1lbnQqKSBjb25z
dCBvdmVycmlkZTsKIAogICAgIG11dGFibGUgRWxlbWVudCogbV9jYWNoZWRFbGVtZW50OwogICAg
IG11dGFibGUgdW5zaWduZWQgbV9jYWNoZWRFbGVtZW50T2Zmc2V0SW5BcnJheTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcAppbmRleCA1ZmZhM2E4YTcxOTk3ODdmN2RmN2Rm
MWY4MDlhNjhhZTY0M2QwMWVkLi4wNTQyNzlmZjFlZjVhOGMzYjE4MGE0YjgwZDIwZmJjOWViZmFl
MTgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCkBAIC0zNywxMSAr
MzcsMTIgQEAKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAj
aW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKLSNpbmNsdWRlICJIVE1MQ29sbGVjdGlvbi5o
IgorI2luY2x1ZGUgIkhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiSFRN
TEltYWdlRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKICNpbmNsdWRl
ICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJIVE1MVGFibGVFbGVtZW50LmgiCisjaW5jbHVkZSAi
Tm9kZVJhcmVEYXRhLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlJlbmRlclRleHRD
b250cm9sLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgpAQCAtNjM4LDcgKzYzOSw3
IEBAIHZvaWQgSFRNTEZvcm1FbGVtZW50OjpyZW1vdmVJbWdFbGVtZW50KEhUTUxJbWFnZUVsZW1l
bnQqIGUpCiAKIFJlZjxIVE1MQ29sbGVjdGlvbj4gSFRNTEZvcm1FbGVtZW50OjplbGVtZW50cygp
CiB7Ci0gICAgcmV0dXJuIGVuc3VyZUNhY2hlZEhUTUxDb2xsZWN0aW9uKEZvcm1Db250cm9scyk7
CisgICAgcmV0dXJuIGVuc3VyZVJhcmVEYXRhKCkuZW5zdXJlTm9kZUxpc3RzKCkuYWRkQ2FjaGVk
Q29sbGVjdGlvbjxIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbj4oKnRoaXMsIEZvcm1Db250cm9s
cyk7CiB9CiAKIFN0cmluZyBIVE1MRm9ybUVsZW1lbnQ6Om5hbWUoKSBjb25zdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWFwRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNYXBFbGVtZW50LmNwcAppbmRleCBhM2M5YzMzOTIzYTcwZmM4ZWI5NmQzZTMw
ZGEwYzQzYmU3YWEwMjBiLi4zZWU2MWJhYTAwMWUyMzRhNGIzM2Y3ZDE1OGJjNjg2OTkyYzQ2Y2Y4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNYXBFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNYXBFbGVtZW50LmNwcApAQCAtMjUsMTEgKzI1LDEy
IEBACiAjaW5jbHVkZSAiQXR0cmlidXRlLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNs
dWRlICJFbGVtZW50SXRlcmF0b3IuaCIKKyNpbmNsdWRlICJHZW5lcmljQ2FjaGVkSFRNTENvbGxl
Y3Rpb24uaCIKICNpbmNsdWRlICJIVE1MQXJlYUVsZW1lbnQuaCIKLSNpbmNsdWRlICJIVE1MQ29s
bGVjdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxJbWFnZUVsZW1lbnQuaCIKICNpbmNsdWRlICJIaXRU
ZXN0UmVzdWx0LmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgorI2luY2x1ZGUgIk5vZGVSYXJlRGF0
YS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTExMiw3ICsxMTMsNyBAQCB2b2lkIEhU
TUxNYXBFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBj
b25zdCBBdG9taWNTdHJpbgogCiBSZWY8SFRNTENvbGxlY3Rpb24+IEhUTUxNYXBFbGVtZW50Ojph
cmVhcygpCiB7Ci0gICAgcmV0dXJuIGVuc3VyZUNhY2hlZEhUTUxDb2xsZWN0aW9uKE1hcEFyZWFz
KTsKKyAgICByZXR1cm4gZW5zdXJlUmFyZURhdGEoKS5lbnN1cmVOb2RlTGlzdHMoKS5hZGRDYWNo
ZWRDb2xsZWN0aW9uPEdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbjxDb2xsZWN0aW9uVHlwZVRy
YWl0czxNYXBBcmVhcz46OnRyYXZlcnNhbFR5cGU+PigqdGhpcywgTWFwQXJlYXMpOwogfQogCiBO
b2RlOjpJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IEhUTUxNYXBFbGVtZW50OjppbnNlcnRl
ZEludG8oQ29udGFpbmVyTm9kZSYgaW5zZXJ0aW9uUG9pbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxOYW1lQ29sbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxOYW1lQ29sbGVjdGlvbi5jcHAKaW5kZXggMzdmNThjMTRlMWNkYzVkNjFjMjM1NTJhZmU2
MTY2ODBlOWZmOTg1My4uMzI5NzQ5YmJiMGQzMGY5MGM3NDU4NzRkMDE1YTM3NDU1MjMzMzVmNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTmFtZUNvbGxlY3Rpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE5hbWVDb2xsZWN0aW9uLmNwcApAQCAtMzYsMTkg
KzM2LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVz
OwogCi1IVE1MTmFtZUNvbGxlY3Rpb246OkhUTUxOYW1lQ29sbGVjdGlvbihEb2N1bWVudCYgZG9j
dW1lbnQsIENvbGxlY3Rpb25UeXBlIHR5cGUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkKLSAg
ICA6IEhUTUxDb2xsZWN0aW9uKGRvY3VtZW50LCB0eXBlKQotICAgICwgbV9uYW1lKG5hbWUpCi17
Ci19Ci0KLUhUTUxOYW1lQ29sbGVjdGlvbjo6fkhUTUxOYW1lQ29sbGVjdGlvbigpCi17Ci0gICAg
QVNTRVJUKHR5cGUoKSA9PSBXaW5kb3dOYW1lZEl0ZW1zIHx8IHR5cGUoKSA9PSBEb2N1bWVudE5h
bWVkSXRlbXMpOwotCi0gICAgZG9jdW1lbnQoKS5ub2RlTGlzdHMoKS0+cmVtb3ZlQ2FjaGVkQ29s
bGVjdGlvbih0aGlzLCBtX25hbWUpOwotfQotCiBib29sIFdpbmRvd05hbWVDb2xsZWN0aW9uOjpl
bGVtZW50TWF0Y2hlc0lmTmFtZUF0dHJpYnV0ZU1hdGNoKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQp
CiB7CiAgICAgcmV0dXJuIGlzPEhUTUxJbWFnZUVsZW1lbnQ+KGVsZW1lbnQpIHx8IGlzPEhUTUxG
b3JtRWxlbWVudD4oZWxlbWVudCkgfHwgaXM8SFRNTEFwcGxldEVsZW1lbnQ+KGVsZW1lbnQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxOYW1lQ29sbGVjdGlvbi5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTmFtZUNvbGxlY3Rpb24uaAppbmRleCAzMjA3NDNkNWFhOWNm
YmI4MjE4NDU1OGQ4MjAxNzg5OGMwOGY3NzM3Li41NjNmZjhkYWU5OGU4Y2UyYzgzNDk3MDJkZGE1
ZGZlMjdlMjcxOGM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxOYW1lQ29s
bGVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE5hbWVDb2xsZWN0aW9uLmgK
QEAgLTIzLDMyICsyMyw1MiBAQAogI2lmbmRlZiBIVE1MTmFtZUNvbGxlY3Rpb25faAogI2RlZmlu
ZSBIVE1MTmFtZUNvbGxlY3Rpb25faAogCi0jaW5jbHVkZSAiSFRNTENvbGxlY3Rpb24uaCIKKyNp
bmNsdWRlICJDYWNoZWRIVE1MQ29sbGVjdGlvbi5oIgorI2luY2x1ZGUgIk5vZGVSYXJlRGF0YS5o
IgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIERvY3VtZW50OwogCi1jbGFzcyBIVE1MTmFtZUNvbGxlY3Rpb24gOiBwdWJs
aWMgSFRNTENvbGxlY3Rpb24gewordGVtcGxhdGUgPHR5cGVuYW1lIEhUTUxDb2xsZWN0aW9uQ2xh
c3MsIENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlIHRyYXZlcnNhbFR5cGU+CitjbGFzcyBIVE1MTmFt
ZUNvbGxlY3Rpb24gOiBwdWJsaWMgQ2FjaGVkSFRNTENvbGxlY3Rpb248SFRNTENvbGxlY3Rpb25D
bGFzcywgdHJhdmVyc2FsVHlwZT4gewogcHVibGljOgogICAgIHZpcnR1YWwgfkhUTUxOYW1lQ29s
bGVjdGlvbigpOwogCi0gICAgRG9jdW1lbnQmIGRvY3VtZW50KCkgeyByZXR1cm4gZG93bmNhc3Q8
RG9jdW1lbnQ+KG93bmVyTm9kZSgpKTsgfQotCiBwcm90ZWN0ZWQ6CiAgICAgSFRNTE5hbWVDb2xs
ZWN0aW9uKERvY3VtZW50JiwgQ29sbGVjdGlvblR5cGUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFt
ZSk7CiAKICAgICBBdG9taWNTdHJpbmcgbV9uYW1lOworCitwcml2YXRlOgorICAgIHVzaW5nIEJh
c2UgPSBDYWNoZWRIVE1MQ29sbGVjdGlvbjxIVE1MQ29sbGVjdGlvbkNsYXNzLCB0cmF2ZXJzYWxU
eXBlPjsKKyAgICBEb2N1bWVudCYgZG9jdW1lbnQoKSB7IHJldHVybiBkb3duY2FzdDxEb2N1bWVu
dD4oQmFzZTo6b3duZXJOb2RlKCkpOyB9CiB9OwogCi1jbGFzcyBXaW5kb3dOYW1lQ29sbGVjdGlv
biBmaW5hbCA6IHB1YmxpYyBIVE1MTmFtZUNvbGxlY3Rpb24gewordGVtcGxhdGUgPHR5cGVuYW1l
IEhUTUxDb2xsZWN0aW9uQ2xhc3MsIENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlIHRyYXZlcnNhbFR5
cGU+CitIVE1MTmFtZUNvbGxlY3Rpb248SFRNTENvbGxlY3Rpb25DbGFzcywgdHJhdmVyc2FsVHlw
ZT46OkhUTUxOYW1lQ29sbGVjdGlvbihEb2N1bWVudCYgZG9jdW1lbnQsIENvbGxlY3Rpb25UeXBl
IHR5cGUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkKKyAgICA6IENhY2hlZEhUTUxDb2xsZWN0
aW9uPEhUTUxDb2xsZWN0aW9uQ2xhc3MsIHRyYXZlcnNhbFR5cGU+KGRvY3VtZW50LCB0eXBlKQor
ICAgICwgbV9uYW1lKG5hbWUpCit7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBIVE1MQ29sbGVj
dGlvbkNsYXNzLCBDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZSB0cmF2ZXJzYWxUeXBlPgorSFRNTE5h
bWVDb2xsZWN0aW9uPEhUTUxDb2xsZWN0aW9uQ2xhc3MsIHRyYXZlcnNhbFR5cGU+Ojp+SFRNTE5h
bWVDb2xsZWN0aW9uKCkKK3sKKyAgICBBU1NFUlQoQmFzZTo6dHlwZSgpID09IFdpbmRvd05hbWVk
SXRlbXMgfHwgQmFzZTo6dHlwZSgpID09IERvY3VtZW50TmFtZWRJdGVtcyk7CisKKyAgICBkb2N1
bWVudCgpLm5vZGVMaXN0cygpLT5yZW1vdmVDYWNoZWRDb2xsZWN0aW9uKHRoaXMsIG1fbmFtZSk7
Cit9CisKK2NsYXNzIFdpbmRvd05hbWVDb2xsZWN0aW9uIGZpbmFsIDogcHVibGljIEhUTUxOYW1l
Q29sbGVjdGlvbjxXaW5kb3dOYW1lQ29sbGVjdGlvbiwgQ29sbGVjdGlvblRyYXZlcnNhbFR5cGU6
OkRlc2NlbmRhbnRzPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxXaW5kb3dOYW1lQ29sbGVj
dGlvbj4gY3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgQ29sbGVjdGlvblR5cGUgdHlwZSwgY29u
c3QgQXRvbWljU3RyaW5nJiBuYW1lKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgV2luZG93TmFtZUNvbGxlY3Rpb24oZG9jdW1lbnQsIHR5cGUsIG5hbWUpKTsKICAgICB9CiAK
KyAgICAvLyBGb3IgQ2FjaGVkSFRNTENvbGxlY3Rpb24uCiAgICAgYm9vbCBlbGVtZW50TWF0Y2hl
cyhjb25zdCBFbGVtZW50JiBlbGVtZW50KSBjb25zdCB7IHJldHVybiBlbGVtZW50TWF0Y2hlcyhl
bGVtZW50LCBtX25hbWUuaW1wbCgpKTsgfQogCiAgICAgc3RhdGljIGJvb2wgZWxlbWVudE1hdGNo
ZXNJZklkQXR0cmlidXRlTWF0Y2goY29uc3QgRWxlbWVudCYpIHsgcmV0dXJuIHRydWU7IH0KQEAg
LTU3LDEzICs3NywxMyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgV2luZG93TmFtZUNvbGxl
Y3Rpb24oRG9jdW1lbnQmIGRvY3VtZW50LCBDb2xsZWN0aW9uVHlwZSB0eXBlLCBjb25zdCBBdG9t
aWNTdHJpbmcmIG5hbWUpCi0gICAgICAgIDogSFRNTE5hbWVDb2xsZWN0aW9uKGRvY3VtZW50LCB0
eXBlLCBuYW1lKQorICAgICAgICA6IEhUTUxOYW1lQ29sbGVjdGlvbjxXaW5kb3dOYW1lQ29sbGVj
dGlvbiwgQ29sbGVjdGlvblRyYXZlcnNhbFR5cGU6OkRlc2NlbmRhbnRzPihkb2N1bWVudCwgdHlw
ZSwgbmFtZSkKICAgICB7CiAgICAgICAgIEFTU0VSVCh0eXBlID09IFdpbmRvd05hbWVkSXRlbXMp
OwogICAgIH0KIH07CiAKLWNsYXNzIERvY3VtZW50TmFtZUNvbGxlY3Rpb24gZmluYWwgOiBwdWJs
aWMgSFRNTE5hbWVDb2xsZWN0aW9uIHsKK2NsYXNzIERvY3VtZW50TmFtZUNvbGxlY3Rpb24gZmlu
YWwgOiBwdWJsaWMgSFRNTE5hbWVDb2xsZWN0aW9uPERvY3VtZW50TmFtZUNvbGxlY3Rpb24sIENv
bGxlY3Rpb25UcmF2ZXJzYWxUeXBlOjpEZXNjZW5kYW50cz4gewogcHVibGljOgogICAgIHN0YXRp
YyBSZWY8RG9jdW1lbnROYW1lQ29sbGVjdGlvbj4gY3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwg
Q29sbGVjdGlvblR5cGUgdHlwZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKQogICAgIHsKQEAg
LTcyLDEzICs5MiwxNSBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgYm9vbCBlbGVtZW50TWF0Y2hl
c0lmSWRBdHRyaWJ1dGVNYXRjaChjb25zdCBFbGVtZW50Jik7CiAgICAgc3RhdGljIGJvb2wgZWxl
bWVudE1hdGNoZXNJZk5hbWVBdHRyaWJ1dGVNYXRjaChjb25zdCBFbGVtZW50Jik7CisKKyAgICAv
LyBGb3IgQ2FjaGVkSFRNTENvbGxlY3Rpb24uCiAgICAgYm9vbCBlbGVtZW50TWF0Y2hlcyhjb25z
dCBFbGVtZW50JiBlbGVtZW50KSBjb25zdCB7IHJldHVybiBlbGVtZW50TWF0Y2hlcyhlbGVtZW50
LCBtX25hbWUuaW1wbCgpKTsgfQogCiAgICAgc3RhdGljIGJvb2wgZWxlbWVudE1hdGNoZXMoY29u
c3QgRWxlbWVudCYsIGNvbnN0IEF0b21pY1N0cmluZ0ltcGwqKTsKIAogcHJpdmF0ZToKICAgICBE
b2N1bWVudE5hbWVDb2xsZWN0aW9uKERvY3VtZW50JiBkb2N1bWVudCwgQ29sbGVjdGlvblR5cGUg
dHlwZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKQotICAgICAgICA6IEhUTUxOYW1lQ29sbGVj
dGlvbihkb2N1bWVudCwgdHlwZSwgbmFtZSkKKyAgICAgICAgOiBIVE1MTmFtZUNvbGxlY3Rpb248
RG9jdW1lbnROYW1lQ29sbGVjdGlvbiwgQ29sbGVjdGlvblRyYXZlcnNhbFR5cGU6OkRlc2NlbmRh
bnRzPihkb2N1bWVudCwgdHlwZSwgbmFtZSkKICAgICB7CiAgICAgICAgIEFTU0VSVCh0eXBlID09
IERvY3VtZW50TmFtZWRJdGVtcyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MT3B0aW9uc0NvbGxlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
T3B0aW9uc0NvbGxlY3Rpb24uY3BwCmluZGV4IDE1MDhiNDE1YzQyZGFlYjEwODAxY2Q4OWMyOTE0
NmQ3NzA5MzEyZTkuLmNmMzk5OTBiYTJkMDQxMzE0ZGNmNDY1NWIzZmI0ZjE4YTRjM2ZjNTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25zQ29sbGVjdGlvbi5jcHAKQEAgLTI3
LDcgKzI3LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogSFRNTE9wdGlvbnNDb2xsZWN0aW9u
OjpIVE1MT3B0aW9uc0NvbGxlY3Rpb24oSFRNTFNlbGVjdEVsZW1lbnQmIHNlbGVjdCkKLSAgICA6
IEhUTUxDb2xsZWN0aW9uKHNlbGVjdCwgU2VsZWN0T3B0aW9ucykKKyAgICA6IEJhc2Uoc2VsZWN0
LCBTZWxlY3RPcHRpb25zKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxPcHRpb25zQ29sbGVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9u
c0NvbGxlY3Rpb24uaAppbmRleCA2MzY2ODY1ZTU1YzFjM2E2Nzc5NDE1MzllMzM3MTExZDNhZjM5
ZTE2Li43YTg0MjA3MmJjZWI1MzRkMzc4Y2Y4ZmIzM2Q3Nzg3ZWIyYzRhZDFkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25zQ29sbGVjdGlvbi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmgKQEAgLTI0LDcgKzI0LDcgQEAK
ICNpZm5kZWYgSFRNTE9wdGlvbnNDb2xsZWN0aW9uX2gKICNkZWZpbmUgSFRNTE9wdGlvbnNDb2xs
ZWN0aW9uX2gKIAotI2luY2x1ZGUgIkhUTUxDb2xsZWN0aW9uLmgiCisjaW5jbHVkZSAiQ2FjaGVk
SFRNTENvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJIVE1MU2VsZWN0RWxlbWVudC5oIgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CkBAIC0zMyw3ICszMyw3IEBAIGNsYXNzIEhUTUxPcHRpb25FbGVtZW50
OwogCiB0eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOwogCi1jbGFzcyBIVE1MT3B0aW9uc0NvbGxl
Y3Rpb24gZmluYWwgOiBwdWJsaWMgSFRNTENvbGxlY3Rpb24geworY2xhc3MgSFRNTE9wdGlvbnND
b2xsZWN0aW9uIGZpbmFsIDogcHVibGljIENhY2hlZEhUTUxDb2xsZWN0aW9uPEhUTUxPcHRpb25z
Q29sbGVjdGlvbiwgQ29sbGVjdGlvblR5cGVUcmFpdHM8U2VsZWN0T3B0aW9ucz46OnRyYXZlcnNh
bFR5cGU+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPEhUTUxPcHRpb25zQ29sbGVjdGlvbj4g
Y3JlYXRlKEhUTUxTZWxlY3RFbGVtZW50JiwgQ29sbGVjdGlvblR5cGUpOwogCkBAIC01MCwxMCAr
NTAsMTkgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRMZW5ndGgodW5zaWduZWQsIEV4Y2VwdGlv
bkNvZGUmKTsKIAorICAgIC8vIEZvciBDYWNoZWRIVE1MQ29sbGVjdGlvbi4KKyAgICBib29sIGVs
ZW1lbnRNYXRjaGVzKEVsZW1lbnQmKSBjb25zdDsKKwogcHJpdmF0ZToKKyAgICB1c2luZyBCYXNl
ID0gQ2FjaGVkSFRNTENvbGxlY3Rpb248SFRNTE9wdGlvbnNDb2xsZWN0aW9uLCBDb2xsZWN0aW9u
VHlwZVRyYWl0czxTZWxlY3RPcHRpb25zPjo6dHJhdmVyc2FsVHlwZT47CiAgICAgZXhwbGljaXQg
SFRNTE9wdGlvbnNDb2xsZWN0aW9uKEhUTUxTZWxlY3RFbGVtZW50Jik7CiB9OwogCitpbmxpbmUg
Ym9vbCBIVE1MT3B0aW9uc0NvbGxlY3Rpb246OmVsZW1lbnRNYXRjaGVzKEVsZW1lbnQmIGVsZW1l
bnQpIGNvbnN0Cit7CisgICAgcmV0dXJuIGVsZW1lbnQuaGFzVGFnTmFtZShIVE1MTmFtZXM6Om9w
dGlvblRhZyk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogU1BFQ0lBTElaRV9UWVBF
X1RSQUlUU19IVE1MQ09MTEVDVElPTihIVE1MT3B0aW9uc0NvbGxlY3Rpb24sIFNlbGVjdE9wdGlv
bnMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwCmluZGV4IGQ1MDVm
M2YxMGEwYzQ4NTI0NDU4Yjk0NTRkNGVlYmQ0Yzk1N2Q3NzAuLmM4YjQyNjMyMzM5NzA0NmQ4YjRl
MzkxMmJlZjdmNDM5OWU1MDNjODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFNlbGVjdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVs
ZW1lbnQuY3BwCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSAiRm9ybUNvbnRyb2xsZXIuaCIK
ICNpbmNsdWRlICJGb3JtRGF0YUxpc3QuaCIKICNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUg
IkdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxGb3JtRWxlbWVu
dC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhUTUxPcHRHcm91cEVsZW1l
bnQuaCIKQEAgLTQ2LDYgKzQ3LDcgQEAKICNpbmNsdWRlICJLZXlib2FyZEV2ZW50LmgiCiAjaW5j
bHVkZSAiTG9jYWxpemVkU3RyaW5ncy5oIgogI2luY2x1ZGUgIk1vdXNlRXZlbnQuaCIKKyNpbmNs
dWRlICJOb2RlUmFyZURhdGEuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGxhdGZv
cm1Nb3VzZUV2ZW50LmgiCiAjaW5jbHVkZSAiUmVuZGVyTGlzdEJveC5oIgpAQCAtMzc0LDEyICsz
NzYsMTIgQEAgYm9vbCBIVE1MU2VsZWN0RWxlbWVudDo6Y2hpbGRTaG91bGRDcmVhdGVSZW5kZXJl
cihjb25zdCBOb2RlJiBjaGlsZCkgY29uc3QKIAogUmVmPEhUTUxDb2xsZWN0aW9uPiBIVE1MU2Vs
ZWN0RWxlbWVudDo6c2VsZWN0ZWRPcHRpb25zKCkKIHsKLSAgICByZXR1cm4gZW5zdXJlQ2FjaGVk
SFRNTENvbGxlY3Rpb24oU2VsZWN0ZWRPcHRpb25zKTsKKyAgICByZXR1cm4gZW5zdXJlUmFyZURh
dGEoKS5lbnN1cmVOb2RlTGlzdHMoKS5hZGRDYWNoZWRDb2xsZWN0aW9uPEdlbmVyaWNDYWNoZWRI
VE1MQ29sbGVjdGlvbjxDb2xsZWN0aW9uVHlwZVRyYWl0czxTZWxlY3RlZE9wdGlvbnM+Ojp0cmF2
ZXJzYWxUeXBlPj4oKnRoaXMsIFNlbGVjdGVkT3B0aW9ucyk7CiB9CiAKIFJlZjxIVE1MT3B0aW9u
c0NvbGxlY3Rpb24+IEhUTUxTZWxlY3RFbGVtZW50OjpvcHRpb25zKCkKIHsKLSAgICByZXR1cm4g
ZG93bmNhc3Q8SFRNTE9wdGlvbnNDb2xsZWN0aW9uPihlbnN1cmVDYWNoZWRIVE1MQ29sbGVjdGlv
bihTZWxlY3RPcHRpb25zKS5nZXQoKSk7CisgICAgcmV0dXJuIGVuc3VyZVJhcmVEYXRhKCkuZW5z
dXJlTm9kZUxpc3RzKCkuYWRkQ2FjaGVkQ29sbGVjdGlvbjxIVE1MT3B0aW9uc0NvbGxlY3Rpb24+
KCp0aGlzLCBTZWxlY3RPcHRpb25zKTsKIH0KIAogdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6dXBk
YXRlTGlzdEl0ZW1TZWxlY3RlZFN0YXRlcygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxUYWJsZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVF
bGVtZW50LmNwcAppbmRleCA3NDU3MzYxYjZlMTI1ZWFlZjk2NWFmNTQ1MzNiZjMzZjY4NDZlYWE3
Li4wMjgwODZhNjE4ZGY2YjM0ZWUzNDRhZjFkMDM3YTQwNzRlNjY0ODVjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVudC5jcHAKQEAgLTMxLDEyICszMSwxNCBAQAogI2luY2x1
ZGUgIkNTU1ZhbHVlUG9vbC5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRl
ICJFeGNlcHRpb25Db2RlUGxhY2Vob2xkZXIuaCIKKyNpbmNsdWRlICJHZW5lcmljQ2FjaGVkSFRN
TENvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJIVE1MUGFy
c2VySWRpb21zLmgiCiAjaW5jbHVkZSAiSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQuaCIKICNpbmNs
dWRlICJIVE1MVGFibGVSb3dFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFRhYmxlUm93c0NvbGxl
Y3Rpb24uaCIKICNpbmNsdWRlICJIVE1MVGFibGVTZWN0aW9uRWxlbWVudC5oIgorI2luY2x1ZGUg
Ik5vZGVSYXJlRGF0YS5oIgogI2luY2x1ZGUgIlJlbmRlclRhYmxlLmgiCiAjaW5jbHVkZSAiU3R5
bGVQcm9wZXJ0aWVzLmgiCiAjaW5jbHVkZSA8d3RmL1JlZi5oPgpAQCAtNTUxLDEyICs1NTMsMTIg
QEAgYm9vbCBIVE1MVGFibGVFbGVtZW50Ojppc1VSTEF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUm
IGF0dHJpYnV0ZSkgY29uc3QKIAogUmVmPEhUTUxDb2xsZWN0aW9uPiBIVE1MVGFibGVFbGVtZW50
Ojpyb3dzKCkKIHsKLSAgICByZXR1cm4gZW5zdXJlQ2FjaGVkSFRNTENvbGxlY3Rpb24oVGFibGVS
b3dzKTsKKyAgICByZXR1cm4gZW5zdXJlUmFyZURhdGEoKS5lbnN1cmVOb2RlTGlzdHMoKS5hZGRD
YWNoZWRDb2xsZWN0aW9uPEhUTUxUYWJsZVJvd3NDb2xsZWN0aW9uPigqdGhpcywgVGFibGVSb3dz
KTsKIH0KIAogUmVmPEhUTUxDb2xsZWN0aW9uPiBIVE1MVGFibGVFbGVtZW50Ojp0Qm9kaWVzKCkK
IHsKLSAgICByZXR1cm4gZW5zdXJlQ2FjaGVkSFRNTENvbGxlY3Rpb24oVGFibGVUQm9kaWVzKTsK
KyAgICByZXR1cm4gZW5zdXJlUmFyZURhdGEoKS5lbnN1cmVOb2RlTGlzdHMoKS5hZGRDYWNoZWRD
b2xsZWN0aW9uPEdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbjxDb2xsZWN0aW9uVHlwZVRyYWl0
czxUYWJsZVRCb2RpZXM+Ojp0cmF2ZXJzYWxUeXBlPj4oKnRoaXMsIFRhYmxlVEJvZGllcyk7CiB9
CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgSFRNTFRhYmxlRWxlbWVudDo6cnVsZXMoKSBjb25zdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVSb3dFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlUm93RWxlbWVudC5jcHAKaW5kZXggZDQzNTFl
YWZjYTVlNmY3NTUyNmI5N2EzMDRiYTY3YWZhNjgwN2VhOC4uYzg3MjU5ZjVlY2I5NmQwYWE2MDQ4
ZDRkMTRhZThiNjBmOTNiNjhiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VGFibGVSb3dFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVJv
d0VsZW1lbnQuY3BwCkBAIC0yNiwxMiArMjYsMTMgQEAKICNpbmNsdWRlICJIVE1MVGFibGVSb3dF
bGVtZW50LmgiCiAKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCi0jaW5jbHVkZSAiSFRNTENv
bGxlY3Rpb24uaCIKKyNpbmNsdWRlICJHZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb24uaCIKICNp
bmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJIVE1MVGFibGVDZWxsRWxlbWVudC5oIgog
I2luY2x1ZGUgIkhUTUxUYWJsZUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MVGFibGVTZWN0aW9u
RWxlbWVudC5oIgogI2luY2x1ZGUgIk5vZGVMaXN0LmgiCisjaW5jbHVkZSAiTm9kZVJhcmVEYXRh
LmgiCiAjaW5jbHVkZSAiVGV4dC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xNTYsNyAr
MTU3LDcgQEAgdm9pZCBIVE1MVGFibGVSb3dFbGVtZW50OjpkZWxldGVDZWxsKGludCBpbmRleCwg
RXhjZXB0aW9uQ29kZSYgZWMpCiAKIFJlZjxIVE1MQ29sbGVjdGlvbj4gSFRNTFRhYmxlUm93RWxl
bWVudDo6Y2VsbHMoKQogewotICAgIHJldHVybiBlbnN1cmVDYWNoZWRIVE1MQ29sbGVjdGlvbihU
UkNlbGxzKTsKKyAgICByZXR1cm4gZW5zdXJlUmFyZURhdGEoKS5lbnN1cmVOb2RlTGlzdHMoKS5h
ZGRDYWNoZWRDb2xsZWN0aW9uPEdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbjxDb2xsZWN0aW9u
VHlwZVRyYWl0czxUUkNlbGxzPjo6dHJhdmVyc2FsVHlwZT4+KCp0aGlzLCBUUkNlbGxzKTsKIH0K
IAogdm9pZCBIVE1MVGFibGVSb3dFbGVtZW50OjpzZXRDZWxscyhIVE1MQ29sbGVjdGlvbiosIEV4
Y2VwdGlvbkNvZGUmIGVjKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFi
bGVSb3dzQ29sbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVJvd3ND
b2xsZWN0aW9uLmNwcAppbmRleCBiZmE1ZjZkNzhkMGZiY2E3M2I4M2ViZTNhMmUwMWMyYTQxMzYw
YTI1Li4yNDg5ZWE2MTNkZTcyMDQ2ZTI4Y2M2Y2U4YmJjNzBkMTYwNGVlZGI3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVJvd3NDb2xsZWN0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVJvd3NDb2xsZWN0aW9uLmNwcApAQCAtMTQ5LDcg
KzE0OSw3IEBAIEhUTUxUYWJsZVJvd0VsZW1lbnQqIEhUTUxUYWJsZVJvd3NDb2xsZWN0aW9uOjps
YXN0Um93KEhUTUxUYWJsZUVsZW1lbnQmIHRhYmxlKQogfQogCiBIVE1MVGFibGVSb3dzQ29sbGVj
dGlvbjo6SFRNTFRhYmxlUm93c0NvbGxlY3Rpb24oSFRNTFRhYmxlRWxlbWVudCYgdGFibGUpCi0g
ICAgOiBIVE1MQ29sbGVjdGlvbih0YWJsZSwgVGFibGVSb3dzLCBDdXN0b21Gb3J3YXJkT25seVRy
YXZlcnNhbCkKKyAgICA6IEJhc2UodGFibGUsIFRhYmxlUm93cykKIHsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVSb3dzQ29sbGVjdGlvbi5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MVGFibGVSb3dzQ29sbGVjdGlvbi5oCmluZGV4IDllYjVmYTZhN2Ey
OTgxNGYyM2UxNGUzN2FhOTk1MzZkZGVkYWY5NDQuLmM4ZjVjMWY1Zjc1NmRiMThkYWQ1ZDc2NzMz
MThlZTQ2ZjJjMTllNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxl
Um93c0NvbGxlY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVJvd3ND
b2xsZWN0aW9uLmgKQEAgLTI5LDE0ICsyOSwxNCBAQAogI2lmbmRlZiBIVE1MVGFibGVSb3dzQ29s
bGVjdGlvbl9oCiAjZGVmaW5lIEhUTUxUYWJsZVJvd3NDb2xsZWN0aW9uX2gKIAotI2luY2x1ZGUg
IkhUTUxDb2xsZWN0aW9uLmgiCisjaW5jbHVkZSAiQ2FjaGVkSFRNTENvbGxlY3Rpb24uaCIKICNp
bmNsdWRlICJIVE1MVGFibGVFbGVtZW50LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgSFRNTFRhYmxlUm93RWxlbWVudDsKIAotY2xhc3MgSFRNTFRhYmxlUm93c0NvbGxlY3Rpb24g
ZmluYWwgOiBwdWJsaWMgSFRNTENvbGxlY3Rpb24geworY2xhc3MgSFRNTFRhYmxlUm93c0NvbGxl
Y3Rpb24gZmluYWwgOiBwdWJsaWMgQ2FjaGVkSFRNTENvbGxlY3Rpb248SFRNTFRhYmxlUm93c0Nv
bGxlY3Rpb24sIENvbGxlY3Rpb25UeXBlVHJhaXRzPFRhYmxlUm93cz46OnRyYXZlcnNhbFR5cGU+
IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPEhUTUxUYWJsZVJvd3NDb2xsZWN0aW9uPiBjcmVh
dGUoSFRNTFRhYmxlRWxlbWVudCYsIENvbGxlY3Rpb25UeXBlKTsKIApAQCAtNDYsMTAgKzQ2LDEy
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSFRNTFRhYmxlUm93RWxlbWVudCogcm93QWZ0ZXIoSFRN
TFRhYmxlRWxlbWVudCYsIEhUTUxUYWJsZVJvd0VsZW1lbnQqKTsKICAgICBzdGF0aWMgSFRNTFRh
YmxlUm93RWxlbWVudCogbGFzdFJvdyhIVE1MVGFibGVFbGVtZW50Jik7CiAKKyAgICAvLyBGb3Ig
Q2FjaGVkSFRNTENvbGxlY3Rpb24uCisgICAgRWxlbWVudCogY3VzdG9tRWxlbWVudEFmdGVyKEVs
ZW1lbnQqKSBjb25zdDsKKwogcHJpdmF0ZToKKyAgICB1c2luZyBCYXNlID0gQ2FjaGVkSFRNTENv
bGxlY3Rpb248SFRNTFRhYmxlUm93c0NvbGxlY3Rpb24sIENvbGxlY3Rpb25UeXBlVHJhaXRzPFRh
YmxlUm93cz46OnRyYXZlcnNhbFR5cGU+OwogICAgIGV4cGxpY2l0IEhUTUxUYWJsZVJvd3NDb2xs
ZWN0aW9uKEhUTUxUYWJsZUVsZW1lbnQmKTsKLQotICAgIHZpcnR1YWwgRWxlbWVudCogY3VzdG9t
RWxlbWVudEFmdGVyKEVsZW1lbnQqKSBjb25zdCBvdmVycmlkZTsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlU2Vj
dGlvbkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVTZWN0aW9uRWxl
bWVudC5jcHAKaW5kZXggZjc1NzE3ZTU5ODI5MmI3NGVkNDIyNzU4YzQ4MDZkYzVjMDA3YmJkZS4u
OWU0NTMxNmY4ZjNmNGZjNmRhOGUzZGNkYjFiM2U0ZTJkZDkyN2Q4NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVTZWN0aW9uRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MVGFibGVTZWN0aW9uRWxlbWVudC5jcHAKQEAgLTI2LDExICsyNiwx
MyBAQAogI2luY2x1ZGUgIkhUTUxUYWJsZVNlY3Rpb25FbGVtZW50LmgiCiAKICNpbmNsdWRlICJF
eGNlcHRpb25Db2RlLmgiCisjaW5jbHVkZSAiR2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uLmgi
CiAjaW5jbHVkZSAiSFRNTENvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNp
bmNsdWRlICJIVE1MVGFibGVSb3dFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFRhYmxlRWxlbWVu
dC5oIgogI2luY2x1ZGUgIk5vZGVMaXN0LmgiCisjaW5jbHVkZSAiTm9kZVJhcmVEYXRhLmgiCiAj
aW5jbHVkZSAiVGV4dC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xNDcsNyArMTQ5LDcg
QEAgdm9pZCBIVE1MVGFibGVTZWN0aW9uRWxlbWVudDo6c2V0VkFsaWduKGNvbnN0IEF0b21pY1N0
cmluZyYgdmFsdWUpCiAKIFJlZjxIVE1MQ29sbGVjdGlvbj4gSFRNTFRhYmxlU2VjdGlvbkVsZW1l
bnQ6OnJvd3MoKQogewotICAgIHJldHVybiBlbnN1cmVDYWNoZWRIVE1MQ29sbGVjdGlvbihUU2Vj
dGlvblJvd3MpOworICAgIHJldHVybiBlbnN1cmVSYXJlRGF0YSgpLmVuc3VyZU5vZGVMaXN0cygp
LmFkZENhY2hlZENvbGxlY3Rpb248R2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uPENvbGxlY3Rp
b25UeXBlVHJhaXRzPFRTZWN0aW9uUm93cz46OnRyYXZlcnNhbFR5cGU+PigqdGhpcywgVFNlY3Rp
b25Sb3dzKTsKIH0KIAogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>259004</attachid>
            <date>2015-08-14 09:40:49 -0700</date>
            <delta_ts>2015-08-14 09:43:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-147979-20150814094029.patch</filename>
            <type>text/plain</type>
            <size>106685</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg4MzY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzE2NDY1NDRmOTcyZmEx
NzYyNDIxN2VkMTdiZDI3ZWQzZDFjNjZmOC4uYzUwMjZlZjM3OTUyNjRmNWE0ZDk4NDk0YjQxMzM4
ZjM3ZDM1ZWRhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4MCBAQAorMjAxNS0wOC0xMyAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFJlZmFjdG9yIEhUTUxDb2xs
ZWN0aW9uIHRvIGJlIGFzIGZhc3QgYXMgQ2FjaGVkTGl2ZU5vZGVMaXN0CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDc5NzkKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWZhY3RvciBIVE1MQ29sbGVjdGlv
biB0byBiZSBhcyBmYXN0IGFzIENhY2hlZExpdmVOb2RlTGlzdC4gVGhpcyBpcyBpbgorICAgICAg
ICBwcmVwYXJhdGlvbiBvZiBoYXZpbmcgZ2V0RWxlbWVudHNCeVRhZ05hbWUqKCkgLyBnZXRFbGVt
ZW50c0J5Q2xhc3NOYW1lKCkKKyAgICAgICAgcmV0dXJuIGFuIEhUTUxDb2xsZWN0aW9uIGluc3Rl
YWQgb2YgYSBOb2RlTGlzdCwgYXMgcGVyIHRoZQorICAgICAgICBzcGVjaWZpY2F0aW9uLiBDaHJv
bWUgYW5kIEZpcmVmb3ggYWxyZWFkeSBtYXRjaCB0aGUgc3BlY2lmaWNhdGlvbiBpbgorICAgICAg
ICB0aGlzIGNhc2UuCisKKyAgICAgICAgVHJhdmVyc2luZyBhbiBIVE1MQ29sbGVjdGlvbiB3YXMg
c2xvdyBiZWNhdXNlIG9mIGFsbCB0aGUgZXh0cmEKKyAgICAgICAgYnJhbmNoaW5nIGl0IGhhZCBj
b21wYXJlZCB0byBDYWNoZWRMaXZlTm9kZUxpc3QuIFRvIGFkZHJlc3MgdGhlIGlzc3VlLAorICAg
ICAgICB0aGlzIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgdGVtcGxhdGVkIENhY2hlZEhUTUxDb2xs
ZWN0aW9uIHN1YmNsYXNzLAorICAgICAgICB3aGljaCBiZWhhdmVzIGluIGEgc2ltaWxhciB3YXkg
YXMgQ2FjaGVkTGl2ZU5vZGVMaXN0LiBUaGUgMiB0ZW1wbGF0ZQorICAgICAgICBwYXJhbWV0ZXJz
IGFyZToKKyAgICAgICAgMS4gVGhlIHR5cGUgb2YgdGhlIHN1YmNsYXNzIG9mIENhY2hlZEhUTUxD
b2xsZWN0aW9uLCBzbyB3ZSBjYW4gY2FsbAorICAgICAgICAgICBlbGVtZW50TWF0Y2hlcygpIGRp
cmVjdGx5IG9uIHRoZSBzdWJjbGFzcywgd2l0aG91dCBuZWVkZWQgYW55CisgICAgICAgICAgIHZp
cnR1YWwgZnVuY3Rpb24gY2FsbCBvciBzd2l0Y2ggc3RhdGVtZW50LiBUaGlzIGlzIHRoZSBzYW1l
IGFwcHJvYWNoCisgICAgICAgICAgIGFzIGluIENhY2hlZExpdmVOb2RlTGlzdC4KKyAgICAgICAg
Mi4gVGhlIHR5cGUgb2YgdHJlZSB0cmF2ZXJzYWwgdXNlZCAoRGVzY2VuZGFudHMsIENoaWxkcmVu
T25seSwKKyAgICAgICAgICAgQ3VzdG9tRm9yd2FyZE9ubHkpLiBVbmxpa2UgTGl2ZU5vZGVMaXN0
LCBIVE1MQ29sbGVjdGlvbiBuZWVkcyB0bworICAgICAgICAgICBzdXBwb3J0IHRoZXNlIDMgdHlw
ZXMgb2YgdHJlZSB0cmF2ZXJzYWwuIFRoZXNlIHdlcmUgY2F1c2luZyBleHRyYQorICAgICAgICAg
ICBicmFuY2hpbmcgZm9yIGV2ZXJ5IGl0ZW0oKSBjYWxsLiBXZSBhcmUgbm93IGFibGUgdG8gY2hv
b3NlIHRoZSByaWdodAorICAgICAgICAgICB0eXBlIG9mIHRyYXZlcnNhbCBmb3IgdGhlIENhY2hl
ZEhUTUxDb2xsZWN0aW9uIGF0IGNvbXBpbGUgdGltZS4KKworICAgICAgICAqIFdlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgQWRkIG5ldyBmaWxlcyB0byB0aGUgUHJv
amVjdC4KKworICAgICAgICAqIGRvbS9Db250YWluZXJOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNvbnRhaW5lck5vZGU6OmNoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRhaW5l
ck5vZGU6OmNhY2hlZEhUTUxDb2xsZWN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBkb20vQ29u
dGFpbmVyTm9kZS5oOgorICAgICAgICBEcm9wIENvbnRhaW5lck5vZGU6OmVuc3VyZUNhY2hlZEhU
TUxDb2xsZWN0aW9uKCkgYW5kIHVzZQorICAgICAgICBOb2RlTGlzdHNOb2RlRGF0YTo6YWRkQ2Fj
aGVkQ29sbGVjdGlvbigpIGRpcmVjdGx5IGF0IGNhbGwgc2l0ZXMKKyAgICAgICAgaW5zdGVhZC4g
V2UgbmVlZCBhY2Nlc3MgdG8gdGhlIENvbGxlY3Rpb25UeXBlIGF0IGJ1aWxkLXRpbWUgc28KKyAg
ICAgICAgd2UgY2FuIHJlc29sdmUgdGhlIENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlIHBhcmFtZXRl
ciBmb3IgdGhlCisgICAgICAgIEdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbiB1c2luZyBDb2xs
ZWN0aW9uVHlwZVRyYWl0cy4KKworICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAg
ICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgIFVwZGF0ZSBlbnN1cmVDYWNoZWRDb2xsZWN0aW9u
KCkgc28gdGhlIENvbGxlY3Rpb25UeXBlIGlzIG5vdyBhIHRlbXBsYXRlCisgICAgICAgIHBhcmFt
ZXRlciBpbnN0ZWFkIG9mIGEgbWV0aG9kIGFyZ3VtZW50LiBXZSBuZWVkIHRvIGtub3cgdGhlCisg
ICAgICAgIENvbGxlY3Rpb25UeXBlIGF0IGJ1aWxkIHRpbWUgdG8gY29uc3RydWN0IHRoZSBHZW5l
cmljQ2FjaGVkSFRNTENvbGxlY3Rpb24uCisKKyAgICAgICAgKiBkb20vRWxlbWVudENoaWxkSXRl
cmF0b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnRU
eXBlPjo6b3BlcmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudENoaWxkQ29uc3RJdGVy
YXRvcjxFbGVtZW50VHlwZT46Om9wZXJhdG9yKToKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIGRl
Y3JlbWVudGluZyBhbiBFbGVtZW50Q2hpbGRJdGVyYXRvciwgZm9yIGNvbnNpc3RlbmN5CisgICAg
ICAgIHdpdGggRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvci4gV2UgbmVlZCB0aGlzIHRvIHN1cHBv
cnQgYmFja3dhcmQKKyAgICAgICAgdHJhdmVyc2FsIGluIENhY2hlZEhUTUxDb2xsZWN0aW9ucyB0
aGF0IHVzZSB0aGUgJ0NoaWxkcmVuT25seScgdHlwZQorICAgICAgICBvZiB0cmF2ZXJzYWwuCisK
KyAgICAgICAgKiBkb20vTGl2ZU5vZGVMaXN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRM
aXZlTm9kZUxpc3Q8Tm9kZUxpc3RUeXBlPjo6Y29sbGVjdGlvbkJlZ2luKToKKyAgICAgICAgKFdl
YkNvcmU6OkNhY2hlZExpdmVOb2RlTGlzdDxOb2RlTGlzdFR5cGU+Ojpjb2xsZWN0aW9uTGFzdCk6
CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRMaXZlTm9kZUxpc3Q8Tm9kZUxpc3RUeXBlPjo6Y29s
bGVjdGlvblRyYXZlcnNlRm9yd2FyZCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRMaXZlTm9k
ZUxpc3Q8Tm9kZUxpc3RUeXBlPjo6Y29sbGVjdGlvblRyYXZlcnNlQmFja3dhcmQpOgorICAgICAg
ICBNb3ZlIHRyYXZlcnNhbCBpbXBsZW1lbnRhdGlvbiB0byBDb2xsZWN0aW9uVHJhdmVyc2FsLmgs
IHNvIGl0IGNhbiBiZQorICAgICAgICBzaGFyZWQgd2l0aCBhY2hlZEhUTUxDb2xsZWN0aW9uLmgu
CisKKyAgICAgICAgKiBodG1sL0NhY2hlZEhUTUxDb2xsZWN0aW9uLmg6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6dHJhdmVyc2FsVHlwZT46OkNhY2hlZEhUTUxDb2xsZWN0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OnRyYXZlcnNhbFR5cGU+Ojp+Q2FjaGVkSFRNTENvbGxlY3Rpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6dHJhdmVyc2FsVHlwZT46OkNhY2hlZEhUTUxDb2xsZWN0aW9uOjptZW1v
cnlDb3N0KToKKyAgICAgICAgKFdlYkNvcmU6OnRyYXZlcnNhbFR5cGU+Ojpjb2xsZWN0aW9uQ2Fu
VHJhdmVyc2VCYWNrd2FyZCk6CisgICAgICAgIChXZWJDb3JlOjp0cmF2ZXJzYWxUeXBlPjo6Y29s
bGVjdGlvblRyYXZlcnNlRm9yd2FyZCk6CisgICAgICAgIChXZWJDb3JlOjp0cmF2ZXJzYWxUeXBl
Pjo6Y29sbGVjdGlvblRyYXZlcnNlQmFja3dhcmQpOgorICAgICAgICAoV2ViQ29yZTo6dHJhdmVy
c2FsVHlwZT46OndpbGxWYWxpZGF0ZUluZGV4Q2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6dHJh
dmVyc2FsVHlwZT46Omxlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjp0cmF2ZXJzYWxUeXBlPjo6
aXRlbSk6CisgICAgICAgIChXZWJDb3JlOjp0cmF2ZXJzYWxUeXBlPjo6aW52YWxpZGF0ZUNhY2hl
KToKKyAgICAgICAgKFdlYkNvcmU6OnRyYXZlcnNhbFR5cGU+OjplbGVtZW50TWF0Y2hlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpuYW1lU2hvdWxkQmVWaXNpYmxlSW5Eb2N1bWVudEFsbCk6CisgICAg
ICAgIChXZWJDb3JlOjp0cmF2ZXJzYWxUeXBlPjo6bmFtZWRJdGVtKToKKworICAgICAgICAqIGh0
bWwvQ29sbGVjdGlvblRyYXZlcnNhbC5oOiBBZGRlZC4KKyAgICAgICAgQWRkIG5ldyB0ZW1wbGF0
ZSBjbGFzcyB0aGF0IHByb3ZpZGUgdGhlIGNvbGxlY3Rpb24gdHJhdmVyc2FsIGNvZGUKKyAgICAg
ICAgbmVlZGVkIGJ5IENvbGxlY3Rpb25JbmRleENhY2hlLiBJdCBoYXMgdGVtcGxhdGUgc3BlY2lh
bGl6YXRpb25zIGZvcgorICAgICAgICBhbGwgMyB0eXBlcyBvZiB0cmF2ZXJzYWw6IERlc2NlbmRh
bnRzLCBDaGlsZHJlbk9ubHksIGFuZAorICAgICAgICBDdXN0b21Gb3J3YXJkT25seS4KKworICAg
ICAgICAqIGh0bWwvQ29sbGVjdGlvblR5cGUuaDoKKyAgICAgICAgQWRkIENvbGxlY3Rpb25UeXBl
VHJhaXRzIHRyYWl0cyBzbyB3ZSBjYW4gcmVzb2x2ZSB0aGUKKyAgICAgICAgQ29sbGVjdGlvblRy
YXZlcnNhbFR5cGUgdXNlZCBieSBhIHNwZWNpZmljIENvbGxlY3Rpb25UeXBlIGF0CisgICAgICAg
IGNvbXBpbGUtdGltZS4gVGhpcyBpcyBuZWVkZWQgZm9yIHRoZSBzZWNvbmQgdGVtcGxhdGUgcGFy
YW1ldGVyIG9mCisgICAgICAgIENhY2hlZEhUTUxDb2xsZWN0aW9uLgorCisgICAgICAgICogaHRt
bC9HZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbjx0cmF2ZXJzYWxUeXBlPjo6ZWxlbWVudE1h
dGNoZXMpOgorICAgICAgICAqIGh0bWwvR2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uLmg6IEFk
ZGVkLgorICAgICAgICBBZGQgQ2FjaGVkSFRNTENvbGxlY3Rpb24gc3ViY2xhc3MgaXMgdGhlIGdl
bmVyaWMgb25lIHVzZWQgZm9yIGFsbAorICAgICAgICBDb2xsZWN0aW9uVHlwZXMgdGhhdCBkbyBu
b3QgaGF2ZSB0aGVpciBvd24gc3ViY2xhc3MgKGUuZy4gTm9kZUNoaWxkcmVuKS4KKyAgICAgICAg
VGhpcyBoYXMgYW4gZWxlbWVudE1hdGNoZXMoKSBtZXRob2Qgd2l0aCBhIHN3aXRjaCgpIHN0YXRl
bWVudCBoYW5kbGluZworICAgICAgICBhbGwgdGhlc2UgQ29sbGVjdGlvblR5cGVzLiBUaG9zZSBh
cmUgbm90IG5vcm1hbGx5IG5vdCBwZXJmb3JtYW5jZQorICAgICAgICBzZW5zaXRpdmUuCisKKyAg
ICAgICAgKiBodG1sL0hUTUxBbGxDb2xsZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxBbGxDb2xsZWN0aW9uOjpIVE1MQWxsQ29sbGVjdGlvbik6CisgICAgICAgICogaHRtbC9IVE1M
QWxsQ29sbGVjdGlvbi5oOgorICAgICAgICBTdWJjbGFzcyBDYWNoZWRIVE1MQ29sbGVjdGlvbiBp
bnN0ZWFkIG9mIEhUTUxDb2xsZWN0aW9uLiBBbHNvIHByb3ZpZGUKKyAgICAgICAgYW4gZWxlbWVu
dE1hdGNoZXMoKSBtZXRob2QgdGhhdCBzaW1wbHkgcmV0dXJucyB0cnVlIGFzIHdlIHdhbnQgdG8K
KyAgICAgICAgbWF0Y2ggYWxsIGVsZW1lbnRzLgorCisgICAgICAgICogaHRtbC9IVE1MQ29sbGVj
dGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ29sbGVjdGlvbjo6SFRNTENvbGxlY3Rp
b24pOgorICAgICAgICBNb3ZlIENvbGxlY3Rpb25JbmRleENhY2hlIG1lbWJlciB0byB0aGUgc3Vi
Y2xhc3MgYW5kIGRyb3AgdGhlIDIgb3RoZXIKKyAgICAgICAgbWVtYmVycyBhcyB0aGV5IGFyZSBy
ZXBsYWNlZCB3aXRoIHRoZSBDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZSB0ZW1wbGF0ZQorICAgICAg
ICBwYXJhbWV0ZXIgb2YgQ2FjaGVkSFRNTENvbGxlY3Rpb24uCisKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxDb2xsZWN0aW9uOjp+SFRNTENvbGxlY3Rpb24pOgorICAgICAgICBNb3ZlIERvY3VtZW50
Ojp1bnJlZ2lzdGVyQ29sbGVjdGlvbigpIGNhbGwgdG8gfkNhY2hlZEhUTUxDb2xsZWN0aW9uKCkK
KyAgICAgICAgYXMgd2UgbmVlZGVkIHRvIGNoZWNrIGlmIHRoZSBDb2xsZWN0aW9uSW5kZXhDYWNo
ZSB3YXMgdmFsaWQgZmlyc3QuCisKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb2xsZWN0aW9uOjp1
cGRhdGVOYW1lZEVsZW1lbnRDYWNoZSk6CisgICAgICAgIE1vdmUgcGFydCBvZiB0aGUgaW1wbGVt
ZW50YXRpb24gdG8gdGhlIENhY2hlZEhUTUxDb2xsZWN0aW9uIHN1YmNsYXNzCisgICAgICAgIGFz
IGl0IG5lZWRzIHRvIGtub3cgYWJvdXQgdGhlIHR5cGUgb2YgdHJhdmVyc2FsIGFuZCBpdCBuZWVk
cyB0byBiZQorICAgICAgICBhYmxlIHRvIGNhbGwgZWxlbWVudE1hdGNoZXMoKS4KKworICAgICAg
ICAqIGh0bWwvSFRNTENvbGxlY3Rpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb2xsZWN0
aW9uOjpyb290Tm9kZSk6CisgICAgICAgIElubGluZSBmb3IgcGVyZm9ybWFuY2UgcmVhc29ucyBh
bmQgY29uc2lzdGVuY3kgd2l0aCBDYWNoZWRMaXZlTm9kZUxpc3QuCisKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxDb2xsZWN0aW9uOjptZW1vcnlDb3N0KToKKyAgICAgICAgTWFrZSB2aXJ0dWFsIGFu
ZCBtb3ZlIHBhcnQgb2YgdGhlIGltcGxlbWVudGF0aW9uIHRvIHRoZQorICAgICAgICBDYWNoZWRI
VE1MQ29sbGVjdGlvbiBzdWJjbGFzcyB0byBjb21wdXRlIHRoZSBjb3N0IG9mIHRoZQorICAgICAg
ICBDb2xsZWN0aW9uSW5kZXhDYWNoZS4KKworICAgICAgICAoV2ViQ29yZTo6SFRNTENvbGxlY3Rp
b246OmludmFsaWRhdGVDYWNoZSk6CisgICAgICAgIE1vdmUgcGFydCBvZiB0aGUgaW1wbGVtZW50
YXRpb24gdG8gdGhlIHN1YmNsYXNzIHRvIGludmFsaWRhdGUgdGhlCisgICAgICAgIENvbGxlY3Rp
b25JbmRleENhY2hlLgorCisgICAgICAgICogaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxGaWVsZFNldEVsZW1lbnQ6OmVsZW1lbnRzKToKKworICAg
ICAgICAqIGh0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uY3BwOgorICAgICAgICAqIGh0
bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uaDoKKyAgICAgICAgU3ViY2xhc3MgQ2FjaGVk
SFRNTENvbGxlY3Rpb24gaW5zdGVhZCBvZiBIVE1MQ29sbGVjdGlvbi4KKyAgICAgICAgY3VzdG9t
RWxlbWVudEFmdGVyKCkgbm8gbG9uZ2VyIG5lZWRzIHRvIGJlIHZpcnR1YWwgYXMgaXQKKyAgICAg
ICAgaXMgY2FsbGVkIGRpcmVjdGx5IGJ5IENhY2hlZEhUTUxDb2xsZWN0aW9uIG9uIHRoZSBzdWJj
bGFzcy4KKworICAgICAgICAqIGh0bWwvSFRNTEZvcm1FbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxGb3JtRWxlbWVudDo6ZWxlbWVudHMpOgorICAgICAgICAqIGh0bWwvSFRNTE1h
cEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1hcEVsZW1lbnQ6OmFyZWFzKToK
KyAgICAgICAgQ2FsbCBOb2RlTGlzdHNOb2RlRGF0YTo6YWRkQ2FjaGVkQ29sbGVjdGlvbigpIGRp
cmVjdGx5LgorCisgICAgICAgICogaHRtbC9IVE1MTmFtZUNvbGxlY3Rpb24uY3BwOgorICAgICAg
ICAqIGh0bWwvSFRNTE5hbWVDb2xsZWN0aW9uLmg6CisgICAgICAgIFN1YmNsYXNzIENhY2hlZEhU
TUxDb2xsZWN0aW9uIGluc3RlYWQgb2YgSFRNTENvbGxlY3Rpb24uCisKKyAgICAgICAgKiBodG1s
L0hUTUxPcHRpb25zQ29sbGVjdGlvbi5jcHA6CisgICAgICAgICogaHRtbC9IVE1MT3B0aW9uc0Nv
bGxlY3Rpb24uaDoKKyAgICAgICAgU3ViY2xhc3MgQ2FjaGVkSFRNTENvbGxlY3Rpb24gaW5zdGVh
ZCBvZiBIVE1MQ29sbGVjdGlvbi4KKworICAgICAgICAqIGh0bWwvSFRNTFNlbGVjdEVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OnNlbGVjdGVkT3B0aW9u
cyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6b3B0aW9ucyk6CisgICAg
ICAgICogaHRtbC9IVE1MVGFibGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxU
YWJsZUVsZW1lbnQ6OnJvd3MpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRhYmxlRWxlbWVudDo6
dEJvZGllcyk6CisgICAgICAgICogaHRtbC9IVE1MVGFibGVSb3dFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxUYWJsZVJvd0VsZW1lbnQ6OmNlbGxzKToKKyAgICAgICAgQ2FsbCBO
b2RlTGlzdHNOb2RlRGF0YTo6YWRkQ2FjaGVkQ29sbGVjdGlvbigpIGRpcmVjdGx5LgorCisgICAg
ICAgICogaHRtbC9IVE1MVGFibGVSb3dzQ29sbGVjdGlvbi5jcHA6CisgICAgICAgICogaHRtbC9I
VE1MVGFibGVSb3dzQ29sbGVjdGlvbi5oOgorICAgICAgICBTdWJjbGFzcyBDYWNoZWRIVE1MQ29s
bGVjdGlvbiBpbnN0ZWFkIG9mIEhUTUxDb2xsZWN0aW9uLgorICAgICAgICBjdXN0b21FbGVtZW50
QWZ0ZXIoKSBubyBsb25nZXIgbmVlZHMgdG8gYmUgdmlydHVhbCBhcyBpdAorICAgICAgICBpcyBj
YWxsZWQgZGlyZWN0bHkgYnkgQ2FjaGVkSFRNTENvbGxlY3Rpb24gb24gdGhlIHN1YmNsYXNzLgor
CisgICAgICAgICogaHRtbC9IVE1MVGFibGVTZWN0aW9uRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MVGFibGVTZWN0aW9uRWxlbWVudDo6cm93cyk6CisgICAgICAgIENhbGwgTm9k
ZUxpc3RzTm9kZURhdGE6OmFkZENhY2hlZENvbGxlY3Rpb24oKSBkaXJlY3RseS4KKwogMjAxNS0w
OC0xMiAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgQ2FjaGVk
UmVzb3VyY2UgbGVhayBpbiB2YWxpZGF0aW9uIGNvZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXgg
ZTY4MzIxZWEyODQ4OTViYjFjYTc5OWYyZTUwY2E3NTc1Y2NkM2Y3Zi4uMDU4ZGY2ZWNhNzkxOGEy
MDQ2NTIzYTA5N2FiZGM1MWQ3Nzk0YTMwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTE2MDgs
NiArMTYwOCw3IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBodG1sL0Zvcm1Bc3NvY2lhdGVk
RWxlbWVudC5jcHAKICAgICBodG1sL0Zvcm1Db250cm9sbGVyLmNwcAogICAgIGh0bWwvRm9ybURh
dGFMaXN0LmNwcAorICAgIGh0bWwvR2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uLmNwcAogICAg
IGh0bWwvSFRNTEFsbENvbGxlY3Rpb24uY3BwCiAgICAgaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5j
cHAKICAgICBodG1sL0hUTUxBcHBsZXRFbGVtZW50LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDQxNzZmN2YzNmU5ZjdlN2Y2
NTZlZjdkNWRlMjM5NDIwNGU0YTQ5NjguLjNkYWM3ZWJmYzQwMTIwMzM1NjU2NDI2Y2RjMGEyODk0
YzFlOTI3OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTE2ODUsNiArMTY4NSw3IEBACiAJCTQ2QzgzRUZFMUE5QkJFMjkwMEE3
OUE0MSAvKiBHZW9Ob3RpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDZDODNFRkMxQTlCQkUyOTAwQTc5QTQxIC8qIEdlb05vdGlmaWVyLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDZEQjdENTcx
QjIwRkU0NjAwNTY1MUIyIC8qIFZOb2RlVHJhY2tlckNvY29hLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2REI3RDU2MUIyMEZFM0MwMDU2NTFCMiAv
KiBWTm9kZVRyYWNrZXJDb2NvYS5jcHAgKi87IH07CiAJCTQ2REJCNjUwMUFCOEM5NkYwMEQ5QTgx
MyAvKiBQb3dlck9ic2VydmVyTWFjLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0NkRCQjY0RTFBQjhDOTZGMDBEOUE4MTMgLyogUG93ZXJPYnNlcnZlck1h
Yy5oICovOyB9OworCQk0NkVCRUEwMjFCN0Q0RDY1MDBCRTQ5NDEgLyogQ29sbGVjdGlvblRyYXZl
cnNhbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZF
QkVBMDExQjdENEQ1RDAwQkU0OTQxIC8qIENvbGxlY3Rpb25UcmF2ZXJzYWwuaCAqLzsgfTsKIAkJ
NDZGM0UzRjkxQjIxMDkwMDAwODdFRDEzIC8qIFZOb2RlVHJhY2tlci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkRCN0Q1ODFCMjBGRTU4MDA1NjUx
QjIgLyogVk5vZGVUcmFja2VyLmNwcCAqLzsgfTsKIAkJNDZGM0UzRkExQjIxMDkxMDAwODdFRDEz
IC8qIFZOb2RlVHJhY2tlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDZEQjdENTkxQjIwRkU1ODAwNTY1MUIyIC8qIFZOb2RlVHJhY2tlci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2RkNCNjE4MUE3
MDgyMEUwMEM1QTIxRSAvKiBEaWFnbm9zdGljTG9nZ2luZ0tleXMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMzdCMzc1MTVDMUE3RTEwMDZEQzg5OCAv
KiBEaWFnbm9zdGljTG9nZ2luZ0tleXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwpAQCAtMjY2OSw2ICsyNjcwLDExIEBACiAJCTgyQUIxNzc2MTI1Qzgy
NjcwMEM1MDY5RCAvKiBJbnNwZWN0b3JSZXNvdXJjZUFnZW50LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MkFCMTc3MjEyNUM4MjY3MDBDNTA2OUQgLyog
SW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oICovOyB9OwogCQk4MkUzRDhERTEyMkVBMEQxMDAzQUU1
QkMgLyogQ1NTUHJvcGVydHlTb3VyY2VEYXRhLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgyRTNEOERDMTIyRUEwRDEwMDNBRTVCQyAvKiBDU1NQcm9w
ZXJ0eVNvdXJjZURhdGEuY3BwICovOyB9OwogCQk4MkUzRDhERjEyMkVBMEQxMDAzQUU1QkMgLyog
Q1NTUHJvcGVydHlTb3VyY2VEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4MkUzRDhERDEyMkVBMEQxMDAzQUU1QkMgLyogQ1NTUHJvcGVydHlTb3Vy
Y2VEYXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJODMwMDMwRjUxQjdEMzNCNTAwRUQzQUFDIC8qIEdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlv
bi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzAw
MzBGMzFCN0QzM0E2MDBFRDNBQUMgLyogR2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uLmNwcCAq
LzsgfTsKKwkJODMwMDMwRjYxQjdEMzNCNTAwRUQzQUFDIC8qIEdlbmVyaWNDYWNoZWRIVE1MQ29s
bGVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
ODMwMDMwRjQxQjdEMzNBNjAwRUQzQUFDIC8qIEdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbi5o
ICovOyB9OworCQk4MzAwMzBGODFCN0QzQjc4MDBFRDNBQUMgLyogQ2FjaGVkSFRNTENvbGxlY3Rp
b24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzMDAz
MEY3MUI3RDM5ODgwMEVEM0FBQyAvKiBDYWNoZWRIVE1MQ29sbGVjdGlvbi5oICovOyB9OworCQk4
MzFENDhDMDFCN0Q5QTUyMDA2REUzOUEgLyogQ2xhc3NOb2RlTGlzdC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzFENDhCRTFCN0Q5QTQ2MDA2REUz
OUEgLyogQ2xhc3NOb2RlTGlzdC5jcHAgKi87IH07CisJCTgzMUQ0OEMxMUI3RDlBNTIwMDZERTM5
QSAvKiBDbGFzc05vZGVMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4MzFENDhCRjFCN0Q5QTQ2MDA2REUzOUEgLyogQ2xhc3NOb2RlTGlzdC5oICov
OyB9OwogCQk4MzJCODQzNDE5RDhFNTUxMDBCMjYwNTUgLyogU1ZHQW5pbWF0ZUVsZW1lbnRCYXNl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzJCODQz
MzE5RDhFNTUxMDBCMjYwNTUgLyogU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmggKi87IH07CiAJCTgz
MkI4NDM2MTlEOEU1NzQwMEIyNjA1NSAvKiBTVkdBbmltYXRlRWxlbWVudEJhc2UuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODMyQjg0MzUxOUQ4RTU3
NDAwQjI2MDU1IC8qIFNWR0FuaW1hdGVFbGVtZW50QmFzZS5jcHAgKi87IH07CiAJCTgzNTIwQzdF
MUE3MUJGQ0MwMDZCRDJBQSAvKiBDU1NGb250RmFtaWx5LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzUyMEM3RDFBNzFCRkNDMDA2QkQyQUEgLyogQ1NT
Rm9udEZhbWlseS5oICovOyB9OwpAQCAtNTQxMCw4ICs1NDE2LDYgQEAKIAkJQkM4QkYxNUExMDU4
MTQxODAwQTQwQTA3IC8qIFVzZXJTdHlsZVNoZWV0VHlwZXMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDOEJGMTU5MTA1ODE0MTgwMEE0MEEwNyAvKiBV
c2VyU3R5bGVTaGVldFR5cGVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJQkM4QzhGQUQwRERDRDMxQjAwQjU5MkY0IC8qIFJlbmRlclN0eWxlLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDOEM4RkFC
MEREQ0QzMUIwMEI1OTJGNCAvKiBSZW5kZXJTdHlsZS5jcHAgKi87IH07CiAJCUJDOEM4RkFFMERE
Q0QzMUIwMEI1OTJGNCAvKiBSZW5kZXJTdHlsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQkM4QzhGQUMwRERDRDMxQjAwQjU5MkY0IC8qIFJlbmRlclN0
eWxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJ
QkM5MDRCNzYwRDEwOTk4RjAwNjgwRDMyIC8qIENsYXNzTm9kZUxpc3QuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM5MDRCNzIwRDEwOTk4RjAwNjgw
RDMyIC8qIENsYXNzTm9kZUxpc3QuY3BwICovOyB9OwotCQlCQzkwNEI3NzBEMTA5OThGMDA2ODBE
MzIgLyogQ2xhc3NOb2RlTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQkM5MDRCNzMwRDEwOTk4RjAwNjgwRDMyIC8qIENsYXNzTm9kZUxpc3QuaCAq
LzsgfTsKIAkJQkM5MjZGODAwQzA1NTI0NzAwODI3NzZCIC8qIEpTSFRNTEZyYW1lU2V0RWxlbWVu
dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzky
NkY3RTBDMDU1MjQ3MDA4Mjc3NkIgLyogSlNIVE1MRnJhbWVTZXRFbGVtZW50LmNwcCAqLzsgfTsK
IAkJQkM5MjZGODEwQzA1NTI0NzAwODI3NzZCIC8qIEpTSFRNTEZyYW1lU2V0RWxlbWVudC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM5MjZGN0YwQzA1
NTI0NzAwODI3NzZCIC8qIEpTSFRNTEZyYW1lU2V0RWxlbWVudC5oICovOyB9OwogCQlCQzk0MzlD
MzExNkNGNDk0MDA0OEM3NTAgLyogSlNOb2RlQ3VzdG9tLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzk0MzlDMjExNkNGNDk0MDA0OEM3NTAgLyogSlNO
b2RlQ3VzdG9tLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKQEAgLTg5MjQsNiArODkyOCw3IEBACiAJCTQ2REI3RDU4MUIyMEZFNTgwMDU2NTFCMiAvKiBW
Tm9kZVRyYWNrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVk5v
ZGVUcmFja2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZEQjdENTkxQjIw
RkU1ODAwNTY1MUIyIC8qIFZOb2RlVHJhY2tlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBWTm9kZVRyYWNrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZE
QkI2NEUxQUI4Qzk2RjAwRDlBODEzIC8qIFBvd2VyT2JzZXJ2ZXJNYWMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUG93ZXJPYnNlcnZlck1hYy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk0NkVCRUEwMTFCN0Q0RDVEMDBCRTQ5NDEgLyogQ29sbGVjdGlvblRyYXZl
cnNhbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb2xsZWN0aW9uVHJhdmVy
c2FsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5MDcwN0U0MTIxOUMwNDMwMEQ5
MEU1MSAvKiBBTkdMRVdlYktpdEJyaWRnZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBBTkdMRVdlYktpdEJyaWRnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQ5MDcwN0U1MTIxOUMwNDMwMEQ5MEU1MSAvKiBBTkdMRVdlYktpdEJyaWRnZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBTkdMRVdlYktpdEJyaWRnZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OTI5MUU0QTEzNDE3MkM4MDBFNzUzREUgLyogSW1h
Z2VSZW5kZXJpbmdNb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEltYWdl
UmVuZGVyaW5nTW9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTAwMjQsNiAr
MTAwMjksMTEgQEAKIAkJODJBQjE3NzIxMjVDODI2NzAwQzUwNjlEIC8qIEluc3BlY3RvclJlc291
cmNlQWdlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yUmVz
b3VyY2VBZ2VudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MkUzRDhEQzEyMkVB
MEQxMDAzQUU1QkMgLyogQ1NTUHJvcGVydHlTb3VyY2VEYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENTU1Byb3BlcnR5U291cmNlRGF0YS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgyRTNEOEREMTIyRUEwRDEwMDNBRTVCQyAvKiBDU1NQcm9w
ZXJ0eVNvdXJjZURhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1NTUHJv
cGVydHlTb3VyY2VEYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTgzMDAzMEYz
MUI3RDMzQTYwMEVEM0FBQyAvKiBHZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb24uY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0
aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODMwMDMwRjQxQjdEMzNBNjAw
RUQzQUFDIC8qIEdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBHZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb24uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODMwMDMwRjcxQjdEMzk4ODAwRUQzQUFDIC8qIENhY2hlZEhU
TUxDb2xsZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhY2hlZEhU
TUxDb2xsZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTgzMUQ0OEJFMUI3
RDlBNDYwMDZERTM5QSAvKiBDbGFzc05vZGVMaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IENsYXNzTm9kZUxpc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk4MzFENDhCRjFCN0Q5QTQ2MDA2REUzOUEgLyogQ2xhc3NOb2RlTGlzdC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDbGFzc05vZGVMaXN0Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTgzMkI4NDMzMTlEOEU1NTEwMEIyNjA1NSAvKiBTVkdBbmltYXRl
RWxlbWVudEJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHQW5pbWF0
ZUVsZW1lbnRCYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzMkI4NDM1MTlE
OEU1NzQwMEIyNjA1NSAvKiBTVkdBbmltYXRlRWxlbWVudEJhc2UuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODM1MjBDN0QxQTcxQkZDQzAwNkJEMkFBIC8qIENTU0Zv
bnRGYW1pbHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1NTRm9udEZhbWls
eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTI5OTIsOCArMTMwMDIsNiBAQAog
CQlCQzhCRjE1OTEwNTgxNDE4MDBBNDBBMDcgLyogVXNlclN0eWxlU2hlZXRUeXBlcy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVc2VyU3R5bGVTaGVldFR5cGVzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDOEM4RkFCMEREQ0QzMUIwMEI1OTJGNCAvKiBSZW5k
ZXJTdHlsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJT
dHlsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDOEM4RkFDMEREQ0QzMUIw
MEI1OTJGNCAvKiBSZW5kZXJTdHlsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBSZW5kZXJTdHlsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlCQzkwNEI3MjBE
MTA5OThGMDA2ODBEMzIgLyogQ2xhc3NOb2RlTGlzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBDbGFzc05vZGVMaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJQkM5MDRCNzMwRDEwOTk4RjAwNjgwRDMyIC8qIENsYXNzTm9kZUxpc3QuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2xhc3NOb2RlTGlzdC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlCQzkyNkY3RTBDMDU1MjQ3MDA4Mjc3NkIgLyogSlNIVE1MRnJh
bWVTZXRFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U0hUTUxGcmFtZVNldEVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlC
QzkyNkY3RjBDMDU1MjQ3MDA4Mjc3NkIgLyogSlNIVE1MRnJhbWVTZXRFbGVtZW50LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0hUTUxGcmFtZVNldEVsZW1lbnQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM5NDM5QzIxMTZDRjQ5NDAwNDhDNzUwIC8qIEpT
Tm9kZUN1c3RvbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU05vZGVDdXN0
b20uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE4MTYyLDEwICsxODE3MCwxMiBA
QAogCQkJCUY1NUIzRDdBMTI1MUYxMkQwMDNFRjI2OSAvKiBCYXNlVGV4dElucHV0VHlwZS5oICov
LAogCQkJCUY1NUIzRDdCMTI1MUYxMkQwMDNFRjI2OSAvKiBCdXR0b25JbnB1dFR5cGUuY3BwICov
LAogCQkJCUY1NUIzRDdDMTI1MUYxMkQwMDNFRjI2OSAvKiBCdXR0b25JbnB1dFR5cGUuaCAqLywK
KwkJCQk4MzAwMzBGNzFCN0QzOTg4MDBFRDNBQUMgLyogQ2FjaGVkSFRNTENvbGxlY3Rpb24uaCAq
LywKIAkJCQlGNTVCM0Q3RDEyNTFGMTJEMDAzRUYyNjkgLyogQ2hlY2tib3hJbnB1dFR5cGUuY3Bw
ICovLAogCQkJCUY1NUIzRDdFMTI1MUYxMkQwMDNFRjI2OSAvKiBDaGVja2JveElucHV0VHlwZS5o
ICovLAogCQkJCTRBQ0JDMEJDMTI3MTNDQkQwMDk0RjlCMiAvKiBDbGFzc0xpc3QuY3BwICovLAog
CQkJCTRBQ0JDMEJEMTI3MTNDQkQwMDk0RjlCMiAvKiBDbGFzc0xpc3QuaCAqLywKKwkJCQk0NkVC
RUEwMTFCN0Q0RDVEMDBCRTQ5NDEgLyogQ29sbGVjdGlvblRyYXZlcnNhbC5oICovLAogCQkJCTkz
QzQ0MUZGMEY4MTNBRTEwMEMxQTYzNCAvKiBDb2xsZWN0aW9uVHlwZS5oICovLAogCQkJCUJDMjk5
MzVDMTdBMURENTgwMEJDRTg4MCAvKiBDb2xvcklucHV0VHlwZS5jcHAgKi8sCiAJCQkJRjU1QjNE
ODAxMjUxRjEyRDAwM0VGMjY5IC8qIENvbG9ySW5wdXRUeXBlLmggKi8sCkBAIC0xODIwMCw2ICsx
ODIxMCw4IEBACiAJCQkJOUI1MEIxREMxN0NENEMwRjAwODdGNjNDIC8qIEZvcm1OYW1lZEl0ZW0u
aCAqLywKIAkJCQk5NzIwNUFBRDEyMzkyOENBMDBCMTczODAgLyogRlRQRGlyZWN0b3J5RG9jdW1l
bnQuY3BwICovLAogCQkJCTk3MjA1QUFFMTIzOTI4Q0EwMEIxNzM4MCAvKiBGVFBEaXJlY3RvcnlE
b2N1bWVudC5oICovLAorCQkJCTgzMDAzMEYzMUI3RDMzQTYwMEVEM0FBQyAvKiBHZW5lcmljQ2Fj
aGVkSFRNTENvbGxlY3Rpb24uY3BwICovLAorCQkJCTgzMDAzMEY0MUI3RDMzQTYwMEVEM0FBQyAv
KiBHZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb24uaCAqLywKIAkJCQlGNTVCM0Q4QjEyNTFGMTJE
MDAzRUYyNjkgLyogSGlkZGVuSW5wdXRUeXBlLmNwcCAqLywKIAkJCQlGNTVCM0Q4QzEyNTFGMTJE
MDAzRUYyNjkgLyogSGlkZGVuSW5wdXRUeXBlLmggKi8sCiAJCQkJQkM5N0UyMzkxMDkxNDQ5NTAw
MTBEMzYxIC8qIEhUTUxBbGxDb2xsZWN0aW9uLmNwcCAqLywKQEAgLTIzMTUzLDggKzIzMTY1LDgg
QEAKIAkJCQk4M0QyNkQzQzFBRkRDQzUwMDAxQjM4NzMgLyogQ2hpbGROb2RlLmlkbCAqLywKIAkJ
CQlBODE4NzIxQTA5NzdEM0MwMDA1ODI2RDkgLyogQ2hpbGROb2RlTGlzdC5jcHAgKi8sCiAJCQkJ
QTgxODcyMTUwOTc3RDNDMDAwNTgyNkQ5IC8qIENoaWxkTm9kZUxpc3QuaCAqLywKLQkJCQlCQzkw
NEI3MjBEMTA5OThGMDA2ODBEMzIgLyogQ2xhc3NOb2RlTGlzdC5jcHAgKi8sCi0JCQkJQkM5MDRC
NzMwRDEwOTk4RjAwNjgwRDMyIC8qIENsYXNzTm9kZUxpc3QuaCAqLywKKwkJCQk4MzFENDhCRTFC
N0Q5QTQ2MDA2REUzOUEgLyogQ2xhc3NOb2RlTGlzdC5jcHAgKi8sCisJCQkJODMxRDQ4QkYxQjdE
OUE0NjAwNkRFMzlBIC8qIENsYXNzTm9kZUxpc3QuaCAqLywKIAkJCQlCQ0MwNjU3NzBGM0NFMUI3
MDBDRDJEODcgLyogQ2xpZW50UmVjdC5jcHAgKi8sCiAJCQkJQkNDMDY1NzgwRjNDRTFCNzAwQ0Qy
RDg3IC8qIENsaWVudFJlY3QuaCAqLywKIAkJCQlCQ0MwNjU3OTBGM0NFMUI3MDBDRDJEODcgLyog
Q2xpZW50UmVjdC5pZGwgKi8sCkBAIC0yNDE3MCw3ICsyNDE4Miw2IEBACiAJCQkJMTREODIzNTIw
QUY5MkE3OTAwMDRGMDU3IC8qIENocm9tZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTREODI0MDgw
QUY5M0FFQjAwMDRGMDU3IC8qIENocm9tZUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNEFD
QkMwQkYxMjcxM0NCRDAwOTRGOUIyIC8qIENsYXNzTGlzdC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJ
QkM5MDRCNzcwRDEwOTk4RjAwNjgwRDMyIC8qIENsYXNzTm9kZUxpc3QuaCBpbiBIZWFkZXJzICov
LAogCQkJCUJDQzA2NTdFMEYzQ0UxQjcwMENEMkQ4NyAvKiBDbGllbnRSZWN0LmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCQ0MwNjU4MTBGM0NFMUI3MDBDRDJEODcgLyogQ2xpZW50UmVjdExpc3QuaCBp
biBIZWFkZXJzICovLAogCQkJCTg1MDMxQjQwMEE0NEVGQzcwMEY5OTJFMCAvKiBDbGlwYm9hcmRF
dmVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNDQ0Miw2ICsyNDQ1Myw3IEBACiAJCQkJODM3MkRC
MzExQTY3ODBBODAwQzY5N0M1IC8qIERpYWdub3N0aWNMb2dnaW5nUmVzdWx0VHlwZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQ0VDQURGQzcxNTM3NzhGRjAwRTM3MDY4IC8qIERpY3RhdGlvbkFsdGVy
bmF0aXZlLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRUNBREZDOTE1Mzc3OEZGMDBFMzcwNjggLyog
RGljdGF0aW9uQ29tbWFuZC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDZFQkVBMDIxQjdENEQ2NTAw
QkU0OTQxIC8qIENvbGxlY3Rpb25UcmF2ZXJzYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCUQwQkQ0
RjVEMTQwODg1MEYwMDY4MzlCNiAvKiBEaWN0YXRpb25Db21tYW5kSU9TLmggaW4gSGVhZGVycyAq
LywKIAkJCQkxNTE0NUI5MDFCM0ExQ0UwMDA2NjJCRjcgLyogTWVkaWFEZXZpY2VJbmZvLmggaW4g
SGVhZGVycyAqLywKIAkJCQkzMTYwMjNGMDE1MzJDNDBDMDBENTBGRjQgLyogRGljdGlvbmFyeS5o
IGluIEhlYWRlcnMgKi8sCkBAIC0yNDU0Nyw2ICsyNDU1OSw3IEBACiAJCQkJODVFNzExOTYwQUM1
RDUzNTAwNTMyNzBGIC8qIERPTURvY3VtZW50VHlwZUludGVybmFsLmggaW4gSGVhZGVycyAqLywK
IAkJCQk4NTE4RENFOTBBOUNDODBEMDA5MUI3QTYgLyogRE9NRE9NSW1wbGVtZW50YXRpb24uaCBp
biBIZWFkZXJzICovLAogCQkJCTg1RTcxMTk3MEFDNUQ1MzUwMDUzMjcwRiAvKiBET01ET01JbXBs
ZW1lbnRhdGlvbkludGVybmFsLmggaW4gSGVhZGVycyAqLywKKwkJCQk4MzFENDhDMTFCN0Q5QTUy
MDA2REUzOUEgLyogQ2xhc3NOb2RlTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTJDQ0E5RTgx
NUUzRjY0QzAwNTNDNzdGIC8qIERPTURPTU5hbWVkRmxvd0NvbGxlY3Rpb24uaCBpbiBIZWFkZXJz
ICovLAogCQkJCTUyQ0NBOUVBMTVFM0Y2NEMwMDUzQzc3RiAvKiBET01ET01OYW1lZEZsb3dDb2xs
ZWN0aW9uSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTJEOUEyNDc0MTVCOUMyRTMwMEQz
NDUyNyAvKiBET01ET01TZWN1cml0eVBvbGljeS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNTYyOSw2
ICsyNTY0Miw3IEBACiAJCQkJRkRBMTVFQjIxMkIwM0VFMTAwM0E1ODNBIC8qIEpTUGFubmVyTm9k
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOEE5QTU4NzUxMUU4NEM4MTAwOEFDRkQxIC8qIEpTUGVy
Zm9ybWFuY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCThBOUE1ODcxMTFFODRDMzYwMDhBQ0ZEMSAv
KiBKU1BlcmZvcm1hbmNlTmF2aWdhdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJODMwMDMwRjYx
QjdEMzNCNTAwRUQzQUFDIC8qIEdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbi5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJOEE5QTU4ODgxMUU4NEYzNzAwOEFDRkQxIC8qIEpTUGVyZm9ybWFuY2VUaW1p
bmcuaCBpbiBIZWFkZXJzICovLAogCQkJCUZERUE2MjQ3MTUyMTAyRkMwMDQ3OURGMCAvKiBKU1Bl
cmlvZGljV2F2ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNCNzBENkMwOUVCMEM3QzAwOUQ4NDY4
IC8qIEpTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNjk2OCw2
ICsyNjk4Miw3IEBACiAJCQkJQjIyMjdBNTEwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR051bWJlckxp
c3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3QTU0MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdQ
YWludC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjdBNTcwRDAwQkYyMjAwNzFCNzgyIC8qIFNW
R1BhcnNlclV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJODMwMDMwRjgxQjdEM0I3ODAw
RUQzQUFDIC8qIENhY2hlZEhUTUxDb2xsZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDNB
MEUzNjEzQTdENzYxMDBFODVBRjAgLyogU1ZHUGFyc2luZ0Vycm9yLmggaW4gSGVhZGVycyAqLywK
IAkJCQk4NEM2Nzg0RDEyMTQ4MTQ3MDBBOTI5MDIgLyogU1ZHUGF0aEJsZW5kZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTg0NzZDOUVCMTFERjZBMjkwMDU1NUIwMiAvKiBTVkdQYXRoQnVpbGRlci5o
IGluIEhlYWRlcnMgKi8sCkBAIC0yNzk2Myw3ICsyNzk3OCw2IEBACiAJCQkJMTREODIzOEIwQUY5
MkRGNjAwMDRGMDU3IC8qIENocm9tZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBQkFGMjIwODBD
MDNCMUM3MDBCMEJDRjAgLyogQ2hyb21lTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNEFDQkMw
QkUxMjcxM0NCRDAwOTRGOUIyIC8qIENsYXNzTGlzdC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlC
QzkwNEI3NjBEMTA5OThGMDA2ODBEMzIgLyogQ2xhc3NOb2RlTGlzdC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlCQ0MwNjU3RDBGM0NFMUI3MDBDRDJEODcgLyogQ2xpZW50UmVjdC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlCQ0MwNjU4MDBGM0NFMUI3MDBDRDJEODcgLyogQ2xpZW50UmVjdExpc3Qu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODUwMzFCM0YwQTQ0RUZDNzAwRjk5MkUwIC8qIENsaXBi
b2FyZEV2ZW50LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjg5NzAsNiArMjg5ODQsNyBAQAogCQkJ
CUE5QzZFNjRDMEQ3NDY1RTcwMDY0NDJFOSAvKiBKU0RPTVBsdWdpbkFycmF5Q3VzdG9tLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUE5QzZFNjREMEQ3NDY1RTcwMDY0NDJFOSAvKiBKU0RPTVBsdWdp
bkN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMTcyQUY4RjE4MTFCQzM3MDBGQkFEQjkg
LyogSlNET01Qcm9taXNlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTgzMUQ0OEMwMUI3RDlBNTIw
MDZERTM5QSAvKiBDbGFzc05vZGVMaXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDNUE4NkI1
MEMzMzY3RTgwMEVFQTY0OSAvKiBKU0RPTVNlbGVjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk0QUNCQzBDQTEyNzEzRDBBMDA5NEY5QjIgLyogSlNET01TZXR0YWJsZVRva2VuTGlzdC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlDNTEzN0NGMjExQTU4Mzc4MDA0QURCOTkgLyogSlNET01TdHJp
bmdMaXN0LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjkyNjIsNiArMjkyNzcsNyBAQAogCQkJCTA3
OTY5REJEMTdEMTQxNTEwMDdGRjg0MiAvKiBKU1JUQ1Nlc3Npb25EZXNjcmlwdGlvbkNhbGxiYWNr
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA3RDA3QjE0MTgzNDE1ODgwMEFCREQzQyAvKiBKU1JU
Q1Nlc3Npb25EZXNjcmlwdGlvbkN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzk2OURC
RjE3RDE0MTUxMDA3RkY4NDIgLyogSlNSVENTdGF0c0NhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCTgzMDAzMEY1MUI3RDMzQjUwMEVEM0FBQyAvKiBHZW5lcmljQ2FjaGVkSFRNTENvbGxl
Y3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDc5NjlEQzExN0QxNDE1MTAwN0ZGODQyIC8q
IEpTUlRDU3RhdHNSZXBvcnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDc5NjlEQzMxN0QxNDE1
MTAwN0ZGODQyIC8qIEpTUlRDU3RhdHNSZXNwb25zZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkw
N0RDNUZENDE3RDNFRUU5MDA5OUY4OTAgLyogSlNSVENTdGF0c1Jlc3BvbnNlQ3VzdG9tLmNwcCBp
biBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5v
ZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCmluZGV4IGJlM2Ez
YzE4N2E4NWMxYzdlOWY4NjRmZDNjZDdiMWE3ZGUyNmRhNjEuLmJlOTY0YmNmYzRhYmQ5ZTY2OGYz
NGYwZDRiMjAzNTExNzA2ZDdlNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250
YWluZXJOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAK
QEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJFZGl0b3IuaCIKICNpbmNsdWRlICJGbG9hdFJl
Y3QuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKKyNpbmNsdWRlICJHZW5lcmljQ2FjaGVkSFRN
TENvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5oIgog
I2luY2x1ZGUgIkhUTUxPcHRpb25zQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxUYWJsZVJv
d3NDb2xsZWN0aW9uLmgiCkBAIC05MDIsNyArOTAzLDcgQEAgUmVmUHRyPFJhZGlvTm9kZUxpc3Q+
IENvbnRhaW5lck5vZGU6OnJhZGlvTm9kZUxpc3QoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKQog
CiBSZWY8SFRNTENvbGxlY3Rpb24+IENvbnRhaW5lck5vZGU6OmNoaWxkcmVuKCkKIHsKLSAgICBy
ZXR1cm4gZW5zdXJlQ2FjaGVkSFRNTENvbGxlY3Rpb24oTm9kZUNoaWxkcmVuKTsKKyAgICByZXR1
cm4gZW5zdXJlUmFyZURhdGEoKS5lbnN1cmVOb2RlTGlzdHMoKS5hZGRDYWNoZWRDb2xsZWN0aW9u
PEdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbjxDb2xsZWN0aW9uVHlwZVRyYWl0czxOb2RlQ2hp
bGRyZW4+Ojp0cmF2ZXJzYWxUeXBlPj4oKnRoaXMsIE5vZGVDaGlsZHJlbik7CiB9CiAKIEVsZW1l
bnQqIENvbnRhaW5lck5vZGU6OmZpcnN0RWxlbWVudENoaWxkKCkgY29uc3QKQEAgLTkzOSwyMiAr
OTQwLDYgQEAgdm9pZCBDb250YWluZXJOb2RlOjpwcmVwZW5kKFZlY3RvcjxOb2RlT3JTdHJpbmc+
JiYgbm9kZU9yU3RyaW5nVmVjdG9yLCBFeGNlcHRpb24KICAgICBpbnNlcnRCZWZvcmUobm9kZS5y
ZWxlYXNlKCksIGZpcnN0Q2hpbGQoKSwgZWMpOwogfQogCi1SZWY8SFRNTENvbGxlY3Rpb24+IENv
bnRhaW5lck5vZGU6OmVuc3VyZUNhY2hlZEhUTUxDb2xsZWN0aW9uKENvbGxlY3Rpb25UeXBlIHR5
cGUpCi17Ci0gICAgaWYgKEhUTUxDb2xsZWN0aW9uKiBjb2xsZWN0aW9uID0gY2FjaGVkSFRNTENv
bGxlY3Rpb24odHlwZSkpCi0gICAgICAgIHJldHVybiAqY29sbGVjdGlvbjsKLQotICAgIGlmICh0
eXBlID09IFRhYmxlUm93cykKLSAgICAgICAgcmV0dXJuIGVuc3VyZVJhcmVEYXRhKCkuZW5zdXJl
Tm9kZUxpc3RzKCkuYWRkQ2FjaGVkQ29sbGVjdGlvbjxIVE1MVGFibGVSb3dzQ29sbGVjdGlvbj4o
ZG93bmNhc3Q8SFRNTFRhYmxlRWxlbWVudD4oKnRoaXMpLCB0eXBlKTsKLSAgICBlbHNlIGlmICh0
eXBlID09IFNlbGVjdE9wdGlvbnMpCi0gICAgICAgIHJldHVybiBlbnN1cmVSYXJlRGF0YSgpLmVu
c3VyZU5vZGVMaXN0cygpLmFkZENhY2hlZENvbGxlY3Rpb248SFRNTE9wdGlvbnNDb2xsZWN0aW9u
Pihkb3duY2FzdDxIVE1MU2VsZWN0RWxlbWVudD4oKnRoaXMpLCB0eXBlKTsKLSAgICBlbHNlIGlm
ICh0eXBlID09IEZvcm1Db250cm9scykgewotICAgICAgICBBU1NFUlQoaGFzVGFnTmFtZShIVE1M
TmFtZXM6OmZvcm1UYWcpIHx8IGhhc1RhZ05hbWUoSFRNTE5hbWVzOjpmaWVsZHNldFRhZykpOwot
ICAgICAgICByZXR1cm4gZW5zdXJlUmFyZURhdGEoKS5lbnN1cmVOb2RlTGlzdHMoKS5hZGRDYWNo
ZWRDb2xsZWN0aW9uPEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uPigqdGhpcywgdHlwZSk7Ci0g
ICAgfQotICAgIHJldHVybiBlbnN1cmVSYXJlRGF0YSgpLmVuc3VyZU5vZGVMaXN0cygpLmFkZENh
Y2hlZENvbGxlY3Rpb248SFRNTENvbGxlY3Rpb24+KCp0aGlzLCB0eXBlKTsKLX0KLQogSFRNTENv
bGxlY3Rpb24qIENvbnRhaW5lck5vZGU6OmNhY2hlZEhUTUxDb2xsZWN0aW9uKENvbGxlY3Rpb25U
eXBlIHR5cGUpCiB7CiAgICAgcmV0dXJuIGhhc1JhcmVEYXRhKCkgJiYgcmFyZURhdGEoKS0+bm9k
ZUxpc3RzKCkgPyByYXJlRGF0YSgpLT5ub2RlTGlzdHMoKS0+Y2FjaGVkQ29sbGVjdGlvbjxIVE1M
Q29sbGVjdGlvbj4odHlwZSkgOiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0NvbnRhaW5lck5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmgK
aW5kZXggZGEwNjIxZDdmMDVjNmVhYjgxZjBjNTdhMWRmZjU2MGJmZTY4OTlkZS4uMDViM2ZjYWVk
ODQ4ZGRkYjY2NTE3MTg0NzVjYjc2NGVmOTUwMTFiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0NvbnRhaW5lck5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVy
Tm9kZS5oCkBAIC0xNjksNyArMTY5LDYgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgc2V0Rmlyc3RD
aGlsZChOb2RlKiBjaGlsZCkgeyBtX2ZpcnN0Q2hpbGQgPSBjaGlsZDsgfQogICAgIHZvaWQgc2V0
TGFzdENoaWxkKE5vZGUqIGNoaWxkKSB7IG1fbGFzdENoaWxkID0gY2hpbGQ7IH0KIAotICAgIFJl
ZjxIVE1MQ29sbGVjdGlvbj4gZW5zdXJlQ2FjaGVkSFRNTENvbGxlY3Rpb24oQ29sbGVjdGlvblR5
cGUpOwogICAgIEhUTUxDb2xsZWN0aW9uKiBjYWNoZWRIVE1MQ29sbGVjdGlvbihDb2xsZWN0aW9u
VHlwZSk7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCAzM2Q3MTVkM2Yx
MjY2OTczNTRkYmUzMTEyYmY1NDU2YWUwOTVkOGNmLi5iMzcxN2Q5N2E0MWJhZjMzZTg3YTZkOTgy
ZDAzYjAyM2I0ZDllMjE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTYzLDEyICs2Mywx
MiBAQAogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGll
bnQuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKKyNpbmNsdWRlICJHZW5lcmljQ2FjaGVkSFRN
TENvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJIVE1MQWxsQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUg
IkhUTUxBbmNob3JFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEJhc2VFbGVtZW50LmgiCiAjaW5j
bHVkZSAiSFRNTEJvZHlFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTENhbnZhc0VsZW1lbnQuaCIK
LSNpbmNsdWRlICJIVE1MQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxEb2N1bWVudC5oIgog
I2luY2x1ZGUgIkhUTUxFbGVtZW50RmFjdG9yeS5oIgogI2luY2x1ZGUgIkhUTUxGb3JtQ29udHJv
bEVsZW1lbnQuaCIKQEAgLTQ3NzIsNTAgKzQ3NzIsNTEgQEAgYm9vbCBEb2N1bWVudDo6aGFzU1ZH
Um9vdE5vZGUoKSBjb25zdAogICAgIHJldHVybiBkb2N1bWVudEVsZW1lbnQoKSAmJiBkb2N1bWVu
dEVsZW1lbnQoKS0+aGFzVGFnTmFtZShTVkdOYW1lczo6c3ZnVGFnKTsKIH0KIAotUmVmPEhUTUxD
b2xsZWN0aW9uPiBEb2N1bWVudDo6ZW5zdXJlQ2FjaGVkQ29sbGVjdGlvbihDb2xsZWN0aW9uVHlw
ZSB0eXBlKQordGVtcGxhdGUgPENvbGxlY3Rpb25UeXBlIGNvbGxlY3Rpb25UeXBlPgorUmVmPEhU
TUxDb2xsZWN0aW9uPiBEb2N1bWVudDo6ZW5zdXJlQ2FjaGVkQ29sbGVjdGlvbigpCiB7Ci0gICAg
cmV0dXJuIGVuc3VyZVJhcmVEYXRhKCkuZW5zdXJlTm9kZUxpc3RzKCkuYWRkQ2FjaGVkQ29sbGVj
dGlvbjxIVE1MQ29sbGVjdGlvbj4oKnRoaXMsIHR5cGUpOworICAgIHJldHVybiBlbnN1cmVSYXJl
RGF0YSgpLmVuc3VyZU5vZGVMaXN0cygpLmFkZENhY2hlZENvbGxlY3Rpb248R2VuZXJpY0NhY2hl
ZEhUTUxDb2xsZWN0aW9uPENvbGxlY3Rpb25UeXBlVHJhaXRzPGNvbGxlY3Rpb25UeXBlPjo6dHJh
dmVyc2FsVHlwZT4+KCp0aGlzLCBjb2xsZWN0aW9uVHlwZSk7CiB9CiAKIFJlZjxIVE1MQ29sbGVj
dGlvbj4gRG9jdW1lbnQ6OmltYWdlcygpCiB7Ci0gICAgcmV0dXJuIGVuc3VyZUNhY2hlZENvbGxl
Y3Rpb24oRG9jSW1hZ2VzKTsKKyAgICByZXR1cm4gZW5zdXJlQ2FjaGVkQ29sbGVjdGlvbjxEb2NJ
bWFnZXM+KCk7CiB9CiAKIFJlZjxIVE1MQ29sbGVjdGlvbj4gRG9jdW1lbnQ6OmFwcGxldHMoKQog
ewotICAgIHJldHVybiBlbnN1cmVDYWNoZWRDb2xsZWN0aW9uKERvY0FwcGxldHMpOworICAgIHJl
dHVybiBlbnN1cmVDYWNoZWRDb2xsZWN0aW9uPERvY0FwcGxldHM+KCk7CiB9CiAKIFJlZjxIVE1M
Q29sbGVjdGlvbj4gRG9jdW1lbnQ6OmVtYmVkcygpCiB7Ci0gICAgcmV0dXJuIGVuc3VyZUNhY2hl
ZENvbGxlY3Rpb24oRG9jRW1iZWRzKTsKKyAgICByZXR1cm4gZW5zdXJlQ2FjaGVkQ29sbGVjdGlv
bjxEb2NFbWJlZHM+KCk7CiB9CiAKIFJlZjxIVE1MQ29sbGVjdGlvbj4gRG9jdW1lbnQ6OnBsdWdp
bnMoKQogewogICAgIC8vIFRoaXMgaXMgYW4gYWxpYXMgZm9yIGVtYmVkcygpIHJlcXVpcmVkIGZv
ciB0aGUgSlMgRE9NIGJpbmRpbmdzLgotICAgIHJldHVybiBlbnN1cmVDYWNoZWRDb2xsZWN0aW9u
KERvY0VtYmVkcyk7CisgICAgcmV0dXJuIGVuc3VyZUNhY2hlZENvbGxlY3Rpb248RG9jRW1iZWRz
PigpOwogfQogCiBSZWY8SFRNTENvbGxlY3Rpb24+IERvY3VtZW50OjpzY3JpcHRzKCkKIHsKLSAg
ICByZXR1cm4gZW5zdXJlQ2FjaGVkQ29sbGVjdGlvbihEb2NTY3JpcHRzKTsKKyAgICByZXR1cm4g
ZW5zdXJlQ2FjaGVkQ29sbGVjdGlvbjxEb2NTY3JpcHRzPigpOwogfQogCiBSZWY8SFRNTENvbGxl
Y3Rpb24+IERvY3VtZW50OjpsaW5rcygpCiB7Ci0gICAgcmV0dXJuIGVuc3VyZUNhY2hlZENvbGxl
Y3Rpb24oRG9jTGlua3MpOworICAgIHJldHVybiBlbnN1cmVDYWNoZWRDb2xsZWN0aW9uPERvY0xp
bmtzPigpOwogfQogCiBSZWY8SFRNTENvbGxlY3Rpb24+IERvY3VtZW50Ojpmb3JtcygpCiB7Ci0g
ICAgcmV0dXJuIGVuc3VyZUNhY2hlZENvbGxlY3Rpb24oRG9jRm9ybXMpOworICAgIHJldHVybiBl
bnN1cmVDYWNoZWRDb2xsZWN0aW9uPERvY0Zvcm1zPigpOwogfQogCiBSZWY8SFRNTENvbGxlY3Rp
b24+IERvY3VtZW50OjphbmNob3JzKCkKIHsKLSAgICByZXR1cm4gZW5zdXJlQ2FjaGVkQ29sbGVj
dGlvbihEb2NBbmNob3JzKTsKKyAgICByZXR1cm4gZW5zdXJlQ2FjaGVkQ29sbGVjdGlvbjxEb2NB
bmNob3JzPigpOwogfQogCiBSZWY8SFRNTENvbGxlY3Rpb24+IERvY3VtZW50OjphbGwoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuaAppbmRleCA4MGZlN2E0OGVlZjIxYjc0MTA1NDI0MjI4YTZmNzMyNmY2Y2Q0
YTI3Li5lNTNiZjNlMWM2YzFlZjIwOWIzMjkzMzZmMzcyZTFmODEwY2U5Zjk3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuaApAQCAtMTEzLDcgKzExMyw2IEBAIGNsYXNzIEhUTUxJRnJhbWVFbGVtZW50Owog
Y2xhc3MgSFRNTEltYWdlRWxlbWVudDsKIGNsYXNzIEhUTUxNYXBFbGVtZW50OwogY2xhc3MgSFRN
TE1lZGlhRWxlbWVudDsKLWNsYXNzIEhUTUxOYW1lQ29sbGVjdGlvbjsKIGNsYXNzIEhUTUxTY3Jp
cHRFbGVtZW50OwogY2xhc3MgSGl0VGVzdFJlcXVlc3Q7CiBjbGFzcyBIaXRUZXN0UmVzdWx0OwpA
QCAtMTM0NSw3ICsxMzQ0LDggQEAgcHJpdmF0ZToKIAogICAgIE5vZGUqIG5vZGVGcm9tUG9pbnQo
Y29uc3QgTGF5b3V0UG9pbnQmIGNsaWVudFBvaW50LCBMYXlvdXRQb2ludCogbG9jYWxQb2ludCA9
IG51bGxwdHIpOwogCi0gICAgUmVmPEhUTUxDb2xsZWN0aW9uPiBlbnN1cmVDYWNoZWRDb2xsZWN0
aW9uKENvbGxlY3Rpb25UeXBlKTsKKyAgICB0ZW1wbGF0ZSA8Q29sbGVjdGlvblR5cGUgY29sbGVj
dGlvblR5cGU+CisgICAgUmVmPEhUTUxDb2xsZWN0aW9uPiBlbnN1cmVDYWNoZWRDb2xsZWN0aW9u
KCk7CiAKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCiAgICAgdm9pZCBkaXNwYXRjaEZ1bGxT
Y3JlZW5DaGFuZ2VPckVycm9yRXZlbnQoRGVxdWU8UmVmUHRyPE5vZGU+PiYsIGNvbnN0IEF0b21p
Y1N0cmluZyYgZXZlbnROYW1lLCBib29sIHNob3VsZE5vdGlmeU1lZGlhRWxlbWVudCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudENoaWxkSXRlcmF0b3IuaCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50Q2hpbGRJdGVyYXRvci5oCmluZGV4IDk0Y2QzMTMyMjQzNGJk
YTA1YzlmNTZlMTdiMGUwNjRjMjI1ZTUxY2YuLjFhOTQ2YmI4ZmIxOTNjNjA0NTIwOWZmYmQ1MmNk
MzVhODljZmVjOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50Q2hpbGRJ
dGVyYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50Q2hpbGRJdGVyYXRvci5o
CkBAIC00MSw2ICs0MSw3IEBAIHB1YmxpYzoKIAogICAgIEVsZW1lbnRDaGlsZEl0ZXJhdG9yKGNv
bnN0IENvbnRhaW5lck5vZGUmIHBhcmVudCk7CiAgICAgRWxlbWVudENoaWxkSXRlcmF0b3IoY29u
c3QgQ29udGFpbmVyTm9kZSYgcGFyZW50LCBFbGVtZW50VHlwZSogY3VycmVudCk7CisgICAgRWxl
bWVudENoaWxkSXRlcmF0b3ImIG9wZXJhdG9yLS0oKTsKICAgICBFbGVtZW50Q2hpbGRJdGVyYXRv
ciYgb3BlcmF0b3IrKygpOwogfTsKIApAQCAtNTUsNiArNTYsNyBAQCBwdWJsaWM6CiAKICAgICBF
bGVtZW50Q2hpbGRDb25zdEl0ZXJhdG9yKGNvbnN0IENvbnRhaW5lck5vZGUmIHBhcmVudCk7CiAg
ICAgRWxlbWVudENoaWxkQ29uc3RJdGVyYXRvcihjb25zdCBDb250YWluZXJOb2RlJiBwYXJlbnQs
IGNvbnN0IEVsZW1lbnRUeXBlKiBjdXJyZW50KTsKKyAgICBFbGVtZW50Q2hpbGRDb25zdEl0ZXJh
dG9yJiBvcGVyYXRvci0tKCk7CiAgICAgRWxlbWVudENoaWxkQ29uc3RJdGVyYXRvciYgb3BlcmF0
b3IrKygpOwogfTsKIApAQCAtMTA4LDYgKzExMCwxMiBAQCBpbmxpbmUgRWxlbWVudENoaWxkSXRl
cmF0b3I8RWxlbWVudFR5cGU+OjpFbGVtZW50Q2hpbGRJdGVyYXRvcihjb25zdCBDb250YWluZXJO
bwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+CitpbmxpbmUgRWxlbWVudENo
aWxkSXRlcmF0b3I8RWxlbWVudFR5cGU+JiBFbGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50VHlw
ZT46Om9wZXJhdG9yLS0oKQoreworICAgIHJldHVybiBzdGF0aWNfY2FzdDxFbGVtZW50Q2hpbGRJ
dGVyYXRvcjxFbGVtZW50VHlwZT4mPihFbGVtZW50SXRlcmF0b3I8RWxlbWVudFR5cGU+Ojp0cmF2
ZXJzZVByZXZpb3VzU2libGluZygpKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRU
eXBlPgogaW5saW5lIEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiYgRWxlbWVudENo
aWxkSXRlcmF0b3I8RWxlbWVudFR5cGU+OjpvcGVyYXRvcisrKCkKIHsKICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8RWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVudFR5cGU+Jj4oRWxlbWVudEl0ZXJh
dG9yPEVsZW1lbnRUeXBlPjo6dHJhdmVyc2VOZXh0U2libGluZygpKTsKQEAgLTEyOCw2ICsxMzYs
MTMgQEAgaW5saW5lIEVsZW1lbnRDaGlsZENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+OjpFbGVt
ZW50Q2hpbGRDb25zdEl0ZXJhdG9yKGNvbnN0IEMKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIEVs
ZW1lbnRUeXBlPgoraW5saW5lIEVsZW1lbnRDaGlsZENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+
JiBFbGVtZW50Q2hpbGRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6b3BlcmF0b3ItLSgpCit7
CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEVsZW1lbnRDaGlsZENvbnN0SXRlcmF0b3I8RWxlbWVu
dFR5cGU+Jj4oRWxlbWVudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+Ojp0cmF2ZXJzZVByZXZp
b3VzU2libGluZygpKTsKK30KKworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+CiBp
bmxpbmUgRWxlbWVudENoaWxkQ29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT4mIEVsZW1lbnRDaGls
ZENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+OjpvcGVyYXRvcisrKCkKIHsKICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8RWxlbWVudENoaWxkQ29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT4mPihFbGVt
ZW50Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT46OnRyYXZlcnNlTmV4dFNpYmxpbmcoKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTGl2ZU5vZGVMaXN0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vTGl2ZU5vZGVMaXN0LmgKaW5kZXggMTk2ZTUwYmI4MmJlYmNjZjcyNjRiNDYzYTJl
ZWU2M2VhNmQxMGFiYi4uMDUyNTk4ZjdlOWI3YzdhYTgxYjVhYTcyMTIwOWU5YTkxMzQxODg3OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0xpdmVOb2RlTGlzdC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9MaXZlTm9kZUxpc3QuaApAQCAtMjUsNiArMjUsNyBAQAogI2RlZmluZSBM
aXZlTm9kZUxpc3RfaAogCiAjaW5jbHVkZSAiQ29sbGVjdGlvbkluZGV4Q2FjaGUuaCIKKyNpbmNs
dWRlICJDb2xsZWN0aW9uVHJhdmVyc2FsLmgiCiAjaW5jbHVkZSAiQ29sbGVjdGlvblR5cGUuaCIK
ICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkVsZW1lbnREZXNjZW5kYW50SXRlcmF0
b3IuaCIKQEAgLTgwLDI1ICs4MSwyOSBAQCBjbGFzcyBDYWNoZWRMaXZlTm9kZUxpc3QgOiBwdWJs
aWMgTGl2ZU5vZGVMaXN0IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5DYWNoZWRMaXZlTm9kZUxp
c3QoKTsKIAotICAgIHZpcnR1YWwgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3Qgb3ZlcnJpZGUgZmlu
YWw7Ci0gICAgdmlydHVhbCBOb2RlKiBpdGVtKHVuc2lnbmVkIG9mZnNldCkgY29uc3Qgb3ZlcnJp
ZGUgZmluYWw7CisgICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWwgeyBy
ZXR1cm4gbV9pbmRleENhY2hlLm5vZGVDb3VudChub2RlTGlzdCgpKTsgfQorICAgIE5vZGUqIGl0
ZW0odW5zaWduZWQgb2Zmc2V0KSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiBtX2luZGV4
Q2FjaGUubm9kZUF0KG5vZGVMaXN0KCksIG9mZnNldCk7IH0KIAogICAgIC8vIEZvciBDb2xsZWN0
aW9uSW5kZXhDYWNoZQotICAgIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IgY29sbGVjdGlvbkJl
Z2luKCkgY29uc3Q7Ci0gICAgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciBjb2xsZWN0aW9uTGFz
dCgpIGNvbnN0OworICAgIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IgY29sbGVjdGlvbkJlZ2lu
KCkgY29uc3QgeyByZXR1cm4gVHJhdmVyc2FsOjpiZWdpbihub2RlTGlzdCgpLCByb290Tm9kZSgp
KTsgfQorICAgIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IgY29sbGVjdGlvbkxhc3QoKSBjb25z
dCB7IHJldHVybiBUcmF2ZXJzYWw6Omxhc3Qobm9kZUxpc3QoKSwgcm9vdE5vZGUoKSk7IH0KICAg
ICBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yIGNvbGxlY3Rpb25FbmQoKSBjb25zdCB7IHJldHVy
biBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yKCk7IH0KLSAgICB2b2lkIGNvbGxlY3Rpb25UcmF2
ZXJzZUZvcndhcmQoRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciYsIHVuc2lnbmVkIGNvdW50LCB1
bnNpZ25lZCYgdHJhdmVyc2VkQ291bnQpIGNvbnN0OwotICAgIHZvaWQgY29sbGVjdGlvblRyYXZl
cnNlQmFja3dhcmQoRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciYsIHVuc2lnbmVkIGNvdW50KSBj
b25zdDsKKyAgICB2b2lkIGNvbGxlY3Rpb25UcmF2ZXJzZUZvcndhcmQoRWxlbWVudERlc2NlbmRh
bnRJdGVyYXRvciYgY3VycmVudCwgdW5zaWduZWQgY291bnQsIHVuc2lnbmVkJiB0cmF2ZXJzZWRD
b3VudCkgY29uc3QgeyBUcmF2ZXJzYWw6OnRyYXZlcnNlRm9yd2FyZChub2RlTGlzdCgpLCBjdXJy
ZW50LCBjb3VudCwgdHJhdmVyc2VkQ291bnQpOyB9CisgICAgdm9pZCBjb2xsZWN0aW9uVHJhdmVy
c2VCYWNrd2FyZChFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yJiBjdXJyZW50LCB1bnNpZ25lZCBj
b3VudCkgY29uc3QgeyBUcmF2ZXJzYWw6OnRyYXZlcnNlQmFja3dhcmQobm9kZUxpc3QoKSwgY3Vy
cmVudCwgY291bnQpOyB9CiAgICAgYm9vbCBjb2xsZWN0aW9uQ2FuVHJhdmVyc2VCYWNrd2FyZCgp
IGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KICAgICB2b2lkIHdpbGxWYWxpZGF0ZUluZGV4Q2FjaGUo
KSBjb25zdDsKIAogICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlQ2FjaGUoRG9jdW1lbnQmKSBj
b25zdCBvdmVycmlkZSBmaW5hbDsKLSAgICB2aXJ0dWFsIHNpemVfdCBtZW1vcnlDb3N0KCkgY29u
c3Qgb3ZlcnJpZGUgZmluYWw7CisgICAgdmlydHVhbCBzaXplX3QgbWVtb3J5Q29zdCgpIGNvbnN0
IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIG1faW5kZXhDYWNoZS5tZW1vcnlDb3N0KCk7IH0KIAog
cHJvdGVjdGVkOgogICAgIENhY2hlZExpdmVOb2RlTGlzdChDb250YWluZXJOb2RlJiByb290Tm9k
ZSwgTm9kZUxpc3RJbnZhbGlkYXRpb25UeXBlKTsKIAogcHJpdmF0ZToKKyAgICB1c2luZyBUcmF2
ZXJzYWwgPSBDb2xsZWN0aW9uVHJhdmVyc2FsPENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlOjpEZXNj
ZW5kYW50cz47CisgICAgTm9kZUxpc3RUeXBlJiBub2RlTGlzdCgpIHsgcmV0dXJuIHN0YXRpY19j
YXN0PE5vZGVMaXN0VHlwZSY+KCp0aGlzKTsgfQorICAgIGNvbnN0IE5vZGVMaXN0VHlwZSYgbm9k
ZUxpc3QoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBOb2RlTGlzdFR5cGUmPigq
dGhpcyk7IH0KKwogICAgIENvbnRhaW5lck5vZGUmIHJvb3ROb2RlKCkgY29uc3Q7CiAKICAgICBt
dXRhYmxlIENvbGxlY3Rpb25JbmRleENhY2hlPE5vZGVMaXN0VHlwZSwgRWxlbWVudERlc2NlbmRh
bnRJdGVyYXRvcj4gbV9pbmRleENhY2hlOwpAQCAtMTMxLDExNSArMTM2LDM5IEBAIEFMV0FZU19J
TkxJTkUgYm9vbCBzaG91bGRJbnZhbGlkYXRlVHlwZU9uQXR0cmlidXRlQ2hhbmdlKE5vZGVMaXN0
SW52YWxpZGF0aW9uVHlwCiB0ZW1wbGF0ZSA8Y2xhc3MgTm9kZUxpc3RUeXBlPgogQ2FjaGVkTGl2
ZU5vZGVMaXN0PE5vZGVMaXN0VHlwZT46OkNhY2hlZExpdmVOb2RlTGlzdChDb250YWluZXJOb2Rl
JiBvd25lck5vZGUsIE5vZGVMaXN0SW52YWxpZGF0aW9uVHlwZSBpbnZhbGlkYXRpb25UeXBlKQog
ICAgIDogTGl2ZU5vZGVMaXN0KG93bmVyTm9kZSwgaW52YWxpZGF0aW9uVHlwZSkKLSAgICAsIG1f
aW5kZXhDYWNoZShzdGF0aWNfY2FzdDxOb2RlTGlzdFR5cGUmPigqdGhpcykpCisgICAgLCBtX2lu
ZGV4Q2FjaGUobm9kZUxpc3QoKSkKIHsKIH0KIAogdGVtcGxhdGUgPGNsYXNzIE5vZGVMaXN0VHlw
ZT4KIENhY2hlZExpdmVOb2RlTGlzdDxOb2RlTGlzdFR5cGU+Ojp+Q2FjaGVkTGl2ZU5vZGVMaXN0
KCkKIHsKLSAgICBhdXRvJiBub2RlTGlzdCA9IHN0YXRpY19jYXN0PGNvbnN0IE5vZGVMaXN0VHlw
ZSY+KCp0aGlzKTsKLSAgICBpZiAobV9pbmRleENhY2hlLmhhc1ZhbGlkQ2FjaGUobm9kZUxpc3Qp
KQorICAgIGlmIChtX2luZGV4Q2FjaGUuaGFzVmFsaWRDYWNoZShub2RlTGlzdCgpKSkKICAgICAg
ICAgZG9jdW1lbnQoKS51bnJlZ2lzdGVyTm9kZUxpc3RGb3JJbnZhbGlkYXRpb24oKnRoaXMpOwog
fQogCiB0ZW1wbGF0ZSA8Y2xhc3MgTm9kZUxpc3RUeXBlPgogaW5saW5lIENvbnRhaW5lck5vZGUm
IENhY2hlZExpdmVOb2RlTGlzdDxOb2RlTGlzdFR5cGU+Ojpyb290Tm9kZSgpIGNvbnN0CiB7Ci0g
ICAgaWYgKHN0YXRpY19jYXN0PGNvbnN0IE5vZGVMaXN0VHlwZSY+KCp0aGlzKS5pc1Jvb3RlZEF0
RG9jdW1lbnQoKSAmJiBvd25lck5vZGUoKS5pbkRvY3VtZW50KCkpCisgICAgaWYgKG5vZGVMaXN0
KCkuaXNSb290ZWRBdERvY3VtZW50KCkgJiYgb3duZXJOb2RlKCkuaW5Eb2N1bWVudCgpKQogICAg
ICAgICByZXR1cm4gb3duZXJOb2RlKCkuZG9jdW1lbnQoKTsKIAogICAgIHJldHVybiBvd25lck5v
ZGUoKTsKIH0KIAogdGVtcGxhdGUgPGNsYXNzIE5vZGVMaXN0VHlwZT4KLUVsZW1lbnREZXNjZW5k
YW50SXRlcmF0b3IgQ2FjaGVkTGl2ZU5vZGVMaXN0PE5vZGVMaXN0VHlwZT46OmNvbGxlY3Rpb25C
ZWdpbigpIGNvbnN0Ci17Ci0gICAgYXV0byYgbm9kZUxpc3QgPSBzdGF0aWNfY2FzdDxjb25zdCBO
b2RlTGlzdFR5cGUmPigqdGhpcyk7Ci0gICAgYXV0byBkZXNjZW5kYW50cyA9IGVsZW1lbnREZXNj
ZW5kYW50cyhyb290Tm9kZSgpKTsKLSAgICBhdXRvIGVuZCA9IGRlc2NlbmRhbnRzLmVuZCgpOwot
ICAgIGZvciAoYXV0byBpdCA9IGRlc2NlbmRhbnRzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkg
ewotICAgICAgICBpZiAobm9kZUxpc3QuZWxlbWVudE1hdGNoZXMoKml0KSkKLSAgICAgICAgICAg
IHJldHVybiBpdDsKLSAgICB9Ci0gICAgcmV0dXJuIGVuZDsKLX0KLQotdGVtcGxhdGUgPGNsYXNz
IE5vZGVMaXN0VHlwZT4KLUVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IgQ2FjaGVkTGl2ZU5vZGVM
aXN0PE5vZGVMaXN0VHlwZT46OmNvbGxlY3Rpb25MYXN0KCkgY29uc3QKLXsKLSAgICBhdXRvJiBu
b2RlTGlzdCA9IHN0YXRpY19jYXN0PGNvbnN0IE5vZGVMaXN0VHlwZSY+KCp0aGlzKTsKLSAgICBh
dXRvIGRlc2NlbmRhbnRzID0gZWxlbWVudERlc2NlbmRhbnRzKHJvb3ROb2RlKCkpOwotICAgIGF1
dG8gZW5kID0gZGVzY2VuZGFudHMuZW5kKCk7Ci0gICAgZm9yIChhdXRvIGl0ID0gZGVzY2VuZGFu
dHMubGFzdCgpOyBpdCAhPSBlbmQ7IC0taXQpIHsKLSAgICAgICAgaWYgKG5vZGVMaXN0LmVsZW1l
bnRNYXRjaGVzKCppdCkpCi0gICAgICAgICAgICByZXR1cm4gaXQ7Ci0gICAgfQotICAgIHJldHVy
biBlbmQ7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBOb2RlTGlzdFR5cGU+Ci12b2lkIENhY2hlZExp
dmVOb2RlTGlzdDxOb2RlTGlzdFR5cGU+Ojpjb2xsZWN0aW9uVHJhdmVyc2VGb3J3YXJkKEVsZW1l
bnREZXNjZW5kYW50SXRlcmF0b3ImIGN1cnJlbnQsIHVuc2lnbmVkIGNvdW50LCB1bnNpZ25lZCYg
dHJhdmVyc2VkQ291bnQpIGNvbnN0Ci17Ci0gICAgYXV0byYgbm9kZUxpc3QgPSBzdGF0aWNfY2Fz
dDxjb25zdCBOb2RlTGlzdFR5cGUmPigqdGhpcyk7Ci0gICAgQVNTRVJUKG5vZGVMaXN0LmVsZW1l
bnRNYXRjaGVzKCpjdXJyZW50KSk7Ci0gICAgYXV0byBlbmQgPSBjb2xsZWN0aW9uRW5kKCk7Ci0g
ICAgZm9yICh0cmF2ZXJzZWRDb3VudCA9IDA7IHRyYXZlcnNlZENvdW50IDwgY291bnQ7ICsrdHJh
dmVyc2VkQ291bnQpIHsKLSAgICAgICAgZG8gewotICAgICAgICAgICAgKytjdXJyZW50OwotICAg
ICAgICAgICAgaWYgKGN1cnJlbnQgPT0gZW5kKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgfSB3aGlsZSAoIW5vZGVMaXN0LmVsZW1lbnRNYXRjaGVzKCpjdXJyZW50KSk7Ci0gICAg
fQotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgTm9kZUxpc3RUeXBlPgotdm9pZCBDYWNoZWRMaXZlTm9k
ZUxpc3Q8Tm9kZUxpc3RUeXBlPjo6Y29sbGVjdGlvblRyYXZlcnNlQmFja3dhcmQoRWxlbWVudERl
c2NlbmRhbnRJdGVyYXRvciYgY3VycmVudCwgdW5zaWduZWQgY291bnQpIGNvbnN0Ci17Ci0gICAg
YXV0byYgbm9kZUxpc3QgPSBzdGF0aWNfY2FzdDxjb25zdCBOb2RlTGlzdFR5cGUmPigqdGhpcyk7
Ci0gICAgQVNTRVJUKG5vZGVMaXN0LmVsZW1lbnRNYXRjaGVzKCpjdXJyZW50KSk7Ci0gICAgYXV0
byBlbmQgPSBjb2xsZWN0aW9uRW5kKCk7Ci0gICAgZm9yICg7IGNvdW50OyAtLWNvdW50KSB7Ci0g
ICAgICAgIGRvIHsKLSAgICAgICAgICAgIC0tY3VycmVudDsKLSAgICAgICAgICAgIGlmIChjdXJy
ZW50ID09IGVuZCkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0gd2hpbGUgKCFu
b2RlTGlzdC5lbGVtZW50TWF0Y2hlcygqY3VycmVudCkpOwotICAgIH0KLX0KLQotdGVtcGxhdGUg
PGNsYXNzIE5vZGVMaXN0VHlwZT4KIHZvaWQgQ2FjaGVkTGl2ZU5vZGVMaXN0PE5vZGVMaXN0VHlw
ZT46OndpbGxWYWxpZGF0ZUluZGV4Q2FjaGUoKSBjb25zdAogewotICAgIGRvY3VtZW50KCkucmVn
aXN0ZXJOb2RlTGlzdEZvckludmFsaWRhdGlvbihjb25zdF9jYXN0PE5vZGVMaXN0VHlwZSY+KHN0
YXRpY19jYXN0PGNvbnN0IE5vZGVMaXN0VHlwZSY+KCp0aGlzKSkpOworICAgIGRvY3VtZW50KCku
cmVnaXN0ZXJOb2RlTGlzdEZvckludmFsaWRhdGlvbihjb25zdF9jYXN0PENhY2hlZExpdmVOb2Rl
TGlzdDxOb2RlTGlzdFR5cGU+Jj4oKnRoaXMpKTsKIH0KIAogdGVtcGxhdGUgPGNsYXNzIE5vZGVM
aXN0VHlwZT4KIHZvaWQgQ2FjaGVkTGl2ZU5vZGVMaXN0PE5vZGVMaXN0VHlwZT46OmludmFsaWRh
dGVDYWNoZShEb2N1bWVudCYgZG9jdW1lbnQpIGNvbnN0CiB7Ci0gICAgYXV0byYgbm9kZUxpc3Qg
PSBzdGF0aWNfY2FzdDxjb25zdCBOb2RlTGlzdFR5cGUmPigqdGhpcyk7Ci0gICAgaWYgKCFtX2lu
ZGV4Q2FjaGUuaGFzVmFsaWRDYWNoZShub2RlTGlzdCkpCisgICAgaWYgKCFtX2luZGV4Q2FjaGUu
aGFzVmFsaWRDYWNoZShub2RlTGlzdCgpKSkKICAgICAgICAgcmV0dXJuOwotICAgIGRvY3VtZW50
LnVucmVnaXN0ZXJOb2RlTGlzdEZvckludmFsaWRhdGlvbihjb25zdF9jYXN0PE5vZGVMaXN0VHlw
ZSY+KG5vZGVMaXN0KSk7Ci0gICAgbV9pbmRleENhY2hlLmludmFsaWRhdGUobm9kZUxpc3QpOwot
fQotCi10ZW1wbGF0ZSA8Y2xhc3MgTm9kZUxpc3RUeXBlPgotdW5zaWduZWQgQ2FjaGVkTGl2ZU5v
ZGVMaXN0PE5vZGVMaXN0VHlwZT46Omxlbmd0aCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1faW5k
ZXhDYWNoZS5ub2RlQ291bnQoc3RhdGljX2Nhc3Q8Y29uc3QgTm9kZUxpc3RUeXBlJj4oKnRoaXMp
KTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIE5vZGVMaXN0VHlwZT4KLU5vZGUqIENhY2hlZExpdmVO
b2RlTGlzdDxOb2RlTGlzdFR5cGU+OjppdGVtKHVuc2lnbmVkIG9mZnNldCkgY29uc3QKLXsKLSAg
ICByZXR1cm4gbV9pbmRleENhY2hlLm5vZGVBdChzdGF0aWNfY2FzdDxjb25zdCBOb2RlTGlzdFR5
cGUmPigqdGhpcyksIG9mZnNldCk7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBOb2RlTGlzdFR5cGU+
Ci1zaXplX3QgQ2FjaGVkTGl2ZU5vZGVMaXN0PE5vZGVMaXN0VHlwZT46Om1lbW9yeUNvc3QoKSBj
b25zdAotewotICAgIHJldHVybiBtX2luZGV4Q2FjaGUubWVtb3J5Q29zdCgpOworICAgIGRvY3Vt
ZW50LnVucmVnaXN0ZXJOb2RlTGlzdEZvckludmFsaWRhdGlvbihjb25zdF9jYXN0PE5vZGVMaXN0
VHlwZSY+KG5vZGVMaXN0KCkpKTsKKyAgICBtX2luZGV4Q2FjaGUuaW52YWxpZGF0ZShub2RlTGlz
dCgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9DYWNoZWRIVE1MQ29sbGVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9D
YWNoZWRIVE1MQ29sbGVjdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU4MTEyYTY3ODg2ZjU0MDE0MGZlZWE3
ZmJlZWJiMjZjNWViNDYyMjcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0NhY2hlZEhUTUxDb2xsZWN0aW9uLmgKQEAgLTAsMCArMSwxNjUgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIENhY2hlZEhUTUxDb2xsZWN0aW9uX2gKKyNkZWZpbmUgQ2FjaGVkSFRNTENvbGxlY3Rp
b25faAorCisjaW5jbHVkZSAiQ29sbGVjdGlvblRyYXZlcnNhbC5oIgorI2luY2x1ZGUgIkhUTUxD
b2xsZWN0aW9uLmgiCisjaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgSFRNTENvbGxlY3Rpb25DbGFzcywgQ29sbGVjdGlv
blRyYXZlcnNhbFR5cGUgdHJhdmVyc2FsVHlwZT4KK2NsYXNzIENhY2hlZEhUTUxDb2xsZWN0aW9u
IDogcHVibGljIEhUTUxDb2xsZWN0aW9uIHsKK3B1YmxpYzoKKyAgICB1c2luZyBUcmF2ZXJzYWwg
PSBDb2xsZWN0aW9uVHJhdmVyc2FsPHRyYXZlcnNhbFR5cGU+OworICAgIHVzaW5nIEl0ZXJhdG9y
VHlwZSA9IHR5cGVuYW1lIFRyYXZlcnNhbDo6SXRlcmF0b3JUeXBlOworCisgICAgQ2FjaGVkSFRN
TENvbGxlY3Rpb24oQ29udGFpbmVyTm9kZSYgYmFzZSwgQ29sbGVjdGlvblR5cGUpOworCisgICAg
dmlydHVhbCB+Q2FjaGVkSFRNTENvbGxlY3Rpb24oKTsKKworICAgIHZpcnR1YWwgdW5zaWduZWQg
bGVuZ3RoKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWwgeyByZXR1cm4gbV9pbmRleENhY2hlLm5vZGVD
b3VudChjb2xsZWN0aW9uKCkpOyB9CisgICAgdmlydHVhbCBFbGVtZW50KiBpdGVtKHVuc2lnbmVk
IG9mZnNldCkgY29uc3Qgb3ZlcnJpZGUgZmluYWwgeyByZXR1cm4gbV9pbmRleENhY2hlLm5vZGVB
dChjb2xsZWN0aW9uKCksIG9mZnNldCk7IH0KKyAgICB2aXJ0dWFsIEVsZW1lbnQqIG5hbWVkSXRl
bShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwg
c2l6ZV90IG1lbW9yeUNvc3QoKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiBtX2luZGV4
Q2FjaGUubWVtb3J5Q29zdCgpICsgSFRNTENvbGxlY3Rpb246Om1lbW9yeUNvc3QoKTsgfQorCisg
ICAgLy8gRm9yIENvbGxlY3Rpb25JbmRleENhY2hlOyBkbyBub3QgdXNlIGVsc2V3aGVyZS4KKyAg
ICBJdGVyYXRvclR5cGUgY29sbGVjdGlvbkJlZ2luKCkgY29uc3QgeyByZXR1cm4gVHJhdmVyc2Fs
OjpiZWdpbihjb2xsZWN0aW9uKCksIHJvb3ROb2RlKCkpOyB9CisgICAgSXRlcmF0b3JUeXBlIGNv
bGxlY3Rpb25MYXN0KCkgY29uc3QgeyByZXR1cm4gVHJhdmVyc2FsOjpsYXN0KGNvbGxlY3Rpb24o
KSwgcm9vdE5vZGUoKSk7IH0KKyAgICBJdGVyYXRvclR5cGUgY29sbGVjdGlvbkVuZCgpIGNvbnN0
IHsgcmV0dXJuIFRyYXZlcnNhbDo6ZW5kKHJvb3ROb2RlKCkpOyB9CisgICAgdm9pZCBjb2xsZWN0
aW9uVHJhdmVyc2VGb3J3YXJkKEl0ZXJhdG9yVHlwZSYgY3VycmVudCwgdW5zaWduZWQgY291bnQs
IHVuc2lnbmVkJiB0cmF2ZXJzZWRDb3VudCkgY29uc3QgeyBUcmF2ZXJzYWw6OnRyYXZlcnNlRm9y
d2FyZChjb2xsZWN0aW9uKCksIGN1cnJlbnQsIGNvdW50LCB0cmF2ZXJzZWRDb3VudCk7IH0KKyAg
ICB2b2lkIGNvbGxlY3Rpb25UcmF2ZXJzZUJhY2t3YXJkKEl0ZXJhdG9yVHlwZSYgY3VycmVudCwg
dW5zaWduZWQgY291bnQpIGNvbnN0IHsgVHJhdmVyc2FsOjp0cmF2ZXJzZUJhY2t3YXJkKGNvbGxl
Y3Rpb24oKSwgY3VycmVudCwgY291bnQpOyB9CisgICAgYm9vbCBjb2xsZWN0aW9uQ2FuVHJhdmVy
c2VCYWNrd2FyZCgpIGNvbnN0IHsgcmV0dXJuIHRyYXZlcnNhbFR5cGUgIT0gQ29sbGVjdGlvblRy
YXZlcnNhbFR5cGU6OkN1c3RvbUZvcndhcmRPbmx5OyB9CisgICAgdm9pZCB3aWxsVmFsaWRhdGVJ
bmRleENhY2hlKCkgY29uc3Q7CisKKyAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZUNhY2hlKERv
Y3VtZW50Jikgb3ZlcnJpZGU7CisKKyAgICBib29sIGVsZW1lbnRNYXRjaGVzKEVsZW1lbnQmKSBj
b25zdDsKKworcHJpdmF0ZToKKyAgICBIVE1MQ29sbGVjdGlvbkNsYXNzJiBjb2xsZWN0aW9uKCkg
eyByZXR1cm4gc3RhdGljX2Nhc3Q8SFRNTENvbGxlY3Rpb25DbGFzcyY+KCp0aGlzKTsgfQorICAg
IGNvbnN0IEhUTUxDb2xsZWN0aW9uQ2xhc3MmIGNvbGxlY3Rpb24oKSBjb25zdCB7IHJldHVybiBz
dGF0aWNfY2FzdDxjb25zdCBIVE1MQ29sbGVjdGlvbkNsYXNzJj4oKnRoaXMpOyB9CisKKyAgICBt
dXRhYmxlIENvbGxlY3Rpb25JbmRleENhY2hlPEhUTUxDb2xsZWN0aW9uQ2xhc3MsIEl0ZXJhdG9y
VHlwZT4gbV9pbmRleENhY2hlOworfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIEhUTUxDb2xsZWN0
aW9uQ2xhc3MsIENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlIHRyYXZlcnNhbFR5cGU+CitDYWNoZWRI
VE1MQ29sbGVjdGlvbjxIVE1MQ29sbGVjdGlvbkNsYXNzLCB0cmF2ZXJzYWxUeXBlPjo6Q2FjaGVk
SFRNTENvbGxlY3Rpb24oQ29udGFpbmVyTm9kZSYgYmFzZSwgQ29sbGVjdGlvblR5cGUgY29sbGVj
dGlvblR5cGUpCisgICAgOiBIVE1MQ29sbGVjdGlvbihiYXNlLCBjb2xsZWN0aW9uVHlwZSkKKyAg
ICAsIG1faW5kZXhDYWNoZShjb2xsZWN0aW9uKCkpCit7IH0KKwordGVtcGxhdGUgPHR5cGVuYW1l
IEhUTUxDb2xsZWN0aW9uQ2xhc3MsIENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlIHRyYXZlcnNhbFR5
cGU+CitDYWNoZWRIVE1MQ29sbGVjdGlvbjxIVE1MQ29sbGVjdGlvbkNsYXNzLCB0cmF2ZXJzYWxU
eXBlPjo6fkNhY2hlZEhUTUxDb2xsZWN0aW9uKCkKK3sKKyAgICBpZiAobV9pbmRleENhY2hlLmhh
c1ZhbGlkQ2FjaGUoY29sbGVjdGlvbigpKSkKKyAgICAgICAgZG9jdW1lbnQoKS51bnJlZ2lzdGVy
Q29sbGVjdGlvbigqdGhpcyk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBIVE1MQ29sbGVjdGlv
bkNsYXNzLCBDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZSB0cmF2ZXJzYWxUeXBlPgordm9pZCBDYWNo
ZWRIVE1MQ29sbGVjdGlvbjxIVE1MQ29sbGVjdGlvbkNsYXNzLCB0cmF2ZXJzYWxUeXBlPjo6d2ls
bFZhbGlkYXRlSW5kZXhDYWNoZSgpIGNvbnN0Cit7CisgICAgZG9jdW1lbnQoKS5yZWdpc3RlckNv
bGxlY3Rpb24oY29uc3RfY2FzdDxDYWNoZWRIVE1MQ29sbGVjdGlvbjxIVE1MQ29sbGVjdGlvbkNs
YXNzLCB0cmF2ZXJzYWxUeXBlPiY+KCp0aGlzKSk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBI
VE1MQ29sbGVjdGlvbkNsYXNzLCBDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZSB0cmF2ZXJzYWxUeXBl
Pgordm9pZCBDYWNoZWRIVE1MQ29sbGVjdGlvbjxIVE1MQ29sbGVjdGlvbkNsYXNzLCB0cmF2ZXJz
YWxUeXBlPjo6aW52YWxpZGF0ZUNhY2hlKERvY3VtZW50JiBkb2N1bWVudCkKK3sKKyAgICBIVE1M
Q29sbGVjdGlvbjo6aW52YWxpZGF0ZUNhY2hlKGRvY3VtZW50KTsKKyAgICBpZiAobV9pbmRleENh
Y2hlLmhhc1ZhbGlkQ2FjaGUoY29sbGVjdGlvbigpKSkgeworICAgICAgICBkb2N1bWVudC51bnJl
Z2lzdGVyQ29sbGVjdGlvbigqdGhpcyk7CisgICAgICAgIG1faW5kZXhDYWNoZS5pbnZhbGlkYXRl
KGNvbGxlY3Rpb24oKSk7CisgICAgfQorfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgSFRNTENvbGxl
Y3Rpb25DbGFzcywgQ29sbGVjdGlvblRyYXZlcnNhbFR5cGUgdHJhdmVyc2FsVHlwZT4KK2Jvb2wg
Q2FjaGVkSFRNTENvbGxlY3Rpb248SFRNTENvbGxlY3Rpb25DbGFzcywgdHJhdmVyc2FsVHlwZT46
OmVsZW1lbnRNYXRjaGVzKEVsZW1lbnQmKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworc3RhdGljIGlubGluZSBib29sIG5hbWVTaG91
bGRCZVZpc2libGVJbkRvY3VtZW50QWxsKEhUTUxFbGVtZW50JiBlbGVtZW50KQoreworICAgIC8v
IFRoZSBkb2N1bWVudC5hbGwgY29sbGVjdGlvbiByZXR1cm5zIG9ubHkgY2VydGFpbiB0eXBlcyBv
ZiBlbGVtZW50cyBieSBuYW1lLAorICAgIC8vIGFsdGhvdWdoIGl0IHJldHVybnMgYW55IHR5cGUg
b2YgZWxlbWVudCBieSBpZC4KKyAgICByZXR1cm4gZWxlbWVudC5oYXNUYWdOYW1lKEhUTUxOYW1l
czo6YXBwbGV0VGFnKQorICAgICAgICB8fCBlbGVtZW50Lmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpl
bWJlZFRhZykKKyAgICAgICAgfHwgZWxlbWVudC5oYXNUYWdOYW1lKEhUTUxOYW1lczo6Zm9ybVRh
ZykKKyAgICAgICAgfHwgZWxlbWVudC5oYXNUYWdOYW1lKEhUTUxOYW1lczo6aW1nVGFnKQorICAg
ICAgICB8fCBlbGVtZW50Lmhhc1RhZ05hbWUoSFRNTE5hbWVzOjppbnB1dFRhZykKKyAgICAgICAg
fHwgZWxlbWVudC5oYXNUYWdOYW1lKEhUTUxOYW1lczo6b2JqZWN0VGFnKQorICAgICAgICB8fCBl
bGVtZW50Lmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpzZWxlY3RUYWcpOworfQorCitzdGF0aWMgaW5s
aW5lIGJvb2wgbmFtZVNob3VsZEJlVmlzaWJsZUluRG9jdW1lbnRBbGwoRWxlbWVudCYgZWxlbWVu
dCkKK3sKKyAgICByZXR1cm4gaXM8SFRNTEVsZW1lbnQ+KGVsZW1lbnQpICYmIG5hbWVTaG91bGRC
ZVZpc2libGVJbkRvY3VtZW50QWxsKGRvd25jYXN0PEhUTUxFbGVtZW50PihlbGVtZW50KSk7Cit9
CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBIVE1MQ29sbGVjdGlvbkNsYXNzLCBDb2xsZWN0aW9uVHJh
dmVyc2FsVHlwZSB0cmF2ZXJzYWxUeXBlPgorRWxlbWVudCogQ2FjaGVkSFRNTENvbGxlY3Rpb248
SFRNTENvbGxlY3Rpb25DbGFzcywgdHJhdmVyc2FsVHlwZT46Om5hbWVkSXRlbShjb25zdCBBdG9t
aWNTdHJpbmcmIG5hbWUpIGNvbnN0Cit7CisgICAgLy8gaHR0cDovL21zZG4ubWljcm9zb2Z0LmNv
bS93b3Jrc2hvcC9hdXRob3IvZGh0bWwvcmVmZXJlbmNlL21ldGhvZHMvbmFtZWRpdGVtLmFzcAor
ICAgIC8vIFRoaXMgbWV0aG9kIGZpcnN0IHNlYXJjaGVzIGZvciBhbiBvYmplY3Qgd2l0aCBhIG1h
dGNoaW5nIGlkCisgICAgLy8gYXR0cmlidXRlLiBJZiBhIG1hdGNoIGlzIG5vdCBmb3VuZCwgdGhl
IG1ldGhvZCB0aGVuIHNlYXJjaGVzIGZvciBhbgorICAgIC8vIG9iamVjdCB3aXRoIGEgbWF0Y2hp
bmcgbmFtZSBhdHRyaWJ1dGUsIGJ1dCBvbmx5IG9uIHRob3NlIGVsZW1lbnRzCisgICAgLy8gdGhh
dCBhcmUgYWxsb3dlZCBhIG5hbWUgYXR0cmlidXRlLgorCisgICAgaWYgKG5hbWUuaXNFbXB0eSgp
KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIENvbnRhaW5lck5vZGUmIHJvb3QgPSBy
b290Tm9kZSgpOworICAgIGlmICh0cmF2ZXJzYWxUeXBlICE9IENvbGxlY3Rpb25UcmF2ZXJzYWxU
eXBlOjpDdXN0b21Gb3J3YXJkT25seSAmJiByb290LmlzSW5UcmVlU2NvcGUoKSkgeworICAgICAg
ICBFbGVtZW50KiBjYW5kaWRhdGUgPSBudWxscHRyOworCisgICAgICAgIFRyZWVTY29wZSYgdHJl
ZVNjb3BlID0gcm9vdC50cmVlU2NvcGUoKTsKKyAgICAgICAgaWYgKHRyZWVTY29wZS5oYXNFbGVt
ZW50V2l0aElkKCpuYW1lLmltcGwoKSkpIHsKKyAgICAgICAgICAgIGlmICghdHJlZVNjb3BlLmNv
bnRhaW5zTXVsdGlwbGVFbGVtZW50c1dpdGhJZChuYW1lKSkKKyAgICAgICAgICAgICAgICBjYW5k
aWRhdGUgPSB0cmVlU2NvcGUuZ2V0RWxlbWVudEJ5SWQobmFtZSk7CisgICAgICAgIH0gZWxzZSBp
ZiAodHJlZVNjb3BlLmhhc0VsZW1lbnRXaXRoTmFtZSgqbmFtZS5pbXBsKCkpKSB7CisgICAgICAg
ICAgICBpZiAoIXRyZWVTY29wZS5jb250YWluc011bHRpcGxlRWxlbWVudHNXaXRoTmFtZShuYW1l
KSkgeworICAgICAgICAgICAgICAgIGNhbmRpZGF0ZSA9IHRyZWVTY29wZS5nZXRFbGVtZW50QnlO
YW1lKG5hbWUpOworICAgICAgICAgICAgICAgIGlmIChjYW5kaWRhdGUgJiYgdHlwZSgpID09IERv
Y0FsbCAmJiAhbmFtZVNob3VsZEJlVmlzaWJsZUluRG9jdW1lbnRBbGwoKmNhbmRpZGF0ZSkpCisg
ICAgICAgICAgICAgICAgICAgIGNhbmRpZGF0ZSA9IG51bGxwdHI7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0gZWxzZQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAgICAgaWYg
KGNhbmRpZGF0ZSAmJiBjb2xsZWN0aW9uKCkuZWxlbWVudE1hdGNoZXMoKmNhbmRpZGF0ZSkpIHsK
KyAgICAgICAgICAgIGlmICh0cmF2ZXJzYWxUeXBlID09IENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBl
OjpDaGlsZHJlbk9ubHkgPyBjYW5kaWRhdGUtPnBhcmVudE5vZGUoKSA9PSAmcm9vdCA6IGNhbmRp
ZGF0ZS0+aXNEZXNjZW5kYW50T2YoJnJvb3QpKQorICAgICAgICAgICAgICAgIHJldHVybiBjYW5k
aWRhdGU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gSFRNTENvbGxlY3Rpb246Om5h
bWVkSXRlbShuYW1lKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8g
Q2FjaGVkSFRNTENvbGxlY3Rpb25faAorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0NvbGxlY3Rpb25UcmF2ZXJzYWwuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ29sbGVjdGlvblRy
YXZlcnNhbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc5OTk2ZjEzOWM0MTJhM2Y3NzYyOWM5NWYxNmVmMGY1ZDU2
NGZmY2IKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0NvbGxlY3Rpb25U
cmF2ZXJzYWwuaApAQCAtMCwwICsxLDIzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQ29sbGVj
dGlvblRyYXZlcnNhbF9oCisjZGVmaW5lIENvbGxlY3Rpb25UcmF2ZXJzYWxfaAorCisjaW5jbHVk
ZSAiQ29sbGVjdGlvblR5cGUuaCIKKyNpbmNsdWRlICJFbGVtZW50Q2hpbGRJdGVyYXRvci5oIgor
I2luY2x1ZGUgIkVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IuaCIKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCit0ZW1wbGF0ZSA8Q29sbGVjdGlvblRyYXZlcnNhbFR5cGUgdHJhdmVyc2FsVHlwZT4K
K3N0cnVjdCBDb2xsZWN0aW9uVHJhdmVyc2FsIHsgfTsKKwordGVtcGxhdGUgPD4KK3N0cnVjdCBD
b2xsZWN0aW9uVHJhdmVyc2FsPENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlOjpEZXNjZW5kYW50cz4g
eworICAgIHVzaW5nIEl0ZXJhdG9yVHlwZSA9IEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I7CisK
KyAgICBzdGF0aWMgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciBlbmQoQ29udGFpbmVyTm9kZSYp
IHsgcmV0dXJuIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IoKTsgfQorCisgICAgdGVtcGxhdGUg
PHR5cGVuYW1lIENvbGxlY3Rpb25DbGFzcz4KKyAgICBzdGF0aWMgRWxlbWVudERlc2NlbmRhbnRJ
dGVyYXRvciBiZWdpbihjb25zdCBDb2xsZWN0aW9uQ2xhc3MmLCBDb250YWluZXJOb2RlJiByb290
Tm9kZSk7CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ29sbGVjdGlvbkNsYXNzPgorICAgIHN0
YXRpYyBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yIGxhc3QoY29uc3QgQ29sbGVjdGlvbkNsYXNz
JiwgQ29udGFpbmVyTm9kZSYgcm9vdE5vZGUpOworCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIENv
bGxlY3Rpb25DbGFzcz4KKyAgICBzdGF0aWMgdm9pZCB0cmF2ZXJzZUZvcndhcmQoY29uc3QgQ29s
bGVjdGlvbkNsYXNzJiwgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciYgY3VycmVudCwgdW5zaWdu
ZWQgY291bnQsIHVuc2lnbmVkJiB0cmF2ZXJzZWRDb3VudCk7CisKKyAgICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgQ29sbGVjdGlvbkNsYXNzPgorICAgIHN0YXRpYyB2b2lkIHRyYXZlcnNlQmFja3dhcmQo
Y29uc3QgQ29sbGVjdGlvbkNsYXNzJiwgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciYgY3VycmVu
dCwgdW5zaWduZWQgY291bnQpOworfTsKKwordGVtcGxhdGUgPD4KK3N0cnVjdCBDb2xsZWN0aW9u
VHJhdmVyc2FsPENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlOjpDaGlsZHJlbk9ubHk+IHsKKyAgICB1
c2luZyBJdGVyYXRvclR5cGUgPSBFbGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50PjsKKworICAg
IHN0YXRpYyBFbGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50PiBlbmQoQ29udGFpbmVyTm9kZSYg
cm9vdE5vZGUpIHsgcmV0dXJuIEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnQ+KHJvb3ROb2Rl
KTsgfQorCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIENvbGxlY3Rpb25DbGFzcz4KKyAgICBzdGF0
aWMgRWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVudD4gYmVnaW4oY29uc3QgQ29sbGVjdGlvbkNs
YXNzJiwgQ29udGFpbmVyTm9kZSYgcm9vdE5vZGUpOworCisgICAgdGVtcGxhdGUgPHR5cGVuYW1l
IENvbGxlY3Rpb25DbGFzcz4KKyAgICBzdGF0aWMgRWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVu
dD4gbGFzdChjb25zdCBDb2xsZWN0aW9uQ2xhc3MmLCBDb250YWluZXJOb2RlJiByb290Tm9kZSk7
CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ29sbGVjdGlvbkNsYXNzPgorICAgIHN0YXRpYyB2
b2lkIHRyYXZlcnNlRm9yd2FyZChjb25zdCBDb2xsZWN0aW9uQ2xhc3MmLCBFbGVtZW50Q2hpbGRJ
dGVyYXRvcjxFbGVtZW50PiYgY3VycmVudCwgdW5zaWduZWQgY291bnQsIHVuc2lnbmVkJiB0cmF2
ZXJzZWRDb3VudCk7CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ29sbGVjdGlvbkNsYXNzPgor
ICAgIHN0YXRpYyB2b2lkIHRyYXZlcnNlQmFja3dhcmQoY29uc3QgQ29sbGVjdGlvbkNsYXNzJiwg
RWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVudD4mIGN1cnJlbnQsIHVuc2lnbmVkIGNvdW50KTsK
K307CisKK3RlbXBsYXRlIDw+CitzdHJ1Y3QgQ29sbGVjdGlvblRyYXZlcnNhbDxDb2xsZWN0aW9u
VHJhdmVyc2FsVHlwZTo6Q3VzdG9tRm9yd2FyZE9ubHk+IHsKKyAgICB1c2luZyBJdGVyYXRvclR5
cGUgPSBFbGVtZW50KjsKKworICAgIHN0YXRpYyBFbGVtZW50KiBlbmQoQ29udGFpbmVyTm9kZSYp
IHsgcmV0dXJuIG51bGxwdHI7IH0KKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDb2xsZWN0aW9u
Q2xhc3M+CisgICAgc3RhdGljIEVsZW1lbnQqIGJlZ2luKGNvbnN0IENvbGxlY3Rpb25DbGFzcyYs
IENvbnRhaW5lck5vZGUmKTsKKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDb2xsZWN0aW9uQ2xh
c3M+CisgICAgc3RhdGljIEVsZW1lbnQqIGxhc3QoY29uc3QgQ29sbGVjdGlvbkNsYXNzJiwgQ29u
dGFpbmVyTm9kZSYpOworCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIENvbGxlY3Rpb25DbGFzcz4K
KyAgICBzdGF0aWMgdm9pZCB0cmF2ZXJzZUZvcndhcmQoY29uc3QgQ29sbGVjdGlvbkNsYXNzJiwg
RWxlbWVudComIGN1cnJlbnQsIHVuc2lnbmVkIGNvdW50LCB1bnNpZ25lZCYgdHJhdmVyc2VkQ291
bnQpOworCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIENvbGxlY3Rpb25DbGFzcz4KKyAgICBzdGF0
aWMgdm9pZCB0cmF2ZXJzZUJhY2t3YXJkKGNvbnN0IENvbGxlY3Rpb25DbGFzcyYsIEVsZW1lbnQq
JiwgdW5zaWduZWQgY291bnQpOworfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIENvbGxlY3Rpb25D
bGFzcz4KK2lubGluZSBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yIENvbGxlY3Rpb25UcmF2ZXJz
YWw8Q29sbGVjdGlvblRyYXZlcnNhbFR5cGU6OkRlc2NlbmRhbnRzPjo6YmVnaW4oY29uc3QgQ29s
bGVjdGlvbkNsYXNzJiBjb2xsZWN0aW9uLCBDb250YWluZXJOb2RlJiByb290Tm9kZSkKK3sKKyAg
ICBhdXRvIGRlc2NlbmRhbnRzID0gZWxlbWVudERlc2NlbmRhbnRzKHJvb3ROb2RlKTsKKyAgICBh
dXRvIGVuZCA9IGRlc2NlbmRhbnRzLmVuZCgpOworICAgIGZvciAoYXV0byBpdCA9IGRlc2NlbmRh
bnRzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICBpZiAoY29sbGVjdGlvbi5l
bGVtZW50TWF0Y2hlcygqaXQpKQorICAgICAgICAgICAgcmV0dXJuIGl0OworICAgIH0KKyAgICBy
ZXR1cm4gZW5kOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ29sbGVjdGlvbkNsYXNzPgoraW5s
aW5lIEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnQ+IENvbGxlY3Rpb25UcmF2ZXJzYWw8Q29s
bGVjdGlvblRyYXZlcnNhbFR5cGU6OkNoaWxkcmVuT25seT46OmJlZ2luKGNvbnN0IENvbGxlY3Rp
b25DbGFzcyYgY29sbGVjdGlvbiwgQ29udGFpbmVyTm9kZSYgcm9vdE5vZGUpCit7CisgICAgYXV0
byBjaGlsZHJlbiA9IGNoaWxkcmVuT2ZUeXBlPEVsZW1lbnQ+KHJvb3ROb2RlKTsKKyAgICBhdXRv
IGVuZCA9IGNoaWxkcmVuLmVuZCgpOworICAgIGZvciAoYXV0byBpdCA9IGNoaWxkcmVuLmJlZ2lu
KCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICBpZiAoY29sbGVjdGlvbi5lbGVtZW50TWF0
Y2hlcygqaXQpKQorICAgICAgICAgICAgcmV0dXJuIGl0OworICAgIH0KKyAgICByZXR1cm4gZW5k
OworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ29sbGVjdGlvbkNsYXNzPgoraW5saW5lIEVsZW1l
bnQqIENvbGxlY3Rpb25UcmF2ZXJzYWw8Q29sbGVjdGlvblRyYXZlcnNhbFR5cGU6OkN1c3RvbUZv
cndhcmRPbmx5Pjo6YmVnaW4oY29uc3QgQ29sbGVjdGlvbkNsYXNzJiBjb2xsZWN0aW9uLCBDb250
YWluZXJOb2RlJikKK3sKKyAgICByZXR1cm4gY29sbGVjdGlvbi5jdXN0b21FbGVtZW50QWZ0ZXIo
bnVsbHB0cik7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBDb2xsZWN0aW9uQ2xhc3M+Citpbmxp
bmUgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciBDb2xsZWN0aW9uVHJhdmVyc2FsPENvbGxlY3Rp
b25UcmF2ZXJzYWxUeXBlOjpEZXNjZW5kYW50cz46Omxhc3QoY29uc3QgQ29sbGVjdGlvbkNsYXNz
JiBjb2xsZWN0aW9uLCBDb250YWluZXJOb2RlJiByb290Tm9kZSkKK3sKKyAgICBhdXRvIGRlc2Nl
bmRhbnRzID0gZWxlbWVudERlc2NlbmRhbnRzKHJvb3ROb2RlKTsKKyAgICBhdXRvIGVuZCA9IGRl
c2NlbmRhbnRzLmVuZCgpOworICAgIGZvciAoYXV0byBpdCA9IGRlc2NlbmRhbnRzLmxhc3QoKTsg
aXQgIT0gZW5kOyAtLWl0KSB7CisgICAgICAgIGlmIChjb2xsZWN0aW9uLmVsZW1lbnRNYXRjaGVz
KCppdCkpCisgICAgICAgICAgICByZXR1cm4gaXQ7CisgICAgfQorICAgIHJldHVybiBlbmQ7Cit9
CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBDb2xsZWN0aW9uQ2xhc3M+CitpbmxpbmUgRWxlbWVudENo
aWxkSXRlcmF0b3I8RWxlbWVudD4gQ29sbGVjdGlvblRyYXZlcnNhbDxDb2xsZWN0aW9uVHJhdmVy
c2FsVHlwZTo6Q2hpbGRyZW5Pbmx5Pjo6bGFzdChjb25zdCBDb2xsZWN0aW9uQ2xhc3MmIGNvbGxl
Y3Rpb24sIENvbnRhaW5lck5vZGUmIHJvb3ROb2RlKQoreworICAgIGF1dG8gY2hpbGRyZW4gPSBj
aGlsZHJlbk9mVHlwZTxFbGVtZW50Pihyb290Tm9kZSk7CisgICAgYXV0byBlbmQgPSBjaGlsZHJl
bi5lbmQoKTsKKyAgICBFbGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50PiBsYXN0KHJvb3ROb2Rl
LCBjaGlsZHJlbi5sYXN0KCkpOworICAgIGZvciAoYXV0byBpdCA9IGxhc3Q7IGl0ICE9IGVuZDsg
LS1pdCkgeworICAgICAgICBpZiAoY29sbGVjdGlvbi5lbGVtZW50TWF0Y2hlcygqaXQpKQorICAg
ICAgICAgICAgcmV0dXJuIGl0OworICAgIH0KKyAgICByZXR1cm4gZW5kOworfQorCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgQ29sbGVjdGlvbkNsYXNzPgoraW5saW5lIEVsZW1lbnQqIENvbGxlY3Rpb25U
cmF2ZXJzYWw8Q29sbGVjdGlvblRyYXZlcnNhbFR5cGU6OkN1c3RvbUZvcndhcmRPbmx5Pjo6bGFz
dChjb25zdCBDb2xsZWN0aW9uQ2xhc3MmLCBDb250YWluZXJOb2RlJikKK3sKKyAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwordGVtcGxhdGUgPHR5cGVu
YW1lIENvbGxlY3Rpb25DbGFzcz4KK2lubGluZSB2b2lkIENvbGxlY3Rpb25UcmF2ZXJzYWw8Q29s
bGVjdGlvblRyYXZlcnNhbFR5cGU6OkRlc2NlbmRhbnRzPjo6dHJhdmVyc2VGb3J3YXJkKGNvbnN0
IENvbGxlY3Rpb25DbGFzcyYgY29sbGVjdGlvbiwgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciYg
Y3VycmVudCwgdW5zaWduZWQgY291bnQsIHVuc2lnbmVkJiB0cmF2ZXJzZWRDb3VudCkKK3sKKyAg
ICBBU1NFUlQoY29sbGVjdGlvbi5lbGVtZW50TWF0Y2hlcygqY3VycmVudCkpOworICAgIGF1dG8g
ZW5kID0gY29sbGVjdGlvbi5jb2xsZWN0aW9uRW5kKCk7CisgICAgZm9yICh0cmF2ZXJzZWRDb3Vu
dCA9IDA7IHRyYXZlcnNlZENvdW50IDwgY291bnQ7ICsrdHJhdmVyc2VkQ291bnQpIHsKKyAgICAg
ICAgZG8geworICAgICAgICAgICAgKytjdXJyZW50OworICAgICAgICAgICAgaWYgKGN1cnJlbnQg
PT0gZW5kKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfSB3aGlsZSAoIWNvbGxl
Y3Rpb24uZWxlbWVudE1hdGNoZXMoKmN1cnJlbnQpKTsKKyAgICB9Cit9CisKK3RlbXBsYXRlIDx0
eXBlbmFtZSBDb2xsZWN0aW9uQ2xhc3M+CitpbmxpbmUgdm9pZCBDb2xsZWN0aW9uVHJhdmVyc2Fs
PENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlOjpDaGlsZHJlbk9ubHk+Ojp0cmF2ZXJzZUZvcndhcmQo
Y29uc3QgQ29sbGVjdGlvbkNsYXNzJiBjb2xsZWN0aW9uLCBFbGVtZW50Q2hpbGRJdGVyYXRvcjxF
bGVtZW50PiYgY3VycmVudCwgdW5zaWduZWQgY291bnQsIHVuc2lnbmVkJiB0cmF2ZXJzZWRDb3Vu
dCkKK3sKKyAgICBBU1NFUlQoY29sbGVjdGlvbi5lbGVtZW50TWF0Y2hlcygqY3VycmVudCkpOwor
ICAgIGF1dG8gZW5kID0gY29sbGVjdGlvbi5jb2xsZWN0aW9uRW5kKCk7CisgICAgZm9yICh0cmF2
ZXJzZWRDb3VudCA9IDA7IHRyYXZlcnNlZENvdW50IDwgY291bnQ7ICsrdHJhdmVyc2VkQ291bnQp
IHsKKyAgICAgICAgZG8geworICAgICAgICAgICAgKytjdXJyZW50OworICAgICAgICAgICAgaWYg
KGN1cnJlbnQgPT0gZW5kKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfSB3aGls
ZSAoIWNvbGxlY3Rpb24uZWxlbWVudE1hdGNoZXMoKmN1cnJlbnQpKTsKKyAgICB9Cit9CisKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBDb2xsZWN0aW9uQ2xhc3M+CitpbmxpbmUgdm9pZCBDb2xsZWN0aW9u
VHJhdmVyc2FsPENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlOjpDdXN0b21Gb3J3YXJkT25seT46OnRy
YXZlcnNlRm9yd2FyZChjb25zdCBDb2xsZWN0aW9uQ2xhc3MmIGNvbGxlY3Rpb24sIEVsZW1lbnQq
JiBjdXJyZW50LCB1bnNpZ25lZCBjb3VudCwgdW5zaWduZWQmIHRyYXZlcnNlZENvdW50KQorewor
ICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBjdXJyZW50OworICAgIGZvciAodHJhdmVyc2VkQ291bnQg
PSAwOyB0cmF2ZXJzZWRDb3VudCA8IGNvdW50OyArK3RyYXZlcnNlZENvdW50KSB7CisgICAgICAg
IGVsZW1lbnQgPSBjb2xsZWN0aW9uLmN1c3RvbUVsZW1lbnRBZnRlcihlbGVtZW50KTsKKyAgICAg
ICAgaWYgKCFlbGVtZW50KSB7CisgICAgICAgICAgICBjdXJyZW50ID0gbnVsbHB0cjsKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKyAgICBjdXJyZW50ID0gZWxlbWVudDsK
K30KKwordGVtcGxhdGUgPHR5cGVuYW1lIENvbGxlY3Rpb25DbGFzcz4KK2lubGluZSB2b2lkIENv
bGxlY3Rpb25UcmF2ZXJzYWw8Q29sbGVjdGlvblRyYXZlcnNhbFR5cGU6OkRlc2NlbmRhbnRzPjo6
dHJhdmVyc2VCYWNrd2FyZChjb25zdCBDb2xsZWN0aW9uQ2xhc3MmIGNvbGxlY3Rpb24sIEVsZW1l
bnREZXNjZW5kYW50SXRlcmF0b3ImIGN1cnJlbnQsIHVuc2lnbmVkIGNvdW50KQoreworICAgIEFT
U0VSVChjb2xsZWN0aW9uLmVsZW1lbnRNYXRjaGVzKCpjdXJyZW50KSk7CisgICAgYXV0byBlbmQg
PSBjb2xsZWN0aW9uLmNvbGxlY3Rpb25FbmQoKTsKKyAgICBmb3IgKDsgY291bnQ7IC0tY291bnQp
IHsKKyAgICAgICAgZG8geworICAgICAgICAgICAgLS1jdXJyZW50OworICAgICAgICAgICAgaWYg
KGN1cnJlbnQgPT0gZW5kKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfSB3aGls
ZSAoIWNvbGxlY3Rpb24uZWxlbWVudE1hdGNoZXMoKmN1cnJlbnQpKTsKKyAgICB9Cit9CisKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBDb2xsZWN0aW9uQ2xhc3M+CitpbmxpbmUgdm9pZCBDb2xsZWN0aW9u
VHJhdmVyc2FsPENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlOjpDaGlsZHJlbk9ubHk+Ojp0cmF2ZXJz
ZUJhY2t3YXJkKGNvbnN0IENvbGxlY3Rpb25DbGFzcyYgY29sbGVjdGlvbiwgRWxlbWVudENoaWxk
SXRlcmF0b3I8RWxlbWVudD4mIGN1cnJlbnQsIHVuc2lnbmVkIGNvdW50KQoreworICAgIEFTU0VS
VChjb2xsZWN0aW9uLmVsZW1lbnRNYXRjaGVzKCpjdXJyZW50KSk7CisgICAgYXV0byBlbmQgPSBj
b2xsZWN0aW9uLmNvbGxlY3Rpb25FbmQoKTsKKyAgICBmb3IgKDsgY291bnQ7IC0tY291bnQpIHsK
KyAgICAgICAgZG8geworICAgICAgICAgICAgLS1jdXJyZW50OworICAgICAgICAgICAgaWYgKGN1
cnJlbnQgPT0gZW5kKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfSB3aGlsZSAo
IWNvbGxlY3Rpb24uZWxlbWVudE1hdGNoZXMoKmN1cnJlbnQpKTsKKyAgICB9Cit9CisKK3RlbXBs
YXRlIDx0eXBlbmFtZSBDb2xsZWN0aW9uQ2xhc3M+CitpbmxpbmUgdm9pZCBDb2xsZWN0aW9uVHJh
dmVyc2FsPENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlOjpDdXN0b21Gb3J3YXJkT25seT46OnRyYXZl
cnNlQmFja3dhcmQoY29uc3QgQ29sbGVjdGlvbkNsYXNzJiwgRWxlbWVudComLCB1bnNpZ25lZCBj
b3VudCkKK3sKKyAgICBVTlVTRURfUEFSQU0oY291bnQpOworICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBDb2xsZWN0aW9u
VHJhdmVyc2FsX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ29sbGVjdGlvblR5
cGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ29sbGVjdGlvblR5cGUuaAppbmRleCA1MTMwYWY5
MWRhZTg2OGE3MTRmNmUwNTUwYmZhYWRmNDAxZjY1YmJjLi4xYTkyMmQwZmY5MDYwODRhZDE3MzRi
MDcwZjg1YTA0Y2ZiODk0YjFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0NvbGxl
Y3Rpb25UeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Db2xsZWN0aW9uVHlwZS5oCkBA
IC01Myw2ICs1Myw0MiBAQCBlbnVtIENvbGxlY3Rpb25UeXBlIHsKICAgICBGb3JtQ29udHJvbHMK
IH07CiAKLX0gLy8gbmFtZXNwYWNlCitlbnVtIGNsYXNzIENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBl
IHsgRGVzY2VuZGFudHMsIENoaWxkcmVuT25seSwgQ3VzdG9tRm9yd2FyZE9ubHkgfTsKK3RlbXBs
YXRlPENvbGxlY3Rpb25UeXBlIGNvbGxlY3Rpb25UeXBlPgorc3RydWN0IENvbGxlY3Rpb25UeXBl
VHJhaXRzIHsKKyAgICBzdGF0aWMgY29uc3QgQ29sbGVjdGlvblRyYXZlcnNhbFR5cGUgdHJhdmVy
c2FsVHlwZSA9IENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlOjpEZXNjZW5kYW50czsKK307CisKK3Rl
bXBsYXRlPD4KK3N0cnVjdCBDb2xsZWN0aW9uVHlwZVRyYWl0czxOb2RlQ2hpbGRyZW4+IHsKKyAg
ICBzdGF0aWMgY29uc3QgQ29sbGVjdGlvblRyYXZlcnNhbFR5cGUgdHJhdmVyc2FsVHlwZSA9IENv
bGxlY3Rpb25UcmF2ZXJzYWxUeXBlOjpDaGlsZHJlbk9ubHk7Cit9OworCit0ZW1wbGF0ZTw+Citz
dHJ1Y3QgQ29sbGVjdGlvblR5cGVUcmFpdHM8VFJDZWxscz4geworICAgIHN0YXRpYyBjb25zdCBD
b2xsZWN0aW9uVHJhdmVyc2FsVHlwZSB0cmF2ZXJzYWxUeXBlID0gQ29sbGVjdGlvblRyYXZlcnNh
bFR5cGU6OkNoaWxkcmVuT25seTsKK307CisKK3RlbXBsYXRlPD4KK3N0cnVjdCBDb2xsZWN0aW9u
VHlwZVRyYWl0czxUU2VjdGlvblJvd3M+IHsKKyAgICBzdGF0aWMgY29uc3QgQ29sbGVjdGlvblRy
YXZlcnNhbFR5cGUgdHJhdmVyc2FsVHlwZSA9IENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlOjpDaGls
ZHJlbk9ubHk7Cit9OworCit0ZW1wbGF0ZTw+CitzdHJ1Y3QgQ29sbGVjdGlvblR5cGVUcmFpdHM8
VGFibGVUQm9kaWVzPiB7CisgICAgc3RhdGljIGNvbnN0IENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBl
IHRyYXZlcnNhbFR5cGUgPSBDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6Q2hpbGRyZW5Pbmx5Owor
fTsKKwordGVtcGxhdGU8Pgorc3RydWN0IENvbGxlY3Rpb25UeXBlVHJhaXRzPFRhYmxlUm93cz4g
eworICAgIHN0YXRpYyBjb25zdCBDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZSB0cmF2ZXJzYWxUeXBl
ID0gQ29sbGVjdGlvblRyYXZlcnNhbFR5cGU6OkN1c3RvbUZvcndhcmRPbmx5OworfTsKKwordGVt
cGxhdGU8Pgorc3RydWN0IENvbGxlY3Rpb25UeXBlVHJhaXRzPEZvcm1Db250cm9scz4geworICAg
IHN0YXRpYyBjb25zdCBDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZSB0cmF2ZXJzYWxUeXBlID0gQ29s
bGVjdGlvblRyYXZlcnNhbFR5cGU6OkN1c3RvbUZvcndhcmRPbmx5OworfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
R2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvR2Vu
ZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MzRlZTEwYmExZjk2YTUw
NGRlN2Y5ZTdmZjE3M2I2ZDQ2Y2UyZDYwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9HZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb24uY3BwCkBAIC0wLDAgKzEsODkgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR2VuZXJpY0NhY2hl
ZEhUTUxDb2xsZWN0aW9uLmgiCisKKyNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJI
VE1MT2JqZWN0RWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxPcHRpb25FbGVtZW50LmgiCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKwordXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKKwordGVtcGxh
dGUgPENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlIHRyYXZlcnNhbFR5cGU+Citib29sIEdlbmVyaWND
YWNoZWRIVE1MQ29sbGVjdGlvbjx0cmF2ZXJzYWxUeXBlPjo6ZWxlbWVudE1hdGNoZXMoRWxlbWVu
dCYgZWxlbWVudCkgY29uc3QKK3sKKyAgICBzd2l0Y2ggKEJhc2U6OnR5cGUoKSkgeworICAgIGNh
c2UgTm9kZUNoaWxkcmVuOgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBjYXNlIERvY0ltYWdl
czoKKyAgICAgICAgcmV0dXJuIGVsZW1lbnQuaGFzVGFnTmFtZShpbWdUYWcpOworICAgIGNhc2Ug
RG9jU2NyaXB0czoKKyAgICAgICAgcmV0dXJuIGVsZW1lbnQuaGFzVGFnTmFtZShzY3JpcHRUYWcp
OworICAgIGNhc2UgRG9jRm9ybXM6CisgICAgICAgIHJldHVybiBlbGVtZW50Lmhhc1RhZ05hbWUo
Zm9ybVRhZyk7CisgICAgY2FzZSBUYWJsZVRCb2RpZXM6CisgICAgICAgIHJldHVybiBlbGVtZW50
Lmhhc1RhZ05hbWUodGJvZHlUYWcpOworICAgIGNhc2UgVFJDZWxsczoKKyAgICAgICAgcmV0dXJu
IGVsZW1lbnQuaGFzVGFnTmFtZSh0ZFRhZykgfHwgZWxlbWVudC5oYXNUYWdOYW1lKHRoVGFnKTsK
KyAgICBjYXNlIFRTZWN0aW9uUm93czoKKyAgICAgICAgcmV0dXJuIGVsZW1lbnQuaGFzVGFnTmFt
ZSh0clRhZyk7CisgICAgY2FzZSBTZWxlY3RlZE9wdGlvbnM6CisgICAgICAgIHJldHVybiBpczxI
VE1MT3B0aW9uRWxlbWVudD4oZWxlbWVudCkgJiYgZG93bmNhc3Q8SFRNTE9wdGlvbkVsZW1lbnQ+
KGVsZW1lbnQpLnNlbGVjdGVkKCk7CisgICAgY2FzZSBEYXRhTGlzdE9wdGlvbnM6CisgICAgICAg
IGlmIChpczxIVE1MT3B0aW9uRWxlbWVudD4oZWxlbWVudCkpIHsKKyAgICAgICAgICAgIEhUTUxP
cHRpb25FbGVtZW50JiBvcHRpb24gPSBkb3duY2FzdDxIVE1MT3B0aW9uRWxlbWVudD4oZWxlbWVu
dCk7CisgICAgICAgICAgICBpZiAoIW9wdGlvbi5pc0Rpc2FibGVkRm9ybUNvbnRyb2woKSAmJiAh
b3B0aW9uLnZhbHVlKCkuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgICAgICB9CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBjYXNlIE1hcEFyZWFzOgorICAg
ICAgICByZXR1cm4gZWxlbWVudC5oYXNUYWdOYW1lKGFyZWFUYWcpOworICAgIGNhc2UgRG9jQXBw
bGV0czoKKyAgICAgICAgcmV0dXJuIGlzPEhUTUxBcHBsZXRFbGVtZW50PihlbGVtZW50KSB8fCAo
aXM8SFRNTE9iamVjdEVsZW1lbnQ+KGVsZW1lbnQpICYmIGRvd25jYXN0PEhUTUxPYmplY3RFbGVt
ZW50PihlbGVtZW50KS5jb250YWluc0phdmFBcHBsZXQoKSk7CisgICAgY2FzZSBEb2NFbWJlZHM6
CisgICAgICAgIHJldHVybiBlbGVtZW50Lmhhc1RhZ05hbWUoZW1iZWRUYWcpOworICAgIGNhc2Ug
RG9jTGlua3M6CisgICAgICAgIHJldHVybiAoZWxlbWVudC5oYXNUYWdOYW1lKGFUYWcpIHx8IGVs
ZW1lbnQuaGFzVGFnTmFtZShhcmVhVGFnKSkgJiYgZWxlbWVudC5mYXN0SGFzQXR0cmlidXRlKGhy
ZWZBdHRyKTsKKyAgICBjYXNlIERvY0FuY2hvcnM6CisgICAgICAgIHJldHVybiBlbGVtZW50Lmhh
c1RhZ05hbWUoYVRhZykgJiYgZWxlbWVudC5mYXN0SGFzQXR0cmlidXRlKG5hbWVBdHRyKTsKKyAg
ICBjYXNlIERvY0FsbDoKKyAgICBjYXNlIERvY3VtZW50TmFtZWRJdGVtczoKKyAgICBjYXNlIEZv
cm1Db250cm9sczoKKyAgICBjYXNlIFNlbGVjdE9wdGlvbnM6CisgICAgY2FzZSBUYWJsZVJvd3M6
CisgICAgY2FzZSBXaW5kb3dOYW1lZEl0ZW1zOgorICAgICAgICBicmVhazsKKyAgICB9CisgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQordGVtcGxhdGUgYm9v
bCBHZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb248Q29sbGVjdGlvblRyYXZlcnNhbFR5cGU6OkRl
c2NlbmRhbnRzPjo6ZWxlbWVudE1hdGNoZXMoRWxlbWVudCYpIGNvbnN0OwordGVtcGxhdGUgYm9v
bCBHZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb248Q29sbGVjdGlvblRyYXZlcnNhbFR5cGU6OkNo
aWxkcmVuT25seT46OmVsZW1lbnRNYXRjaGVzKEVsZW1lbnQmKSBjb25zdDsKK3RlbXBsYXRlIGJv
b2wgR2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uPENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlOjpD
dXN0b21Gb3J3YXJkT25seT46OmVsZW1lbnRNYXRjaGVzKEVsZW1lbnQmKSBjb25zdDsKKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9HZW5l
cmljQ2FjaGVkSFRNTENvbGxlY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvR2VuZXJpY0Nh
Y2hlZEhUTUxDb2xsZWN0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGY0MDc1NzkwNTgyZWMyNzg1Zjc1NzFi
NjJhYmE0NWEyNmE5YTgwMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
R2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uLmgKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgR2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uX2gKKyNkZWZpbmUgR2VuZXJp
Y0NhY2hlZEhUTUxDb2xsZWN0aW9uX2gKKworI2luY2x1ZGUgIkNhY2hlZEhUTUxDb2xsZWN0aW9u
LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordGVtcGxhdGUgPENvbGxlY3Rpb25UcmF2ZXJz
YWxUeXBlIHRyYXZlcnNhbFR5cGU+CitjbGFzcyBHZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb24g
ZmluYWwgOiBwdWJsaWMgQ2FjaGVkSFRNTENvbGxlY3Rpb248R2VuZXJpY0NhY2hlZEhUTUxDb2xs
ZWN0aW9uPHRyYXZlcnNhbFR5cGU+LCB0cmF2ZXJzYWxUeXBlPiB7CitwdWJsaWM6CisgICAgc3Rh
dGljIFJlZjxHZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb24+IGNyZWF0ZShDb250YWluZXJOb2Rl
JiBiYXNlLCBDb2xsZWN0aW9uVHlwZSBjb2xsZWN0aW9uVHlwZSkKKyAgICB7CisgICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IEdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbihiYXNlLCBjb2xs
ZWN0aW9uVHlwZSkpOworICAgIH0KKworICAgIGJvb2wgZWxlbWVudE1hdGNoZXMoRWxlbWVudCYp
IGNvbnN0OworCitwcml2YXRlOgorICAgIHVzaW5nIEJhc2UgPSBDYWNoZWRIVE1MQ29sbGVjdGlv
bjxHZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb248dHJhdmVyc2FsVHlwZT4sIHRyYXZlcnNhbFR5
cGU+OworICAgIEdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbihDb250YWluZXJOb2RlJiBiYXNl
LCBDb2xsZWN0aW9uVHlwZSBjb2xsZWN0aW9uVHlwZSkKKyAgICAgICAgOiBCYXNlKGJhc2UsIGNv
bGxlY3Rpb25UeXBlKQorICAgIHsgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgLy8gR2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uX2gKKwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MQWxsQ29sbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxBbGxDb2xsZWN0aW9uLmNwcAppbmRleCAwMTY2ODcxNGVjYmJiZDBmZWJkMWU1MGM0
YWJkNGIwOTEzYjQyN2YzLi5kYWIwNTAwZmFkODhjNjU0YTViOTFjYmU1ZDNkOWE3NDYyNzk4YjFi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbGxDb2xsZWN0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbGxDb2xsZWN0aW9uLmNwcApAQCAtMzYsNyAr
MzYsNyBAQCBSZWY8SFRNTEFsbENvbGxlY3Rpb24+IEhUTUxBbGxDb2xsZWN0aW9uOjpjcmVhdGUo
RG9jdW1lbnQmIGRvY3VtZW50LCBDb2xsZWN0aW9uVAogfQogCiBpbmxpbmUgSFRNTEFsbENvbGxl
Y3Rpb246OkhUTUxBbGxDb2xsZWN0aW9uKERvY3VtZW50JiBkb2N1bWVudCwgQ29sbGVjdGlvblR5
cGUgdHlwZSkKLSAgICA6IEhUTUxDb2xsZWN0aW9uKGRvY3VtZW50LCB0eXBlKQorICAgIDogQ2Fj
aGVkSFRNTENvbGxlY3Rpb248SFRNTEFsbENvbGxlY3Rpb24sIENvbGxlY3Rpb25UeXBlVHJhaXRz
PERvY0FsbD46OnRyYXZlcnNhbFR5cGU+KGRvY3VtZW50LCB0eXBlKQogewogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbGxDb2xsZWN0aW9uLmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxBbGxDb2xsZWN0aW9uLmgKaW5kZXggNTE0NTExNzRiZDI4M2IyMDFjODky
ZTJlYTRhNWFiOWZiNjE1YmYwMS4uYjYwMTFiNDk2MmRlMGM3NzczY2IzMWJlOTE2NmQzZTk4Yjkw
NGRjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQWxsQ29sbGVjdGlvbi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFsbENvbGxlY3Rpb24uaApAQCAtMjYsMTYg
KzI2LDE5IEBACiAjaWZuZGVmIEhUTUxBbGxDb2xsZWN0aW9uX2gKICNkZWZpbmUgSFRNTEFsbENv
bGxlY3Rpb25faAogCi0jaW5jbHVkZSAiSFRNTENvbGxlY3Rpb24uaCIKKyNpbmNsdWRlICJDYWNo
ZWRIVE1MQ29sbGVjdGlvbi5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEhUTUxB
bGxDb2xsZWN0aW9uIGZpbmFsIDogcHVibGljIEhUTUxDb2xsZWN0aW9uIHsKK2NsYXNzIEhUTUxB
bGxDb2xsZWN0aW9uIGZpbmFsIDogcHVibGljIENhY2hlZEhUTUxDb2xsZWN0aW9uPEhUTUxBbGxD
b2xsZWN0aW9uLCBDb2xsZWN0aW9uVHlwZVRyYWl0czxEb2NBbGw+Ojp0cmF2ZXJzYWxUeXBlPiB7
CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxIVE1MQWxsQ29sbGVjdGlvbj4gY3JlYXRlKERvY3Vt
ZW50JiwgQ29sbGVjdGlvblR5cGUpOwogCiAgICAgRWxlbWVudCogbmFtZWRJdGVtV2l0aEluZGV4
KGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgdW5zaWduZWQgaW5kZXgpIGNvbnN0OwogCisgICAg
Ly8gRm9yIENhY2hlZEhUTUxDb2xsZWN0aW9uLgorICAgIGJvb2wgZWxlbWVudE1hdGNoZXMoRWxl
bWVudCYpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKwogcHJpdmF0ZToKICAgICBIVE1MQWxsQ29s
bGVjdGlvbihEb2N1bWVudCYsIENvbGxlY3Rpb25UeXBlKTsKIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTENvbGxlY3Rpb24uY3BwCmluZGV4IDNiNGI2MmY3MjZiYzQ1MDM4Y2IzOTMxMTYwNGY4NTc1
MzBiNjgxZGYuLjMwODEwY2ZhZDI4MzI5MjQ2ZjRjOTE3ZDJiNzc5YjIwMjdkNWYwY2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uY3BwCkBAIC0yMyw0OCArMjMsMTQgQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJIVE1MQ29sbGVjdGlvbi5oIgogCi0jaW5jbHVk
ZSAiRWxlbWVudFRyYXZlcnNhbC5oIgotI2luY2x1ZGUgIkhUTUxEb2N1bWVudC5oIgotI2luY2x1
ZGUgIkhUTUxOYW1lQ29sbGVjdGlvbi5oIgorI2luY2x1ZGUgIkNhY2hlZEhUTUxDb2xsZWN0aW9u
LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCi0jaW5jbHVkZSAiSFRNTE9iamVjdEVsZW1lbnQu
aCIKLSNpbmNsdWRlICJIVE1MT3B0aW9uRWxlbWVudC5oIgogI2luY2x1ZGUgIk5vZGVSYXJlRGF0
YS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7
CiAKLXN0YXRpYyBib29sIHNob3VsZE9ubHlJbmNsdWRlRGlyZWN0Q2hpbGRyZW4oQ29sbGVjdGlv
blR5cGUgdHlwZSkKLXsKLSAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICBjYXNlIERvY0FsbDoKLSAg
ICBjYXNlIERvY0FuY2hvcnM6Ci0gICAgY2FzZSBEb2NBcHBsZXRzOgotICAgIGNhc2UgRG9jRW1i
ZWRzOgotICAgIGNhc2UgRG9jRm9ybXM6Ci0gICAgY2FzZSBEb2NJbWFnZXM6Ci0gICAgY2FzZSBE
b2NMaW5rczoKLSAgICBjYXNlIERvY1NjcmlwdHM6Ci0gICAgY2FzZSBEb2N1bWVudE5hbWVkSXRl
bXM6Ci0gICAgY2FzZSBNYXBBcmVhczoKLSAgICBjYXNlIFRhYmxlUm93czoKLSAgICBjYXNlIFNl
bGVjdE9wdGlvbnM6Ci0gICAgY2FzZSBTZWxlY3RlZE9wdGlvbnM6Ci0gICAgY2FzZSBEYXRhTGlz
dE9wdGlvbnM6Ci0gICAgY2FzZSBXaW5kb3dOYW1lZEl0ZW1zOgotICAgIGNhc2UgRm9ybUNvbnRy
b2xzOgotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgY2FzZSBOb2RlQ2hpbGRyZW46Ci0gICAg
Y2FzZSBUUkNlbGxzOgotICAgIGNhc2UgVFNlY3Rpb25Sb3dzOgotICAgIGNhc2UgVGFibGVUQm9k
aWVzOgotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCiBpbmxpbmUgYXV0byBIVE1MQ29sbGVjdGlvbjo6
cm9vdFR5cGVGcm9tQ29sbGVjdGlvblR5cGUoQ29sbGVjdGlvblR5cGUgdHlwZSkgLT4gUm9vdFR5
cGUKIHsKICAgICBzd2l0Y2ggKHR5cGUpIHsKQEAgLTEzMSwyNjIgKzk3LDI5IEBAIHN0YXRpYyBO
b2RlTGlzdEludmFsaWRhdGlvblR5cGUgaW52YWxpZGF0aW9uVHlwZUV4Y2x1ZGluZ0lkQW5kTmFt
ZUF0dHJpYnV0ZXMoQ29sCiAgICAgcmV0dXJuIERvTm90SW52YWxpZGF0ZU9uQXR0cmlidXRlQ2hh
bmdlczsKIH0KIAotSFRNTENvbGxlY3Rpb246OkhUTUxDb2xsZWN0aW9uKENvbnRhaW5lck5vZGUm
IG93bmVyTm9kZSwgQ29sbGVjdGlvblR5cGUgdHlwZSwgRWxlbWVudFRyYXZlcnNhbFR5cGUgdHJh
dmVyc2FsVHlwZSkKK0hUTUxDb2xsZWN0aW9uOjpIVE1MQ29sbGVjdGlvbihDb250YWluZXJOb2Rl
JiBvd25lck5vZGUsIENvbGxlY3Rpb25UeXBlIHR5cGUpCiAgICAgOiBtX293bmVyTm9kZShvd25l
ck5vZGUpCi0gICAgLCBtX2luZGV4Q2FjaGUoKnRoaXMpCiAgICAgLCBtX2NvbGxlY3Rpb25UeXBl
KHR5cGUpCiAgICAgLCBtX2ludmFsaWRhdGlvblR5cGUoaW52YWxpZGF0aW9uVHlwZUV4Y2x1ZGlu
Z0lkQW5kTmFtZUF0dHJpYnV0ZXModHlwZSkpCiAgICAgLCBtX3Jvb3RUeXBlKHJvb3RUeXBlRnJv
bUNvbGxlY3Rpb25UeXBlKHR5cGUpKQotICAgICwgbV9zaG91bGRPbmx5SW5jbHVkZURpcmVjdENo
aWxkcmVuKHNob3VsZE9ubHlJbmNsdWRlRGlyZWN0Q2hpbGRyZW4odHlwZSkpCi0gICAgLCBtX3Vz
ZXNDdXN0b21Gb3J3YXJkT25seVRyYXZlcnNhbCh0cmF2ZXJzYWxUeXBlID09IEN1c3RvbUZvcndh
cmRPbmx5VHJhdmVyc2FsKQogewogICAgIEFTU0VSVChtX3Jvb3RUeXBlID09IHN0YXRpY19jYXN0
PHVuc2lnbmVkPihyb290VHlwZUZyb21Db2xsZWN0aW9uVHlwZSh0eXBlKSkpOwogICAgIEFTU0VS
VChtX2ludmFsaWRhdGlvblR5cGUgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGludmFsaWRhdGlv
blR5cGVFeGNsdWRpbmdJZEFuZE5hbWVBdHRyaWJ1dGVzKHR5cGUpKSk7CiAgICAgQVNTRVJUKG1f
Y29sbGVjdGlvblR5cGUgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHR5cGUpKTsKIH0KIAotUmVm
PEhUTUxDb2xsZWN0aW9uPiBIVE1MQ29sbGVjdGlvbjo6Y3JlYXRlKENvbnRhaW5lck5vZGUmIGJh
c2UsIENvbGxlY3Rpb25UeXBlIHR5cGUpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSFRN
TENvbGxlY3Rpb24oYmFzZSwgdHlwZSkpOwotfQotCiBIVE1MQ29sbGVjdGlvbjo6fkhUTUxDb2xs
ZWN0aW9uKCkKIHsKLSAgICBpZiAobV9pbmRleENhY2hlLmhhc1ZhbGlkQ2FjaGUoKnRoaXMpKQot
ICAgICAgICBkb2N1bWVudCgpLnVucmVnaXN0ZXJDb2xsZWN0aW9uKCp0aGlzKTsKICAgICBpZiAo
aGFzTmFtZWRFbGVtZW50Q2FjaGUoKSkKICAgICAgICAgZG9jdW1lbnQoKS5jb2xsZWN0aW9uV2ls
bENsZWFySWROYW1lTWFwKCp0aGlzKTsKKwogICAgIC8vIEhUTUxOYW1lQ29sbGVjdGlvbiByZW1v
dmVzIGNhY2hlIGJ5IGl0c2VsZi4KICAgICBpZiAodHlwZSgpICE9IFdpbmRvd05hbWVkSXRlbXMg
JiYgdHlwZSgpICE9IERvY3VtZW50TmFtZWRJdGVtcykKICAgICAgICAgb3duZXJOb2RlKCkubm9k
ZUxpc3RzKCktPnJlbW92ZUNhY2hlZENvbGxlY3Rpb24odGhpcyk7CiB9CiAKLUNvbnRhaW5lck5v
ZGUmIEhUTUxDb2xsZWN0aW9uOjpyb290Tm9kZSgpIGNvbnN0Ci17Ci0gICAgaWYgKGlzUm9vdGVk
QXREb2N1bWVudCgpICYmIG93bmVyTm9kZSgpLmluRG9jdW1lbnQoKSkKLSAgICAgICAgcmV0dXJu
IG93bmVyTm9kZSgpLmRvY3VtZW50KCk7Ci0KLSAgICByZXR1cm4gb3duZXJOb2RlKCk7Ci19Ci0K
LXN0YXRpYyBpbmxpbmUgYm9vbCBpc01hdGNoaW5nSFRNTEVsZW1lbnQoY29uc3QgSFRNTENvbGxl
Y3Rpb24mIGNvbGxlY3Rpb24sIEhUTUxFbGVtZW50JiBlbGVtZW50KQordm9pZCBIVE1MQ29sbGVj
dGlvbjo6aW52YWxpZGF0ZUNhY2hlKERvY3VtZW50JiBkb2N1bWVudCkKIHsKLSAgICBzd2l0Y2gg
KGNvbGxlY3Rpb24udHlwZSgpKSB7Ci0gICAgY2FzZSBEb2NJbWFnZXM6Ci0gICAgICAgIHJldHVy
biBlbGVtZW50Lmhhc1RhZ05hbWUoaW1nVGFnKTsKLSAgICBjYXNlIERvY1NjcmlwdHM6Ci0gICAg
ICAgIHJldHVybiBlbGVtZW50Lmhhc1RhZ05hbWUoc2NyaXB0VGFnKTsKLSAgICBjYXNlIERvY0Zv
cm1zOgotICAgICAgICByZXR1cm4gZWxlbWVudC5oYXNUYWdOYW1lKGZvcm1UYWcpOwotICAgIGNh
c2UgVGFibGVUQm9kaWVzOgotICAgICAgICByZXR1cm4gZWxlbWVudC5oYXNUYWdOYW1lKHRib2R5
VGFnKTsKLSAgICBjYXNlIFRSQ2VsbHM6Ci0gICAgICAgIHJldHVybiBlbGVtZW50Lmhhc1RhZ05h
bWUodGRUYWcpIHx8IGVsZW1lbnQuaGFzVGFnTmFtZSh0aFRhZyk7Ci0gICAgY2FzZSBUU2VjdGlv
blJvd3M6Ci0gICAgICAgIHJldHVybiBlbGVtZW50Lmhhc1RhZ05hbWUodHJUYWcpOwotICAgIGNh
c2UgU2VsZWN0T3B0aW9uczoKLSAgICAgICAgcmV0dXJuIGVsZW1lbnQuaGFzVGFnTmFtZShvcHRp
b25UYWcpOwotICAgIGNhc2UgU2VsZWN0ZWRPcHRpb25zOgotICAgICAgICByZXR1cm4gaXM8SFRN
TE9wdGlvbkVsZW1lbnQ+KGVsZW1lbnQpICYmIGRvd25jYXN0PEhUTUxPcHRpb25FbGVtZW50Pihl
bGVtZW50KS5zZWxlY3RlZCgpOwotICAgIGNhc2UgRGF0YUxpc3RPcHRpb25zOgotICAgICAgICBp
ZiAoaXM8SFRNTE9wdGlvbkVsZW1lbnQ+KGVsZW1lbnQpKSB7Ci0gICAgICAgICAgICBIVE1MT3B0
aW9uRWxlbWVudCYgb3B0aW9uID0gZG93bmNhc3Q8SFRNTE9wdGlvbkVsZW1lbnQ+KGVsZW1lbnQp
OwotICAgICAgICAgICAgaWYgKCFvcHRpb24uaXNEaXNhYmxlZEZvcm1Db250cm9sKCkgJiYgIW9w
dGlvbi52YWx1ZSgpLmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg
ICAgICAgfQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgY2FzZSBNYXBBcmVhczoKLSAgICAg
ICAgcmV0dXJuIGVsZW1lbnQuaGFzVGFnTmFtZShhcmVhVGFnKTsKLSAgICBjYXNlIERvY0FwcGxl
dHM6Ci0gICAgICAgIHJldHVybiBpczxIVE1MQXBwbGV0RWxlbWVudD4oZWxlbWVudCkgfHwgKGlz
PEhUTUxPYmplY3RFbGVtZW50PihlbGVtZW50KSAmJiBkb3duY2FzdDxIVE1MT2JqZWN0RWxlbWVu
dD4oZWxlbWVudCkuY29udGFpbnNKYXZhQXBwbGV0KCkpOwotICAgIGNhc2UgRG9jRW1iZWRzOgot
ICAgICAgICByZXR1cm4gZWxlbWVudC5oYXNUYWdOYW1lKGVtYmVkVGFnKTsKLSAgICBjYXNlIERv
Y0xpbmtzOgotICAgICAgICByZXR1cm4gKGVsZW1lbnQuaGFzVGFnTmFtZShhVGFnKSB8fCBlbGVt
ZW50Lmhhc1RhZ05hbWUoYXJlYVRhZykpICYmIGVsZW1lbnQuZmFzdEhhc0F0dHJpYnV0ZShocmVm
QXR0cik7Ci0gICAgY2FzZSBEb2NBbmNob3JzOgotICAgICAgICByZXR1cm4gZWxlbWVudC5oYXNU
YWdOYW1lKGFUYWcpICYmIGVsZW1lbnQuZmFzdEhhc0F0dHJpYnV0ZShuYW1lQXR0cik7Ci0gICAg
Y2FzZSBEb2N1bWVudE5hbWVkSXRlbXM6Ci0gICAgICAgIHJldHVybiBkb3duY2FzdDxEb2N1bWVu
dE5hbWVDb2xsZWN0aW9uPihjb2xsZWN0aW9uKS5lbGVtZW50TWF0Y2hlcyhlbGVtZW50KTsKLSAg
ICBjYXNlIERvY0FsbDoKLSAgICBjYXNlIE5vZGVDaGlsZHJlbjoKLSAgICBjYXNlIFdpbmRvd05h
bWVkSXRlbXM6Ci0gICAgY2FzZSBGb3JtQ29udHJvbHM6Ci0gICAgY2FzZSBUYWJsZVJvd3M6Ci0g
ICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1
cm4gZmFsc2U7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgYm9vbCBpc01hdGNoaW5nRWxlbWVudChjb25z
dCBIVE1MQ29sbGVjdGlvbiYgY29sbGVjdGlvbiwgRWxlbWVudCYgZWxlbWVudCkKLXsKLSAgICAv
LyBDb2xsZWN0aW9uIHR5cGVzIHRoYXQgZGVhbCB3aXRoIGFueSB0eXBlIG9mIEVsZW1lbnRzLCBu
b3QganVzdCBIVE1MRWxlbWVudHMuCi0gICAgc3dpdGNoIChjb2xsZWN0aW9uLnR5cGUoKSkgewot
ICAgIGNhc2UgRG9jQWxsOgotICAgIGNhc2UgTm9kZUNoaWxkcmVuOgotICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICBjYXNlIFdpbmRvd05hbWVkSXRlbXM6Ci0gICAgICAgIHJldHVybiBkb3duY2Fz
dDxXaW5kb3dOYW1lQ29sbGVjdGlvbj4oY29sbGVjdGlvbikuZWxlbWVudE1hdGNoZXMoZWxlbWVu
dCk7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgLy8gQ29sbGVjdGlvbiB0eXBlcyB0aGF0IG9ubHkg
ZGVhbCB3aXRoIEhUTUxFbGVtZW50cy4KLSAgICAgICAgcmV0dXJuIGlzPEhUTUxFbGVtZW50Pihl
bGVtZW50KSAmJiBpc01hdGNoaW5nSFRNTEVsZW1lbnQoY29sbGVjdGlvbiwgZG93bmNhc3Q8SFRN
TEVsZW1lbnQ+KGVsZW1lbnQpKTsKLSAgICB9Ci19Ci0KLXN0YXRpYyBpbmxpbmUgRWxlbWVudCog
cHJldmlvdXNFbGVtZW50KENvbnRhaW5lck5vZGUmIGJhc2UsIEVsZW1lbnQmIGVsZW1lbnQsIGJv
b2wgb25seUluY2x1ZGVEaXJlY3RDaGlsZHJlbikKLXsKLSAgICByZXR1cm4gb25seUluY2x1ZGVE
aXJlY3RDaGlsZHJlbiA/IEVsZW1lbnRUcmF2ZXJzYWw6OnByZXZpb3VzU2libGluZyhlbGVtZW50
KSA6IEVsZW1lbnRUcmF2ZXJzYWw6OnByZXZpb3VzKGVsZW1lbnQsICZiYXNlKTsKLX0KLQotQUxX
QVlTX0lOTElORSBFbGVtZW50KiBIVE1MQ29sbGVjdGlvbjo6aXRlcmF0ZUZvclByZXZpb3VzRWxl
bWVudChFbGVtZW50KiBlbGVtZW50KSBjb25zdAotewotICAgIGJvb2wgb25seUluY2x1ZGVEaXJl
Y3RDaGlsZHJlbiA9IG1fc2hvdWxkT25seUluY2x1ZGVEaXJlY3RDaGlsZHJlbjsKLSAgICBDb250
YWluZXJOb2RlJiByb290Tm9kZSA9IHRoaXMtPnJvb3ROb2RlKCk7Ci0gICAgZm9yICg7IGVsZW1l
bnQ7IGVsZW1lbnQgPSBwcmV2aW91c0VsZW1lbnQocm9vdE5vZGUsICplbGVtZW50LCBvbmx5SW5j
bHVkZURpcmVjdENoaWxkcmVuKSkgewotICAgICAgICBpZiAoaXNNYXRjaGluZ0VsZW1lbnQoKnRo
aXMsICplbGVtZW50KSkKLSAgICAgICAgICAgIHJldHVybiBlbGVtZW50OwotICAgIH0KLSAgICBy
ZXR1cm4gbnVsbHB0cjsKLX0KLQotc3RhdGljIGlubGluZSBFbGVtZW50KiBmaXJzdE1hdGNoaW5n
RWxlbWVudChjb25zdCBIVE1MQ29sbGVjdGlvbiYgY29sbGVjdGlvbiwgQ29udGFpbmVyTm9kZSYg
cm9vdCkKLXsKLSAgICBFbGVtZW50KiBlbGVtZW50ID0gRWxlbWVudFRyYXZlcnNhbDo6Zmlyc3RX
aXRoaW4ocm9vdCk7Ci0gICAgd2hpbGUgKGVsZW1lbnQgJiYgIWlzTWF0Y2hpbmdFbGVtZW50KGNv
bGxlY3Rpb24sICplbGVtZW50KSkKLSAgICAgICAgZWxlbWVudCA9IEVsZW1lbnRUcmF2ZXJzYWw6
Om5leHQoKmVsZW1lbnQsICZyb290KTsKLSAgICByZXR1cm4gZWxlbWVudDsKLX0KLQotc3RhdGlj
IGlubGluZSBFbGVtZW50KiBuZXh0TWF0Y2hpbmdFbGVtZW50KGNvbnN0IEhUTUxDb2xsZWN0aW9u
JiBjb2xsZWN0aW9uLCBFbGVtZW50JiBlbGVtZW50LCBDb250YWluZXJOb2RlJiByb290KQotewot
ICAgIEVsZW1lbnQqIG5leHQgPSAmZWxlbWVudDsKLSAgICBkbyB7Ci0gICAgICAgIG5leHQgPSBF
bGVtZW50VHJhdmVyc2FsOjpuZXh0KCpuZXh0LCAmcm9vdCk7Ci0gICAgfSB3aGlsZSAobmV4dCAm
JiAhaXNNYXRjaGluZ0VsZW1lbnQoY29sbGVjdGlvbiwgKm5leHQpKTsKLSAgICByZXR1cm4gbmV4
dDsKLX0KLQotdW5zaWduZWQgSFRNTENvbGxlY3Rpb246Omxlbmd0aCgpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIG1faW5kZXhDYWNoZS5ub2RlQ291bnQoKnRoaXMpOwotfQotCi1FbGVtZW50KiBIVE1M
Q29sbGVjdGlvbjo6aXRlbSh1bnNpZ25lZCBvZmZzZXQpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1f
aW5kZXhDYWNoZS5ub2RlQXQoKnRoaXMsIG9mZnNldCk7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgYm9v
bCBuYW1lU2hvdWxkQmVWaXNpYmxlSW5Eb2N1bWVudEFsbChIVE1MRWxlbWVudCYgZWxlbWVudCkK
LXsKLSAgICAvLyBUaGUgZG9jdW1lbnQuYWxsIGNvbGxlY3Rpb24gcmV0dXJucyBvbmx5IGNlcnRh
aW4gdHlwZXMgb2YgZWxlbWVudHMgYnkgbmFtZSwKLSAgICAvLyBhbHRob3VnaCBpdCByZXR1cm5z
IGFueSB0eXBlIG9mIGVsZW1lbnQgYnkgaWQuCi0gICAgcmV0dXJuIGVsZW1lbnQuaGFzVGFnTmFt
ZShhcHBsZXRUYWcpCi0gICAgICAgIHx8IGVsZW1lbnQuaGFzVGFnTmFtZShlbWJlZFRhZykKLSAg
ICAgICAgfHwgZWxlbWVudC5oYXNUYWdOYW1lKGZvcm1UYWcpCi0gICAgICAgIHx8IGVsZW1lbnQu
aGFzVGFnTmFtZShpbWdUYWcpCi0gICAgICAgIHx8IGVsZW1lbnQuaGFzVGFnTmFtZShpbnB1dFRh
ZykKLSAgICAgICAgfHwgZWxlbWVudC5oYXNUYWdOYW1lKG9iamVjdFRhZykKLSAgICAgICAgfHwg
ZWxlbWVudC5oYXNUYWdOYW1lKHNlbGVjdFRhZyk7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgYm9vbCBu
YW1lU2hvdWxkQmVWaXNpYmxlSW5Eb2N1bWVudEFsbChFbGVtZW50JiBlbGVtZW50KQotewotICAg
IHJldHVybiBpczxIVE1MRWxlbWVudD4oZWxlbWVudCkgJiYgbmFtZVNob3VsZEJlVmlzaWJsZUlu
RG9jdW1lbnRBbGwoZG93bmNhc3Q8SFRNTEVsZW1lbnQ+KGVsZW1lbnQpKTsKLX0KLQotc3RhdGlj
IGlubGluZSBFbGVtZW50KiBmaXJzdE1hdGNoaW5nQ2hpbGRFbGVtZW50KGNvbnN0IEhUTUxDb2xs
ZWN0aW9uJiBub2RlTGlzdCwgQ29udGFpbmVyTm9kZSYgcm9vdCkKLXsKLSAgICBFbGVtZW50KiBl
bGVtZW50ID0gRWxlbWVudFRyYXZlcnNhbDo6Zmlyc3RXaXRoaW4ocm9vdCk7Ci0gICAgd2hpbGUg
KGVsZW1lbnQgJiYgIWlzTWF0Y2hpbmdFbGVtZW50KG5vZGVMaXN0LCAqZWxlbWVudCkpCi0gICAg
ICAgIGVsZW1lbnQgPSBFbGVtZW50VHJhdmVyc2FsOjpuZXh0U2libGluZygqZWxlbWVudCk7Ci0g
ICAgcmV0dXJuIGVsZW1lbnQ7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgRWxlbWVudCogbmV4dE1hdGNo
aW5nU2libGluZ0VsZW1lbnQoY29uc3QgSFRNTENvbGxlY3Rpb24mIG5vZGVMaXN0LCBFbGVtZW50
JiBlbGVtZW50KQotewotICAgIEVsZW1lbnQqIG5leHQgPSAmZWxlbWVudDsKLSAgICBkbyB7Ci0g
ICAgICAgIG5leHQgPSBFbGVtZW50VHJhdmVyc2FsOjpuZXh0U2libGluZygqbmV4dCk7Ci0gICAg
fSB3aGlsZSAobmV4dCAmJiAhaXNNYXRjaGluZ0VsZW1lbnQobm9kZUxpc3QsICpuZXh0KSk7Ci0g
ICAgcmV0dXJuIG5leHQ7Ci19Ci0KLWlubGluZSBib29sIEhUTUxDb2xsZWN0aW9uOjp1c2VzQ3Vz
dG9tRm9yd2FyZE9ubHlUcmF2ZXJzYWwoKSBjb25zdAotewotICAgIHJldHVybiBtX3VzZXNDdXN0
b21Gb3J3YXJkT25seVRyYXZlcnNhbDsKLX0KLQotaW5saW5lIEVsZW1lbnQqIEhUTUxDb2xsZWN0
aW9uOjpmaXJzdEVsZW1lbnQoQ29udGFpbmVyTm9kZSYgcm9vdCkgY29uc3QKLXsKLSAgICBpZiAo
dXNlc0N1c3RvbUZvcndhcmRPbmx5VHJhdmVyc2FsKCkpCi0gICAgICAgIHJldHVybiBjdXN0b21F
bGVtZW50QWZ0ZXIobnVsbHB0cik7Ci0gICAgaWYgKG1fc2hvdWxkT25seUluY2x1ZGVEaXJlY3RD
aGlsZHJlbikKLSAgICAgICAgcmV0dXJuIGZpcnN0TWF0Y2hpbmdDaGlsZEVsZW1lbnQoKnRoaXMs
IHJvb3QpOwotICAgIHJldHVybiBmaXJzdE1hdGNoaW5nRWxlbWVudCgqdGhpcywgcm9vdCk7Ci19
Ci0KLWlubGluZSBFbGVtZW50KiBIVE1MQ29sbGVjdGlvbjo6dHJhdmVyc2VGb3J3YXJkKEVsZW1l
bnQmIGN1cnJlbnQsIHVuc2lnbmVkIGNvdW50LCB1bnNpZ25lZCYgdHJhdmVyc2VkQ291bnQsIENv
bnRhaW5lck5vZGUmIHJvb3QpIGNvbnN0Ci17Ci0gICAgRWxlbWVudCogZWxlbWVudCA9ICZjdXJy
ZW50OwotICAgIGlmICh1c2VzQ3VzdG9tRm9yd2FyZE9ubHlUcmF2ZXJzYWwoKSkgewotICAgICAg
ICBmb3IgKHRyYXZlcnNlZENvdW50ID0gMDsgdHJhdmVyc2VkQ291bnQgPCBjb3VudDsgKyt0cmF2
ZXJzZWRDb3VudCkgewotICAgICAgICAgICAgZWxlbWVudCA9IGN1c3RvbUVsZW1lbnRBZnRlcihl
bGVtZW50KTsKLSAgICAgICAgICAgIGlmICghZWxlbWVudCkKLSAgICAgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKLSAgICAgICAgfQotICAgIH0gZWxzZSBpZiAobV9zaG91bGRPbmx5SW5jbHVk
ZURpcmVjdENoaWxkcmVuKSB7Ci0gICAgICAgIGZvciAodHJhdmVyc2VkQ291bnQgPSAwOyB0cmF2
ZXJzZWRDb3VudCA8IGNvdW50OyArK3RyYXZlcnNlZENvdW50KSB7Ci0gICAgICAgICAgICBlbGVt
ZW50ID0gbmV4dE1hdGNoaW5nU2libGluZ0VsZW1lbnQoKnRoaXMsICplbGVtZW50KTsKLSAgICAg
ICAgICAgIGlmICghZWxlbWVudCkKLSAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAg
ICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICAgIGZvciAodHJhdmVyc2VkQ291bnQgPSAwOyB0
cmF2ZXJzZWRDb3VudCA8IGNvdW50OyArK3RyYXZlcnNlZENvdW50KSB7Ci0gICAgICAgICAgICBl
bGVtZW50ID0gbmV4dE1hdGNoaW5nRWxlbWVudCgqdGhpcywgKmVsZW1lbnQsIHJvb3QpOwotICAg
ICAgICAgICAgaWYgKCFlbGVtZW50KQotICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwot
ICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiBlbGVtZW50OwotfQotCi1FbGVtZW50KiBIVE1M
Q29sbGVjdGlvbjo6Y29sbGVjdGlvbkJlZ2luKCkgY29uc3QKLXsKLSAgICByZXR1cm4gZmlyc3RF
bGVtZW50KHJvb3ROb2RlKCkpOwotfQotCi1FbGVtZW50KiBIVE1MQ29sbGVjdGlvbjo6Y29sbGVj
dGlvbkxhc3QoKSBjb25zdAotewotICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBvcHRpbWl6
ZWQgc2ltaWxhcmx5IHRvIHRoZSBmb3J3YXJkIGNhc2UuCi0gICAgYXV0byYgcm9vdCA9IHJvb3RO
b2RlKCk7Ci0gICAgRWxlbWVudCogbGFzdCA9IG1fc2hvdWxkT25seUluY2x1ZGVEaXJlY3RDaGls
ZHJlbiA/IEVsZW1lbnRUcmF2ZXJzYWw6Omxhc3RDaGlsZChyb290KSA6IEVsZW1lbnRUcmF2ZXJz
YWw6Omxhc3RXaXRoaW4ocm9vdCk7Ci0gICAgcmV0dXJuIGl0ZXJhdGVGb3JQcmV2aW91c0VsZW1l
bnQobGFzdCk7Ci19Ci0KLXZvaWQgSFRNTENvbGxlY3Rpb246OmNvbGxlY3Rpb25UcmF2ZXJzZUZv
cndhcmQoRWxlbWVudComIGN1cnJlbnQsIHVuc2lnbmVkIGNvdW50LCB1bnNpZ25lZCYgdHJhdmVy
c2VkQ291bnQpIGNvbnN0Ci17Ci0gICAgY3VycmVudCA9IHRyYXZlcnNlRm9yd2FyZCgqY3VycmVu
dCwgY291bnQsIHRyYXZlcnNlZENvdW50LCByb290Tm9kZSgpKTsKLX0KLQotdm9pZCBIVE1MQ29s
bGVjdGlvbjo6Y29sbGVjdGlvblRyYXZlcnNlQmFja3dhcmQoRWxlbWVudComIGN1cnJlbnQsIHVu
c2lnbmVkIGNvdW50KSBjb25zdAotewotICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBvcHRp
bWl6ZWQgc2ltaWxhcmx5IHRvIHRoZSBmb3J3YXJkIGNhc2UuCi0gICAgaWYgKG1fc2hvdWxkT25s
eUluY2x1ZGVEaXJlY3RDaGlsZHJlbikgewotICAgICAgICBmb3IgKDsgY291bnQgJiYgY3VycmVu
dDsgLS1jb3VudCkKLSAgICAgICAgICAgIGN1cnJlbnQgPSBpdGVyYXRlRm9yUHJldmlvdXNFbGVt
ZW50KEVsZW1lbnRUcmF2ZXJzYWw6OnByZXZpb3VzU2libGluZygqY3VycmVudCkpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotICAgIGF1dG8mIHJvb3QgPSByb290Tm9kZSgpOwotICAgIGZvciAo
OyBjb3VudCAmJiBjdXJyZW50OyAtLWNvdW50KQotICAgICAgICBjdXJyZW50ID0gaXRlcmF0ZUZv
clByZXZpb3VzRWxlbWVudChFbGVtZW50VHJhdmVyc2FsOjpwcmV2aW91cygqY3VycmVudCwgJnJv
b3QpKTsKLX0KLQotdm9pZCBIVE1MQ29sbGVjdGlvbjo6aW52YWxpZGF0ZUNhY2hlKERvY3VtZW50
JiBkb2N1bWVudCkgY29uc3QKLXsKLSAgICBpZiAobV9pbmRleENhY2hlLmhhc1ZhbGlkQ2FjaGUo
KnRoaXMpKSB7Ci0gICAgICAgIGRvY3VtZW50LnVucmVnaXN0ZXJDb2xsZWN0aW9uKGNvbnN0X2Nh
c3Q8SFRNTENvbGxlY3Rpb24mPigqdGhpcykpOwotICAgICAgICBtX2luZGV4Q2FjaGUuaW52YWxp
ZGF0ZSgqdGhpcyk7Ci0gICAgfQogICAgIGlmIChoYXNOYW1lZEVsZW1lbnRDYWNoZSgpKQogICAg
ICAgICBpbnZhbGlkYXRlTmFtZWRFbGVtZW50Q2FjaGUoZG9jdW1lbnQpOwogfQpAQCAtNDAwLDM4
ICsxMzMsNiBAQCB2b2lkIEhUTUxDb2xsZWN0aW9uOjppbnZhbGlkYXRlTmFtZWRFbGVtZW50Q2Fj
aGUoRG9jdW1lbnQmIGRvY3VtZW50KSBjb25zdAogCiBFbGVtZW50KiBIVE1MQ29sbGVjdGlvbjo6
bmFtZWRJdGVtKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkgY29uc3QKIHsKLSAgICAvLyBodHRw
Oi8vbXNkbi5taWNyb3NvZnQuY29tL3dvcmtzaG9wL2F1dGhvci9kaHRtbC9yZWZlcmVuY2UvbWV0
aG9kcy9uYW1lZGl0ZW0uYXNwCi0gICAgLy8gVGhpcyBtZXRob2QgZmlyc3Qgc2VhcmNoZXMgZm9y
IGFuIG9iamVjdCB3aXRoIGEgbWF0Y2hpbmcgaWQKLSAgICAvLyBhdHRyaWJ1dGUuIElmIGEgbWF0
Y2ggaXMgbm90IGZvdW5kLCB0aGUgbWV0aG9kIHRoZW4gc2VhcmNoZXMgZm9yIGFuCi0gICAgLy8g
b2JqZWN0IHdpdGggYSBtYXRjaGluZyBuYW1lIGF0dHJpYnV0ZSwgYnV0IG9ubHkgb24gdGhvc2Ug
ZWxlbWVudHMKLSAgICAvLyB0aGF0IGFyZSBhbGxvd2VkIGEgbmFtZSBhdHRyaWJ1dGUuCi0KLSAg
ICBpZiAobmFtZS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgQ29u
dGFpbmVyTm9kZSYgcm9vdCA9IHJvb3ROb2RlKCk7Ci0gICAgaWYgKCF1c2VzQ3VzdG9tRm9yd2Fy
ZE9ubHlUcmF2ZXJzYWwoKSAmJiByb290LmlzSW5UcmVlU2NvcGUoKSkgewotICAgICAgICBFbGVt
ZW50KiBjYW5kaWRhdGUgPSBudWxscHRyOwotCi0gICAgICAgIFRyZWVTY29wZSYgdHJlZVNjb3Bl
ID0gcm9vdC50cmVlU2NvcGUoKTsKLSAgICAgICAgaWYgKHRyZWVTY29wZS5oYXNFbGVtZW50V2l0
aElkKCpuYW1lLmltcGwoKSkpIHsKLSAgICAgICAgICAgIGlmICghdHJlZVNjb3BlLmNvbnRhaW5z
TXVsdGlwbGVFbGVtZW50c1dpdGhJZChuYW1lKSkKLSAgICAgICAgICAgICAgICBjYW5kaWRhdGUg
PSB0cmVlU2NvcGUuZ2V0RWxlbWVudEJ5SWQobmFtZSk7Ci0gICAgICAgIH0gZWxzZSBpZiAodHJl
ZVNjb3BlLmhhc0VsZW1lbnRXaXRoTmFtZSgqbmFtZS5pbXBsKCkpKSB7Ci0gICAgICAgICAgICBp
ZiAoIXRyZWVTY29wZS5jb250YWluc011bHRpcGxlRWxlbWVudHNXaXRoTmFtZShuYW1lKSkgewot
ICAgICAgICAgICAgICAgIGNhbmRpZGF0ZSA9IHRyZWVTY29wZS5nZXRFbGVtZW50QnlOYW1lKG5h
bWUpOwotICAgICAgICAgICAgICAgIGlmIChjYW5kaWRhdGUgJiYgdHlwZSgpID09IERvY0FsbCAm
JiAhbmFtZVNob3VsZEJlVmlzaWJsZUluRG9jdW1lbnRBbGwoKmNhbmRpZGF0ZSkpCi0gICAgICAg
ICAgICAgICAgICAgIGNhbmRpZGF0ZSA9IG51bGxwdHI7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
IH0gZWxzZQotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICAgICAgaWYgKGNhbmRp
ZGF0ZSAmJiBpc01hdGNoaW5nRWxlbWVudCgqdGhpcywgKmNhbmRpZGF0ZSkpIHsKLSAgICAgICAg
ICAgIGlmIChtX3Nob3VsZE9ubHlJbmNsdWRlRGlyZWN0Q2hpbGRyZW4gPyBjYW5kaWRhdGUtPnBh
cmVudE5vZGUoKSA9PSAmcm9vdCA6IGNhbmRpZGF0ZS0+aXNEZXNjZW5kYW50T2YoJnJvb3QpKQot
ICAgICAgICAgICAgICAgIHJldHVybiBjYW5kaWRhdGU7Ci0gICAgICAgIH0KLSAgICB9Ci0KICAg
ICAvLyBUaGUgcGF0aG9sb2dpY2FsIGNhc2UuIFdlIG5lZWQgdG8gd2FsayB0aGUgZW50aXJlIHN1
YnRyZWUuCiAgICAgdXBkYXRlTmFtZWRFbGVtZW50Q2FjaGUoKTsKICAgICBBU1NFUlQobV9uYW1l
ZEVsZW1lbnRDYWNoZSk7CkBAIC00NTYsOSArMTU3LDkgQEAgdm9pZCBIVE1MQ29sbGVjdGlvbjo6
dXBkYXRlTmFtZWRFbGVtZW50Q2FjaGUoKSBjb25zdAogCiAgICAgYXV0byBjYWNoZSA9IHN0ZDo6
bWFrZV91bmlxdWU8Q29sbGVjdGlvbk5hbWVkRWxlbWVudENhY2hlPigpOwogCi0gICAgdW5zaWdu
ZWQgc2l6ZSA9IG1faW5kZXhDYWNoZS5ub2RlQ291bnQoKnRoaXMpOworICAgIHVuc2lnbmVkIHNp
emUgPSBsZW5ndGgoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7
Ci0gICAgICAgIEVsZW1lbnQmIGVsZW1lbnQgPSAqbV9pbmRleENhY2hlLm5vZGVBdCgqdGhpcywg
aSk7CisgICAgICAgIEVsZW1lbnQmIGVsZW1lbnQgPSAqaXRlbShpKTsKICAgICAgICAgY29uc3Qg
QXRvbWljU3RyaW5nJiBpZCA9IGVsZW1lbnQuZ2V0SWRBdHRyaWJ1dGUoKTsKICAgICAgICAgaWYg
KCFpZC5pc0VtcHR5KCkpCiAgICAgICAgICAgICBjYWNoZS0+YXBwZW5kVG9JZENhY2hlKGlkLCBl
bGVtZW50KTsKQEAgLTUxMywxMCArMjE0LDQgQEAgUGFzc1JlZlB0cjxOb2RlTGlzdD4gSFRNTENv
bGxlY3Rpb246OnRhZ3MoY29uc3QgU3RyaW5nJiBuYW1lKQogICAgIHJldHVybiBvd25lck5vZGUo
KS5nZXRFbGVtZW50c0J5VGFnTmFtZShuYW1lKTsKIH0KIAotRWxlbWVudCogSFRNTENvbGxlY3Rp
b246OmN1c3RvbUVsZW1lbnRBZnRlcihFbGVtZW50KikgY29uc3QKLXsKLSAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5oCmluZGV4IDQ3MTRlOTA4ZGRiNWQ5
Yjg4OWMzYjZjZTY1N2ExNDBkN2EzYzU5ZTIuLmU2ZDhjZTYyNDdlNTNhNzAwNzdkYjY0YjY2ODAy
NTViMjFhNjM1ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rp
b24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmgKQEAgLTYwLDU3
ICs2MCwzOCBAQCBwcml2YXRlOgogCiBjbGFzcyBIVE1MQ29sbGVjdGlvbiA6IHB1YmxpYyBTY3Jp
cHRXcmFwcGFibGUsIHB1YmxpYyBSZWZDb3VudGVkPEhUTUxDb2xsZWN0aW9uPiB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFJlZjxIVE1MQ29sbGVjdGlvbj4gY3JlYXRlKENvbnRhaW5lck5vZGUmIGJh
c2UsIENvbGxlY3Rpb25UeXBlKTsKICAgICB2aXJ0dWFsIH5IVE1MQ29sbGVjdGlvbigpOwogCiAg
ICAgLy8gRE9NIEFQSQotICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0OwotICAgIEVsZW1lbnQq
IGl0ZW0odW5zaWduZWQgb2Zmc2V0KSBjb25zdDsKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIGxlbmd0
aCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEVsZW1lbnQqIGl0ZW0odW5zaWduZWQgb2Zmc2V0
KSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBFbGVtZW50KiBuYW1lZEl0ZW0oY29uc3QgQXRvbWlj
U3RyaW5nJiBuYW1lKSBjb25zdDsKICAgICBQYXNzUmVmUHRyPE5vZGVMaXN0PiB0YWdzKGNvbnN0
IFN0cmluZyYpOwogCiAgICAgLy8gTm9uLURPTSBBUEkKICAgICBib29sIGhhc05hbWVkSXRlbShj
b25zdCBBdG9taWNTdHJpbmcmIG5hbWUpIGNvbnN0OwogICAgIFZlY3RvcjxSZWY8RWxlbWVudD4+
IG5hbWVkSXRlbXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKSBjb25zdDsKLSAgICBzaXplX3Qg
bWVtb3J5Q29zdCgpIGNvbnN0OworICAgIHZpcnR1YWwgc2l6ZV90IG1lbW9yeUNvc3QoKSBjb25z
dDsKIAogICAgIGJvb2wgaXNSb290ZWRBdERvY3VtZW50KCkgY29uc3Q7CiAgICAgTm9kZUxpc3RJ
bnZhbGlkYXRpb25UeXBlIGludmFsaWRhdGlvblR5cGUoKSBjb25zdDsKICAgICBDb2xsZWN0aW9u
VHlwZSB0eXBlKCkgY29uc3Q7CiAgICAgQ29udGFpbmVyTm9kZSYgb3duZXJOb2RlKCkgY29uc3Q7
Ci0gICAgdm9pZCBpbnZhbGlkYXRlQ2FjaGUoY29uc3QgUXVhbGlmaWVkTmFtZSogYXR0cmlidXRl
TmFtZSkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVDYWNoZShEb2N1bWVudCYp
IGNvbnN0OwotCi0gICAgLy8gRm9yIENvbGxlY3Rpb25JbmRleENhY2hlOyBkbyBub3QgdXNlIGVs
c2V3aGVyZS4KLSAgICBFbGVtZW50KiBjb2xsZWN0aW9uQmVnaW4oKSBjb25zdDsKLSAgICBFbGVt
ZW50KiBjb2xsZWN0aW9uTGFzdCgpIGNvbnN0OwotICAgIEVsZW1lbnQqIGNvbGxlY3Rpb25FbmQo
KSBjb25zdDsKLSAgICB2b2lkIGNvbGxlY3Rpb25UcmF2ZXJzZUZvcndhcmQoRWxlbWVudComLCB1
bnNpZ25lZCBjb3VudCwgdW5zaWduZWQmIHRyYXZlcnNlZENvdW50KSBjb25zdDsKLSAgICB2b2lk
IGNvbGxlY3Rpb25UcmF2ZXJzZUJhY2t3YXJkKEVsZW1lbnQqJiwgdW5zaWduZWQgY291bnQpIGNv
bnN0OwotICAgIGJvb2wgY29sbGVjdGlvbkNhblRyYXZlcnNlQmFja3dhcmQoKSBjb25zdDsKLSAg
ICB2b2lkIHdpbGxWYWxpZGF0ZUluZGV4Q2FjaGUoKSBjb25zdDsKKyAgICB2b2lkIGludmFsaWRh
dGVDYWNoZShjb25zdCBRdWFsaWZpZWROYW1lKiBhdHRyaWJ1dGVOYW1lKTsKKyAgICB2aXJ0dWFs
IHZvaWQgaW52YWxpZGF0ZUNhY2hlKERvY3VtZW50Jik7CiAKICAgICBib29sIGhhc05hbWVkRWxl
bWVudENhY2hlKCkgY29uc3Q7CiAKIHByb3RlY3RlZDoKLSAgICBlbnVtIEVsZW1lbnRUcmF2ZXJz
YWxUeXBlIHsgTm9ybWFsVHJhdmVyc2FsLCBDdXN0b21Gb3J3YXJkT25seVRyYXZlcnNhbCB9Owot
ICAgIEhUTUxDb2xsZWN0aW9uKENvbnRhaW5lck5vZGUmIGJhc2UsIENvbGxlY3Rpb25UeXBlLCBF
bGVtZW50VHJhdmVyc2FsVHlwZSA9IE5vcm1hbFRyYXZlcnNhbCk7CisgICAgSFRNTENvbGxlY3Rp
b24oQ29udGFpbmVyTm9kZSYgYmFzZSwgQ29sbGVjdGlvblR5cGUpOwogCiAgICAgdmlydHVhbCB2
b2lkIHVwZGF0ZU5hbWVkRWxlbWVudENhY2hlKCkgY29uc3Q7CiAKICAgICB2b2lkIHNldE5hbWVk
SXRlbUNhY2hlKHN0ZDo6dW5pcXVlX3B0cjxDb2xsZWN0aW9uTmFtZWRFbGVtZW50Q2FjaGU+KSBj
b25zdDsKICAgICBjb25zdCBDb2xsZWN0aW9uTmFtZWRFbGVtZW50Q2FjaGUmIG5hbWVkSXRlbUNh
Y2hlcygpIGNvbnN0OwogCi1wcml2YXRlOgogICAgIERvY3VtZW50JiBkb2N1bWVudCgpIGNvbnN0
OwogICAgIENvbnRhaW5lck5vZGUmIHJvb3ROb2RlKCkgY29uc3Q7Ci0gICAgYm9vbCB1c2VzQ3Vz
dG9tRm9yd2FyZE9ubHlUcmF2ZXJzYWwoKSBjb25zdDsKLQotICAgIEVsZW1lbnQqIGl0ZXJhdGVG
b3JQcmV2aW91c0VsZW1lbnQoRWxlbWVudCopIGNvbnN0OwotICAgIEVsZW1lbnQqIGZpcnN0RWxl
bWVudChDb250YWluZXJOb2RlJiByb290KSBjb25zdDsKLSAgICBFbGVtZW50KiB0cmF2ZXJzZUZv
cndhcmQoRWxlbWVudCYsIHVuc2lnbmVkIGNvdW50LCB1bnNpZ25lZCYgdHJhdmVyc2VkQ291bnQs
IENvbnRhaW5lck5vZGUmIHJvb3QpIGNvbnN0OwotCi0gICAgdmlydHVhbCBFbGVtZW50KiBjdXN0
b21FbGVtZW50QWZ0ZXIoRWxlbWVudCopIGNvbnN0OwogCiAgICAgdm9pZCBpbnZhbGlkYXRlTmFt
ZWRFbGVtZW50Q2FjaGUoRG9jdW1lbnQmKSBjb25zdDsKIApAQCAtMTE5LDE2ICsxMDAsMjEgQEAg
cHJpdmF0ZToKIAogICAgIFJlZjxDb250YWluZXJOb2RlPiBtX293bmVyTm9kZTsKIAotICAgIG11
dGFibGUgQ29sbGVjdGlvbkluZGV4Q2FjaGU8SFRNTENvbGxlY3Rpb24sIEVsZW1lbnQqPiBtX2lu
ZGV4Q2FjaGU7CiAgICAgbXV0YWJsZSBzdGQ6OnVuaXF1ZV9wdHI8Q29sbGVjdGlvbk5hbWVkRWxl
bWVudENhY2hlPiBtX25hbWVkRWxlbWVudENhY2hlOwogCiAgICAgY29uc3QgdW5zaWduZWQgbV9j
b2xsZWN0aW9uVHlwZSA6IDU7CiAgICAgY29uc3QgdW5zaWduZWQgbV9pbnZhbGlkYXRpb25UeXBl
IDogNDsKICAgICBjb25zdCB1bnNpZ25lZCBtX3Jvb3RUeXBlIDogMTsKLSAgICBjb25zdCB1bnNp
Z25lZCBtX3Nob3VsZE9ubHlJbmNsdWRlRGlyZWN0Q2hpbGRyZW4gOiAxOwotICAgIGNvbnN0IHVu
c2lnbmVkIG1fdXNlc0N1c3RvbUZvcndhcmRPbmx5VHJhdmVyc2FsIDogMTsKIH07CiAKK2lubGlu
ZSBDb250YWluZXJOb2RlJiBIVE1MQ29sbGVjdGlvbjo6cm9vdE5vZGUoKSBjb25zdAoreworICAg
IGlmIChpc1Jvb3RlZEF0RG9jdW1lbnQoKSAmJiBvd25lck5vZGUoKS5pbkRvY3VtZW50KCkpCisg
ICAgICAgIHJldHVybiBvd25lck5vZGUoKS5kb2N1bWVudCgpOworCisgICAgcmV0dXJuIG93bmVy
Tm9kZSgpOworfQorCiBpbmxpbmUgY29uc3QgVmVjdG9yPEVsZW1lbnQqPiogQ29sbGVjdGlvbk5h
bWVkRWxlbWVudENhY2hlOjpmaW5kRWxlbWVudHNXaXRoSWQoY29uc3QgQXRvbWljU3RyaW5nJiBp
ZCkgY29uc3QKIHsKICAgICByZXR1cm4gZmluZChtX2lkTWFwLCBpZCk7CkBAIC0xNzcsNyArMTYz
LDcgQEAgaW5saW5lIHZvaWQgQ29sbGVjdGlvbk5hbWVkRWxlbWVudENhY2hlOjphcHBlbmQoU3Ry
aW5nVG9FbGVtZW50c01hcCYgbWFwLCBjb25zdAogCiBpbmxpbmUgc2l6ZV90IEhUTUxDb2xsZWN0
aW9uOjptZW1vcnlDb3N0KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9pbmRleENhY2hlLm1lbW9y
eUNvc3QoKSArIChtX25hbWVkRWxlbWVudENhY2hlID8gbV9uYW1lZEVsZW1lbnRDYWNoZS0+bWVt
b3J5Q29zdCgpIDogMCk7CisgICAgcmV0dXJuIG1fbmFtZWRFbGVtZW50Q2FjaGUgPyBtX25hbWVk
RWxlbWVudENhY2hlLT5tZW1vcnlDb3N0KCkgOiAwOwogfQogCiBpbmxpbmUgYm9vbCBIVE1MQ29s
bGVjdGlvbjo6aXNSb290ZWRBdERvY3VtZW50KCkgY29uc3QKQEAgLTIwNSw3ICsxOTEsNyBAQCBp
bmxpbmUgRG9jdW1lbnQmIEhUTUxDb2xsZWN0aW9uOjpkb2N1bWVudCgpIGNvbnN0CiAgICAgcmV0
dXJuIG1fb3duZXJOb2RlLT5kb2N1bWVudCgpOwogfQogCi1pbmxpbmUgdm9pZCBIVE1MQ29sbGVj
dGlvbjo6aW52YWxpZGF0ZUNhY2hlKGNvbnN0IFF1YWxpZmllZE5hbWUqIGF0dHJpYnV0ZU5hbWUp
IGNvbnN0CitpbmxpbmUgdm9pZCBIVE1MQ29sbGVjdGlvbjo6aW52YWxpZGF0ZUNhY2hlKGNvbnN0
IFF1YWxpZmllZE5hbWUqIGF0dHJpYnV0ZU5hbWUpCiB7CiAgICAgaWYgKCFhdHRyaWJ1dGVOYW1l
IHx8IHNob3VsZEludmFsaWRhdGVUeXBlT25BdHRyaWJ1dGVDaGFuZ2UoaW52YWxpZGF0aW9uVHlw
ZSgpLCAqYXR0cmlidXRlTmFtZSkpCiAgICAgICAgIGludmFsaWRhdGVDYWNoZShkb2N1bWVudCgp
KTsKQEAgLTIxMywyMSArMTk5LDYgQEAgaW5saW5lIHZvaWQgSFRNTENvbGxlY3Rpb246OmludmFs
aWRhdGVDYWNoZShjb25zdCBRdWFsaWZpZWROYW1lKiBhdHRyaWJ1dGVOYW1lKQogICAgICAgICBp
bnZhbGlkYXRlTmFtZWRFbGVtZW50Q2FjaGUoZG9jdW1lbnQoKSk7CiB9CiAKLWlubGluZSBFbGVt
ZW50KiBIVE1MQ29sbGVjdGlvbjo6Y29sbGVjdGlvbkVuZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJu
IG51bGxwdHI7Ci19Ci0KLWlubGluZSBib29sIEhUTUxDb2xsZWN0aW9uOjpjb2xsZWN0aW9uQ2Fu
VHJhdmVyc2VCYWNrd2FyZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuICFtX3VzZXNDdXN0b21Gb3J3
YXJkT25seVRyYXZlcnNhbDsKLX0KLQotaW5saW5lIHZvaWQgSFRNTENvbGxlY3Rpb246OndpbGxW
YWxpZGF0ZUluZGV4Q2FjaGUoKSBjb25zdAotewotICAgIGRvY3VtZW50KCkucmVnaXN0ZXJDb2xs
ZWN0aW9uKGNvbnN0X2Nhc3Q8SFRNTENvbGxlY3Rpb24mPigqdGhpcykpOwotfQotCiBpbmxpbmUg
Ym9vbCBIVE1MQ29sbGVjdGlvbjo6aGFzTmFtZWRFbGVtZW50Q2FjaGUoKSBjb25zdAogewogICAg
IHJldHVybiAhIW1fbmFtZWRFbGVtZW50Q2FjaGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RmllbGRTZXRFbGVtZW50LmNwcAppbmRleCBhYzMzMmU4NzAyMjYxOGMyZTQ5M2I2OTc3YjA4M2Q1
NWFiODZhZDdkLi40MDBhMGJhZTBlZDk0ZmUwNTNmZDYzNTcxYjQwYWFjOThmYmFjOGRkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5jcHAKQEAgLTI2LDEwICsy
NiwxMSBAQAogI2luY2x1ZGUgIkhUTUxGaWVsZFNldEVsZW1lbnQuaCIKIAogI2luY2x1ZGUgIkVs
ZW1lbnRJdGVyYXRvci5oIgotI2luY2x1ZGUgIkhUTUxDb2xsZWN0aW9uLmgiCisjaW5jbHVkZSAi
SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJIVE1MTGVnZW5kRWxlbWVu
dC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhUTUxPYmplY3RFbGVtZW50
LmgiCisjaW5jbHVkZSAiTm9kZVJhcmVEYXRhLmgiCiAjaW5jbHVkZSAiUmVuZGVyRmllbGRzZXQu
aCIKICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKQEAgLTE2MSw3ICsxNjIsNyBAQCBI
VE1MTGVnZW5kRWxlbWVudCogSFRNTEZpZWxkU2V0RWxlbWVudDo6bGVnZW5kKCkgY29uc3QKIAog
UmVmPEhUTUxDb2xsZWN0aW9uPiBIVE1MRmllbGRTZXRFbGVtZW50OjplbGVtZW50cygpCiB7Ci0g
ICAgcmV0dXJuIGVuc3VyZUNhY2hlZEhUTUxDb2xsZWN0aW9uKEZvcm1Db250cm9scyk7CisgICAg
cmV0dXJuIGVuc3VyZVJhcmVEYXRhKCkuZW5zdXJlTm9kZUxpc3RzKCkuYWRkQ2FjaGVkQ29sbGVj
dGlvbjxIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbj4oKnRoaXMsIEZvcm1Db250cm9scyk7CiB9
CiAKIHZvaWQgSFRNTEZpZWxkU2V0RWxlbWVudDo6cmVmcmVzaEVsZW1lbnRzSWZOZWVkZWQoKSBj
b25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29s
bGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0
aW9uLmNwcAppbmRleCAwZGVlY2MyNGVjZDliNWMzN2IwYWMwOWMzMTc1MjczNDJiNzExZDg0Li4z
ODBlZWI2MDg1NGY0OTE3MzczOTE0MzRkMjVhZTA3YjY1ZTgyMWNlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmNwcApAQCAtMzYsNyAr
MzYsNyBAQCB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogLy8gY2FsY3VsYXRpb24gZXZlcnkg
dGltZSBpZiBhbnl0aGluZyBoYXMgY2hhbmdlZC4KIAogSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rp
b246OkhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uKENvbnRhaW5lck5vZGUmIG93bmVyTm9kZSkK
LSAgICA6IEhUTUxDb2xsZWN0aW9uKG93bmVyTm9kZSwgRm9ybUNvbnRyb2xzLCBDdXN0b21Gb3J3
YXJkT25seVRyYXZlcnNhbCkKKyAgICA6IEJhc2Uob3duZXJOb2RlLCBGb3JtQ29udHJvbHMpCiAg
ICAgLCBtX2NhY2hlZEVsZW1lbnQobnVsbHB0cikKICAgICAsIG1fY2FjaGVkRWxlbWVudE9mZnNl
dEluQXJyYXkoMCkKIHsKQEAgLTE3Nyw5ICsxNzcsOSBAQCB2b2lkIEhUTUxGb3JtQ29udHJvbHND
b2xsZWN0aW9uOjp1cGRhdGVOYW1lZEVsZW1lbnRDYWNoZSgpIGNvbnN0CiAgICAgc2V0TmFtZWRJ
dGVtQ2FjaGUoV1RGOjptb3ZlKGNhY2hlKSk7CiB9CiAKLXZvaWQgSFRNTEZvcm1Db250cm9sc0Nv
bGxlY3Rpb246OmludmFsaWRhdGVDYWNoZShEb2N1bWVudCYgZG9jdW1lbnQpIGNvbnN0Cit2b2lk
IEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uOjppbnZhbGlkYXRlQ2FjaGUoRG9jdW1lbnQmIGRv
Y3VtZW50KQogewotICAgIEhUTUxDb2xsZWN0aW9uOjppbnZhbGlkYXRlQ2FjaGUoZG9jdW1lbnQp
OworICAgIEJhc2U6OmludmFsaWRhdGVDYWNoZShkb2N1bWVudCk7CiAgICAgbV9jYWNoZWRFbGVt
ZW50ID0gbnVsbHB0cjsKICAgICBtX2NhY2hlZEVsZW1lbnRPZmZzZXRJbkFycmF5ID0gMDsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rp
b24uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uaApp
bmRleCBiMTY4YWQ5YzA2MDU0NDhhOTk0OWQ0YThlMTVlNDQ2NWQ3ODViYjczLi41NDlmMDM2Y2I4
OTc1Nzc1MDJkZWY4N2FkOWU5NGUwOWJjMTRjNmY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5oCkBAIC0yMyw3ICsyMyw3IEBACiAjaWZu
ZGVmIEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uX2gKICNkZWZpbmUgSFRNTEZvcm1Db250cm9s
c0NvbGxlY3Rpb25faAogCi0jaW5jbHVkZSAiSFRNTENvbGxlY3Rpb24uaCIKKyNpbmNsdWRlICJD
YWNoZWRIVE1MQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxFbGVtZW50LmgiCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKQEAgLTM0LDIxICszNCwyNCBAQCBjbGFzcyBIVE1MSW1hZ2VFbGVtZW50
OwogLy8gVGhpcyBjbGFzcyBpcyBqdXN0IGEgYmlnIGhhY2sgdG8gZmluZCBmb3JtIGVsZW1lbnRz
IGV2ZW4gaW4gbWFsZm9ybWVkIEhUTUwgZWxlbWVudHMuCiAvLyBUaGUgZmFtb3VzIDx0YWJsZT48
dHI+PGZvcm0+PHRkPiBwcm9ibGVtLgogCi1jbGFzcyBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlv
biBmaW5hbCA6IHB1YmxpYyBIVE1MQ29sbGVjdGlvbiB7CitjbGFzcyBIVE1MRm9ybUNvbnRyb2xz
Q29sbGVjdGlvbiBmaW5hbCA6IHB1YmxpYyBDYWNoZWRIVE1MQ29sbGVjdGlvbjxIVE1MRm9ybUNv
bnRyb2xzQ29sbGVjdGlvbiwgQ29sbGVjdGlvblR5cGVUcmFpdHM8Rm9ybUNvbnRyb2xzPjo6dHJh
dmVyc2FsVHlwZT4gewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8SFRNTEZvcm1Db250cm9sc0Nv
bGxlY3Rpb24+IGNyZWF0ZShDb250YWluZXJOb2RlJiwgQ29sbGVjdGlvblR5cGUpOwogICAgIHZp
cnR1YWwgfkhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uKCk7CiAKKyAgICAvLyBGb3IgQ2FjaGVk
SFRNTENvbGxlY3Rpb24uCisgICAgRWxlbWVudCogY3VzdG9tRWxlbWVudEFmdGVyKEVsZW1lbnQq
KSBjb25zdDsKKwogcHJpdmF0ZToKKyAgICB1c2luZyBCYXNlID0gQ2FjaGVkSFRNTENvbGxlY3Rp
b248SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24sIENvbGxlY3Rpb25UeXBlVHJhaXRzPEZvcm1D
b250cm9scz46OnRyYXZlcnNhbFR5cGU+OwogICAgIGV4cGxpY2l0IEhUTUxGb3JtQ29udHJvbHND
b2xsZWN0aW9uKENvbnRhaW5lck5vZGUmKTsKIAogICAgIHZpcnR1YWwgSFRNTEVsZW1lbnQqIG5h
bWVkSXRlbShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgdm9pZCBpbnZhbGlkYXRlQ2FjaGUoRG9jdW1lbnQmKSBjb25zdCBvdmVycmlkZTsKKyAg
ICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZUNhY2hlKERvY3VtZW50Jikgb3ZlcnJpZGU7CiAgICAg
dmlydHVhbCB2b2lkIHVwZGF0ZU5hbWVkRWxlbWVudENhY2hlKCkgY29uc3Qgb3ZlcnJpZGU7CiAK
ICAgICBjb25zdCBWZWN0b3I8Rm9ybUFzc29jaWF0ZWRFbGVtZW50Kj4mIGZvcm1Db250cm9sRWxl
bWVudHMoKSBjb25zdDsKICAgICBjb25zdCBWZWN0b3I8SFRNTEltYWdlRWxlbWVudCo+JiBmb3Jt
SW1hZ2VFbGVtZW50cygpIGNvbnN0OwotICAgIHZpcnR1YWwgRWxlbWVudCogY3VzdG9tRWxlbWVu
dEFmdGVyKEVsZW1lbnQqKSBjb25zdCBvdmVycmlkZTsKIAogICAgIG11dGFibGUgRWxlbWVudCog
bV9jYWNoZWRFbGVtZW50OwogICAgIG11dGFibGUgdW5zaWduZWQgbV9jYWNoZWRFbGVtZW50T2Zm
c2V0SW5BcnJheTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcAppbmRleCA1
ZmZhM2E4YTcxOTk3ODdmN2RmN2RmMWY4MDlhNjhhZTY0M2QwMWVkLi4wNTQyNzlmZjFlZjVhOGMz
YjE4MGE0YjgwZDIwZmJjOWViZmFlMTgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxGb3JtRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVs
ZW1lbnQuY3BwCkBAIC0zNywxMSArMzcsMTIgQEAKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1
ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKLSNpbmNs
dWRlICJIVE1MQ29sbGVjdGlvbi5oIgorI2luY2x1ZGUgIkhUTUxGb3JtQ29udHJvbHNDb2xsZWN0
aW9uLmgiCiAjaW5jbHVkZSAiSFRNTEltYWdlRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxJbnB1
dEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJIVE1MVGFibGVF
bGVtZW50LmgiCisjaW5jbHVkZSAiTm9kZVJhcmVEYXRhLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgog
I2luY2x1ZGUgIlJlbmRlclRleHRDb250cm9sLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxl
ci5oIgpAQCAtNjM4LDcgKzYzOSw3IEBAIHZvaWQgSFRNTEZvcm1FbGVtZW50OjpyZW1vdmVJbWdF
bGVtZW50KEhUTUxJbWFnZUVsZW1lbnQqIGUpCiAKIFJlZjxIVE1MQ29sbGVjdGlvbj4gSFRNTEZv
cm1FbGVtZW50OjplbGVtZW50cygpCiB7Ci0gICAgcmV0dXJuIGVuc3VyZUNhY2hlZEhUTUxDb2xs
ZWN0aW9uKEZvcm1Db250cm9scyk7CisgICAgcmV0dXJuIGVuc3VyZVJhcmVEYXRhKCkuZW5zdXJl
Tm9kZUxpc3RzKCkuYWRkQ2FjaGVkQ29sbGVjdGlvbjxIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlv
bj4oKnRoaXMsIEZvcm1Db250cm9scyk7CiB9CiAKIFN0cmluZyBIVE1MRm9ybUVsZW1lbnQ6Om5h
bWUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWFwRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNYXBFbGVtZW50LmNwcAppbmRleCBhM2M5
YzMzOTIzYTcwZmM4ZWI5NmQzZTMwZGEwYzQzYmU3YWEwMjBiLi4zZWU2MWJhYTAwMWUyMzRhNGIz
M2Y3ZDE1OGJjNjg2OTkyYzQ2Y2Y4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNYXBFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNYXBFbGVtZW50
LmNwcApAQCAtMjUsMTEgKzI1LDEyIEBACiAjaW5jbHVkZSAiQXR0cmlidXRlLmgiCiAjaW5jbHVk
ZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFbGVtZW50SXRlcmF0b3IuaCIKKyNpbmNsdWRlICJH
ZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJIVE1MQXJlYUVsZW1lbnQu
aCIKLSNpbmNsdWRlICJIVE1MQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxJbWFnZUVsZW1l
bnQuaCIKICNpbmNsdWRlICJIaXRUZXN0UmVzdWx0LmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgor
I2luY2x1ZGUgIk5vZGVSYXJlRGF0YS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTEx
Miw3ICsxMTMsNyBAQCB2b2lkIEhUTUxNYXBFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbgogCiBSZWY8SFRNTENvbGxlY3Rp
b24+IEhUTUxNYXBFbGVtZW50OjphcmVhcygpCiB7Ci0gICAgcmV0dXJuIGVuc3VyZUNhY2hlZEhU
TUxDb2xsZWN0aW9uKE1hcEFyZWFzKTsKKyAgICByZXR1cm4gZW5zdXJlUmFyZURhdGEoKS5lbnN1
cmVOb2RlTGlzdHMoKS5hZGRDYWNoZWRDb2xsZWN0aW9uPEdlbmVyaWNDYWNoZWRIVE1MQ29sbGVj
dGlvbjxDb2xsZWN0aW9uVHlwZVRyYWl0czxNYXBBcmVhcz46OnRyYXZlcnNhbFR5cGU+PigqdGhp
cywgTWFwQXJlYXMpOwogfQogCiBOb2RlOjpJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IEhU
TUxNYXBFbGVtZW50OjppbnNlcnRlZEludG8oQ29udGFpbmVyTm9kZSYgaW5zZXJ0aW9uUG9pbnQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxOYW1lQ29sbGVjdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxOYW1lQ29sbGVjdGlvbi5jcHAKaW5kZXggMzdmNThj
MTRlMWNkYzVkNjFjMjM1NTJhZmU2MTY2ODBlOWZmOTg1My4uMzI5NzQ5YmJiMGQzMGY5MGM3NDU4
NzRkMDE1YTM3NDU1MjMzMzVmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TmFtZUNvbGxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE5hbWVDb2xs
ZWN0aW9uLmNwcApAQCAtMzYsMTkgKzM2LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2lu
ZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCi1IVE1MTmFtZUNvbGxlY3Rpb246OkhUTUxOYW1lQ29s
bGVjdGlvbihEb2N1bWVudCYgZG9jdW1lbnQsIENvbGxlY3Rpb25UeXBlIHR5cGUsIGNvbnN0IEF0
b21pY1N0cmluZyYgbmFtZSkKLSAgICA6IEhUTUxDb2xsZWN0aW9uKGRvY3VtZW50LCB0eXBlKQot
ICAgICwgbV9uYW1lKG5hbWUpCi17Ci19Ci0KLUhUTUxOYW1lQ29sbGVjdGlvbjo6fkhUTUxOYW1l
Q29sbGVjdGlvbigpCi17Ci0gICAgQVNTRVJUKHR5cGUoKSA9PSBXaW5kb3dOYW1lZEl0ZW1zIHx8
IHR5cGUoKSA9PSBEb2N1bWVudE5hbWVkSXRlbXMpOwotCi0gICAgZG9jdW1lbnQoKS5ub2RlTGlz
dHMoKS0+cmVtb3ZlQ2FjaGVkQ29sbGVjdGlvbih0aGlzLCBtX25hbWUpOwotfQotCiBib29sIFdp
bmRvd05hbWVDb2xsZWN0aW9uOjplbGVtZW50TWF0Y2hlc0lmTmFtZUF0dHJpYnV0ZU1hdGNoKGNv
bnN0IEVsZW1lbnQmIGVsZW1lbnQpCiB7CiAgICAgcmV0dXJuIGlzPEhUTUxJbWFnZUVsZW1lbnQ+
KGVsZW1lbnQpIHx8IGlzPEhUTUxGb3JtRWxlbWVudD4oZWxlbWVudCkgfHwgaXM8SFRNTEFwcGxl
dEVsZW1lbnQ+KGVsZW1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxO
YW1lQ29sbGVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTmFtZUNvbGxlY3Rpb24u
aAppbmRleCAzMjA3NDNkNWFhOWNmYmI4MjE4NDU1OGQ4MjAxNzg5OGMwOGY3NzM3Li41NjNmZjhk
YWU5OGU4Y2UyYzgzNDk3MDJkZGE1ZGZlMjdlMjcxOGM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxOYW1lQ29sbGVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE5hbWVDb2xsZWN0aW9uLmgKQEAgLTIzLDMyICsyMyw1MiBAQAogI2lmbmRlZiBIVE1MTmFt
ZUNvbGxlY3Rpb25faAogI2RlZmluZSBIVE1MTmFtZUNvbGxlY3Rpb25faAogCi0jaW5jbHVkZSAi
SFRNTENvbGxlY3Rpb24uaCIKKyNpbmNsdWRlICJDYWNoZWRIVE1MQ29sbGVjdGlvbi5oIgorI2lu
Y2x1ZGUgIk5vZGVSYXJlRGF0YS5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERvY3VtZW50OwogCi1jbGFzcyBIVE1M
TmFtZUNvbGxlY3Rpb24gOiBwdWJsaWMgSFRNTENvbGxlY3Rpb24gewordGVtcGxhdGUgPHR5cGVu
YW1lIEhUTUxDb2xsZWN0aW9uQ2xhc3MsIENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlIHRyYXZlcnNh
bFR5cGU+CitjbGFzcyBIVE1MTmFtZUNvbGxlY3Rpb24gOiBwdWJsaWMgQ2FjaGVkSFRNTENvbGxl
Y3Rpb248SFRNTENvbGxlY3Rpb25DbGFzcywgdHJhdmVyc2FsVHlwZT4gewogcHVibGljOgogICAg
IHZpcnR1YWwgfkhUTUxOYW1lQ29sbGVjdGlvbigpOwogCi0gICAgRG9jdW1lbnQmIGRvY3VtZW50
KCkgeyByZXR1cm4gZG93bmNhc3Q8RG9jdW1lbnQ+KG93bmVyTm9kZSgpKTsgfQotCiBwcm90ZWN0
ZWQ6CiAgICAgSFRNTE5hbWVDb2xsZWN0aW9uKERvY3VtZW50JiwgQ29sbGVjdGlvblR5cGUsIGNv
bnN0IEF0b21pY1N0cmluZyYgbmFtZSk7CiAKICAgICBBdG9taWNTdHJpbmcgbV9uYW1lOworCitw
cml2YXRlOgorICAgIHVzaW5nIEJhc2UgPSBDYWNoZWRIVE1MQ29sbGVjdGlvbjxIVE1MQ29sbGVj
dGlvbkNsYXNzLCB0cmF2ZXJzYWxUeXBlPjsKKyAgICBEb2N1bWVudCYgZG9jdW1lbnQoKSB7IHJl
dHVybiBkb3duY2FzdDxEb2N1bWVudD4oQmFzZTo6b3duZXJOb2RlKCkpOyB9CiB9OwogCi1jbGFz
cyBXaW5kb3dOYW1lQ29sbGVjdGlvbiBmaW5hbCA6IHB1YmxpYyBIVE1MTmFtZUNvbGxlY3Rpb24g
ewordGVtcGxhdGUgPHR5cGVuYW1lIEhUTUxDb2xsZWN0aW9uQ2xhc3MsIENvbGxlY3Rpb25UcmF2
ZXJzYWxUeXBlIHRyYXZlcnNhbFR5cGU+CitIVE1MTmFtZUNvbGxlY3Rpb248SFRNTENvbGxlY3Rp
b25DbGFzcywgdHJhdmVyc2FsVHlwZT46OkhUTUxOYW1lQ29sbGVjdGlvbihEb2N1bWVudCYgZG9j
dW1lbnQsIENvbGxlY3Rpb25UeXBlIHR5cGUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkKKyAg
ICA6IENhY2hlZEhUTUxDb2xsZWN0aW9uPEhUTUxDb2xsZWN0aW9uQ2xhc3MsIHRyYXZlcnNhbFR5
cGU+KGRvY3VtZW50LCB0eXBlKQorICAgICwgbV9uYW1lKG5hbWUpCit7Cit9CisKK3RlbXBsYXRl
IDx0eXBlbmFtZSBIVE1MQ29sbGVjdGlvbkNsYXNzLCBDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZSB0
cmF2ZXJzYWxUeXBlPgorSFRNTE5hbWVDb2xsZWN0aW9uPEhUTUxDb2xsZWN0aW9uQ2xhc3MsIHRy
YXZlcnNhbFR5cGU+Ojp+SFRNTE5hbWVDb2xsZWN0aW9uKCkKK3sKKyAgICBBU1NFUlQoQmFzZTo6
dHlwZSgpID09IFdpbmRvd05hbWVkSXRlbXMgfHwgQmFzZTo6dHlwZSgpID09IERvY3VtZW50TmFt
ZWRJdGVtcyk7CisKKyAgICBkb2N1bWVudCgpLm5vZGVMaXN0cygpLT5yZW1vdmVDYWNoZWRDb2xs
ZWN0aW9uKHRoaXMsIG1fbmFtZSk7Cit9CisKK2NsYXNzIFdpbmRvd05hbWVDb2xsZWN0aW9uIGZp
bmFsIDogcHVibGljIEhUTUxOYW1lQ29sbGVjdGlvbjxXaW5kb3dOYW1lQ29sbGVjdGlvbiwgQ29s
bGVjdGlvblRyYXZlcnNhbFR5cGU6OkRlc2NlbmRhbnRzPiB7CiBwdWJsaWM6CiAgICAgc3RhdGlj
IFJlZjxXaW5kb3dOYW1lQ29sbGVjdGlvbj4gY3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgQ29s
bGVjdGlvblR5cGUgdHlwZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2luZG93TmFtZUNvbGxlY3Rpb24oZG9jdW1lbnQsIHR5
cGUsIG5hbWUpKTsKICAgICB9CiAKKyAgICAvLyBGb3IgQ2FjaGVkSFRNTENvbGxlY3Rpb24uCiAg
ICAgYm9vbCBlbGVtZW50TWF0Y2hlcyhjb25zdCBFbGVtZW50JiBlbGVtZW50KSBjb25zdCB7IHJl
dHVybiBlbGVtZW50TWF0Y2hlcyhlbGVtZW50LCBtX25hbWUuaW1wbCgpKTsgfQogCiAgICAgc3Rh
dGljIGJvb2wgZWxlbWVudE1hdGNoZXNJZklkQXR0cmlidXRlTWF0Y2goY29uc3QgRWxlbWVudCYp
IHsgcmV0dXJuIHRydWU7IH0KQEAgLTU3LDEzICs3NywxMyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6
CiAgICAgV2luZG93TmFtZUNvbGxlY3Rpb24oRG9jdW1lbnQmIGRvY3VtZW50LCBDb2xsZWN0aW9u
VHlwZSB0eXBlLCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpCi0gICAgICAgIDogSFRNTE5hbWVD
b2xsZWN0aW9uKGRvY3VtZW50LCB0eXBlLCBuYW1lKQorICAgICAgICA6IEhUTUxOYW1lQ29sbGVj
dGlvbjxXaW5kb3dOYW1lQ29sbGVjdGlvbiwgQ29sbGVjdGlvblRyYXZlcnNhbFR5cGU6OkRlc2Nl
bmRhbnRzPihkb2N1bWVudCwgdHlwZSwgbmFtZSkKICAgICB7CiAgICAgICAgIEFTU0VSVCh0eXBl
ID09IFdpbmRvd05hbWVkSXRlbXMpOwogICAgIH0KIH07CiAKLWNsYXNzIERvY3VtZW50TmFtZUNv
bGxlY3Rpb24gZmluYWwgOiBwdWJsaWMgSFRNTE5hbWVDb2xsZWN0aW9uIHsKK2NsYXNzIERvY3Vt
ZW50TmFtZUNvbGxlY3Rpb24gZmluYWwgOiBwdWJsaWMgSFRNTE5hbWVDb2xsZWN0aW9uPERvY3Vt
ZW50TmFtZUNvbGxlY3Rpb24sIENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlOjpEZXNjZW5kYW50cz4g
ewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8RG9jdW1lbnROYW1lQ29sbGVjdGlvbj4gY3JlYXRl
KERvY3VtZW50JiBkb2N1bWVudCwgQ29sbGVjdGlvblR5cGUgdHlwZSwgY29uc3QgQXRvbWljU3Ry
aW5nJiBuYW1lKQogICAgIHsKQEAgLTcyLDEzICs5MiwxNSBAQCBwdWJsaWM6CiAKICAgICBzdGF0
aWMgYm9vbCBlbGVtZW50TWF0Y2hlc0lmSWRBdHRyaWJ1dGVNYXRjaChjb25zdCBFbGVtZW50Jik7
CiAgICAgc3RhdGljIGJvb2wgZWxlbWVudE1hdGNoZXNJZk5hbWVBdHRyaWJ1dGVNYXRjaChjb25z
dCBFbGVtZW50Jik7CisKKyAgICAvLyBGb3IgQ2FjaGVkSFRNTENvbGxlY3Rpb24uCiAgICAgYm9v
bCBlbGVtZW50TWF0Y2hlcyhjb25zdCBFbGVtZW50JiBlbGVtZW50KSBjb25zdCB7IHJldHVybiBl
bGVtZW50TWF0Y2hlcyhlbGVtZW50LCBtX25hbWUuaW1wbCgpKTsgfQogCiAgICAgc3RhdGljIGJv
b2wgZWxlbWVudE1hdGNoZXMoY29uc3QgRWxlbWVudCYsIGNvbnN0IEF0b21pY1N0cmluZ0ltcGwq
KTsKIAogcHJpdmF0ZToKICAgICBEb2N1bWVudE5hbWVDb2xsZWN0aW9uKERvY3VtZW50JiBkb2N1
bWVudCwgQ29sbGVjdGlvblR5cGUgdHlwZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKQotICAg
ICAgICA6IEhUTUxOYW1lQ29sbGVjdGlvbihkb2N1bWVudCwgdHlwZSwgbmFtZSkKKyAgICAgICAg
OiBIVE1MTmFtZUNvbGxlY3Rpb248RG9jdW1lbnROYW1lQ29sbGVjdGlvbiwgQ29sbGVjdGlvblRy
YXZlcnNhbFR5cGU6OkRlc2NlbmRhbnRzPihkb2N1bWVudCwgdHlwZSwgbmFtZSkKICAgICB7CiAg
ICAgICAgIEFTU0VSVCh0eXBlID09IERvY3VtZW50TmFtZWRJdGVtcyk7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uc0NvbGxlY3Rpb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uc0NvbGxlY3Rpb24uY3BwCmluZGV4IDE1MDhiNDE1
YzQyZGFlYjEwODAxY2Q4OWMyOTE0NmQ3NzA5MzEyZTkuLmNmMzk5OTBiYTJkMDQxMzE0ZGNmNDY1
NWIzZmI0ZjE4YTRjM2ZjNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9w
dGlvbnNDb2xsZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25z
Q29sbGVjdGlvbi5jcHAKQEAgLTI3LDcgKzI3LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
SFRNTE9wdGlvbnNDb2xsZWN0aW9uOjpIVE1MT3B0aW9uc0NvbGxlY3Rpb24oSFRNTFNlbGVjdEVs
ZW1lbnQmIHNlbGVjdCkKLSAgICA6IEhUTUxDb2xsZWN0aW9uKHNlbGVjdCwgU2VsZWN0T3B0aW9u
cykKKyAgICA6IEJhc2Uoc2VsZWN0LCBTZWxlY3RPcHRpb25zKQogewogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25zQ29sbGVjdGlvbi5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MT3B0aW9uc0NvbGxlY3Rpb24uaAppbmRleCA2MzY2ODY1ZTU1YzFjM2E2
Nzc5NDE1MzllMzM3MTExZDNhZjM5ZTE2Li43YTg0MjA3MmJjZWI1MzRkMzc4Y2Y4ZmIzM2Q3Nzg3
ZWIyYzRhZDFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25zQ29s
bGVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbnNDb2xsZWN0aW9u
LmgKQEAgLTI0LDcgKzI0LDcgQEAKICNpZm5kZWYgSFRNTE9wdGlvbnNDb2xsZWN0aW9uX2gKICNk
ZWZpbmUgSFRNTE9wdGlvbnNDb2xsZWN0aW9uX2gKIAotI2luY2x1ZGUgIkhUTUxDb2xsZWN0aW9u
LmgiCisjaW5jbHVkZSAiQ2FjaGVkSFRNTENvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJIVE1MU2Vs
ZWN0RWxlbWVudC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zMyw3ICszMyw3IEBAIGNs
YXNzIEhUTUxPcHRpb25FbGVtZW50OwogCiB0eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOwogCi1j
bGFzcyBIVE1MT3B0aW9uc0NvbGxlY3Rpb24gZmluYWwgOiBwdWJsaWMgSFRNTENvbGxlY3Rpb24g
eworY2xhc3MgSFRNTE9wdGlvbnNDb2xsZWN0aW9uIGZpbmFsIDogcHVibGljIENhY2hlZEhUTUxD
b2xsZWN0aW9uPEhUTUxPcHRpb25zQ29sbGVjdGlvbiwgQ29sbGVjdGlvblR5cGVUcmFpdHM8U2Vs
ZWN0T3B0aW9ucz46OnRyYXZlcnNhbFR5cGU+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPEhU
TUxPcHRpb25zQ29sbGVjdGlvbj4gY3JlYXRlKEhUTUxTZWxlY3RFbGVtZW50JiwgQ29sbGVjdGlv
blR5cGUpOwogCkBAIC01MCwxMCArNTAsMTkgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRMZW5n
dGgodW5zaWduZWQsIEV4Y2VwdGlvbkNvZGUmKTsKIAorICAgIC8vIEZvciBDYWNoZWRIVE1MQ29s
bGVjdGlvbi4KKyAgICBib29sIGVsZW1lbnRNYXRjaGVzKEVsZW1lbnQmKSBjb25zdDsKKwogcHJp
dmF0ZToKKyAgICB1c2luZyBCYXNlID0gQ2FjaGVkSFRNTENvbGxlY3Rpb248SFRNTE9wdGlvbnND
b2xsZWN0aW9uLCBDb2xsZWN0aW9uVHlwZVRyYWl0czxTZWxlY3RPcHRpb25zPjo6dHJhdmVyc2Fs
VHlwZT47CiAgICAgZXhwbGljaXQgSFRNTE9wdGlvbnNDb2xsZWN0aW9uKEhUTUxTZWxlY3RFbGVt
ZW50Jik7CiB9OwogCitpbmxpbmUgYm9vbCBIVE1MT3B0aW9uc0NvbGxlY3Rpb246OmVsZW1lbnRN
YXRjaGVzKEVsZW1lbnQmIGVsZW1lbnQpIGNvbnN0Cit7CisgICAgcmV0dXJuIGVsZW1lbnQuaGFz
VGFnTmFtZShIVE1MTmFtZXM6Om9wdGlvblRhZyk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIAogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19IVE1MQ09MTEVDVElPTihIVE1MT3B0aW9uc0Nv
bGxlY3Rpb24sIFNlbGVjdE9wdGlvbnMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxTZWxlY3RFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVs
ZW1lbnQuY3BwCmluZGV4IGQ1MDVmM2YxMGEwYzQ4NTI0NDU4Yjk0NTRkNGVlYmQ0Yzk1N2Q3NzAu
LmM4YjQyNjMyMzM5NzA0NmQ4YjRlMzkxMmJlZjdmNDM5OWU1MDNjODIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVk
ZSAiRm9ybUNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJGb3JtRGF0YUxpc3QuaCIKICNpbmNsdWRl
ICJGcmFtZS5oIgorI2luY2x1ZGUgIkdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbi5oIgogI2lu
Y2x1ZGUgIkhUTUxGb3JtRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1
ZGUgIkhUTUxPcHRHcm91cEVsZW1lbnQuaCIKQEAgLTQ2LDYgKzQ3LDcgQEAKICNpbmNsdWRlICJL
ZXlib2FyZEV2ZW50LmgiCiAjaW5jbHVkZSAiTG9jYWxpemVkU3RyaW5ncy5oIgogI2luY2x1ZGUg
Ik1vdXNlRXZlbnQuaCIKKyNpbmNsdWRlICJOb2RlUmFyZURhdGEuaCIKICNpbmNsdWRlICJQYWdl
LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1Nb3VzZUV2ZW50LmgiCiAjaW5jbHVkZSAiUmVuZGVyTGlz
dEJveC5oIgpAQCAtMzc0LDEyICszNzYsMTIgQEAgYm9vbCBIVE1MU2VsZWN0RWxlbWVudDo6Y2hp
bGRTaG91bGRDcmVhdGVSZW5kZXJlcihjb25zdCBOb2RlJiBjaGlsZCkgY29uc3QKIAogUmVmPEhU
TUxDb2xsZWN0aW9uPiBIVE1MU2VsZWN0RWxlbWVudDo6c2VsZWN0ZWRPcHRpb25zKCkKIHsKLSAg
ICByZXR1cm4gZW5zdXJlQ2FjaGVkSFRNTENvbGxlY3Rpb24oU2VsZWN0ZWRPcHRpb25zKTsKKyAg
ICByZXR1cm4gZW5zdXJlUmFyZURhdGEoKS5lbnN1cmVOb2RlTGlzdHMoKS5hZGRDYWNoZWRDb2xs
ZWN0aW9uPEdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbjxDb2xsZWN0aW9uVHlwZVRyYWl0czxT
ZWxlY3RlZE9wdGlvbnM+Ojp0cmF2ZXJzYWxUeXBlPj4oKnRoaXMsIFNlbGVjdGVkT3B0aW9ucyk7
CiB9CiAKIFJlZjxIVE1MT3B0aW9uc0NvbGxlY3Rpb24+IEhUTUxTZWxlY3RFbGVtZW50OjpvcHRp
b25zKCkKIHsKLSAgICByZXR1cm4gZG93bmNhc3Q8SFRNTE9wdGlvbnNDb2xsZWN0aW9uPihlbnN1
cmVDYWNoZWRIVE1MQ29sbGVjdGlvbihTZWxlY3RPcHRpb25zKS5nZXQoKSk7CisgICAgcmV0dXJu
IGVuc3VyZVJhcmVEYXRhKCkuZW5zdXJlTm9kZUxpc3RzKCkuYWRkQ2FjaGVkQ29sbGVjdGlvbjxI
VE1MT3B0aW9uc0NvbGxlY3Rpb24+KCp0aGlzLCBTZWxlY3RPcHRpb25zKTsKIH0KIAogdm9pZCBI
VE1MU2VsZWN0RWxlbWVudDo6dXBkYXRlTGlzdEl0ZW1TZWxlY3RlZFN0YXRlcygpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmNwcAppbmRleCA3NDU3MzYxYjZlMTI1ZWFlZjk2
NWFmNTQ1MzNiZjMzZjY4NDZlYWE3Li4wMjgwODZhNjE4ZGY2YjM0ZWUzNDRhZjFkMDM3YTQwNzRl
NjY0ODVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVudC5jcHAKQEAgLTMx
LDEyICszMSwxNCBAQAogI2luY2x1ZGUgIkNTU1ZhbHVlUG9vbC5oIgogI2luY2x1ZGUgIkV4Y2Vw
dGlvbkNvZGUuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlUGxhY2Vob2xkZXIuaCIKKyNpbmNs
dWRlICJHZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJIVE1MTmFtZXMu
aCIKICNpbmNsdWRlICJIVE1MUGFyc2VySWRpb21zLmgiCiAjaW5jbHVkZSAiSFRNTFRhYmxlQ2Fw
dGlvbkVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MVGFibGVSb3dFbGVtZW50LmgiCiAjaW5jbHVk
ZSAiSFRNTFRhYmxlUm93c0NvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJIVE1MVGFibGVTZWN0aW9u
RWxlbWVudC5oIgorI2luY2x1ZGUgIk5vZGVSYXJlRGF0YS5oIgogI2luY2x1ZGUgIlJlbmRlclRh
YmxlLmgiCiAjaW5jbHVkZSAiU3R5bGVQcm9wZXJ0aWVzLmgiCiAjaW5jbHVkZSA8d3RmL1JlZi5o
PgpAQCAtNTUxLDEyICs1NTMsMTIgQEAgYm9vbCBIVE1MVGFibGVFbGVtZW50Ojppc1VSTEF0dHJp
YnV0ZShjb25zdCBBdHRyaWJ1dGUmIGF0dHJpYnV0ZSkgY29uc3QKIAogUmVmPEhUTUxDb2xsZWN0
aW9uPiBIVE1MVGFibGVFbGVtZW50Ojpyb3dzKCkKIHsKLSAgICByZXR1cm4gZW5zdXJlQ2FjaGVk
SFRNTENvbGxlY3Rpb24oVGFibGVSb3dzKTsKKyAgICByZXR1cm4gZW5zdXJlUmFyZURhdGEoKS5l
bnN1cmVOb2RlTGlzdHMoKS5hZGRDYWNoZWRDb2xsZWN0aW9uPEhUTUxUYWJsZVJvd3NDb2xsZWN0
aW9uPigqdGhpcywgVGFibGVSb3dzKTsKIH0KIAogUmVmPEhUTUxDb2xsZWN0aW9uPiBIVE1MVGFi
bGVFbGVtZW50Ojp0Qm9kaWVzKCkKIHsKLSAgICByZXR1cm4gZW5zdXJlQ2FjaGVkSFRNTENvbGxl
Y3Rpb24oVGFibGVUQm9kaWVzKTsKKyAgICByZXR1cm4gZW5zdXJlUmFyZURhdGEoKS5lbnN1cmVO
b2RlTGlzdHMoKS5hZGRDYWNoZWRDb2xsZWN0aW9uPEdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlv
bjxDb2xsZWN0aW9uVHlwZVRyYWl0czxUYWJsZVRCb2RpZXM+Ojp0cmF2ZXJzYWxUeXBlPj4oKnRo
aXMsIFRhYmxlVEJvZGllcyk7CiB9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgSFRNTFRhYmxlRWxl
bWVudDo6cnVsZXMoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VGFibGVSb3dFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlUm93RWxl
bWVudC5jcHAKaW5kZXggZDQzNTFlYWZjYTVlNmY3NTUyNmI5N2EzMDRiYTY3YWZhNjgwN2VhOC4u
Yzg3MjU5ZjVlY2I5NmQwYWE2MDQ4ZDRkMTRhZThiNjBmOTNiNjhiNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVSb3dFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxUYWJsZVJvd0VsZW1lbnQuY3BwCkBAIC0yNiwxMiArMjYsMTMgQEAKICNp
bmNsdWRlICJIVE1MVGFibGVSb3dFbGVtZW50LmgiCiAKICNpbmNsdWRlICJFeGNlcHRpb25Db2Rl
LmgiCi0jaW5jbHVkZSAiSFRNTENvbGxlY3Rpb24uaCIKKyNpbmNsdWRlICJHZW5lcmljQ2FjaGVk
SFRNTENvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJIVE1M
VGFibGVDZWxsRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxUYWJsZUVsZW1lbnQuaCIKICNpbmNs
dWRlICJIVE1MVGFibGVTZWN0aW9uRWxlbWVudC5oIgogI2luY2x1ZGUgIk5vZGVMaXN0LmgiCisj
aW5jbHVkZSAiTm9kZVJhcmVEYXRhLmgiCiAjaW5jbHVkZSAiVGV4dC5oIgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CkBAIC0xNTYsNyArMTU3LDcgQEAgdm9pZCBIVE1MVGFibGVSb3dFbGVtZW50Ojpk
ZWxldGVDZWxsKGludCBpbmRleCwgRXhjZXB0aW9uQ29kZSYgZWMpCiAKIFJlZjxIVE1MQ29sbGVj
dGlvbj4gSFRNTFRhYmxlUm93RWxlbWVudDo6Y2VsbHMoKQogewotICAgIHJldHVybiBlbnN1cmVD
YWNoZWRIVE1MQ29sbGVjdGlvbihUUkNlbGxzKTsKKyAgICByZXR1cm4gZW5zdXJlUmFyZURhdGEo
KS5lbnN1cmVOb2RlTGlzdHMoKS5hZGRDYWNoZWRDb2xsZWN0aW9uPEdlbmVyaWNDYWNoZWRIVE1M
Q29sbGVjdGlvbjxDb2xsZWN0aW9uVHlwZVRyYWl0czxUUkNlbGxzPjo6dHJhdmVyc2FsVHlwZT4+
KCp0aGlzLCBUUkNlbGxzKTsKIH0KIAogdm9pZCBIVE1MVGFibGVSb3dFbGVtZW50OjpzZXRDZWxs
cyhIVE1MQ29sbGVjdGlvbiosIEV4Y2VwdGlvbkNvZGUmIGVjKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MVGFibGVSb3dzQ29sbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxUYWJsZVJvd3NDb2xsZWN0aW9uLmNwcAppbmRleCBiZmE1ZjZkNzhkMGZiY2E3
M2I4M2ViZTNhMmUwMWMyYTQxMzYwYTI1Li4yNDg5ZWE2MTNkZTcyMDQ2ZTI4Y2M2Y2U4YmJjNzBk
MTYwNGVlZGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVJvd3ND
b2xsZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVJvd3NDb2xs
ZWN0aW9uLmNwcApAQCAtMTQ5LDcgKzE0OSw3IEBAIEhUTUxUYWJsZVJvd0VsZW1lbnQqIEhUTUxU
YWJsZVJvd3NDb2xsZWN0aW9uOjpsYXN0Um93KEhUTUxUYWJsZUVsZW1lbnQmIHRhYmxlKQogfQog
CiBIVE1MVGFibGVSb3dzQ29sbGVjdGlvbjo6SFRNTFRhYmxlUm93c0NvbGxlY3Rpb24oSFRNTFRh
YmxlRWxlbWVudCYgdGFibGUpCi0gICAgOiBIVE1MQ29sbGVjdGlvbih0YWJsZSwgVGFibGVSb3dz
LCBDdXN0b21Gb3J3YXJkT25seVRyYXZlcnNhbCkKKyAgICA6IEJhc2UodGFibGUsIFRhYmxlUm93
cykKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVSb3dz
Q29sbGVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVSb3dzQ29sbGVjdGlv
bi5oCmluZGV4IDllYjVmYTZhN2EyOTgxNGYyM2UxNGUzN2FhOTk1MzZkZGVkYWY5NDQuLmM4ZjVj
MWY1Zjc1NmRiMThkYWQ1ZDc2NzMzMThlZTQ2ZjJjMTllNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFRhYmxlUm93c0NvbGxlY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxUYWJsZVJvd3NDb2xsZWN0aW9uLmgKQEAgLTI5LDE0ICsyOSwxNCBAQAogI2lm
bmRlZiBIVE1MVGFibGVSb3dzQ29sbGVjdGlvbl9oCiAjZGVmaW5lIEhUTUxUYWJsZVJvd3NDb2xs
ZWN0aW9uX2gKIAotI2luY2x1ZGUgIkhUTUxDb2xsZWN0aW9uLmgiCisjaW5jbHVkZSAiQ2FjaGVk
SFRNTENvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJIVE1MVGFibGVFbGVtZW50LmgiCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSFRNTFRhYmxlUm93RWxlbWVudDsKIAotY2xhc3MgSFRN
TFRhYmxlUm93c0NvbGxlY3Rpb24gZmluYWwgOiBwdWJsaWMgSFRNTENvbGxlY3Rpb24geworY2xh
c3MgSFRNTFRhYmxlUm93c0NvbGxlY3Rpb24gZmluYWwgOiBwdWJsaWMgQ2FjaGVkSFRNTENvbGxl
Y3Rpb248SFRNTFRhYmxlUm93c0NvbGxlY3Rpb24sIENvbGxlY3Rpb25UeXBlVHJhaXRzPFRhYmxl
Um93cz46OnRyYXZlcnNhbFR5cGU+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPEhUTUxUYWJs
ZVJvd3NDb2xsZWN0aW9uPiBjcmVhdGUoSFRNTFRhYmxlRWxlbWVudCYsIENvbGxlY3Rpb25UeXBl
KTsKIApAQCAtNDYsMTAgKzQ2LDEyIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSFRNTFRhYmxlUm93
RWxlbWVudCogcm93QWZ0ZXIoSFRNTFRhYmxlRWxlbWVudCYsIEhUTUxUYWJsZVJvd0VsZW1lbnQq
KTsKICAgICBzdGF0aWMgSFRNTFRhYmxlUm93RWxlbWVudCogbGFzdFJvdyhIVE1MVGFibGVFbGVt
ZW50Jik7CiAKKyAgICAvLyBGb3IgQ2FjaGVkSFRNTENvbGxlY3Rpb24uCisgICAgRWxlbWVudCog
Y3VzdG9tRWxlbWVudEFmdGVyKEVsZW1lbnQqKSBjb25zdDsKKwogcHJpdmF0ZToKKyAgICB1c2lu
ZyBCYXNlID0gQ2FjaGVkSFRNTENvbGxlY3Rpb248SFRNTFRhYmxlUm93c0NvbGxlY3Rpb24sIENv
bGxlY3Rpb25UeXBlVHJhaXRzPFRhYmxlUm93cz46OnRyYXZlcnNhbFR5cGU+OwogICAgIGV4cGxp
Y2l0IEhUTUxUYWJsZVJvd3NDb2xsZWN0aW9uKEhUTUxUYWJsZUVsZW1lbnQmKTsKLQotICAgIHZp
cnR1YWwgRWxlbWVudCogY3VzdG9tRWxlbWVudEFmdGVyKEVsZW1lbnQqKSBjb25zdCBvdmVycmlk
ZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVGFibGVTZWN0aW9uRWxlbWVudC5jcHAKaW5kZXggZjc1NzE3ZTU5ODI5MmI3NGVkNDIy
NzU4YzQ4MDZkYzVjMDA3YmJkZS4uOWU0NTMxNmY4ZjNmNGZjNmRhOGUzZGNkYjFiM2U0ZTJkZDky
N2Q4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVTZWN0aW9uRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVTZWN0aW9uRWxlbWVu
dC5jcHAKQEAgLTI2LDExICsyNiwxMyBAQAogI2luY2x1ZGUgIkhUTUxUYWJsZVNlY3Rpb25FbGVt
ZW50LmgiCiAKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5jbHVkZSAiR2VuZXJpY0Nh
Y2hlZEhUTUxDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiSFRNTENvbGxlY3Rpb24uaCIKICNpbmNs
dWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJIVE1MVGFibGVSb3dFbGVtZW50LmgiCiAjaW5j
bHVkZSAiSFRNTFRhYmxlRWxlbWVudC5oIgogI2luY2x1ZGUgIk5vZGVMaXN0LmgiCisjaW5jbHVk
ZSAiTm9kZVJhcmVEYXRhLmgiCiAjaW5jbHVkZSAiVGV4dC5oIgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CkBAIC0xNDcsNyArMTQ5LDcgQEAgdm9pZCBIVE1MVGFibGVTZWN0aW9uRWxlbWVudDo6c2V0
VkFsaWduKGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCiAKIFJlZjxIVE1MQ29sbGVjdGlvbj4g
SFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQ6OnJvd3MoKQogewotICAgIHJldHVybiBlbnN1cmVDYWNo
ZWRIVE1MQ29sbGVjdGlvbihUU2VjdGlvblJvd3MpOworICAgIHJldHVybiBlbnN1cmVSYXJlRGF0
YSgpLmVuc3VyZU5vZGVMaXN0cygpLmFkZENhY2hlZENvbGxlY3Rpb248R2VuZXJpY0NhY2hlZEhU
TUxDb2xsZWN0aW9uPENvbGxlY3Rpb25UeXBlVHJhaXRzPFRTZWN0aW9uUm93cz46OnRyYXZlcnNh
bFR5cGU+PigqdGhpcywgVFNlY3Rpb25Sb3dzKTsKIH0KIAogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>259005</attachid>
            <date>2015-08-14 09:43:29 -0700</date>
            <delta_ts>2015-08-14 12:20:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-147979-20150814094310.patch</filename>
            <type>text/plain</type>
            <size>107434</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg4MzY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzE2NDY1NDRmOTcyZmEx
NzYyNDIxN2VkMTdiZDI3ZWQzZDFjNjZmOC4uYzUwMjZlZjM3OTUyNjRmNWE0ZDk4NDk0YjQxMzM4
ZjM3ZDM1ZWRhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4MCBAQAorMjAxNS0wOC0xMyAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFJlZmFjdG9yIEhUTUxDb2xs
ZWN0aW9uIHRvIGJlIGFzIGZhc3QgYXMgQ2FjaGVkTGl2ZU5vZGVMaXN0CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDc5NzkKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWZhY3RvciBIVE1MQ29sbGVjdGlv
biB0byBiZSBhcyBmYXN0IGFzIENhY2hlZExpdmVOb2RlTGlzdC4gVGhpcyBpcyBpbgorICAgICAg
ICBwcmVwYXJhdGlvbiBvZiBoYXZpbmcgZ2V0RWxlbWVudHNCeVRhZ05hbWUqKCkgLyBnZXRFbGVt
ZW50c0J5Q2xhc3NOYW1lKCkKKyAgICAgICAgcmV0dXJuIGFuIEhUTUxDb2xsZWN0aW9uIGluc3Rl
YWQgb2YgYSBOb2RlTGlzdCwgYXMgcGVyIHRoZQorICAgICAgICBzcGVjaWZpY2F0aW9uLiBDaHJv
bWUgYW5kIEZpcmVmb3ggYWxyZWFkeSBtYXRjaCB0aGUgc3BlY2lmaWNhdGlvbiBpbgorICAgICAg
ICB0aGlzIGNhc2UuCisKKyAgICAgICAgVHJhdmVyc2luZyBhbiBIVE1MQ29sbGVjdGlvbiB3YXMg
c2xvdyBiZWNhdXNlIG9mIGFsbCB0aGUgZXh0cmEKKyAgICAgICAgYnJhbmNoaW5nIGl0IGhhZCBj
b21wYXJlZCB0byBDYWNoZWRMaXZlTm9kZUxpc3QuIFRvIGFkZHJlc3MgdGhlIGlzc3VlLAorICAg
ICAgICB0aGlzIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgdGVtcGxhdGVkIENhY2hlZEhUTUxDb2xs
ZWN0aW9uIHN1YmNsYXNzLAorICAgICAgICB3aGljaCBiZWhhdmVzIGluIGEgc2ltaWxhciB3YXkg
YXMgQ2FjaGVkTGl2ZU5vZGVMaXN0LiBUaGUgMiB0ZW1wbGF0ZQorICAgICAgICBwYXJhbWV0ZXJz
IGFyZToKKyAgICAgICAgMS4gVGhlIHR5cGUgb2YgdGhlIHN1YmNsYXNzIG9mIENhY2hlZEhUTUxD
b2xsZWN0aW9uLCBzbyB3ZSBjYW4gY2FsbAorICAgICAgICAgICBlbGVtZW50TWF0Y2hlcygpIGRp
cmVjdGx5IG9uIHRoZSBzdWJjbGFzcywgd2l0aG91dCBuZWVkZWQgYW55CisgICAgICAgICAgIHZp
cnR1YWwgZnVuY3Rpb24gY2FsbCBvciBzd2l0Y2ggc3RhdGVtZW50LiBUaGlzIGlzIHRoZSBzYW1l
IGFwcHJvYWNoCisgICAgICAgICAgIGFzIGluIENhY2hlZExpdmVOb2RlTGlzdC4KKyAgICAgICAg
Mi4gVGhlIHR5cGUgb2YgdHJlZSB0cmF2ZXJzYWwgdXNlZCAoRGVzY2VuZGFudHMsIENoaWxkcmVu
T25seSwKKyAgICAgICAgICAgQ3VzdG9tRm9yd2FyZE9ubHkpLiBVbmxpa2UgTGl2ZU5vZGVMaXN0
LCBIVE1MQ29sbGVjdGlvbiBuZWVkcyB0bworICAgICAgICAgICBzdXBwb3J0IHRoZXNlIDMgdHlw
ZXMgb2YgdHJlZSB0cmF2ZXJzYWwuIFRoZXNlIHdlcmUgY2F1c2luZyBleHRyYQorICAgICAgICAg
ICBicmFuY2hpbmcgZm9yIGV2ZXJ5IGl0ZW0oKSBjYWxsLiBXZSBhcmUgbm93IGFibGUgdG8gY2hv
b3NlIHRoZSByaWdodAorICAgICAgICAgICB0eXBlIG9mIHRyYXZlcnNhbCBmb3IgdGhlIENhY2hl
ZEhUTUxDb2xsZWN0aW9uIGF0IGNvbXBpbGUgdGltZS4KKworICAgICAgICAqIFdlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgQWRkIG5ldyBmaWxlcyB0byB0aGUgUHJv
amVjdC4KKworICAgICAgICAqIGRvbS9Db250YWluZXJOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNvbnRhaW5lck5vZGU6OmNoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRhaW5l
ck5vZGU6OmNhY2hlZEhUTUxDb2xsZWN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBkb20vQ29u
dGFpbmVyTm9kZS5oOgorICAgICAgICBEcm9wIENvbnRhaW5lck5vZGU6OmVuc3VyZUNhY2hlZEhU
TUxDb2xsZWN0aW9uKCkgYW5kIHVzZQorICAgICAgICBOb2RlTGlzdHNOb2RlRGF0YTo6YWRkQ2Fj
aGVkQ29sbGVjdGlvbigpIGRpcmVjdGx5IGF0IGNhbGwgc2l0ZXMKKyAgICAgICAgaW5zdGVhZC4g
V2UgbmVlZCBhY2Nlc3MgdG8gdGhlIENvbGxlY3Rpb25UeXBlIGF0IGJ1aWxkLXRpbWUgc28KKyAg
ICAgICAgd2UgY2FuIHJlc29sdmUgdGhlIENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlIHBhcmFtZXRl
ciBmb3IgdGhlCisgICAgICAgIEdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbiB1c2luZyBDb2xs
ZWN0aW9uVHlwZVRyYWl0cy4KKworICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAg
ICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgIFVwZGF0ZSBlbnN1cmVDYWNoZWRDb2xsZWN0aW9u
KCkgc28gdGhlIENvbGxlY3Rpb25UeXBlIGlzIG5vdyBhIHRlbXBsYXRlCisgICAgICAgIHBhcmFt
ZXRlciBpbnN0ZWFkIG9mIGEgbWV0aG9kIGFyZ3VtZW50LiBXZSBuZWVkIHRvIGtub3cgdGhlCisg
ICAgICAgIENvbGxlY3Rpb25UeXBlIGF0IGJ1aWxkIHRpbWUgdG8gY29uc3RydWN0IHRoZSBHZW5l
cmljQ2FjaGVkSFRNTENvbGxlY3Rpb24uCisKKyAgICAgICAgKiBkb20vRWxlbWVudENoaWxkSXRl
cmF0b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnRU
eXBlPjo6b3BlcmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudENoaWxkQ29uc3RJdGVy
YXRvcjxFbGVtZW50VHlwZT46Om9wZXJhdG9yKToKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIGRl
Y3JlbWVudGluZyBhbiBFbGVtZW50Q2hpbGRJdGVyYXRvciwgZm9yIGNvbnNpc3RlbmN5CisgICAg
ICAgIHdpdGggRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvci4gV2UgbmVlZCB0aGlzIHRvIHN1cHBv
cnQgYmFja3dhcmQKKyAgICAgICAgdHJhdmVyc2FsIGluIENhY2hlZEhUTUxDb2xsZWN0aW9ucyB0
aGF0IHVzZSB0aGUgJ0NoaWxkcmVuT25seScgdHlwZQorICAgICAgICBvZiB0cmF2ZXJzYWwuCisK
KyAgICAgICAgKiBkb20vTGl2ZU5vZGVMaXN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRM
aXZlTm9kZUxpc3Q8Tm9kZUxpc3RUeXBlPjo6Y29sbGVjdGlvbkJlZ2luKToKKyAgICAgICAgKFdl
YkNvcmU6OkNhY2hlZExpdmVOb2RlTGlzdDxOb2RlTGlzdFR5cGU+Ojpjb2xsZWN0aW9uTGFzdCk6
CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRMaXZlTm9kZUxpc3Q8Tm9kZUxpc3RUeXBlPjo6Y29s
bGVjdGlvblRyYXZlcnNlRm9yd2FyZCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRMaXZlTm9k
ZUxpc3Q8Tm9kZUxpc3RUeXBlPjo6Y29sbGVjdGlvblRyYXZlcnNlQmFja3dhcmQpOgorICAgICAg
ICBNb3ZlIHRyYXZlcnNhbCBpbXBsZW1lbnRhdGlvbiB0byBDb2xsZWN0aW9uVHJhdmVyc2FsLmgs
IHNvIGl0IGNhbiBiZQorICAgICAgICBzaGFyZWQgd2l0aCBhY2hlZEhUTUxDb2xsZWN0aW9uLmgu
CisKKyAgICAgICAgKiBodG1sL0NhY2hlZEhUTUxDb2xsZWN0aW9uLmg6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6dHJhdmVyc2FsVHlwZT46OkNhY2hlZEhUTUxDb2xsZWN0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OnRyYXZlcnNhbFR5cGU+Ojp+Q2FjaGVkSFRNTENvbGxlY3Rpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6dHJhdmVyc2FsVHlwZT46OkNhY2hlZEhUTUxDb2xsZWN0aW9uOjptZW1v
cnlDb3N0KToKKyAgICAgICAgKFdlYkNvcmU6OnRyYXZlcnNhbFR5cGU+Ojpjb2xsZWN0aW9uQ2Fu
VHJhdmVyc2VCYWNrd2FyZCk6CisgICAgICAgIChXZWJDb3JlOjp0cmF2ZXJzYWxUeXBlPjo6Y29s
bGVjdGlvblRyYXZlcnNlRm9yd2FyZCk6CisgICAgICAgIChXZWJDb3JlOjp0cmF2ZXJzYWxUeXBl
Pjo6Y29sbGVjdGlvblRyYXZlcnNlQmFja3dhcmQpOgorICAgICAgICAoV2ViQ29yZTo6dHJhdmVy
c2FsVHlwZT46OndpbGxWYWxpZGF0ZUluZGV4Q2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6dHJh
dmVyc2FsVHlwZT46Omxlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjp0cmF2ZXJzYWxUeXBlPjo6
aXRlbSk6CisgICAgICAgIChXZWJDb3JlOjp0cmF2ZXJzYWxUeXBlPjo6aW52YWxpZGF0ZUNhY2hl
KToKKyAgICAgICAgKFdlYkNvcmU6OnRyYXZlcnNhbFR5cGU+OjplbGVtZW50TWF0Y2hlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpuYW1lU2hvdWxkQmVWaXNpYmxlSW5Eb2N1bWVudEFsbCk6CisgICAg
ICAgIChXZWJDb3JlOjp0cmF2ZXJzYWxUeXBlPjo6bmFtZWRJdGVtKToKKworICAgICAgICAqIGh0
bWwvQ29sbGVjdGlvblRyYXZlcnNhbC5oOiBBZGRlZC4KKyAgICAgICAgQWRkIG5ldyB0ZW1wbGF0
ZSBjbGFzcyB0aGF0IHByb3ZpZGUgdGhlIGNvbGxlY3Rpb24gdHJhdmVyc2FsIGNvZGUKKyAgICAg
ICAgbmVlZGVkIGJ5IENvbGxlY3Rpb25JbmRleENhY2hlLiBJdCBoYXMgdGVtcGxhdGUgc3BlY2lh
bGl6YXRpb25zIGZvcgorICAgICAgICBhbGwgMyB0eXBlcyBvZiB0cmF2ZXJzYWw6IERlc2NlbmRh
bnRzLCBDaGlsZHJlbk9ubHksIGFuZAorICAgICAgICBDdXN0b21Gb3J3YXJkT25seS4KKworICAg
ICAgICAqIGh0bWwvQ29sbGVjdGlvblR5cGUuaDoKKyAgICAgICAgQWRkIENvbGxlY3Rpb25UeXBl
VHJhaXRzIHRyYWl0cyBzbyB3ZSBjYW4gcmVzb2x2ZSB0aGUKKyAgICAgICAgQ29sbGVjdGlvblRy
YXZlcnNhbFR5cGUgdXNlZCBieSBhIHNwZWNpZmljIENvbGxlY3Rpb25UeXBlIGF0CisgICAgICAg
IGNvbXBpbGUtdGltZS4gVGhpcyBpcyBuZWVkZWQgZm9yIHRoZSBzZWNvbmQgdGVtcGxhdGUgcGFy
YW1ldGVyIG9mCisgICAgICAgIENhY2hlZEhUTUxDb2xsZWN0aW9uLgorCisgICAgICAgICogaHRt
bC9HZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbjx0cmF2ZXJzYWxUeXBlPjo6ZWxlbWVudE1h
dGNoZXMpOgorICAgICAgICAqIGh0bWwvR2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uLmg6IEFk
ZGVkLgorICAgICAgICBBZGQgQ2FjaGVkSFRNTENvbGxlY3Rpb24gc3ViY2xhc3MgaXMgdGhlIGdl
bmVyaWMgb25lIHVzZWQgZm9yIGFsbAorICAgICAgICBDb2xsZWN0aW9uVHlwZXMgdGhhdCBkbyBu
b3QgaGF2ZSB0aGVpciBvd24gc3ViY2xhc3MgKGUuZy4gTm9kZUNoaWxkcmVuKS4KKyAgICAgICAg
VGhpcyBoYXMgYW4gZWxlbWVudE1hdGNoZXMoKSBtZXRob2Qgd2l0aCBhIHN3aXRjaCgpIHN0YXRl
bWVudCBoYW5kbGluZworICAgICAgICBhbGwgdGhlc2UgQ29sbGVjdGlvblR5cGVzLiBUaG9zZSBh
cmUgbm90IG5vcm1hbGx5IG5vdCBwZXJmb3JtYW5jZQorICAgICAgICBzZW5zaXRpdmUuCisKKyAg
ICAgICAgKiBodG1sL0hUTUxBbGxDb2xsZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxBbGxDb2xsZWN0aW9uOjpIVE1MQWxsQ29sbGVjdGlvbik6CisgICAgICAgICogaHRtbC9IVE1M
QWxsQ29sbGVjdGlvbi5oOgorICAgICAgICBTdWJjbGFzcyBDYWNoZWRIVE1MQ29sbGVjdGlvbiBp
bnN0ZWFkIG9mIEhUTUxDb2xsZWN0aW9uLiBBbHNvIHByb3ZpZGUKKyAgICAgICAgYW4gZWxlbWVu
dE1hdGNoZXMoKSBtZXRob2QgdGhhdCBzaW1wbHkgcmV0dXJucyB0cnVlIGFzIHdlIHdhbnQgdG8K
KyAgICAgICAgbWF0Y2ggYWxsIGVsZW1lbnRzLgorCisgICAgICAgICogaHRtbC9IVE1MQ29sbGVj
dGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ29sbGVjdGlvbjo6SFRNTENvbGxlY3Rp
b24pOgorICAgICAgICBNb3ZlIENvbGxlY3Rpb25JbmRleENhY2hlIG1lbWJlciB0byB0aGUgc3Vi
Y2xhc3MgYW5kIGRyb3AgdGhlIDIgb3RoZXIKKyAgICAgICAgbWVtYmVycyBhcyB0aGV5IGFyZSBy
ZXBsYWNlZCB3aXRoIHRoZSBDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZSB0ZW1wbGF0ZQorICAgICAg
ICBwYXJhbWV0ZXIgb2YgQ2FjaGVkSFRNTENvbGxlY3Rpb24uCisKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxDb2xsZWN0aW9uOjp+SFRNTENvbGxlY3Rpb24pOgorICAgICAgICBNb3ZlIERvY3VtZW50
Ojp1bnJlZ2lzdGVyQ29sbGVjdGlvbigpIGNhbGwgdG8gfkNhY2hlZEhUTUxDb2xsZWN0aW9uKCkK
KyAgICAgICAgYXMgd2UgbmVlZGVkIHRvIGNoZWNrIGlmIHRoZSBDb2xsZWN0aW9uSW5kZXhDYWNo
ZSB3YXMgdmFsaWQgZmlyc3QuCisKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb2xsZWN0aW9uOjp1
cGRhdGVOYW1lZEVsZW1lbnRDYWNoZSk6CisgICAgICAgIE1vdmUgcGFydCBvZiB0aGUgaW1wbGVt
ZW50YXRpb24gdG8gdGhlIENhY2hlZEhUTUxDb2xsZWN0aW9uIHN1YmNsYXNzCisgICAgICAgIGFz
IGl0IG5lZWRzIHRvIGtub3cgYWJvdXQgdGhlIHR5cGUgb2YgdHJhdmVyc2FsIGFuZCBpdCBuZWVk
cyB0byBiZQorICAgICAgICBhYmxlIHRvIGNhbGwgZWxlbWVudE1hdGNoZXMoKS4KKworICAgICAg
ICAqIGh0bWwvSFRNTENvbGxlY3Rpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb2xsZWN0
aW9uOjpyb290Tm9kZSk6CisgICAgICAgIElubGluZSBmb3IgcGVyZm9ybWFuY2UgcmVhc29ucyBh
bmQgY29uc2lzdGVuY3kgd2l0aCBDYWNoZWRMaXZlTm9kZUxpc3QuCisKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxDb2xsZWN0aW9uOjptZW1vcnlDb3N0KToKKyAgICAgICAgTWFrZSB2aXJ0dWFsIGFu
ZCBtb3ZlIHBhcnQgb2YgdGhlIGltcGxlbWVudGF0aW9uIHRvIHRoZQorICAgICAgICBDYWNoZWRI
VE1MQ29sbGVjdGlvbiBzdWJjbGFzcyB0byBjb21wdXRlIHRoZSBjb3N0IG9mIHRoZQorICAgICAg
ICBDb2xsZWN0aW9uSW5kZXhDYWNoZS4KKworICAgICAgICAoV2ViQ29yZTo6SFRNTENvbGxlY3Rp
b246OmludmFsaWRhdGVDYWNoZSk6CisgICAgICAgIE1vdmUgcGFydCBvZiB0aGUgaW1wbGVtZW50
YXRpb24gdG8gdGhlIHN1YmNsYXNzIHRvIGludmFsaWRhdGUgdGhlCisgICAgICAgIENvbGxlY3Rp
b25JbmRleENhY2hlLgorCisgICAgICAgICogaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxGaWVsZFNldEVsZW1lbnQ6OmVsZW1lbnRzKToKKworICAg
ICAgICAqIGh0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uY3BwOgorICAgICAgICAqIGh0
bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uaDoKKyAgICAgICAgU3ViY2xhc3MgQ2FjaGVk
SFRNTENvbGxlY3Rpb24gaW5zdGVhZCBvZiBIVE1MQ29sbGVjdGlvbi4KKyAgICAgICAgY3VzdG9t
RWxlbWVudEFmdGVyKCkgbm8gbG9uZ2VyIG5lZWRzIHRvIGJlIHZpcnR1YWwgYXMgaXQKKyAgICAg
ICAgaXMgY2FsbGVkIGRpcmVjdGx5IGJ5IENhY2hlZEhUTUxDb2xsZWN0aW9uIG9uIHRoZSBzdWJj
bGFzcy4KKworICAgICAgICAqIGh0bWwvSFRNTEZvcm1FbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxGb3JtRWxlbWVudDo6ZWxlbWVudHMpOgorICAgICAgICAqIGh0bWwvSFRNTE1h
cEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1hcEVsZW1lbnQ6OmFyZWFzKToK
KyAgICAgICAgQ2FsbCBOb2RlTGlzdHNOb2RlRGF0YTo6YWRkQ2FjaGVkQ29sbGVjdGlvbigpIGRp
cmVjdGx5LgorCisgICAgICAgICogaHRtbC9IVE1MTmFtZUNvbGxlY3Rpb24uY3BwOgorICAgICAg
ICAqIGh0bWwvSFRNTE5hbWVDb2xsZWN0aW9uLmg6CisgICAgICAgIFN1YmNsYXNzIENhY2hlZEhU
TUxDb2xsZWN0aW9uIGluc3RlYWQgb2YgSFRNTENvbGxlY3Rpb24uCisKKyAgICAgICAgKiBodG1s
L0hUTUxPcHRpb25zQ29sbGVjdGlvbi5jcHA6CisgICAgICAgICogaHRtbC9IVE1MT3B0aW9uc0Nv
bGxlY3Rpb24uaDoKKyAgICAgICAgU3ViY2xhc3MgQ2FjaGVkSFRNTENvbGxlY3Rpb24gaW5zdGVh
ZCBvZiBIVE1MQ29sbGVjdGlvbi4KKworICAgICAgICAqIGh0bWwvSFRNTFNlbGVjdEVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OnNlbGVjdGVkT3B0aW9u
cyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6b3B0aW9ucyk6CisgICAg
ICAgICogaHRtbC9IVE1MVGFibGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxU
YWJsZUVsZW1lbnQ6OnJvd3MpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRhYmxlRWxlbWVudDo6
dEJvZGllcyk6CisgICAgICAgICogaHRtbC9IVE1MVGFibGVSb3dFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxUYWJsZVJvd0VsZW1lbnQ6OmNlbGxzKToKKyAgICAgICAgQ2FsbCBO
b2RlTGlzdHNOb2RlRGF0YTo6YWRkQ2FjaGVkQ29sbGVjdGlvbigpIGRpcmVjdGx5LgorCisgICAg
ICAgICogaHRtbC9IVE1MVGFibGVSb3dzQ29sbGVjdGlvbi5jcHA6CisgICAgICAgICogaHRtbC9I
VE1MVGFibGVSb3dzQ29sbGVjdGlvbi5oOgorICAgICAgICBTdWJjbGFzcyBDYWNoZWRIVE1MQ29s
bGVjdGlvbiBpbnN0ZWFkIG9mIEhUTUxDb2xsZWN0aW9uLgorICAgICAgICBjdXN0b21FbGVtZW50
QWZ0ZXIoKSBubyBsb25nZXIgbmVlZHMgdG8gYmUgdmlydHVhbCBhcyBpdAorICAgICAgICBpcyBj
YWxsZWQgZGlyZWN0bHkgYnkgQ2FjaGVkSFRNTENvbGxlY3Rpb24gb24gdGhlIHN1YmNsYXNzLgor
CisgICAgICAgICogaHRtbC9IVE1MVGFibGVTZWN0aW9uRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MVGFibGVTZWN0aW9uRWxlbWVudDo6cm93cyk6CisgICAgICAgIENhbGwgTm9k
ZUxpc3RzTm9kZURhdGE6OmFkZENhY2hlZENvbGxlY3Rpb24oKSBkaXJlY3RseS4KKwogMjAxNS0w
OC0xMiAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgQ2FjaGVk
UmVzb3VyY2UgbGVhayBpbiB2YWxpZGF0aW9uIGNvZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXgg
ZTY4MzIxZWEyODQ4OTViYjFjYTc5OWYyZTUwY2E3NTc1Y2NkM2Y3Zi4uMDU4ZGY2ZWNhNzkxOGEy
MDQ2NTIzYTA5N2FiZGM1MWQ3Nzk0YTMwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTE2MDgs
NiArMTYwOCw3IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBodG1sL0Zvcm1Bc3NvY2lhdGVk
RWxlbWVudC5jcHAKICAgICBodG1sL0Zvcm1Db250cm9sbGVyLmNwcAogICAgIGh0bWwvRm9ybURh
dGFMaXN0LmNwcAorICAgIGh0bWwvR2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uLmNwcAogICAg
IGh0bWwvSFRNTEFsbENvbGxlY3Rpb24uY3BwCiAgICAgaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5j
cHAKICAgICBodG1sL0hUTUxBcHBsZXRFbGVtZW50LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKaW5kZXggOTJiOWUxYTBjZmY5ODQ1N2YzN2Vi
ZTIxMmIyYzg0MTBmY2I2MTE3ZS4uZDE3ZTM2MmIzNTc0YWJkMTI5YTU1MzdlOTlmZWRhZmU5ZDMz
MmY4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUu
dmN4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hw
cm9qCkBAIC0xNjEwNyw2ICsxNjEwNyw3IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxo
dG1sXEZvcm1Db250cm9sbGVyLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGh0
bWxcRm9ybURhdGFMaXN0LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGh0bWxc
RlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
aHRtbFxHZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb24uY3BwIiAvPgogICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5caHRtbFxIaWRkZW5JbnB1dFR5cGUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5caHRtbFxIVE1MQWxsQ29sbGVjdGlvbi5jcHAiIC8+CiAgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxodG1sXEhUTUxBbmNob3JFbGVtZW50LmNwcCI+CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNDE3NmY3ZjM2
ZTlmN2U3ZjY1NmVmN2Q1ZGUyMzk0MjA0ZTRhNDk2OC4uM2RhYzdlYmZjNDAxMjAzMzU2NTY0MjZj
ZGMwYTI4OTRjMWU5Mjc5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTY4NSw2ICsxNjg1LDcgQEAKIAkJNDZDODNFRkUxQTlC
QkUyOTAwQTc5QTQxIC8qIEdlb05vdGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0NkM4M0VGQzFBOUJCRTI5MDBBNzlBNDEgLyogR2VvTm90aWZp
ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0
NkRCN0Q1NzFCMjBGRTQ2MDA1NjUxQjIgLyogVk5vZGVUcmFja2VyQ29jb2EuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZEQjdENTYxQjIwRkUzQzAw
NTY1MUIyIC8qIFZOb2RlVHJhY2tlckNvY29hLmNwcCAqLzsgfTsKIAkJNDZEQkI2NTAxQUI4Qzk2
RjAwRDlBODEzIC8qIFBvd2VyT2JzZXJ2ZXJNYWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2REJCNjRFMUFCOEM5NkYwMEQ5QTgxMyAvKiBQb3dlck9i
c2VydmVyTWFjLmggKi87IH07CisJCTQ2RUJFQTAyMUI3RDRENjUwMEJFNDk0MSAvKiBDb2xsZWN0
aW9uVHJhdmVyc2FsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0NkVCRUEwMTFCN0Q0RDVEMDBCRTQ5NDEgLyogQ29sbGVjdGlvblRyYXZlcnNhbC5oICov
OyB9OwogCQk0NkYzRTNGOTFCMjEwOTAwMDA4N0VEMTMgLyogVk5vZGVUcmFja2VyLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2REI3RDU4MUIyMEZF
NTgwMDU2NTFCMiAvKiBWTm9kZVRyYWNrZXIuY3BwICovOyB9OwogCQk0NkYzRTNGQTFCMjEwOTEw
MDA4N0VEMTMgLyogVk5vZGVUcmFja2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0NkRCN0Q1OTFCMjBGRTU4MDA1NjUxQjIgLyogVk5vZGVUcmFja2Vy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDZG
Q0I2MTgxQTcwODIwRTAwQzVBMjFFIC8qIERpYWdub3N0aWNMb2dnaW5nS2V5cy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QzN0IzNzUxNUMxQTdFMTAw
NkRDODk4IC8qIERpYWdub3N0aWNMb2dnaW5nS2V5cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0yNjY5LDYgKzI2NzAsMTEgQEAKIAkJODJBQjE3
NzYxMjVDODI2NzAwQzUwNjlEIC8qIEluc3BlY3RvclJlc291cmNlQWdlbnQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgyQUIxNzcyMTI1QzgyNjcwMEM1
MDY5RCAvKiBJbnNwZWN0b3JSZXNvdXJjZUFnZW50LmggKi87IH07CiAJCTgyRTNEOERFMTIyRUEw
RDEwMDNBRTVCQyAvKiBDU1NQcm9wZXJ0eVNvdXJjZURhdGEuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODJFM0Q4REMxMjJFQTBEMTAwM0FFNUJDIC8q
IENTU1Byb3BlcnR5U291cmNlRGF0YS5jcHAgKi87IH07CiAJCTgyRTNEOERGMTIyRUEwRDEwMDNB
RTVCQyAvKiBDU1NQcm9wZXJ0eVNvdXJjZURhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgyRTNEOEREMTIyRUEwRDEwMDNBRTVCQyAvKiBDU1NQcm9w
ZXJ0eVNvdXJjZURhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQk4MzAwMzBGNTFCN0QzM0I1MDBFRDNBQUMgLyogR2VuZXJpY0NhY2hlZEhUTUxD
b2xsZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDgzMDAzMEYzMUI3RDMzQTYwMEVEM0FBQyAvKiBHZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rp
b24uY3BwICovOyB9OworCQk4MzAwMzBGNjFCN0QzM0I1MDBFRDNBQUMgLyogR2VuZXJpY0NhY2hl
ZEhUTUxDb2xsZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4MzAwMzBGNDFCN0QzM0E2MDBFRDNBQUMgLyogR2VuZXJpY0NhY2hlZEhUTUxDb2xs
ZWN0aW9uLmggKi87IH07CisJCTgzMDAzMEY4MUI3RDNCNzgwMEVEM0FBQyAvKiBDYWNoZWRIVE1M
Q29sbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gODMwMDMwRjcxQjdEMzk4ODAwRUQzQUFDIC8qIENhY2hlZEhUTUxDb2xsZWN0aW9uLmggKi87
IH07CisJCTgzMUQ0OEMwMUI3RDlBNTIwMDZERTM5QSAvKiBDbGFzc05vZGVMaXN0LmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzMUQ0OEJFMUI3RDlB
NDYwMDZERTM5QSAvKiBDbGFzc05vZGVMaXN0LmNwcCAqLzsgfTsKKwkJODMxRDQ4QzExQjdEOUE1
MjAwNkRFMzlBIC8qIENsYXNzTm9kZUxpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDgzMUQ0OEJGMUI3RDlBNDYwMDZERTM5QSAvKiBDbGFzc05vZGVM
aXN0LmggKi87IH07CiAJCTgzMkI4NDM0MTlEOEU1NTEwMEIyNjA1NSAvKiBTVkdBbmltYXRlRWxl
bWVudEJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDgzMkI4NDMzMTlEOEU1NTEwMEIyNjA1NSAvKiBTVkdBbmltYXRlRWxlbWVudEJhc2UuaCAqLzsg
fTsKIAkJODMyQjg0MzYxOUQ4RTU3NDAwQjI2MDU1IC8qIFNWR0FuaW1hdGVFbGVtZW50QmFzZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzJCODQz
NTE5RDhFNTc0MDBCMjYwNTUgLyogU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmNwcCAqLzsgfTsKIAkJ
ODM1MjBDN0UxQTcxQkZDQzAwNkJEMkFBIC8qIENTU0ZvbnRGYW1pbHkuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzNTIwQzdEMUE3MUJGQ0MwMDZCRDJB
QSAvKiBDU1NGb250RmFtaWx5LmggKi87IH07CkBAIC01NDEwLDggKzU0MTYsNiBAQAogCQlCQzhC
RjE1QTEwNTgxNDE4MDBBNDBBMDcgLyogVXNlclN0eWxlU2hlZXRUeXBlcy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM4QkYxNTkxMDU4MTQxODAwQTQw
QTA3IC8qIFVzZXJTdHlsZVNoZWV0VHlwZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlCQzhDOEZBRDBERENEMzFCMDBCNTkyRjQgLyogUmVuZGVy
U3R5bGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QkM4QzhGQUIwRERDRDMxQjAwQjU5MkY0IC8qIFJlbmRlclN0eWxlLmNwcCAqLzsgfTsKIAkJQkM4
QzhGQUUwRERDRDMxQjAwQjU5MkY0IC8qIFJlbmRlclN0eWxlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzhDOEZBQzBERENEMzFCMDBCNTkyRjQgLyog
UmVuZGVyU3R5bGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwotCQlCQzkwNEI3NjBEMTA5OThGMDA2ODBEMzIgLyogQ2xhc3NOb2RlTGlzdC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzkwNEI3MjBEMTA5
OThGMDA2ODBEMzIgLyogQ2xhc3NOb2RlTGlzdC5jcHAgKi87IH07Ci0JCUJDOTA0Qjc3MEQxMDk5
OEYwMDY4MEQzMiAvKiBDbGFzc05vZGVMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCQzkwNEI3MzBEMTA5OThGMDA2ODBEMzIgLyogQ2xhc3NOb2Rl
TGlzdC5oICovOyB9OwogCQlCQzkyNkY4MDBDMDU1MjQ3MDA4Mjc3NkIgLyogSlNIVE1MRnJhbWVT
ZXRFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEJDOTI2RjdFMEMwNTUyNDcwMDgyNzc2QiAvKiBKU0hUTUxGcmFtZVNldEVsZW1lbnQuY3Bw
ICovOyB9OwogCQlCQzkyNkY4MTBDMDU1MjQ3MDA4Mjc3NkIgLyogSlNIVE1MRnJhbWVTZXRFbGVt
ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzky
NkY3RjBDMDU1MjQ3MDA4Mjc3NkIgLyogSlNIVE1MRnJhbWVTZXRFbGVtZW50LmggKi87IH07CiAJ
CUJDOTQzOUMzMTE2Q0Y0OTQwMDQ4Qzc1MCAvKiBKU05vZGVDdXN0b20uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDOTQzOUMyMTE2Q0Y0OTQwMDQ4Qzc1
MCAvKiBKU05vZGVDdXN0b20uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwpAQCAtODkyNCw2ICs4OTI4LDcgQEAKIAkJNDZEQjdENTgxQjIwRkU1ODAwNTY1
MUIyIC8qIFZOb2RlVHJhY2tlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBWTm9kZVRyYWNrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkRC
N0Q1OTFCMjBGRTU4MDA1NjUxQjIgLyogVk5vZGVUcmFja2VyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFZOb2RlVHJhY2tlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0NkRCQjY0RTFBQjhDOTZGMDBEOUE4MTMgLyogUG93ZXJPYnNlcnZlck1hYy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQb3dlck9ic2VydmVyTWFjLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2RUJFQTAxMUI3RDRENUQwMEJFNDk0MSAvKiBDb2xsZWN0
aW9uVHJhdmVyc2FsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbGxlY3Rp
b25UcmF2ZXJzYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDkwNzA3RTQxMjE5
QzA0MzAwRDkwRTUxIC8qIEFOR0xFV2ViS2l0QnJpZGdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEFOR0xFV2ViS2l0QnJpZGdlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDkwNzA3RTUxMjE5QzA0MzAwRDkwRTUxIC8qIEFOR0xFV2ViS2l0QnJp
ZGdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFOR0xFV2ViS2l0QnJpZGdl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5MjkxRTRBMTM0MTcyQzgwMEU3NTNE
RSAvKiBJbWFnZVJlbmRlcmluZ01vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSW1hZ2VSZW5kZXJpbmdNb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0x
MDAyNCw2ICsxMDAyOSwxMSBAQAogCQk4MkFCMTc3MjEyNUM4MjY3MDBDNTA2OUQgLyogSW5zcGVj
dG9yUmVzb3VyY2VBZ2VudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNw
ZWN0b3JSZXNvdXJjZUFnZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgyRTNE
OERDMTIyRUEwRDEwMDNBRTVCQyAvKiBDU1NQcm9wZXJ0eVNvdXJjZURhdGEuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ1NTUHJvcGVydHlTb3VyY2VEYXRhLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODJFM0Q4REQxMjJFQTBEMTAwM0FFNUJDIC8q
IENTU1Byb3BlcnR5U291cmNlRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBDU1NQcm9wZXJ0eVNvdXJjZURhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
ODMwMDMwRjMxQjdEMzNBNjAwRUQzQUFDIC8qIEdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbi5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHZW5lcmljQ2FjaGVkSFRN
TENvbGxlY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4MzAwMzBGNDFC
N0QzM0E2MDBFRDNBQUMgLyogR2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbi5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4MzAwMzBGNzFCN0QzOTg4MDBFRDNBQUMgLyog
Q2FjaGVkSFRNTENvbGxlY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Q2FjaGVkSFRNTENvbGxlY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODMx
RDQ4QkUxQjdEOUE0NjAwNkRFMzlBIC8qIENsYXNzTm9kZUxpc3QuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2xhc3NOb2RlTGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTgzMUQ0OEJGMUI3RDlBNDYwMDZERTM5QSAvKiBDbGFzc05vZGVMaXN0
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENsYXNzTm9kZUxpc3QuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODMyQjg0MzMxOUQ4RTU1MTAwQjI2MDU1IC8qIFNW
R0FuaW1hdGVFbGVtZW50QmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
VkdBbmltYXRlRWxlbWVudEJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODMy
Qjg0MzUxOUQ4RTU3NDAwQjI2MDU1IC8qIFNWR0FuaW1hdGVFbGVtZW50QmFzZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdBbmltYXRlRWxlbWVudEJhc2UuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzUyMEM3RDFBNzFCRkNDMDA2QkQyQUEg
LyogQ1NTRm9udEZhbWlseS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDU1NG
b250RmFtaWx5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMjk5Miw4ICsxMzAw
Miw2IEBACiAJCUJDOEJGMTU5MTA1ODE0MTgwMEE0MEEwNyAvKiBVc2VyU3R5bGVTaGVldFR5cGVz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVzZXJTdHlsZVNoZWV0VHlwZXMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM4QzhGQUIwRERDRDMxQjAwQjU5MkY0
IC8qIFJlbmRlclN0eWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFJlbmRlclN0eWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM4QzhGQUMw
RERDRDMxQjAwQjU5MkY0IC8qIFJlbmRlclN0eWxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFJlbmRlclN0eWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUJD
OTA0QjcyMEQxMDk5OEYwMDY4MEQzMiAvKiBDbGFzc05vZGVMaXN0LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENsYXNzTm9kZUxpc3QuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQlCQzkwNEI3MzBEMTA5OThGMDA2ODBEMzIgLyogQ2xhc3NOb2RlTGlz
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDbGFzc05vZGVMaXN0Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDOTI2RjdFMEMwNTUyNDcwMDgyNzc2QiAvKiBK
U0hUTUxGcmFtZVNldEVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTSFRNTEZyYW1lU2V0RWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUJDOTI2RjdGMEMwNTUyNDcwMDgyNzc2QiAvKiBKU0hUTUxGcmFtZVNldEVsZW1lbnQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTSFRNTEZyYW1lU2V0RWxlbWVu
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzk0MzlDMjExNkNGNDk0MDA0OEM3
NTAgLyogSlNOb2RlQ3VzdG9tLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpT
Tm9kZUN1c3RvbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTgxNjIsMTAgKzE4
MTcwLDEyIEBACiAJCQkJRjU1QjNEN0ExMjUxRjEyRDAwM0VGMjY5IC8qIEJhc2VUZXh0SW5wdXRU
eXBlLmggKi8sCiAJCQkJRjU1QjNEN0IxMjUxRjEyRDAwM0VGMjY5IC8qIEJ1dHRvbklucHV0VHlw
ZS5jcHAgKi8sCiAJCQkJRjU1QjNEN0MxMjUxRjEyRDAwM0VGMjY5IC8qIEJ1dHRvbklucHV0VHlw
ZS5oICovLAorCQkJCTgzMDAzMEY3MUI3RDM5ODgwMEVEM0FBQyAvKiBDYWNoZWRIVE1MQ29sbGVj
dGlvbi5oICovLAogCQkJCUY1NUIzRDdEMTI1MUYxMkQwMDNFRjI2OSAvKiBDaGVja2JveElucHV0
VHlwZS5jcHAgKi8sCiAJCQkJRjU1QjNEN0UxMjUxRjEyRDAwM0VGMjY5IC8qIENoZWNrYm94SW5w
dXRUeXBlLmggKi8sCiAJCQkJNEFDQkMwQkMxMjcxM0NCRDAwOTRGOUIyIC8qIENsYXNzTGlzdC5j
cHAgKi8sCiAJCQkJNEFDQkMwQkQxMjcxM0NCRDAwOTRGOUIyIC8qIENsYXNzTGlzdC5oICovLAor
CQkJCTQ2RUJFQTAxMUI3RDRENUQwMEJFNDk0MSAvKiBDb2xsZWN0aW9uVHJhdmVyc2FsLmggKi8s
CiAJCQkJOTNDNDQxRkYwRjgxM0FFMTAwQzFBNjM0IC8qIENvbGxlY3Rpb25UeXBlLmggKi8sCiAJ
CQkJQkMyOTkzNUMxN0ExREQ1ODAwQkNFODgwIC8qIENvbG9ySW5wdXRUeXBlLmNwcCAqLywKIAkJ
CQlGNTVCM0Q4MDEyNTFGMTJEMDAzRUYyNjkgLyogQ29sb3JJbnB1dFR5cGUuaCAqLywKQEAgLTE4
MjAwLDYgKzE4MjEwLDggQEAKIAkJCQk5QjUwQjFEQzE3Q0Q0QzBGMDA4N0Y2M0MgLyogRm9ybU5h
bWVkSXRlbS5oICovLAogCQkJCTk3MjA1QUFEMTIzOTI4Q0EwMEIxNzM4MCAvKiBGVFBEaXJlY3Rv
cnlEb2N1bWVudC5jcHAgKi8sCiAJCQkJOTcyMDVBQUUxMjM5MjhDQTAwQjE3MzgwIC8qIEZUUERp
cmVjdG9yeURvY3VtZW50LmggKi8sCisJCQkJODMwMDMwRjMxQjdEMzNBNjAwRUQzQUFDIC8qIEdl
bmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbi5jcHAgKi8sCisJCQkJODMwMDMwRjQxQjdEMzNBNjAw
RUQzQUFDIC8qIEdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbi5oICovLAogCQkJCUY1NUIzRDhC
MTI1MUYxMkQwMDNFRjI2OSAvKiBIaWRkZW5JbnB1dFR5cGUuY3BwICovLAogCQkJCUY1NUIzRDhD
MTI1MUYxMkQwMDNFRjI2OSAvKiBIaWRkZW5JbnB1dFR5cGUuaCAqLywKIAkJCQlCQzk3RTIzOTEw
OTE0NDk1MDAxMEQzNjEgLyogSFRNTEFsbENvbGxlY3Rpb24uY3BwICovLApAQCAtMjMxNTMsOCAr
MjMxNjUsOCBAQAogCQkJCTgzRDI2RDNDMUFGRENDNTAwMDFCMzg3MyAvKiBDaGlsZE5vZGUuaWRs
ICovLAogCQkJCUE4MTg3MjFBMDk3N0QzQzAwMDU4MjZEOSAvKiBDaGlsZE5vZGVMaXN0LmNwcCAq
LywKIAkJCQlBODE4NzIxNTA5NzdEM0MwMDA1ODI2RDkgLyogQ2hpbGROb2RlTGlzdC5oICovLAot
CQkJCUJDOTA0QjcyMEQxMDk5OEYwMDY4MEQzMiAvKiBDbGFzc05vZGVMaXN0LmNwcCAqLywKLQkJ
CQlCQzkwNEI3MzBEMTA5OThGMDA2ODBEMzIgLyogQ2xhc3NOb2RlTGlzdC5oICovLAorCQkJCTgz
MUQ0OEJFMUI3RDlBNDYwMDZERTM5QSAvKiBDbGFzc05vZGVMaXN0LmNwcCAqLywKKwkJCQk4MzFE
NDhCRjFCN0Q5QTQ2MDA2REUzOUEgLyogQ2xhc3NOb2RlTGlzdC5oICovLAogCQkJCUJDQzA2NTc3
MEYzQ0UxQjcwMENEMkQ4NyAvKiBDbGllbnRSZWN0LmNwcCAqLywKIAkJCQlCQ0MwNjU3ODBGM0NF
MUI3MDBDRDJEODcgLyogQ2xpZW50UmVjdC5oICovLAogCQkJCUJDQzA2NTc5MEYzQ0UxQjcwMENE
MkQ4NyAvKiBDbGllbnRSZWN0LmlkbCAqLywKQEAgLTI0MTcwLDcgKzI0MTgyLDYgQEAKIAkJCQkx
NEQ4MjM1MjBBRjkyQTc5MDAwNEYwNTcgLyogQ2hyb21lLmggaW4gSGVhZGVycyAqLywKIAkJCQkx
NEQ4MjQwODBBRjkzQUVCMDAwNEYwNTcgLyogQ2hyb21lQ2xpZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQk0QUNCQzBCRjEyNzEzQ0JEMDA5NEY5QjIgLyogQ2xhc3NMaXN0LmggaW4gSGVhZGVycyAq
LywKLQkJCQlCQzkwNEI3NzBEMTA5OThGMDA2ODBEMzIgLyogQ2xhc3NOb2RlTGlzdC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQkNDMDY1N0UwRjNDRTFCNzAwQ0QyRDg3IC8qIENsaWVudFJlY3QuaCBp
biBIZWFkZXJzICovLAogCQkJCUJDQzA2NTgxMEYzQ0UxQjcwMENEMkQ4NyAvKiBDbGllbnRSZWN0
TGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODUwMzFCNDAwQTQ0RUZDNzAwRjk5MkUwIC8qIENs
aXBib2FyZEV2ZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTI0NDQyLDYgKzI0NDUzLDcgQEAKIAkJ
CQk4MzcyREIzMTFBNjc4MEE4MDBDNjk3QzUgLyogRGlhZ25vc3RpY0xvZ2dpbmdSZXN1bHRUeXBl
LmggaW4gSGVhZGVycyAqLywKIAkJCQlDRUNBREZDNzE1Mzc3OEZGMDBFMzcwNjggLyogRGljdGF0
aW9uQWx0ZXJuYXRpdmUuaCBpbiBIZWFkZXJzICovLAogCQkJCUNFQ0FERkM5MTUzNzc4RkYwMEUz
NzA2OCAvKiBEaWN0YXRpb25Db21tYW5kLmggaW4gSGVhZGVycyAqLywKKwkJCQk0NkVCRUEwMjFC
N0Q0RDY1MDBCRTQ5NDEgLyogQ29sbGVjdGlvblRyYXZlcnNhbC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJRDBCRDRGNUQxNDA4ODUwRjAwNjgzOUI2IC8qIERpY3RhdGlvbkNvbW1hbmRJT1MuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTE1MTQ1QjkwMUIzQTFDRTAwMDY2MkJGNyAvKiBNZWRpYURldmljZUlu
Zm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTMxNjAyM0YwMTUzMkM0MEMwMEQ1MEZGNCAvKiBEaWN0
aW9uYXJ5LmggaW4gSGVhZGVycyAqLywKQEAgLTI0NTQ3LDYgKzI0NTU5LDcgQEAKIAkJCQk4NUU3
MTE5NjBBQzVENTM1MDA1MzI3MEYgLyogRE9NRG9jdW1lbnRUeXBlSW50ZXJuYWwuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTg1MThEQ0U5MEE5Q0M4MEQwMDkxQjdBNiAvKiBET01ET01JbXBsZW1lbnRh
dGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODVFNzExOTcwQUM1RDUzNTAwNTMyNzBGIC8qIERP
TURPTUltcGxlbWVudGF0aW9uSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAorCQkJCTgzMUQ0OEMx
MUI3RDlBNTIwMDZERTM5QSAvKiBDbGFzc05vZGVMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk1
MkNDQTlFODE1RTNGNjRDMDA1M0M3N0YgLyogRE9NRE9NTmFtZWRGbG93Q29sbGVjdGlvbi5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNTJDQ0E5RUExNUUzRjY0QzAwNTNDNzdGIC8qIERPTURPTU5hbWVk
Rmxvd0NvbGxlY3Rpb25JbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQ5QTI0NzQxNUI5
QzJFMzAwRDM0NTI3IC8qIERPTURPTVNlY3VyaXR5UG9saWN5LmggaW4gSGVhZGVycyAqLywKQEAg
LTI1NjI5LDYgKzI1NjQyLDcgQEAKIAkJCQlGREExNUVCMjEyQjAzRUUxMDAzQTU4M0EgLyogSlNQ
YW5uZXJOb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4QTlBNTg3NTExRTg0QzgxMDA4QUNGRDEg
LyogSlNQZXJmb3JtYW5jZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOEE5QTU4NzExMUU4NEMzNjAw
OEFDRkQxIC8qIEpTUGVyZm9ybWFuY2VOYXZpZ2F0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQk4
MzAwMzBGNjFCN0QzM0I1MDBFRDNBQUMgLyogR2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk4QTlBNTg4ODExRTg0RjM3MDA4QUNGRDEgLyogSlNQZXJmb3Jt
YW5jZVRpbWluZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkRFQTYyNDcxNTIxMDJGQzAwNDc5REYw
IC8qIEpTUGVyaW9kaWNXYXZlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0I3MEQ2QzA5RUIwQzdD
MDA5RDg0NjggLyogSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmggaW4gSGVhZGVycyAqLywKQEAg
LTI2OTY4LDYgKzI2OTgyLDcgQEAKIAkJCQlCMjIyN0E1MTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZH
TnVtYmVyTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjdBNTQwRDAwQkYyMjAwNzFCNzgy
IC8qIFNWR1BhaW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0E1NzBEMDBCRjIyMDA3MUI3
ODIgLyogU1ZHUGFyc2VyVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKKwkJCQk4MzAwMzBGODFC
N0QzQjc4MDBFRDNBQUMgLyogQ2FjaGVkSFRNTENvbGxlY3Rpb24uaCBpbiBIZWFkZXJzICovLAog
CQkJCTJEM0EwRTM2MTNBN0Q3NjEwMEU4NUFGMCAvKiBTVkdQYXJzaW5nRXJyb3IuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTg0QzY3ODREMTIxNDgxNDcwMEE5MjkwMiAvKiBTVkdQYXRoQmxlbmRlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJODQ3NkM5RUIxMURGNkEyOTAwNTU1QjAyIC8qIFNWR1BhdGhC
dWlsZGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTI3OTYzLDcgKzI3OTc4LDYgQEAKIAkJCQkxNEQ4
MjM4QjBBRjkyREY2MDAwNEYwNTcgLyogQ2hyb21lLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUFC
QUYyMjA4MEMwM0IxQzcwMEIwQkNGMCAvKiBDaHJvbWVNYWMubW0gaW4gU291cmNlcyAqLywKIAkJ
CQk0QUNCQzBCRTEyNzEzQ0JEMDA5NEY5QjIgLyogQ2xhc3NMaXN0LmNwcCBpbiBTb3VyY2VzICov
LAotCQkJCUJDOTA0Qjc2MEQxMDk5OEYwMDY4MEQzMiAvKiBDbGFzc05vZGVMaXN0LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUJDQzA2NTdEMEYzQ0UxQjcwMENEMkQ4NyAvKiBDbGllbnRSZWN0LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUJDQzA2NTgwMEYzQ0UxQjcwMENEMkQ4NyAvKiBDbGllbnRS
ZWN0TGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NTAzMUIzRjBBNDRFRkM3MDBGOTkyRTAg
LyogQ2xpcGJvYXJkRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yODk3MCw2ICsyODk4NCw3
IEBACiAJCQkJQTlDNkU2NEMwRDc0NjVFNzAwNjQ0MkU5IC8qIEpTRE9NUGx1Z2luQXJyYXlDdXN0
b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTlDNkU2NEQwRDc0NjVFNzAwNjQ0MkU5IC8qIEpT
RE9NUGx1Z2luQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxNzJBRjhGMTgxMUJDMzcw
MEZCQURCOSAvKiBKU0RPTVByb21pc2UuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJODMxRDQ4QzAx
QjdEOUE1MjAwNkRFMzlBIC8qIENsYXNzTm9kZUxpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QkM1QTg2QjUwQzMzNjdFODAwRUVBNjQ5IC8qIEpTRE9NU2VsZWN0aW9uLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTRBQ0JDMENBMTI3MTNEMEEwMDk0RjlCMiAvKiBKU0RPTVNldHRhYmxlVG9rZW5M
aXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUM1MTM3Q0YyMTFBNTgzNzgwMDRBREI5OSAvKiBK
U0RPTVN0cmluZ0xpc3QuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yOTI2Miw2ICsyOTI3Nyw3IEBA
CiAJCQkJMDc5NjlEQkQxN0QxNDE1MTAwN0ZGODQyIC8qIEpTUlRDU2Vzc2lvbkRlc2NyaXB0aW9u
Q2FsbGJhY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDdEMDdCMTQxODM0MTU4ODAwQUJERDND
IC8qIEpTUlRDU2Vzc2lvbkRlc2NyaXB0aW9uQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTA3OTY5REJGMTdEMTQxNTEwMDdGRjg0MiAvKiBKU1JUQ1N0YXRzQ2FsbGJhY2suY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJODMwMDMwRjUxQjdEMzNCNTAwRUQzQUFDIC8qIEdlbmVyaWNDYWNoZWRI
VE1MQ29sbGVjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzk2OURDMTE3RDE0MTUxMDA3
RkY4NDIgLyogSlNSVENTdGF0c1JlcG9ydC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzk2OURD
MzE3RDE0MTUxMDA3RkY4NDIgLyogSlNSVENTdGF0c1Jlc3BvbnNlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTA3REM1RkQ0MTdEM0VFRTkwMDk5Rjg5MCAvKiBKU1JUQ1N0YXRzUmVzcG9uc2VDdXN0
b20uY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29u
dGFpbmVyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKaW5k
ZXggYmUzYTNjMTg3YTg1YzFjN2U5Zjg2NGZkM2NkN2IxYTdkZTI2ZGE2MS4uYmU5NjRiY2ZjNGFi
ZDllNjY4ZjM0ZjBkNGIyMDM1MTE3MDZkN2U2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0NvbnRhaW5lck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJO
b2RlLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkVkaXRvci5oIgogI2luY2x1ZGUg
IkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgorI2luY2x1ZGUgIkdlbmVyaWND
YWNoZWRIVE1MQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxGb3JtQ29udHJvbHNDb2xsZWN0
aW9uLmgiCiAjaW5jbHVkZSAiSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiSFRN
TFRhYmxlUm93c0NvbGxlY3Rpb24uaCIKQEAgLTkwMiw3ICs5MDMsNyBAQCBSZWZQdHI8UmFkaW9O
b2RlTGlzdD4gQ29udGFpbmVyTm9kZTo6cmFkaW9Ob2RlTGlzdChjb25zdCBBdG9taWNTdHJpbmcm
IG5hbWUpCiAKIFJlZjxIVE1MQ29sbGVjdGlvbj4gQ29udGFpbmVyTm9kZTo6Y2hpbGRyZW4oKQog
ewotICAgIHJldHVybiBlbnN1cmVDYWNoZWRIVE1MQ29sbGVjdGlvbihOb2RlQ2hpbGRyZW4pOwor
ICAgIHJldHVybiBlbnN1cmVSYXJlRGF0YSgpLmVuc3VyZU5vZGVMaXN0cygpLmFkZENhY2hlZENv
bGxlY3Rpb248R2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uPENvbGxlY3Rpb25UeXBlVHJhaXRz
PE5vZGVDaGlsZHJlbj46OnRyYXZlcnNhbFR5cGU+PigqdGhpcywgTm9kZUNoaWxkcmVuKTsKIH0K
IAogRWxlbWVudCogQ29udGFpbmVyTm9kZTo6Zmlyc3RFbGVtZW50Q2hpbGQoKSBjb25zdApAQCAt
OTM5LDIyICs5NDAsNiBAQCB2b2lkIENvbnRhaW5lck5vZGU6OnByZXBlbmQoVmVjdG9yPE5vZGVP
clN0cmluZz4mJiBub2RlT3JTdHJpbmdWZWN0b3IsIEV4Y2VwdGlvbgogICAgIGluc2VydEJlZm9y
ZShub2RlLnJlbGVhc2UoKSwgZmlyc3RDaGlsZCgpLCBlYyk7CiB9CiAKLVJlZjxIVE1MQ29sbGVj
dGlvbj4gQ29udGFpbmVyTm9kZTo6ZW5zdXJlQ2FjaGVkSFRNTENvbGxlY3Rpb24oQ29sbGVjdGlv
blR5cGUgdHlwZSkKLXsKLSAgICBpZiAoSFRNTENvbGxlY3Rpb24qIGNvbGxlY3Rpb24gPSBjYWNo
ZWRIVE1MQ29sbGVjdGlvbih0eXBlKSkKLSAgICAgICAgcmV0dXJuICpjb2xsZWN0aW9uOwotCi0g
ICAgaWYgKHR5cGUgPT0gVGFibGVSb3dzKQotICAgICAgICByZXR1cm4gZW5zdXJlUmFyZURhdGEo
KS5lbnN1cmVOb2RlTGlzdHMoKS5hZGRDYWNoZWRDb2xsZWN0aW9uPEhUTUxUYWJsZVJvd3NDb2xs
ZWN0aW9uPihkb3duY2FzdDxIVE1MVGFibGVFbGVtZW50PigqdGhpcyksIHR5cGUpOwotICAgIGVs
c2UgaWYgKHR5cGUgPT0gU2VsZWN0T3B0aW9ucykKLSAgICAgICAgcmV0dXJuIGVuc3VyZVJhcmVE
YXRhKCkuZW5zdXJlTm9kZUxpc3RzKCkuYWRkQ2FjaGVkQ29sbGVjdGlvbjxIVE1MT3B0aW9uc0Nv
bGxlY3Rpb24+KGRvd25jYXN0PEhUTUxTZWxlY3RFbGVtZW50PigqdGhpcyksIHR5cGUpOwotICAg
IGVsc2UgaWYgKHR5cGUgPT0gRm9ybUNvbnRyb2xzKSB7Ci0gICAgICAgIEFTU0VSVChoYXNUYWdO
YW1lKEhUTUxOYW1lczo6Zm9ybVRhZykgfHwgaGFzVGFnTmFtZShIVE1MTmFtZXM6OmZpZWxkc2V0
VGFnKSk7Ci0gICAgICAgIHJldHVybiBlbnN1cmVSYXJlRGF0YSgpLmVuc3VyZU5vZGVMaXN0cygp
LmFkZENhY2hlZENvbGxlY3Rpb248SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24+KCp0aGlzLCB0
eXBlKTsKLSAgICB9Ci0gICAgcmV0dXJuIGVuc3VyZVJhcmVEYXRhKCkuZW5zdXJlTm9kZUxpc3Rz
KCkuYWRkQ2FjaGVkQ29sbGVjdGlvbjxIVE1MQ29sbGVjdGlvbj4oKnRoaXMsIHR5cGUpOwotfQot
CiBIVE1MQ29sbGVjdGlvbiogQ29udGFpbmVyTm9kZTo6Y2FjaGVkSFRNTENvbGxlY3Rpb24oQ29s
bGVjdGlvblR5cGUgdHlwZSkKIHsKICAgICByZXR1cm4gaGFzUmFyZURhdGEoKSAmJiByYXJlRGF0
YSgpLT5ub2RlTGlzdHMoKSA/IHJhcmVEYXRhKCktPm5vZGVMaXN0cygpLT5jYWNoZWRDb2xsZWN0
aW9uPEhUTUxDb2xsZWN0aW9uPih0eXBlKSA6IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5l
ck5vZGUuaAppbmRleCBkYTA2MjFkN2YwNWM2ZWFiODFmMGM1N2ExZGZmNTYwYmZlNjg5OWRlLi4w
NWIzZmNhZWQ4NDhkZGRiNjY1MTcxODQ3NWNiNzY0ZWY5NTAxMWI1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9D
b250YWluZXJOb2RlLmgKQEAgLTE2OSw3ICsxNjksNiBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBz
ZXRGaXJzdENoaWxkKE5vZGUqIGNoaWxkKSB7IG1fZmlyc3RDaGlsZCA9IGNoaWxkOyB9CiAgICAg
dm9pZCBzZXRMYXN0Q2hpbGQoTm9kZSogY2hpbGQpIHsgbV9sYXN0Q2hpbGQgPSBjaGlsZDsgfQog
Ci0gICAgUmVmPEhUTUxDb2xsZWN0aW9uPiBlbnN1cmVDYWNoZWRIVE1MQ29sbGVjdGlvbihDb2xs
ZWN0aW9uVHlwZSk7CiAgICAgSFRNTENvbGxlY3Rpb24qIGNhY2hlZEhUTUxDb2xsZWN0aW9uKENv
bGxlY3Rpb25UeXBlKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDMz
ZDcxNWQzZjEyNjY5NzM1NGRiZTMxMTJiZjU0NTZhZTA5NWQ4Y2YuLmIzNzE3ZDk3YTQxYmFmMzNl
ODdhNmQ5ODJkMDNiMDIzYjRkOWUyMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNjMs
MTIgKzYzLDEyIEBACiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKICNpbmNsdWRlICJGcmFtZUxv
YWRlckNsaWVudC5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgorI2luY2x1ZGUgIkdlbmVyaWND
YWNoZWRIVE1MQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxBbGxDb2xsZWN0aW9uLmgiCiAj
aW5jbHVkZSAiSFRNTEFuY2hvckVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MQmFzZUVsZW1lbnQu
aCIKICNpbmNsdWRlICJIVE1MQm9keUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MQ2FudmFzRWxl
bWVudC5oIgotI2luY2x1ZGUgIkhUTUxDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiSFRNTERvY3Vt
ZW50LmgiCiAjaW5jbHVkZSAiSFRNTEVsZW1lbnRGYWN0b3J5LmgiCiAjaW5jbHVkZSAiSFRNTEZv
cm1Db250cm9sRWxlbWVudC5oIgpAQCAtNDc3Miw1MCArNDc3Miw1MSBAQCBib29sIERvY3VtZW50
OjpoYXNTVkdSb290Tm9kZSgpIGNvbnN0CiAgICAgcmV0dXJuIGRvY3VtZW50RWxlbWVudCgpICYm
IGRvY3VtZW50RWxlbWVudCgpLT5oYXNUYWdOYW1lKFNWR05hbWVzOjpzdmdUYWcpOwogfQogCi1S
ZWY8SFRNTENvbGxlY3Rpb24+IERvY3VtZW50OjplbnN1cmVDYWNoZWRDb2xsZWN0aW9uKENvbGxl
Y3Rpb25UeXBlIHR5cGUpCit0ZW1wbGF0ZSA8Q29sbGVjdGlvblR5cGUgY29sbGVjdGlvblR5cGU+
CitSZWY8SFRNTENvbGxlY3Rpb24+IERvY3VtZW50OjplbnN1cmVDYWNoZWRDb2xsZWN0aW9uKCkK
IHsKLSAgICByZXR1cm4gZW5zdXJlUmFyZURhdGEoKS5lbnN1cmVOb2RlTGlzdHMoKS5hZGRDYWNo
ZWRDb2xsZWN0aW9uPEhUTUxDb2xsZWN0aW9uPigqdGhpcywgdHlwZSk7CisgICAgcmV0dXJuIGVu
c3VyZVJhcmVEYXRhKCkuZW5zdXJlTm9kZUxpc3RzKCkuYWRkQ2FjaGVkQ29sbGVjdGlvbjxHZW5l
cmljQ2FjaGVkSFRNTENvbGxlY3Rpb248Q29sbGVjdGlvblR5cGVUcmFpdHM8Y29sbGVjdGlvblR5
cGU+Ojp0cmF2ZXJzYWxUeXBlPj4oKnRoaXMsIGNvbGxlY3Rpb25UeXBlKTsKIH0KIAogUmVmPEhU
TUxDb2xsZWN0aW9uPiBEb2N1bWVudDo6aW1hZ2VzKCkKIHsKLSAgICByZXR1cm4gZW5zdXJlQ2Fj
aGVkQ29sbGVjdGlvbihEb2NJbWFnZXMpOworICAgIHJldHVybiBlbnN1cmVDYWNoZWRDb2xsZWN0
aW9uPERvY0ltYWdlcz4oKTsKIH0KIAogUmVmPEhUTUxDb2xsZWN0aW9uPiBEb2N1bWVudDo6YXBw
bGV0cygpCiB7Ci0gICAgcmV0dXJuIGVuc3VyZUNhY2hlZENvbGxlY3Rpb24oRG9jQXBwbGV0cyk7
CisgICAgcmV0dXJuIGVuc3VyZUNhY2hlZENvbGxlY3Rpb248RG9jQXBwbGV0cz4oKTsKIH0KIAog
UmVmPEhUTUxDb2xsZWN0aW9uPiBEb2N1bWVudDo6ZW1iZWRzKCkKIHsKLSAgICByZXR1cm4gZW5z
dXJlQ2FjaGVkQ29sbGVjdGlvbihEb2NFbWJlZHMpOworICAgIHJldHVybiBlbnN1cmVDYWNoZWRD
b2xsZWN0aW9uPERvY0VtYmVkcz4oKTsKIH0KIAogUmVmPEhUTUxDb2xsZWN0aW9uPiBEb2N1bWVu
dDo6cGx1Z2lucygpCiB7CiAgICAgLy8gVGhpcyBpcyBhbiBhbGlhcyBmb3IgZW1iZWRzKCkgcmVx
dWlyZWQgZm9yIHRoZSBKUyBET00gYmluZGluZ3MuCi0gICAgcmV0dXJuIGVuc3VyZUNhY2hlZENv
bGxlY3Rpb24oRG9jRW1iZWRzKTsKKyAgICByZXR1cm4gZW5zdXJlQ2FjaGVkQ29sbGVjdGlvbjxE
b2NFbWJlZHM+KCk7CiB9CiAKIFJlZjxIVE1MQ29sbGVjdGlvbj4gRG9jdW1lbnQ6OnNjcmlwdHMo
KQogewotICAgIHJldHVybiBlbnN1cmVDYWNoZWRDb2xsZWN0aW9uKERvY1NjcmlwdHMpOworICAg
IHJldHVybiBlbnN1cmVDYWNoZWRDb2xsZWN0aW9uPERvY1NjcmlwdHM+KCk7CiB9CiAKIFJlZjxI
VE1MQ29sbGVjdGlvbj4gRG9jdW1lbnQ6OmxpbmtzKCkKIHsKLSAgICByZXR1cm4gZW5zdXJlQ2Fj
aGVkQ29sbGVjdGlvbihEb2NMaW5rcyk7CisgICAgcmV0dXJuIGVuc3VyZUNhY2hlZENvbGxlY3Rp
b248RG9jTGlua3M+KCk7CiB9CiAKIFJlZjxIVE1MQ29sbGVjdGlvbj4gRG9jdW1lbnQ6OmZvcm1z
KCkKIHsKLSAgICByZXR1cm4gZW5zdXJlQ2FjaGVkQ29sbGVjdGlvbihEb2NGb3Jtcyk7CisgICAg
cmV0dXJuIGVuc3VyZUNhY2hlZENvbGxlY3Rpb248RG9jRm9ybXM+KCk7CiB9CiAKIFJlZjxIVE1M
Q29sbGVjdGlvbj4gRG9jdW1lbnQ6OmFuY2hvcnMoKQogewotICAgIHJldHVybiBlbnN1cmVDYWNo
ZWRDb2xsZWN0aW9uKERvY0FuY2hvcnMpOworICAgIHJldHVybiBlbnN1cmVDYWNoZWRDb2xsZWN0
aW9uPERvY0FuY2hvcnM+KCk7CiB9CiAKIFJlZjxIVE1MQ29sbGVjdGlvbj4gRG9jdW1lbnQ6OmFs
bCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IDgwZmU3YTQ4ZWVmMjFiNzQxMDU0MjQyMjhhNmY3
MzI2ZjZjZDRhMjcuLmU1M2JmM2UxYzZjMWVmMjA5YjMyOTMzNmYzNzJlMWY4MTBjZTlmOTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5oCkBAIC0xMTMsNyArMTEzLDYgQEAgY2xhc3MgSFRNTElGcmFtZUVs
ZW1lbnQ7CiBjbGFzcyBIVE1MSW1hZ2VFbGVtZW50OwogY2xhc3MgSFRNTE1hcEVsZW1lbnQ7CiBj
bGFzcyBIVE1MTWVkaWFFbGVtZW50OwotY2xhc3MgSFRNTE5hbWVDb2xsZWN0aW9uOwogY2xhc3Mg
SFRNTFNjcmlwdEVsZW1lbnQ7CiBjbGFzcyBIaXRUZXN0UmVxdWVzdDsKIGNsYXNzIEhpdFRlc3RS
ZXN1bHQ7CkBAIC0xMzQ1LDcgKzEzNDQsOCBAQCBwcml2YXRlOgogCiAgICAgTm9kZSogbm9kZUZy
b21Qb2ludChjb25zdCBMYXlvdXRQb2ludCYgY2xpZW50UG9pbnQsIExheW91dFBvaW50KiBsb2Nh
bFBvaW50ID0gbnVsbHB0cik7CiAKLSAgICBSZWY8SFRNTENvbGxlY3Rpb24+IGVuc3VyZUNhY2hl
ZENvbGxlY3Rpb24oQ29sbGVjdGlvblR5cGUpOworICAgIHRlbXBsYXRlIDxDb2xsZWN0aW9uVHlw
ZSBjb2xsZWN0aW9uVHlwZT4KKyAgICBSZWY8SFRNTENvbGxlY3Rpb24+IGVuc3VyZUNhY2hlZENv
bGxlY3Rpb24oKTsKIAogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAgICB2b2lkIGRpc3Bh
dGNoRnVsbFNjcmVlbkNoYW5nZU9yRXJyb3JFdmVudChEZXF1ZTxSZWZQdHI8Tm9kZT4+JiwgY29u
c3QgQXRvbWljU3RyaW5nJiBldmVudE5hbWUsIGJvb2wgc2hvdWxkTm90aWZ5TWVkaWFFbGVtZW50
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50Q2hpbGRJdGVyYXRvci5o
IGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRDaGlsZEl0ZXJhdG9yLmgKaW5kZXggOTRjZDMx
MzIyNDM0YmRhMDVjOWY1NmUxN2IwZTA2NGMyMjVlNTFjZi4uMWE5NDZiYjhmYjE5M2M2MDQ1MjA5
ZmZiZDUyY2QzNWE4OWNmZWM5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnRDaGlsZEl0ZXJhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRDaGlsZEl0
ZXJhdG9yLmgKQEAgLTQxLDYgKzQxLDcgQEAgcHVibGljOgogCiAgICAgRWxlbWVudENoaWxkSXRl
cmF0b3IoY29uc3QgQ29udGFpbmVyTm9kZSYgcGFyZW50KTsKICAgICBFbGVtZW50Q2hpbGRJdGVy
YXRvcihjb25zdCBDb250YWluZXJOb2RlJiBwYXJlbnQsIEVsZW1lbnRUeXBlKiBjdXJyZW50KTsK
KyAgICBFbGVtZW50Q2hpbGRJdGVyYXRvciYgb3BlcmF0b3ItLSgpOwogICAgIEVsZW1lbnRDaGls
ZEl0ZXJhdG9yJiBvcGVyYXRvcisrKCk7CiB9OwogCkBAIC01NSw2ICs1Niw3IEBAIHB1YmxpYzoK
IAogICAgIEVsZW1lbnRDaGlsZENvbnN0SXRlcmF0b3IoY29uc3QgQ29udGFpbmVyTm9kZSYgcGFy
ZW50KTsKICAgICBFbGVtZW50Q2hpbGRDb25zdEl0ZXJhdG9yKGNvbnN0IENvbnRhaW5lck5vZGUm
IHBhcmVudCwgY29uc3QgRWxlbWVudFR5cGUqIGN1cnJlbnQpOworICAgIEVsZW1lbnRDaGlsZENv
bnN0SXRlcmF0b3ImIG9wZXJhdG9yLS0oKTsKICAgICBFbGVtZW50Q2hpbGRDb25zdEl0ZXJhdG9y
JiBvcGVyYXRvcisrKCk7CiB9OwogCkBAIC0xMDgsNiArMTEwLDEyIEBAIGlubGluZSBFbGVtZW50
Q2hpbGRJdGVyYXRvcjxFbGVtZW50VHlwZT46OkVsZW1lbnRDaGlsZEl0ZXJhdG9yKGNvbnN0IENv
bnRhaW5lck5vCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KK2lubGluZSBF
bGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50VHlwZT4mIEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVs
ZW1lbnRUeXBlPjo6b3BlcmF0b3ItLSgpCit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEVsZW1l
bnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiY+KEVsZW1lbnRJdGVyYXRvcjxFbGVtZW50VHlw
ZT46OnRyYXZlcnNlUHJldmlvdXNTaWJsaW5nKCkpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
RWxlbWVudFR5cGU+CiBpbmxpbmUgRWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVudFR5cGU+JiBF
bGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50VHlwZT46Om9wZXJhdG9yKysoKQogewogICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxFbGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50VHlwZT4mPihFbGVt
ZW50SXRlcmF0b3I8RWxlbWVudFR5cGU+Ojp0cmF2ZXJzZU5leHRTaWJsaW5nKCkpOwpAQCAtMTI4
LDYgKzEzNiwxMyBAQCBpbmxpbmUgRWxlbWVudENoaWxkQ29uc3RJdGVyYXRvcjxFbGVtZW50VHlw
ZT46OkVsZW1lbnRDaGlsZENvbnN0SXRlcmF0b3IoY29uc3QgQwogfQogCiB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgRWxlbWVudFR5cGU+CitpbmxpbmUgRWxlbWVudENoaWxkQ29uc3RJdGVyYXRvcjxFbGVt
ZW50VHlwZT4mIEVsZW1lbnRDaGlsZENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+OjpvcGVyYXRv
ci0tKCkKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RWxlbWVudENoaWxkQ29uc3RJdGVyYXRv
cjxFbGVtZW50VHlwZT4mPihFbGVtZW50Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT46OnRyYXZl
cnNlUHJldmlvdXNTaWJsaW5nKCkpOworfQorCisKK3RlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50
VHlwZT4KIGlubGluZSBFbGVtZW50Q2hpbGRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiYgRWxl
bWVudENoaWxkQ29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT46Om9wZXJhdG9yKysoKQogewogICAg
IHJldHVybiBzdGF0aWNfY2FzdDxFbGVtZW50Q2hpbGRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBl
PiY+KEVsZW1lbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6dHJhdmVyc2VOZXh0U2libGlu
ZygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9MaXZlTm9kZUxpc3QuaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9MaXZlTm9kZUxpc3QuaAppbmRleCAxOTZlNTBiYjgyYmViY2NmNzI2
NGI0NjNhMmVlZTYzZWE2ZDEwYWJiLi4wNTI1OThmN2U5YjdjN2FhODFiNWFhNzIxMjA5ZTlhOTEz
NDE4ODc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTGl2ZU5vZGVMaXN0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0xpdmVOb2RlTGlzdC5oCkBAIC0yNSw2ICsyNSw3IEBACiAj
ZGVmaW5lIExpdmVOb2RlTGlzdF9oCiAKICNpbmNsdWRlICJDb2xsZWN0aW9uSW5kZXhDYWNoZS5o
IgorI2luY2x1ZGUgIkNvbGxlY3Rpb25UcmF2ZXJzYWwuaCIKICNpbmNsdWRlICJDb2xsZWN0aW9u
VHlwZS5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRWxlbWVudERlc2NlbmRh
bnRJdGVyYXRvci5oIgpAQCAtODAsMjUgKzgxLDI5IEBAIGNsYXNzIENhY2hlZExpdmVOb2RlTGlz
dCA6IHB1YmxpYyBMaXZlTm9kZUxpc3QgewogcHVibGljOgogICAgIHZpcnR1YWwgfkNhY2hlZExp
dmVOb2RlTGlzdCgpOwogCi0gICAgdmlydHVhbCB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCBvdmVy
cmlkZSBmaW5hbDsKLSAgICB2aXJ0dWFsIE5vZGUqIGl0ZW0odW5zaWduZWQgb2Zmc2V0KSBjb25z
dCBvdmVycmlkZSBmaW5hbDsKKyAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCBvdmVycmlkZSBm
aW5hbCB7IHJldHVybiBtX2luZGV4Q2FjaGUubm9kZUNvdW50KG5vZGVMaXN0KCkpOyB9CisgICAg
Tm9kZSogaXRlbSh1bnNpZ25lZCBvZmZzZXQpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJu
IG1faW5kZXhDYWNoZS5ub2RlQXQobm9kZUxpc3QoKSwgb2Zmc2V0KTsgfQogCiAgICAgLy8gRm9y
IENvbGxlY3Rpb25JbmRleENhY2hlCi0gICAgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciBjb2xs
ZWN0aW9uQmVnaW4oKSBjb25zdDsKLSAgICBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yIGNvbGxl
Y3Rpb25MYXN0KCkgY29uc3Q7CisgICAgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciBjb2xsZWN0
aW9uQmVnaW4oKSBjb25zdCB7IHJldHVybiBUcmF2ZXJzYWw6OmJlZ2luKG5vZGVMaXN0KCksIHJv
b3ROb2RlKCkpOyB9CisgICAgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciBjb2xsZWN0aW9uTGFz
dCgpIGNvbnN0IHsgcmV0dXJuIFRyYXZlcnNhbDo6bGFzdChub2RlTGlzdCgpLCByb290Tm9kZSgp
KTsgfQogICAgIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IgY29sbGVjdGlvbkVuZCgpIGNvbnN0
IHsgcmV0dXJuIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IoKTsgfQotICAgIHZvaWQgY29sbGVj
dGlvblRyYXZlcnNlRm9yd2FyZChFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yJiwgdW5zaWduZWQg
Y291bnQsIHVuc2lnbmVkJiB0cmF2ZXJzZWRDb3VudCkgY29uc3Q7Ci0gICAgdm9pZCBjb2xsZWN0
aW9uVHJhdmVyc2VCYWNrd2FyZChFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yJiwgdW5zaWduZWQg
Y291bnQpIGNvbnN0OworICAgIHZvaWQgY29sbGVjdGlvblRyYXZlcnNlRm9yd2FyZChFbGVtZW50
RGVzY2VuZGFudEl0ZXJhdG9yJiBjdXJyZW50LCB1bnNpZ25lZCBjb3VudCwgdW5zaWduZWQmIHRy
YXZlcnNlZENvdW50KSBjb25zdCB7IFRyYXZlcnNhbDo6dHJhdmVyc2VGb3J3YXJkKG5vZGVMaXN0
KCksIGN1cnJlbnQsIGNvdW50LCB0cmF2ZXJzZWRDb3VudCk7IH0KKyAgICB2b2lkIGNvbGxlY3Rp
b25UcmF2ZXJzZUJhY2t3YXJkKEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3ImIGN1cnJlbnQsIHVu
c2lnbmVkIGNvdW50KSBjb25zdCB7IFRyYXZlcnNhbDo6dHJhdmVyc2VCYWNrd2FyZChub2RlTGlz
dCgpLCBjdXJyZW50LCBjb3VudCk7IH0KICAgICBib29sIGNvbGxlY3Rpb25DYW5UcmF2ZXJzZUJh
Y2t3YXJkKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZvaWQgd2lsbFZhbGlkYXRlSW5k
ZXhDYWNoZSgpIGNvbnN0OwogCiAgICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVDYWNoZShEb2N1
bWVudCYpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOwotICAgIHZpcnR1YWwgc2l6ZV90IG1lbW9yeUNv
c3QoKSBjb25zdCBvdmVycmlkZSBmaW5hbDsKKyAgICB2aXJ0dWFsIHNpemVfdCBtZW1vcnlDb3N0
KCkgY29uc3Qgb3ZlcnJpZGUgZmluYWwgeyByZXR1cm4gbV9pbmRleENhY2hlLm1lbW9yeUNvc3Qo
KTsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgQ2FjaGVkTGl2ZU5vZGVMaXN0KENvbnRhaW5lck5vZGUm
IHJvb3ROb2RlLCBOb2RlTGlzdEludmFsaWRhdGlvblR5cGUpOwogCiBwcml2YXRlOgorICAgIHVz
aW5nIFRyYXZlcnNhbCA9IENvbGxlY3Rpb25UcmF2ZXJzYWw8Q29sbGVjdGlvblRyYXZlcnNhbFR5
cGU6OkRlc2NlbmRhbnRzPjsKKyAgICBOb2RlTGlzdFR5cGUmIG5vZGVMaXN0KCkgeyByZXR1cm4g
c3RhdGljX2Nhc3Q8Tm9kZUxpc3RUeXBlJj4oKnRoaXMpOyB9CisgICAgY29uc3QgTm9kZUxpc3RU
eXBlJiBub2RlTGlzdCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IE5vZGVMaXN0
VHlwZSY+KCp0aGlzKTsgfQorCiAgICAgQ29udGFpbmVyTm9kZSYgcm9vdE5vZGUoKSBjb25zdDsK
IAogICAgIG11dGFibGUgQ29sbGVjdGlvbkluZGV4Q2FjaGU8Tm9kZUxpc3RUeXBlLCBFbGVtZW50
RGVzY2VuZGFudEl0ZXJhdG9yPiBtX2luZGV4Q2FjaGU7CkBAIC0xMzEsMTE1ICsxMzYsMzkgQEAg
QUxXQVlTX0lOTElORSBib29sIHNob3VsZEludmFsaWRhdGVUeXBlT25BdHRyaWJ1dGVDaGFuZ2Uo
Tm9kZUxpc3RJbnZhbGlkYXRpb25UeXAKIHRlbXBsYXRlIDxjbGFzcyBOb2RlTGlzdFR5cGU+CiBD
YWNoZWRMaXZlTm9kZUxpc3Q8Tm9kZUxpc3RUeXBlPjo6Q2FjaGVkTGl2ZU5vZGVMaXN0KENvbnRh
aW5lck5vZGUmIG93bmVyTm9kZSwgTm9kZUxpc3RJbnZhbGlkYXRpb25UeXBlIGludmFsaWRhdGlv
blR5cGUpCiAgICAgOiBMaXZlTm9kZUxpc3Qob3duZXJOb2RlLCBpbnZhbGlkYXRpb25UeXBlKQot
ICAgICwgbV9pbmRleENhY2hlKHN0YXRpY19jYXN0PE5vZGVMaXN0VHlwZSY+KCp0aGlzKSkKKyAg
ICAsIG1faW5kZXhDYWNoZShub2RlTGlzdCgpKQogewogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgTm9k
ZUxpc3RUeXBlPgogQ2FjaGVkTGl2ZU5vZGVMaXN0PE5vZGVMaXN0VHlwZT46On5DYWNoZWRMaXZl
Tm9kZUxpc3QoKQogewotICAgIGF1dG8mIG5vZGVMaXN0ID0gc3RhdGljX2Nhc3Q8Y29uc3QgTm9k
ZUxpc3RUeXBlJj4oKnRoaXMpOwotICAgIGlmIChtX2luZGV4Q2FjaGUuaGFzVmFsaWRDYWNoZShu
b2RlTGlzdCkpCisgICAgaWYgKG1faW5kZXhDYWNoZS5oYXNWYWxpZENhY2hlKG5vZGVMaXN0KCkp
KQogICAgICAgICBkb2N1bWVudCgpLnVucmVnaXN0ZXJOb2RlTGlzdEZvckludmFsaWRhdGlvbigq
dGhpcyk7CiB9CiAKIHRlbXBsYXRlIDxjbGFzcyBOb2RlTGlzdFR5cGU+CiBpbmxpbmUgQ29udGFp
bmVyTm9kZSYgQ2FjaGVkTGl2ZU5vZGVMaXN0PE5vZGVMaXN0VHlwZT46OnJvb3ROb2RlKCkgY29u
c3QKIHsKLSAgICBpZiAoc3RhdGljX2Nhc3Q8Y29uc3QgTm9kZUxpc3RUeXBlJj4oKnRoaXMpLmlz
Um9vdGVkQXREb2N1bWVudCgpICYmIG93bmVyTm9kZSgpLmluRG9jdW1lbnQoKSkKKyAgICBpZiAo
bm9kZUxpc3QoKS5pc1Jvb3RlZEF0RG9jdW1lbnQoKSAmJiBvd25lck5vZGUoKS5pbkRvY3VtZW50
KCkpCiAgICAgICAgIHJldHVybiBvd25lck5vZGUoKS5kb2N1bWVudCgpOwogCiAgICAgcmV0dXJu
IG93bmVyTm9kZSgpOwogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgTm9kZUxpc3RUeXBlPgotRWxlbWVu
dERlc2NlbmRhbnRJdGVyYXRvciBDYWNoZWRMaXZlTm9kZUxpc3Q8Tm9kZUxpc3RUeXBlPjo6Y29s
bGVjdGlvbkJlZ2luKCkgY29uc3QKLXsKLSAgICBhdXRvJiBub2RlTGlzdCA9IHN0YXRpY19jYXN0
PGNvbnN0IE5vZGVMaXN0VHlwZSY+KCp0aGlzKTsKLSAgICBhdXRvIGRlc2NlbmRhbnRzID0gZWxl
bWVudERlc2NlbmRhbnRzKHJvb3ROb2RlKCkpOwotICAgIGF1dG8gZW5kID0gZGVzY2VuZGFudHMu
ZW5kKCk7Ci0gICAgZm9yIChhdXRvIGl0ID0gZGVzY2VuZGFudHMuYmVnaW4oKTsgaXQgIT0gZW5k
OyArK2l0KSB7Ci0gICAgICAgIGlmIChub2RlTGlzdC5lbGVtZW50TWF0Y2hlcygqaXQpKQotICAg
ICAgICAgICAgcmV0dXJuIGl0OwotICAgIH0KLSAgICByZXR1cm4gZW5kOwotfQotCi10ZW1wbGF0
ZSA8Y2xhc3MgTm9kZUxpc3RUeXBlPgotRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciBDYWNoZWRM
aXZlTm9kZUxpc3Q8Tm9kZUxpc3RUeXBlPjo6Y29sbGVjdGlvbkxhc3QoKSBjb25zdAotewotICAg
IGF1dG8mIG5vZGVMaXN0ID0gc3RhdGljX2Nhc3Q8Y29uc3QgTm9kZUxpc3RUeXBlJj4oKnRoaXMp
OwotICAgIGF1dG8gZGVzY2VuZGFudHMgPSBlbGVtZW50RGVzY2VuZGFudHMocm9vdE5vZGUoKSk7
Ci0gICAgYXV0byBlbmQgPSBkZXNjZW5kYW50cy5lbmQoKTsKLSAgICBmb3IgKGF1dG8gaXQgPSBk
ZXNjZW5kYW50cy5sYXN0KCk7IGl0ICE9IGVuZDsgLS1pdCkgewotICAgICAgICBpZiAobm9kZUxp
c3QuZWxlbWVudE1hdGNoZXMoKml0KSkKLSAgICAgICAgICAgIHJldHVybiBpdDsKLSAgICB9Ci0g
ICAgcmV0dXJuIGVuZDsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIE5vZGVMaXN0VHlwZT4KLXZvaWQg
Q2FjaGVkTGl2ZU5vZGVMaXN0PE5vZGVMaXN0VHlwZT46OmNvbGxlY3Rpb25UcmF2ZXJzZUZvcndh
cmQoRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciYgY3VycmVudCwgdW5zaWduZWQgY291bnQsIHVu
c2lnbmVkJiB0cmF2ZXJzZWRDb3VudCkgY29uc3QKLXsKLSAgICBhdXRvJiBub2RlTGlzdCA9IHN0
YXRpY19jYXN0PGNvbnN0IE5vZGVMaXN0VHlwZSY+KCp0aGlzKTsKLSAgICBBU1NFUlQobm9kZUxp
c3QuZWxlbWVudE1hdGNoZXMoKmN1cnJlbnQpKTsKLSAgICBhdXRvIGVuZCA9IGNvbGxlY3Rpb25F
bmQoKTsKLSAgICBmb3IgKHRyYXZlcnNlZENvdW50ID0gMDsgdHJhdmVyc2VkQ291bnQgPCBjb3Vu
dDsgKyt0cmF2ZXJzZWRDb3VudCkgewotICAgICAgICBkbyB7Ci0gICAgICAgICAgICArK2N1cnJl
bnQ7Ci0gICAgICAgICAgICBpZiAoY3VycmVudCA9PSBlbmQpCi0gICAgICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICB9IHdoaWxlICghbm9kZUxpc3QuZWxlbWVudE1hdGNoZXMoKmN1cnJlbnQp
KTsKLSAgICB9Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBOb2RlTGlzdFR5cGU+Ci12b2lkIENhY2hl
ZExpdmVOb2RlTGlzdDxOb2RlTGlzdFR5cGU+Ojpjb2xsZWN0aW9uVHJhdmVyc2VCYWNrd2FyZChF
bGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yJiBjdXJyZW50LCB1bnNpZ25lZCBjb3VudCkgY29uc3QK
LXsKLSAgICBhdXRvJiBub2RlTGlzdCA9IHN0YXRpY19jYXN0PGNvbnN0IE5vZGVMaXN0VHlwZSY+
KCp0aGlzKTsKLSAgICBBU1NFUlQobm9kZUxpc3QuZWxlbWVudE1hdGNoZXMoKmN1cnJlbnQpKTsK
LSAgICBhdXRvIGVuZCA9IGNvbGxlY3Rpb25FbmQoKTsKLSAgICBmb3IgKDsgY291bnQ7IC0tY291
bnQpIHsKLSAgICAgICAgZG8gewotICAgICAgICAgICAgLS1jdXJyZW50OwotICAgICAgICAgICAg
aWYgKGN1cnJlbnQgPT0gZW5kKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfSB3
aGlsZSAoIW5vZGVMaXN0LmVsZW1lbnRNYXRjaGVzKCpjdXJyZW50KSk7Ci0gICAgfQotfQotCi10
ZW1wbGF0ZSA8Y2xhc3MgTm9kZUxpc3RUeXBlPgogdm9pZCBDYWNoZWRMaXZlTm9kZUxpc3Q8Tm9k
ZUxpc3RUeXBlPjo6d2lsbFZhbGlkYXRlSW5kZXhDYWNoZSgpIGNvbnN0CiB7Ci0gICAgZG9jdW1l
bnQoKS5yZWdpc3Rlck5vZGVMaXN0Rm9ySW52YWxpZGF0aW9uKGNvbnN0X2Nhc3Q8Tm9kZUxpc3RU
eXBlJj4oc3RhdGljX2Nhc3Q8Y29uc3QgTm9kZUxpc3RUeXBlJj4oKnRoaXMpKSk7CisgICAgZG9j
dW1lbnQoKS5yZWdpc3Rlck5vZGVMaXN0Rm9ySW52YWxpZGF0aW9uKGNvbnN0X2Nhc3Q8Q2FjaGVk
TGl2ZU5vZGVMaXN0PE5vZGVMaXN0VHlwZT4mPigqdGhpcykpOwogfQogCiB0ZW1wbGF0ZSA8Y2xh
c3MgTm9kZUxpc3RUeXBlPgogdm9pZCBDYWNoZWRMaXZlTm9kZUxpc3Q8Tm9kZUxpc3RUeXBlPjo6
aW52YWxpZGF0ZUNhY2hlKERvY3VtZW50JiBkb2N1bWVudCkgY29uc3QKIHsKLSAgICBhdXRvJiBu
b2RlTGlzdCA9IHN0YXRpY19jYXN0PGNvbnN0IE5vZGVMaXN0VHlwZSY+KCp0aGlzKTsKLSAgICBp
ZiAoIW1faW5kZXhDYWNoZS5oYXNWYWxpZENhY2hlKG5vZGVMaXN0KSkKKyAgICBpZiAoIW1faW5k
ZXhDYWNoZS5oYXNWYWxpZENhY2hlKG5vZGVMaXN0KCkpKQogICAgICAgICByZXR1cm47Ci0gICAg
ZG9jdW1lbnQudW5yZWdpc3Rlck5vZGVMaXN0Rm9ySW52YWxpZGF0aW9uKGNvbnN0X2Nhc3Q8Tm9k
ZUxpc3RUeXBlJj4obm9kZUxpc3QpKTsKLSAgICBtX2luZGV4Q2FjaGUuaW52YWxpZGF0ZShub2Rl
TGlzdCk7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBOb2RlTGlzdFR5cGU+Ci11bnNpZ25lZCBDYWNo
ZWRMaXZlTm9kZUxpc3Q8Tm9kZUxpc3RUeXBlPjo6bGVuZ3RoKCkgY29uc3QKLXsKLSAgICByZXR1
cm4gbV9pbmRleENhY2hlLm5vZGVDb3VudChzdGF0aWNfY2FzdDxjb25zdCBOb2RlTGlzdFR5cGUm
PigqdGhpcykpOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgTm9kZUxpc3RUeXBlPgotTm9kZSogQ2Fj
aGVkTGl2ZU5vZGVMaXN0PE5vZGVMaXN0VHlwZT46Oml0ZW0odW5zaWduZWQgb2Zmc2V0KSBjb25z
dAotewotICAgIHJldHVybiBtX2luZGV4Q2FjaGUubm9kZUF0KHN0YXRpY19jYXN0PGNvbnN0IE5v
ZGVMaXN0VHlwZSY+KCp0aGlzKSwgb2Zmc2V0KTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIE5vZGVM
aXN0VHlwZT4KLXNpemVfdCBDYWNoZWRMaXZlTm9kZUxpc3Q8Tm9kZUxpc3RUeXBlPjo6bWVtb3J5
Q29zdCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1faW5kZXhDYWNoZS5tZW1vcnlDb3N0KCk7Cisg
ICAgZG9jdW1lbnQudW5yZWdpc3Rlck5vZGVMaXN0Rm9ySW52YWxpZGF0aW9uKGNvbnN0X2Nhc3Q8
Tm9kZUxpc3RUeXBlJj4obm9kZUxpc3QoKSkpOworICAgIG1faW5kZXhDYWNoZS5pbnZhbGlkYXRl
KG5vZGVMaXN0KCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0NhY2hlZEhUTUxDb2xsZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0NhY2hlZEhUTUxDb2xsZWN0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTgxMTJhNjc4ODZmNTQw
MTQwZmVlYTdmYmVlYmIyNmM1ZWI0NjIyNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvQ2FjaGVkSFRNTENvbGxlY3Rpb24uaApAQCAtMCwwICsxLDE2NSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZm5kZWYgQ2FjaGVkSFRNTENvbGxlY3Rpb25faAorI2RlZmluZSBDYWNoZWRIVE1M
Q29sbGVjdGlvbl9oCisKKyNpbmNsdWRlICJDb2xsZWN0aW9uVHJhdmVyc2FsLmgiCisjaW5jbHVk
ZSAiSFRNTENvbGxlY3Rpb24uaCIKKyNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBIVE1MQ29sbGVjdGlvbkNsYXNzLCBD
b2xsZWN0aW9uVHJhdmVyc2FsVHlwZSB0cmF2ZXJzYWxUeXBlPgorY2xhc3MgQ2FjaGVkSFRNTENv
bGxlY3Rpb24gOiBwdWJsaWMgSFRNTENvbGxlY3Rpb24geworcHVibGljOgorICAgIHVzaW5nIFRy
YXZlcnNhbCA9IENvbGxlY3Rpb25UcmF2ZXJzYWw8dHJhdmVyc2FsVHlwZT47CisgICAgdXNpbmcg
SXRlcmF0b3JUeXBlID0gdHlwZW5hbWUgVHJhdmVyc2FsOjpJdGVyYXRvclR5cGU7CisKKyAgICBD
YWNoZWRIVE1MQ29sbGVjdGlvbihDb250YWluZXJOb2RlJiBiYXNlLCBDb2xsZWN0aW9uVHlwZSk7
CisKKyAgICB2aXJ0dWFsIH5DYWNoZWRIVE1MQ29sbGVjdGlvbigpOworCisgICAgdmlydHVhbCB1
bnNpZ25lZCBsZW5ndGgoKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiBtX2luZGV4Q2Fj
aGUubm9kZUNvdW50KGNvbGxlY3Rpb24oKSk7IH0KKyAgICB2aXJ0dWFsIEVsZW1lbnQqIGl0ZW0o
dW5zaWduZWQgb2Zmc2V0KSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiBtX2luZGV4Q2Fj
aGUubm9kZUF0KGNvbGxlY3Rpb24oKSwgb2Zmc2V0KTsgfQorICAgIHZpcnR1YWwgRWxlbWVudCog
bmFtZWRJdGVtKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkgY29uc3Qgb3ZlcnJpZGU7CisgICAg
dmlydHVhbCBzaXplX3QgbWVtb3J5Q29zdCgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJu
IG1faW5kZXhDYWNoZS5tZW1vcnlDb3N0KCkgKyBIVE1MQ29sbGVjdGlvbjo6bWVtb3J5Q29zdCgp
OyB9CisKKyAgICAvLyBGb3IgQ29sbGVjdGlvbkluZGV4Q2FjaGU7IGRvIG5vdCB1c2UgZWxzZXdo
ZXJlLgorICAgIEl0ZXJhdG9yVHlwZSBjb2xsZWN0aW9uQmVnaW4oKSBjb25zdCB7IHJldHVybiBU
cmF2ZXJzYWw6OmJlZ2luKGNvbGxlY3Rpb24oKSwgcm9vdE5vZGUoKSk7IH0KKyAgICBJdGVyYXRv
clR5cGUgY29sbGVjdGlvbkxhc3QoKSBjb25zdCB7IHJldHVybiBUcmF2ZXJzYWw6Omxhc3QoY29s
bGVjdGlvbigpLCByb290Tm9kZSgpKTsgfQorICAgIEl0ZXJhdG9yVHlwZSBjb2xsZWN0aW9uRW5k
KCkgY29uc3QgeyByZXR1cm4gVHJhdmVyc2FsOjplbmQocm9vdE5vZGUoKSk7IH0KKyAgICB2b2lk
IGNvbGxlY3Rpb25UcmF2ZXJzZUZvcndhcmQoSXRlcmF0b3JUeXBlJiBjdXJyZW50LCB1bnNpZ25l
ZCBjb3VudCwgdW5zaWduZWQmIHRyYXZlcnNlZENvdW50KSBjb25zdCB7IFRyYXZlcnNhbDo6dHJh
dmVyc2VGb3J3YXJkKGNvbGxlY3Rpb24oKSwgY3VycmVudCwgY291bnQsIHRyYXZlcnNlZENvdW50
KTsgfQorICAgIHZvaWQgY29sbGVjdGlvblRyYXZlcnNlQmFja3dhcmQoSXRlcmF0b3JUeXBlJiBj
dXJyZW50LCB1bnNpZ25lZCBjb3VudCkgY29uc3QgeyBUcmF2ZXJzYWw6OnRyYXZlcnNlQmFja3dh
cmQoY29sbGVjdGlvbigpLCBjdXJyZW50LCBjb3VudCk7IH0KKyAgICBib29sIGNvbGxlY3Rpb25D
YW5UcmF2ZXJzZUJhY2t3YXJkKCkgY29uc3QgeyByZXR1cm4gdHJhdmVyc2FsVHlwZSAhPSBDb2xs
ZWN0aW9uVHJhdmVyc2FsVHlwZTo6Q3VzdG9tRm9yd2FyZE9ubHk7IH0KKyAgICB2b2lkIHdpbGxW
YWxpZGF0ZUluZGV4Q2FjaGUoKSBjb25zdDsKKworICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRl
Q2FjaGUoRG9jdW1lbnQmKSBvdmVycmlkZTsKKworICAgIGJvb2wgZWxlbWVudE1hdGNoZXMoRWxl
bWVudCYpIGNvbnN0OworCitwcml2YXRlOgorICAgIEhUTUxDb2xsZWN0aW9uQ2xhc3MmIGNvbGxl
Y3Rpb24oKSB7IHJldHVybiBzdGF0aWNfY2FzdDxIVE1MQ29sbGVjdGlvbkNsYXNzJj4oKnRoaXMp
OyB9CisgICAgY29uc3QgSFRNTENvbGxlY3Rpb25DbGFzcyYgY29sbGVjdGlvbigpIGNvbnN0IHsg
cmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEhUTUxDb2xsZWN0aW9uQ2xhc3MmPigqdGhpcyk7IH0K
KworICAgIG11dGFibGUgQ29sbGVjdGlvbkluZGV4Q2FjaGU8SFRNTENvbGxlY3Rpb25DbGFzcywg
SXRlcmF0b3JUeXBlPiBtX2luZGV4Q2FjaGU7Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgSFRN
TENvbGxlY3Rpb25DbGFzcywgQ29sbGVjdGlvblRyYXZlcnNhbFR5cGUgdHJhdmVyc2FsVHlwZT4K
K0NhY2hlZEhUTUxDb2xsZWN0aW9uPEhUTUxDb2xsZWN0aW9uQ2xhc3MsIHRyYXZlcnNhbFR5cGU+
OjpDYWNoZWRIVE1MQ29sbGVjdGlvbihDb250YWluZXJOb2RlJiBiYXNlLCBDb2xsZWN0aW9uVHlw
ZSBjb2xsZWN0aW9uVHlwZSkKKyAgICA6IEhUTUxDb2xsZWN0aW9uKGJhc2UsIGNvbGxlY3Rpb25U
eXBlKQorICAgICwgbV9pbmRleENhY2hlKGNvbGxlY3Rpb24oKSkKK3sgfQorCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgSFRNTENvbGxlY3Rpb25DbGFzcywgQ29sbGVjdGlvblRyYXZlcnNhbFR5cGUgdHJh
dmVyc2FsVHlwZT4KK0NhY2hlZEhUTUxDb2xsZWN0aW9uPEhUTUxDb2xsZWN0aW9uQ2xhc3MsIHRy
YXZlcnNhbFR5cGU+Ojp+Q2FjaGVkSFRNTENvbGxlY3Rpb24oKQoreworICAgIGlmIChtX2luZGV4
Q2FjaGUuaGFzVmFsaWRDYWNoZShjb2xsZWN0aW9uKCkpKQorICAgICAgICBkb2N1bWVudCgpLnVu
cmVnaXN0ZXJDb2xsZWN0aW9uKCp0aGlzKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIEhUTUxD
b2xsZWN0aW9uQ2xhc3MsIENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlIHRyYXZlcnNhbFR5cGU+Cit2
b2lkIENhY2hlZEhUTUxDb2xsZWN0aW9uPEhUTUxDb2xsZWN0aW9uQ2xhc3MsIHRyYXZlcnNhbFR5
cGU+Ojp3aWxsVmFsaWRhdGVJbmRleENhY2hlKCkgY29uc3QKK3sKKyAgICBkb2N1bWVudCgpLnJl
Z2lzdGVyQ29sbGVjdGlvbihjb25zdF9jYXN0PENhY2hlZEhUTUxDb2xsZWN0aW9uPEhUTUxDb2xs
ZWN0aW9uQ2xhc3MsIHRyYXZlcnNhbFR5cGU+Jj4oKnRoaXMpKTsKK30KKwordGVtcGxhdGUgPHR5
cGVuYW1lIEhUTUxDb2xsZWN0aW9uQ2xhc3MsIENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlIHRyYXZl
cnNhbFR5cGU+Cit2b2lkIENhY2hlZEhUTUxDb2xsZWN0aW9uPEhUTUxDb2xsZWN0aW9uQ2xhc3Ms
IHRyYXZlcnNhbFR5cGU+OjppbnZhbGlkYXRlQ2FjaGUoRG9jdW1lbnQmIGRvY3VtZW50KQorewor
ICAgIEhUTUxDb2xsZWN0aW9uOjppbnZhbGlkYXRlQ2FjaGUoZG9jdW1lbnQpOworICAgIGlmICht
X2luZGV4Q2FjaGUuaGFzVmFsaWRDYWNoZShjb2xsZWN0aW9uKCkpKSB7CisgICAgICAgIGRvY3Vt
ZW50LnVucmVnaXN0ZXJDb2xsZWN0aW9uKCp0aGlzKTsKKyAgICAgICAgbV9pbmRleENhY2hlLmlu
dmFsaWRhdGUoY29sbGVjdGlvbigpKTsKKyAgICB9Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBI
VE1MQ29sbGVjdGlvbkNsYXNzLCBDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZSB0cmF2ZXJzYWxUeXBl
PgorYm9vbCBDYWNoZWRIVE1MQ29sbGVjdGlvbjxIVE1MQ29sbGVjdGlvbkNsYXNzLCB0cmF2ZXJz
YWxUeXBlPjo6ZWxlbWVudE1hdGNoZXMoRWxlbWVudCYpIGNvbnN0Cit7CisgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitzdGF0aWMgaW5saW5lIGJvb2wg
bmFtZVNob3VsZEJlVmlzaWJsZUluRG9jdW1lbnRBbGwoSFRNTEVsZW1lbnQmIGVsZW1lbnQpCit7
CisgICAgLy8gVGhlIGRvY3VtZW50LmFsbCBjb2xsZWN0aW9uIHJldHVybnMgb25seSBjZXJ0YWlu
IHR5cGVzIG9mIGVsZW1lbnRzIGJ5IG5hbWUsCisgICAgLy8gYWx0aG91Z2ggaXQgcmV0dXJucyBh
bnkgdHlwZSBvZiBlbGVtZW50IGJ5IGlkLgorICAgIHJldHVybiBlbGVtZW50Lmhhc1RhZ05hbWUo
SFRNTE5hbWVzOjphcHBsZXRUYWcpCisgICAgICAgIHx8IGVsZW1lbnQuaGFzVGFnTmFtZShIVE1M
TmFtZXM6OmVtYmVkVGFnKQorICAgICAgICB8fCBlbGVtZW50Lmhhc1RhZ05hbWUoSFRNTE5hbWVz
Ojpmb3JtVGFnKQorICAgICAgICB8fCBlbGVtZW50Lmhhc1RhZ05hbWUoSFRNTE5hbWVzOjppbWdU
YWcpCisgICAgICAgIHx8IGVsZW1lbnQuaGFzVGFnTmFtZShIVE1MTmFtZXM6OmlucHV0VGFnKQor
ICAgICAgICB8fCBlbGVtZW50Lmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpvYmplY3RUYWcpCisgICAg
ICAgIHx8IGVsZW1lbnQuaGFzVGFnTmFtZShIVE1MTmFtZXM6OnNlbGVjdFRhZyk7Cit9CisKK3N0
YXRpYyBpbmxpbmUgYm9vbCBuYW1lU2hvdWxkQmVWaXNpYmxlSW5Eb2N1bWVudEFsbChFbGVtZW50
JiBlbGVtZW50KQoreworICAgIHJldHVybiBpczxIVE1MRWxlbWVudD4oZWxlbWVudCkgJiYgbmFt
ZVNob3VsZEJlVmlzaWJsZUluRG9jdW1lbnRBbGwoZG93bmNhc3Q8SFRNTEVsZW1lbnQ+KGVsZW1l
bnQpKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIEhUTUxDb2xsZWN0aW9uQ2xhc3MsIENvbGxl
Y3Rpb25UcmF2ZXJzYWxUeXBlIHRyYXZlcnNhbFR5cGU+CitFbGVtZW50KiBDYWNoZWRIVE1MQ29s
bGVjdGlvbjxIVE1MQ29sbGVjdGlvbkNsYXNzLCB0cmF2ZXJzYWxUeXBlPjo6bmFtZWRJdGVtKGNv
bnN0IEF0b21pY1N0cmluZyYgbmFtZSkgY29uc3QKK3sKKyAgICAvLyBodHRwOi8vbXNkbi5taWNy
b3NvZnQuY29tL3dvcmtzaG9wL2F1dGhvci9kaHRtbC9yZWZlcmVuY2UvbWV0aG9kcy9uYW1lZGl0
ZW0uYXNwCisgICAgLy8gVGhpcyBtZXRob2QgZmlyc3Qgc2VhcmNoZXMgZm9yIGFuIG9iamVjdCB3
aXRoIGEgbWF0Y2hpbmcgaWQKKyAgICAvLyBhdHRyaWJ1dGUuIElmIGEgbWF0Y2ggaXMgbm90IGZv
dW5kLCB0aGUgbWV0aG9kIHRoZW4gc2VhcmNoZXMgZm9yIGFuCisgICAgLy8gb2JqZWN0IHdpdGgg
YSBtYXRjaGluZyBuYW1lIGF0dHJpYnV0ZSwgYnV0IG9ubHkgb24gdGhvc2UgZWxlbWVudHMKKyAg
ICAvLyB0aGF0IGFyZSBhbGxvd2VkIGEgbmFtZSBhdHRyaWJ1dGUuCisKKyAgICBpZiAobmFtZS5p
c0VtcHR5KCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgQ29udGFpbmVyTm9kZSYg
cm9vdCA9IHJvb3ROb2RlKCk7CisgICAgaWYgKHRyYXZlcnNhbFR5cGUgIT0gQ29sbGVjdGlvblRy
YXZlcnNhbFR5cGU6OkN1c3RvbUZvcndhcmRPbmx5ICYmIHJvb3QuaXNJblRyZWVTY29wZSgpKSB7
CisgICAgICAgIEVsZW1lbnQqIGNhbmRpZGF0ZSA9IG51bGxwdHI7CisKKyAgICAgICAgVHJlZVNj
b3BlJiB0cmVlU2NvcGUgPSByb290LnRyZWVTY29wZSgpOworICAgICAgICBpZiAodHJlZVNjb3Bl
Lmhhc0VsZW1lbnRXaXRoSWQoKm5hbWUuaW1wbCgpKSkgeworICAgICAgICAgICAgaWYgKCF0cmVl
U2NvcGUuY29udGFpbnNNdWx0aXBsZUVsZW1lbnRzV2l0aElkKG5hbWUpKQorICAgICAgICAgICAg
ICAgIGNhbmRpZGF0ZSA9IHRyZWVTY29wZS5nZXRFbGVtZW50QnlJZChuYW1lKTsKKyAgICAgICAg
fSBlbHNlIGlmICh0cmVlU2NvcGUuaGFzRWxlbWVudFdpdGhOYW1lKCpuYW1lLmltcGwoKSkpIHsK
KyAgICAgICAgICAgIGlmICghdHJlZVNjb3BlLmNvbnRhaW5zTXVsdGlwbGVFbGVtZW50c1dpdGhO
YW1lKG5hbWUpKSB7CisgICAgICAgICAgICAgICAgY2FuZGlkYXRlID0gdHJlZVNjb3BlLmdldEVs
ZW1lbnRCeU5hbWUobmFtZSk7CisgICAgICAgICAgICAgICAgaWYgKGNhbmRpZGF0ZSAmJiB0eXBl
KCkgPT0gRG9jQWxsICYmICFuYW1lU2hvdWxkQmVWaXNpYmxlSW5Eb2N1bWVudEFsbCgqY2FuZGlk
YXRlKSkKKyAgICAgICAgICAgICAgICAgICAgY2FuZGlkYXRlID0gbnVsbHB0cjsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAg
ICAgICBpZiAoY2FuZGlkYXRlICYmIGNvbGxlY3Rpb24oKS5lbGVtZW50TWF0Y2hlcygqY2FuZGlk
YXRlKSkgeworICAgICAgICAgICAgaWYgKHRyYXZlcnNhbFR5cGUgPT0gQ29sbGVjdGlvblRyYXZl
cnNhbFR5cGU6OkNoaWxkcmVuT25seSA/IGNhbmRpZGF0ZS0+cGFyZW50Tm9kZSgpID09ICZyb290
IDogY2FuZGlkYXRlLT5pc0Rlc2NlbmRhbnRPZigmcm9vdCkpCisgICAgICAgICAgICAgICAgcmV0
dXJuIGNhbmRpZGF0ZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBIVE1MQ29sbGVj
dGlvbjo6bmFtZWRJdGVtKG5hbWUpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAvLyBDYWNoZWRIVE1MQ29sbGVjdGlvbl9oCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvQ29sbGVjdGlvblRyYXZlcnNhbC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Db2xs
ZWN0aW9uVHJhdmVyc2FsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzk5OTZmMTM5YzQxMmEzZjc3NjI5Yzk1ZjE2
ZWYwZjVkNTY0ZmZjYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ29s
bGVjdGlvblRyYXZlcnNhbC5oCkBAIC0wLDAgKzEsMjM2IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRl
ZiBDb2xsZWN0aW9uVHJhdmVyc2FsX2gKKyNkZWZpbmUgQ29sbGVjdGlvblRyYXZlcnNhbF9oCisK
KyNpbmNsdWRlICJDb2xsZWN0aW9uVHlwZS5oIgorI2luY2x1ZGUgIkVsZW1lbnRDaGlsZEl0ZXJh
dG9yLmgiCisjaW5jbHVkZSAiRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvci5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK3RlbXBsYXRlIDxDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZSB0cmF2ZXJz
YWxUeXBlPgorc3RydWN0IENvbGxlY3Rpb25UcmF2ZXJzYWwgeyB9OworCit0ZW1wbGF0ZSA8Pgor
c3RydWN0IENvbGxlY3Rpb25UcmF2ZXJzYWw8Q29sbGVjdGlvblRyYXZlcnNhbFR5cGU6OkRlc2Nl
bmRhbnRzPiB7CisgICAgdXNpbmcgSXRlcmF0b3JUeXBlID0gRWxlbWVudERlc2NlbmRhbnRJdGVy
YXRvcjsKKworICAgIHN0YXRpYyBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yIGVuZChDb250YWlu
ZXJOb2RlJikgeyByZXR1cm4gRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcigpOyB9CisKKyAgICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgQ29sbGVjdGlvbkNsYXNzPgorICAgIHN0YXRpYyBFbGVtZW50RGVz
Y2VuZGFudEl0ZXJhdG9yIGJlZ2luKGNvbnN0IENvbGxlY3Rpb25DbGFzcyYsIENvbnRhaW5lck5v
ZGUmIHJvb3ROb2RlKTsKKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDb2xsZWN0aW9uQ2xhc3M+
CisgICAgc3RhdGljIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IgbGFzdChjb25zdCBDb2xsZWN0
aW9uQ2xhc3MmLCBDb250YWluZXJOb2RlJiByb290Tm9kZSk7CisKKyAgICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgQ29sbGVjdGlvbkNsYXNzPgorICAgIHN0YXRpYyB2b2lkIHRyYXZlcnNlRm9yd2FyZChj
b25zdCBDb2xsZWN0aW9uQ2xhc3MmLCBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yJiBjdXJyZW50
LCB1bnNpZ25lZCBjb3VudCwgdW5zaWduZWQmIHRyYXZlcnNlZENvdW50KTsKKworICAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBDb2xsZWN0aW9uQ2xhc3M+CisgICAgc3RhdGljIHZvaWQgdHJhdmVyc2VC
YWNrd2FyZChjb25zdCBDb2xsZWN0aW9uQ2xhc3MmLCBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9y
JiBjdXJyZW50LCB1bnNpZ25lZCBjb3VudCk7Cit9OworCit0ZW1wbGF0ZSA8Pgorc3RydWN0IENv
bGxlY3Rpb25UcmF2ZXJzYWw8Q29sbGVjdGlvblRyYXZlcnNhbFR5cGU6OkNoaWxkcmVuT25seT4g
eworICAgIHVzaW5nIEl0ZXJhdG9yVHlwZSA9IEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnQ+
OworCisgICAgc3RhdGljIEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnQ+IGVuZChDb250YWlu
ZXJOb2RlJiByb290Tm9kZSkgeyByZXR1cm4gRWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVudD4o
cm9vdE5vZGUpOyB9CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ29sbGVjdGlvbkNsYXNzPgor
ICAgIHN0YXRpYyBFbGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50PiBiZWdpbihjb25zdCBDb2xs
ZWN0aW9uQ2xhc3MmLCBDb250YWluZXJOb2RlJiByb290Tm9kZSk7CisKKyAgICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgQ29sbGVjdGlvbkNsYXNzPgorICAgIHN0YXRpYyBFbGVtZW50Q2hpbGRJdGVyYXRv
cjxFbGVtZW50PiBsYXN0KGNvbnN0IENvbGxlY3Rpb25DbGFzcyYsIENvbnRhaW5lck5vZGUmIHJv
b3ROb2RlKTsKKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDb2xsZWN0aW9uQ2xhc3M+CisgICAg
c3RhdGljIHZvaWQgdHJhdmVyc2VGb3J3YXJkKGNvbnN0IENvbGxlY3Rpb25DbGFzcyYsIEVsZW1l
bnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnQ+JiBjdXJyZW50LCB1bnNpZ25lZCBjb3VudCwgdW5zaWdu
ZWQmIHRyYXZlcnNlZENvdW50KTsKKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDb2xsZWN0aW9u
Q2xhc3M+CisgICAgc3RhdGljIHZvaWQgdHJhdmVyc2VCYWNrd2FyZChjb25zdCBDb2xsZWN0aW9u
Q2xhc3MmLCBFbGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50PiYgY3VycmVudCwgdW5zaWduZWQg
Y291bnQpOworfTsKKwordGVtcGxhdGUgPD4KK3N0cnVjdCBDb2xsZWN0aW9uVHJhdmVyc2FsPENv
bGxlY3Rpb25UcmF2ZXJzYWxUeXBlOjpDdXN0b21Gb3J3YXJkT25seT4geworICAgIHVzaW5nIEl0
ZXJhdG9yVHlwZSA9IEVsZW1lbnQqOworCisgICAgc3RhdGljIEVsZW1lbnQqIGVuZChDb250YWlu
ZXJOb2RlJikgeyByZXR1cm4gbnVsbHB0cjsgfQorCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIENv
bGxlY3Rpb25DbGFzcz4KKyAgICBzdGF0aWMgRWxlbWVudCogYmVnaW4oY29uc3QgQ29sbGVjdGlv
bkNsYXNzJiwgQ29udGFpbmVyTm9kZSYpOworCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIENvbGxl
Y3Rpb25DbGFzcz4KKyAgICBzdGF0aWMgRWxlbWVudCogbGFzdChjb25zdCBDb2xsZWN0aW9uQ2xh
c3MmLCBDb250YWluZXJOb2RlJik7CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ29sbGVjdGlv
bkNsYXNzPgorICAgIHN0YXRpYyB2b2lkIHRyYXZlcnNlRm9yd2FyZChjb25zdCBDb2xsZWN0aW9u
Q2xhc3MmLCBFbGVtZW50KiYgY3VycmVudCwgdW5zaWduZWQgY291bnQsIHVuc2lnbmVkJiB0cmF2
ZXJzZWRDb3VudCk7CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ29sbGVjdGlvbkNsYXNzPgor
ICAgIHN0YXRpYyB2b2lkIHRyYXZlcnNlQmFja3dhcmQoY29uc3QgQ29sbGVjdGlvbkNsYXNzJiwg
RWxlbWVudComLCB1bnNpZ25lZCBjb3VudCk7Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ29s
bGVjdGlvbkNsYXNzPgoraW5saW5lIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IgQ29sbGVjdGlv
blRyYXZlcnNhbDxDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6RGVzY2VuZGFudHM+OjpiZWdpbihj
b25zdCBDb2xsZWN0aW9uQ2xhc3MmIGNvbGxlY3Rpb24sIENvbnRhaW5lck5vZGUmIHJvb3ROb2Rl
KQoreworICAgIGF1dG8gZGVzY2VuZGFudHMgPSBlbGVtZW50RGVzY2VuZGFudHMocm9vdE5vZGUp
OworICAgIGF1dG8gZW5kID0gZGVzY2VuZGFudHMuZW5kKCk7CisgICAgZm9yIChhdXRvIGl0ID0g
ZGVzY2VuZGFudHMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgIGlmIChjb2xs
ZWN0aW9uLmVsZW1lbnRNYXRjaGVzKCppdCkpCisgICAgICAgICAgICByZXR1cm4gaXQ7CisgICAg
fQorICAgIHJldHVybiBlbmQ7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBDb2xsZWN0aW9uQ2xh
c3M+CitpbmxpbmUgRWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVudD4gQ29sbGVjdGlvblRyYXZl
cnNhbDxDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6Q2hpbGRyZW5Pbmx5Pjo6YmVnaW4oY29uc3Qg
Q29sbGVjdGlvbkNsYXNzJiBjb2xsZWN0aW9uLCBDb250YWluZXJOb2RlJiByb290Tm9kZSkKK3sK
KyAgICBhdXRvIGNoaWxkcmVuID0gY2hpbGRyZW5PZlR5cGU8RWxlbWVudD4ocm9vdE5vZGUpOwor
ICAgIGF1dG8gZW5kID0gY2hpbGRyZW4uZW5kKCk7CisgICAgZm9yIChhdXRvIGl0ID0gY2hpbGRy
ZW4uYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgIGlmIChjb2xsZWN0aW9uLmVs
ZW1lbnRNYXRjaGVzKCppdCkpCisgICAgICAgICAgICByZXR1cm4gaXQ7CisgICAgfQorICAgIHJl
dHVybiBlbmQ7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBDb2xsZWN0aW9uQ2xhc3M+Citpbmxp
bmUgRWxlbWVudCogQ29sbGVjdGlvblRyYXZlcnNhbDxDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6
Q3VzdG9tRm9yd2FyZE9ubHk+OjpiZWdpbihjb25zdCBDb2xsZWN0aW9uQ2xhc3MmIGNvbGxlY3Rp
b24sIENvbnRhaW5lck5vZGUmKQoreworICAgIHJldHVybiBjb2xsZWN0aW9uLmN1c3RvbUVsZW1l
bnRBZnRlcihudWxscHRyKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIENvbGxlY3Rpb25DbGFz
cz4KK2lubGluZSBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yIENvbGxlY3Rpb25UcmF2ZXJzYWw8
Q29sbGVjdGlvblRyYXZlcnNhbFR5cGU6OkRlc2NlbmRhbnRzPjo6bGFzdChjb25zdCBDb2xsZWN0
aW9uQ2xhc3MmIGNvbGxlY3Rpb24sIENvbnRhaW5lck5vZGUmIHJvb3ROb2RlKQoreworICAgIGF1
dG8gZGVzY2VuZGFudHMgPSBlbGVtZW50RGVzY2VuZGFudHMocm9vdE5vZGUpOworICAgIGF1dG8g
ZW5kID0gZGVzY2VuZGFudHMuZW5kKCk7CisgICAgZm9yIChhdXRvIGl0ID0gZGVzY2VuZGFudHMu
bGFzdCgpOyBpdCAhPSBlbmQ7IC0taXQpIHsKKyAgICAgICAgaWYgKGNvbGxlY3Rpb24uZWxlbWVu
dE1hdGNoZXMoKml0KSkKKyAgICAgICAgICAgIHJldHVybiBpdDsKKyAgICB9CisgICAgcmV0dXJu
IGVuZDsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIENvbGxlY3Rpb25DbGFzcz4KK2lubGluZSBF
bGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50PiBDb2xsZWN0aW9uVHJhdmVyc2FsPENvbGxlY3Rp
b25UcmF2ZXJzYWxUeXBlOjpDaGlsZHJlbk9ubHk+OjpsYXN0KGNvbnN0IENvbGxlY3Rpb25DbGFz
cyYgY29sbGVjdGlvbiwgQ29udGFpbmVyTm9kZSYgcm9vdE5vZGUpCit7CisgICAgYXV0byBjaGls
ZHJlbiA9IGNoaWxkcmVuT2ZUeXBlPEVsZW1lbnQ+KHJvb3ROb2RlKTsKKyAgICBhdXRvIGVuZCA9
IGNoaWxkcmVuLmVuZCgpOworICAgIEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnQ+IGxhc3Qo
cm9vdE5vZGUsIGNoaWxkcmVuLmxhc3QoKSk7CisgICAgZm9yIChhdXRvIGl0ID0gbGFzdDsgaXQg
IT0gZW5kOyAtLWl0KSB7CisgICAgICAgIGlmIChjb2xsZWN0aW9uLmVsZW1lbnRNYXRjaGVzKCpp
dCkpCisgICAgICAgICAgICByZXR1cm4gaXQ7CisgICAgfQorICAgIHJldHVybiBlbmQ7Cit9CisK
K3RlbXBsYXRlIDx0eXBlbmFtZSBDb2xsZWN0aW9uQ2xhc3M+CitpbmxpbmUgRWxlbWVudCogQ29s
bGVjdGlvblRyYXZlcnNhbDxDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6Q3VzdG9tRm9yd2FyZE9u
bHk+OjpsYXN0KGNvbnN0IENvbGxlY3Rpb25DbGFzcyYsIENvbnRhaW5lck5vZGUmKQoreworICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgQ29sbGVjdGlvbkNsYXNzPgoraW5saW5lIHZvaWQgQ29sbGVjdGlvblRyYXZl
cnNhbDxDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6RGVzY2VuZGFudHM+Ojp0cmF2ZXJzZUZvcndh
cmQoY29uc3QgQ29sbGVjdGlvbkNsYXNzJiBjb2xsZWN0aW9uLCBFbGVtZW50RGVzY2VuZGFudEl0
ZXJhdG9yJiBjdXJyZW50LCB1bnNpZ25lZCBjb3VudCwgdW5zaWduZWQmIHRyYXZlcnNlZENvdW50
KQoreworICAgIEFTU0VSVChjb2xsZWN0aW9uLmVsZW1lbnRNYXRjaGVzKCpjdXJyZW50KSk7Cisg
ICAgYXV0byBlbmQgPSBjb2xsZWN0aW9uLmNvbGxlY3Rpb25FbmQoKTsKKyAgICBmb3IgKHRyYXZl
cnNlZENvdW50ID0gMDsgdHJhdmVyc2VkQ291bnQgPCBjb3VudDsgKyt0cmF2ZXJzZWRDb3VudCkg
eworICAgICAgICBkbyB7CisgICAgICAgICAgICArK2N1cnJlbnQ7CisgICAgICAgICAgICBpZiAo
Y3VycmVudCA9PSBlbmQpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9IHdoaWxl
ICghY29sbGVjdGlvbi5lbGVtZW50TWF0Y2hlcygqY3VycmVudCkpOworICAgIH0KK30KKwordGVt
cGxhdGUgPHR5cGVuYW1lIENvbGxlY3Rpb25DbGFzcz4KK2lubGluZSB2b2lkIENvbGxlY3Rpb25U
cmF2ZXJzYWw8Q29sbGVjdGlvblRyYXZlcnNhbFR5cGU6OkNoaWxkcmVuT25seT46OnRyYXZlcnNl
Rm9yd2FyZChjb25zdCBDb2xsZWN0aW9uQ2xhc3MmIGNvbGxlY3Rpb24sIEVsZW1lbnRDaGlsZEl0
ZXJhdG9yPEVsZW1lbnQ+JiBjdXJyZW50LCB1bnNpZ25lZCBjb3VudCwgdW5zaWduZWQmIHRyYXZl
cnNlZENvdW50KQoreworICAgIEFTU0VSVChjb2xsZWN0aW9uLmVsZW1lbnRNYXRjaGVzKCpjdXJy
ZW50KSk7CisgICAgYXV0byBlbmQgPSBjb2xsZWN0aW9uLmNvbGxlY3Rpb25FbmQoKTsKKyAgICBm
b3IgKHRyYXZlcnNlZENvdW50ID0gMDsgdHJhdmVyc2VkQ291bnQgPCBjb3VudDsgKyt0cmF2ZXJz
ZWRDb3VudCkgeworICAgICAgICBkbyB7CisgICAgICAgICAgICArK2N1cnJlbnQ7CisgICAgICAg
ICAgICBpZiAoY3VycmVudCA9PSBlbmQpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9IHdoaWxlICghY29sbGVjdGlvbi5lbGVtZW50TWF0Y2hlcygqY3VycmVudCkpOworICAgIH0K
K30KKwordGVtcGxhdGUgPHR5cGVuYW1lIENvbGxlY3Rpb25DbGFzcz4KK2lubGluZSB2b2lkIENv
bGxlY3Rpb25UcmF2ZXJzYWw8Q29sbGVjdGlvblRyYXZlcnNhbFR5cGU6OkN1c3RvbUZvcndhcmRP
bmx5Pjo6dHJhdmVyc2VGb3J3YXJkKGNvbnN0IENvbGxlY3Rpb25DbGFzcyYgY29sbGVjdGlvbiwg
RWxlbWVudComIGN1cnJlbnQsIHVuc2lnbmVkIGNvdW50LCB1bnNpZ25lZCYgdHJhdmVyc2VkQ291
bnQpCit7CisgICAgRWxlbWVudCogZWxlbWVudCA9IGN1cnJlbnQ7CisgICAgZm9yICh0cmF2ZXJz
ZWRDb3VudCA9IDA7IHRyYXZlcnNlZENvdW50IDwgY291bnQ7ICsrdHJhdmVyc2VkQ291bnQpIHsK
KyAgICAgICAgZWxlbWVudCA9IGNvbGxlY3Rpb24uY3VzdG9tRWxlbWVudEFmdGVyKGVsZW1lbnQp
OworICAgICAgICBpZiAoIWVsZW1lbnQpIHsKKyAgICAgICAgICAgIGN1cnJlbnQgPSBudWxscHRy
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorICAgIGN1cnJlbnQgPSBl
bGVtZW50OworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ29sbGVjdGlvbkNsYXNzPgoraW5saW5l
IHZvaWQgQ29sbGVjdGlvblRyYXZlcnNhbDxDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6RGVzY2Vu
ZGFudHM+Ojp0cmF2ZXJzZUJhY2t3YXJkKGNvbnN0IENvbGxlY3Rpb25DbGFzcyYgY29sbGVjdGlv
biwgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciYgY3VycmVudCwgdW5zaWduZWQgY291bnQpCit7
CisgICAgQVNTRVJUKGNvbGxlY3Rpb24uZWxlbWVudE1hdGNoZXMoKmN1cnJlbnQpKTsKKyAgICBh
dXRvIGVuZCA9IGNvbGxlY3Rpb24uY29sbGVjdGlvbkVuZCgpOworICAgIGZvciAoOyBjb3VudDsg
LS1jb3VudCkgeworICAgICAgICBkbyB7CisgICAgICAgICAgICAtLWN1cnJlbnQ7CisgICAgICAg
ICAgICBpZiAoY3VycmVudCA9PSBlbmQpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9IHdoaWxlICghY29sbGVjdGlvbi5lbGVtZW50TWF0Y2hlcygqY3VycmVudCkpOworICAgIH0K
K30KKwordGVtcGxhdGUgPHR5cGVuYW1lIENvbGxlY3Rpb25DbGFzcz4KK2lubGluZSB2b2lkIENv
bGxlY3Rpb25UcmF2ZXJzYWw8Q29sbGVjdGlvblRyYXZlcnNhbFR5cGU6OkNoaWxkcmVuT25seT46
OnRyYXZlcnNlQmFja3dhcmQoY29uc3QgQ29sbGVjdGlvbkNsYXNzJiBjb2xsZWN0aW9uLCBFbGVt
ZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50PiYgY3VycmVudCwgdW5zaWduZWQgY291bnQpCit7Cisg
ICAgQVNTRVJUKGNvbGxlY3Rpb24uZWxlbWVudE1hdGNoZXMoKmN1cnJlbnQpKTsKKyAgICBhdXRv
IGVuZCA9IGNvbGxlY3Rpb24uY29sbGVjdGlvbkVuZCgpOworICAgIGZvciAoOyBjb3VudDsgLS1j
b3VudCkgeworICAgICAgICBkbyB7CisgICAgICAgICAgICAtLWN1cnJlbnQ7CisgICAgICAgICAg
ICBpZiAoY3VycmVudCA9PSBlbmQpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
IHdoaWxlICghY29sbGVjdGlvbi5lbGVtZW50TWF0Y2hlcygqY3VycmVudCkpOworICAgIH0KK30K
KwordGVtcGxhdGUgPHR5cGVuYW1lIENvbGxlY3Rpb25DbGFzcz4KK2lubGluZSB2b2lkIENvbGxl
Y3Rpb25UcmF2ZXJzYWw8Q29sbGVjdGlvblRyYXZlcnNhbFR5cGU6OkN1c3RvbUZvcndhcmRPbmx5
Pjo6dHJhdmVyc2VCYWNrd2FyZChjb25zdCBDb2xsZWN0aW9uQ2xhc3MmLCBFbGVtZW50KiYsIHVu
c2lnbmVkIGNvdW50KQoreworICAgIFVOVVNFRF9QQVJBTShjb3VudCk7CisgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIENv
bGxlY3Rpb25UcmF2ZXJzYWxfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9Db2xs
ZWN0aW9uVHlwZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Db2xsZWN0aW9uVHlwZS5oCmluZGV4
IDUxMzBhZjkxZGFlODY4YTcxNGY2ZTA1NTBiZmFhZGY0MDFmNjViYmMuLjFhOTIyZDBmZjkwNjA4
NGFkMTczNGIwNzBmODVhMDRjZmI4OTRiMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvQ29sbGVjdGlvblR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0NvbGxlY3Rpb25U
eXBlLmgKQEAgLTUzLDYgKzUzLDQyIEBAIGVudW0gQ29sbGVjdGlvblR5cGUgewogICAgIEZvcm1D
b250cm9scwogfTsKIAotfSAvLyBuYW1lc3BhY2UKK2VudW0gY2xhc3MgQ29sbGVjdGlvblRyYXZl
cnNhbFR5cGUgeyBEZXNjZW5kYW50cywgQ2hpbGRyZW5Pbmx5LCBDdXN0b21Gb3J3YXJkT25seSB9
OwordGVtcGxhdGU8Q29sbGVjdGlvblR5cGUgY29sbGVjdGlvblR5cGU+CitzdHJ1Y3QgQ29sbGVj
dGlvblR5cGVUcmFpdHMgeworICAgIHN0YXRpYyBjb25zdCBDb2xsZWN0aW9uVHJhdmVyc2FsVHlw
ZSB0cmF2ZXJzYWxUeXBlID0gQ29sbGVjdGlvblRyYXZlcnNhbFR5cGU6OkRlc2NlbmRhbnRzOwor
fTsKKwordGVtcGxhdGU8Pgorc3RydWN0IENvbGxlY3Rpb25UeXBlVHJhaXRzPE5vZGVDaGlsZHJl
bj4geworICAgIHN0YXRpYyBjb25zdCBDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZSB0cmF2ZXJzYWxU
eXBlID0gQ29sbGVjdGlvblRyYXZlcnNhbFR5cGU6OkNoaWxkcmVuT25seTsKK307CisKK3RlbXBs
YXRlPD4KK3N0cnVjdCBDb2xsZWN0aW9uVHlwZVRyYWl0czxUUkNlbGxzPiB7CisgICAgc3RhdGlj
IGNvbnN0IENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlIHRyYXZlcnNhbFR5cGUgPSBDb2xsZWN0aW9u
VHJhdmVyc2FsVHlwZTo6Q2hpbGRyZW5Pbmx5OworfTsKKwordGVtcGxhdGU8Pgorc3RydWN0IENv
bGxlY3Rpb25UeXBlVHJhaXRzPFRTZWN0aW9uUm93cz4geworICAgIHN0YXRpYyBjb25zdCBDb2xs
ZWN0aW9uVHJhdmVyc2FsVHlwZSB0cmF2ZXJzYWxUeXBlID0gQ29sbGVjdGlvblRyYXZlcnNhbFR5
cGU6OkNoaWxkcmVuT25seTsKK307CisKK3RlbXBsYXRlPD4KK3N0cnVjdCBDb2xsZWN0aW9uVHlw
ZVRyYWl0czxUYWJsZVRCb2RpZXM+IHsKKyAgICBzdGF0aWMgY29uc3QgQ29sbGVjdGlvblRyYXZl
cnNhbFR5cGUgdHJhdmVyc2FsVHlwZSA9IENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlOjpDaGlsZHJl
bk9ubHk7Cit9OworCit0ZW1wbGF0ZTw+CitzdHJ1Y3QgQ29sbGVjdGlvblR5cGVUcmFpdHM8VGFi
bGVSb3dzPiB7CisgICAgc3RhdGljIGNvbnN0IENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlIHRyYXZl
cnNhbFR5cGUgPSBDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6Q3VzdG9tRm9yd2FyZE9ubHk7Cit9
OworCit0ZW1wbGF0ZTw+CitzdHJ1Y3QgQ29sbGVjdGlvblR5cGVUcmFpdHM8Rm9ybUNvbnRyb2xz
PiB7CisgICAgc3RhdGljIGNvbnN0IENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlIHRyYXZlcnNhbFR5
cGUgPSBDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6Q3VzdG9tRm9yd2FyZE9ubHk7Cit9OworCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9HZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9HZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgzNGVlMTBi
YTFmOTZhNTA0ZGU3ZjllN2ZmMTczYjZkNDZjZTJkNjAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0dlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbi5jcHAKQEAgLTAsMCAr
MSw4OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJHZW5l
cmljQ2FjaGVkSFRNTENvbGxlY3Rpb24uaCIKKworI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgorI2lu
Y2x1ZGUgIkhUTUxPYmplY3RFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTE9wdGlvbkVsZW1lbnQu
aCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwor
Cit0ZW1wbGF0ZSA8Q29sbGVjdGlvblRyYXZlcnNhbFR5cGUgdHJhdmVyc2FsVHlwZT4KK2Jvb2wg
R2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uPHRyYXZlcnNhbFR5cGU+OjplbGVtZW50TWF0Y2hl
cyhFbGVtZW50JiBlbGVtZW50KSBjb25zdAoreworICAgIHN3aXRjaCAoQmFzZTo6dHlwZSgpKSB7
CisgICAgY2FzZSBOb2RlQ2hpbGRyZW46CisgICAgICAgIHJldHVybiB0cnVlOworICAgIGNhc2Ug
RG9jSW1hZ2VzOgorICAgICAgICByZXR1cm4gZWxlbWVudC5oYXNUYWdOYW1lKGltZ1RhZyk7Cisg
ICAgY2FzZSBEb2NTY3JpcHRzOgorICAgICAgICByZXR1cm4gZWxlbWVudC5oYXNUYWdOYW1lKHNj
cmlwdFRhZyk7CisgICAgY2FzZSBEb2NGb3JtczoKKyAgICAgICAgcmV0dXJuIGVsZW1lbnQuaGFz
VGFnTmFtZShmb3JtVGFnKTsKKyAgICBjYXNlIFRhYmxlVEJvZGllczoKKyAgICAgICAgcmV0dXJu
IGVsZW1lbnQuaGFzVGFnTmFtZSh0Ym9keVRhZyk7CisgICAgY2FzZSBUUkNlbGxzOgorICAgICAg
ICByZXR1cm4gZWxlbWVudC5oYXNUYWdOYW1lKHRkVGFnKSB8fCBlbGVtZW50Lmhhc1RhZ05hbWUo
dGhUYWcpOworICAgIGNhc2UgVFNlY3Rpb25Sb3dzOgorICAgICAgICByZXR1cm4gZWxlbWVudC5o
YXNUYWdOYW1lKHRyVGFnKTsKKyAgICBjYXNlIFNlbGVjdGVkT3B0aW9uczoKKyAgICAgICAgcmV0
dXJuIGlzPEhUTUxPcHRpb25FbGVtZW50PihlbGVtZW50KSAmJiBkb3duY2FzdDxIVE1MT3B0aW9u
RWxlbWVudD4oZWxlbWVudCkuc2VsZWN0ZWQoKTsKKyAgICBjYXNlIERhdGFMaXN0T3B0aW9uczoK
KyAgICAgICAgaWYgKGlzPEhUTUxPcHRpb25FbGVtZW50PihlbGVtZW50KSkgeworICAgICAgICAg
ICAgSFRNTE9wdGlvbkVsZW1lbnQmIG9wdGlvbiA9IGRvd25jYXN0PEhUTUxPcHRpb25FbGVtZW50
PihlbGVtZW50KTsKKyAgICAgICAgICAgIGlmICghb3B0aW9uLmlzRGlzYWJsZWRGb3JtQ29udHJv
bCgpICYmICFvcHRpb24udmFsdWUoKS5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGNhc2UgTWFwQXJl
YXM6CisgICAgICAgIHJldHVybiBlbGVtZW50Lmhhc1RhZ05hbWUoYXJlYVRhZyk7CisgICAgY2Fz
ZSBEb2NBcHBsZXRzOgorICAgICAgICByZXR1cm4gaXM8SFRNTEFwcGxldEVsZW1lbnQ+KGVsZW1l
bnQpIHx8IChpczxIVE1MT2JqZWN0RWxlbWVudD4oZWxlbWVudCkgJiYgZG93bmNhc3Q8SFRNTE9i
amVjdEVsZW1lbnQ+KGVsZW1lbnQpLmNvbnRhaW5zSmF2YUFwcGxldCgpKTsKKyAgICBjYXNlIERv
Y0VtYmVkczoKKyAgICAgICAgcmV0dXJuIGVsZW1lbnQuaGFzVGFnTmFtZShlbWJlZFRhZyk7Cisg
ICAgY2FzZSBEb2NMaW5rczoKKyAgICAgICAgcmV0dXJuIChlbGVtZW50Lmhhc1RhZ05hbWUoYVRh
ZykgfHwgZWxlbWVudC5oYXNUYWdOYW1lKGFyZWFUYWcpKSAmJiBlbGVtZW50LmZhc3RIYXNBdHRy
aWJ1dGUoaHJlZkF0dHIpOworICAgIGNhc2UgRG9jQW5jaG9yczoKKyAgICAgICAgcmV0dXJuIGVs
ZW1lbnQuaGFzVGFnTmFtZShhVGFnKSAmJiBlbGVtZW50LmZhc3RIYXNBdHRyaWJ1dGUobmFtZUF0
dHIpOworICAgIGNhc2UgRG9jQWxsOgorICAgIGNhc2UgRG9jdW1lbnROYW1lZEl0ZW1zOgorICAg
IGNhc2UgRm9ybUNvbnRyb2xzOgorICAgIGNhc2UgU2VsZWN0T3B0aW9uczoKKyAgICBjYXNlIFRh
YmxlUm93czoKKyAgICBjYXNlIFdpbmRvd05hbWVkSXRlbXM6CisgICAgICAgIGJyZWFrOworICAg
IH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9Cit0ZW1w
bGF0ZSBib29sIEdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbjxDb2xsZWN0aW9uVHJhdmVyc2Fs
VHlwZTo6RGVzY2VuZGFudHM+OjplbGVtZW50TWF0Y2hlcyhFbGVtZW50JikgY29uc3Q7Cit0ZW1w
bGF0ZSBib29sIEdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbjxDb2xsZWN0aW9uVHJhdmVyc2Fs
VHlwZTo6Q2hpbGRyZW5Pbmx5Pjo6ZWxlbWVudE1hdGNoZXMoRWxlbWVudCYpIGNvbnN0OwordGVt
cGxhdGUgYm9vbCBHZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb248Q29sbGVjdGlvblRyYXZlcnNh
bFR5cGU6OkN1c3RvbUZvcndhcmRPbmx5Pjo6ZWxlbWVudE1hdGNoZXMoRWxlbWVudCYpIGNvbnN0
OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0dlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9H
ZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZjQwNzU3OTA1ODJlYzI3
ODVmNzU3MWI2MmFiYTQ1YTI2YTlhODAxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9HZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb24uaApAQCAtMCwwICsxLDUzIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBHZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb25faAorI2RlZmlu
ZSBHZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb25faAorCisjaW5jbHVkZSAiQ2FjaGVkSFRNTENv
bGxlY3Rpb24uaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit0ZW1wbGF0ZSA8Q29sbGVjdGlv
blRyYXZlcnNhbFR5cGUgdHJhdmVyc2FsVHlwZT4KK2NsYXNzIEdlbmVyaWNDYWNoZWRIVE1MQ29s
bGVjdGlvbiBmaW5hbCA6IHB1YmxpYyBDYWNoZWRIVE1MQ29sbGVjdGlvbjxHZW5lcmljQ2FjaGVk
SFRNTENvbGxlY3Rpb248dHJhdmVyc2FsVHlwZT4sIHRyYXZlcnNhbFR5cGU+IHsKK3B1YmxpYzoK
KyAgICBzdGF0aWMgUmVmPEdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbj4gY3JlYXRlKENvbnRh
aW5lck5vZGUmIGJhc2UsIENvbGxlY3Rpb25UeXBlIGNvbGxlY3Rpb25UeXBlKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgR2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uKGJh
c2UsIGNvbGxlY3Rpb25UeXBlKSk7CisgICAgfQorCisgICAgYm9vbCBlbGVtZW50TWF0Y2hlcyhF
bGVtZW50JikgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgdXNpbmcgQmFzZSA9IENhY2hlZEhUTUxD
b2xsZWN0aW9uPEdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbjx0cmF2ZXJzYWxUeXBlPiwgdHJh
dmVyc2FsVHlwZT47CisgICAgR2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uKENvbnRhaW5lck5v
ZGUmIGJhc2UsIENvbGxlY3Rpb25UeXBlIGNvbGxlY3Rpb25UeXBlKQorICAgICAgICA6IEJhc2Uo
YmFzZSwgY29sbGVjdGlvblR5cGUpCisgICAgeyB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZiAvLyBHZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb25faAorCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbGxDb2xsZWN0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEFsbENvbGxlY3Rpb24uY3BwCmluZGV4IDAxNjY4NzE0ZWNiYmJkMGZl
YmQxZTUwYzRhYmQ0YjA5MTNiNDI3ZjMuLmRhYjA1MDBmYWQ4OGM2NTRhNWI5MWNiZTVkM2Q5YTc0
NjI3OThiMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFsbENvbGxlY3Rp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFsbENvbGxlY3Rpb24uY3BwCkBA
IC0zNiw3ICszNiw3IEBAIFJlZjxIVE1MQWxsQ29sbGVjdGlvbj4gSFRNTEFsbENvbGxlY3Rpb246
OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIENvbGxlY3Rpb25UCiB9CiAKIGlubGluZSBIVE1M
QWxsQ29sbGVjdGlvbjo6SFRNTEFsbENvbGxlY3Rpb24oRG9jdW1lbnQmIGRvY3VtZW50LCBDb2xs
ZWN0aW9uVHlwZSB0eXBlKQotICAgIDogSFRNTENvbGxlY3Rpb24oZG9jdW1lbnQsIHR5cGUpCisg
ICAgOiBDYWNoZWRIVE1MQ29sbGVjdGlvbjxIVE1MQWxsQ29sbGVjdGlvbiwgQ29sbGVjdGlvblR5
cGVUcmFpdHM8RG9jQWxsPjo6dHJhdmVyc2FsVHlwZT4oZG9jdW1lbnQsIHR5cGUpCiB7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFsbENvbGxlY3Rpb24uaCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFsbENvbGxlY3Rpb24uaAppbmRleCA1MTQ1MTE3NGJkMjgz
YjIwMWM4OTJlMmVhNGE1YWI5ZmI2MTViZjAxLi5iNjAxMWI0OTYyZGUwYzc3NzNjYjMxYmU5MTY2
ZDNlOThiOTA0ZGMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbGxDb2xs
ZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQWxsQ29sbGVjdGlvbi5oCkBA
IC0yNiwxNiArMjYsMTkgQEAKICNpZm5kZWYgSFRNTEFsbENvbGxlY3Rpb25faAogI2RlZmluZSBI
VE1MQWxsQ29sbGVjdGlvbl9oCiAKLSNpbmNsdWRlICJIVE1MQ29sbGVjdGlvbi5oIgorI2luY2x1
ZGUgIkNhY2hlZEhUTUxDb2xsZWN0aW9uLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xh
c3MgSFRNTEFsbENvbGxlY3Rpb24gZmluYWwgOiBwdWJsaWMgSFRNTENvbGxlY3Rpb24geworY2xh
c3MgSFRNTEFsbENvbGxlY3Rpb24gZmluYWwgOiBwdWJsaWMgQ2FjaGVkSFRNTENvbGxlY3Rpb248
SFRNTEFsbENvbGxlY3Rpb24sIENvbGxlY3Rpb25UeXBlVHJhaXRzPERvY0FsbD46OnRyYXZlcnNh
bFR5cGU+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPEhUTUxBbGxDb2xsZWN0aW9uPiBjcmVh
dGUoRG9jdW1lbnQmLCBDb2xsZWN0aW9uVHlwZSk7CiAKICAgICBFbGVtZW50KiBuYW1lZEl0ZW1X
aXRoSW5kZXgoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCB1bnNpZ25lZCBpbmRleCkgY29uc3Q7
CiAKKyAgICAvLyBGb3IgQ2FjaGVkSFRNTENvbGxlY3Rpb24uCisgICAgYm9vbCBlbGVtZW50TWF0
Y2hlcyhFbGVtZW50JikgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorCiBwcml2YXRlOgogICAgIEhU
TUxBbGxDb2xsZWN0aW9uKERvY3VtZW50JiwgQ29sbGVjdGlvblR5cGUpOwogfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5jcHAKaW5kZXggM2I0YjYyZjcyNmJjNDUwMzhjYjM5MzEx
NjA0Zjg1NzUzMGI2ODFkZi4uMzA4MTBjZmFkMjgzMjkyNDZmNGM5MTdkMmI3NzliMjAyN2Q1ZjBj
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5jcHAKQEAgLTIzLDQ4ICsyMywx
NCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkhUTUxDb2xsZWN0aW9uLmgiCiAK
LSNpbmNsdWRlICJFbGVtZW50VHJhdmVyc2FsLmgiCi0jaW5jbHVkZSAiSFRNTERvY3VtZW50Lmgi
Ci0jaW5jbHVkZSAiSFRNTE5hbWVDb2xsZWN0aW9uLmgiCisjaW5jbHVkZSAiQ2FjaGVkSFRNTENv
bGxlY3Rpb24uaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKLSNpbmNsdWRlICJIVE1MT2JqZWN0
RWxlbWVudC5oIgotI2luY2x1ZGUgIkhUTUxPcHRpb25FbGVtZW50LmgiCiAjaW5jbHVkZSAiTm9k
ZVJhcmVEYXRhLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhU
TUxOYW1lczsKIAotc3RhdGljIGJvb2wgc2hvdWxkT25seUluY2x1ZGVEaXJlY3RDaGlsZHJlbihD
b2xsZWN0aW9uVHlwZSB0eXBlKQotewotICAgIHN3aXRjaCAodHlwZSkgewotICAgIGNhc2UgRG9j
QWxsOgotICAgIGNhc2UgRG9jQW5jaG9yczoKLSAgICBjYXNlIERvY0FwcGxldHM6Ci0gICAgY2Fz
ZSBEb2NFbWJlZHM6Ci0gICAgY2FzZSBEb2NGb3JtczoKLSAgICBjYXNlIERvY0ltYWdlczoKLSAg
ICBjYXNlIERvY0xpbmtzOgotICAgIGNhc2UgRG9jU2NyaXB0czoKLSAgICBjYXNlIERvY3VtZW50
TmFtZWRJdGVtczoKLSAgICBjYXNlIE1hcEFyZWFzOgotICAgIGNhc2UgVGFibGVSb3dzOgotICAg
IGNhc2UgU2VsZWN0T3B0aW9uczoKLSAgICBjYXNlIFNlbGVjdGVkT3B0aW9uczoKLSAgICBjYXNl
IERhdGFMaXN0T3B0aW9uczoKLSAgICBjYXNlIFdpbmRvd05hbWVkSXRlbXM6Ci0gICAgY2FzZSBG
b3JtQ29udHJvbHM6Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBjYXNlIE5vZGVDaGlsZHJl
bjoKLSAgICBjYXNlIFRSQ2VsbHM6Ci0gICAgY2FzZSBUU2VjdGlvblJvd3M6Ci0gICAgY2FzZSBU
YWJsZVRCb2RpZXM6Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KIGlubGluZSBhdXRvIEhUTUxDb2xs
ZWN0aW9uOjpyb290VHlwZUZyb21Db2xsZWN0aW9uVHlwZShDb2xsZWN0aW9uVHlwZSB0eXBlKSAt
PiBSb290VHlwZQogewogICAgIHN3aXRjaCAodHlwZSkgewpAQCAtMTMxLDI2MiArOTcsMjkgQEAg
c3RhdGljIE5vZGVMaXN0SW52YWxpZGF0aW9uVHlwZSBpbnZhbGlkYXRpb25UeXBlRXhjbHVkaW5n
SWRBbmROYW1lQXR0cmlidXRlcyhDb2wKICAgICByZXR1cm4gRG9Ob3RJbnZhbGlkYXRlT25BdHRy
aWJ1dGVDaGFuZ2VzOwogfQogCi1IVE1MQ29sbGVjdGlvbjo6SFRNTENvbGxlY3Rpb24oQ29udGFp
bmVyTm9kZSYgb3duZXJOb2RlLCBDb2xsZWN0aW9uVHlwZSB0eXBlLCBFbGVtZW50VHJhdmVyc2Fs
VHlwZSB0cmF2ZXJzYWxUeXBlKQorSFRNTENvbGxlY3Rpb246OkhUTUxDb2xsZWN0aW9uKENvbnRh
aW5lck5vZGUmIG93bmVyTm9kZSwgQ29sbGVjdGlvblR5cGUgdHlwZSkKICAgICA6IG1fb3duZXJO
b2RlKG93bmVyTm9kZSkKLSAgICAsIG1faW5kZXhDYWNoZSgqdGhpcykKICAgICAsIG1fY29sbGVj
dGlvblR5cGUodHlwZSkKICAgICAsIG1faW52YWxpZGF0aW9uVHlwZShpbnZhbGlkYXRpb25UeXBl
RXhjbHVkaW5nSWRBbmROYW1lQXR0cmlidXRlcyh0eXBlKSkKICAgICAsIG1fcm9vdFR5cGUocm9v
dFR5cGVGcm9tQ29sbGVjdGlvblR5cGUodHlwZSkpCi0gICAgLCBtX3Nob3VsZE9ubHlJbmNsdWRl
RGlyZWN0Q2hpbGRyZW4oc2hvdWxkT25seUluY2x1ZGVEaXJlY3RDaGlsZHJlbih0eXBlKSkKLSAg
ICAsIG1fdXNlc0N1c3RvbUZvcndhcmRPbmx5VHJhdmVyc2FsKHRyYXZlcnNhbFR5cGUgPT0gQ3Vz
dG9tRm9yd2FyZE9ubHlUcmF2ZXJzYWwpCiB7CiAgICAgQVNTRVJUKG1fcm9vdFR5cGUgPT0gc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KHJvb3RUeXBlRnJvbUNvbGxlY3Rpb25UeXBlKHR5cGUpKSk7CiAg
ICAgQVNTRVJUKG1faW52YWxpZGF0aW9uVHlwZSA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW52
YWxpZGF0aW9uVHlwZUV4Y2x1ZGluZ0lkQW5kTmFtZUF0dHJpYnV0ZXModHlwZSkpKTsKICAgICBB
U1NFUlQobV9jb2xsZWN0aW9uVHlwZSA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odHlwZSkpOwog
fQogCi1SZWY8SFRNTENvbGxlY3Rpb24+IEhUTUxDb2xsZWN0aW9uOjpjcmVhdGUoQ29udGFpbmVy
Tm9kZSYgYmFzZSwgQ29sbGVjdGlvblR5cGUgdHlwZSkKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBIVE1MQ29sbGVjdGlvbihiYXNlLCB0eXBlKSk7Ci19Ci0KIEhUTUxDb2xsZWN0aW9uOjp+
SFRNTENvbGxlY3Rpb24oKQogewotICAgIGlmIChtX2luZGV4Q2FjaGUuaGFzVmFsaWRDYWNoZSgq
dGhpcykpCi0gICAgICAgIGRvY3VtZW50KCkudW5yZWdpc3RlckNvbGxlY3Rpb24oKnRoaXMpOwog
ICAgIGlmIChoYXNOYW1lZEVsZW1lbnRDYWNoZSgpKQogICAgICAgICBkb2N1bWVudCgpLmNvbGxl
Y3Rpb25XaWxsQ2xlYXJJZE5hbWVNYXAoKnRoaXMpOworCiAgICAgLy8gSFRNTE5hbWVDb2xsZWN0
aW9uIHJlbW92ZXMgY2FjaGUgYnkgaXRzZWxmLgogICAgIGlmICh0eXBlKCkgIT0gV2luZG93TmFt
ZWRJdGVtcyAmJiB0eXBlKCkgIT0gRG9jdW1lbnROYW1lZEl0ZW1zKQogICAgICAgICBvd25lck5v
ZGUoKS5ub2RlTGlzdHMoKS0+cmVtb3ZlQ2FjaGVkQ29sbGVjdGlvbih0aGlzKTsKIH0KIAotQ29u
dGFpbmVyTm9kZSYgSFRNTENvbGxlY3Rpb246OnJvb3ROb2RlKCkgY29uc3QKLXsKLSAgICBpZiAo
aXNSb290ZWRBdERvY3VtZW50KCkgJiYgb3duZXJOb2RlKCkuaW5Eb2N1bWVudCgpKQotICAgICAg
ICByZXR1cm4gb3duZXJOb2RlKCkuZG9jdW1lbnQoKTsKLQotICAgIHJldHVybiBvd25lck5vZGUo
KTsKLX0KLQotc3RhdGljIGlubGluZSBib29sIGlzTWF0Y2hpbmdIVE1MRWxlbWVudChjb25zdCBI
VE1MQ29sbGVjdGlvbiYgY29sbGVjdGlvbiwgSFRNTEVsZW1lbnQmIGVsZW1lbnQpCit2b2lkIEhU
TUxDb2xsZWN0aW9uOjppbnZhbGlkYXRlQ2FjaGUoRG9jdW1lbnQmIGRvY3VtZW50KQogewotICAg
IHN3aXRjaCAoY29sbGVjdGlvbi50eXBlKCkpIHsKLSAgICBjYXNlIERvY0ltYWdlczoKLSAgICAg
ICAgcmV0dXJuIGVsZW1lbnQuaGFzVGFnTmFtZShpbWdUYWcpOwotICAgIGNhc2UgRG9jU2NyaXB0
czoKLSAgICAgICAgcmV0dXJuIGVsZW1lbnQuaGFzVGFnTmFtZShzY3JpcHRUYWcpOwotICAgIGNh
c2UgRG9jRm9ybXM6Ci0gICAgICAgIHJldHVybiBlbGVtZW50Lmhhc1RhZ05hbWUoZm9ybVRhZyk7
Ci0gICAgY2FzZSBUYWJsZVRCb2RpZXM6Ci0gICAgICAgIHJldHVybiBlbGVtZW50Lmhhc1RhZ05h
bWUodGJvZHlUYWcpOwotICAgIGNhc2UgVFJDZWxsczoKLSAgICAgICAgcmV0dXJuIGVsZW1lbnQu
aGFzVGFnTmFtZSh0ZFRhZykgfHwgZWxlbWVudC5oYXNUYWdOYW1lKHRoVGFnKTsKLSAgICBjYXNl
IFRTZWN0aW9uUm93czoKLSAgICAgICAgcmV0dXJuIGVsZW1lbnQuaGFzVGFnTmFtZSh0clRhZyk7
Ci0gICAgY2FzZSBTZWxlY3RPcHRpb25zOgotICAgICAgICByZXR1cm4gZWxlbWVudC5oYXNUYWdO
YW1lKG9wdGlvblRhZyk7Ci0gICAgY2FzZSBTZWxlY3RlZE9wdGlvbnM6Ci0gICAgICAgIHJldHVy
biBpczxIVE1MT3B0aW9uRWxlbWVudD4oZWxlbWVudCkgJiYgZG93bmNhc3Q8SFRNTE9wdGlvbkVs
ZW1lbnQ+KGVsZW1lbnQpLnNlbGVjdGVkKCk7Ci0gICAgY2FzZSBEYXRhTGlzdE9wdGlvbnM6Ci0g
ICAgICAgIGlmIChpczxIVE1MT3B0aW9uRWxlbWVudD4oZWxlbWVudCkpIHsKLSAgICAgICAgICAg
IEhUTUxPcHRpb25FbGVtZW50JiBvcHRpb24gPSBkb3duY2FzdDxIVE1MT3B0aW9uRWxlbWVudD4o
ZWxlbWVudCk7Ci0gICAgICAgICAgICBpZiAoIW9wdGlvbi5pc0Rpc2FibGVkRm9ybUNvbnRyb2wo
KSAmJiAhb3B0aW9uLnZhbHVlKCkuaXNFbXB0eSgpKQotICAgICAgICAgICAgICAgIHJldHVybiB0
cnVlOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBjYXNlIE1hcEFyZWFz
OgotICAgICAgICByZXR1cm4gZWxlbWVudC5oYXNUYWdOYW1lKGFyZWFUYWcpOwotICAgIGNhc2Ug
RG9jQXBwbGV0czoKLSAgICAgICAgcmV0dXJuIGlzPEhUTUxBcHBsZXRFbGVtZW50PihlbGVtZW50
KSB8fCAoaXM8SFRNTE9iamVjdEVsZW1lbnQ+KGVsZW1lbnQpICYmIGRvd25jYXN0PEhUTUxPYmpl
Y3RFbGVtZW50PihlbGVtZW50KS5jb250YWluc0phdmFBcHBsZXQoKSk7Ci0gICAgY2FzZSBEb2NF
bWJlZHM6Ci0gICAgICAgIHJldHVybiBlbGVtZW50Lmhhc1RhZ05hbWUoZW1iZWRUYWcpOwotICAg
IGNhc2UgRG9jTGlua3M6Ci0gICAgICAgIHJldHVybiAoZWxlbWVudC5oYXNUYWdOYW1lKGFUYWcp
IHx8IGVsZW1lbnQuaGFzVGFnTmFtZShhcmVhVGFnKSkgJiYgZWxlbWVudC5mYXN0SGFzQXR0cmli
dXRlKGhyZWZBdHRyKTsKLSAgICBjYXNlIERvY0FuY2hvcnM6Ci0gICAgICAgIHJldHVybiBlbGVt
ZW50Lmhhc1RhZ05hbWUoYVRhZykgJiYgZWxlbWVudC5mYXN0SGFzQXR0cmlidXRlKG5hbWVBdHRy
KTsKLSAgICBjYXNlIERvY3VtZW50TmFtZWRJdGVtczoKLSAgICAgICAgcmV0dXJuIGRvd25jYXN0
PERvY3VtZW50TmFtZUNvbGxlY3Rpb24+KGNvbGxlY3Rpb24pLmVsZW1lbnRNYXRjaGVzKGVsZW1l
bnQpOwotICAgIGNhc2UgRG9jQWxsOgotICAgIGNhc2UgTm9kZUNoaWxkcmVuOgotICAgIGNhc2Ug
V2luZG93TmFtZWRJdGVtczoKLSAgICBjYXNlIEZvcm1Db250cm9sczoKLSAgICBjYXNlIFRhYmxl
Um93czoKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
ICAgIHJldHVybiBmYWxzZTsKLX0KLQotc3RhdGljIGlubGluZSBib29sIGlzTWF0Y2hpbmdFbGVt
ZW50KGNvbnN0IEhUTUxDb2xsZWN0aW9uJiBjb2xsZWN0aW9uLCBFbGVtZW50JiBlbGVtZW50KQot
ewotICAgIC8vIENvbGxlY3Rpb24gdHlwZXMgdGhhdCBkZWFsIHdpdGggYW55IHR5cGUgb2YgRWxl
bWVudHMsIG5vdCBqdXN0IEhUTUxFbGVtZW50cy4KLSAgICBzd2l0Y2ggKGNvbGxlY3Rpb24udHlw
ZSgpKSB7Ci0gICAgY2FzZSBEb2NBbGw6Ci0gICAgY2FzZSBOb2RlQ2hpbGRyZW46Ci0gICAgICAg
IHJldHVybiB0cnVlOwotICAgIGNhc2UgV2luZG93TmFtZWRJdGVtczoKLSAgICAgICAgcmV0dXJu
IGRvd25jYXN0PFdpbmRvd05hbWVDb2xsZWN0aW9uPihjb2xsZWN0aW9uKS5lbGVtZW50TWF0Y2hl
cyhlbGVtZW50KTsKLSAgICBkZWZhdWx0OgotICAgICAgICAvLyBDb2xsZWN0aW9uIHR5cGVzIHRo
YXQgb25seSBkZWFsIHdpdGggSFRNTEVsZW1lbnRzLgotICAgICAgICByZXR1cm4gaXM8SFRNTEVs
ZW1lbnQ+KGVsZW1lbnQpICYmIGlzTWF0Y2hpbmdIVE1MRWxlbWVudChjb2xsZWN0aW9uLCBkb3du
Y2FzdDxIVE1MRWxlbWVudD4oZWxlbWVudCkpOwotICAgIH0KLX0KLQotc3RhdGljIGlubGluZSBF
bGVtZW50KiBwcmV2aW91c0VsZW1lbnQoQ29udGFpbmVyTm9kZSYgYmFzZSwgRWxlbWVudCYgZWxl
bWVudCwgYm9vbCBvbmx5SW5jbHVkZURpcmVjdENoaWxkcmVuKQotewotICAgIHJldHVybiBvbmx5
SW5jbHVkZURpcmVjdENoaWxkcmVuID8gRWxlbWVudFRyYXZlcnNhbDo6cHJldmlvdXNTaWJsaW5n
KGVsZW1lbnQpIDogRWxlbWVudFRyYXZlcnNhbDo6cHJldmlvdXMoZWxlbWVudCwgJmJhc2UpOwot
fQotCi1BTFdBWVNfSU5MSU5FIEVsZW1lbnQqIEhUTUxDb2xsZWN0aW9uOjppdGVyYXRlRm9yUHJl
dmlvdXNFbGVtZW50KEVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0Ci17Ci0gICAgYm9vbCBvbmx5SW5j
bHVkZURpcmVjdENoaWxkcmVuID0gbV9zaG91bGRPbmx5SW5jbHVkZURpcmVjdENoaWxkcmVuOwot
ICAgIENvbnRhaW5lck5vZGUmIHJvb3ROb2RlID0gdGhpcy0+cm9vdE5vZGUoKTsKLSAgICBmb3Ig
KDsgZWxlbWVudDsgZWxlbWVudCA9IHByZXZpb3VzRWxlbWVudChyb290Tm9kZSwgKmVsZW1lbnQs
IG9ubHlJbmNsdWRlRGlyZWN0Q2hpbGRyZW4pKSB7Ci0gICAgICAgIGlmIChpc01hdGNoaW5nRWxl
bWVudCgqdGhpcywgKmVsZW1lbnQpKQotICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7Ci0gICAg
fQotICAgIHJldHVybiBudWxscHRyOwotfQotCi1zdGF0aWMgaW5saW5lIEVsZW1lbnQqIGZpcnN0
TWF0Y2hpbmdFbGVtZW50KGNvbnN0IEhUTUxDb2xsZWN0aW9uJiBjb2xsZWN0aW9uLCBDb250YWlu
ZXJOb2RlJiByb290KQotewotICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBFbGVtZW50VHJhdmVyc2Fs
OjpmaXJzdFdpdGhpbihyb290KTsKLSAgICB3aGlsZSAoZWxlbWVudCAmJiAhaXNNYXRjaGluZ0Vs
ZW1lbnQoY29sbGVjdGlvbiwgKmVsZW1lbnQpKQotICAgICAgICBlbGVtZW50ID0gRWxlbWVudFRy
YXZlcnNhbDo6bmV4dCgqZWxlbWVudCwgJnJvb3QpOwotICAgIHJldHVybiBlbGVtZW50OwotfQot
Ci1zdGF0aWMgaW5saW5lIEVsZW1lbnQqIG5leHRNYXRjaGluZ0VsZW1lbnQoY29uc3QgSFRNTENv
bGxlY3Rpb24mIGNvbGxlY3Rpb24sIEVsZW1lbnQmIGVsZW1lbnQsIENvbnRhaW5lck5vZGUmIHJv
b3QpCi17Ci0gICAgRWxlbWVudCogbmV4dCA9ICZlbGVtZW50OwotICAgIGRvIHsKLSAgICAgICAg
bmV4dCA9IEVsZW1lbnRUcmF2ZXJzYWw6Om5leHQoKm5leHQsICZyb290KTsKLSAgICB9IHdoaWxl
IChuZXh0ICYmICFpc01hdGNoaW5nRWxlbWVudChjb2xsZWN0aW9uLCAqbmV4dCkpOwotICAgIHJl
dHVybiBuZXh0OwotfQotCi11bnNpZ25lZCBIVE1MQ29sbGVjdGlvbjo6bGVuZ3RoKCkgY29uc3QK
LXsKLSAgICByZXR1cm4gbV9pbmRleENhY2hlLm5vZGVDb3VudCgqdGhpcyk7Ci19Ci0KLUVsZW1l
bnQqIEhUTUxDb2xsZWN0aW9uOjppdGVtKHVuc2lnbmVkIG9mZnNldCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gbV9pbmRleENhY2hlLm5vZGVBdCgqdGhpcywgb2Zmc2V0KTsKLX0KLQotc3RhdGljIGlu
bGluZSBib29sIG5hbWVTaG91bGRCZVZpc2libGVJbkRvY3VtZW50QWxsKEhUTUxFbGVtZW50JiBl
bGVtZW50KQotewotICAgIC8vIFRoZSBkb2N1bWVudC5hbGwgY29sbGVjdGlvbiByZXR1cm5zIG9u
bHkgY2VydGFpbiB0eXBlcyBvZiBlbGVtZW50cyBieSBuYW1lLAotICAgIC8vIGFsdGhvdWdoIGl0
IHJldHVybnMgYW55IHR5cGUgb2YgZWxlbWVudCBieSBpZC4KLSAgICByZXR1cm4gZWxlbWVudC5o
YXNUYWdOYW1lKGFwcGxldFRhZykKLSAgICAgICAgfHwgZWxlbWVudC5oYXNUYWdOYW1lKGVtYmVk
VGFnKQotICAgICAgICB8fCBlbGVtZW50Lmhhc1RhZ05hbWUoZm9ybVRhZykKLSAgICAgICAgfHwg
ZWxlbWVudC5oYXNUYWdOYW1lKGltZ1RhZykKLSAgICAgICAgfHwgZWxlbWVudC5oYXNUYWdOYW1l
KGlucHV0VGFnKQotICAgICAgICB8fCBlbGVtZW50Lmhhc1RhZ05hbWUob2JqZWN0VGFnKQotICAg
ICAgICB8fCBlbGVtZW50Lmhhc1RhZ05hbWUoc2VsZWN0VGFnKTsKLX0KLQotc3RhdGljIGlubGlu
ZSBib29sIG5hbWVTaG91bGRCZVZpc2libGVJbkRvY3VtZW50QWxsKEVsZW1lbnQmIGVsZW1lbnQp
Ci17Ci0gICAgcmV0dXJuIGlzPEhUTUxFbGVtZW50PihlbGVtZW50KSAmJiBuYW1lU2hvdWxkQmVW
aXNpYmxlSW5Eb2N1bWVudEFsbChkb3duY2FzdDxIVE1MRWxlbWVudD4oZWxlbWVudCkpOwotfQot
Ci1zdGF0aWMgaW5saW5lIEVsZW1lbnQqIGZpcnN0TWF0Y2hpbmdDaGlsZEVsZW1lbnQoY29uc3Qg
SFRNTENvbGxlY3Rpb24mIG5vZGVMaXN0LCBDb250YWluZXJOb2RlJiByb290KQotewotICAgIEVs
ZW1lbnQqIGVsZW1lbnQgPSBFbGVtZW50VHJhdmVyc2FsOjpmaXJzdFdpdGhpbihyb290KTsKLSAg
ICB3aGlsZSAoZWxlbWVudCAmJiAhaXNNYXRjaGluZ0VsZW1lbnQobm9kZUxpc3QsICplbGVtZW50
KSkKLSAgICAgICAgZWxlbWVudCA9IEVsZW1lbnRUcmF2ZXJzYWw6Om5leHRTaWJsaW5nKCplbGVt
ZW50KTsKLSAgICByZXR1cm4gZWxlbWVudDsKLX0KLQotc3RhdGljIGlubGluZSBFbGVtZW50KiBu
ZXh0TWF0Y2hpbmdTaWJsaW5nRWxlbWVudChjb25zdCBIVE1MQ29sbGVjdGlvbiYgbm9kZUxpc3Qs
IEVsZW1lbnQmIGVsZW1lbnQpCi17Ci0gICAgRWxlbWVudCogbmV4dCA9ICZlbGVtZW50OwotICAg
IGRvIHsKLSAgICAgICAgbmV4dCA9IEVsZW1lbnRUcmF2ZXJzYWw6Om5leHRTaWJsaW5nKCpuZXh0
KTsKLSAgICB9IHdoaWxlIChuZXh0ICYmICFpc01hdGNoaW5nRWxlbWVudChub2RlTGlzdCwgKm5l
eHQpKTsKLSAgICByZXR1cm4gbmV4dDsKLX0KLQotaW5saW5lIGJvb2wgSFRNTENvbGxlY3Rpb246
OnVzZXNDdXN0b21Gb3J3YXJkT25seVRyYXZlcnNhbCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1f
dXNlc0N1c3RvbUZvcndhcmRPbmx5VHJhdmVyc2FsOwotfQotCi1pbmxpbmUgRWxlbWVudCogSFRN
TENvbGxlY3Rpb246OmZpcnN0RWxlbWVudChDb250YWluZXJOb2RlJiByb290KSBjb25zdAotewot
ICAgIGlmICh1c2VzQ3VzdG9tRm9yd2FyZE9ubHlUcmF2ZXJzYWwoKSkKLSAgICAgICAgcmV0dXJu
IGN1c3RvbUVsZW1lbnRBZnRlcihudWxscHRyKTsKLSAgICBpZiAobV9zaG91bGRPbmx5SW5jbHVk
ZURpcmVjdENoaWxkcmVuKQotICAgICAgICByZXR1cm4gZmlyc3RNYXRjaGluZ0NoaWxkRWxlbWVu
dCgqdGhpcywgcm9vdCk7Ci0gICAgcmV0dXJuIGZpcnN0TWF0Y2hpbmdFbGVtZW50KCp0aGlzLCBy
b290KTsKLX0KLQotaW5saW5lIEVsZW1lbnQqIEhUTUxDb2xsZWN0aW9uOjp0cmF2ZXJzZUZvcndh
cmQoRWxlbWVudCYgY3VycmVudCwgdW5zaWduZWQgY291bnQsIHVuc2lnbmVkJiB0cmF2ZXJzZWRD
b3VudCwgQ29udGFpbmVyTm9kZSYgcm9vdCkgY29uc3QKLXsKLSAgICBFbGVtZW50KiBlbGVtZW50
ID0gJmN1cnJlbnQ7Ci0gICAgaWYgKHVzZXNDdXN0b21Gb3J3YXJkT25seVRyYXZlcnNhbCgpKSB7
Ci0gICAgICAgIGZvciAodHJhdmVyc2VkQ291bnQgPSAwOyB0cmF2ZXJzZWRDb3VudCA8IGNvdW50
OyArK3RyYXZlcnNlZENvdW50KSB7Ci0gICAgICAgICAgICBlbGVtZW50ID0gY3VzdG9tRWxlbWVu
dEFmdGVyKGVsZW1lbnQpOwotICAgICAgICAgICAgaWYgKCFlbGVtZW50KQotICAgICAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOwotICAgICAgICB9Ci0gICAgfSBlbHNlIGlmIChtX3Nob3VsZE9u
bHlJbmNsdWRlRGlyZWN0Q2hpbGRyZW4pIHsKLSAgICAgICAgZm9yICh0cmF2ZXJzZWRDb3VudCA9
IDA7IHRyYXZlcnNlZENvdW50IDwgY291bnQ7ICsrdHJhdmVyc2VkQ291bnQpIHsKLSAgICAgICAg
ICAgIGVsZW1lbnQgPSBuZXh0TWF0Y2hpbmdTaWJsaW5nRWxlbWVudCgqdGhpcywgKmVsZW1lbnQp
OwotICAgICAgICAgICAgaWYgKCFlbGVtZW50KQotICAgICAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOwotICAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgZm9yICh0cmF2ZXJzZWRDb3Vu
dCA9IDA7IHRyYXZlcnNlZENvdW50IDwgY291bnQ7ICsrdHJhdmVyc2VkQ291bnQpIHsKLSAgICAg
ICAgICAgIGVsZW1lbnQgPSBuZXh0TWF0Y2hpbmdFbGVtZW50KCp0aGlzLCAqZWxlbWVudCwgcm9v
dCk7Ci0gICAgICAgICAgICBpZiAoIWVsZW1lbnQpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIGVsZW1lbnQ7Ci19Ci0KLUVsZW1l
bnQqIEhUTUxDb2xsZWN0aW9uOjpjb2xsZWN0aW9uQmVnaW4oKSBjb25zdAotewotICAgIHJldHVy
biBmaXJzdEVsZW1lbnQocm9vdE5vZGUoKSk7Ci19Ci0KLUVsZW1lbnQqIEhUTUxDb2xsZWN0aW9u
Ojpjb2xsZWN0aW9uTGFzdCgpIGNvbnN0Ci17Ci0gICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJl
IG9wdGltaXplZCBzaW1pbGFybHkgdG8gdGhlIGZvcndhcmQgY2FzZS4KLSAgICBhdXRvJiByb290
ID0gcm9vdE5vZGUoKTsKLSAgICBFbGVtZW50KiBsYXN0ID0gbV9zaG91bGRPbmx5SW5jbHVkZURp
cmVjdENoaWxkcmVuID8gRWxlbWVudFRyYXZlcnNhbDo6bGFzdENoaWxkKHJvb3QpIDogRWxlbWVu
dFRyYXZlcnNhbDo6bGFzdFdpdGhpbihyb290KTsKLSAgICByZXR1cm4gaXRlcmF0ZUZvclByZXZp
b3VzRWxlbWVudChsYXN0KTsKLX0KLQotdm9pZCBIVE1MQ29sbGVjdGlvbjo6Y29sbGVjdGlvblRy
YXZlcnNlRm9yd2FyZChFbGVtZW50KiYgY3VycmVudCwgdW5zaWduZWQgY291bnQsIHVuc2lnbmVk
JiB0cmF2ZXJzZWRDb3VudCkgY29uc3QKLXsKLSAgICBjdXJyZW50ID0gdHJhdmVyc2VGb3J3YXJk
KCpjdXJyZW50LCBjb3VudCwgdHJhdmVyc2VkQ291bnQsIHJvb3ROb2RlKCkpOwotfQotCi12b2lk
IEhUTUxDb2xsZWN0aW9uOjpjb2xsZWN0aW9uVHJhdmVyc2VCYWNrd2FyZChFbGVtZW50KiYgY3Vy
cmVudCwgdW5zaWduZWQgY291bnQpIGNvbnN0Ci17Ci0gICAgLy8gRklYTUU6IFRoaXMgc2hvdWxk
IGJlIG9wdGltaXplZCBzaW1pbGFybHkgdG8gdGhlIGZvcndhcmQgY2FzZS4KLSAgICBpZiAobV9z
aG91bGRPbmx5SW5jbHVkZURpcmVjdENoaWxkcmVuKSB7Ci0gICAgICAgIGZvciAoOyBjb3VudCAm
JiBjdXJyZW50OyAtLWNvdW50KQotICAgICAgICAgICAgY3VycmVudCA9IGl0ZXJhdGVGb3JQcmV2
aW91c0VsZW1lbnQoRWxlbWVudFRyYXZlcnNhbDo6cHJldmlvdXNTaWJsaW5nKCpjdXJyZW50KSk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgYXV0byYgcm9vdCA9IHJvb3ROb2RlKCk7Ci0g
ICAgZm9yICg7IGNvdW50ICYmIGN1cnJlbnQ7IC0tY291bnQpCi0gICAgICAgIGN1cnJlbnQgPSBp
dGVyYXRlRm9yUHJldmlvdXNFbGVtZW50KEVsZW1lbnRUcmF2ZXJzYWw6OnByZXZpb3VzKCpjdXJy
ZW50LCAmcm9vdCkpOwotfQotCi12b2lkIEhUTUxDb2xsZWN0aW9uOjppbnZhbGlkYXRlQ2FjaGUo
RG9jdW1lbnQmIGRvY3VtZW50KSBjb25zdAotewotICAgIGlmIChtX2luZGV4Q2FjaGUuaGFzVmFs
aWRDYWNoZSgqdGhpcykpIHsKLSAgICAgICAgZG9jdW1lbnQudW5yZWdpc3RlckNvbGxlY3Rpb24o
Y29uc3RfY2FzdDxIVE1MQ29sbGVjdGlvbiY+KCp0aGlzKSk7Ci0gICAgICAgIG1faW5kZXhDYWNo
ZS5pbnZhbGlkYXRlKCp0aGlzKTsKLSAgICB9CiAgICAgaWYgKGhhc05hbWVkRWxlbWVudENhY2hl
KCkpCiAgICAgICAgIGludmFsaWRhdGVOYW1lZEVsZW1lbnRDYWNoZShkb2N1bWVudCk7CiB9CkBA
IC00MDAsMzggKzEzMyw2IEBAIHZvaWQgSFRNTENvbGxlY3Rpb246OmludmFsaWRhdGVOYW1lZEVs
ZW1lbnRDYWNoZShEb2N1bWVudCYgZG9jdW1lbnQpIGNvbnN0CiAKIEVsZW1lbnQqIEhUTUxDb2xs
ZWN0aW9uOjpuYW1lZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKSBjb25zdAogewotICAg
IC8vIGh0dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20vd29ya3Nob3AvYXV0aG9yL2RodG1sL3JlZmVy
ZW5jZS9tZXRob2RzL25hbWVkaXRlbS5hc3AKLSAgICAvLyBUaGlzIG1ldGhvZCBmaXJzdCBzZWFy
Y2hlcyBmb3IgYW4gb2JqZWN0IHdpdGggYSBtYXRjaGluZyBpZAotICAgIC8vIGF0dHJpYnV0ZS4g
SWYgYSBtYXRjaCBpcyBub3QgZm91bmQsIHRoZSBtZXRob2QgdGhlbiBzZWFyY2hlcyBmb3IgYW4K
LSAgICAvLyBvYmplY3Qgd2l0aCBhIG1hdGNoaW5nIG5hbWUgYXR0cmlidXRlLCBidXQgb25seSBv
biB0aG9zZSBlbGVtZW50cwotICAgIC8vIHRoYXQgYXJlIGFsbG93ZWQgYSBuYW1lIGF0dHJpYnV0
ZS4KLQotICAgIGlmIChuYW1lLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0K
LSAgICBDb250YWluZXJOb2RlJiByb290ID0gcm9vdE5vZGUoKTsKLSAgICBpZiAoIXVzZXNDdXN0
b21Gb3J3YXJkT25seVRyYXZlcnNhbCgpICYmIHJvb3QuaXNJblRyZWVTY29wZSgpKSB7Ci0gICAg
ICAgIEVsZW1lbnQqIGNhbmRpZGF0ZSA9IG51bGxwdHI7Ci0KLSAgICAgICAgVHJlZVNjb3BlJiB0
cmVlU2NvcGUgPSByb290LnRyZWVTY29wZSgpOwotICAgICAgICBpZiAodHJlZVNjb3BlLmhhc0Vs
ZW1lbnRXaXRoSWQoKm5hbWUuaW1wbCgpKSkgewotICAgICAgICAgICAgaWYgKCF0cmVlU2NvcGUu
Y29udGFpbnNNdWx0aXBsZUVsZW1lbnRzV2l0aElkKG5hbWUpKQotICAgICAgICAgICAgICAgIGNh
bmRpZGF0ZSA9IHRyZWVTY29wZS5nZXRFbGVtZW50QnlJZChuYW1lKTsKLSAgICAgICAgfSBlbHNl
IGlmICh0cmVlU2NvcGUuaGFzRWxlbWVudFdpdGhOYW1lKCpuYW1lLmltcGwoKSkpIHsKLSAgICAg
ICAgICAgIGlmICghdHJlZVNjb3BlLmNvbnRhaW5zTXVsdGlwbGVFbGVtZW50c1dpdGhOYW1lKG5h
bWUpKSB7Ci0gICAgICAgICAgICAgICAgY2FuZGlkYXRlID0gdHJlZVNjb3BlLmdldEVsZW1lbnRC
eU5hbWUobmFtZSk7Ci0gICAgICAgICAgICAgICAgaWYgKGNhbmRpZGF0ZSAmJiB0eXBlKCkgPT0g
RG9jQWxsICYmICFuYW1lU2hvdWxkQmVWaXNpYmxlSW5Eb2N1bWVudEFsbCgqY2FuZGlkYXRlKSkK
LSAgICAgICAgICAgICAgICAgICAgY2FuZGlkYXRlID0gbnVsbHB0cjsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgICAgICBp
ZiAoY2FuZGlkYXRlICYmIGlzTWF0Y2hpbmdFbGVtZW50KCp0aGlzLCAqY2FuZGlkYXRlKSkgewot
ICAgICAgICAgICAgaWYgKG1fc2hvdWxkT25seUluY2x1ZGVEaXJlY3RDaGlsZHJlbiA/IGNhbmRp
ZGF0ZS0+cGFyZW50Tm9kZSgpID09ICZyb290IDogY2FuZGlkYXRlLT5pc0Rlc2NlbmRhbnRPZigm
cm9vdCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGNhbmRpZGF0ZTsKLSAgICAgICAgfQotICAg
IH0KLQogICAgIC8vIFRoZSBwYXRob2xvZ2ljYWwgY2FzZS4gV2UgbmVlZCB0byB3YWxrIHRoZSBl
bnRpcmUgc3VidHJlZS4KICAgICB1cGRhdGVOYW1lZEVsZW1lbnRDYWNoZSgpOwogICAgIEFTU0VS
VChtX25hbWVkRWxlbWVudENhY2hlKTsKQEAgLTQ1Niw5ICsxNTcsOSBAQCB2b2lkIEhUTUxDb2xs
ZWN0aW9uOjp1cGRhdGVOYW1lZEVsZW1lbnRDYWNoZSgpIGNvbnN0CiAKICAgICBhdXRvIGNhY2hl
ID0gc3RkOjptYWtlX3VuaXF1ZTxDb2xsZWN0aW9uTmFtZWRFbGVtZW50Q2FjaGU+KCk7CiAKLSAg
ICB1bnNpZ25lZCBzaXplID0gbV9pbmRleENhY2hlLm5vZGVDb3VudCgqdGhpcyk7CisgICAgdW5z
aWduZWQgc2l6ZSA9IGxlbmd0aCgpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXpl
OyArK2kpIHsKLSAgICAgICAgRWxlbWVudCYgZWxlbWVudCA9ICptX2luZGV4Q2FjaGUubm9kZUF0
KCp0aGlzLCBpKTsKKyAgICAgICAgRWxlbWVudCYgZWxlbWVudCA9ICppdGVtKGkpOwogICAgICAg
ICBjb25zdCBBdG9taWNTdHJpbmcmIGlkID0gZWxlbWVudC5nZXRJZEF0dHJpYnV0ZSgpOwogICAg
ICAgICBpZiAoIWlkLmlzRW1wdHkoKSkKICAgICAgICAgICAgIGNhY2hlLT5hcHBlbmRUb0lkQ2Fj
aGUoaWQsIGVsZW1lbnQpOwpAQCAtNTEzLDEwICsyMTQsNCBAQCBQYXNzUmVmUHRyPE5vZGVMaXN0
PiBIVE1MQ29sbGVjdGlvbjo6dGFncyhjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgcmV0dXJuIG93
bmVyTm9kZSgpLmdldEVsZW1lbnRzQnlUYWdOYW1lKG5hbWUpOwogfQogCi1FbGVtZW50KiBIVE1M
Q29sbGVjdGlvbjo6Y3VzdG9tRWxlbWVudEFmdGVyKEVsZW1lbnQqKSBjb25zdAotewotICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBudWxscHRyOwotfQotCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0
aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmgKaW5kZXggNDcxNGU5
MDhkZGI1ZDliODg5YzNiNmNlNjU3YTE0MGQ3YTNjNTllMi4uZTZkOGNlNjI0N2U1M2E3MDA3N2Ri
NjRiNjY4MDI1NWIyMWE2MzVmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
Q29sbGVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uaApA
QCAtNjAsNTcgKzYwLDM4IEBAIHByaXZhdGU6CiAKIGNsYXNzIEhUTUxDb2xsZWN0aW9uIDogcHVi
bGljIFNjcmlwdFdyYXBwYWJsZSwgcHVibGljIFJlZkNvdW50ZWQ8SFRNTENvbGxlY3Rpb24+IHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEhUTUxDb2xsZWN0aW9uPiBjcmVhdGUoQ29udGFpbmVy
Tm9kZSYgYmFzZSwgQ29sbGVjdGlvblR5cGUpOwogICAgIHZpcnR1YWwgfkhUTUxDb2xsZWN0aW9u
KCk7CiAKICAgICAvLyBET00gQVBJCi0gICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3Q7Ci0gICAg
RWxlbWVudCogaXRlbSh1bnNpZ25lZCBvZmZzZXQpIGNvbnN0OworICAgIHZpcnR1YWwgdW5zaWdu
ZWQgbGVuZ3RoKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgRWxlbWVudCogaXRlbSh1bnNpZ25l
ZCBvZmZzZXQpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIEVsZW1lbnQqIG5hbWVkSXRlbShjb25z
dCBBdG9taWNTdHJpbmcmIG5hbWUpIGNvbnN0OwogICAgIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IHRh
Z3MoY29uc3QgU3RyaW5nJik7CiAKICAgICAvLyBOb24tRE9NIEFQSQogICAgIGJvb2wgaGFzTmFt
ZWRJdGVtKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkgY29uc3Q7CiAgICAgVmVjdG9yPFJlZjxF
bGVtZW50Pj4gbmFtZWRJdGVtcyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpIGNvbnN0OwotICAg
IHNpemVfdCBtZW1vcnlDb3N0KCkgY29uc3Q7CisgICAgdmlydHVhbCBzaXplX3QgbWVtb3J5Q29z
dCgpIGNvbnN0OwogCiAgICAgYm9vbCBpc1Jvb3RlZEF0RG9jdW1lbnQoKSBjb25zdDsKICAgICBO
b2RlTGlzdEludmFsaWRhdGlvblR5cGUgaW52YWxpZGF0aW9uVHlwZSgpIGNvbnN0OwogICAgIENv
bGxlY3Rpb25UeXBlIHR5cGUoKSBjb25zdDsKICAgICBDb250YWluZXJOb2RlJiBvd25lck5vZGUo
KSBjb25zdDsKLSAgICB2b2lkIGludmFsaWRhdGVDYWNoZShjb25zdCBRdWFsaWZpZWROYW1lKiBh
dHRyaWJ1dGVOYW1lKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZUNhY2hlKERv
Y3VtZW50JikgY29uc3Q7Ci0KLSAgICAvLyBGb3IgQ29sbGVjdGlvbkluZGV4Q2FjaGU7IGRvIG5v
dCB1c2UgZWxzZXdoZXJlLgotICAgIEVsZW1lbnQqIGNvbGxlY3Rpb25CZWdpbigpIGNvbnN0Owot
ICAgIEVsZW1lbnQqIGNvbGxlY3Rpb25MYXN0KCkgY29uc3Q7Ci0gICAgRWxlbWVudCogY29sbGVj
dGlvbkVuZCgpIGNvbnN0OwotICAgIHZvaWQgY29sbGVjdGlvblRyYXZlcnNlRm9yd2FyZChFbGVt
ZW50KiYsIHVuc2lnbmVkIGNvdW50LCB1bnNpZ25lZCYgdHJhdmVyc2VkQ291bnQpIGNvbnN0Owot
ICAgIHZvaWQgY29sbGVjdGlvblRyYXZlcnNlQmFja3dhcmQoRWxlbWVudComLCB1bnNpZ25lZCBj
b3VudCkgY29uc3Q7Ci0gICAgYm9vbCBjb2xsZWN0aW9uQ2FuVHJhdmVyc2VCYWNrd2FyZCgpIGNv
bnN0OwotICAgIHZvaWQgd2lsbFZhbGlkYXRlSW5kZXhDYWNoZSgpIGNvbnN0OworICAgIHZvaWQg
aW52YWxpZGF0ZUNhY2hlKGNvbnN0IFF1YWxpZmllZE5hbWUqIGF0dHJpYnV0ZU5hbWUpOworICAg
IHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlQ2FjaGUoRG9jdW1lbnQmKTsKIAogICAgIGJvb2wgaGFz
TmFtZWRFbGVtZW50Q2FjaGUoKSBjb25zdDsKIAogcHJvdGVjdGVkOgotICAgIGVudW0gRWxlbWVu
dFRyYXZlcnNhbFR5cGUgeyBOb3JtYWxUcmF2ZXJzYWwsIEN1c3RvbUZvcndhcmRPbmx5VHJhdmVy
c2FsIH07Ci0gICAgSFRNTENvbGxlY3Rpb24oQ29udGFpbmVyTm9kZSYgYmFzZSwgQ29sbGVjdGlv
blR5cGUsIEVsZW1lbnRUcmF2ZXJzYWxUeXBlID0gTm9ybWFsVHJhdmVyc2FsKTsKKyAgICBIVE1M
Q29sbGVjdGlvbihDb250YWluZXJOb2RlJiBiYXNlLCBDb2xsZWN0aW9uVHlwZSk7CiAKICAgICB2
aXJ0dWFsIHZvaWQgdXBkYXRlTmFtZWRFbGVtZW50Q2FjaGUoKSBjb25zdDsKIAogICAgIHZvaWQg
c2V0TmFtZWRJdGVtQ2FjaGUoc3RkOjp1bmlxdWVfcHRyPENvbGxlY3Rpb25OYW1lZEVsZW1lbnRD
YWNoZT4pIGNvbnN0OwogICAgIGNvbnN0IENvbGxlY3Rpb25OYW1lZEVsZW1lbnRDYWNoZSYgbmFt
ZWRJdGVtQ2FjaGVzKCkgY29uc3Q7CiAKLXByaXZhdGU6CiAgICAgRG9jdW1lbnQmIGRvY3VtZW50
KCkgY29uc3Q7CiAgICAgQ29udGFpbmVyTm9kZSYgcm9vdE5vZGUoKSBjb25zdDsKLSAgICBib29s
IHVzZXNDdXN0b21Gb3J3YXJkT25seVRyYXZlcnNhbCgpIGNvbnN0OwotCi0gICAgRWxlbWVudCog
aXRlcmF0ZUZvclByZXZpb3VzRWxlbWVudChFbGVtZW50KikgY29uc3Q7Ci0gICAgRWxlbWVudCog
Zmlyc3RFbGVtZW50KENvbnRhaW5lck5vZGUmIHJvb3QpIGNvbnN0OwotICAgIEVsZW1lbnQqIHRy
YXZlcnNlRm9yd2FyZChFbGVtZW50JiwgdW5zaWduZWQgY291bnQsIHVuc2lnbmVkJiB0cmF2ZXJz
ZWRDb3VudCwgQ29udGFpbmVyTm9kZSYgcm9vdCkgY29uc3Q7Ci0KLSAgICB2aXJ0dWFsIEVsZW1l
bnQqIGN1c3RvbUVsZW1lbnRBZnRlcihFbGVtZW50KikgY29uc3Q7CiAKICAgICB2b2lkIGludmFs
aWRhdGVOYW1lZEVsZW1lbnRDYWNoZShEb2N1bWVudCYpIGNvbnN0OwogCkBAIC0xMTksMTYgKzEw
MCwyMSBAQCBwcml2YXRlOgogCiAgICAgUmVmPENvbnRhaW5lck5vZGU+IG1fb3duZXJOb2RlOwog
Ci0gICAgbXV0YWJsZSBDb2xsZWN0aW9uSW5kZXhDYWNoZTxIVE1MQ29sbGVjdGlvbiwgRWxlbWVu
dCo+IG1faW5kZXhDYWNoZTsKICAgICBtdXRhYmxlIHN0ZDo6dW5pcXVlX3B0cjxDb2xsZWN0aW9u
TmFtZWRFbGVtZW50Q2FjaGU+IG1fbmFtZWRFbGVtZW50Q2FjaGU7CiAKICAgICBjb25zdCB1bnNp
Z25lZCBtX2NvbGxlY3Rpb25UeXBlIDogNTsKICAgICBjb25zdCB1bnNpZ25lZCBtX2ludmFsaWRh
dGlvblR5cGUgOiA0OwogICAgIGNvbnN0IHVuc2lnbmVkIG1fcm9vdFR5cGUgOiAxOwotICAgIGNv
bnN0IHVuc2lnbmVkIG1fc2hvdWxkT25seUluY2x1ZGVEaXJlY3RDaGlsZHJlbiA6IDE7Ci0gICAg
Y29uc3QgdW5zaWduZWQgbV91c2VzQ3VzdG9tRm9yd2FyZE9ubHlUcmF2ZXJzYWwgOiAxOwogfTsK
IAoraW5saW5lIENvbnRhaW5lck5vZGUmIEhUTUxDb2xsZWN0aW9uOjpyb290Tm9kZSgpIGNvbnN0
Cit7CisgICAgaWYgKGlzUm9vdGVkQXREb2N1bWVudCgpICYmIG93bmVyTm9kZSgpLmluRG9jdW1l
bnQoKSkKKyAgICAgICAgcmV0dXJuIG93bmVyTm9kZSgpLmRvY3VtZW50KCk7CisKKyAgICByZXR1
cm4gb3duZXJOb2RlKCk7Cit9CisKIGlubGluZSBjb25zdCBWZWN0b3I8RWxlbWVudCo+KiBDb2xs
ZWN0aW9uTmFtZWRFbGVtZW50Q2FjaGU6OmZpbmRFbGVtZW50c1dpdGhJZChjb25zdCBBdG9taWNT
dHJpbmcmIGlkKSBjb25zdAogewogICAgIHJldHVybiBmaW5kKG1faWRNYXAsIGlkKTsKQEAgLTE3
Nyw3ICsxNjMsNyBAQCBpbmxpbmUgdm9pZCBDb2xsZWN0aW9uTmFtZWRFbGVtZW50Q2FjaGU6OmFw
cGVuZChTdHJpbmdUb0VsZW1lbnRzTWFwJiBtYXAsIGNvbnN0CiAKIGlubGluZSBzaXplX3QgSFRN
TENvbGxlY3Rpb246Om1lbW9yeUNvc3QoKSBjb25zdAogewotICAgIHJldHVybiBtX2luZGV4Q2Fj
aGUubWVtb3J5Q29zdCgpICsgKG1fbmFtZWRFbGVtZW50Q2FjaGUgPyBtX25hbWVkRWxlbWVudENh
Y2hlLT5tZW1vcnlDb3N0KCkgOiAwKTsKKyAgICByZXR1cm4gbV9uYW1lZEVsZW1lbnRDYWNoZSA/
IG1fbmFtZWRFbGVtZW50Q2FjaGUtPm1lbW9yeUNvc3QoKSA6IDA7CiB9CiAKIGlubGluZSBib29s
IEhUTUxDb2xsZWN0aW9uOjppc1Jvb3RlZEF0RG9jdW1lbnQoKSBjb25zdApAQCAtMjA1LDcgKzE5
MSw3IEBAIGlubGluZSBEb2N1bWVudCYgSFRNTENvbGxlY3Rpb246OmRvY3VtZW50KCkgY29uc3QK
ICAgICByZXR1cm4gbV9vd25lck5vZGUtPmRvY3VtZW50KCk7CiB9CiAKLWlubGluZSB2b2lkIEhU
TUxDb2xsZWN0aW9uOjppbnZhbGlkYXRlQ2FjaGUoY29uc3QgUXVhbGlmaWVkTmFtZSogYXR0cmli
dXRlTmFtZSkgY29uc3QKK2lubGluZSB2b2lkIEhUTUxDb2xsZWN0aW9uOjppbnZhbGlkYXRlQ2Fj
aGUoY29uc3QgUXVhbGlmaWVkTmFtZSogYXR0cmlidXRlTmFtZSkKIHsKICAgICBpZiAoIWF0dHJp
YnV0ZU5hbWUgfHwgc2hvdWxkSW52YWxpZGF0ZVR5cGVPbkF0dHJpYnV0ZUNoYW5nZShpbnZhbGlk
YXRpb25UeXBlKCksICphdHRyaWJ1dGVOYW1lKSkKICAgICAgICAgaW52YWxpZGF0ZUNhY2hlKGRv
Y3VtZW50KCkpOwpAQCAtMjEzLDIxICsxOTksNiBAQCBpbmxpbmUgdm9pZCBIVE1MQ29sbGVjdGlv
bjo6aW52YWxpZGF0ZUNhY2hlKGNvbnN0IFF1YWxpZmllZE5hbWUqIGF0dHJpYnV0ZU5hbWUpCiAg
ICAgICAgIGludmFsaWRhdGVOYW1lZEVsZW1lbnRDYWNoZShkb2N1bWVudCgpKTsKIH0KIAotaW5s
aW5lIEVsZW1lbnQqIEhUTUxDb2xsZWN0aW9uOjpjb2xsZWN0aW9uRW5kKCkgY29uc3QKLXsKLSAg
ICByZXR1cm4gbnVsbHB0cjsKLX0KLQotaW5saW5lIGJvb2wgSFRNTENvbGxlY3Rpb246OmNvbGxl
Y3Rpb25DYW5UcmF2ZXJzZUJhY2t3YXJkKCkgY29uc3QKLXsKLSAgICByZXR1cm4gIW1fdXNlc0N1
c3RvbUZvcndhcmRPbmx5VHJhdmVyc2FsOwotfQotCi1pbmxpbmUgdm9pZCBIVE1MQ29sbGVjdGlv
bjo6d2lsbFZhbGlkYXRlSW5kZXhDYWNoZSgpIGNvbnN0Ci17Ci0gICAgZG9jdW1lbnQoKS5yZWdp
c3RlckNvbGxlY3Rpb24oY29uc3RfY2FzdDxIVE1MQ29sbGVjdGlvbiY+KCp0aGlzKSk7Ci19Ci0K
IGlubGluZSBib29sIEhUTUxDb2xsZWN0aW9uOjpoYXNOYW1lZEVsZW1lbnRDYWNoZSgpIGNvbnN0
CiB7CiAgICAgcmV0dXJuICEhbV9uYW1lZEVsZW1lbnRDYWNoZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuY3BwCmluZGV4IGFjMzMyZTg3MDIyNjE4YzJlNDkzYjY5
NzdiMDgzZDU1YWI4NmFkN2QuLjQwMGEwYmFlMGVkOTRmZTA1M2ZkNjM1NzFiNDBhYWM5OGZiYWM4
ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmNwcApAQCAt
MjYsMTAgKzI2LDExIEBACiAjaW5jbHVkZSAiSFRNTEZpZWxkU2V0RWxlbWVudC5oIgogCiAjaW5j
bHVkZSAiRWxlbWVudEl0ZXJhdG9yLmgiCi0jaW5jbHVkZSAiSFRNTENvbGxlY3Rpb24uaCIKKyNp
bmNsdWRlICJIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxMZWdl
bmRFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSFRNTE9iamVj
dEVsZW1lbnQuaCIKKyNpbmNsdWRlICJOb2RlUmFyZURhdGEuaCIKICNpbmNsdWRlICJSZW5kZXJG
aWVsZHNldC5oIgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIApAQCAtMTYxLDcgKzE2
Miw3IEBAIEhUTUxMZWdlbmRFbGVtZW50KiBIVE1MRmllbGRTZXRFbGVtZW50OjpsZWdlbmQoKSBj
b25zdAogCiBSZWY8SFRNTENvbGxlY3Rpb24+IEhUTUxGaWVsZFNldEVsZW1lbnQ6OmVsZW1lbnRz
KCkKIHsKLSAgICByZXR1cm4gZW5zdXJlQ2FjaGVkSFRNTENvbGxlY3Rpb24oRm9ybUNvbnRyb2xz
KTsKKyAgICByZXR1cm4gZW5zdXJlUmFyZURhdGEoKS5lbnN1cmVOb2RlTGlzdHMoKS5hZGRDYWNo
ZWRDb2xsZWN0aW9uPEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uPigqdGhpcywgRm9ybUNvbnRy
b2xzKTsKIH0KIAogdm9pZCBIVE1MRmllbGRTZXRFbGVtZW50OjpyZWZyZXNoRWxlbWVudHNJZk5l
ZWRlZCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29u
dHJvbHNDb2xsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9s
c0NvbGxlY3Rpb24uY3BwCmluZGV4IDBkZWVjYzI0ZWNkOWI1YzM3YjBhYzA5YzMxNzUyNzM0MmI3
MTFkODQuLjM4MGVlYjYwODU0ZjQ5MTczNzM5MTQzNGQyNWFlMDdiNjVlODIxY2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uY3BwCkBA
IC0zNiw3ICszNiw3IEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAvLyBjYWxjdWxhdGlv
biBldmVyeSB0aW1lIGlmIGFueXRoaW5nIGhhcyBjaGFuZ2VkLgogCiBIVE1MRm9ybUNvbnRyb2xz
Q29sbGVjdGlvbjo6SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24oQ29udGFpbmVyTm9kZSYgb3du
ZXJOb2RlKQotICAgIDogSFRNTENvbGxlY3Rpb24ob3duZXJOb2RlLCBGb3JtQ29udHJvbHMsIEN1
c3RvbUZvcndhcmRPbmx5VHJhdmVyc2FsKQorICAgIDogQmFzZShvd25lck5vZGUsIEZvcm1Db250
cm9scykKICAgICAsIG1fY2FjaGVkRWxlbWVudChudWxscHRyKQogICAgICwgbV9jYWNoZWRFbGVt
ZW50T2Zmc2V0SW5BcnJheSgwKQogewpAQCAtMTc3LDkgKzE3Nyw5IEBAIHZvaWQgSFRNTEZvcm1D
b250cm9sc0NvbGxlY3Rpb246OnVwZGF0ZU5hbWVkRWxlbWVudENhY2hlKCkgY29uc3QKICAgICBz
ZXROYW1lZEl0ZW1DYWNoZShXVEY6Om1vdmUoY2FjaGUpKTsKIH0KIAotdm9pZCBIVE1MRm9ybUNv
bnRyb2xzQ29sbGVjdGlvbjo6aW52YWxpZGF0ZUNhY2hlKERvY3VtZW50JiBkb2N1bWVudCkgY29u
c3QKK3ZvaWQgSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246OmludmFsaWRhdGVDYWNoZShEb2N1
bWVudCYgZG9jdW1lbnQpCiB7Ci0gICAgSFRNTENvbGxlY3Rpb246OmludmFsaWRhdGVDYWNoZShk
b2N1bWVudCk7CisgICAgQmFzZTo6aW52YWxpZGF0ZUNhY2hlKGRvY3VtZW50KTsKICAgICBtX2Nh
Y2hlZEVsZW1lbnQgPSBudWxscHRyOwogICAgIG1fY2FjaGVkRWxlbWVudE9mZnNldEluQXJyYXkg
PSAwOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xz
Q29sbGVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVj
dGlvbi5oCmluZGV4IGIxNjhhZDljMDYwNTQ0OGE5OTQ5ZDRhOGUxNWU0NDY1ZDc4NWJiNzMuLjU0
OWYwMzZjYjg5NzU3NzUwMmRlZjg3YWQ5ZTk0ZTA5YmMxNGM2ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmgKQEAgLTIzLDcgKzIzLDcg
QEAKICNpZm5kZWYgSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb25faAogI2RlZmluZSBIVE1MRm9y
bUNvbnRyb2xzQ29sbGVjdGlvbl9oCiAKLSNpbmNsdWRlICJIVE1MQ29sbGVjdGlvbi5oIgorI2lu
Y2x1ZGUgIkNhY2hlZEhUTUxDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzQsMjEgKzM0LDI0IEBAIGNsYXNzIEhUTUxJbWFn
ZUVsZW1lbnQ7CiAvLyBUaGlzIGNsYXNzIGlzIGp1c3QgYSBiaWcgaGFjayB0byBmaW5kIGZvcm0g
ZWxlbWVudHMgZXZlbiBpbiBtYWxmb3JtZWQgSFRNTCBlbGVtZW50cy4KIC8vIFRoZSBmYW1vdXMg
PHRhYmxlPjx0cj48Zm9ybT48dGQ+IHByb2JsZW0uCiAKLWNsYXNzIEhUTUxGb3JtQ29udHJvbHND
b2xsZWN0aW9uIGZpbmFsIDogcHVibGljIEhUTUxDb2xsZWN0aW9uIHsKK2NsYXNzIEhUTUxGb3Jt
Q29udHJvbHNDb2xsZWN0aW9uIGZpbmFsIDogcHVibGljIENhY2hlZEhUTUxDb2xsZWN0aW9uPEhU
TUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLCBDb2xsZWN0aW9uVHlwZVRyYWl0czxGb3JtQ29udHJv
bHM+Ojp0cmF2ZXJzYWxUeXBlPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxIVE1MRm9ybUNv
bnRyb2xzQ29sbGVjdGlvbj4gY3JlYXRlKENvbnRhaW5lck5vZGUmLCBDb2xsZWN0aW9uVHlwZSk7
CiAgICAgdmlydHVhbCB+SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24oKTsKIAorICAgIC8vIEZv
ciBDYWNoZWRIVE1MQ29sbGVjdGlvbi4KKyAgICBFbGVtZW50KiBjdXN0b21FbGVtZW50QWZ0ZXIo
RWxlbWVudCopIGNvbnN0OworCiBwcml2YXRlOgorICAgIHVzaW5nIEJhc2UgPSBDYWNoZWRIVE1M
Q29sbGVjdGlvbjxIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbiwgQ29sbGVjdGlvblR5cGVUcmFp
dHM8Rm9ybUNvbnRyb2xzPjo6dHJhdmVyc2FsVHlwZT47CiAgICAgZXhwbGljaXQgSFRNTEZvcm1D
b250cm9sc0NvbGxlY3Rpb24oQ29udGFpbmVyTm9kZSYpOwogCiAgICAgdmlydHVhbCBIVE1MRWxl
bWVudCogbmFtZWRJdGVtKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkgY29uc3Qgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVDYWNoZShEb2N1bWVudCYpIGNvbnN0IG92ZXJy
aWRlOworICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlQ2FjaGUoRG9jdW1lbnQmKSBvdmVycmlk
ZTsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlTmFtZWRFbGVtZW50Q2FjaGUoKSBjb25zdCBvdmVy
cmlkZTsKIAogICAgIGNvbnN0IFZlY3RvcjxGb3JtQXNzb2NpYXRlZEVsZW1lbnQqPiYgZm9ybUNv
bnRyb2xFbGVtZW50cygpIGNvbnN0OwogICAgIGNvbnN0IFZlY3RvcjxIVE1MSW1hZ2VFbGVtZW50
Kj4mIGZvcm1JbWFnZUVsZW1lbnRzKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBFbGVtZW50KiBjdXN0
b21FbGVtZW50QWZ0ZXIoRWxlbWVudCopIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgbXV0YWJsZSBF
bGVtZW50KiBtX2NhY2hlZEVsZW1lbnQ7CiAgICAgbXV0YWJsZSB1bnNpZ25lZCBtX2NhY2hlZEVs
ZW1lbnRPZmZzZXRJbkFycmF5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
Rm9ybUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3Bw
CmluZGV4IDVmZmEzYThhNzE5OTc4N2Y3ZGY3ZGYxZjgwOWE2OGFlNjQzZDAxZWQuLjA1NDI3OWZm
MWVmNWE4YzNiMTgwYTRiODBkMjBmYmM5ZWJmYWUxODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxGb3JtRWxlbWVudC5jcHAKQEAgLTM3LDExICszNywxMiBAQAogI2luY2x1ZGUgIkZyYW1lLmgi
CiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudC5o
IgotI2luY2x1ZGUgIkhUTUxDb2xsZWN0aW9uLmgiCisjaW5jbHVkZSAiSFRNTEZvcm1Db250cm9s
c0NvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJIVE1MSW1hZ2VFbGVtZW50LmgiCiAjaW5jbHVkZSAi
SFRNTElucHV0RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhU
TUxUYWJsZUVsZW1lbnQuaCIKKyNpbmNsdWRlICJOb2RlUmFyZURhdGEuaCIKICNpbmNsdWRlICJQ
YWdlLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGV4dENvbnRyb2wuaCIKICNpbmNsdWRlICJTY3JpcHRD
b250cm9sbGVyLmgiCkBAIC02MzgsNyArNjM5LDcgQEAgdm9pZCBIVE1MRm9ybUVsZW1lbnQ6OnJl
bW92ZUltZ0VsZW1lbnQoSFRNTEltYWdlRWxlbWVudCogZSkKIAogUmVmPEhUTUxDb2xsZWN0aW9u
PiBIVE1MRm9ybUVsZW1lbnQ6OmVsZW1lbnRzKCkKIHsKLSAgICByZXR1cm4gZW5zdXJlQ2FjaGVk
SFRNTENvbGxlY3Rpb24oRm9ybUNvbnRyb2xzKTsKKyAgICByZXR1cm4gZW5zdXJlUmFyZURhdGEo
KS5lbnN1cmVOb2RlTGlzdHMoKS5hZGRDYWNoZWRDb2xsZWN0aW9uPEhUTUxGb3JtQ29udHJvbHND
b2xsZWN0aW9uPigqdGhpcywgRm9ybUNvbnRyb2xzKTsKIH0KIAogU3RyaW5nIEhUTUxGb3JtRWxl
bWVudDo6bmFtZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
YXBFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1hcEVsZW1lbnQuY3BwCmlu
ZGV4IGEzYzljMzM5MjNhNzBmYzhlYjk2ZDNlMzBkYTBjNDNiZTdhYTAyMGIuLjNlZTYxYmFhMDAx
ZTIzNGE0YjMzZjdkMTU4YmM2ODY5OTJjNDZjZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1hcEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1h
cEVsZW1lbnQuY3BwCkBAIC0yNSwxMSArMjUsMTIgQEAKICNpbmNsdWRlICJBdHRyaWJ1dGUuaCIK
ICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkVsZW1lbnRJdGVyYXRvci5oIgorI2lu
Y2x1ZGUgIkdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxBcmVh
RWxlbWVudC5oIgotI2luY2x1ZGUgIkhUTUxDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiSFRNTElt
YWdlRWxlbWVudC5oIgogI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKICNpbmNsdWRlICJJbnRT
aXplLmgiCisjaW5jbHVkZSAiTm9kZVJhcmVEYXRhLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IApAQCAtMTEyLDcgKzExMyw3IEBAIHZvaWQgSFRNTE1hcEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluCiAKIFJlZjxIVE1M
Q29sbGVjdGlvbj4gSFRNTE1hcEVsZW1lbnQ6OmFyZWFzKCkKIHsKLSAgICByZXR1cm4gZW5zdXJl
Q2FjaGVkSFRNTENvbGxlY3Rpb24oTWFwQXJlYXMpOworICAgIHJldHVybiBlbnN1cmVSYXJlRGF0
YSgpLmVuc3VyZU5vZGVMaXN0cygpLmFkZENhY2hlZENvbGxlY3Rpb248R2VuZXJpY0NhY2hlZEhU
TUxDb2xsZWN0aW9uPENvbGxlY3Rpb25UeXBlVHJhaXRzPE1hcEFyZWFzPjo6dHJhdmVyc2FsVHlw
ZT4+KCp0aGlzLCBNYXBBcmVhcyk7CiB9CiAKIE5vZGU6Okluc2VydGlvbk5vdGlmaWNhdGlvblJl
cXVlc3QgSFRNTE1hcEVsZW1lbnQ6Omluc2VydGVkSW50byhDb250YWluZXJOb2RlJiBpbnNlcnRp
b25Qb2ludCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE5hbWVDb2xsZWN0
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE5hbWVDb2xsZWN0aW9uLmNwcAppbmRl
eCAzN2Y1OGMxNGUxY2RjNWQ2MWMyMzU1MmFmZTYxNjY4MGU5ZmY5ODUzLi4zMjk3NDliYmIwZDMw
ZjkwYzc0NTg3NGQwMTVhMzc0NTUyMzMzNWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxOYW1lQ29sbGVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TmFtZUNvbGxlY3Rpb24uY3BwCkBAIC0zNiwxOSArMzYsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKLUhUTUxOYW1lQ29sbGVjdGlvbjo6SFRN
TE5hbWVDb2xsZWN0aW9uKERvY3VtZW50JiBkb2N1bWVudCwgQ29sbGVjdGlvblR5cGUgdHlwZSwg
Y29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKQotICAgIDogSFRNTENvbGxlY3Rpb24oZG9jdW1lbnQs
IHR5cGUpCi0gICAgLCBtX25hbWUobmFtZSkKLXsKLX0KLQotSFRNTE5hbWVDb2xsZWN0aW9uOjp+
SFRNTE5hbWVDb2xsZWN0aW9uKCkKLXsKLSAgICBBU1NFUlQodHlwZSgpID09IFdpbmRvd05hbWVk
SXRlbXMgfHwgdHlwZSgpID09IERvY3VtZW50TmFtZWRJdGVtcyk7Ci0KLSAgICBkb2N1bWVudCgp
Lm5vZGVMaXN0cygpLT5yZW1vdmVDYWNoZWRDb2xsZWN0aW9uKHRoaXMsIG1fbmFtZSk7Ci19Ci0K
IGJvb2wgV2luZG93TmFtZUNvbGxlY3Rpb246OmVsZW1lbnRNYXRjaGVzSWZOYW1lQXR0cmlidXRl
TWF0Y2goY29uc3QgRWxlbWVudCYgZWxlbWVudCkKIHsKICAgICByZXR1cm4gaXM8SFRNTEltYWdl
RWxlbWVudD4oZWxlbWVudCkgfHwgaXM8SFRNTEZvcm1FbGVtZW50PihlbGVtZW50KSB8fCBpczxI
VE1MQXBwbGV0RWxlbWVudD4oZWxlbWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE5hbWVDb2xsZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxOYW1lQ29s
bGVjdGlvbi5oCmluZGV4IDMyMDc0M2Q1YWE5Y2ZiYjgyMTg0NTU4ZDgyMDE3ODk4YzA4Zjc3Mzcu
LjU2M2ZmOGRhZTk4ZThjZTJjODM0OTcwMmRkYTVkZmUyN2UyNzE4YzUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE5hbWVDb2xsZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTmFtZUNvbGxlY3Rpb24uaApAQCAtMjMsMzIgKzIzLDUyIEBACiAjaWZuZGVm
IEhUTUxOYW1lQ29sbGVjdGlvbl9oCiAjZGVmaW5lIEhUTUxOYW1lQ29sbGVjdGlvbl9oCiAKLSNp
bmNsdWRlICJIVE1MQ29sbGVjdGlvbi5oIgorI2luY2x1ZGUgIkNhY2hlZEhUTUxDb2xsZWN0aW9u
LmgiCisjaW5jbHVkZSAiTm9kZVJhcmVEYXRhLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWlj
U3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRG9jdW1lbnQ7CiAKLWNs
YXNzIEhUTUxOYW1lQ29sbGVjdGlvbiA6IHB1YmxpYyBIVE1MQ29sbGVjdGlvbiB7Cit0ZW1wbGF0
ZSA8dHlwZW5hbWUgSFRNTENvbGxlY3Rpb25DbGFzcywgQ29sbGVjdGlvblRyYXZlcnNhbFR5cGUg
dHJhdmVyc2FsVHlwZT4KK2NsYXNzIEhUTUxOYW1lQ29sbGVjdGlvbiA6IHB1YmxpYyBDYWNoZWRI
VE1MQ29sbGVjdGlvbjxIVE1MQ29sbGVjdGlvbkNsYXNzLCB0cmF2ZXJzYWxUeXBlPiB7CiBwdWJs
aWM6CiAgICAgdmlydHVhbCB+SFRNTE5hbWVDb2xsZWN0aW9uKCk7CiAKLSAgICBEb2N1bWVudCYg
ZG9jdW1lbnQoKSB7IHJldHVybiBkb3duY2FzdDxEb2N1bWVudD4ob3duZXJOb2RlKCkpOyB9Ci0K
IHByb3RlY3RlZDoKICAgICBIVE1MTmFtZUNvbGxlY3Rpb24oRG9jdW1lbnQmLCBDb2xsZWN0aW9u
VHlwZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKTsKIAogICAgIEF0b21pY1N0cmluZyBtX25h
bWU7CisKK3ByaXZhdGU6CisgICAgdXNpbmcgQmFzZSA9IENhY2hlZEhUTUxDb2xsZWN0aW9uPEhU
TUxDb2xsZWN0aW9uQ2xhc3MsIHRyYXZlcnNhbFR5cGU+OworICAgIERvY3VtZW50JiBkb2N1bWVu
dCgpIHsgcmV0dXJuIGRvd25jYXN0PERvY3VtZW50PihCYXNlOjpvd25lck5vZGUoKSk7IH0KIH07
CiAKLWNsYXNzIFdpbmRvd05hbWVDb2xsZWN0aW9uIGZpbmFsIDogcHVibGljIEhUTUxOYW1lQ29s
bGVjdGlvbiB7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgSFRNTENvbGxlY3Rpb25DbGFzcywgQ29sbGVj
dGlvblRyYXZlcnNhbFR5cGUgdHJhdmVyc2FsVHlwZT4KK0hUTUxOYW1lQ29sbGVjdGlvbjxIVE1M
Q29sbGVjdGlvbkNsYXNzLCB0cmF2ZXJzYWxUeXBlPjo6SFRNTE5hbWVDb2xsZWN0aW9uKERvY3Vt
ZW50JiBkb2N1bWVudCwgQ29sbGVjdGlvblR5cGUgdHlwZSwgY29uc3QgQXRvbWljU3RyaW5nJiBu
YW1lKQorICAgIDogQ2FjaGVkSFRNTENvbGxlY3Rpb248SFRNTENvbGxlY3Rpb25DbGFzcywgdHJh
dmVyc2FsVHlwZT4oZG9jdW1lbnQsIHR5cGUpCisgICAgLCBtX25hbWUobmFtZSkKK3sKK30KKwor
dGVtcGxhdGUgPHR5cGVuYW1lIEhUTUxDb2xsZWN0aW9uQ2xhc3MsIENvbGxlY3Rpb25UcmF2ZXJz
YWxUeXBlIHRyYXZlcnNhbFR5cGU+CitIVE1MTmFtZUNvbGxlY3Rpb248SFRNTENvbGxlY3Rpb25D
bGFzcywgdHJhdmVyc2FsVHlwZT46On5IVE1MTmFtZUNvbGxlY3Rpb24oKQoreworICAgIEFTU0VS
VChCYXNlOjp0eXBlKCkgPT0gV2luZG93TmFtZWRJdGVtcyB8fCBCYXNlOjp0eXBlKCkgPT0gRG9j
dW1lbnROYW1lZEl0ZW1zKTsKKworICAgIGRvY3VtZW50KCkubm9kZUxpc3RzKCktPnJlbW92ZUNh
Y2hlZENvbGxlY3Rpb24odGhpcywgbV9uYW1lKTsKK30KKworY2xhc3MgV2luZG93TmFtZUNvbGxl
Y3Rpb24gZmluYWwgOiBwdWJsaWMgSFRNTE5hbWVDb2xsZWN0aW9uPFdpbmRvd05hbWVDb2xsZWN0
aW9uLCBDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6RGVzY2VuZGFudHM+IHsKIHB1YmxpYzoKICAg
ICBzdGF0aWMgUmVmPFdpbmRvd05hbWVDb2xsZWN0aW9uPiBjcmVhdGUoRG9jdW1lbnQmIGRvY3Vt
ZW50LCBDb2xsZWN0aW9uVHlwZSB0eXBlLCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpCiAgICAg
ewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXaW5kb3dOYW1lQ29sbGVjdGlvbihkb2N1
bWVudCwgdHlwZSwgbmFtZSkpOwogICAgIH0KIAorICAgIC8vIEZvciBDYWNoZWRIVE1MQ29sbGVj
dGlvbi4KICAgICBib29sIGVsZW1lbnRNYXRjaGVzKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpIGNv
bnN0IHsgcmV0dXJuIGVsZW1lbnRNYXRjaGVzKGVsZW1lbnQsIG1fbmFtZS5pbXBsKCkpOyB9CiAK
ICAgICBzdGF0aWMgYm9vbCBlbGVtZW50TWF0Y2hlc0lmSWRBdHRyaWJ1dGVNYXRjaChjb25zdCBF
bGVtZW50JikgeyByZXR1cm4gdHJ1ZTsgfQpAQCAtNTcsMTMgKzc3LDEzIEBAIHB1YmxpYzoKIAog
cHJpdmF0ZToKICAgICBXaW5kb3dOYW1lQ29sbGVjdGlvbihEb2N1bWVudCYgZG9jdW1lbnQsIENv
bGxlY3Rpb25UeXBlIHR5cGUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkKLSAgICAgICAgOiBI
VE1MTmFtZUNvbGxlY3Rpb24oZG9jdW1lbnQsIHR5cGUsIG5hbWUpCisgICAgICAgIDogSFRNTE5h
bWVDb2xsZWN0aW9uPFdpbmRvd05hbWVDb2xsZWN0aW9uLCBDb2xsZWN0aW9uVHJhdmVyc2FsVHlw
ZTo6RGVzY2VuZGFudHM+KGRvY3VtZW50LCB0eXBlLCBuYW1lKQogICAgIHsKICAgICAgICAgQVNT
RVJUKHR5cGUgPT0gV2luZG93TmFtZWRJdGVtcyk7CiAgICAgfQogfTsKIAotY2xhc3MgRG9jdW1l
bnROYW1lQ29sbGVjdGlvbiBmaW5hbCA6IHB1YmxpYyBIVE1MTmFtZUNvbGxlY3Rpb24geworY2xh
c3MgRG9jdW1lbnROYW1lQ29sbGVjdGlvbiBmaW5hbCA6IHB1YmxpYyBIVE1MTmFtZUNvbGxlY3Rp
b248RG9jdW1lbnROYW1lQ29sbGVjdGlvbiwgQ29sbGVjdGlvblRyYXZlcnNhbFR5cGU6OkRlc2Nl
bmRhbnRzPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxEb2N1bWVudE5hbWVDb2xsZWN0aW9u
PiBjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBDb2xsZWN0aW9uVHlwZSB0eXBlLCBjb25zdCBB
dG9taWNTdHJpbmcmIG5hbWUpCiAgICAgewpAQCAtNzIsMTMgKzkyLDE1IEBAIHB1YmxpYzoKIAog
ICAgIHN0YXRpYyBib29sIGVsZW1lbnRNYXRjaGVzSWZJZEF0dHJpYnV0ZU1hdGNoKGNvbnN0IEVs
ZW1lbnQmKTsKICAgICBzdGF0aWMgYm9vbCBlbGVtZW50TWF0Y2hlc0lmTmFtZUF0dHJpYnV0ZU1h
dGNoKGNvbnN0IEVsZW1lbnQmKTsKKworICAgIC8vIEZvciBDYWNoZWRIVE1MQ29sbGVjdGlvbi4K
ICAgICBib29sIGVsZW1lbnRNYXRjaGVzKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpIGNvbnN0IHsg
cmV0dXJuIGVsZW1lbnRNYXRjaGVzKGVsZW1lbnQsIG1fbmFtZS5pbXBsKCkpOyB9CiAKICAgICBz
dGF0aWMgYm9vbCBlbGVtZW50TWF0Y2hlcyhjb25zdCBFbGVtZW50JiwgY29uc3QgQXRvbWljU3Ry
aW5nSW1wbCopOwogCiBwcml2YXRlOgogICAgIERvY3VtZW50TmFtZUNvbGxlY3Rpb24oRG9jdW1l
bnQmIGRvY3VtZW50LCBDb2xsZWN0aW9uVHlwZSB0eXBlLCBjb25zdCBBdG9taWNTdHJpbmcmIG5h
bWUpCi0gICAgICAgIDogSFRNTE5hbWVDb2xsZWN0aW9uKGRvY3VtZW50LCB0eXBlLCBuYW1lKQor
ICAgICAgICA6IEhUTUxOYW1lQ29sbGVjdGlvbjxEb2N1bWVudE5hbWVDb2xsZWN0aW9uLCBDb2xs
ZWN0aW9uVHJhdmVyc2FsVHlwZTo6RGVzY2VuZGFudHM+KGRvY3VtZW50LCB0eXBlLCBuYW1lKQog
ICAgIHsKICAgICAgICAgQVNTRVJUKHR5cGUgPT0gRG9jdW1lbnROYW1lZEl0ZW1zKTsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25zQ29sbGVjdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25zQ29sbGVjdGlvbi5jcHAKaW5kZXgg
MTUwOGI0MTVjNDJkYWViMTA4MDFjZDg5YzI5MTQ2ZDc3MDkzMTJlOS4uY2YzOTk5MGJhMmQwNDEz
MTRkY2Y0NjU1YjNmYjRmMThhNGMzZmM1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MT3B0aW9uc0NvbGxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE9wdGlvbnNDb2xsZWN0aW9uLmNwcApAQCAtMjcsNyArMjcsNyBAQAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBIVE1MT3B0aW9uc0NvbGxlY3Rpb246OkhUTUxPcHRpb25zQ29sbGVjdGlvbihIVE1M
U2VsZWN0RWxlbWVudCYgc2VsZWN0KQotICAgIDogSFRNTENvbGxlY3Rpb24oc2VsZWN0LCBTZWxl
Y3RPcHRpb25zKQorICAgIDogQmFzZShzZWxlY3QsIFNlbGVjdE9wdGlvbnMpCiB7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmggYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25zQ29sbGVjdGlvbi5oCmluZGV4IDYzNjY4NjVl
NTVjMWMzYTY3Nzk0MTUzOWUzMzcxMTFkM2FmMzllMTYuLjdhODQyMDcyYmNlYjUzNGQzNzhjZjhm
YjMzZDc3ODdlYjJjNGFkMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9w
dGlvbnNDb2xsZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uc0Nv
bGxlY3Rpb24uaApAQCAtMjQsNyArMjQsNyBAQAogI2lmbmRlZiBIVE1MT3B0aW9uc0NvbGxlY3Rp
b25faAogI2RlZmluZSBIVE1MT3B0aW9uc0NvbGxlY3Rpb25faAogCi0jaW5jbHVkZSAiSFRNTENv
bGxlY3Rpb24uaCIKKyNpbmNsdWRlICJDYWNoZWRIVE1MQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUg
IkhUTUxTZWxlY3RFbGVtZW50LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTMzLDcgKzMz
LDcgQEAgY2xhc3MgSFRNTE9wdGlvbkVsZW1lbnQ7CiAKIHR5cGVkZWYgaW50IEV4Y2VwdGlvbkNv
ZGU7CiAKLWNsYXNzIEhUTUxPcHRpb25zQ29sbGVjdGlvbiBmaW5hbCA6IHB1YmxpYyBIVE1MQ29s
bGVjdGlvbiB7CitjbGFzcyBIVE1MT3B0aW9uc0NvbGxlY3Rpb24gZmluYWwgOiBwdWJsaWMgQ2Fj
aGVkSFRNTENvbGxlY3Rpb248SFRNTE9wdGlvbnNDb2xsZWN0aW9uLCBDb2xsZWN0aW9uVHlwZVRy
YWl0czxTZWxlY3RPcHRpb25zPjo6dHJhdmVyc2FsVHlwZT4gewogcHVibGljOgogICAgIHN0YXRp
YyBSZWY8SFRNTE9wdGlvbnNDb2xsZWN0aW9uPiBjcmVhdGUoSFRNTFNlbGVjdEVsZW1lbnQmLCBD
b2xsZWN0aW9uVHlwZSk7CiAKQEAgLTUwLDEwICs1MCwxOSBAQCBwdWJsaWM6CiAKICAgICB2b2lk
IHNldExlbmd0aCh1bnNpZ25lZCwgRXhjZXB0aW9uQ29kZSYpOwogCisgICAgLy8gRm9yIENhY2hl
ZEhUTUxDb2xsZWN0aW9uLgorICAgIGJvb2wgZWxlbWVudE1hdGNoZXMoRWxlbWVudCYpIGNvbnN0
OworCiBwcml2YXRlOgorICAgIHVzaW5nIEJhc2UgPSBDYWNoZWRIVE1MQ29sbGVjdGlvbjxIVE1M
T3B0aW9uc0NvbGxlY3Rpb24sIENvbGxlY3Rpb25UeXBlVHJhaXRzPFNlbGVjdE9wdGlvbnM+Ojp0
cmF2ZXJzYWxUeXBlPjsKICAgICBleHBsaWNpdCBIVE1MT3B0aW9uc0NvbGxlY3Rpb24oSFRNTFNl
bGVjdEVsZW1lbnQmKTsKIH07CiAKK2lubGluZSBib29sIEhUTUxPcHRpb25zQ29sbGVjdGlvbjo6
ZWxlbWVudE1hdGNoZXMoRWxlbWVudCYgZWxlbWVudCkgY29uc3QKK3sKKyAgICByZXR1cm4gZWxl
bWVudC5oYXNUYWdOYW1lKEhUTUxOYW1lczo6b3B0aW9uVGFnKTsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0hUTUxDT0xMRUNUSU9OKEhUTUxP
cHRpb25zQ29sbGVjdGlvbiwgU2VsZWN0T3B0aW9ucykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
U2VsZWN0RWxlbWVudC5jcHAKaW5kZXggZDUwNWYzZjEwYTBjNDg1MjQ0NThiOTQ1NGQ0ZWViZDRj
OTU3ZDc3MC4uYzhiNDI2MzIzMzk3MDQ2ZDhiNGUzOTEyYmVmN2Y0Mzk5ZTUwM2M4MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHAKQEAgLTM4LDYgKzM4LDcgQEAK
ICNpbmNsdWRlICJGb3JtQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkZvcm1EYXRhTGlzdC5oIgog
I2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiR2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9u
LmgiCiAjaW5jbHVkZSAiSFRNTEZvcm1FbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgi
CiAjaW5jbHVkZSAiSFRNTE9wdEdyb3VwRWxlbWVudC5oIgpAQCAtNDYsNiArNDcsNyBAQAogI2lu
Y2x1ZGUgIktleWJvYXJkRXZlbnQuaCIKICNpbmNsdWRlICJMb2NhbGl6ZWRTdHJpbmdzLmgiCiAj
aW5jbHVkZSAiTW91c2VFdmVudC5oIgorI2luY2x1ZGUgIk5vZGVSYXJlRGF0YS5oIgogI2luY2x1
ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQbGF0Zm9ybU1vdXNlRXZlbnQuaCIKICNpbmNsdWRlICJS
ZW5kZXJMaXN0Qm94LmgiCkBAIC0zNzQsMTIgKzM3NiwxMiBAQCBib29sIEhUTUxTZWxlY3RFbGVt
ZW50OjpjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKGNvbnN0IE5vZGUmIGNoaWxkKSBjb25zdAog
CiBSZWY8SFRNTENvbGxlY3Rpb24+IEhUTUxTZWxlY3RFbGVtZW50OjpzZWxlY3RlZE9wdGlvbnMo
KQogewotICAgIHJldHVybiBlbnN1cmVDYWNoZWRIVE1MQ29sbGVjdGlvbihTZWxlY3RlZE9wdGlv
bnMpOworICAgIHJldHVybiBlbnN1cmVSYXJlRGF0YSgpLmVuc3VyZU5vZGVMaXN0cygpLmFkZENh
Y2hlZENvbGxlY3Rpb248R2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uPENvbGxlY3Rpb25UeXBl
VHJhaXRzPFNlbGVjdGVkT3B0aW9ucz46OnRyYXZlcnNhbFR5cGU+PigqdGhpcywgU2VsZWN0ZWRP
cHRpb25zKTsKIH0KIAogUmVmPEhUTUxPcHRpb25zQ29sbGVjdGlvbj4gSFRNTFNlbGVjdEVsZW1l
bnQ6Om9wdGlvbnMoKQogewotICAgIHJldHVybiBkb3duY2FzdDxIVE1MT3B0aW9uc0NvbGxlY3Rp
b24+KGVuc3VyZUNhY2hlZEhUTUxDb2xsZWN0aW9uKFNlbGVjdE9wdGlvbnMpLmdldCgpKTsKKyAg
ICByZXR1cm4gZW5zdXJlUmFyZURhdGEoKS5lbnN1cmVOb2RlTGlzdHMoKS5hZGRDYWNoZWRDb2xs
ZWN0aW9uPEhUTUxPcHRpb25zQ29sbGVjdGlvbj4oKnRoaXMsIFNlbGVjdE9wdGlvbnMpOwogfQog
CiB2b2lkIEhUTUxTZWxlY3RFbGVtZW50Ojp1cGRhdGVMaXN0SXRlbVNlbGVjdGVkU3RhdGVzKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuY3BwCmluZGV4IDc0NTczNjFiNmUx
MjVlYWVmOTY1YWY1NDUzM2JmMzNmNjg0NmVhYTcuLjAyODA4NmE2MThkZjZiMzRlZTM0NGFmMWQw
MzdhNDA3NGU2NjQ4NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxl
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmNw
cApAQCAtMzEsMTIgKzMxLDE0IEBACiAjaW5jbHVkZSAiQ1NTVmFsdWVQb29sLmgiCiAjaW5jbHVk
ZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGVQbGFjZWhvbGRlci5o
IgorI2luY2x1ZGUgIkdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkhU
TUxOYW1lcy5oIgogI2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIKICNpbmNsdWRlICJIVE1M
VGFibGVDYXB0aW9uRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxUYWJsZVJvd0VsZW1lbnQuaCIK
ICNpbmNsdWRlICJIVE1MVGFibGVSb3dzQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxUYWJs
ZVNlY3Rpb25FbGVtZW50LmgiCisjaW5jbHVkZSAiTm9kZVJhcmVEYXRhLmgiCiAjaW5jbHVkZSAi
UmVuZGVyVGFibGUuaCIKICNpbmNsdWRlICJTdHlsZVByb3BlcnRpZXMuaCIKICNpbmNsdWRlIDx3
dGYvUmVmLmg+CkBAIC01NTEsMTIgKzU1MywxMiBAQCBib29sIEhUTUxUYWJsZUVsZW1lbnQ6Omlz
VVJMQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYgYXR0cmlidXRlKSBjb25zdAogCiBSZWY8SFRN
TENvbGxlY3Rpb24+IEhUTUxUYWJsZUVsZW1lbnQ6OnJvd3MoKQogewotICAgIHJldHVybiBlbnN1
cmVDYWNoZWRIVE1MQ29sbGVjdGlvbihUYWJsZVJvd3MpOworICAgIHJldHVybiBlbnN1cmVSYXJl
RGF0YSgpLmVuc3VyZU5vZGVMaXN0cygpLmFkZENhY2hlZENvbGxlY3Rpb248SFRNTFRhYmxlUm93
c0NvbGxlY3Rpb24+KCp0aGlzLCBUYWJsZVJvd3MpOwogfQogCiBSZWY8SFRNTENvbGxlY3Rpb24+
IEhUTUxUYWJsZUVsZW1lbnQ6OnRCb2RpZXMoKQogewotICAgIHJldHVybiBlbnN1cmVDYWNoZWRI
VE1MQ29sbGVjdGlvbihUYWJsZVRCb2RpZXMpOworICAgIHJldHVybiBlbnN1cmVSYXJlRGF0YSgp
LmVuc3VyZU5vZGVMaXN0cygpLmFkZENhY2hlZENvbGxlY3Rpb248R2VuZXJpY0NhY2hlZEhUTUxD
b2xsZWN0aW9uPENvbGxlY3Rpb25UeXBlVHJhaXRzPFRhYmxlVEJvZGllcz46OnRyYXZlcnNhbFR5
cGU+PigqdGhpcywgVGFibGVUQm9kaWVzKTsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBIVE1M
VGFibGVFbGVtZW50OjpydWxlcygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxUYWJsZVJvd0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFi
bGVSb3dFbGVtZW50LmNwcAppbmRleCBkNDM1MWVhZmNhNWU2Zjc1NTI2Yjk3YTMwNGJhNjdhZmE2
ODA3ZWE4Li5jODcyNTlmNWVjYjk2ZDBhYTYwNDhkNGQxNGFlOGI2MGY5M2I2OGI2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVJvd0VsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlUm93RWxlbWVudC5jcHAKQEAgLTI2LDEyICsyNiwx
MyBAQAogI2luY2x1ZGUgIkhUTUxUYWJsZVJvd0VsZW1lbnQuaCIKIAogI2luY2x1ZGUgIkV4Y2Vw
dGlvbkNvZGUuaCIKLSNpbmNsdWRlICJIVE1MQ29sbGVjdGlvbi5oIgorI2luY2x1ZGUgIkdlbmVy
aWNDYWNoZWRIVE1MQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1
ZGUgIkhUTUxUYWJsZUNlbGxFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFRhYmxlRWxlbWVudC5o
IgogI2luY2x1ZGUgIkhUTUxUYWJsZVNlY3Rpb25FbGVtZW50LmgiCiAjaW5jbHVkZSAiTm9kZUxp
c3QuaCIKKyNpbmNsdWRlICJOb2RlUmFyZURhdGEuaCIKICNpbmNsdWRlICJUZXh0LmgiCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKQEAgLTE1Niw3ICsxNTcsNyBAQCB2b2lkIEhUTUxUYWJsZVJvd0Vs
ZW1lbnQ6OmRlbGV0ZUNlbGwoaW50IGluZGV4LCBFeGNlcHRpb25Db2RlJiBlYykKIAogUmVmPEhU
TUxDb2xsZWN0aW9uPiBIVE1MVGFibGVSb3dFbGVtZW50OjpjZWxscygpCiB7Ci0gICAgcmV0dXJu
IGVuc3VyZUNhY2hlZEhUTUxDb2xsZWN0aW9uKFRSQ2VsbHMpOworICAgIHJldHVybiBlbnN1cmVS
YXJlRGF0YSgpLmVuc3VyZU5vZGVMaXN0cygpLmFkZENhY2hlZENvbGxlY3Rpb248R2VuZXJpY0Nh
Y2hlZEhUTUxDb2xsZWN0aW9uPENvbGxlY3Rpb25UeXBlVHJhaXRzPFRSQ2VsbHM+Ojp0cmF2ZXJz
YWxUeXBlPj4oKnRoaXMsIFRSQ2VsbHMpOwogfQogCiB2b2lkIEhUTUxUYWJsZVJvd0VsZW1lbnQ6
OnNldENlbGxzKEhUTUxDb2xsZWN0aW9uKiwgRXhjZXB0aW9uQ29kZSYgZWMpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVJvd3NDb2xsZWN0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlUm93c0NvbGxlY3Rpb24uY3BwCmluZGV4IGJmYTVmNmQ3
OGQwZmJjYTczYjgzZWJlM2EyZTAxYzJhNDEzNjBhMjUuLjI0ODllYTYxM2RlNzIwNDZlMjhjYzZj
ZThiYmM3MGQxNjA0ZWVkYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRh
YmxlUm93c0NvbGxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxl
Um93c0NvbGxlY3Rpb24uY3BwCkBAIC0xNDksNyArMTQ5LDcgQEAgSFRNTFRhYmxlUm93RWxlbWVu
dCogSFRNTFRhYmxlUm93c0NvbGxlY3Rpb246Omxhc3RSb3coSFRNTFRhYmxlRWxlbWVudCYgdGFi
bGUpCiB9CiAKIEhUTUxUYWJsZVJvd3NDb2xsZWN0aW9uOjpIVE1MVGFibGVSb3dzQ29sbGVjdGlv
bihIVE1MVGFibGVFbGVtZW50JiB0YWJsZSkKLSAgICA6IEhUTUxDb2xsZWN0aW9uKHRhYmxlLCBU
YWJsZVJvd3MsIEN1c3RvbUZvcndhcmRPbmx5VHJhdmVyc2FsKQorICAgIDogQmFzZSh0YWJsZSwg
VGFibGVSb3dzKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxU
YWJsZVJvd3NDb2xsZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVJvd3ND
b2xsZWN0aW9uLmgKaW5kZXggOWViNWZhNmE3YTI5ODE0ZjIzZTE0ZTM3YWE5OTUzNmRkZWRhZjk0
NC4uYzhmNWMxZjVmNzU2ZGIxOGRhZDVkNzY3MzMxOGVlNDZmMmMxOWU1MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVSb3dzQ29sbGVjdGlvbi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlUm93c0NvbGxlY3Rpb24uaApAQCAtMjksMTQgKzI5LDE0
IEBACiAjaWZuZGVmIEhUTUxUYWJsZVJvd3NDb2xsZWN0aW9uX2gKICNkZWZpbmUgSFRNTFRhYmxl
Um93c0NvbGxlY3Rpb25faAogCi0jaW5jbHVkZSAiSFRNTENvbGxlY3Rpb24uaCIKKyNpbmNsdWRl
ICJDYWNoZWRIVE1MQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxUYWJsZUVsZW1lbnQuaCIK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBIVE1MVGFibGVSb3dFbGVtZW50OwogCi1j
bGFzcyBIVE1MVGFibGVSb3dzQ29sbGVjdGlvbiBmaW5hbCA6IHB1YmxpYyBIVE1MQ29sbGVjdGlv
biB7CitjbGFzcyBIVE1MVGFibGVSb3dzQ29sbGVjdGlvbiBmaW5hbCA6IHB1YmxpYyBDYWNoZWRI
VE1MQ29sbGVjdGlvbjxIVE1MVGFibGVSb3dzQ29sbGVjdGlvbiwgQ29sbGVjdGlvblR5cGVUcmFp
dHM8VGFibGVSb3dzPjo6dHJhdmVyc2FsVHlwZT4gewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8
SFRNTFRhYmxlUm93c0NvbGxlY3Rpb24+IGNyZWF0ZShIVE1MVGFibGVFbGVtZW50JiwgQ29sbGVj
dGlvblR5cGUpOwogCkBAIC00NiwxMCArNDYsMTIgQEAgcHVibGljOgogICAgIHN0YXRpYyBIVE1M
VGFibGVSb3dFbGVtZW50KiByb3dBZnRlcihIVE1MVGFibGVFbGVtZW50JiwgSFRNTFRhYmxlUm93
RWxlbWVudCopOwogICAgIHN0YXRpYyBIVE1MVGFibGVSb3dFbGVtZW50KiBsYXN0Um93KEhUTUxU
YWJsZUVsZW1lbnQmKTsKIAorICAgIC8vIEZvciBDYWNoZWRIVE1MQ29sbGVjdGlvbi4KKyAgICBF
bGVtZW50KiBjdXN0b21FbGVtZW50QWZ0ZXIoRWxlbWVudCopIGNvbnN0OworCiBwcml2YXRlOgor
ICAgIHVzaW5nIEJhc2UgPSBDYWNoZWRIVE1MQ29sbGVjdGlvbjxIVE1MVGFibGVSb3dzQ29sbGVj
dGlvbiwgQ29sbGVjdGlvblR5cGVUcmFpdHM8VGFibGVSb3dzPjo6dHJhdmVyc2FsVHlwZT47CiAg
ICAgZXhwbGljaXQgSFRNTFRhYmxlUm93c0NvbGxlY3Rpb24oSFRNTFRhYmxlRWxlbWVudCYpOwot
Ci0gICAgdmlydHVhbCBFbGVtZW50KiBjdXN0b21FbGVtZW50QWZ0ZXIoRWxlbWVudCopIGNvbnN0
IG92ZXJyaWRlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVTZWN0aW9uRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxUYWJsZVNlY3Rpb25FbGVtZW50LmNwcAppbmRleCBmNzU3MTdlNTk4Mjky
Yjc0ZWQ0MjI3NThjNDgwNmRjNWMwMDdiYmRlLi45ZTQ1MzE2ZjhmM2Y0ZmM2ZGE4ZTNkY2RiMWIz
ZTRlMmRkOTI3ZDg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVNl
Y3Rpb25FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVNlY3Rp
b25FbGVtZW50LmNwcApAQCAtMjYsMTEgKzI2LDEzIEBACiAjaW5jbHVkZSAiSFRNTFRhYmxlU2Vj
dGlvbkVsZW1lbnQuaCIKIAogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJH
ZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJIVE1MQ29sbGVjdGlvbi5o
IgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhUTUxUYWJsZVJvd0VsZW1lbnQu
aCIKICNpbmNsdWRlICJIVE1MVGFibGVFbGVtZW50LmgiCiAjaW5jbHVkZSAiTm9kZUxpc3QuaCIK
KyNpbmNsdWRlICJOb2RlUmFyZURhdGEuaCIKICNpbmNsdWRlICJUZXh0LmgiCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKQEAgLTE0Nyw3ICsxNDksNyBAQCB2b2lkIEhUTUxUYWJsZVNlY3Rpb25FbGVt
ZW50OjpzZXRWQWxpZ24oY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKIAogUmVmPEhUTUxDb2xs
ZWN0aW9uPiBIVE1MVGFibGVTZWN0aW9uRWxlbWVudDo6cm93cygpCiB7Ci0gICAgcmV0dXJuIGVu
c3VyZUNhY2hlZEhUTUxDb2xsZWN0aW9uKFRTZWN0aW9uUm93cyk7CisgICAgcmV0dXJuIGVuc3Vy
ZVJhcmVEYXRhKCkuZW5zdXJlTm9kZUxpc3RzKCkuYWRkQ2FjaGVkQ29sbGVjdGlvbjxHZW5lcmlj
Q2FjaGVkSFRNTENvbGxlY3Rpb248Q29sbGVjdGlvblR5cGVUcmFpdHM8VFNlY3Rpb25Sb3dzPjo6
dHJhdmVyc2FsVHlwZT4+KCp0aGlzLCBUU2VjdGlvblJvd3MpOwogfQogCiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>259021</attachid>
            <date>2015-08-14 12:20:32 -0700</date>
            <delta_ts>2015-08-14 12:26:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-147979-20150814122013.patch</filename>
            <type>text/plain</type>
            <size>107374</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg4MzY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzE2NDY1NDRmOTcyZmEx
NzYyNDIxN2VkMTdiZDI3ZWQzZDFjNjZmOC4uYzUwMjZlZjM3OTUyNjRmNWE0ZDk4NDk0YjQxMzM4
ZjM3ZDM1ZWRhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4MCBAQAorMjAxNS0wOC0xMyAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFJlZmFjdG9yIEhUTUxDb2xs
ZWN0aW9uIHRvIGJlIGFzIGZhc3QgYXMgQ2FjaGVkTGl2ZU5vZGVMaXN0CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDc5NzkKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWZhY3RvciBIVE1MQ29sbGVjdGlv
biB0byBiZSBhcyBmYXN0IGFzIENhY2hlZExpdmVOb2RlTGlzdC4gVGhpcyBpcyBpbgorICAgICAg
ICBwcmVwYXJhdGlvbiBvZiBoYXZpbmcgZ2V0RWxlbWVudHNCeVRhZ05hbWUqKCkgLyBnZXRFbGVt
ZW50c0J5Q2xhc3NOYW1lKCkKKyAgICAgICAgcmV0dXJuIGFuIEhUTUxDb2xsZWN0aW9uIGluc3Rl
YWQgb2YgYSBOb2RlTGlzdCwgYXMgcGVyIHRoZQorICAgICAgICBzcGVjaWZpY2F0aW9uLiBDaHJv
bWUgYW5kIEZpcmVmb3ggYWxyZWFkeSBtYXRjaCB0aGUgc3BlY2lmaWNhdGlvbiBpbgorICAgICAg
ICB0aGlzIGNhc2UuCisKKyAgICAgICAgVHJhdmVyc2luZyBhbiBIVE1MQ29sbGVjdGlvbiB3YXMg
c2xvdyBiZWNhdXNlIG9mIGFsbCB0aGUgZXh0cmEKKyAgICAgICAgYnJhbmNoaW5nIGl0IGhhZCBj
b21wYXJlZCB0byBDYWNoZWRMaXZlTm9kZUxpc3QuIFRvIGFkZHJlc3MgdGhlIGlzc3VlLAorICAg
ICAgICB0aGlzIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgdGVtcGxhdGVkIENhY2hlZEhUTUxDb2xs
ZWN0aW9uIHN1YmNsYXNzLAorICAgICAgICB3aGljaCBiZWhhdmVzIGluIGEgc2ltaWxhciB3YXkg
YXMgQ2FjaGVkTGl2ZU5vZGVMaXN0LiBUaGUgMiB0ZW1wbGF0ZQorICAgICAgICBwYXJhbWV0ZXJz
IGFyZToKKyAgICAgICAgMS4gVGhlIHR5cGUgb2YgdGhlIHN1YmNsYXNzIG9mIENhY2hlZEhUTUxD
b2xsZWN0aW9uLCBzbyB3ZSBjYW4gY2FsbAorICAgICAgICAgICBlbGVtZW50TWF0Y2hlcygpIGRp
cmVjdGx5IG9uIHRoZSBzdWJjbGFzcywgd2l0aG91dCBuZWVkZWQgYW55CisgICAgICAgICAgIHZp
cnR1YWwgZnVuY3Rpb24gY2FsbCBvciBzd2l0Y2ggc3RhdGVtZW50LiBUaGlzIGlzIHRoZSBzYW1l
IGFwcHJvYWNoCisgICAgICAgICAgIGFzIGluIENhY2hlZExpdmVOb2RlTGlzdC4KKyAgICAgICAg
Mi4gVGhlIHR5cGUgb2YgdHJlZSB0cmF2ZXJzYWwgdXNlZCAoRGVzY2VuZGFudHMsIENoaWxkcmVu
T25seSwKKyAgICAgICAgICAgQ3VzdG9tRm9yd2FyZE9ubHkpLiBVbmxpa2UgTGl2ZU5vZGVMaXN0
LCBIVE1MQ29sbGVjdGlvbiBuZWVkcyB0bworICAgICAgICAgICBzdXBwb3J0IHRoZXNlIDMgdHlw
ZXMgb2YgdHJlZSB0cmF2ZXJzYWwuIFRoZXNlIHdlcmUgY2F1c2luZyBleHRyYQorICAgICAgICAg
ICBicmFuY2hpbmcgZm9yIGV2ZXJ5IGl0ZW0oKSBjYWxsLiBXZSBhcmUgbm93IGFibGUgdG8gY2hv
b3NlIHRoZSByaWdodAorICAgICAgICAgICB0eXBlIG9mIHRyYXZlcnNhbCBmb3IgdGhlIENhY2hl
ZEhUTUxDb2xsZWN0aW9uIGF0IGNvbXBpbGUgdGltZS4KKworICAgICAgICAqIFdlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgQWRkIG5ldyBmaWxlcyB0byB0aGUgUHJv
amVjdC4KKworICAgICAgICAqIGRvbS9Db250YWluZXJOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNvbnRhaW5lck5vZGU6OmNoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRhaW5l
ck5vZGU6OmNhY2hlZEhUTUxDb2xsZWN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBkb20vQ29u
dGFpbmVyTm9kZS5oOgorICAgICAgICBEcm9wIENvbnRhaW5lck5vZGU6OmVuc3VyZUNhY2hlZEhU
TUxDb2xsZWN0aW9uKCkgYW5kIHVzZQorICAgICAgICBOb2RlTGlzdHNOb2RlRGF0YTo6YWRkQ2Fj
aGVkQ29sbGVjdGlvbigpIGRpcmVjdGx5IGF0IGNhbGwgc2l0ZXMKKyAgICAgICAgaW5zdGVhZC4g
V2UgbmVlZCBhY2Nlc3MgdG8gdGhlIENvbGxlY3Rpb25UeXBlIGF0IGJ1aWxkLXRpbWUgc28KKyAg
ICAgICAgd2UgY2FuIHJlc29sdmUgdGhlIENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlIHBhcmFtZXRl
ciBmb3IgdGhlCisgICAgICAgIEdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbiB1c2luZyBDb2xs
ZWN0aW9uVHlwZVRyYWl0cy4KKworICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAg
ICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgIFVwZGF0ZSBlbnN1cmVDYWNoZWRDb2xsZWN0aW9u
KCkgc28gdGhlIENvbGxlY3Rpb25UeXBlIGlzIG5vdyBhIHRlbXBsYXRlCisgICAgICAgIHBhcmFt
ZXRlciBpbnN0ZWFkIG9mIGEgbWV0aG9kIGFyZ3VtZW50LiBXZSBuZWVkIHRvIGtub3cgdGhlCisg
ICAgICAgIENvbGxlY3Rpb25UeXBlIGF0IGJ1aWxkIHRpbWUgdG8gY29uc3RydWN0IHRoZSBHZW5l
cmljQ2FjaGVkSFRNTENvbGxlY3Rpb24uCisKKyAgICAgICAgKiBkb20vRWxlbWVudENoaWxkSXRl
cmF0b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnRU
eXBlPjo6b3BlcmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudENoaWxkQ29uc3RJdGVy
YXRvcjxFbGVtZW50VHlwZT46Om9wZXJhdG9yKToKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIGRl
Y3JlbWVudGluZyBhbiBFbGVtZW50Q2hpbGRJdGVyYXRvciwgZm9yIGNvbnNpc3RlbmN5CisgICAg
ICAgIHdpdGggRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvci4gV2UgbmVlZCB0aGlzIHRvIHN1cHBv
cnQgYmFja3dhcmQKKyAgICAgICAgdHJhdmVyc2FsIGluIENhY2hlZEhUTUxDb2xsZWN0aW9ucyB0
aGF0IHVzZSB0aGUgJ0NoaWxkcmVuT25seScgdHlwZQorICAgICAgICBvZiB0cmF2ZXJzYWwuCisK
KyAgICAgICAgKiBkb20vTGl2ZU5vZGVMaXN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRM
aXZlTm9kZUxpc3Q8Tm9kZUxpc3RUeXBlPjo6Y29sbGVjdGlvbkJlZ2luKToKKyAgICAgICAgKFdl
YkNvcmU6OkNhY2hlZExpdmVOb2RlTGlzdDxOb2RlTGlzdFR5cGU+Ojpjb2xsZWN0aW9uTGFzdCk6
CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRMaXZlTm9kZUxpc3Q8Tm9kZUxpc3RUeXBlPjo6Y29s
bGVjdGlvblRyYXZlcnNlRm9yd2FyZCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRMaXZlTm9k
ZUxpc3Q8Tm9kZUxpc3RUeXBlPjo6Y29sbGVjdGlvblRyYXZlcnNlQmFja3dhcmQpOgorICAgICAg
ICBNb3ZlIHRyYXZlcnNhbCBpbXBsZW1lbnRhdGlvbiB0byBDb2xsZWN0aW9uVHJhdmVyc2FsLmgs
IHNvIGl0IGNhbiBiZQorICAgICAgICBzaGFyZWQgd2l0aCBhY2hlZEhUTUxDb2xsZWN0aW9uLmgu
CisKKyAgICAgICAgKiBodG1sL0NhY2hlZEhUTUxDb2xsZWN0aW9uLmg6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6dHJhdmVyc2FsVHlwZT46OkNhY2hlZEhUTUxDb2xsZWN0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OnRyYXZlcnNhbFR5cGU+Ojp+Q2FjaGVkSFRNTENvbGxlY3Rpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6dHJhdmVyc2FsVHlwZT46OkNhY2hlZEhUTUxDb2xsZWN0aW9uOjptZW1v
cnlDb3N0KToKKyAgICAgICAgKFdlYkNvcmU6OnRyYXZlcnNhbFR5cGU+Ojpjb2xsZWN0aW9uQ2Fu
VHJhdmVyc2VCYWNrd2FyZCk6CisgICAgICAgIChXZWJDb3JlOjp0cmF2ZXJzYWxUeXBlPjo6Y29s
bGVjdGlvblRyYXZlcnNlRm9yd2FyZCk6CisgICAgICAgIChXZWJDb3JlOjp0cmF2ZXJzYWxUeXBl
Pjo6Y29sbGVjdGlvblRyYXZlcnNlQmFja3dhcmQpOgorICAgICAgICAoV2ViQ29yZTo6dHJhdmVy
c2FsVHlwZT46OndpbGxWYWxpZGF0ZUluZGV4Q2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6dHJh
dmVyc2FsVHlwZT46Omxlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjp0cmF2ZXJzYWxUeXBlPjo6
aXRlbSk6CisgICAgICAgIChXZWJDb3JlOjp0cmF2ZXJzYWxUeXBlPjo6aW52YWxpZGF0ZUNhY2hl
KToKKyAgICAgICAgKFdlYkNvcmU6OnRyYXZlcnNhbFR5cGU+OjplbGVtZW50TWF0Y2hlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpuYW1lU2hvdWxkQmVWaXNpYmxlSW5Eb2N1bWVudEFsbCk6CisgICAg
ICAgIChXZWJDb3JlOjp0cmF2ZXJzYWxUeXBlPjo6bmFtZWRJdGVtKToKKworICAgICAgICAqIGh0
bWwvQ29sbGVjdGlvblRyYXZlcnNhbC5oOiBBZGRlZC4KKyAgICAgICAgQWRkIG5ldyB0ZW1wbGF0
ZSBjbGFzcyB0aGF0IHByb3ZpZGUgdGhlIGNvbGxlY3Rpb24gdHJhdmVyc2FsIGNvZGUKKyAgICAg
ICAgbmVlZGVkIGJ5IENvbGxlY3Rpb25JbmRleENhY2hlLiBJdCBoYXMgdGVtcGxhdGUgc3BlY2lh
bGl6YXRpb25zIGZvcgorICAgICAgICBhbGwgMyB0eXBlcyBvZiB0cmF2ZXJzYWw6IERlc2NlbmRh
bnRzLCBDaGlsZHJlbk9ubHksIGFuZAorICAgICAgICBDdXN0b21Gb3J3YXJkT25seS4KKworICAg
ICAgICAqIGh0bWwvQ29sbGVjdGlvblR5cGUuaDoKKyAgICAgICAgQWRkIENvbGxlY3Rpb25UeXBl
VHJhaXRzIHRyYWl0cyBzbyB3ZSBjYW4gcmVzb2x2ZSB0aGUKKyAgICAgICAgQ29sbGVjdGlvblRy
YXZlcnNhbFR5cGUgdXNlZCBieSBhIHNwZWNpZmljIENvbGxlY3Rpb25UeXBlIGF0CisgICAgICAg
IGNvbXBpbGUtdGltZS4gVGhpcyBpcyBuZWVkZWQgZm9yIHRoZSBzZWNvbmQgdGVtcGxhdGUgcGFy
YW1ldGVyIG9mCisgICAgICAgIENhY2hlZEhUTUxDb2xsZWN0aW9uLgorCisgICAgICAgICogaHRt
bC9HZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbjx0cmF2ZXJzYWxUeXBlPjo6ZWxlbWVudE1h
dGNoZXMpOgorICAgICAgICAqIGh0bWwvR2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uLmg6IEFk
ZGVkLgorICAgICAgICBBZGQgQ2FjaGVkSFRNTENvbGxlY3Rpb24gc3ViY2xhc3MgaXMgdGhlIGdl
bmVyaWMgb25lIHVzZWQgZm9yIGFsbAorICAgICAgICBDb2xsZWN0aW9uVHlwZXMgdGhhdCBkbyBu
b3QgaGF2ZSB0aGVpciBvd24gc3ViY2xhc3MgKGUuZy4gTm9kZUNoaWxkcmVuKS4KKyAgICAgICAg
VGhpcyBoYXMgYW4gZWxlbWVudE1hdGNoZXMoKSBtZXRob2Qgd2l0aCBhIHN3aXRjaCgpIHN0YXRl
bWVudCBoYW5kbGluZworICAgICAgICBhbGwgdGhlc2UgQ29sbGVjdGlvblR5cGVzLiBUaG9zZSBh
cmUgbm90IG5vcm1hbGx5IG5vdCBwZXJmb3JtYW5jZQorICAgICAgICBzZW5zaXRpdmUuCisKKyAg
ICAgICAgKiBodG1sL0hUTUxBbGxDb2xsZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxBbGxDb2xsZWN0aW9uOjpIVE1MQWxsQ29sbGVjdGlvbik6CisgICAgICAgICogaHRtbC9IVE1M
QWxsQ29sbGVjdGlvbi5oOgorICAgICAgICBTdWJjbGFzcyBDYWNoZWRIVE1MQ29sbGVjdGlvbiBp
bnN0ZWFkIG9mIEhUTUxDb2xsZWN0aW9uLiBBbHNvIHByb3ZpZGUKKyAgICAgICAgYW4gZWxlbWVu
dE1hdGNoZXMoKSBtZXRob2QgdGhhdCBzaW1wbHkgcmV0dXJucyB0cnVlIGFzIHdlIHdhbnQgdG8K
KyAgICAgICAgbWF0Y2ggYWxsIGVsZW1lbnRzLgorCisgICAgICAgICogaHRtbC9IVE1MQ29sbGVj
dGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ29sbGVjdGlvbjo6SFRNTENvbGxlY3Rp
b24pOgorICAgICAgICBNb3ZlIENvbGxlY3Rpb25JbmRleENhY2hlIG1lbWJlciB0byB0aGUgc3Vi
Y2xhc3MgYW5kIGRyb3AgdGhlIDIgb3RoZXIKKyAgICAgICAgbWVtYmVycyBhcyB0aGV5IGFyZSBy
ZXBsYWNlZCB3aXRoIHRoZSBDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZSB0ZW1wbGF0ZQorICAgICAg
ICBwYXJhbWV0ZXIgb2YgQ2FjaGVkSFRNTENvbGxlY3Rpb24uCisKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxDb2xsZWN0aW9uOjp+SFRNTENvbGxlY3Rpb24pOgorICAgICAgICBNb3ZlIERvY3VtZW50
Ojp1bnJlZ2lzdGVyQ29sbGVjdGlvbigpIGNhbGwgdG8gfkNhY2hlZEhUTUxDb2xsZWN0aW9uKCkK
KyAgICAgICAgYXMgd2UgbmVlZGVkIHRvIGNoZWNrIGlmIHRoZSBDb2xsZWN0aW9uSW5kZXhDYWNo
ZSB3YXMgdmFsaWQgZmlyc3QuCisKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb2xsZWN0aW9uOjp1
cGRhdGVOYW1lZEVsZW1lbnRDYWNoZSk6CisgICAgICAgIE1vdmUgcGFydCBvZiB0aGUgaW1wbGVt
ZW50YXRpb24gdG8gdGhlIENhY2hlZEhUTUxDb2xsZWN0aW9uIHN1YmNsYXNzCisgICAgICAgIGFz
IGl0IG5lZWRzIHRvIGtub3cgYWJvdXQgdGhlIHR5cGUgb2YgdHJhdmVyc2FsIGFuZCBpdCBuZWVk
cyB0byBiZQorICAgICAgICBhYmxlIHRvIGNhbGwgZWxlbWVudE1hdGNoZXMoKS4KKworICAgICAg
ICAqIGh0bWwvSFRNTENvbGxlY3Rpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb2xsZWN0
aW9uOjpyb290Tm9kZSk6CisgICAgICAgIElubGluZSBmb3IgcGVyZm9ybWFuY2UgcmVhc29ucyBh
bmQgY29uc2lzdGVuY3kgd2l0aCBDYWNoZWRMaXZlTm9kZUxpc3QuCisKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxDb2xsZWN0aW9uOjptZW1vcnlDb3N0KToKKyAgICAgICAgTWFrZSB2aXJ0dWFsIGFu
ZCBtb3ZlIHBhcnQgb2YgdGhlIGltcGxlbWVudGF0aW9uIHRvIHRoZQorICAgICAgICBDYWNoZWRI
VE1MQ29sbGVjdGlvbiBzdWJjbGFzcyB0byBjb21wdXRlIHRoZSBjb3N0IG9mIHRoZQorICAgICAg
ICBDb2xsZWN0aW9uSW5kZXhDYWNoZS4KKworICAgICAgICAoV2ViQ29yZTo6SFRNTENvbGxlY3Rp
b246OmludmFsaWRhdGVDYWNoZSk6CisgICAgICAgIE1vdmUgcGFydCBvZiB0aGUgaW1wbGVtZW50
YXRpb24gdG8gdGhlIHN1YmNsYXNzIHRvIGludmFsaWRhdGUgdGhlCisgICAgICAgIENvbGxlY3Rp
b25JbmRleENhY2hlLgorCisgICAgICAgICogaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxGaWVsZFNldEVsZW1lbnQ6OmVsZW1lbnRzKToKKworICAg
ICAgICAqIGh0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uY3BwOgorICAgICAgICAqIGh0
bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uaDoKKyAgICAgICAgU3ViY2xhc3MgQ2FjaGVk
SFRNTENvbGxlY3Rpb24gaW5zdGVhZCBvZiBIVE1MQ29sbGVjdGlvbi4KKyAgICAgICAgY3VzdG9t
RWxlbWVudEFmdGVyKCkgbm8gbG9uZ2VyIG5lZWRzIHRvIGJlIHZpcnR1YWwgYXMgaXQKKyAgICAg
ICAgaXMgY2FsbGVkIGRpcmVjdGx5IGJ5IENhY2hlZEhUTUxDb2xsZWN0aW9uIG9uIHRoZSBzdWJj
bGFzcy4KKworICAgICAgICAqIGh0bWwvSFRNTEZvcm1FbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxGb3JtRWxlbWVudDo6ZWxlbWVudHMpOgorICAgICAgICAqIGh0bWwvSFRNTE1h
cEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1hcEVsZW1lbnQ6OmFyZWFzKToK
KyAgICAgICAgQ2FsbCBOb2RlTGlzdHNOb2RlRGF0YTo6YWRkQ2FjaGVkQ29sbGVjdGlvbigpIGRp
cmVjdGx5LgorCisgICAgICAgICogaHRtbC9IVE1MTmFtZUNvbGxlY3Rpb24uY3BwOgorICAgICAg
ICAqIGh0bWwvSFRNTE5hbWVDb2xsZWN0aW9uLmg6CisgICAgICAgIFN1YmNsYXNzIENhY2hlZEhU
TUxDb2xsZWN0aW9uIGluc3RlYWQgb2YgSFRNTENvbGxlY3Rpb24uCisKKyAgICAgICAgKiBodG1s
L0hUTUxPcHRpb25zQ29sbGVjdGlvbi5jcHA6CisgICAgICAgICogaHRtbC9IVE1MT3B0aW9uc0Nv
bGxlY3Rpb24uaDoKKyAgICAgICAgU3ViY2xhc3MgQ2FjaGVkSFRNTENvbGxlY3Rpb24gaW5zdGVh
ZCBvZiBIVE1MQ29sbGVjdGlvbi4KKworICAgICAgICAqIGh0bWwvSFRNTFNlbGVjdEVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OnNlbGVjdGVkT3B0aW9u
cyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6b3B0aW9ucyk6CisgICAg
ICAgICogaHRtbC9IVE1MVGFibGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxU
YWJsZUVsZW1lbnQ6OnJvd3MpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRhYmxlRWxlbWVudDo6
dEJvZGllcyk6CisgICAgICAgICogaHRtbC9IVE1MVGFibGVSb3dFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxUYWJsZVJvd0VsZW1lbnQ6OmNlbGxzKToKKyAgICAgICAgQ2FsbCBO
b2RlTGlzdHNOb2RlRGF0YTo6YWRkQ2FjaGVkQ29sbGVjdGlvbigpIGRpcmVjdGx5LgorCisgICAg
ICAgICogaHRtbC9IVE1MVGFibGVSb3dzQ29sbGVjdGlvbi5jcHA6CisgICAgICAgICogaHRtbC9I
VE1MVGFibGVSb3dzQ29sbGVjdGlvbi5oOgorICAgICAgICBTdWJjbGFzcyBDYWNoZWRIVE1MQ29s
bGVjdGlvbiBpbnN0ZWFkIG9mIEhUTUxDb2xsZWN0aW9uLgorICAgICAgICBjdXN0b21FbGVtZW50
QWZ0ZXIoKSBubyBsb25nZXIgbmVlZHMgdG8gYmUgdmlydHVhbCBhcyBpdAorICAgICAgICBpcyBj
YWxsZWQgZGlyZWN0bHkgYnkgQ2FjaGVkSFRNTENvbGxlY3Rpb24gb24gdGhlIHN1YmNsYXNzLgor
CisgICAgICAgICogaHRtbC9IVE1MVGFibGVTZWN0aW9uRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MVGFibGVTZWN0aW9uRWxlbWVudDo6cm93cyk6CisgICAgICAgIENhbGwgTm9k
ZUxpc3RzTm9kZURhdGE6OmFkZENhY2hlZENvbGxlY3Rpb24oKSBkaXJlY3RseS4KKwogMjAxNS0w
OC0xMiAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgQ2FjaGVk
UmVzb3VyY2UgbGVhayBpbiB2YWxpZGF0aW9uIGNvZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXgg
ZTY4MzIxZWEyODQ4OTViYjFjYTc5OWYyZTUwY2E3NTc1Y2NkM2Y3Zi4uMDU4ZGY2ZWNhNzkxOGEy
MDQ2NTIzYTA5N2FiZGM1MWQ3Nzk0YTMwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTE2MDgs
NiArMTYwOCw3IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBodG1sL0Zvcm1Bc3NvY2lhdGVk
RWxlbWVudC5jcHAKICAgICBodG1sL0Zvcm1Db250cm9sbGVyLmNwcAogICAgIGh0bWwvRm9ybURh
dGFMaXN0LmNwcAorICAgIGh0bWwvR2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uLmNwcAogICAg
IGh0bWwvSFRNTEFsbENvbGxlY3Rpb24uY3BwCiAgICAgaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5j
cHAKICAgICBodG1sL0hUTUxBcHBsZXRFbGVtZW50LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKaW5kZXggOTJiOWUxYTBjZmY5ODQ1N2YzN2Vi
ZTIxMmIyYzg0MTBmY2I2MTE3ZS4uZDE3ZTM2MmIzNTc0YWJkMTI5YTU1MzdlOTlmZWRhZmU5ZDMz
MmY4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUu
dmN4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hw
cm9qCkBAIC0xNjEwNyw2ICsxNjEwNyw3IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxo
dG1sXEZvcm1Db250cm9sbGVyLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGh0
bWxcRm9ybURhdGFMaXN0LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGh0bWxc
RlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
aHRtbFxHZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb24uY3BwIiAvPgogICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5caHRtbFxIaWRkZW5JbnB1dFR5cGUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5caHRtbFxIVE1MQWxsQ29sbGVjdGlvbi5jcHAiIC8+CiAgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxodG1sXEhUTUxBbmNob3JFbGVtZW50LmNwcCI+CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNDE3NmY3ZjM2
ZTlmN2U3ZjY1NmVmN2Q1ZGUyMzk0MjA0ZTRhNDk2OC4uM2RhYzdlYmZjNDAxMjAzMzU2NTY0MjZj
ZGMwYTI4OTRjMWU5Mjc5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTY4NSw2ICsxNjg1LDcgQEAKIAkJNDZDODNFRkUxQTlC
QkUyOTAwQTc5QTQxIC8qIEdlb05vdGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0NkM4M0VGQzFBOUJCRTI5MDBBNzlBNDEgLyogR2VvTm90aWZp
ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0
NkRCN0Q1NzFCMjBGRTQ2MDA1NjUxQjIgLyogVk5vZGVUcmFja2VyQ29jb2EuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZEQjdENTYxQjIwRkUzQzAw
NTY1MUIyIC8qIFZOb2RlVHJhY2tlckNvY29hLmNwcCAqLzsgfTsKIAkJNDZEQkI2NTAxQUI4Qzk2
RjAwRDlBODEzIC8qIFBvd2VyT2JzZXJ2ZXJNYWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2REJCNjRFMUFCOEM5NkYwMEQ5QTgxMyAvKiBQb3dlck9i
c2VydmVyTWFjLmggKi87IH07CisJCTQ2RUJFQTAyMUI3RDRENjUwMEJFNDk0MSAvKiBDb2xsZWN0
aW9uVHJhdmVyc2FsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0NkVCRUEwMTFCN0Q0RDVEMDBCRTQ5NDEgLyogQ29sbGVjdGlvblRyYXZlcnNhbC5oICov
OyB9OwogCQk0NkYzRTNGOTFCMjEwOTAwMDA4N0VEMTMgLyogVk5vZGVUcmFja2VyLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2REI3RDU4MUIyMEZF
NTgwMDU2NTFCMiAvKiBWTm9kZVRyYWNrZXIuY3BwICovOyB9OwogCQk0NkYzRTNGQTFCMjEwOTEw
MDA4N0VEMTMgLyogVk5vZGVUcmFja2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0NkRCN0Q1OTFCMjBGRTU4MDA1NjUxQjIgLyogVk5vZGVUcmFja2Vy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDZG
Q0I2MTgxQTcwODIwRTAwQzVBMjFFIC8qIERpYWdub3N0aWNMb2dnaW5nS2V5cy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QzN0IzNzUxNUMxQTdFMTAw
NkRDODk4IC8qIERpYWdub3N0aWNMb2dnaW5nS2V5cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0yNjY5LDYgKzI2NzAsMTEgQEAKIAkJODJBQjE3
NzYxMjVDODI2NzAwQzUwNjlEIC8qIEluc3BlY3RvclJlc291cmNlQWdlbnQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgyQUIxNzcyMTI1QzgyNjcwMEM1
MDY5RCAvKiBJbnNwZWN0b3JSZXNvdXJjZUFnZW50LmggKi87IH07CiAJCTgyRTNEOERFMTIyRUEw
RDEwMDNBRTVCQyAvKiBDU1NQcm9wZXJ0eVNvdXJjZURhdGEuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODJFM0Q4REMxMjJFQTBEMTAwM0FFNUJDIC8q
IENTU1Byb3BlcnR5U291cmNlRGF0YS5jcHAgKi87IH07CiAJCTgyRTNEOERGMTIyRUEwRDEwMDNB
RTVCQyAvKiBDU1NQcm9wZXJ0eVNvdXJjZURhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgyRTNEOEREMTIyRUEwRDEwMDNBRTVCQyAvKiBDU1NQcm9w
ZXJ0eVNvdXJjZURhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQk4MzAwMzBGNTFCN0QzM0I1MDBFRDNBQUMgLyogR2VuZXJpY0NhY2hlZEhUTUxD
b2xsZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDgzMDAzMEYzMUI3RDMzQTYwMEVEM0FBQyAvKiBHZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rp
b24uY3BwICovOyB9OworCQk4MzAwMzBGNjFCN0QzM0I1MDBFRDNBQUMgLyogR2VuZXJpY0NhY2hl
ZEhUTUxDb2xsZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4MzAwMzBGNDFCN0QzM0E2MDBFRDNBQUMgLyogR2VuZXJpY0NhY2hlZEhUTUxDb2xs
ZWN0aW9uLmggKi87IH07CisJCTgzMDAzMEY4MUI3RDNCNzgwMEVEM0FBQyAvKiBDYWNoZWRIVE1M
Q29sbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gODMwMDMwRjcxQjdEMzk4ODAwRUQzQUFDIC8qIENhY2hlZEhUTUxDb2xsZWN0aW9uLmggKi87
IH07CisJCTgzMUQ0OEMwMUI3RDlBNTIwMDZERTM5QSAvKiBDbGFzc05vZGVMaXN0LmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzMUQ0OEJFMUI3RDlB
NDYwMDZERTM5QSAvKiBDbGFzc05vZGVMaXN0LmNwcCAqLzsgfTsKKwkJODMxRDQ4QzExQjdEOUE1
MjAwNkRFMzlBIC8qIENsYXNzTm9kZUxpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDgzMUQ0OEJGMUI3RDlBNDYwMDZERTM5QSAvKiBDbGFzc05vZGVM
aXN0LmggKi87IH07CiAJCTgzMkI4NDM0MTlEOEU1NTEwMEIyNjA1NSAvKiBTVkdBbmltYXRlRWxl
bWVudEJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDgzMkI4NDMzMTlEOEU1NTEwMEIyNjA1NSAvKiBTVkdBbmltYXRlRWxlbWVudEJhc2UuaCAqLzsg
fTsKIAkJODMyQjg0MzYxOUQ4RTU3NDAwQjI2MDU1IC8qIFNWR0FuaW1hdGVFbGVtZW50QmFzZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzJCODQz
NTE5RDhFNTc0MDBCMjYwNTUgLyogU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmNwcCAqLzsgfTsKIAkJ
ODM1MjBDN0UxQTcxQkZDQzAwNkJEMkFBIC8qIENTU0ZvbnRGYW1pbHkuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzNTIwQzdEMUE3MUJGQ0MwMDZCRDJB
QSAvKiBDU1NGb250RmFtaWx5LmggKi87IH07CkBAIC01NDEwLDggKzU0MTYsNiBAQAogCQlCQzhC
RjE1QTEwNTgxNDE4MDBBNDBBMDcgLyogVXNlclN0eWxlU2hlZXRUeXBlcy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM4QkYxNTkxMDU4MTQxODAwQTQw
QTA3IC8qIFVzZXJTdHlsZVNoZWV0VHlwZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlCQzhDOEZBRDBERENEMzFCMDBCNTkyRjQgLyogUmVuZGVy
U3R5bGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QkM4QzhGQUIwRERDRDMxQjAwQjU5MkY0IC8qIFJlbmRlclN0eWxlLmNwcCAqLzsgfTsKIAkJQkM4
QzhGQUUwRERDRDMxQjAwQjU5MkY0IC8qIFJlbmRlclN0eWxlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzhDOEZBQzBERENEMzFCMDBCNTkyRjQgLyog
UmVuZGVyU3R5bGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwotCQlCQzkwNEI3NjBEMTA5OThGMDA2ODBEMzIgLyogQ2xhc3NOb2RlTGlzdC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzkwNEI3MjBEMTA5
OThGMDA2ODBEMzIgLyogQ2xhc3NOb2RlTGlzdC5jcHAgKi87IH07Ci0JCUJDOTA0Qjc3MEQxMDk5
OEYwMDY4MEQzMiAvKiBDbGFzc05vZGVMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCQzkwNEI3MzBEMTA5OThGMDA2ODBEMzIgLyogQ2xhc3NOb2Rl
TGlzdC5oICovOyB9OwogCQlCQzkyNkY4MDBDMDU1MjQ3MDA4Mjc3NkIgLyogSlNIVE1MRnJhbWVT
ZXRFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEJDOTI2RjdFMEMwNTUyNDcwMDgyNzc2QiAvKiBKU0hUTUxGcmFtZVNldEVsZW1lbnQuY3Bw
ICovOyB9OwogCQlCQzkyNkY4MTBDMDU1MjQ3MDA4Mjc3NkIgLyogSlNIVE1MRnJhbWVTZXRFbGVt
ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzky
NkY3RjBDMDU1MjQ3MDA4Mjc3NkIgLyogSlNIVE1MRnJhbWVTZXRFbGVtZW50LmggKi87IH07CiAJ
CUJDOTQzOUMzMTE2Q0Y0OTQwMDQ4Qzc1MCAvKiBKU05vZGVDdXN0b20uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDOTQzOUMyMTE2Q0Y0OTQwMDQ4Qzc1
MCAvKiBKU05vZGVDdXN0b20uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwpAQCAtODkyNCw2ICs4OTI4LDcgQEAKIAkJNDZEQjdENTgxQjIwRkU1ODAwNTY1
MUIyIC8qIFZOb2RlVHJhY2tlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBWTm9kZVRyYWNrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkRC
N0Q1OTFCMjBGRTU4MDA1NjUxQjIgLyogVk5vZGVUcmFja2VyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFZOb2RlVHJhY2tlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0NkRCQjY0RTFBQjhDOTZGMDBEOUE4MTMgLyogUG93ZXJPYnNlcnZlck1hYy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQb3dlck9ic2VydmVyTWFjLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2RUJFQTAxMUI3RDRENUQwMEJFNDk0MSAvKiBDb2xsZWN0
aW9uVHJhdmVyc2FsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbGxlY3Rp
b25UcmF2ZXJzYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDkwNzA3RTQxMjE5
QzA0MzAwRDkwRTUxIC8qIEFOR0xFV2ViS2l0QnJpZGdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEFOR0xFV2ViS2l0QnJpZGdlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDkwNzA3RTUxMjE5QzA0MzAwRDkwRTUxIC8qIEFOR0xFV2ViS2l0QnJp
ZGdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFOR0xFV2ViS2l0QnJpZGdl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5MjkxRTRBMTM0MTcyQzgwMEU3NTNE
RSAvKiBJbWFnZVJlbmRlcmluZ01vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSW1hZ2VSZW5kZXJpbmdNb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0x
MDAyNCw2ICsxMDAyOSwxMSBAQAogCQk4MkFCMTc3MjEyNUM4MjY3MDBDNTA2OUQgLyogSW5zcGVj
dG9yUmVzb3VyY2VBZ2VudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNw
ZWN0b3JSZXNvdXJjZUFnZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgyRTNE
OERDMTIyRUEwRDEwMDNBRTVCQyAvKiBDU1NQcm9wZXJ0eVNvdXJjZURhdGEuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ1NTUHJvcGVydHlTb3VyY2VEYXRhLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODJFM0Q4REQxMjJFQTBEMTAwM0FFNUJDIC8q
IENTU1Byb3BlcnR5U291cmNlRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBDU1NQcm9wZXJ0eVNvdXJjZURhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
ODMwMDMwRjMxQjdEMzNBNjAwRUQzQUFDIC8qIEdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbi5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHZW5lcmljQ2FjaGVkSFRN
TENvbGxlY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4MzAwMzBGNDFC
N0QzM0E2MDBFRDNBQUMgLyogR2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbi5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4MzAwMzBGNzFCN0QzOTg4MDBFRDNBQUMgLyog
Q2FjaGVkSFRNTENvbGxlY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Q2FjaGVkSFRNTENvbGxlY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODMx
RDQ4QkUxQjdEOUE0NjAwNkRFMzlBIC8qIENsYXNzTm9kZUxpc3QuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2xhc3NOb2RlTGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTgzMUQ0OEJGMUI3RDlBNDYwMDZERTM5QSAvKiBDbGFzc05vZGVMaXN0
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENsYXNzTm9kZUxpc3QuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODMyQjg0MzMxOUQ4RTU1MTAwQjI2MDU1IC8qIFNW
R0FuaW1hdGVFbGVtZW50QmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
VkdBbmltYXRlRWxlbWVudEJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODMy
Qjg0MzUxOUQ4RTU3NDAwQjI2MDU1IC8qIFNWR0FuaW1hdGVFbGVtZW50QmFzZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdBbmltYXRlRWxlbWVudEJhc2UuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzUyMEM3RDFBNzFCRkNDMDA2QkQyQUEg
LyogQ1NTRm9udEZhbWlseS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDU1NG
b250RmFtaWx5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMjk5Miw4ICsxMzAw
Miw2IEBACiAJCUJDOEJGMTU5MTA1ODE0MTgwMEE0MEEwNyAvKiBVc2VyU3R5bGVTaGVldFR5cGVz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVzZXJTdHlsZVNoZWV0VHlwZXMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM4QzhGQUIwRERDRDMxQjAwQjU5MkY0
IC8qIFJlbmRlclN0eWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFJlbmRlclN0eWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM4QzhGQUMw
RERDRDMxQjAwQjU5MkY0IC8qIFJlbmRlclN0eWxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFJlbmRlclN0eWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUJD
OTA0QjcyMEQxMDk5OEYwMDY4MEQzMiAvKiBDbGFzc05vZGVMaXN0LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENsYXNzTm9kZUxpc3QuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQlCQzkwNEI3MzBEMTA5OThGMDA2ODBEMzIgLyogQ2xhc3NOb2RlTGlz
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDbGFzc05vZGVMaXN0Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDOTI2RjdFMEMwNTUyNDcwMDgyNzc2QiAvKiBK
U0hUTUxGcmFtZVNldEVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTSFRNTEZyYW1lU2V0RWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUJDOTI2RjdGMEMwNTUyNDcwMDgyNzc2QiAvKiBKU0hUTUxGcmFtZVNldEVsZW1lbnQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTSFRNTEZyYW1lU2V0RWxlbWVu
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzk0MzlDMjExNkNGNDk0MDA0OEM3
NTAgLyogSlNOb2RlQ3VzdG9tLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpT
Tm9kZUN1c3RvbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTgxNjIsMTAgKzE4
MTcwLDEyIEBACiAJCQkJRjU1QjNEN0ExMjUxRjEyRDAwM0VGMjY5IC8qIEJhc2VUZXh0SW5wdXRU
eXBlLmggKi8sCiAJCQkJRjU1QjNEN0IxMjUxRjEyRDAwM0VGMjY5IC8qIEJ1dHRvbklucHV0VHlw
ZS5jcHAgKi8sCiAJCQkJRjU1QjNEN0MxMjUxRjEyRDAwM0VGMjY5IC8qIEJ1dHRvbklucHV0VHlw
ZS5oICovLAorCQkJCTgzMDAzMEY3MUI3RDM5ODgwMEVEM0FBQyAvKiBDYWNoZWRIVE1MQ29sbGVj
dGlvbi5oICovLAogCQkJCUY1NUIzRDdEMTI1MUYxMkQwMDNFRjI2OSAvKiBDaGVja2JveElucHV0
VHlwZS5jcHAgKi8sCiAJCQkJRjU1QjNEN0UxMjUxRjEyRDAwM0VGMjY5IC8qIENoZWNrYm94SW5w
dXRUeXBlLmggKi8sCiAJCQkJNEFDQkMwQkMxMjcxM0NCRDAwOTRGOUIyIC8qIENsYXNzTGlzdC5j
cHAgKi8sCiAJCQkJNEFDQkMwQkQxMjcxM0NCRDAwOTRGOUIyIC8qIENsYXNzTGlzdC5oICovLAor
CQkJCTQ2RUJFQTAxMUI3RDRENUQwMEJFNDk0MSAvKiBDb2xsZWN0aW9uVHJhdmVyc2FsLmggKi8s
CiAJCQkJOTNDNDQxRkYwRjgxM0FFMTAwQzFBNjM0IC8qIENvbGxlY3Rpb25UeXBlLmggKi8sCiAJ
CQkJQkMyOTkzNUMxN0ExREQ1ODAwQkNFODgwIC8qIENvbG9ySW5wdXRUeXBlLmNwcCAqLywKIAkJ
CQlGNTVCM0Q4MDEyNTFGMTJEMDAzRUYyNjkgLyogQ29sb3JJbnB1dFR5cGUuaCAqLywKQEAgLTE4
MjAwLDYgKzE4MjEwLDggQEAKIAkJCQk5QjUwQjFEQzE3Q0Q0QzBGMDA4N0Y2M0MgLyogRm9ybU5h
bWVkSXRlbS5oICovLAogCQkJCTk3MjA1QUFEMTIzOTI4Q0EwMEIxNzM4MCAvKiBGVFBEaXJlY3Rv
cnlEb2N1bWVudC5jcHAgKi8sCiAJCQkJOTcyMDVBQUUxMjM5MjhDQTAwQjE3MzgwIC8qIEZUUERp
cmVjdG9yeURvY3VtZW50LmggKi8sCisJCQkJODMwMDMwRjMxQjdEMzNBNjAwRUQzQUFDIC8qIEdl
bmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbi5jcHAgKi8sCisJCQkJODMwMDMwRjQxQjdEMzNBNjAw
RUQzQUFDIC8qIEdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbi5oICovLAogCQkJCUY1NUIzRDhC
MTI1MUYxMkQwMDNFRjI2OSAvKiBIaWRkZW5JbnB1dFR5cGUuY3BwICovLAogCQkJCUY1NUIzRDhD
MTI1MUYxMkQwMDNFRjI2OSAvKiBIaWRkZW5JbnB1dFR5cGUuaCAqLywKIAkJCQlCQzk3RTIzOTEw
OTE0NDk1MDAxMEQzNjEgLyogSFRNTEFsbENvbGxlY3Rpb24uY3BwICovLApAQCAtMjMxNTMsOCAr
MjMxNjUsOCBAQAogCQkJCTgzRDI2RDNDMUFGRENDNTAwMDFCMzg3MyAvKiBDaGlsZE5vZGUuaWRs
ICovLAogCQkJCUE4MTg3MjFBMDk3N0QzQzAwMDU4MjZEOSAvKiBDaGlsZE5vZGVMaXN0LmNwcCAq
LywKIAkJCQlBODE4NzIxNTA5NzdEM0MwMDA1ODI2RDkgLyogQ2hpbGROb2RlTGlzdC5oICovLAot
CQkJCUJDOTA0QjcyMEQxMDk5OEYwMDY4MEQzMiAvKiBDbGFzc05vZGVMaXN0LmNwcCAqLywKLQkJ
CQlCQzkwNEI3MzBEMTA5OThGMDA2ODBEMzIgLyogQ2xhc3NOb2RlTGlzdC5oICovLAorCQkJCTgz
MUQ0OEJFMUI3RDlBNDYwMDZERTM5QSAvKiBDbGFzc05vZGVMaXN0LmNwcCAqLywKKwkJCQk4MzFE
NDhCRjFCN0Q5QTQ2MDA2REUzOUEgLyogQ2xhc3NOb2RlTGlzdC5oICovLAogCQkJCUJDQzA2NTc3
MEYzQ0UxQjcwMENEMkQ4NyAvKiBDbGllbnRSZWN0LmNwcCAqLywKIAkJCQlCQ0MwNjU3ODBGM0NF
MUI3MDBDRDJEODcgLyogQ2xpZW50UmVjdC5oICovLAogCQkJCUJDQzA2NTc5MEYzQ0UxQjcwMENE
MkQ4NyAvKiBDbGllbnRSZWN0LmlkbCAqLywKQEAgLTI0MTcwLDcgKzI0MTgyLDYgQEAKIAkJCQkx
NEQ4MjM1MjBBRjkyQTc5MDAwNEYwNTcgLyogQ2hyb21lLmggaW4gSGVhZGVycyAqLywKIAkJCQkx
NEQ4MjQwODBBRjkzQUVCMDAwNEYwNTcgLyogQ2hyb21lQ2xpZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQk0QUNCQzBCRjEyNzEzQ0JEMDA5NEY5QjIgLyogQ2xhc3NMaXN0LmggaW4gSGVhZGVycyAq
LywKLQkJCQlCQzkwNEI3NzBEMTA5OThGMDA2ODBEMzIgLyogQ2xhc3NOb2RlTGlzdC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQkNDMDY1N0UwRjNDRTFCNzAwQ0QyRDg3IC8qIENsaWVudFJlY3QuaCBp
biBIZWFkZXJzICovLAogCQkJCUJDQzA2NTgxMEYzQ0UxQjcwMENEMkQ4NyAvKiBDbGllbnRSZWN0
TGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODUwMzFCNDAwQTQ0RUZDNzAwRjk5MkUwIC8qIENs
aXBib2FyZEV2ZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTI0NDQyLDYgKzI0NDUzLDcgQEAKIAkJ
CQk4MzcyREIzMTFBNjc4MEE4MDBDNjk3QzUgLyogRGlhZ25vc3RpY0xvZ2dpbmdSZXN1bHRUeXBl
LmggaW4gSGVhZGVycyAqLywKIAkJCQlDRUNBREZDNzE1Mzc3OEZGMDBFMzcwNjggLyogRGljdGF0
aW9uQWx0ZXJuYXRpdmUuaCBpbiBIZWFkZXJzICovLAogCQkJCUNFQ0FERkM5MTUzNzc4RkYwMEUz
NzA2OCAvKiBEaWN0YXRpb25Db21tYW5kLmggaW4gSGVhZGVycyAqLywKKwkJCQk0NkVCRUEwMjFC
N0Q0RDY1MDBCRTQ5NDEgLyogQ29sbGVjdGlvblRyYXZlcnNhbC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJRDBCRDRGNUQxNDA4ODUwRjAwNjgzOUI2IC8qIERpY3RhdGlvbkNvbW1hbmRJT1MuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTE1MTQ1QjkwMUIzQTFDRTAwMDY2MkJGNyAvKiBNZWRpYURldmljZUlu
Zm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTMxNjAyM0YwMTUzMkM0MEMwMEQ1MEZGNCAvKiBEaWN0
aW9uYXJ5LmggaW4gSGVhZGVycyAqLywKQEAgLTI0NTQ3LDYgKzI0NTU5LDcgQEAKIAkJCQk4NUU3
MTE5NjBBQzVENTM1MDA1MzI3MEYgLyogRE9NRG9jdW1lbnRUeXBlSW50ZXJuYWwuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTg1MThEQ0U5MEE5Q0M4MEQwMDkxQjdBNiAvKiBET01ET01JbXBsZW1lbnRh
dGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODVFNzExOTcwQUM1RDUzNTAwNTMyNzBGIC8qIERP
TURPTUltcGxlbWVudGF0aW9uSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAorCQkJCTgzMUQ0OEMx
MUI3RDlBNTIwMDZERTM5QSAvKiBDbGFzc05vZGVMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk1
MkNDQTlFODE1RTNGNjRDMDA1M0M3N0YgLyogRE9NRE9NTmFtZWRGbG93Q29sbGVjdGlvbi5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNTJDQ0E5RUExNUUzRjY0QzAwNTNDNzdGIC8qIERPTURPTU5hbWVk
Rmxvd0NvbGxlY3Rpb25JbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQ5QTI0NzQxNUI5
QzJFMzAwRDM0NTI3IC8qIERPTURPTVNlY3VyaXR5UG9saWN5LmggaW4gSGVhZGVycyAqLywKQEAg
LTI1NjI5LDYgKzI1NjQyLDcgQEAKIAkJCQlGREExNUVCMjEyQjAzRUUxMDAzQTU4M0EgLyogSlNQ
YW5uZXJOb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4QTlBNTg3NTExRTg0QzgxMDA4QUNGRDEg
LyogSlNQZXJmb3JtYW5jZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOEE5QTU4NzExMUU4NEMzNjAw
OEFDRkQxIC8qIEpTUGVyZm9ybWFuY2VOYXZpZ2F0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQk4
MzAwMzBGNjFCN0QzM0I1MDBFRDNBQUMgLyogR2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk4QTlBNTg4ODExRTg0RjM3MDA4QUNGRDEgLyogSlNQZXJmb3Jt
YW5jZVRpbWluZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkRFQTYyNDcxNTIxMDJGQzAwNDc5REYw
IC8qIEpTUGVyaW9kaWNXYXZlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0I3MEQ2QzA5RUIwQzdD
MDA5RDg0NjggLyogSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmggaW4gSGVhZGVycyAqLywKQEAg
LTI2OTY4LDYgKzI2OTgyLDcgQEAKIAkJCQlCMjIyN0E1MTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZH
TnVtYmVyTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjdBNTQwRDAwQkYyMjAwNzFCNzgy
IC8qIFNWR1BhaW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0E1NzBEMDBCRjIyMDA3MUI3
ODIgLyogU1ZHUGFyc2VyVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKKwkJCQk4MzAwMzBGODFC
N0QzQjc4MDBFRDNBQUMgLyogQ2FjaGVkSFRNTENvbGxlY3Rpb24uaCBpbiBIZWFkZXJzICovLAog
CQkJCTJEM0EwRTM2MTNBN0Q3NjEwMEU4NUFGMCAvKiBTVkdQYXJzaW5nRXJyb3IuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTg0QzY3ODREMTIxNDgxNDcwMEE5MjkwMiAvKiBTVkdQYXRoQmxlbmRlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJODQ3NkM5RUIxMURGNkEyOTAwNTU1QjAyIC8qIFNWR1BhdGhC
dWlsZGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTI3OTYzLDcgKzI3OTc4LDYgQEAKIAkJCQkxNEQ4
MjM4QjBBRjkyREY2MDAwNEYwNTcgLyogQ2hyb21lLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUFC
QUYyMjA4MEMwM0IxQzcwMEIwQkNGMCAvKiBDaHJvbWVNYWMubW0gaW4gU291cmNlcyAqLywKIAkJ
CQk0QUNCQzBCRTEyNzEzQ0JEMDA5NEY5QjIgLyogQ2xhc3NMaXN0LmNwcCBpbiBTb3VyY2VzICov
LAotCQkJCUJDOTA0Qjc2MEQxMDk5OEYwMDY4MEQzMiAvKiBDbGFzc05vZGVMaXN0LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUJDQzA2NTdEMEYzQ0UxQjcwMENEMkQ4NyAvKiBDbGllbnRSZWN0LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUJDQzA2NTgwMEYzQ0UxQjcwMENEMkQ4NyAvKiBDbGllbnRS
ZWN0TGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NTAzMUIzRjBBNDRFRkM3MDBGOTkyRTAg
LyogQ2xpcGJvYXJkRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yODk3MCw2ICsyODk4NCw3
IEBACiAJCQkJQTlDNkU2NEMwRDc0NjVFNzAwNjQ0MkU5IC8qIEpTRE9NUGx1Z2luQXJyYXlDdXN0
b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTlDNkU2NEQwRDc0NjVFNzAwNjQ0MkU5IC8qIEpT
RE9NUGx1Z2luQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxNzJBRjhGMTgxMUJDMzcw
MEZCQURCOSAvKiBKU0RPTVByb21pc2UuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJODMxRDQ4QzAx
QjdEOUE1MjAwNkRFMzlBIC8qIENsYXNzTm9kZUxpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QkM1QTg2QjUwQzMzNjdFODAwRUVBNjQ5IC8qIEpTRE9NU2VsZWN0aW9uLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTRBQ0JDMENBMTI3MTNEMEEwMDk0RjlCMiAvKiBKU0RPTVNldHRhYmxlVG9rZW5M
aXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUM1MTM3Q0YyMTFBNTgzNzgwMDRBREI5OSAvKiBK
U0RPTVN0cmluZ0xpc3QuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yOTI2Miw2ICsyOTI3Nyw3IEBA
CiAJCQkJMDc5NjlEQkQxN0QxNDE1MTAwN0ZGODQyIC8qIEpTUlRDU2Vzc2lvbkRlc2NyaXB0aW9u
Q2FsbGJhY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDdEMDdCMTQxODM0MTU4ODAwQUJERDND
IC8qIEpTUlRDU2Vzc2lvbkRlc2NyaXB0aW9uQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTA3OTY5REJGMTdEMTQxNTEwMDdGRjg0MiAvKiBKU1JUQ1N0YXRzQ2FsbGJhY2suY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJODMwMDMwRjUxQjdEMzNCNTAwRUQzQUFDIC8qIEdlbmVyaWNDYWNoZWRI
VE1MQ29sbGVjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzk2OURDMTE3RDE0MTUxMDA3
RkY4NDIgLyogSlNSVENTdGF0c1JlcG9ydC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzk2OURD
MzE3RDE0MTUxMDA3RkY4NDIgLyogSlNSVENTdGF0c1Jlc3BvbnNlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTA3REM1RkQ0MTdEM0VFRTkwMDk5Rjg5MCAvKiBKU1JUQ1N0YXRzUmVzcG9uc2VDdXN0
b20uY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29u
dGFpbmVyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKaW5k
ZXggYmUzYTNjMTg3YTg1YzFjN2U5Zjg2NGZkM2NkN2IxYTdkZTI2ZGE2MS4uYmU5NjRiY2ZjNGFi
ZDllNjY4ZjM0ZjBkNGIyMDM1MTE3MDZkN2U2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0NvbnRhaW5lck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJO
b2RlLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkVkaXRvci5oIgogI2luY2x1ZGUg
IkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgorI2luY2x1ZGUgIkdlbmVyaWND
YWNoZWRIVE1MQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxGb3JtQ29udHJvbHNDb2xsZWN0
aW9uLmgiCiAjaW5jbHVkZSAiSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiSFRN
TFRhYmxlUm93c0NvbGxlY3Rpb24uaCIKQEAgLTkwMiw3ICs5MDMsNyBAQCBSZWZQdHI8UmFkaW9O
b2RlTGlzdD4gQ29udGFpbmVyTm9kZTo6cmFkaW9Ob2RlTGlzdChjb25zdCBBdG9taWNTdHJpbmcm
IG5hbWUpCiAKIFJlZjxIVE1MQ29sbGVjdGlvbj4gQ29udGFpbmVyTm9kZTo6Y2hpbGRyZW4oKQog
ewotICAgIHJldHVybiBlbnN1cmVDYWNoZWRIVE1MQ29sbGVjdGlvbihOb2RlQ2hpbGRyZW4pOwor
ICAgIHJldHVybiBlbnN1cmVSYXJlRGF0YSgpLmVuc3VyZU5vZGVMaXN0cygpLmFkZENhY2hlZENv
bGxlY3Rpb248R2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uPENvbGxlY3Rpb25UeXBlVHJhaXRz
PE5vZGVDaGlsZHJlbj46OnRyYXZlcnNhbFR5cGU+PigqdGhpcywgTm9kZUNoaWxkcmVuKTsKIH0K
IAogRWxlbWVudCogQ29udGFpbmVyTm9kZTo6Zmlyc3RFbGVtZW50Q2hpbGQoKSBjb25zdApAQCAt
OTM5LDIyICs5NDAsNiBAQCB2b2lkIENvbnRhaW5lck5vZGU6OnByZXBlbmQoVmVjdG9yPE5vZGVP
clN0cmluZz4mJiBub2RlT3JTdHJpbmdWZWN0b3IsIEV4Y2VwdGlvbgogICAgIGluc2VydEJlZm9y
ZShub2RlLnJlbGVhc2UoKSwgZmlyc3RDaGlsZCgpLCBlYyk7CiB9CiAKLVJlZjxIVE1MQ29sbGVj
dGlvbj4gQ29udGFpbmVyTm9kZTo6ZW5zdXJlQ2FjaGVkSFRNTENvbGxlY3Rpb24oQ29sbGVjdGlv
blR5cGUgdHlwZSkKLXsKLSAgICBpZiAoSFRNTENvbGxlY3Rpb24qIGNvbGxlY3Rpb24gPSBjYWNo
ZWRIVE1MQ29sbGVjdGlvbih0eXBlKSkKLSAgICAgICAgcmV0dXJuICpjb2xsZWN0aW9uOwotCi0g
ICAgaWYgKHR5cGUgPT0gVGFibGVSb3dzKQotICAgICAgICByZXR1cm4gZW5zdXJlUmFyZURhdGEo
KS5lbnN1cmVOb2RlTGlzdHMoKS5hZGRDYWNoZWRDb2xsZWN0aW9uPEhUTUxUYWJsZVJvd3NDb2xs
ZWN0aW9uPihkb3duY2FzdDxIVE1MVGFibGVFbGVtZW50PigqdGhpcyksIHR5cGUpOwotICAgIGVs
c2UgaWYgKHR5cGUgPT0gU2VsZWN0T3B0aW9ucykKLSAgICAgICAgcmV0dXJuIGVuc3VyZVJhcmVE
YXRhKCkuZW5zdXJlTm9kZUxpc3RzKCkuYWRkQ2FjaGVkQ29sbGVjdGlvbjxIVE1MT3B0aW9uc0Nv
bGxlY3Rpb24+KGRvd25jYXN0PEhUTUxTZWxlY3RFbGVtZW50PigqdGhpcyksIHR5cGUpOwotICAg
IGVsc2UgaWYgKHR5cGUgPT0gRm9ybUNvbnRyb2xzKSB7Ci0gICAgICAgIEFTU0VSVChoYXNUYWdO
YW1lKEhUTUxOYW1lczo6Zm9ybVRhZykgfHwgaGFzVGFnTmFtZShIVE1MTmFtZXM6OmZpZWxkc2V0
VGFnKSk7Ci0gICAgICAgIHJldHVybiBlbnN1cmVSYXJlRGF0YSgpLmVuc3VyZU5vZGVMaXN0cygp
LmFkZENhY2hlZENvbGxlY3Rpb248SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24+KCp0aGlzLCB0
eXBlKTsKLSAgICB9Ci0gICAgcmV0dXJuIGVuc3VyZVJhcmVEYXRhKCkuZW5zdXJlTm9kZUxpc3Rz
KCkuYWRkQ2FjaGVkQ29sbGVjdGlvbjxIVE1MQ29sbGVjdGlvbj4oKnRoaXMsIHR5cGUpOwotfQot
CiBIVE1MQ29sbGVjdGlvbiogQ29udGFpbmVyTm9kZTo6Y2FjaGVkSFRNTENvbGxlY3Rpb24oQ29s
bGVjdGlvblR5cGUgdHlwZSkKIHsKICAgICByZXR1cm4gaGFzUmFyZURhdGEoKSAmJiByYXJlRGF0
YSgpLT5ub2RlTGlzdHMoKSA/IHJhcmVEYXRhKCktPm5vZGVMaXN0cygpLT5jYWNoZWRDb2xsZWN0
aW9uPEhUTUxDb2xsZWN0aW9uPih0eXBlKSA6IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5l
ck5vZGUuaAppbmRleCBkYTA2MjFkN2YwNWM2ZWFiODFmMGM1N2ExZGZmNTYwYmZlNjg5OWRlLi4w
NWIzZmNhZWQ4NDhkZGRiNjY1MTcxODQ3NWNiNzY0ZWY5NTAxMWI1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9D
b250YWluZXJOb2RlLmgKQEAgLTE2OSw3ICsxNjksNiBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBz
ZXRGaXJzdENoaWxkKE5vZGUqIGNoaWxkKSB7IG1fZmlyc3RDaGlsZCA9IGNoaWxkOyB9CiAgICAg
dm9pZCBzZXRMYXN0Q2hpbGQoTm9kZSogY2hpbGQpIHsgbV9sYXN0Q2hpbGQgPSBjaGlsZDsgfQog
Ci0gICAgUmVmPEhUTUxDb2xsZWN0aW9uPiBlbnN1cmVDYWNoZWRIVE1MQ29sbGVjdGlvbihDb2xs
ZWN0aW9uVHlwZSk7CiAgICAgSFRNTENvbGxlY3Rpb24qIGNhY2hlZEhUTUxDb2xsZWN0aW9uKENv
bGxlY3Rpb25UeXBlKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDMz
ZDcxNWQzZjEyNjY5NzM1NGRiZTMxMTJiZjU0NTZhZTA5NWQ4Y2YuLmIzNzE3ZDk3YTQxYmFmMzNl
ODdhNmQ5ODJkMDNiMDIzYjRkOWUyMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNjMs
MTIgKzYzLDEyIEBACiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKICNpbmNsdWRlICJGcmFtZUxv
YWRlckNsaWVudC5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgorI2luY2x1ZGUgIkdlbmVyaWND
YWNoZWRIVE1MQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxBbGxDb2xsZWN0aW9uLmgiCiAj
aW5jbHVkZSAiSFRNTEFuY2hvckVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MQmFzZUVsZW1lbnQu
aCIKICNpbmNsdWRlICJIVE1MQm9keUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MQ2FudmFzRWxl
bWVudC5oIgotI2luY2x1ZGUgIkhUTUxDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiSFRNTERvY3Vt
ZW50LmgiCiAjaW5jbHVkZSAiSFRNTEVsZW1lbnRGYWN0b3J5LmgiCiAjaW5jbHVkZSAiSFRNTEZv
cm1Db250cm9sRWxlbWVudC5oIgpAQCAtNDc3Miw1MCArNDc3Miw1MSBAQCBib29sIERvY3VtZW50
OjpoYXNTVkdSb290Tm9kZSgpIGNvbnN0CiAgICAgcmV0dXJuIGRvY3VtZW50RWxlbWVudCgpICYm
IGRvY3VtZW50RWxlbWVudCgpLT5oYXNUYWdOYW1lKFNWR05hbWVzOjpzdmdUYWcpOwogfQogCi1S
ZWY8SFRNTENvbGxlY3Rpb24+IERvY3VtZW50OjplbnN1cmVDYWNoZWRDb2xsZWN0aW9uKENvbGxl
Y3Rpb25UeXBlIHR5cGUpCit0ZW1wbGF0ZSA8Q29sbGVjdGlvblR5cGUgY29sbGVjdGlvblR5cGU+
CitSZWY8SFRNTENvbGxlY3Rpb24+IERvY3VtZW50OjplbnN1cmVDYWNoZWRDb2xsZWN0aW9uKCkK
IHsKLSAgICByZXR1cm4gZW5zdXJlUmFyZURhdGEoKS5lbnN1cmVOb2RlTGlzdHMoKS5hZGRDYWNo
ZWRDb2xsZWN0aW9uPEhUTUxDb2xsZWN0aW9uPigqdGhpcywgdHlwZSk7CisgICAgcmV0dXJuIGVu
c3VyZVJhcmVEYXRhKCkuZW5zdXJlTm9kZUxpc3RzKCkuYWRkQ2FjaGVkQ29sbGVjdGlvbjxHZW5l
cmljQ2FjaGVkSFRNTENvbGxlY3Rpb248Q29sbGVjdGlvblR5cGVUcmFpdHM8Y29sbGVjdGlvblR5
cGU+Ojp0cmF2ZXJzYWxUeXBlPj4oKnRoaXMsIGNvbGxlY3Rpb25UeXBlKTsKIH0KIAogUmVmPEhU
TUxDb2xsZWN0aW9uPiBEb2N1bWVudDo6aW1hZ2VzKCkKIHsKLSAgICByZXR1cm4gZW5zdXJlQ2Fj
aGVkQ29sbGVjdGlvbihEb2NJbWFnZXMpOworICAgIHJldHVybiBlbnN1cmVDYWNoZWRDb2xsZWN0
aW9uPERvY0ltYWdlcz4oKTsKIH0KIAogUmVmPEhUTUxDb2xsZWN0aW9uPiBEb2N1bWVudDo6YXBw
bGV0cygpCiB7Ci0gICAgcmV0dXJuIGVuc3VyZUNhY2hlZENvbGxlY3Rpb24oRG9jQXBwbGV0cyk7
CisgICAgcmV0dXJuIGVuc3VyZUNhY2hlZENvbGxlY3Rpb248RG9jQXBwbGV0cz4oKTsKIH0KIAog
UmVmPEhUTUxDb2xsZWN0aW9uPiBEb2N1bWVudDo6ZW1iZWRzKCkKIHsKLSAgICByZXR1cm4gZW5z
dXJlQ2FjaGVkQ29sbGVjdGlvbihEb2NFbWJlZHMpOworICAgIHJldHVybiBlbnN1cmVDYWNoZWRD
b2xsZWN0aW9uPERvY0VtYmVkcz4oKTsKIH0KIAogUmVmPEhUTUxDb2xsZWN0aW9uPiBEb2N1bWVu
dDo6cGx1Z2lucygpCiB7CiAgICAgLy8gVGhpcyBpcyBhbiBhbGlhcyBmb3IgZW1iZWRzKCkgcmVx
dWlyZWQgZm9yIHRoZSBKUyBET00gYmluZGluZ3MuCi0gICAgcmV0dXJuIGVuc3VyZUNhY2hlZENv
bGxlY3Rpb24oRG9jRW1iZWRzKTsKKyAgICByZXR1cm4gZW5zdXJlQ2FjaGVkQ29sbGVjdGlvbjxE
b2NFbWJlZHM+KCk7CiB9CiAKIFJlZjxIVE1MQ29sbGVjdGlvbj4gRG9jdW1lbnQ6OnNjcmlwdHMo
KQogewotICAgIHJldHVybiBlbnN1cmVDYWNoZWRDb2xsZWN0aW9uKERvY1NjcmlwdHMpOworICAg
IHJldHVybiBlbnN1cmVDYWNoZWRDb2xsZWN0aW9uPERvY1NjcmlwdHM+KCk7CiB9CiAKIFJlZjxI
VE1MQ29sbGVjdGlvbj4gRG9jdW1lbnQ6OmxpbmtzKCkKIHsKLSAgICByZXR1cm4gZW5zdXJlQ2Fj
aGVkQ29sbGVjdGlvbihEb2NMaW5rcyk7CisgICAgcmV0dXJuIGVuc3VyZUNhY2hlZENvbGxlY3Rp
b248RG9jTGlua3M+KCk7CiB9CiAKIFJlZjxIVE1MQ29sbGVjdGlvbj4gRG9jdW1lbnQ6OmZvcm1z
KCkKIHsKLSAgICByZXR1cm4gZW5zdXJlQ2FjaGVkQ29sbGVjdGlvbihEb2NGb3Jtcyk7CisgICAg
cmV0dXJuIGVuc3VyZUNhY2hlZENvbGxlY3Rpb248RG9jRm9ybXM+KCk7CiB9CiAKIFJlZjxIVE1M
Q29sbGVjdGlvbj4gRG9jdW1lbnQ6OmFuY2hvcnMoKQogewotICAgIHJldHVybiBlbnN1cmVDYWNo
ZWRDb2xsZWN0aW9uKERvY0FuY2hvcnMpOworICAgIHJldHVybiBlbnN1cmVDYWNoZWRDb2xsZWN0
aW9uPERvY0FuY2hvcnM+KCk7CiB9CiAKIFJlZjxIVE1MQ29sbGVjdGlvbj4gRG9jdW1lbnQ6OmFs
bCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IDgwZmU3YTQ4ZWVmMjFiNzQxMDU0MjQyMjhhNmY3
MzI2ZjZjZDRhMjcuLmU1M2JmM2UxYzZjMWVmMjA5YjMyOTMzNmYzNzJlMWY4MTBjZTlmOTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5oCkBAIC0xMTMsNyArMTEzLDYgQEAgY2xhc3MgSFRNTElGcmFtZUVs
ZW1lbnQ7CiBjbGFzcyBIVE1MSW1hZ2VFbGVtZW50OwogY2xhc3MgSFRNTE1hcEVsZW1lbnQ7CiBj
bGFzcyBIVE1MTWVkaWFFbGVtZW50OwotY2xhc3MgSFRNTE5hbWVDb2xsZWN0aW9uOwogY2xhc3Mg
SFRNTFNjcmlwdEVsZW1lbnQ7CiBjbGFzcyBIaXRUZXN0UmVxdWVzdDsKIGNsYXNzIEhpdFRlc3RS
ZXN1bHQ7CkBAIC0xMzQ1LDcgKzEzNDQsOCBAQCBwcml2YXRlOgogCiAgICAgTm9kZSogbm9kZUZy
b21Qb2ludChjb25zdCBMYXlvdXRQb2ludCYgY2xpZW50UG9pbnQsIExheW91dFBvaW50KiBsb2Nh
bFBvaW50ID0gbnVsbHB0cik7CiAKLSAgICBSZWY8SFRNTENvbGxlY3Rpb24+IGVuc3VyZUNhY2hl
ZENvbGxlY3Rpb24oQ29sbGVjdGlvblR5cGUpOworICAgIHRlbXBsYXRlIDxDb2xsZWN0aW9uVHlw
ZSBjb2xsZWN0aW9uVHlwZT4KKyAgICBSZWY8SFRNTENvbGxlY3Rpb24+IGVuc3VyZUNhY2hlZENv
bGxlY3Rpb24oKTsKIAogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAgICB2b2lkIGRpc3Bh
dGNoRnVsbFNjcmVlbkNoYW5nZU9yRXJyb3JFdmVudChEZXF1ZTxSZWZQdHI8Tm9kZT4+JiwgY29u
c3QgQXRvbWljU3RyaW5nJiBldmVudE5hbWUsIGJvb2wgc2hvdWxkTm90aWZ5TWVkaWFFbGVtZW50
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50Q2hpbGRJdGVyYXRvci5o
IGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRDaGlsZEl0ZXJhdG9yLmgKaW5kZXggOTRjZDMx
MzIyNDM0YmRhMDVjOWY1NmUxN2IwZTA2NGMyMjVlNTFjZi4uMWE5NDZiYjhmYjE5M2M2MDQ1MjA5
ZmZiZDUyY2QzNWE4OWNmZWM5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnRDaGlsZEl0ZXJhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRDaGlsZEl0
ZXJhdG9yLmgKQEAgLTQxLDYgKzQxLDcgQEAgcHVibGljOgogCiAgICAgRWxlbWVudENoaWxkSXRl
cmF0b3IoY29uc3QgQ29udGFpbmVyTm9kZSYgcGFyZW50KTsKICAgICBFbGVtZW50Q2hpbGRJdGVy
YXRvcihjb25zdCBDb250YWluZXJOb2RlJiBwYXJlbnQsIEVsZW1lbnRUeXBlKiBjdXJyZW50KTsK
KyAgICBFbGVtZW50Q2hpbGRJdGVyYXRvciYgb3BlcmF0b3ItLSgpOwogICAgIEVsZW1lbnRDaGls
ZEl0ZXJhdG9yJiBvcGVyYXRvcisrKCk7CiB9OwogCkBAIC01NSw2ICs1Niw3IEBAIHB1YmxpYzoK
IAogICAgIEVsZW1lbnRDaGlsZENvbnN0SXRlcmF0b3IoY29uc3QgQ29udGFpbmVyTm9kZSYgcGFy
ZW50KTsKICAgICBFbGVtZW50Q2hpbGRDb25zdEl0ZXJhdG9yKGNvbnN0IENvbnRhaW5lck5vZGUm
IHBhcmVudCwgY29uc3QgRWxlbWVudFR5cGUqIGN1cnJlbnQpOworICAgIEVsZW1lbnRDaGlsZENv
bnN0SXRlcmF0b3ImIG9wZXJhdG9yLS0oKTsKICAgICBFbGVtZW50Q2hpbGRDb25zdEl0ZXJhdG9y
JiBvcGVyYXRvcisrKCk7CiB9OwogCkBAIC0xMDgsNiArMTEwLDEyIEBAIGlubGluZSBFbGVtZW50
Q2hpbGRJdGVyYXRvcjxFbGVtZW50VHlwZT46OkVsZW1lbnRDaGlsZEl0ZXJhdG9yKGNvbnN0IENv
bnRhaW5lck5vCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KK2lubGluZSBF
bGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50VHlwZT4mIEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVs
ZW1lbnRUeXBlPjo6b3BlcmF0b3ItLSgpCit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEVsZW1l
bnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiY+KEVsZW1lbnRJdGVyYXRvcjxFbGVtZW50VHlw
ZT46OnRyYXZlcnNlUHJldmlvdXNTaWJsaW5nKCkpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
RWxlbWVudFR5cGU+CiBpbmxpbmUgRWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVudFR5cGU+JiBF
bGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50VHlwZT46Om9wZXJhdG9yKysoKQogewogICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxFbGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50VHlwZT4mPihFbGVt
ZW50SXRlcmF0b3I8RWxlbWVudFR5cGU+Ojp0cmF2ZXJzZU5leHRTaWJsaW5nKCkpOwpAQCAtMTI4
LDYgKzEzNiwxMyBAQCBpbmxpbmUgRWxlbWVudENoaWxkQ29uc3RJdGVyYXRvcjxFbGVtZW50VHlw
ZT46OkVsZW1lbnRDaGlsZENvbnN0SXRlcmF0b3IoY29uc3QgQwogfQogCiB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgRWxlbWVudFR5cGU+CitpbmxpbmUgRWxlbWVudENoaWxkQ29uc3RJdGVyYXRvcjxFbGVt
ZW50VHlwZT4mIEVsZW1lbnRDaGlsZENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+OjpvcGVyYXRv
ci0tKCkKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RWxlbWVudENoaWxkQ29uc3RJdGVyYXRv
cjxFbGVtZW50VHlwZT4mPihFbGVtZW50Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT46OnRyYXZl
cnNlUHJldmlvdXNTaWJsaW5nKCkpOworfQorCisKK3RlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50
VHlwZT4KIGlubGluZSBFbGVtZW50Q2hpbGRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiYgRWxl
bWVudENoaWxkQ29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT46Om9wZXJhdG9yKysoKQogewogICAg
IHJldHVybiBzdGF0aWNfY2FzdDxFbGVtZW50Q2hpbGRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBl
PiY+KEVsZW1lbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6dHJhdmVyc2VOZXh0U2libGlu
ZygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9MaXZlTm9kZUxpc3QuaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9MaXZlTm9kZUxpc3QuaAppbmRleCAxOTZlNTBiYjgyYmViY2NmNzI2
NGI0NjNhMmVlZTYzZWE2ZDEwYWJiLi4wNTI1OThmN2U5YjdjN2FhODFiNWFhNzIxMjA5ZTlhOTEz
NDE4ODc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTGl2ZU5vZGVMaXN0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0xpdmVOb2RlTGlzdC5oCkBAIC0yNSw2ICsyNSw3IEBACiAj
ZGVmaW5lIExpdmVOb2RlTGlzdF9oCiAKICNpbmNsdWRlICJDb2xsZWN0aW9uSW5kZXhDYWNoZS5o
IgorI2luY2x1ZGUgIkNvbGxlY3Rpb25UcmF2ZXJzYWwuaCIKICNpbmNsdWRlICJDb2xsZWN0aW9u
VHlwZS5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRWxlbWVudERlc2NlbmRh
bnRJdGVyYXRvci5oIgpAQCAtODAsMjUgKzgxLDI5IEBAIGNsYXNzIENhY2hlZExpdmVOb2RlTGlz
dCA6IHB1YmxpYyBMaXZlTm9kZUxpc3QgewogcHVibGljOgogICAgIHZpcnR1YWwgfkNhY2hlZExp
dmVOb2RlTGlzdCgpOwogCi0gICAgdmlydHVhbCB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCBvdmVy
cmlkZSBmaW5hbDsKLSAgICB2aXJ0dWFsIE5vZGUqIGl0ZW0odW5zaWduZWQgb2Zmc2V0KSBjb25z
dCBvdmVycmlkZSBmaW5hbDsKKyAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCBvdmVycmlkZSBm
aW5hbCB7IHJldHVybiBtX2luZGV4Q2FjaGUubm9kZUNvdW50KG5vZGVMaXN0KCkpOyB9CisgICAg
Tm9kZSogaXRlbSh1bnNpZ25lZCBvZmZzZXQpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJu
IG1faW5kZXhDYWNoZS5ub2RlQXQobm9kZUxpc3QoKSwgb2Zmc2V0KTsgfQogCiAgICAgLy8gRm9y
IENvbGxlY3Rpb25JbmRleENhY2hlCi0gICAgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciBjb2xs
ZWN0aW9uQmVnaW4oKSBjb25zdDsKLSAgICBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yIGNvbGxl
Y3Rpb25MYXN0KCkgY29uc3Q7CisgICAgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciBjb2xsZWN0
aW9uQmVnaW4oKSBjb25zdCB7IHJldHVybiBUcmF2ZXJzYWw6OmJlZ2luKG5vZGVMaXN0KCksIHJv
b3ROb2RlKCkpOyB9CisgICAgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciBjb2xsZWN0aW9uTGFz
dCgpIGNvbnN0IHsgcmV0dXJuIFRyYXZlcnNhbDo6bGFzdChub2RlTGlzdCgpLCByb290Tm9kZSgp
KTsgfQogICAgIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IgY29sbGVjdGlvbkVuZCgpIGNvbnN0
IHsgcmV0dXJuIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IoKTsgfQotICAgIHZvaWQgY29sbGVj
dGlvblRyYXZlcnNlRm9yd2FyZChFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yJiwgdW5zaWduZWQg
Y291bnQsIHVuc2lnbmVkJiB0cmF2ZXJzZWRDb3VudCkgY29uc3Q7Ci0gICAgdm9pZCBjb2xsZWN0
aW9uVHJhdmVyc2VCYWNrd2FyZChFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yJiwgdW5zaWduZWQg
Y291bnQpIGNvbnN0OworICAgIHZvaWQgY29sbGVjdGlvblRyYXZlcnNlRm9yd2FyZChFbGVtZW50
RGVzY2VuZGFudEl0ZXJhdG9yJiBjdXJyZW50LCB1bnNpZ25lZCBjb3VudCwgdW5zaWduZWQmIHRy
YXZlcnNlZENvdW50KSBjb25zdCB7IFRyYXZlcnNhbDo6dHJhdmVyc2VGb3J3YXJkKG5vZGVMaXN0
KCksIGN1cnJlbnQsIGNvdW50LCB0cmF2ZXJzZWRDb3VudCk7IH0KKyAgICB2b2lkIGNvbGxlY3Rp
b25UcmF2ZXJzZUJhY2t3YXJkKEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3ImIGN1cnJlbnQsIHVu
c2lnbmVkIGNvdW50KSBjb25zdCB7IFRyYXZlcnNhbDo6dHJhdmVyc2VCYWNrd2FyZChub2RlTGlz
dCgpLCBjdXJyZW50LCBjb3VudCk7IH0KICAgICBib29sIGNvbGxlY3Rpb25DYW5UcmF2ZXJzZUJh
Y2t3YXJkKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZvaWQgd2lsbFZhbGlkYXRlSW5k
ZXhDYWNoZSgpIGNvbnN0OwogCiAgICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVDYWNoZShEb2N1
bWVudCYpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOwotICAgIHZpcnR1YWwgc2l6ZV90IG1lbW9yeUNv
c3QoKSBjb25zdCBvdmVycmlkZSBmaW5hbDsKKyAgICB2aXJ0dWFsIHNpemVfdCBtZW1vcnlDb3N0
KCkgY29uc3Qgb3ZlcnJpZGUgZmluYWwgeyByZXR1cm4gbV9pbmRleENhY2hlLm1lbW9yeUNvc3Qo
KTsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgQ2FjaGVkTGl2ZU5vZGVMaXN0KENvbnRhaW5lck5vZGUm
IHJvb3ROb2RlLCBOb2RlTGlzdEludmFsaWRhdGlvblR5cGUpOwogCiBwcml2YXRlOgorICAgIHVz
aW5nIFRyYXZlcnNhbCA9IENvbGxlY3Rpb25UcmF2ZXJzYWw8Q29sbGVjdGlvblRyYXZlcnNhbFR5
cGU6OkRlc2NlbmRhbnRzPjsKKyAgICBOb2RlTGlzdFR5cGUmIG5vZGVMaXN0KCkgeyByZXR1cm4g
c3RhdGljX2Nhc3Q8Tm9kZUxpc3RUeXBlJj4oKnRoaXMpOyB9CisgICAgY29uc3QgTm9kZUxpc3RU
eXBlJiBub2RlTGlzdCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IE5vZGVMaXN0
VHlwZSY+KCp0aGlzKTsgfQorCiAgICAgQ29udGFpbmVyTm9kZSYgcm9vdE5vZGUoKSBjb25zdDsK
IAogICAgIG11dGFibGUgQ29sbGVjdGlvbkluZGV4Q2FjaGU8Tm9kZUxpc3RUeXBlLCBFbGVtZW50
RGVzY2VuZGFudEl0ZXJhdG9yPiBtX2luZGV4Q2FjaGU7CkBAIC0xMzEsMTE1ICsxMzYsMzkgQEAg
QUxXQVlTX0lOTElORSBib29sIHNob3VsZEludmFsaWRhdGVUeXBlT25BdHRyaWJ1dGVDaGFuZ2Uo
Tm9kZUxpc3RJbnZhbGlkYXRpb25UeXAKIHRlbXBsYXRlIDxjbGFzcyBOb2RlTGlzdFR5cGU+CiBD
YWNoZWRMaXZlTm9kZUxpc3Q8Tm9kZUxpc3RUeXBlPjo6Q2FjaGVkTGl2ZU5vZGVMaXN0KENvbnRh
aW5lck5vZGUmIG93bmVyTm9kZSwgTm9kZUxpc3RJbnZhbGlkYXRpb25UeXBlIGludmFsaWRhdGlv
blR5cGUpCiAgICAgOiBMaXZlTm9kZUxpc3Qob3duZXJOb2RlLCBpbnZhbGlkYXRpb25UeXBlKQot
ICAgICwgbV9pbmRleENhY2hlKHN0YXRpY19jYXN0PE5vZGVMaXN0VHlwZSY+KCp0aGlzKSkKKyAg
ICAsIG1faW5kZXhDYWNoZShub2RlTGlzdCgpKQogewogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgTm9k
ZUxpc3RUeXBlPgogQ2FjaGVkTGl2ZU5vZGVMaXN0PE5vZGVMaXN0VHlwZT46On5DYWNoZWRMaXZl
Tm9kZUxpc3QoKQogewotICAgIGF1dG8mIG5vZGVMaXN0ID0gc3RhdGljX2Nhc3Q8Y29uc3QgTm9k
ZUxpc3RUeXBlJj4oKnRoaXMpOwotICAgIGlmIChtX2luZGV4Q2FjaGUuaGFzVmFsaWRDYWNoZShu
b2RlTGlzdCkpCisgICAgaWYgKG1faW5kZXhDYWNoZS5oYXNWYWxpZENhY2hlKG5vZGVMaXN0KCkp
KQogICAgICAgICBkb2N1bWVudCgpLnVucmVnaXN0ZXJOb2RlTGlzdEZvckludmFsaWRhdGlvbigq
dGhpcyk7CiB9CiAKIHRlbXBsYXRlIDxjbGFzcyBOb2RlTGlzdFR5cGU+CiBpbmxpbmUgQ29udGFp
bmVyTm9kZSYgQ2FjaGVkTGl2ZU5vZGVMaXN0PE5vZGVMaXN0VHlwZT46OnJvb3ROb2RlKCkgY29u
c3QKIHsKLSAgICBpZiAoc3RhdGljX2Nhc3Q8Y29uc3QgTm9kZUxpc3RUeXBlJj4oKnRoaXMpLmlz
Um9vdGVkQXREb2N1bWVudCgpICYmIG93bmVyTm9kZSgpLmluRG9jdW1lbnQoKSkKKyAgICBpZiAo
bm9kZUxpc3QoKS5pc1Jvb3RlZEF0RG9jdW1lbnQoKSAmJiBvd25lck5vZGUoKS5pbkRvY3VtZW50
KCkpCiAgICAgICAgIHJldHVybiBvd25lck5vZGUoKS5kb2N1bWVudCgpOwogCiAgICAgcmV0dXJu
IG93bmVyTm9kZSgpOwogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgTm9kZUxpc3RUeXBlPgotRWxlbWVu
dERlc2NlbmRhbnRJdGVyYXRvciBDYWNoZWRMaXZlTm9kZUxpc3Q8Tm9kZUxpc3RUeXBlPjo6Y29s
bGVjdGlvbkJlZ2luKCkgY29uc3QKLXsKLSAgICBhdXRvJiBub2RlTGlzdCA9IHN0YXRpY19jYXN0
PGNvbnN0IE5vZGVMaXN0VHlwZSY+KCp0aGlzKTsKLSAgICBhdXRvIGRlc2NlbmRhbnRzID0gZWxl
bWVudERlc2NlbmRhbnRzKHJvb3ROb2RlKCkpOwotICAgIGF1dG8gZW5kID0gZGVzY2VuZGFudHMu
ZW5kKCk7Ci0gICAgZm9yIChhdXRvIGl0ID0gZGVzY2VuZGFudHMuYmVnaW4oKTsgaXQgIT0gZW5k
OyArK2l0KSB7Ci0gICAgICAgIGlmIChub2RlTGlzdC5lbGVtZW50TWF0Y2hlcygqaXQpKQotICAg
ICAgICAgICAgcmV0dXJuIGl0OwotICAgIH0KLSAgICByZXR1cm4gZW5kOwotfQotCi10ZW1wbGF0
ZSA8Y2xhc3MgTm9kZUxpc3RUeXBlPgotRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciBDYWNoZWRM
aXZlTm9kZUxpc3Q8Tm9kZUxpc3RUeXBlPjo6Y29sbGVjdGlvbkxhc3QoKSBjb25zdAotewotICAg
IGF1dG8mIG5vZGVMaXN0ID0gc3RhdGljX2Nhc3Q8Y29uc3QgTm9kZUxpc3RUeXBlJj4oKnRoaXMp
OwotICAgIGF1dG8gZGVzY2VuZGFudHMgPSBlbGVtZW50RGVzY2VuZGFudHMocm9vdE5vZGUoKSk7
Ci0gICAgYXV0byBlbmQgPSBkZXNjZW5kYW50cy5lbmQoKTsKLSAgICBmb3IgKGF1dG8gaXQgPSBk
ZXNjZW5kYW50cy5sYXN0KCk7IGl0ICE9IGVuZDsgLS1pdCkgewotICAgICAgICBpZiAobm9kZUxp
c3QuZWxlbWVudE1hdGNoZXMoKml0KSkKLSAgICAgICAgICAgIHJldHVybiBpdDsKLSAgICB9Ci0g
ICAgcmV0dXJuIGVuZDsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIE5vZGVMaXN0VHlwZT4KLXZvaWQg
Q2FjaGVkTGl2ZU5vZGVMaXN0PE5vZGVMaXN0VHlwZT46OmNvbGxlY3Rpb25UcmF2ZXJzZUZvcndh
cmQoRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciYgY3VycmVudCwgdW5zaWduZWQgY291bnQsIHVu
c2lnbmVkJiB0cmF2ZXJzZWRDb3VudCkgY29uc3QKLXsKLSAgICBhdXRvJiBub2RlTGlzdCA9IHN0
YXRpY19jYXN0PGNvbnN0IE5vZGVMaXN0VHlwZSY+KCp0aGlzKTsKLSAgICBBU1NFUlQobm9kZUxp
c3QuZWxlbWVudE1hdGNoZXMoKmN1cnJlbnQpKTsKLSAgICBhdXRvIGVuZCA9IGNvbGxlY3Rpb25F
bmQoKTsKLSAgICBmb3IgKHRyYXZlcnNlZENvdW50ID0gMDsgdHJhdmVyc2VkQ291bnQgPCBjb3Vu
dDsgKyt0cmF2ZXJzZWRDb3VudCkgewotICAgICAgICBkbyB7Ci0gICAgICAgICAgICArK2N1cnJl
bnQ7Ci0gICAgICAgICAgICBpZiAoY3VycmVudCA9PSBlbmQpCi0gICAgICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICB9IHdoaWxlICghbm9kZUxpc3QuZWxlbWVudE1hdGNoZXMoKmN1cnJlbnQp
KTsKLSAgICB9Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBOb2RlTGlzdFR5cGU+Ci12b2lkIENhY2hl
ZExpdmVOb2RlTGlzdDxOb2RlTGlzdFR5cGU+Ojpjb2xsZWN0aW9uVHJhdmVyc2VCYWNrd2FyZChF
bGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yJiBjdXJyZW50LCB1bnNpZ25lZCBjb3VudCkgY29uc3QK
LXsKLSAgICBhdXRvJiBub2RlTGlzdCA9IHN0YXRpY19jYXN0PGNvbnN0IE5vZGVMaXN0VHlwZSY+
KCp0aGlzKTsKLSAgICBBU1NFUlQobm9kZUxpc3QuZWxlbWVudE1hdGNoZXMoKmN1cnJlbnQpKTsK
LSAgICBhdXRvIGVuZCA9IGNvbGxlY3Rpb25FbmQoKTsKLSAgICBmb3IgKDsgY291bnQ7IC0tY291
bnQpIHsKLSAgICAgICAgZG8gewotICAgICAgICAgICAgLS1jdXJyZW50OwotICAgICAgICAgICAg
aWYgKGN1cnJlbnQgPT0gZW5kKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfSB3
aGlsZSAoIW5vZGVMaXN0LmVsZW1lbnRNYXRjaGVzKCpjdXJyZW50KSk7Ci0gICAgfQotfQotCi10
ZW1wbGF0ZSA8Y2xhc3MgTm9kZUxpc3RUeXBlPgogdm9pZCBDYWNoZWRMaXZlTm9kZUxpc3Q8Tm9k
ZUxpc3RUeXBlPjo6d2lsbFZhbGlkYXRlSW5kZXhDYWNoZSgpIGNvbnN0CiB7Ci0gICAgZG9jdW1l
bnQoKS5yZWdpc3Rlck5vZGVMaXN0Rm9ySW52YWxpZGF0aW9uKGNvbnN0X2Nhc3Q8Tm9kZUxpc3RU
eXBlJj4oc3RhdGljX2Nhc3Q8Y29uc3QgTm9kZUxpc3RUeXBlJj4oKnRoaXMpKSk7CisgICAgZG9j
dW1lbnQoKS5yZWdpc3Rlck5vZGVMaXN0Rm9ySW52YWxpZGF0aW9uKGNvbnN0X2Nhc3Q8Q2FjaGVk
TGl2ZU5vZGVMaXN0PE5vZGVMaXN0VHlwZT4mPigqdGhpcykpOwogfQogCiB0ZW1wbGF0ZSA8Y2xh
c3MgTm9kZUxpc3RUeXBlPgogdm9pZCBDYWNoZWRMaXZlTm9kZUxpc3Q8Tm9kZUxpc3RUeXBlPjo6
aW52YWxpZGF0ZUNhY2hlKERvY3VtZW50JiBkb2N1bWVudCkgY29uc3QKIHsKLSAgICBhdXRvJiBu
b2RlTGlzdCA9IHN0YXRpY19jYXN0PGNvbnN0IE5vZGVMaXN0VHlwZSY+KCp0aGlzKTsKLSAgICBp
ZiAoIW1faW5kZXhDYWNoZS5oYXNWYWxpZENhY2hlKG5vZGVMaXN0KSkKKyAgICBpZiAoIW1faW5k
ZXhDYWNoZS5oYXNWYWxpZENhY2hlKG5vZGVMaXN0KCkpKQogICAgICAgICByZXR1cm47Ci0gICAg
ZG9jdW1lbnQudW5yZWdpc3Rlck5vZGVMaXN0Rm9ySW52YWxpZGF0aW9uKGNvbnN0X2Nhc3Q8Tm9k
ZUxpc3RUeXBlJj4obm9kZUxpc3QpKTsKLSAgICBtX2luZGV4Q2FjaGUuaW52YWxpZGF0ZShub2Rl
TGlzdCk7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBOb2RlTGlzdFR5cGU+Ci11bnNpZ25lZCBDYWNo
ZWRMaXZlTm9kZUxpc3Q8Tm9kZUxpc3RUeXBlPjo6bGVuZ3RoKCkgY29uc3QKLXsKLSAgICByZXR1
cm4gbV9pbmRleENhY2hlLm5vZGVDb3VudChzdGF0aWNfY2FzdDxjb25zdCBOb2RlTGlzdFR5cGUm
PigqdGhpcykpOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgTm9kZUxpc3RUeXBlPgotTm9kZSogQ2Fj
aGVkTGl2ZU5vZGVMaXN0PE5vZGVMaXN0VHlwZT46Oml0ZW0odW5zaWduZWQgb2Zmc2V0KSBjb25z
dAotewotICAgIHJldHVybiBtX2luZGV4Q2FjaGUubm9kZUF0KHN0YXRpY19jYXN0PGNvbnN0IE5v
ZGVMaXN0VHlwZSY+KCp0aGlzKSwgb2Zmc2V0KTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIE5vZGVM
aXN0VHlwZT4KLXNpemVfdCBDYWNoZWRMaXZlTm9kZUxpc3Q8Tm9kZUxpc3RUeXBlPjo6bWVtb3J5
Q29zdCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1faW5kZXhDYWNoZS5tZW1vcnlDb3N0KCk7Cisg
ICAgZG9jdW1lbnQudW5yZWdpc3Rlck5vZGVMaXN0Rm9ySW52YWxpZGF0aW9uKGNvbnN0X2Nhc3Q8
Tm9kZUxpc3RUeXBlJj4obm9kZUxpc3QoKSkpOworICAgIG1faW5kZXhDYWNoZS5pbnZhbGlkYXRl
KG5vZGVMaXN0KCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0NhY2hlZEhUTUxDb2xsZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0NhY2hlZEhUTUxDb2xsZWN0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTgxMTJhNjc4ODZmNTQw
MTQwZmVlYTdmYmVlYmIyNmM1ZWI0NjIyNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvQ2FjaGVkSFRNTENvbGxlY3Rpb24uaApAQCAtMCwwICsxLDE2NSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZm5kZWYgQ2FjaGVkSFRNTENvbGxlY3Rpb25faAorI2RlZmluZSBDYWNoZWRIVE1M
Q29sbGVjdGlvbl9oCisKKyNpbmNsdWRlICJDb2xsZWN0aW9uVHJhdmVyc2FsLmgiCisjaW5jbHVk
ZSAiSFRNTENvbGxlY3Rpb24uaCIKKyNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBIVE1MQ29sbGVjdGlvbkNsYXNzLCBD
b2xsZWN0aW9uVHJhdmVyc2FsVHlwZSB0cmF2ZXJzYWxUeXBlPgorY2xhc3MgQ2FjaGVkSFRNTENv
bGxlY3Rpb24gOiBwdWJsaWMgSFRNTENvbGxlY3Rpb24geworcHVibGljOgorICAgIHVzaW5nIFRy
YXZlcnNhbCA9IENvbGxlY3Rpb25UcmF2ZXJzYWw8dHJhdmVyc2FsVHlwZT47CisgICAgdXNpbmcg
SXRlcmF0b3JUeXBlID0gdHlwZW5hbWUgVHJhdmVyc2FsOjpJdGVyYXRvclR5cGU7CisKKyAgICBD
YWNoZWRIVE1MQ29sbGVjdGlvbihDb250YWluZXJOb2RlJiBiYXNlLCBDb2xsZWN0aW9uVHlwZSk7
CisKKyAgICB2aXJ0dWFsIH5DYWNoZWRIVE1MQ29sbGVjdGlvbigpOworCisgICAgdmlydHVhbCB1
bnNpZ25lZCBsZW5ndGgoKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiBtX2luZGV4Q2Fj
aGUubm9kZUNvdW50KGNvbGxlY3Rpb24oKSk7IH0KKyAgICB2aXJ0dWFsIEVsZW1lbnQqIGl0ZW0o
dW5zaWduZWQgb2Zmc2V0KSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiBtX2luZGV4Q2Fj
aGUubm9kZUF0KGNvbGxlY3Rpb24oKSwgb2Zmc2V0KTsgfQorICAgIHZpcnR1YWwgRWxlbWVudCog
bmFtZWRJdGVtKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkgY29uc3Qgb3ZlcnJpZGU7CisgICAg
dmlydHVhbCBzaXplX3QgbWVtb3J5Q29zdCgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJu
IG1faW5kZXhDYWNoZS5tZW1vcnlDb3N0KCkgKyBIVE1MQ29sbGVjdGlvbjo6bWVtb3J5Q29zdCgp
OyB9CisKKyAgICAvLyBGb3IgQ29sbGVjdGlvbkluZGV4Q2FjaGU7IGRvIG5vdCB1c2UgZWxzZXdo
ZXJlLgorICAgIEl0ZXJhdG9yVHlwZSBjb2xsZWN0aW9uQmVnaW4oKSBjb25zdCB7IHJldHVybiBU
cmF2ZXJzYWw6OmJlZ2luKGNvbGxlY3Rpb24oKSwgcm9vdE5vZGUoKSk7IH0KKyAgICBJdGVyYXRv
clR5cGUgY29sbGVjdGlvbkxhc3QoKSBjb25zdCB7IHJldHVybiBUcmF2ZXJzYWw6Omxhc3QoY29s
bGVjdGlvbigpLCByb290Tm9kZSgpKTsgfQorICAgIEl0ZXJhdG9yVHlwZSBjb2xsZWN0aW9uRW5k
KCkgY29uc3QgeyByZXR1cm4gVHJhdmVyc2FsOjplbmQocm9vdE5vZGUoKSk7IH0KKyAgICB2b2lk
IGNvbGxlY3Rpb25UcmF2ZXJzZUZvcndhcmQoSXRlcmF0b3JUeXBlJiBjdXJyZW50LCB1bnNpZ25l
ZCBjb3VudCwgdW5zaWduZWQmIHRyYXZlcnNlZENvdW50KSBjb25zdCB7IFRyYXZlcnNhbDo6dHJh
dmVyc2VGb3J3YXJkKGNvbGxlY3Rpb24oKSwgY3VycmVudCwgY291bnQsIHRyYXZlcnNlZENvdW50
KTsgfQorICAgIHZvaWQgY29sbGVjdGlvblRyYXZlcnNlQmFja3dhcmQoSXRlcmF0b3JUeXBlJiBj
dXJyZW50LCB1bnNpZ25lZCBjb3VudCkgY29uc3QgeyBUcmF2ZXJzYWw6OnRyYXZlcnNlQmFja3dh
cmQoY29sbGVjdGlvbigpLCBjdXJyZW50LCBjb3VudCk7IH0KKyAgICBib29sIGNvbGxlY3Rpb25D
YW5UcmF2ZXJzZUJhY2t3YXJkKCkgY29uc3QgeyByZXR1cm4gdHJhdmVyc2FsVHlwZSAhPSBDb2xs
ZWN0aW9uVHJhdmVyc2FsVHlwZTo6Q3VzdG9tRm9yd2FyZE9ubHk7IH0KKyAgICB2b2lkIHdpbGxW
YWxpZGF0ZUluZGV4Q2FjaGUoKSBjb25zdDsKKworICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRl
Q2FjaGUoRG9jdW1lbnQmKSBvdmVycmlkZTsKKworICAgIGJvb2wgZWxlbWVudE1hdGNoZXMoRWxl
bWVudCYpIGNvbnN0OworCitwcml2YXRlOgorICAgIEhUTUxDb2xsZWN0aW9uQ2xhc3MmIGNvbGxl
Y3Rpb24oKSB7IHJldHVybiBzdGF0aWNfY2FzdDxIVE1MQ29sbGVjdGlvbkNsYXNzJj4oKnRoaXMp
OyB9CisgICAgY29uc3QgSFRNTENvbGxlY3Rpb25DbGFzcyYgY29sbGVjdGlvbigpIGNvbnN0IHsg
cmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEhUTUxDb2xsZWN0aW9uQ2xhc3MmPigqdGhpcyk7IH0K
KworICAgIG11dGFibGUgQ29sbGVjdGlvbkluZGV4Q2FjaGU8SFRNTENvbGxlY3Rpb25DbGFzcywg
SXRlcmF0b3JUeXBlPiBtX2luZGV4Q2FjaGU7Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgSFRN
TENvbGxlY3Rpb25DbGFzcywgQ29sbGVjdGlvblRyYXZlcnNhbFR5cGUgdHJhdmVyc2FsVHlwZT4K
K0NhY2hlZEhUTUxDb2xsZWN0aW9uPEhUTUxDb2xsZWN0aW9uQ2xhc3MsIHRyYXZlcnNhbFR5cGU+
OjpDYWNoZWRIVE1MQ29sbGVjdGlvbihDb250YWluZXJOb2RlJiBiYXNlLCBDb2xsZWN0aW9uVHlw
ZSBjb2xsZWN0aW9uVHlwZSkKKyAgICA6IEhUTUxDb2xsZWN0aW9uKGJhc2UsIGNvbGxlY3Rpb25U
eXBlKQorICAgICwgbV9pbmRleENhY2hlKGNvbGxlY3Rpb24oKSkKK3sgfQorCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgSFRNTENvbGxlY3Rpb25DbGFzcywgQ29sbGVjdGlvblRyYXZlcnNhbFR5cGUgdHJh
dmVyc2FsVHlwZT4KK0NhY2hlZEhUTUxDb2xsZWN0aW9uPEhUTUxDb2xsZWN0aW9uQ2xhc3MsIHRy
YXZlcnNhbFR5cGU+Ojp+Q2FjaGVkSFRNTENvbGxlY3Rpb24oKQoreworICAgIGlmIChtX2luZGV4
Q2FjaGUuaGFzVmFsaWRDYWNoZShjb2xsZWN0aW9uKCkpKQorICAgICAgICBkb2N1bWVudCgpLnVu
cmVnaXN0ZXJDb2xsZWN0aW9uKCp0aGlzKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIEhUTUxD
b2xsZWN0aW9uQ2xhc3MsIENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlIHRyYXZlcnNhbFR5cGU+Cit2
b2lkIENhY2hlZEhUTUxDb2xsZWN0aW9uPEhUTUxDb2xsZWN0aW9uQ2xhc3MsIHRyYXZlcnNhbFR5
cGU+Ojp3aWxsVmFsaWRhdGVJbmRleENhY2hlKCkgY29uc3QKK3sKKyAgICBkb2N1bWVudCgpLnJl
Z2lzdGVyQ29sbGVjdGlvbihjb25zdF9jYXN0PENhY2hlZEhUTUxDb2xsZWN0aW9uPEhUTUxDb2xs
ZWN0aW9uQ2xhc3MsIHRyYXZlcnNhbFR5cGU+Jj4oKnRoaXMpKTsKK30KKwordGVtcGxhdGUgPHR5
cGVuYW1lIEhUTUxDb2xsZWN0aW9uQ2xhc3MsIENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlIHRyYXZl
cnNhbFR5cGU+Cit2b2lkIENhY2hlZEhUTUxDb2xsZWN0aW9uPEhUTUxDb2xsZWN0aW9uQ2xhc3Ms
IHRyYXZlcnNhbFR5cGU+OjppbnZhbGlkYXRlQ2FjaGUoRG9jdW1lbnQmIGRvY3VtZW50KQorewor
ICAgIEhUTUxDb2xsZWN0aW9uOjppbnZhbGlkYXRlQ2FjaGUoZG9jdW1lbnQpOworICAgIGlmICht
X2luZGV4Q2FjaGUuaGFzVmFsaWRDYWNoZShjb2xsZWN0aW9uKCkpKSB7CisgICAgICAgIGRvY3Vt
ZW50LnVucmVnaXN0ZXJDb2xsZWN0aW9uKCp0aGlzKTsKKyAgICAgICAgbV9pbmRleENhY2hlLmlu
dmFsaWRhdGUoY29sbGVjdGlvbigpKTsKKyAgICB9Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBI
VE1MQ29sbGVjdGlvbkNsYXNzLCBDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZSB0cmF2ZXJzYWxUeXBl
PgorYm9vbCBDYWNoZWRIVE1MQ29sbGVjdGlvbjxIVE1MQ29sbGVjdGlvbkNsYXNzLCB0cmF2ZXJz
YWxUeXBlPjo6ZWxlbWVudE1hdGNoZXMoRWxlbWVudCYpIGNvbnN0Cit7CisgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitzdGF0aWMgaW5saW5lIGJvb2wg
bmFtZVNob3VsZEJlVmlzaWJsZUluRG9jdW1lbnRBbGwoSFRNTEVsZW1lbnQmIGVsZW1lbnQpCit7
CisgICAgLy8gVGhlIGRvY3VtZW50LmFsbCBjb2xsZWN0aW9uIHJldHVybnMgb25seSBjZXJ0YWlu
IHR5cGVzIG9mIGVsZW1lbnRzIGJ5IG5hbWUsCisgICAgLy8gYWx0aG91Z2ggaXQgcmV0dXJucyBh
bnkgdHlwZSBvZiBlbGVtZW50IGJ5IGlkLgorICAgIHJldHVybiBlbGVtZW50Lmhhc1RhZ05hbWUo
SFRNTE5hbWVzOjphcHBsZXRUYWcpCisgICAgICAgIHx8IGVsZW1lbnQuaGFzVGFnTmFtZShIVE1M
TmFtZXM6OmVtYmVkVGFnKQorICAgICAgICB8fCBlbGVtZW50Lmhhc1RhZ05hbWUoSFRNTE5hbWVz
Ojpmb3JtVGFnKQorICAgICAgICB8fCBlbGVtZW50Lmhhc1RhZ05hbWUoSFRNTE5hbWVzOjppbWdU
YWcpCisgICAgICAgIHx8IGVsZW1lbnQuaGFzVGFnTmFtZShIVE1MTmFtZXM6OmlucHV0VGFnKQor
ICAgICAgICB8fCBlbGVtZW50Lmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpvYmplY3RUYWcpCisgICAg
ICAgIHx8IGVsZW1lbnQuaGFzVGFnTmFtZShIVE1MTmFtZXM6OnNlbGVjdFRhZyk7Cit9CisKK3N0
YXRpYyBpbmxpbmUgYm9vbCBuYW1lU2hvdWxkQmVWaXNpYmxlSW5Eb2N1bWVudEFsbChFbGVtZW50
JiBlbGVtZW50KQoreworICAgIHJldHVybiBpczxIVE1MRWxlbWVudD4oZWxlbWVudCkgJiYgbmFt
ZVNob3VsZEJlVmlzaWJsZUluRG9jdW1lbnRBbGwoZG93bmNhc3Q8SFRNTEVsZW1lbnQ+KGVsZW1l
bnQpKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIEhUTUxDb2xsZWN0aW9uQ2xhc3MsIENvbGxl
Y3Rpb25UcmF2ZXJzYWxUeXBlIHRyYXZlcnNhbFR5cGU+CitFbGVtZW50KiBDYWNoZWRIVE1MQ29s
bGVjdGlvbjxIVE1MQ29sbGVjdGlvbkNsYXNzLCB0cmF2ZXJzYWxUeXBlPjo6bmFtZWRJdGVtKGNv
bnN0IEF0b21pY1N0cmluZyYgbmFtZSkgY29uc3QKK3sKKyAgICAvLyBodHRwOi8vbXNkbi5taWNy
b3NvZnQuY29tL3dvcmtzaG9wL2F1dGhvci9kaHRtbC9yZWZlcmVuY2UvbWV0aG9kcy9uYW1lZGl0
ZW0uYXNwCisgICAgLy8gVGhpcyBtZXRob2QgZmlyc3Qgc2VhcmNoZXMgZm9yIGFuIG9iamVjdCB3
aXRoIGEgbWF0Y2hpbmcgaWQKKyAgICAvLyBhdHRyaWJ1dGUuIElmIGEgbWF0Y2ggaXMgbm90IGZv
dW5kLCB0aGUgbWV0aG9kIHRoZW4gc2VhcmNoZXMgZm9yIGFuCisgICAgLy8gb2JqZWN0IHdpdGgg
YSBtYXRjaGluZyBuYW1lIGF0dHJpYnV0ZSwgYnV0IG9ubHkgb24gdGhvc2UgZWxlbWVudHMKKyAg
ICAvLyB0aGF0IGFyZSBhbGxvd2VkIGEgbmFtZSBhdHRyaWJ1dGUuCisKKyAgICBpZiAobmFtZS5p
c0VtcHR5KCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgQ29udGFpbmVyTm9kZSYg
cm9vdCA9IHJvb3ROb2RlKCk7CisgICAgaWYgKHRyYXZlcnNhbFR5cGUgIT0gQ29sbGVjdGlvblRy
YXZlcnNhbFR5cGU6OkN1c3RvbUZvcndhcmRPbmx5ICYmIHJvb3QuaXNJblRyZWVTY29wZSgpKSB7
CisgICAgICAgIEVsZW1lbnQqIGNhbmRpZGF0ZSA9IG51bGxwdHI7CisKKyAgICAgICAgVHJlZVNj
b3BlJiB0cmVlU2NvcGUgPSByb290LnRyZWVTY29wZSgpOworICAgICAgICBpZiAodHJlZVNjb3Bl
Lmhhc0VsZW1lbnRXaXRoSWQoKm5hbWUuaW1wbCgpKSkgeworICAgICAgICAgICAgaWYgKCF0cmVl
U2NvcGUuY29udGFpbnNNdWx0aXBsZUVsZW1lbnRzV2l0aElkKG5hbWUpKQorICAgICAgICAgICAg
ICAgIGNhbmRpZGF0ZSA9IHRyZWVTY29wZS5nZXRFbGVtZW50QnlJZChuYW1lKTsKKyAgICAgICAg
fSBlbHNlIGlmICh0cmVlU2NvcGUuaGFzRWxlbWVudFdpdGhOYW1lKCpuYW1lLmltcGwoKSkpIHsK
KyAgICAgICAgICAgIGlmICghdHJlZVNjb3BlLmNvbnRhaW5zTXVsdGlwbGVFbGVtZW50c1dpdGhO
YW1lKG5hbWUpKSB7CisgICAgICAgICAgICAgICAgY2FuZGlkYXRlID0gdHJlZVNjb3BlLmdldEVs
ZW1lbnRCeU5hbWUobmFtZSk7CisgICAgICAgICAgICAgICAgaWYgKGNhbmRpZGF0ZSAmJiB0eXBl
KCkgPT0gRG9jQWxsICYmICFuYW1lU2hvdWxkQmVWaXNpYmxlSW5Eb2N1bWVudEFsbCgqY2FuZGlk
YXRlKSkKKyAgICAgICAgICAgICAgICAgICAgY2FuZGlkYXRlID0gbnVsbHB0cjsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAg
ICAgICBpZiAoY2FuZGlkYXRlICYmIGNvbGxlY3Rpb24oKS5lbGVtZW50TWF0Y2hlcygqY2FuZGlk
YXRlKSkgeworICAgICAgICAgICAgaWYgKHRyYXZlcnNhbFR5cGUgPT0gQ29sbGVjdGlvblRyYXZl
cnNhbFR5cGU6OkNoaWxkcmVuT25seSA/IGNhbmRpZGF0ZS0+cGFyZW50Tm9kZSgpID09ICZyb290
IDogY2FuZGlkYXRlLT5pc0Rlc2NlbmRhbnRPZigmcm9vdCkpCisgICAgICAgICAgICAgICAgcmV0
dXJuIGNhbmRpZGF0ZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBIVE1MQ29sbGVj
dGlvbjo6bmFtZWRJdGVtKG5hbWUpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAvLyBDYWNoZWRIVE1MQ29sbGVjdGlvbl9oCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvQ29sbGVjdGlvblRyYXZlcnNhbC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Db2xs
ZWN0aW9uVHJhdmVyc2FsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzk5OTZmMTM5YzQxMmEzZjc3NjI5Yzk1ZjE2
ZWYwZjVkNTY0ZmZjYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ29s
bGVjdGlvblRyYXZlcnNhbC5oCkBAIC0wLDAgKzEsMjM2IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRl
ZiBDb2xsZWN0aW9uVHJhdmVyc2FsX2gKKyNkZWZpbmUgQ29sbGVjdGlvblRyYXZlcnNhbF9oCisK
KyNpbmNsdWRlICJDb2xsZWN0aW9uVHlwZS5oIgorI2luY2x1ZGUgIkVsZW1lbnRDaGlsZEl0ZXJh
dG9yLmgiCisjaW5jbHVkZSAiRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvci5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK3RlbXBsYXRlIDxDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZSB0cmF2ZXJz
YWxUeXBlPgorc3RydWN0IENvbGxlY3Rpb25UcmF2ZXJzYWwgeyB9OworCit0ZW1wbGF0ZSA8Pgor
c3RydWN0IENvbGxlY3Rpb25UcmF2ZXJzYWw8Q29sbGVjdGlvblRyYXZlcnNhbFR5cGU6OkRlc2Nl
bmRhbnRzPiB7CisgICAgdXNpbmcgSXRlcmF0b3JUeXBlID0gRWxlbWVudERlc2NlbmRhbnRJdGVy
YXRvcjsKKworICAgIHN0YXRpYyBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yIGVuZChDb250YWlu
ZXJOb2RlJikgeyByZXR1cm4gRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcigpOyB9CisKKyAgICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgQ29sbGVjdGlvbkNsYXNzPgorICAgIHN0YXRpYyBFbGVtZW50RGVz
Y2VuZGFudEl0ZXJhdG9yIGJlZ2luKGNvbnN0IENvbGxlY3Rpb25DbGFzcyYsIENvbnRhaW5lck5v
ZGUmIHJvb3ROb2RlKTsKKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDb2xsZWN0aW9uQ2xhc3M+
CisgICAgc3RhdGljIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IgbGFzdChjb25zdCBDb2xsZWN0
aW9uQ2xhc3MmLCBDb250YWluZXJOb2RlJiByb290Tm9kZSk7CisKKyAgICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgQ29sbGVjdGlvbkNsYXNzPgorICAgIHN0YXRpYyB2b2lkIHRyYXZlcnNlRm9yd2FyZChj
b25zdCBDb2xsZWN0aW9uQ2xhc3MmLCBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yJiBjdXJyZW50
LCB1bnNpZ25lZCBjb3VudCwgdW5zaWduZWQmIHRyYXZlcnNlZENvdW50KTsKKworICAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBDb2xsZWN0aW9uQ2xhc3M+CisgICAgc3RhdGljIHZvaWQgdHJhdmVyc2VC
YWNrd2FyZChjb25zdCBDb2xsZWN0aW9uQ2xhc3MmLCBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9y
JiBjdXJyZW50LCB1bnNpZ25lZCBjb3VudCk7Cit9OworCit0ZW1wbGF0ZSA8Pgorc3RydWN0IENv
bGxlY3Rpb25UcmF2ZXJzYWw8Q29sbGVjdGlvblRyYXZlcnNhbFR5cGU6OkNoaWxkcmVuT25seT4g
eworICAgIHVzaW5nIEl0ZXJhdG9yVHlwZSA9IEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnQ+
OworCisgICAgc3RhdGljIEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnQ+IGVuZChDb250YWlu
ZXJOb2RlJiByb290Tm9kZSkgeyByZXR1cm4gRWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVudD4o
cm9vdE5vZGUpOyB9CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ29sbGVjdGlvbkNsYXNzPgor
ICAgIHN0YXRpYyBFbGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50PiBiZWdpbihjb25zdCBDb2xs
ZWN0aW9uQ2xhc3MmLCBDb250YWluZXJOb2RlJiByb290Tm9kZSk7CisKKyAgICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgQ29sbGVjdGlvbkNsYXNzPgorICAgIHN0YXRpYyBFbGVtZW50Q2hpbGRJdGVyYXRv
cjxFbGVtZW50PiBsYXN0KGNvbnN0IENvbGxlY3Rpb25DbGFzcyYsIENvbnRhaW5lck5vZGUmIHJv
b3ROb2RlKTsKKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDb2xsZWN0aW9uQ2xhc3M+CisgICAg
c3RhdGljIHZvaWQgdHJhdmVyc2VGb3J3YXJkKGNvbnN0IENvbGxlY3Rpb25DbGFzcyYsIEVsZW1l
bnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnQ+JiBjdXJyZW50LCB1bnNpZ25lZCBjb3VudCwgdW5zaWdu
ZWQmIHRyYXZlcnNlZENvdW50KTsKKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDb2xsZWN0aW9u
Q2xhc3M+CisgICAgc3RhdGljIHZvaWQgdHJhdmVyc2VCYWNrd2FyZChjb25zdCBDb2xsZWN0aW9u
Q2xhc3MmLCBFbGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50PiYgY3VycmVudCwgdW5zaWduZWQg
Y291bnQpOworfTsKKwordGVtcGxhdGUgPD4KK3N0cnVjdCBDb2xsZWN0aW9uVHJhdmVyc2FsPENv
bGxlY3Rpb25UcmF2ZXJzYWxUeXBlOjpDdXN0b21Gb3J3YXJkT25seT4geworICAgIHVzaW5nIEl0
ZXJhdG9yVHlwZSA9IEVsZW1lbnQqOworCisgICAgc3RhdGljIEVsZW1lbnQqIGVuZChDb250YWlu
ZXJOb2RlJikgeyByZXR1cm4gbnVsbHB0cjsgfQorCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIENv
bGxlY3Rpb25DbGFzcz4KKyAgICBzdGF0aWMgRWxlbWVudCogYmVnaW4oY29uc3QgQ29sbGVjdGlv
bkNsYXNzJiwgQ29udGFpbmVyTm9kZSYpOworCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIENvbGxl
Y3Rpb25DbGFzcz4KKyAgICBzdGF0aWMgRWxlbWVudCogbGFzdChjb25zdCBDb2xsZWN0aW9uQ2xh
c3MmLCBDb250YWluZXJOb2RlJik7CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ29sbGVjdGlv
bkNsYXNzPgorICAgIHN0YXRpYyB2b2lkIHRyYXZlcnNlRm9yd2FyZChjb25zdCBDb2xsZWN0aW9u
Q2xhc3MmLCBFbGVtZW50KiYgY3VycmVudCwgdW5zaWduZWQgY291bnQsIHVuc2lnbmVkJiB0cmF2
ZXJzZWRDb3VudCk7CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ29sbGVjdGlvbkNsYXNzPgor
ICAgIHN0YXRpYyB2b2lkIHRyYXZlcnNlQmFja3dhcmQoY29uc3QgQ29sbGVjdGlvbkNsYXNzJiwg
RWxlbWVudComLCB1bnNpZ25lZCBjb3VudCk7Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ29s
bGVjdGlvbkNsYXNzPgoraW5saW5lIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IgQ29sbGVjdGlv
blRyYXZlcnNhbDxDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6RGVzY2VuZGFudHM+OjpiZWdpbihj
b25zdCBDb2xsZWN0aW9uQ2xhc3MmIGNvbGxlY3Rpb24sIENvbnRhaW5lck5vZGUmIHJvb3ROb2Rl
KQoreworICAgIGF1dG8gZGVzY2VuZGFudHMgPSBlbGVtZW50RGVzY2VuZGFudHMocm9vdE5vZGUp
OworICAgIGF1dG8gZW5kID0gZGVzY2VuZGFudHMuZW5kKCk7CisgICAgZm9yIChhdXRvIGl0ID0g
ZGVzY2VuZGFudHMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgIGlmIChjb2xs
ZWN0aW9uLmVsZW1lbnRNYXRjaGVzKCppdCkpCisgICAgICAgICAgICByZXR1cm4gaXQ7CisgICAg
fQorICAgIHJldHVybiBlbmQ7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBDb2xsZWN0aW9uQ2xh
c3M+CitpbmxpbmUgRWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVudD4gQ29sbGVjdGlvblRyYXZl
cnNhbDxDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6Q2hpbGRyZW5Pbmx5Pjo6YmVnaW4oY29uc3Qg
Q29sbGVjdGlvbkNsYXNzJiBjb2xsZWN0aW9uLCBDb250YWluZXJOb2RlJiByb290Tm9kZSkKK3sK
KyAgICBhdXRvIGNoaWxkcmVuID0gY2hpbGRyZW5PZlR5cGU8RWxlbWVudD4ocm9vdE5vZGUpOwor
ICAgIGF1dG8gZW5kID0gY2hpbGRyZW4uZW5kKCk7CisgICAgZm9yIChhdXRvIGl0ID0gY2hpbGRy
ZW4uYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgIGlmIChjb2xsZWN0aW9uLmVs
ZW1lbnRNYXRjaGVzKCppdCkpCisgICAgICAgICAgICByZXR1cm4gaXQ7CisgICAgfQorICAgIHJl
dHVybiBlbmQ7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBDb2xsZWN0aW9uQ2xhc3M+Citpbmxp
bmUgRWxlbWVudCogQ29sbGVjdGlvblRyYXZlcnNhbDxDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6
Q3VzdG9tRm9yd2FyZE9ubHk+OjpiZWdpbihjb25zdCBDb2xsZWN0aW9uQ2xhc3MmIGNvbGxlY3Rp
b24sIENvbnRhaW5lck5vZGUmKQoreworICAgIHJldHVybiBjb2xsZWN0aW9uLmN1c3RvbUVsZW1l
bnRBZnRlcihudWxscHRyKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIENvbGxlY3Rpb25DbGFz
cz4KK2lubGluZSBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yIENvbGxlY3Rpb25UcmF2ZXJzYWw8
Q29sbGVjdGlvblRyYXZlcnNhbFR5cGU6OkRlc2NlbmRhbnRzPjo6bGFzdChjb25zdCBDb2xsZWN0
aW9uQ2xhc3MmIGNvbGxlY3Rpb24sIENvbnRhaW5lck5vZGUmIHJvb3ROb2RlKQoreworICAgIGF1
dG8gZGVzY2VuZGFudHMgPSBlbGVtZW50RGVzY2VuZGFudHMocm9vdE5vZGUpOworICAgIGF1dG8g
ZW5kID0gZGVzY2VuZGFudHMuZW5kKCk7CisgICAgZm9yIChhdXRvIGl0ID0gZGVzY2VuZGFudHMu
bGFzdCgpOyBpdCAhPSBlbmQ7IC0taXQpIHsKKyAgICAgICAgaWYgKGNvbGxlY3Rpb24uZWxlbWVu
dE1hdGNoZXMoKml0KSkKKyAgICAgICAgICAgIHJldHVybiBpdDsKKyAgICB9CisgICAgcmV0dXJu
IGVuZDsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIENvbGxlY3Rpb25DbGFzcz4KK2lubGluZSBF
bGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50PiBDb2xsZWN0aW9uVHJhdmVyc2FsPENvbGxlY3Rp
b25UcmF2ZXJzYWxUeXBlOjpDaGlsZHJlbk9ubHk+OjpsYXN0KGNvbnN0IENvbGxlY3Rpb25DbGFz
cyYgY29sbGVjdGlvbiwgQ29udGFpbmVyTm9kZSYgcm9vdE5vZGUpCit7CisgICAgYXV0byBjaGls
ZHJlbiA9IGNoaWxkcmVuT2ZUeXBlPEVsZW1lbnQ+KHJvb3ROb2RlKTsKKyAgICBhdXRvIGVuZCA9
IGNoaWxkcmVuLmVuZCgpOworICAgIEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnQ+IGxhc3Qo
cm9vdE5vZGUsIGNoaWxkcmVuLmxhc3QoKSk7CisgICAgZm9yIChhdXRvIGl0ID0gbGFzdDsgaXQg
IT0gZW5kOyAtLWl0KSB7CisgICAgICAgIGlmIChjb2xsZWN0aW9uLmVsZW1lbnRNYXRjaGVzKCpp
dCkpCisgICAgICAgICAgICByZXR1cm4gaXQ7CisgICAgfQorICAgIHJldHVybiBlbmQ7Cit9CisK
K3RlbXBsYXRlIDx0eXBlbmFtZSBDb2xsZWN0aW9uQ2xhc3M+CitpbmxpbmUgRWxlbWVudCogQ29s
bGVjdGlvblRyYXZlcnNhbDxDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6Q3VzdG9tRm9yd2FyZE9u
bHk+OjpsYXN0KGNvbnN0IENvbGxlY3Rpb25DbGFzcyYsIENvbnRhaW5lck5vZGUmKQoreworICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgQ29sbGVjdGlvbkNsYXNzPgoraW5saW5lIHZvaWQgQ29sbGVjdGlvblRyYXZl
cnNhbDxDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6RGVzY2VuZGFudHM+Ojp0cmF2ZXJzZUZvcndh
cmQoY29uc3QgQ29sbGVjdGlvbkNsYXNzJiBjb2xsZWN0aW9uLCBFbGVtZW50RGVzY2VuZGFudEl0
ZXJhdG9yJiBjdXJyZW50LCB1bnNpZ25lZCBjb3VudCwgdW5zaWduZWQmIHRyYXZlcnNlZENvdW50
KQoreworICAgIEFTU0VSVChjb2xsZWN0aW9uLmVsZW1lbnRNYXRjaGVzKCpjdXJyZW50KSk7Cisg
ICAgYXV0byBlbmQgPSBjb2xsZWN0aW9uLmNvbGxlY3Rpb25FbmQoKTsKKyAgICBmb3IgKHRyYXZl
cnNlZENvdW50ID0gMDsgdHJhdmVyc2VkQ291bnQgPCBjb3VudDsgKyt0cmF2ZXJzZWRDb3VudCkg
eworICAgICAgICBkbyB7CisgICAgICAgICAgICArK2N1cnJlbnQ7CisgICAgICAgICAgICBpZiAo
Y3VycmVudCA9PSBlbmQpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9IHdoaWxl
ICghY29sbGVjdGlvbi5lbGVtZW50TWF0Y2hlcygqY3VycmVudCkpOworICAgIH0KK30KKwordGVt
cGxhdGUgPHR5cGVuYW1lIENvbGxlY3Rpb25DbGFzcz4KK2lubGluZSB2b2lkIENvbGxlY3Rpb25U
cmF2ZXJzYWw8Q29sbGVjdGlvblRyYXZlcnNhbFR5cGU6OkNoaWxkcmVuT25seT46OnRyYXZlcnNl
Rm9yd2FyZChjb25zdCBDb2xsZWN0aW9uQ2xhc3MmIGNvbGxlY3Rpb24sIEVsZW1lbnRDaGlsZEl0
ZXJhdG9yPEVsZW1lbnQ+JiBjdXJyZW50LCB1bnNpZ25lZCBjb3VudCwgdW5zaWduZWQmIHRyYXZl
cnNlZENvdW50KQoreworICAgIEFTU0VSVChjb2xsZWN0aW9uLmVsZW1lbnRNYXRjaGVzKCpjdXJy
ZW50KSk7CisgICAgYXV0byBlbmQgPSBjb2xsZWN0aW9uLmNvbGxlY3Rpb25FbmQoKTsKKyAgICBm
b3IgKHRyYXZlcnNlZENvdW50ID0gMDsgdHJhdmVyc2VkQ291bnQgPCBjb3VudDsgKyt0cmF2ZXJz
ZWRDb3VudCkgeworICAgICAgICBkbyB7CisgICAgICAgICAgICArK2N1cnJlbnQ7CisgICAgICAg
ICAgICBpZiAoY3VycmVudCA9PSBlbmQpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9IHdoaWxlICghY29sbGVjdGlvbi5lbGVtZW50TWF0Y2hlcygqY3VycmVudCkpOworICAgIH0K
K30KKwordGVtcGxhdGUgPHR5cGVuYW1lIENvbGxlY3Rpb25DbGFzcz4KK2lubGluZSB2b2lkIENv
bGxlY3Rpb25UcmF2ZXJzYWw8Q29sbGVjdGlvblRyYXZlcnNhbFR5cGU6OkN1c3RvbUZvcndhcmRP
bmx5Pjo6dHJhdmVyc2VGb3J3YXJkKGNvbnN0IENvbGxlY3Rpb25DbGFzcyYgY29sbGVjdGlvbiwg
RWxlbWVudComIGN1cnJlbnQsIHVuc2lnbmVkIGNvdW50LCB1bnNpZ25lZCYgdHJhdmVyc2VkQ291
bnQpCit7CisgICAgRWxlbWVudCogZWxlbWVudCA9IGN1cnJlbnQ7CisgICAgZm9yICh0cmF2ZXJz
ZWRDb3VudCA9IDA7IHRyYXZlcnNlZENvdW50IDwgY291bnQ7ICsrdHJhdmVyc2VkQ291bnQpIHsK
KyAgICAgICAgZWxlbWVudCA9IGNvbGxlY3Rpb24uY3VzdG9tRWxlbWVudEFmdGVyKGVsZW1lbnQp
OworICAgICAgICBpZiAoIWVsZW1lbnQpIHsKKyAgICAgICAgICAgIGN1cnJlbnQgPSBudWxscHRy
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorICAgIGN1cnJlbnQgPSBl
bGVtZW50OworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ29sbGVjdGlvbkNsYXNzPgoraW5saW5l
IHZvaWQgQ29sbGVjdGlvblRyYXZlcnNhbDxDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6RGVzY2Vu
ZGFudHM+Ojp0cmF2ZXJzZUJhY2t3YXJkKGNvbnN0IENvbGxlY3Rpb25DbGFzcyYgY29sbGVjdGlv
biwgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciYgY3VycmVudCwgdW5zaWduZWQgY291bnQpCit7
CisgICAgQVNTRVJUKGNvbGxlY3Rpb24uZWxlbWVudE1hdGNoZXMoKmN1cnJlbnQpKTsKKyAgICBh
dXRvIGVuZCA9IGNvbGxlY3Rpb24uY29sbGVjdGlvbkVuZCgpOworICAgIGZvciAoOyBjb3VudDsg
LS1jb3VudCkgeworICAgICAgICBkbyB7CisgICAgICAgICAgICAtLWN1cnJlbnQ7CisgICAgICAg
ICAgICBpZiAoY3VycmVudCA9PSBlbmQpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9IHdoaWxlICghY29sbGVjdGlvbi5lbGVtZW50TWF0Y2hlcygqY3VycmVudCkpOworICAgIH0K
K30KKwordGVtcGxhdGUgPHR5cGVuYW1lIENvbGxlY3Rpb25DbGFzcz4KK2lubGluZSB2b2lkIENv
bGxlY3Rpb25UcmF2ZXJzYWw8Q29sbGVjdGlvblRyYXZlcnNhbFR5cGU6OkNoaWxkcmVuT25seT46
OnRyYXZlcnNlQmFja3dhcmQoY29uc3QgQ29sbGVjdGlvbkNsYXNzJiBjb2xsZWN0aW9uLCBFbGVt
ZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50PiYgY3VycmVudCwgdW5zaWduZWQgY291bnQpCit7Cisg
ICAgQVNTRVJUKGNvbGxlY3Rpb24uZWxlbWVudE1hdGNoZXMoKmN1cnJlbnQpKTsKKyAgICBhdXRv
IGVuZCA9IGNvbGxlY3Rpb24uY29sbGVjdGlvbkVuZCgpOworICAgIGZvciAoOyBjb3VudDsgLS1j
b3VudCkgeworICAgICAgICBkbyB7CisgICAgICAgICAgICAtLWN1cnJlbnQ7CisgICAgICAgICAg
ICBpZiAoY3VycmVudCA9PSBlbmQpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
IHdoaWxlICghY29sbGVjdGlvbi5lbGVtZW50TWF0Y2hlcygqY3VycmVudCkpOworICAgIH0KK30K
KwordGVtcGxhdGUgPHR5cGVuYW1lIENvbGxlY3Rpb25DbGFzcz4KK2lubGluZSB2b2lkIENvbGxl
Y3Rpb25UcmF2ZXJzYWw8Q29sbGVjdGlvblRyYXZlcnNhbFR5cGU6OkN1c3RvbUZvcndhcmRPbmx5
Pjo6dHJhdmVyc2VCYWNrd2FyZChjb25zdCBDb2xsZWN0aW9uQ2xhc3MmLCBFbGVtZW50KiYsIHVu
c2lnbmVkIGNvdW50KQoreworICAgIFVOVVNFRF9QQVJBTShjb3VudCk7CisgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIENv
bGxlY3Rpb25UcmF2ZXJzYWxfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9Db2xs
ZWN0aW9uVHlwZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Db2xsZWN0aW9uVHlwZS5oCmluZGV4
IDUxMzBhZjkxZGFlODY4YTcxNGY2ZTA1NTBiZmFhZGY0MDFmNjViYmMuLjFhOTIyZDBmZjkwNjA4
NGFkMTczNGIwNzBmODVhMDRjZmI4OTRiMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvQ29sbGVjdGlvblR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0NvbGxlY3Rpb25U
eXBlLmgKQEAgLTUzLDYgKzUzLDQyIEBAIGVudW0gQ29sbGVjdGlvblR5cGUgewogICAgIEZvcm1D
b250cm9scwogfTsKIAotfSAvLyBuYW1lc3BhY2UKK2VudW0gY2xhc3MgQ29sbGVjdGlvblRyYXZl
cnNhbFR5cGUgeyBEZXNjZW5kYW50cywgQ2hpbGRyZW5Pbmx5LCBDdXN0b21Gb3J3YXJkT25seSB9
OwordGVtcGxhdGU8Q29sbGVjdGlvblR5cGUgY29sbGVjdGlvblR5cGU+CitzdHJ1Y3QgQ29sbGVj
dGlvblR5cGVUcmFpdHMgeworICAgIHN0YXRpYyBjb25zdCBDb2xsZWN0aW9uVHJhdmVyc2FsVHlw
ZSB0cmF2ZXJzYWxUeXBlID0gQ29sbGVjdGlvblRyYXZlcnNhbFR5cGU6OkRlc2NlbmRhbnRzOwor
fTsKKwordGVtcGxhdGU8Pgorc3RydWN0IENvbGxlY3Rpb25UeXBlVHJhaXRzPE5vZGVDaGlsZHJl
bj4geworICAgIHN0YXRpYyBjb25zdCBDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZSB0cmF2ZXJzYWxU
eXBlID0gQ29sbGVjdGlvblRyYXZlcnNhbFR5cGU6OkNoaWxkcmVuT25seTsKK307CisKK3RlbXBs
YXRlPD4KK3N0cnVjdCBDb2xsZWN0aW9uVHlwZVRyYWl0czxUUkNlbGxzPiB7CisgICAgc3RhdGlj
IGNvbnN0IENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlIHRyYXZlcnNhbFR5cGUgPSBDb2xsZWN0aW9u
VHJhdmVyc2FsVHlwZTo6Q2hpbGRyZW5Pbmx5OworfTsKKwordGVtcGxhdGU8Pgorc3RydWN0IENv
bGxlY3Rpb25UeXBlVHJhaXRzPFRTZWN0aW9uUm93cz4geworICAgIHN0YXRpYyBjb25zdCBDb2xs
ZWN0aW9uVHJhdmVyc2FsVHlwZSB0cmF2ZXJzYWxUeXBlID0gQ29sbGVjdGlvblRyYXZlcnNhbFR5
cGU6OkNoaWxkcmVuT25seTsKK307CisKK3RlbXBsYXRlPD4KK3N0cnVjdCBDb2xsZWN0aW9uVHlw
ZVRyYWl0czxUYWJsZVRCb2RpZXM+IHsKKyAgICBzdGF0aWMgY29uc3QgQ29sbGVjdGlvblRyYXZl
cnNhbFR5cGUgdHJhdmVyc2FsVHlwZSA9IENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlOjpDaGlsZHJl
bk9ubHk7Cit9OworCit0ZW1wbGF0ZTw+CitzdHJ1Y3QgQ29sbGVjdGlvblR5cGVUcmFpdHM8VGFi
bGVSb3dzPiB7CisgICAgc3RhdGljIGNvbnN0IENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlIHRyYXZl
cnNhbFR5cGUgPSBDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6Q3VzdG9tRm9yd2FyZE9ubHk7Cit9
OworCit0ZW1wbGF0ZTw+CitzdHJ1Y3QgQ29sbGVjdGlvblR5cGVUcmFpdHM8Rm9ybUNvbnRyb2xz
PiB7CisgICAgc3RhdGljIGNvbnN0IENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlIHRyYXZlcnNhbFR5
cGUgPSBDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6Q3VzdG9tRm9yd2FyZE9ubHk7Cit9OworCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9HZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9HZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjExM2I2MWZh
YWQ4YmI3NWMwN2I4NDU0YzE0OTQyZjc2MTdjYTZlNjIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0dlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbi5jcHAKQEAgLTAsMCAr
MSw4OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJHZW5l
cmljQ2FjaGVkSFRNTENvbGxlY3Rpb24uaCIKKworI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgorI2lu
Y2x1ZGUgIkhUTUxPYmplY3RFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTE9wdGlvbkVsZW1lbnQu
aCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwor
Cit0ZW1wbGF0ZSA8Q29sbGVjdGlvblRyYXZlcnNhbFR5cGUgdHJhdmVyc2FsVHlwZT4KK2Jvb2wg
R2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uPHRyYXZlcnNhbFR5cGU+OjplbGVtZW50TWF0Y2hl
cyhFbGVtZW50JiBlbGVtZW50KSBjb25zdAoreworICAgIHN3aXRjaCAodGhpcy0+dHlwZSgpKSB7
CisgICAgY2FzZSBOb2RlQ2hpbGRyZW46CisgICAgICAgIHJldHVybiB0cnVlOworICAgIGNhc2Ug
RG9jSW1hZ2VzOgorICAgICAgICByZXR1cm4gZWxlbWVudC5oYXNUYWdOYW1lKGltZ1RhZyk7Cisg
ICAgY2FzZSBEb2NTY3JpcHRzOgorICAgICAgICByZXR1cm4gZWxlbWVudC5oYXNUYWdOYW1lKHNj
cmlwdFRhZyk7CisgICAgY2FzZSBEb2NGb3JtczoKKyAgICAgICAgcmV0dXJuIGVsZW1lbnQuaGFz
VGFnTmFtZShmb3JtVGFnKTsKKyAgICBjYXNlIFRhYmxlVEJvZGllczoKKyAgICAgICAgcmV0dXJu
IGVsZW1lbnQuaGFzVGFnTmFtZSh0Ym9keVRhZyk7CisgICAgY2FzZSBUUkNlbGxzOgorICAgICAg
ICByZXR1cm4gZWxlbWVudC5oYXNUYWdOYW1lKHRkVGFnKSB8fCBlbGVtZW50Lmhhc1RhZ05hbWUo
dGhUYWcpOworICAgIGNhc2UgVFNlY3Rpb25Sb3dzOgorICAgICAgICByZXR1cm4gZWxlbWVudC5o
YXNUYWdOYW1lKHRyVGFnKTsKKyAgICBjYXNlIFNlbGVjdGVkT3B0aW9uczoKKyAgICAgICAgcmV0
dXJuIGlzPEhUTUxPcHRpb25FbGVtZW50PihlbGVtZW50KSAmJiBkb3duY2FzdDxIVE1MT3B0aW9u
RWxlbWVudD4oZWxlbWVudCkuc2VsZWN0ZWQoKTsKKyAgICBjYXNlIERhdGFMaXN0T3B0aW9uczoK
KyAgICAgICAgaWYgKGlzPEhUTUxPcHRpb25FbGVtZW50PihlbGVtZW50KSkgeworICAgICAgICAg
ICAgSFRNTE9wdGlvbkVsZW1lbnQmIG9wdGlvbiA9IGRvd25jYXN0PEhUTUxPcHRpb25FbGVtZW50
PihlbGVtZW50KTsKKyAgICAgICAgICAgIGlmICghb3B0aW9uLmlzRGlzYWJsZWRGb3JtQ29udHJv
bCgpICYmICFvcHRpb24udmFsdWUoKS5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGNhc2UgTWFwQXJl
YXM6CisgICAgICAgIHJldHVybiBlbGVtZW50Lmhhc1RhZ05hbWUoYXJlYVRhZyk7CisgICAgY2Fz
ZSBEb2NBcHBsZXRzOgorICAgICAgICByZXR1cm4gaXM8SFRNTEFwcGxldEVsZW1lbnQ+KGVsZW1l
bnQpIHx8IChpczxIVE1MT2JqZWN0RWxlbWVudD4oZWxlbWVudCkgJiYgZG93bmNhc3Q8SFRNTE9i
amVjdEVsZW1lbnQ+KGVsZW1lbnQpLmNvbnRhaW5zSmF2YUFwcGxldCgpKTsKKyAgICBjYXNlIERv
Y0VtYmVkczoKKyAgICAgICAgcmV0dXJuIGVsZW1lbnQuaGFzVGFnTmFtZShlbWJlZFRhZyk7Cisg
ICAgY2FzZSBEb2NMaW5rczoKKyAgICAgICAgcmV0dXJuIChlbGVtZW50Lmhhc1RhZ05hbWUoYVRh
ZykgfHwgZWxlbWVudC5oYXNUYWdOYW1lKGFyZWFUYWcpKSAmJiBlbGVtZW50LmZhc3RIYXNBdHRy
aWJ1dGUoaHJlZkF0dHIpOworICAgIGNhc2UgRG9jQW5jaG9yczoKKyAgICAgICAgcmV0dXJuIGVs
ZW1lbnQuaGFzVGFnTmFtZShhVGFnKSAmJiBlbGVtZW50LmZhc3RIYXNBdHRyaWJ1dGUobmFtZUF0
dHIpOworICAgIGNhc2UgRG9jQWxsOgorICAgIGNhc2UgRG9jdW1lbnROYW1lZEl0ZW1zOgorICAg
IGNhc2UgRm9ybUNvbnRyb2xzOgorICAgIGNhc2UgU2VsZWN0T3B0aW9uczoKKyAgICBjYXNlIFRh
YmxlUm93czoKKyAgICBjYXNlIFdpbmRvd05hbWVkSXRlbXM6CisgICAgICAgIGJyZWFrOworICAg
IH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9Cit0ZW1w
bGF0ZSBib29sIEdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbjxDb2xsZWN0aW9uVHJhdmVyc2Fs
VHlwZTo6RGVzY2VuZGFudHM+OjplbGVtZW50TWF0Y2hlcyhFbGVtZW50JikgY29uc3Q7Cit0ZW1w
bGF0ZSBib29sIEdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbjxDb2xsZWN0aW9uVHJhdmVyc2Fs
VHlwZTo6Q2hpbGRyZW5Pbmx5Pjo6ZWxlbWVudE1hdGNoZXMoRWxlbWVudCYpIGNvbnN0OwordGVt
cGxhdGUgYm9vbCBHZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb248Q29sbGVjdGlvblRyYXZlcnNh
bFR5cGU6OkN1c3RvbUZvcndhcmRPbmx5Pjo6ZWxlbWVudE1hdGNoZXMoRWxlbWVudCYpIGNvbnN0
OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0dlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9H
ZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNjMzMTMzZmRhMGEyYTNm
MmJiY2EzYWU1ZWM5NGUxM2M3NmViOGUzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9HZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb24uaApAQCAtMCwwICsxLDUyIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBHZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb25faAorI2RlZmlu
ZSBHZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb25faAorCisjaW5jbHVkZSAiQ2FjaGVkSFRNTENv
bGxlY3Rpb24uaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit0ZW1wbGF0ZSA8Q29sbGVjdGlv
blRyYXZlcnNhbFR5cGUgdHJhdmVyc2FsVHlwZT4KK2NsYXNzIEdlbmVyaWNDYWNoZWRIVE1MQ29s
bGVjdGlvbiBmaW5hbCA6IHB1YmxpYyBDYWNoZWRIVE1MQ29sbGVjdGlvbjxHZW5lcmljQ2FjaGVk
SFRNTENvbGxlY3Rpb248dHJhdmVyc2FsVHlwZT4sIHRyYXZlcnNhbFR5cGU+IHsKK3B1YmxpYzoK
KyAgICBzdGF0aWMgUmVmPEdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbj4gY3JlYXRlKENvbnRh
aW5lck5vZGUmIGJhc2UsIENvbGxlY3Rpb25UeXBlIGNvbGxlY3Rpb25UeXBlKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgR2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uKGJh
c2UsIGNvbGxlY3Rpb25UeXBlKSk7CisgICAgfQorCisgICAgYm9vbCBlbGVtZW50TWF0Y2hlcyhF
bGVtZW50JikgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgR2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0
aW9uKENvbnRhaW5lck5vZGUmIGJhc2UsIENvbGxlY3Rpb25UeXBlIGNvbGxlY3Rpb25UeXBlKQor
ICAgICAgICA6IENhY2hlZEhUTUxDb2xsZWN0aW9uPEdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlv
bjx0cmF2ZXJzYWxUeXBlPiwgdHJhdmVyc2FsVHlwZT4oYmFzZSwgY29sbGVjdGlvblR5cGUpCisg
ICAgeyB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBHZW5lcmlj
Q2FjaGVkSFRNTENvbGxlY3Rpb25faAorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxBbGxDb2xsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFsbENvbGxl
Y3Rpb24uY3BwCmluZGV4IDAxNjY4NzE0ZWNiYmJkMGZlYmQxZTUwYzRhYmQ0YjA5MTNiNDI3ZjMu
LmRhYjA1MDBmYWQ4OGM2NTRhNWI5MWNiZTVkM2Q5YTc0NjI3OThiMWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFsbENvbGxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEFsbENvbGxlY3Rpb24uY3BwCkBAIC0zNiw3ICszNiw3IEBAIFJlZjxIVE1M
QWxsQ29sbGVjdGlvbj4gSFRNTEFsbENvbGxlY3Rpb246OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1l
bnQsIENvbGxlY3Rpb25UCiB9CiAKIGlubGluZSBIVE1MQWxsQ29sbGVjdGlvbjo6SFRNTEFsbENv
bGxlY3Rpb24oRG9jdW1lbnQmIGRvY3VtZW50LCBDb2xsZWN0aW9uVHlwZSB0eXBlKQotICAgIDog
SFRNTENvbGxlY3Rpb24oZG9jdW1lbnQsIHR5cGUpCisgICAgOiBDYWNoZWRIVE1MQ29sbGVjdGlv
bjxIVE1MQWxsQ29sbGVjdGlvbiwgQ29sbGVjdGlvblR5cGVUcmFpdHM8RG9jQWxsPjo6dHJhdmVy
c2FsVHlwZT4oZG9jdW1lbnQsIHR5cGUpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEFsbENvbGxlY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFs
bENvbGxlY3Rpb24uaAppbmRleCA1MTQ1MTE3NGJkMjgzYjIwMWM4OTJlMmVhNGE1YWI5ZmI2MTVi
ZjAxLi5iNjAxMWI0OTYyZGUwYzc3NzNjYjMxYmU5MTY2ZDNlOThiOTA0ZGMwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbGxDb2xsZWN0aW9uLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MQWxsQ29sbGVjdGlvbi5oCkBAIC0yNiwxNiArMjYsMTkgQEAKICNpZm5k
ZWYgSFRNTEFsbENvbGxlY3Rpb25faAogI2RlZmluZSBIVE1MQWxsQ29sbGVjdGlvbl9oCiAKLSNp
bmNsdWRlICJIVE1MQ29sbGVjdGlvbi5oIgorI2luY2x1ZGUgIkNhY2hlZEhUTUxDb2xsZWN0aW9u
LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgSFRNTEFsbENvbGxlY3Rpb24gZmlu
YWwgOiBwdWJsaWMgSFRNTENvbGxlY3Rpb24geworY2xhc3MgSFRNTEFsbENvbGxlY3Rpb24gZmlu
YWwgOiBwdWJsaWMgQ2FjaGVkSFRNTENvbGxlY3Rpb248SFRNTEFsbENvbGxlY3Rpb24sIENvbGxl
Y3Rpb25UeXBlVHJhaXRzPERvY0FsbD46OnRyYXZlcnNhbFR5cGU+IHsKIHB1YmxpYzoKICAgICBz
dGF0aWMgUmVmPEhUTUxBbGxDb2xsZWN0aW9uPiBjcmVhdGUoRG9jdW1lbnQmLCBDb2xsZWN0aW9u
VHlwZSk7CiAKICAgICBFbGVtZW50KiBuYW1lZEl0ZW1XaXRoSW5kZXgoY29uc3QgQXRvbWljU3Ry
aW5nJiBuYW1lLCB1bnNpZ25lZCBpbmRleCkgY29uc3Q7CiAKKyAgICAvLyBGb3IgQ2FjaGVkSFRN
TENvbGxlY3Rpb24uCisgICAgYm9vbCBlbGVtZW50TWF0Y2hlcyhFbGVtZW50JikgY29uc3QgeyBy
ZXR1cm4gdHJ1ZTsgfQorCiBwcml2YXRlOgogICAgIEhUTUxBbGxDb2xsZWN0aW9uKERvY3VtZW50
JiwgQ29sbGVjdGlvblR5cGUpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTENvbGxlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5j
cHAKaW5kZXggM2I0YjYyZjcyNmJjNDUwMzhjYjM5MzExNjA0Zjg1NzUzMGI2ODFkZi4uMzA4MTBj
ZmFkMjgzMjkyNDZmNGM5MTdkMmI3NzliMjAyN2Q1ZjBjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQ29sbGVjdGlvbi5jcHAKQEAgLTIzLDQ4ICsyMywxNCBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIkhUTUxDb2xsZWN0aW9uLmgiCiAKLSNpbmNsdWRlICJFbGVtZW50VHJhdmVy
c2FsLmgiCi0jaW5jbHVkZSAiSFRNTERvY3VtZW50LmgiCi0jaW5jbHVkZSAiSFRNTE5hbWVDb2xs
ZWN0aW9uLmgiCisjaW5jbHVkZSAiQ2FjaGVkSFRNTENvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJI
VE1MTmFtZXMuaCIKLSNpbmNsdWRlICJIVE1MT2JqZWN0RWxlbWVudC5oIgotI2luY2x1ZGUgIkhU
TUxPcHRpb25FbGVtZW50LmgiCiAjaW5jbHVkZSAiTm9kZVJhcmVEYXRhLmgiCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAotc3RhdGljIGJvb2wg
c2hvdWxkT25seUluY2x1ZGVEaXJlY3RDaGlsZHJlbihDb2xsZWN0aW9uVHlwZSB0eXBlKQotewot
ICAgIHN3aXRjaCAodHlwZSkgewotICAgIGNhc2UgRG9jQWxsOgotICAgIGNhc2UgRG9jQW5jaG9y
czoKLSAgICBjYXNlIERvY0FwcGxldHM6Ci0gICAgY2FzZSBEb2NFbWJlZHM6Ci0gICAgY2FzZSBE
b2NGb3JtczoKLSAgICBjYXNlIERvY0ltYWdlczoKLSAgICBjYXNlIERvY0xpbmtzOgotICAgIGNh
c2UgRG9jU2NyaXB0czoKLSAgICBjYXNlIERvY3VtZW50TmFtZWRJdGVtczoKLSAgICBjYXNlIE1h
cEFyZWFzOgotICAgIGNhc2UgVGFibGVSb3dzOgotICAgIGNhc2UgU2VsZWN0T3B0aW9uczoKLSAg
ICBjYXNlIFNlbGVjdGVkT3B0aW9uczoKLSAgICBjYXNlIERhdGFMaXN0T3B0aW9uczoKLSAgICBj
YXNlIFdpbmRvd05hbWVkSXRlbXM6Ci0gICAgY2FzZSBGb3JtQ29udHJvbHM6Ci0gICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICBjYXNlIE5vZGVDaGlsZHJlbjoKLSAgICBjYXNlIFRSQ2VsbHM6Ci0g
ICAgY2FzZSBUU2VjdGlvblJvd3M6Ci0gICAgY2FzZSBUYWJsZVRCb2RpZXM6Ci0gICAgICAgIHJl
dHVybiB0cnVlOwotICAgIH0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4g
ZmFsc2U7Ci19Ci0KIGlubGluZSBhdXRvIEhUTUxDb2xsZWN0aW9uOjpyb290VHlwZUZyb21Db2xs
ZWN0aW9uVHlwZShDb2xsZWN0aW9uVHlwZSB0eXBlKSAtPiBSb290VHlwZQogewogICAgIHN3aXRj
aCAodHlwZSkgewpAQCAtMTMxLDI2MiArOTcsMjkgQEAgc3RhdGljIE5vZGVMaXN0SW52YWxpZGF0
aW9uVHlwZSBpbnZhbGlkYXRpb25UeXBlRXhjbHVkaW5nSWRBbmROYW1lQXR0cmlidXRlcyhDb2wK
ICAgICByZXR1cm4gRG9Ob3RJbnZhbGlkYXRlT25BdHRyaWJ1dGVDaGFuZ2VzOwogfQogCi1IVE1M
Q29sbGVjdGlvbjo6SFRNTENvbGxlY3Rpb24oQ29udGFpbmVyTm9kZSYgb3duZXJOb2RlLCBDb2xs
ZWN0aW9uVHlwZSB0eXBlLCBFbGVtZW50VHJhdmVyc2FsVHlwZSB0cmF2ZXJzYWxUeXBlKQorSFRN
TENvbGxlY3Rpb246OkhUTUxDb2xsZWN0aW9uKENvbnRhaW5lck5vZGUmIG93bmVyTm9kZSwgQ29s
bGVjdGlvblR5cGUgdHlwZSkKICAgICA6IG1fb3duZXJOb2RlKG93bmVyTm9kZSkKLSAgICAsIG1f
aW5kZXhDYWNoZSgqdGhpcykKICAgICAsIG1fY29sbGVjdGlvblR5cGUodHlwZSkKICAgICAsIG1f
aW52YWxpZGF0aW9uVHlwZShpbnZhbGlkYXRpb25UeXBlRXhjbHVkaW5nSWRBbmROYW1lQXR0cmli
dXRlcyh0eXBlKSkKICAgICAsIG1fcm9vdFR5cGUocm9vdFR5cGVGcm9tQ29sbGVjdGlvblR5cGUo
dHlwZSkpCi0gICAgLCBtX3Nob3VsZE9ubHlJbmNsdWRlRGlyZWN0Q2hpbGRyZW4oc2hvdWxkT25s
eUluY2x1ZGVEaXJlY3RDaGlsZHJlbih0eXBlKSkKLSAgICAsIG1fdXNlc0N1c3RvbUZvcndhcmRP
bmx5VHJhdmVyc2FsKHRyYXZlcnNhbFR5cGUgPT0gQ3VzdG9tRm9yd2FyZE9ubHlUcmF2ZXJzYWwp
CiB7CiAgICAgQVNTRVJUKG1fcm9vdFR5cGUgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJvb3RU
eXBlRnJvbUNvbGxlY3Rpb25UeXBlKHR5cGUpKSk7CiAgICAgQVNTRVJUKG1faW52YWxpZGF0aW9u
VHlwZSA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW52YWxpZGF0aW9uVHlwZUV4Y2x1ZGluZ0lk
QW5kTmFtZUF0dHJpYnV0ZXModHlwZSkpKTsKICAgICBBU1NFUlQobV9jb2xsZWN0aW9uVHlwZSA9
PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odHlwZSkpOwogfQogCi1SZWY8SFRNTENvbGxlY3Rpb24+
IEhUTUxDb2xsZWN0aW9uOjpjcmVhdGUoQ29udGFpbmVyTm9kZSYgYmFzZSwgQ29sbGVjdGlvblR5
cGUgdHlwZSkKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBIVE1MQ29sbGVjdGlvbihiYXNl
LCB0eXBlKSk7Ci19Ci0KIEhUTUxDb2xsZWN0aW9uOjp+SFRNTENvbGxlY3Rpb24oKQogewotICAg
IGlmIChtX2luZGV4Q2FjaGUuaGFzVmFsaWRDYWNoZSgqdGhpcykpCi0gICAgICAgIGRvY3VtZW50
KCkudW5yZWdpc3RlckNvbGxlY3Rpb24oKnRoaXMpOwogICAgIGlmIChoYXNOYW1lZEVsZW1lbnRD
YWNoZSgpKQogICAgICAgICBkb2N1bWVudCgpLmNvbGxlY3Rpb25XaWxsQ2xlYXJJZE5hbWVNYXAo
KnRoaXMpOworCiAgICAgLy8gSFRNTE5hbWVDb2xsZWN0aW9uIHJlbW92ZXMgY2FjaGUgYnkgaXRz
ZWxmLgogICAgIGlmICh0eXBlKCkgIT0gV2luZG93TmFtZWRJdGVtcyAmJiB0eXBlKCkgIT0gRG9j
dW1lbnROYW1lZEl0ZW1zKQogICAgICAgICBvd25lck5vZGUoKS5ub2RlTGlzdHMoKS0+cmVtb3Zl
Q2FjaGVkQ29sbGVjdGlvbih0aGlzKTsKIH0KIAotQ29udGFpbmVyTm9kZSYgSFRNTENvbGxlY3Rp
b246OnJvb3ROb2RlKCkgY29uc3QKLXsKLSAgICBpZiAoaXNSb290ZWRBdERvY3VtZW50KCkgJiYg
b3duZXJOb2RlKCkuaW5Eb2N1bWVudCgpKQotICAgICAgICByZXR1cm4gb3duZXJOb2RlKCkuZG9j
dW1lbnQoKTsKLQotICAgIHJldHVybiBvd25lck5vZGUoKTsKLX0KLQotc3RhdGljIGlubGluZSBi
b29sIGlzTWF0Y2hpbmdIVE1MRWxlbWVudChjb25zdCBIVE1MQ29sbGVjdGlvbiYgY29sbGVjdGlv
biwgSFRNTEVsZW1lbnQmIGVsZW1lbnQpCit2b2lkIEhUTUxDb2xsZWN0aW9uOjppbnZhbGlkYXRl
Q2FjaGUoRG9jdW1lbnQmIGRvY3VtZW50KQogewotICAgIHN3aXRjaCAoY29sbGVjdGlvbi50eXBl
KCkpIHsKLSAgICBjYXNlIERvY0ltYWdlczoKLSAgICAgICAgcmV0dXJuIGVsZW1lbnQuaGFzVGFn
TmFtZShpbWdUYWcpOwotICAgIGNhc2UgRG9jU2NyaXB0czoKLSAgICAgICAgcmV0dXJuIGVsZW1l
bnQuaGFzVGFnTmFtZShzY3JpcHRUYWcpOwotICAgIGNhc2UgRG9jRm9ybXM6Ci0gICAgICAgIHJl
dHVybiBlbGVtZW50Lmhhc1RhZ05hbWUoZm9ybVRhZyk7Ci0gICAgY2FzZSBUYWJsZVRCb2RpZXM6
Ci0gICAgICAgIHJldHVybiBlbGVtZW50Lmhhc1RhZ05hbWUodGJvZHlUYWcpOwotICAgIGNhc2Ug
VFJDZWxsczoKLSAgICAgICAgcmV0dXJuIGVsZW1lbnQuaGFzVGFnTmFtZSh0ZFRhZykgfHwgZWxl
bWVudC5oYXNUYWdOYW1lKHRoVGFnKTsKLSAgICBjYXNlIFRTZWN0aW9uUm93czoKLSAgICAgICAg
cmV0dXJuIGVsZW1lbnQuaGFzVGFnTmFtZSh0clRhZyk7Ci0gICAgY2FzZSBTZWxlY3RPcHRpb25z
OgotICAgICAgICByZXR1cm4gZWxlbWVudC5oYXNUYWdOYW1lKG9wdGlvblRhZyk7Ci0gICAgY2Fz
ZSBTZWxlY3RlZE9wdGlvbnM6Ci0gICAgICAgIHJldHVybiBpczxIVE1MT3B0aW9uRWxlbWVudD4o
ZWxlbWVudCkgJiYgZG93bmNhc3Q8SFRNTE9wdGlvbkVsZW1lbnQ+KGVsZW1lbnQpLnNlbGVjdGVk
KCk7Ci0gICAgY2FzZSBEYXRhTGlzdE9wdGlvbnM6Ci0gICAgICAgIGlmIChpczxIVE1MT3B0aW9u
RWxlbWVudD4oZWxlbWVudCkpIHsKLSAgICAgICAgICAgIEhUTUxPcHRpb25FbGVtZW50JiBvcHRp
b24gPSBkb3duY2FzdDxIVE1MT3B0aW9uRWxlbWVudD4oZWxlbWVudCk7Ci0gICAgICAgICAgICBp
ZiAoIW9wdGlvbi5pc0Rpc2FibGVkRm9ybUNvbnRyb2woKSAmJiAhb3B0aW9uLnZhbHVlKCkuaXNF
bXB0eSgpKQotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICBjYXNlIE1hcEFyZWFzOgotICAgICAgICByZXR1cm4gZWxlbWVu
dC5oYXNUYWdOYW1lKGFyZWFUYWcpOwotICAgIGNhc2UgRG9jQXBwbGV0czoKLSAgICAgICAgcmV0
dXJuIGlzPEhUTUxBcHBsZXRFbGVtZW50PihlbGVtZW50KSB8fCAoaXM8SFRNTE9iamVjdEVsZW1l
bnQ+KGVsZW1lbnQpICYmIGRvd25jYXN0PEhUTUxPYmplY3RFbGVtZW50PihlbGVtZW50KS5jb250
YWluc0phdmFBcHBsZXQoKSk7Ci0gICAgY2FzZSBEb2NFbWJlZHM6Ci0gICAgICAgIHJldHVybiBl
bGVtZW50Lmhhc1RhZ05hbWUoZW1iZWRUYWcpOwotICAgIGNhc2UgRG9jTGlua3M6Ci0gICAgICAg
IHJldHVybiAoZWxlbWVudC5oYXNUYWdOYW1lKGFUYWcpIHx8IGVsZW1lbnQuaGFzVGFnTmFtZShh
cmVhVGFnKSkgJiYgZWxlbWVudC5mYXN0SGFzQXR0cmlidXRlKGhyZWZBdHRyKTsKLSAgICBjYXNl
IERvY0FuY2hvcnM6Ci0gICAgICAgIHJldHVybiBlbGVtZW50Lmhhc1RhZ05hbWUoYVRhZykgJiYg
ZWxlbWVudC5mYXN0SGFzQXR0cmlidXRlKG5hbWVBdHRyKTsKLSAgICBjYXNlIERvY3VtZW50TmFt
ZWRJdGVtczoKLSAgICAgICAgcmV0dXJuIGRvd25jYXN0PERvY3VtZW50TmFtZUNvbGxlY3Rpb24+
KGNvbGxlY3Rpb24pLmVsZW1lbnRNYXRjaGVzKGVsZW1lbnQpOwotICAgIGNhc2UgRG9jQWxsOgot
ICAgIGNhc2UgTm9kZUNoaWxkcmVuOgotICAgIGNhc2UgV2luZG93TmFtZWRJdGVtczoKLSAgICBj
YXNlIEZvcm1Db250cm9sczoKLSAgICBjYXNlIFRhYmxlUm93czoKLSAgICAgICAgYnJlYWs7Ci0g
ICAgfQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBmYWxzZTsKLX0KLQot
c3RhdGljIGlubGluZSBib29sIGlzTWF0Y2hpbmdFbGVtZW50KGNvbnN0IEhUTUxDb2xsZWN0aW9u
JiBjb2xsZWN0aW9uLCBFbGVtZW50JiBlbGVtZW50KQotewotICAgIC8vIENvbGxlY3Rpb24gdHlw
ZXMgdGhhdCBkZWFsIHdpdGggYW55IHR5cGUgb2YgRWxlbWVudHMsIG5vdCBqdXN0IEhUTUxFbGVt
ZW50cy4KLSAgICBzd2l0Y2ggKGNvbGxlY3Rpb24udHlwZSgpKSB7Ci0gICAgY2FzZSBEb2NBbGw6
Ci0gICAgY2FzZSBOb2RlQ2hpbGRyZW46Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIGNhc2Ug
V2luZG93TmFtZWRJdGVtczoKLSAgICAgICAgcmV0dXJuIGRvd25jYXN0PFdpbmRvd05hbWVDb2xs
ZWN0aW9uPihjb2xsZWN0aW9uKS5lbGVtZW50TWF0Y2hlcyhlbGVtZW50KTsKLSAgICBkZWZhdWx0
OgotICAgICAgICAvLyBDb2xsZWN0aW9uIHR5cGVzIHRoYXQgb25seSBkZWFsIHdpdGggSFRNTEVs
ZW1lbnRzLgotICAgICAgICByZXR1cm4gaXM8SFRNTEVsZW1lbnQ+KGVsZW1lbnQpICYmIGlzTWF0
Y2hpbmdIVE1MRWxlbWVudChjb2xsZWN0aW9uLCBkb3duY2FzdDxIVE1MRWxlbWVudD4oZWxlbWVu
dCkpOwotICAgIH0KLX0KLQotc3RhdGljIGlubGluZSBFbGVtZW50KiBwcmV2aW91c0VsZW1lbnQo
Q29udGFpbmVyTm9kZSYgYmFzZSwgRWxlbWVudCYgZWxlbWVudCwgYm9vbCBvbmx5SW5jbHVkZURp
cmVjdENoaWxkcmVuKQotewotICAgIHJldHVybiBvbmx5SW5jbHVkZURpcmVjdENoaWxkcmVuID8g
RWxlbWVudFRyYXZlcnNhbDo6cHJldmlvdXNTaWJsaW5nKGVsZW1lbnQpIDogRWxlbWVudFRyYXZl
cnNhbDo6cHJldmlvdXMoZWxlbWVudCwgJmJhc2UpOwotfQotCi1BTFdBWVNfSU5MSU5FIEVsZW1l
bnQqIEhUTUxDb2xsZWN0aW9uOjppdGVyYXRlRm9yUHJldmlvdXNFbGVtZW50KEVsZW1lbnQqIGVs
ZW1lbnQpIGNvbnN0Ci17Ci0gICAgYm9vbCBvbmx5SW5jbHVkZURpcmVjdENoaWxkcmVuID0gbV9z
aG91bGRPbmx5SW5jbHVkZURpcmVjdENoaWxkcmVuOwotICAgIENvbnRhaW5lck5vZGUmIHJvb3RO
b2RlID0gdGhpcy0+cm9vdE5vZGUoKTsKLSAgICBmb3IgKDsgZWxlbWVudDsgZWxlbWVudCA9IHBy
ZXZpb3VzRWxlbWVudChyb290Tm9kZSwgKmVsZW1lbnQsIG9ubHlJbmNsdWRlRGlyZWN0Q2hpbGRy
ZW4pKSB7Ci0gICAgICAgIGlmIChpc01hdGNoaW5nRWxlbWVudCgqdGhpcywgKmVsZW1lbnQpKQot
ICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7Ci0gICAgfQotICAgIHJldHVybiBudWxscHRyOwot
fQotCi1zdGF0aWMgaW5saW5lIEVsZW1lbnQqIGZpcnN0TWF0Y2hpbmdFbGVtZW50KGNvbnN0IEhU
TUxDb2xsZWN0aW9uJiBjb2xsZWN0aW9uLCBDb250YWluZXJOb2RlJiByb290KQotewotICAgIEVs
ZW1lbnQqIGVsZW1lbnQgPSBFbGVtZW50VHJhdmVyc2FsOjpmaXJzdFdpdGhpbihyb290KTsKLSAg
ICB3aGlsZSAoZWxlbWVudCAmJiAhaXNNYXRjaGluZ0VsZW1lbnQoY29sbGVjdGlvbiwgKmVsZW1l
bnQpKQotICAgICAgICBlbGVtZW50ID0gRWxlbWVudFRyYXZlcnNhbDo6bmV4dCgqZWxlbWVudCwg
JnJvb3QpOwotICAgIHJldHVybiBlbGVtZW50OwotfQotCi1zdGF0aWMgaW5saW5lIEVsZW1lbnQq
IG5leHRNYXRjaGluZ0VsZW1lbnQoY29uc3QgSFRNTENvbGxlY3Rpb24mIGNvbGxlY3Rpb24sIEVs
ZW1lbnQmIGVsZW1lbnQsIENvbnRhaW5lck5vZGUmIHJvb3QpCi17Ci0gICAgRWxlbWVudCogbmV4
dCA9ICZlbGVtZW50OwotICAgIGRvIHsKLSAgICAgICAgbmV4dCA9IEVsZW1lbnRUcmF2ZXJzYWw6
Om5leHQoKm5leHQsICZyb290KTsKLSAgICB9IHdoaWxlIChuZXh0ICYmICFpc01hdGNoaW5nRWxl
bWVudChjb2xsZWN0aW9uLCAqbmV4dCkpOwotICAgIHJldHVybiBuZXh0OwotfQotCi11bnNpZ25l
ZCBIVE1MQ29sbGVjdGlvbjo6bGVuZ3RoKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9pbmRleENh
Y2hlLm5vZGVDb3VudCgqdGhpcyk7Ci19Ci0KLUVsZW1lbnQqIEhUTUxDb2xsZWN0aW9uOjppdGVt
KHVuc2lnbmVkIG9mZnNldCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9pbmRleENhY2hlLm5vZGVB
dCgqdGhpcywgb2Zmc2V0KTsKLX0KLQotc3RhdGljIGlubGluZSBib29sIG5hbWVTaG91bGRCZVZp
c2libGVJbkRvY3VtZW50QWxsKEhUTUxFbGVtZW50JiBlbGVtZW50KQotewotICAgIC8vIFRoZSBk
b2N1bWVudC5hbGwgY29sbGVjdGlvbiByZXR1cm5zIG9ubHkgY2VydGFpbiB0eXBlcyBvZiBlbGVt
ZW50cyBieSBuYW1lLAotICAgIC8vIGFsdGhvdWdoIGl0IHJldHVybnMgYW55IHR5cGUgb2YgZWxl
bWVudCBieSBpZC4KLSAgICByZXR1cm4gZWxlbWVudC5oYXNUYWdOYW1lKGFwcGxldFRhZykKLSAg
ICAgICAgfHwgZWxlbWVudC5oYXNUYWdOYW1lKGVtYmVkVGFnKQotICAgICAgICB8fCBlbGVtZW50
Lmhhc1RhZ05hbWUoZm9ybVRhZykKLSAgICAgICAgfHwgZWxlbWVudC5oYXNUYWdOYW1lKGltZ1Rh
ZykKLSAgICAgICAgfHwgZWxlbWVudC5oYXNUYWdOYW1lKGlucHV0VGFnKQotICAgICAgICB8fCBl
bGVtZW50Lmhhc1RhZ05hbWUob2JqZWN0VGFnKQotICAgICAgICB8fCBlbGVtZW50Lmhhc1RhZ05h
bWUoc2VsZWN0VGFnKTsKLX0KLQotc3RhdGljIGlubGluZSBib29sIG5hbWVTaG91bGRCZVZpc2li
bGVJbkRvY3VtZW50QWxsKEVsZW1lbnQmIGVsZW1lbnQpCi17Ci0gICAgcmV0dXJuIGlzPEhUTUxF
bGVtZW50PihlbGVtZW50KSAmJiBuYW1lU2hvdWxkQmVWaXNpYmxlSW5Eb2N1bWVudEFsbChkb3du
Y2FzdDxIVE1MRWxlbWVudD4oZWxlbWVudCkpOwotfQotCi1zdGF0aWMgaW5saW5lIEVsZW1lbnQq
IGZpcnN0TWF0Y2hpbmdDaGlsZEVsZW1lbnQoY29uc3QgSFRNTENvbGxlY3Rpb24mIG5vZGVMaXN0
LCBDb250YWluZXJOb2RlJiByb290KQotewotICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBFbGVtZW50
VHJhdmVyc2FsOjpmaXJzdFdpdGhpbihyb290KTsKLSAgICB3aGlsZSAoZWxlbWVudCAmJiAhaXNN
YXRjaGluZ0VsZW1lbnQobm9kZUxpc3QsICplbGVtZW50KSkKLSAgICAgICAgZWxlbWVudCA9IEVs
ZW1lbnRUcmF2ZXJzYWw6Om5leHRTaWJsaW5nKCplbGVtZW50KTsKLSAgICByZXR1cm4gZWxlbWVu
dDsKLX0KLQotc3RhdGljIGlubGluZSBFbGVtZW50KiBuZXh0TWF0Y2hpbmdTaWJsaW5nRWxlbWVu
dChjb25zdCBIVE1MQ29sbGVjdGlvbiYgbm9kZUxpc3QsIEVsZW1lbnQmIGVsZW1lbnQpCi17Ci0g
ICAgRWxlbWVudCogbmV4dCA9ICZlbGVtZW50OwotICAgIGRvIHsKLSAgICAgICAgbmV4dCA9IEVs
ZW1lbnRUcmF2ZXJzYWw6Om5leHRTaWJsaW5nKCpuZXh0KTsKLSAgICB9IHdoaWxlIChuZXh0ICYm
ICFpc01hdGNoaW5nRWxlbWVudChub2RlTGlzdCwgKm5leHQpKTsKLSAgICByZXR1cm4gbmV4dDsK
LX0KLQotaW5saW5lIGJvb2wgSFRNTENvbGxlY3Rpb246OnVzZXNDdXN0b21Gb3J3YXJkT25seVRy
YXZlcnNhbCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fdXNlc0N1c3RvbUZvcndhcmRPbmx5VHJh
dmVyc2FsOwotfQotCi1pbmxpbmUgRWxlbWVudCogSFRNTENvbGxlY3Rpb246OmZpcnN0RWxlbWVu
dChDb250YWluZXJOb2RlJiByb290KSBjb25zdAotewotICAgIGlmICh1c2VzQ3VzdG9tRm9yd2Fy
ZE9ubHlUcmF2ZXJzYWwoKSkKLSAgICAgICAgcmV0dXJuIGN1c3RvbUVsZW1lbnRBZnRlcihudWxs
cHRyKTsKLSAgICBpZiAobV9zaG91bGRPbmx5SW5jbHVkZURpcmVjdENoaWxkcmVuKQotICAgICAg
ICByZXR1cm4gZmlyc3RNYXRjaGluZ0NoaWxkRWxlbWVudCgqdGhpcywgcm9vdCk7Ci0gICAgcmV0
dXJuIGZpcnN0TWF0Y2hpbmdFbGVtZW50KCp0aGlzLCByb290KTsKLX0KLQotaW5saW5lIEVsZW1l
bnQqIEhUTUxDb2xsZWN0aW9uOjp0cmF2ZXJzZUZvcndhcmQoRWxlbWVudCYgY3VycmVudCwgdW5z
aWduZWQgY291bnQsIHVuc2lnbmVkJiB0cmF2ZXJzZWRDb3VudCwgQ29udGFpbmVyTm9kZSYgcm9v
dCkgY29uc3QKLXsKLSAgICBFbGVtZW50KiBlbGVtZW50ID0gJmN1cnJlbnQ7Ci0gICAgaWYgKHVz
ZXNDdXN0b21Gb3J3YXJkT25seVRyYXZlcnNhbCgpKSB7Ci0gICAgICAgIGZvciAodHJhdmVyc2Vk
Q291bnQgPSAwOyB0cmF2ZXJzZWRDb3VudCA8IGNvdW50OyArK3RyYXZlcnNlZENvdW50KSB7Ci0g
ICAgICAgICAgICBlbGVtZW50ID0gY3VzdG9tRWxlbWVudEFmdGVyKGVsZW1lbnQpOwotICAgICAg
ICAgICAgaWYgKCFlbGVtZW50KQotICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAg
ICAgICB9Ci0gICAgfSBlbHNlIGlmIChtX3Nob3VsZE9ubHlJbmNsdWRlRGlyZWN0Q2hpbGRyZW4p
IHsKLSAgICAgICAgZm9yICh0cmF2ZXJzZWRDb3VudCA9IDA7IHRyYXZlcnNlZENvdW50IDwgY291
bnQ7ICsrdHJhdmVyc2VkQ291bnQpIHsKLSAgICAgICAgICAgIGVsZW1lbnQgPSBuZXh0TWF0Y2hp
bmdTaWJsaW5nRWxlbWVudCgqdGhpcywgKmVsZW1lbnQpOwotICAgICAgICAgICAgaWYgKCFlbGVt
ZW50KQotICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICB9Ci0gICAgfSBl
bHNlIHsKLSAgICAgICAgZm9yICh0cmF2ZXJzZWRDb3VudCA9IDA7IHRyYXZlcnNlZENvdW50IDwg
Y291bnQ7ICsrdHJhdmVyc2VkQ291bnQpIHsKLSAgICAgICAgICAgIGVsZW1lbnQgPSBuZXh0TWF0
Y2hpbmdFbGVtZW50KCp0aGlzLCAqZWxlbWVudCwgcm9vdCk7Ci0gICAgICAgICAgICBpZiAoIWVs
ZW1lbnQpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIH0KLSAgICB9
Ci0gICAgcmV0dXJuIGVsZW1lbnQ7Ci19Ci0KLUVsZW1lbnQqIEhUTUxDb2xsZWN0aW9uOjpjb2xs
ZWN0aW9uQmVnaW4oKSBjb25zdAotewotICAgIHJldHVybiBmaXJzdEVsZW1lbnQocm9vdE5vZGUo
KSk7Ci19Ci0KLUVsZW1lbnQqIEhUTUxDb2xsZWN0aW9uOjpjb2xsZWN0aW9uTGFzdCgpIGNvbnN0
Ci17Ci0gICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIG9wdGltaXplZCBzaW1pbGFybHkgdG8g
dGhlIGZvcndhcmQgY2FzZS4KLSAgICBhdXRvJiByb290ID0gcm9vdE5vZGUoKTsKLSAgICBFbGVt
ZW50KiBsYXN0ID0gbV9zaG91bGRPbmx5SW5jbHVkZURpcmVjdENoaWxkcmVuID8gRWxlbWVudFRy
YXZlcnNhbDo6bGFzdENoaWxkKHJvb3QpIDogRWxlbWVudFRyYXZlcnNhbDo6bGFzdFdpdGhpbihy
b290KTsKLSAgICByZXR1cm4gaXRlcmF0ZUZvclByZXZpb3VzRWxlbWVudChsYXN0KTsKLX0KLQot
dm9pZCBIVE1MQ29sbGVjdGlvbjo6Y29sbGVjdGlvblRyYXZlcnNlRm9yd2FyZChFbGVtZW50KiYg
Y3VycmVudCwgdW5zaWduZWQgY291bnQsIHVuc2lnbmVkJiB0cmF2ZXJzZWRDb3VudCkgY29uc3QK
LXsKLSAgICBjdXJyZW50ID0gdHJhdmVyc2VGb3J3YXJkKCpjdXJyZW50LCBjb3VudCwgdHJhdmVy
c2VkQ291bnQsIHJvb3ROb2RlKCkpOwotfQotCi12b2lkIEhUTUxDb2xsZWN0aW9uOjpjb2xsZWN0
aW9uVHJhdmVyc2VCYWNrd2FyZChFbGVtZW50KiYgY3VycmVudCwgdW5zaWduZWQgY291bnQpIGNv
bnN0Ci17Ci0gICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIG9wdGltaXplZCBzaW1pbGFybHkg
dG8gdGhlIGZvcndhcmQgY2FzZS4KLSAgICBpZiAobV9zaG91bGRPbmx5SW5jbHVkZURpcmVjdENo
aWxkcmVuKSB7Ci0gICAgICAgIGZvciAoOyBjb3VudCAmJiBjdXJyZW50OyAtLWNvdW50KQotICAg
ICAgICAgICAgY3VycmVudCA9IGl0ZXJhdGVGb3JQcmV2aW91c0VsZW1lbnQoRWxlbWVudFRyYXZl
cnNhbDo6cHJldmlvdXNTaWJsaW5nKCpjdXJyZW50KSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0gICAgYXV0byYgcm9vdCA9IHJvb3ROb2RlKCk7Ci0gICAgZm9yICg7IGNvdW50ICYmIGN1cnJl
bnQ7IC0tY291bnQpCi0gICAgICAgIGN1cnJlbnQgPSBpdGVyYXRlRm9yUHJldmlvdXNFbGVtZW50
KEVsZW1lbnRUcmF2ZXJzYWw6OnByZXZpb3VzKCpjdXJyZW50LCAmcm9vdCkpOwotfQotCi12b2lk
IEhUTUxDb2xsZWN0aW9uOjppbnZhbGlkYXRlQ2FjaGUoRG9jdW1lbnQmIGRvY3VtZW50KSBjb25z
dAotewotICAgIGlmIChtX2luZGV4Q2FjaGUuaGFzVmFsaWRDYWNoZSgqdGhpcykpIHsKLSAgICAg
ICAgZG9jdW1lbnQudW5yZWdpc3RlckNvbGxlY3Rpb24oY29uc3RfY2FzdDxIVE1MQ29sbGVjdGlv
biY+KCp0aGlzKSk7Ci0gICAgICAgIG1faW5kZXhDYWNoZS5pbnZhbGlkYXRlKCp0aGlzKTsKLSAg
ICB9CiAgICAgaWYgKGhhc05hbWVkRWxlbWVudENhY2hlKCkpCiAgICAgICAgIGludmFsaWRhdGVO
YW1lZEVsZW1lbnRDYWNoZShkb2N1bWVudCk7CiB9CkBAIC00MDAsMzggKzEzMyw2IEBAIHZvaWQg
SFRNTENvbGxlY3Rpb246OmludmFsaWRhdGVOYW1lZEVsZW1lbnRDYWNoZShEb2N1bWVudCYgZG9j
dW1lbnQpIGNvbnN0CiAKIEVsZW1lbnQqIEhUTUxDb2xsZWN0aW9uOjpuYW1lZEl0ZW0oY29uc3Qg
QXRvbWljU3RyaW5nJiBuYW1lKSBjb25zdAogewotICAgIC8vIGh0dHA6Ly9tc2RuLm1pY3Jvc29m
dC5jb20vd29ya3Nob3AvYXV0aG9yL2RodG1sL3JlZmVyZW5jZS9tZXRob2RzL25hbWVkaXRlbS5h
c3AKLSAgICAvLyBUaGlzIG1ldGhvZCBmaXJzdCBzZWFyY2hlcyBmb3IgYW4gb2JqZWN0IHdpdGgg
YSBtYXRjaGluZyBpZAotICAgIC8vIGF0dHJpYnV0ZS4gSWYgYSBtYXRjaCBpcyBub3QgZm91bmQs
IHRoZSBtZXRob2QgdGhlbiBzZWFyY2hlcyBmb3IgYW4KLSAgICAvLyBvYmplY3Qgd2l0aCBhIG1h
dGNoaW5nIG5hbWUgYXR0cmlidXRlLCBidXQgb25seSBvbiB0aG9zZSBlbGVtZW50cwotICAgIC8v
IHRoYXQgYXJlIGFsbG93ZWQgYSBuYW1lIGF0dHJpYnV0ZS4KLQotICAgIGlmIChuYW1lLmlzRW1w
dHkoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBDb250YWluZXJOb2RlJiByb290
ID0gcm9vdE5vZGUoKTsKLSAgICBpZiAoIXVzZXNDdXN0b21Gb3J3YXJkT25seVRyYXZlcnNhbCgp
ICYmIHJvb3QuaXNJblRyZWVTY29wZSgpKSB7Ci0gICAgICAgIEVsZW1lbnQqIGNhbmRpZGF0ZSA9
IG51bGxwdHI7Ci0KLSAgICAgICAgVHJlZVNjb3BlJiB0cmVlU2NvcGUgPSByb290LnRyZWVTY29w
ZSgpOwotICAgICAgICBpZiAodHJlZVNjb3BlLmhhc0VsZW1lbnRXaXRoSWQoKm5hbWUuaW1wbCgp
KSkgewotICAgICAgICAgICAgaWYgKCF0cmVlU2NvcGUuY29udGFpbnNNdWx0aXBsZUVsZW1lbnRz
V2l0aElkKG5hbWUpKQotICAgICAgICAgICAgICAgIGNhbmRpZGF0ZSA9IHRyZWVTY29wZS5nZXRF
bGVtZW50QnlJZChuYW1lKTsKLSAgICAgICAgfSBlbHNlIGlmICh0cmVlU2NvcGUuaGFzRWxlbWVu
dFdpdGhOYW1lKCpuYW1lLmltcGwoKSkpIHsKLSAgICAgICAgICAgIGlmICghdHJlZVNjb3BlLmNv
bnRhaW5zTXVsdGlwbGVFbGVtZW50c1dpdGhOYW1lKG5hbWUpKSB7Ci0gICAgICAgICAgICAgICAg
Y2FuZGlkYXRlID0gdHJlZVNjb3BlLmdldEVsZW1lbnRCeU5hbWUobmFtZSk7Ci0gICAgICAgICAg
ICAgICAgaWYgKGNhbmRpZGF0ZSAmJiB0eXBlKCkgPT0gRG9jQWxsICYmICFuYW1lU2hvdWxkQmVW
aXNpYmxlSW5Eb2N1bWVudEFsbCgqY2FuZGlkYXRlKSkKLSAgICAgICAgICAgICAgICAgICAgY2Fu
ZGlkYXRlID0gbnVsbHB0cjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlCi0gICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgICAgICBpZiAoY2FuZGlkYXRlICYmIGlzTWF0Y2hp
bmdFbGVtZW50KCp0aGlzLCAqY2FuZGlkYXRlKSkgewotICAgICAgICAgICAgaWYgKG1fc2hvdWxk
T25seUluY2x1ZGVEaXJlY3RDaGlsZHJlbiA/IGNhbmRpZGF0ZS0+cGFyZW50Tm9kZSgpID09ICZy
b290IDogY2FuZGlkYXRlLT5pc0Rlc2NlbmRhbnRPZigmcm9vdCkpCi0gICAgICAgICAgICAgICAg
cmV0dXJuIGNhbmRpZGF0ZTsKLSAgICAgICAgfQotICAgIH0KLQogICAgIC8vIFRoZSBwYXRob2xv
Z2ljYWwgY2FzZS4gV2UgbmVlZCB0byB3YWxrIHRoZSBlbnRpcmUgc3VidHJlZS4KICAgICB1cGRh
dGVOYW1lZEVsZW1lbnRDYWNoZSgpOwogICAgIEFTU0VSVChtX25hbWVkRWxlbWVudENhY2hlKTsK
QEAgLTQ1Niw5ICsxNTcsOSBAQCB2b2lkIEhUTUxDb2xsZWN0aW9uOjp1cGRhdGVOYW1lZEVsZW1l
bnRDYWNoZSgpIGNvbnN0CiAKICAgICBhdXRvIGNhY2hlID0gc3RkOjptYWtlX3VuaXF1ZTxDb2xs
ZWN0aW9uTmFtZWRFbGVtZW50Q2FjaGU+KCk7CiAKLSAgICB1bnNpZ25lZCBzaXplID0gbV9pbmRl
eENhY2hlLm5vZGVDb3VudCgqdGhpcyk7CisgICAgdW5zaWduZWQgc2l6ZSA9IGxlbmd0aCgpOwog
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKLSAgICAgICAgRWxlbWVu
dCYgZWxlbWVudCA9ICptX2luZGV4Q2FjaGUubm9kZUF0KCp0aGlzLCBpKTsKKyAgICAgICAgRWxl
bWVudCYgZWxlbWVudCA9ICppdGVtKGkpOwogICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGlk
ID0gZWxlbWVudC5nZXRJZEF0dHJpYnV0ZSgpOwogICAgICAgICBpZiAoIWlkLmlzRW1wdHkoKSkK
ICAgICAgICAgICAgIGNhY2hlLT5hcHBlbmRUb0lkQ2FjaGUoaWQsIGVsZW1lbnQpOwpAQCAtNTEz
LDEwICsyMTQsNCBAQCBQYXNzUmVmUHRyPE5vZGVMaXN0PiBIVE1MQ29sbGVjdGlvbjo6dGFncyhj
b25zdCBTdHJpbmcmIG5hbWUpCiAgICAgcmV0dXJuIG93bmVyTm9kZSgpLmdldEVsZW1lbnRzQnlU
YWdOYW1lKG5hbWUpOwogfQogCi1FbGVtZW50KiBIVE1MQ29sbGVjdGlvbjo6Y3VzdG9tRWxlbWVu
dEFmdGVyKEVsZW1lbnQqKSBjb25zdAotewotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAg
IHJldHVybiBudWxscHRyOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxDb2xsZWN0aW9uLmgKaW5kZXggNDcxNGU5MDhkZGI1ZDliODg5YzNiNmNlNjU3YTE0
MGQ3YTNjNTllMi4uZTZkOGNlNjI0N2U1M2E3MDA3N2RiNjRiNjY4MDI1NWIyMWE2MzVmMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uaApAQCAtNjAsNTcgKzYwLDM4IEBAIHByaXZh
dGU6CiAKIGNsYXNzIEhUTUxDb2xsZWN0aW9uIDogcHVibGljIFNjcmlwdFdyYXBwYWJsZSwgcHVi
bGljIFJlZkNvdW50ZWQ8SFRNTENvbGxlY3Rpb24+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVm
PEhUTUxDb2xsZWN0aW9uPiBjcmVhdGUoQ29udGFpbmVyTm9kZSYgYmFzZSwgQ29sbGVjdGlvblR5
cGUpOwogICAgIHZpcnR1YWwgfkhUTUxDb2xsZWN0aW9uKCk7CiAKICAgICAvLyBET00gQVBJCi0g
ICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3Q7Ci0gICAgRWxlbWVudCogaXRlbSh1bnNpZ25lZCBv
ZmZzZXQpIGNvbnN0OworICAgIHZpcnR1YWwgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgRWxlbWVudCogaXRlbSh1bnNpZ25lZCBvZmZzZXQpIGNvbnN0ID0gMDsKICAg
ICB2aXJ0dWFsIEVsZW1lbnQqIG5hbWVkSXRlbShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpIGNv
bnN0OwogICAgIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IHRhZ3MoY29uc3QgU3RyaW5nJik7CiAKICAg
ICAvLyBOb24tRE9NIEFQSQogICAgIGJvb2wgaGFzTmFtZWRJdGVtKGNvbnN0IEF0b21pY1N0cmlu
ZyYgbmFtZSkgY29uc3Q7CiAgICAgVmVjdG9yPFJlZjxFbGVtZW50Pj4gbmFtZWRJdGVtcyhjb25z
dCBBdG9taWNTdHJpbmcmIG5hbWUpIGNvbnN0OwotICAgIHNpemVfdCBtZW1vcnlDb3N0KCkgY29u
c3Q7CisgICAgdmlydHVhbCBzaXplX3QgbWVtb3J5Q29zdCgpIGNvbnN0OwogCiAgICAgYm9vbCBp
c1Jvb3RlZEF0RG9jdW1lbnQoKSBjb25zdDsKICAgICBOb2RlTGlzdEludmFsaWRhdGlvblR5cGUg
aW52YWxpZGF0aW9uVHlwZSgpIGNvbnN0OwogICAgIENvbGxlY3Rpb25UeXBlIHR5cGUoKSBjb25z
dDsKICAgICBDb250YWluZXJOb2RlJiBvd25lck5vZGUoKSBjb25zdDsKLSAgICB2b2lkIGludmFs
aWRhdGVDYWNoZShjb25zdCBRdWFsaWZpZWROYW1lKiBhdHRyaWJ1dGVOYW1lKSBjb25zdDsKLSAg
ICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZUNhY2hlKERvY3VtZW50JikgY29uc3Q7Ci0KLSAgICAv
LyBGb3IgQ29sbGVjdGlvbkluZGV4Q2FjaGU7IGRvIG5vdCB1c2UgZWxzZXdoZXJlLgotICAgIEVs
ZW1lbnQqIGNvbGxlY3Rpb25CZWdpbigpIGNvbnN0OwotICAgIEVsZW1lbnQqIGNvbGxlY3Rpb25M
YXN0KCkgY29uc3Q7Ci0gICAgRWxlbWVudCogY29sbGVjdGlvbkVuZCgpIGNvbnN0OwotICAgIHZv
aWQgY29sbGVjdGlvblRyYXZlcnNlRm9yd2FyZChFbGVtZW50KiYsIHVuc2lnbmVkIGNvdW50LCB1
bnNpZ25lZCYgdHJhdmVyc2VkQ291bnQpIGNvbnN0OwotICAgIHZvaWQgY29sbGVjdGlvblRyYXZl
cnNlQmFja3dhcmQoRWxlbWVudComLCB1bnNpZ25lZCBjb3VudCkgY29uc3Q7Ci0gICAgYm9vbCBj
b2xsZWN0aW9uQ2FuVHJhdmVyc2VCYWNrd2FyZCgpIGNvbnN0OwotICAgIHZvaWQgd2lsbFZhbGlk
YXRlSW5kZXhDYWNoZSgpIGNvbnN0OworICAgIHZvaWQgaW52YWxpZGF0ZUNhY2hlKGNvbnN0IFF1
YWxpZmllZE5hbWUqIGF0dHJpYnV0ZU5hbWUpOworICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRl
Q2FjaGUoRG9jdW1lbnQmKTsKIAogICAgIGJvb2wgaGFzTmFtZWRFbGVtZW50Q2FjaGUoKSBjb25z
dDsKIAogcHJvdGVjdGVkOgotICAgIGVudW0gRWxlbWVudFRyYXZlcnNhbFR5cGUgeyBOb3JtYWxU
cmF2ZXJzYWwsIEN1c3RvbUZvcndhcmRPbmx5VHJhdmVyc2FsIH07Ci0gICAgSFRNTENvbGxlY3Rp
b24oQ29udGFpbmVyTm9kZSYgYmFzZSwgQ29sbGVjdGlvblR5cGUsIEVsZW1lbnRUcmF2ZXJzYWxU
eXBlID0gTm9ybWFsVHJhdmVyc2FsKTsKKyAgICBIVE1MQ29sbGVjdGlvbihDb250YWluZXJOb2Rl
JiBiYXNlLCBDb2xsZWN0aW9uVHlwZSk7CiAKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlTmFtZWRF
bGVtZW50Q2FjaGUoKSBjb25zdDsKIAogICAgIHZvaWQgc2V0TmFtZWRJdGVtQ2FjaGUoc3RkOjp1
bmlxdWVfcHRyPENvbGxlY3Rpb25OYW1lZEVsZW1lbnRDYWNoZT4pIGNvbnN0OwogICAgIGNvbnN0
IENvbGxlY3Rpb25OYW1lZEVsZW1lbnRDYWNoZSYgbmFtZWRJdGVtQ2FjaGVzKCkgY29uc3Q7CiAK
LXByaXZhdGU6CiAgICAgRG9jdW1lbnQmIGRvY3VtZW50KCkgY29uc3Q7CiAgICAgQ29udGFpbmVy
Tm9kZSYgcm9vdE5vZGUoKSBjb25zdDsKLSAgICBib29sIHVzZXNDdXN0b21Gb3J3YXJkT25seVRy
YXZlcnNhbCgpIGNvbnN0OwotCi0gICAgRWxlbWVudCogaXRlcmF0ZUZvclByZXZpb3VzRWxlbWVu
dChFbGVtZW50KikgY29uc3Q7Ci0gICAgRWxlbWVudCogZmlyc3RFbGVtZW50KENvbnRhaW5lck5v
ZGUmIHJvb3QpIGNvbnN0OwotICAgIEVsZW1lbnQqIHRyYXZlcnNlRm9yd2FyZChFbGVtZW50Jiwg
dW5zaWduZWQgY291bnQsIHVuc2lnbmVkJiB0cmF2ZXJzZWRDb3VudCwgQ29udGFpbmVyTm9kZSYg
cm9vdCkgY29uc3Q7Ci0KLSAgICB2aXJ0dWFsIEVsZW1lbnQqIGN1c3RvbUVsZW1lbnRBZnRlcihF
bGVtZW50KikgY29uc3Q7CiAKICAgICB2b2lkIGludmFsaWRhdGVOYW1lZEVsZW1lbnRDYWNoZShE
b2N1bWVudCYpIGNvbnN0OwogCkBAIC0xMTksMTYgKzEwMCwyMSBAQCBwcml2YXRlOgogCiAgICAg
UmVmPENvbnRhaW5lck5vZGU+IG1fb3duZXJOb2RlOwogCi0gICAgbXV0YWJsZSBDb2xsZWN0aW9u
SW5kZXhDYWNoZTxIVE1MQ29sbGVjdGlvbiwgRWxlbWVudCo+IG1faW5kZXhDYWNoZTsKICAgICBt
dXRhYmxlIHN0ZDo6dW5pcXVlX3B0cjxDb2xsZWN0aW9uTmFtZWRFbGVtZW50Q2FjaGU+IG1fbmFt
ZWRFbGVtZW50Q2FjaGU7CiAKICAgICBjb25zdCB1bnNpZ25lZCBtX2NvbGxlY3Rpb25UeXBlIDog
NTsKICAgICBjb25zdCB1bnNpZ25lZCBtX2ludmFsaWRhdGlvblR5cGUgOiA0OwogICAgIGNvbnN0
IHVuc2lnbmVkIG1fcm9vdFR5cGUgOiAxOwotICAgIGNvbnN0IHVuc2lnbmVkIG1fc2hvdWxkT25s
eUluY2x1ZGVEaXJlY3RDaGlsZHJlbiA6IDE7Ci0gICAgY29uc3QgdW5zaWduZWQgbV91c2VzQ3Vz
dG9tRm9yd2FyZE9ubHlUcmF2ZXJzYWwgOiAxOwogfTsKIAoraW5saW5lIENvbnRhaW5lck5vZGUm
IEhUTUxDb2xsZWN0aW9uOjpyb290Tm9kZSgpIGNvbnN0Cit7CisgICAgaWYgKGlzUm9vdGVkQXRE
b2N1bWVudCgpICYmIG93bmVyTm9kZSgpLmluRG9jdW1lbnQoKSkKKyAgICAgICAgcmV0dXJuIG93
bmVyTm9kZSgpLmRvY3VtZW50KCk7CisKKyAgICByZXR1cm4gb3duZXJOb2RlKCk7Cit9CisKIGlu
bGluZSBjb25zdCBWZWN0b3I8RWxlbWVudCo+KiBDb2xsZWN0aW9uTmFtZWRFbGVtZW50Q2FjaGU6
OmZpbmRFbGVtZW50c1dpdGhJZChjb25zdCBBdG9taWNTdHJpbmcmIGlkKSBjb25zdAogewogICAg
IHJldHVybiBmaW5kKG1faWRNYXAsIGlkKTsKQEAgLTE3Nyw3ICsxNjMsNyBAQCBpbmxpbmUgdm9p
ZCBDb2xsZWN0aW9uTmFtZWRFbGVtZW50Q2FjaGU6OmFwcGVuZChTdHJpbmdUb0VsZW1lbnRzTWFw
JiBtYXAsIGNvbnN0CiAKIGlubGluZSBzaXplX3QgSFRNTENvbGxlY3Rpb246Om1lbW9yeUNvc3Qo
KSBjb25zdAogewotICAgIHJldHVybiBtX2luZGV4Q2FjaGUubWVtb3J5Q29zdCgpICsgKG1fbmFt
ZWRFbGVtZW50Q2FjaGUgPyBtX25hbWVkRWxlbWVudENhY2hlLT5tZW1vcnlDb3N0KCkgOiAwKTsK
KyAgICByZXR1cm4gbV9uYW1lZEVsZW1lbnRDYWNoZSA/IG1fbmFtZWRFbGVtZW50Q2FjaGUtPm1l
bW9yeUNvc3QoKSA6IDA7CiB9CiAKIGlubGluZSBib29sIEhUTUxDb2xsZWN0aW9uOjppc1Jvb3Rl
ZEF0RG9jdW1lbnQoKSBjb25zdApAQCAtMjA1LDcgKzE5MSw3IEBAIGlubGluZSBEb2N1bWVudCYg
SFRNTENvbGxlY3Rpb246OmRvY3VtZW50KCkgY29uc3QKICAgICByZXR1cm4gbV9vd25lck5vZGUt
PmRvY3VtZW50KCk7CiB9CiAKLWlubGluZSB2b2lkIEhUTUxDb2xsZWN0aW9uOjppbnZhbGlkYXRl
Q2FjaGUoY29uc3QgUXVhbGlmaWVkTmFtZSogYXR0cmlidXRlTmFtZSkgY29uc3QKK2lubGluZSB2
b2lkIEhUTUxDb2xsZWN0aW9uOjppbnZhbGlkYXRlQ2FjaGUoY29uc3QgUXVhbGlmaWVkTmFtZSog
YXR0cmlidXRlTmFtZSkKIHsKICAgICBpZiAoIWF0dHJpYnV0ZU5hbWUgfHwgc2hvdWxkSW52YWxp
ZGF0ZVR5cGVPbkF0dHJpYnV0ZUNoYW5nZShpbnZhbGlkYXRpb25UeXBlKCksICphdHRyaWJ1dGVO
YW1lKSkKICAgICAgICAgaW52YWxpZGF0ZUNhY2hlKGRvY3VtZW50KCkpOwpAQCAtMjEzLDIxICsx
OTksNiBAQCBpbmxpbmUgdm9pZCBIVE1MQ29sbGVjdGlvbjo6aW52YWxpZGF0ZUNhY2hlKGNvbnN0
IFF1YWxpZmllZE5hbWUqIGF0dHJpYnV0ZU5hbWUpCiAgICAgICAgIGludmFsaWRhdGVOYW1lZEVs
ZW1lbnRDYWNoZShkb2N1bWVudCgpKTsKIH0KIAotaW5saW5lIEVsZW1lbnQqIEhUTUxDb2xsZWN0
aW9uOjpjb2xsZWN0aW9uRW5kKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLQot
aW5saW5lIGJvb2wgSFRNTENvbGxlY3Rpb246OmNvbGxlY3Rpb25DYW5UcmF2ZXJzZUJhY2t3YXJk
KCkgY29uc3QKLXsKLSAgICByZXR1cm4gIW1fdXNlc0N1c3RvbUZvcndhcmRPbmx5VHJhdmVyc2Fs
OwotfQotCi1pbmxpbmUgdm9pZCBIVE1MQ29sbGVjdGlvbjo6d2lsbFZhbGlkYXRlSW5kZXhDYWNo
ZSgpIGNvbnN0Ci17Ci0gICAgZG9jdW1lbnQoKS5yZWdpc3RlckNvbGxlY3Rpb24oY29uc3RfY2Fz
dDxIVE1MQ29sbGVjdGlvbiY+KCp0aGlzKSk7Ci19Ci0KIGlubGluZSBib29sIEhUTUxDb2xsZWN0
aW9uOjpoYXNOYW1lZEVsZW1lbnRDYWNoZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuICEhbV9uYW1l
ZEVsZW1lbnRDYWNoZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZpZWxk
U2V0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGaWVsZFNldEVsZW1lbnQu
Y3BwCmluZGV4IGFjMzMyZTg3MDIyNjE4YzJlNDkzYjY5NzdiMDgzZDU1YWI4NmFkN2QuLjQwMGEw
YmFlMGVkOTRmZTA1M2ZkNjM1NzFiNDBhYWM5OGZiYWM4ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmNwcApAQCAtMjYsMTAgKzI2LDExIEBACiAjaW5jbHVk
ZSAiSFRNTEZpZWxkU2V0RWxlbWVudC5oIgogCiAjaW5jbHVkZSAiRWxlbWVudEl0ZXJhdG9yLmgi
Ci0jaW5jbHVkZSAiSFRNTENvbGxlY3Rpb24uaCIKKyNpbmNsdWRlICJIVE1MRm9ybUNvbnRyb2xz
Q29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxMZWdlbmRFbGVtZW50LmgiCiAjaW5jbHVkZSAi
SFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSFRNTE9iamVjdEVsZW1lbnQuaCIKKyNpbmNsdWRlICJO
b2RlUmFyZURhdGEuaCIKICNpbmNsdWRlICJSZW5kZXJGaWVsZHNldC5oIgogI2luY2x1ZGUgPHd0
Zi9TdGRMaWJFeHRyYXMuaD4KIApAQCAtMTYxLDcgKzE2Miw3IEBAIEhUTUxMZWdlbmRFbGVtZW50
KiBIVE1MRmllbGRTZXRFbGVtZW50OjpsZWdlbmQoKSBjb25zdAogCiBSZWY8SFRNTENvbGxlY3Rp
b24+IEhUTUxGaWVsZFNldEVsZW1lbnQ6OmVsZW1lbnRzKCkKIHsKLSAgICByZXR1cm4gZW5zdXJl
Q2FjaGVkSFRNTENvbGxlY3Rpb24oRm9ybUNvbnRyb2xzKTsKKyAgICByZXR1cm4gZW5zdXJlUmFy
ZURhdGEoKS5lbnN1cmVOb2RlTGlzdHMoKS5hZGRDYWNoZWRDb2xsZWN0aW9uPEhUTUxGb3JtQ29u
dHJvbHNDb2xsZWN0aW9uPigqdGhpcywgRm9ybUNvbnRyb2xzKTsKIH0KIAogdm9pZCBIVE1MRmll
bGRTZXRFbGVtZW50OjpyZWZyZXNoRWxlbWVudHNJZk5lZWRlZCgpIGNvbnN0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uY3BwCmluZGV4IDBk
ZWVjYzI0ZWNkOWI1YzM3YjBhYzA5YzMxNzUyNzM0MmI3MTFkODQuLjMwMjUwYmIyNjRiNDk4Zjg4
ODgyMWUwNzg5MThmZWQ3NmQ4MzNlOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uY3BwCkBAIC0zNiw3ICszNiw3IEBAIHVzaW5nIG5h
bWVzcGFjZSBIVE1MTmFtZXM7CiAvLyBjYWxjdWxhdGlvbiBldmVyeSB0aW1lIGlmIGFueXRoaW5n
IGhhcyBjaGFuZ2VkLgogCiBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6SFRNTEZvcm1Db250
cm9sc0NvbGxlY3Rpb24oQ29udGFpbmVyTm9kZSYgb3duZXJOb2RlKQotICAgIDogSFRNTENvbGxl
Y3Rpb24ob3duZXJOb2RlLCBGb3JtQ29udHJvbHMsIEN1c3RvbUZvcndhcmRPbmx5VHJhdmVyc2Fs
KQorICAgIDogQ2FjaGVkSFRNTENvbGxlY3Rpb248SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24s
IENvbGxlY3Rpb25UeXBlVHJhaXRzPEZvcm1Db250cm9scz46OnRyYXZlcnNhbFR5cGU+KG93bmVy
Tm9kZSwgRm9ybUNvbnRyb2xzKQogICAgICwgbV9jYWNoZWRFbGVtZW50KG51bGxwdHIpCiAgICAg
LCBtX2NhY2hlZEVsZW1lbnRPZmZzZXRJbkFycmF5KDApCiB7CkBAIC0xNzcsOSArMTc3LDkgQEAg
dm9pZCBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6dXBkYXRlTmFtZWRFbGVtZW50Q2FjaGUo
KSBjb25zdAogICAgIHNldE5hbWVkSXRlbUNhY2hlKFdURjo6bW92ZShjYWNoZSkpOwogfQogCi12
b2lkIEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uOjppbnZhbGlkYXRlQ2FjaGUoRG9jdW1lbnQm
IGRvY3VtZW50KSBjb25zdAordm9pZCBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6aW52YWxp
ZGF0ZUNhY2hlKERvY3VtZW50JiBkb2N1bWVudCkKIHsKLSAgICBIVE1MQ29sbGVjdGlvbjo6aW52
YWxpZGF0ZUNhY2hlKGRvY3VtZW50KTsKKyAgICBDYWNoZWRIVE1MQ29sbGVjdGlvbjxIVE1MRm9y
bUNvbnRyb2xzQ29sbGVjdGlvbiwgQ29sbGVjdGlvblR5cGVUcmFpdHM8Rm9ybUNvbnRyb2xzPjo6
dHJhdmVyc2FsVHlwZT46OmludmFsaWRhdGVDYWNoZShkb2N1bWVudCk7CiAgICAgbV9jYWNoZWRF
bGVtZW50ID0gbnVsbHB0cjsKICAgICBtX2NhY2hlZEVsZW1lbnRPZmZzZXRJbkFycmF5ID0gMDsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxl
Y3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24u
aAppbmRleCBiMTY4YWQ5YzA2MDU0NDhhOTk0OWQ0YThlMTVlNDQ2NWQ3ODViYjczLi5jMGQ1MjBm
NmFmMjFkYWU0YmQyMWRmYjEyMjAwNzg3MThkNTQ0MmFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5oCkBAIC0yMyw3ICsyMyw3IEBACiAj
aWZuZGVmIEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uX2gKICNkZWZpbmUgSFRNTEZvcm1Db250
cm9sc0NvbGxlY3Rpb25faAogCi0jaW5jbHVkZSAiSFRNTENvbGxlY3Rpb24uaCIKKyNpbmNsdWRl
ICJDYWNoZWRIVE1MQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxFbGVtZW50LmgiCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM0LDIxICszNCwyMyBAQCBjbGFzcyBIVE1MSW1hZ2VFbGVt
ZW50OwogLy8gVGhpcyBjbGFzcyBpcyBqdXN0IGEgYmlnIGhhY2sgdG8gZmluZCBmb3JtIGVsZW1l
bnRzIGV2ZW4gaW4gbWFsZm9ybWVkIEhUTUwgZWxlbWVudHMuCiAvLyBUaGUgZmFtb3VzIDx0YWJs
ZT48dHI+PGZvcm0+PHRkPiBwcm9ibGVtLgogCi1jbGFzcyBIVE1MRm9ybUNvbnRyb2xzQ29sbGVj
dGlvbiBmaW5hbCA6IHB1YmxpYyBIVE1MQ29sbGVjdGlvbiB7CitjbGFzcyBIVE1MRm9ybUNvbnRy
b2xzQ29sbGVjdGlvbiBmaW5hbCA6IHB1YmxpYyBDYWNoZWRIVE1MQ29sbGVjdGlvbjxIVE1MRm9y
bUNvbnRyb2xzQ29sbGVjdGlvbiwgQ29sbGVjdGlvblR5cGVUcmFpdHM8Rm9ybUNvbnRyb2xzPjo6
dHJhdmVyc2FsVHlwZT4gewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8SFRNTEZvcm1Db250cm9s
c0NvbGxlY3Rpb24+IGNyZWF0ZShDb250YWluZXJOb2RlJiwgQ29sbGVjdGlvblR5cGUpOwogICAg
IHZpcnR1YWwgfkhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uKCk7CiAKKyAgICAvLyBGb3IgQ2Fj
aGVkSFRNTENvbGxlY3Rpb24uCisgICAgRWxlbWVudCogY3VzdG9tRWxlbWVudEFmdGVyKEVsZW1l
bnQqKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBleHBsaWNpdCBIVE1MRm9ybUNvbnRyb2xzQ29s
bGVjdGlvbihDb250YWluZXJOb2RlJik7CiAKICAgICB2aXJ0dWFsIEhUTUxFbGVtZW50KiBuYW1l
ZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIHZvaWQgaW52YWxpZGF0ZUNhY2hlKERvY3VtZW50JikgY29uc3Qgb3ZlcnJpZGU7CisgICAg
dmlydHVhbCB2b2lkIGludmFsaWRhdGVDYWNoZShEb2N1bWVudCYpIG92ZXJyaWRlOwogICAgIHZp
cnR1YWwgdm9pZCB1cGRhdGVOYW1lZEVsZW1lbnRDYWNoZSgpIGNvbnN0IG92ZXJyaWRlOwogCiAg
ICAgY29uc3QgVmVjdG9yPEZvcm1Bc3NvY2lhdGVkRWxlbWVudCo+JiBmb3JtQ29udHJvbEVsZW1l
bnRzKCkgY29uc3Q7CiAgICAgY29uc3QgVmVjdG9yPEhUTUxJbWFnZUVsZW1lbnQqPiYgZm9ybUlt
YWdlRWxlbWVudHMoKSBjb25zdDsKLSAgICB2aXJ0dWFsIEVsZW1lbnQqIGN1c3RvbUVsZW1lbnRB
ZnRlcihFbGVtZW50KikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBtdXRhYmxlIEVsZW1lbnQqIG1f
Y2FjaGVkRWxlbWVudDsKICAgICBtdXRhYmxlIHVuc2lnbmVkIG1fY2FjaGVkRWxlbWVudE9mZnNl
dEluQXJyYXk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAKaW5kZXggNWZm
YTNhOGE3MTk5Nzg3ZjdkZjdkZjFmODA5YTY4YWU2NDNkMDFlZC4uMDU0Mjc5ZmYxZWY1YThjM2Ix
ODBhNGI4MGQyMGZiYzllYmZhZTE4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRm9ybUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVt
ZW50LmNwcApAQCAtMzcsMTEgKzM3LDEyIEBACiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRl
ICJGcmFtZUxvYWRlci5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50LmgiCi0jaW5jbHVk
ZSAiSFRNTENvbGxlY3Rpb24uaCIKKyNpbmNsdWRlICJIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlv
bi5oIgogI2luY2x1ZGUgIkhUTUxJbWFnZUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MSW5wdXRF
bGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSFRNTFRhYmxlRWxl
bWVudC5oIgorI2luY2x1ZGUgIk5vZGVSYXJlRGF0YS5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNp
bmNsdWRlICJSZW5kZXJUZXh0Q29udHJvbC5oIgogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIu
aCIKQEAgLTYzOCw3ICs2MzksNyBAQCB2b2lkIEhUTUxGb3JtRWxlbWVudDo6cmVtb3ZlSW1nRWxl
bWVudChIVE1MSW1hZ2VFbGVtZW50KiBlKQogCiBSZWY8SFRNTENvbGxlY3Rpb24+IEhUTUxGb3Jt
RWxlbWVudDo6ZWxlbWVudHMoKQogewotICAgIHJldHVybiBlbnN1cmVDYWNoZWRIVE1MQ29sbGVj
dGlvbihGb3JtQ29udHJvbHMpOworICAgIHJldHVybiBlbnN1cmVSYXJlRGF0YSgpLmVuc3VyZU5v
ZGVMaXN0cygpLmFkZENhY2hlZENvbGxlY3Rpb248SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24+
KCp0aGlzLCBGb3JtQ29udHJvbHMpOwogfQogCiBTdHJpbmcgSFRNTEZvcm1FbGVtZW50OjpuYW1l
KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1hcEVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWFwRWxlbWVudC5jcHAKaW5kZXggYTNjOWMz
MzkyM2E3MGZjOGViOTZkM2UzMGRhMGM0M2JlN2FhMDIwYi4uM2VlNjFiYWEwMDFlMjM0YTRiMzNm
N2QxNThiYzY4Njk5MmM0NmNmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWFwRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWFwRWxlbWVudC5j
cHAKQEAgLTI1LDExICsyNSwxMiBAQAogI2luY2x1ZGUgIkF0dHJpYnV0ZS5oIgogI2luY2x1ZGUg
IkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRWxlbWVudEl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiR2Vu
ZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiSFRNTEFyZWFFbGVtZW50Lmgi
Ci0jaW5jbHVkZSAiSFRNTENvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJIVE1MSW1hZ2VFbGVtZW50
LmgiCiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgogI2luY2x1ZGUgIkludFNpemUuaCIKKyNp
bmNsdWRlICJOb2RlUmFyZURhdGEuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xMTIs
NyArMTEzLDcgQEAgdm9pZCBIVE1MTWFwRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW4KIAogUmVmPEhUTUxDb2xsZWN0aW9u
PiBIVE1MTWFwRWxlbWVudDo6YXJlYXMoKQogewotICAgIHJldHVybiBlbnN1cmVDYWNoZWRIVE1M
Q29sbGVjdGlvbihNYXBBcmVhcyk7CisgICAgcmV0dXJuIGVuc3VyZVJhcmVEYXRhKCkuZW5zdXJl
Tm9kZUxpc3RzKCkuYWRkQ2FjaGVkQ29sbGVjdGlvbjxHZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rp
b248Q29sbGVjdGlvblR5cGVUcmFpdHM8TWFwQXJlYXM+Ojp0cmF2ZXJzYWxUeXBlPj4oKnRoaXMs
IE1hcEFyZWFzKTsKIH0KIAogTm9kZTo6SW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBIVE1M
TWFwRWxlbWVudDo6aW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUmIGluc2VydGlvblBvaW50KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTmFtZUNvbGxlY3Rpb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTmFtZUNvbGxlY3Rpb24uY3BwCmluZGV4IDM3ZjU4YzE0
ZTFjZGM1ZDYxYzIzNTUyYWZlNjE2NjgwZTlmZjk4NTMuLjMyOTc0OWJiYjBkMzBmOTBjNzQ1ODc0
ZDAxNWEzNzQ1NTIzMzM1ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE5h
bWVDb2xsZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxOYW1lQ29sbGVj
dGlvbi5jcHAKQEAgLTM2LDE5ICszNiw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcg
bmFtZXNwYWNlIEhUTUxOYW1lczsKIAotSFRNTE5hbWVDb2xsZWN0aW9uOjpIVE1MTmFtZUNvbGxl
Y3Rpb24oRG9jdW1lbnQmIGRvY3VtZW50LCBDb2xsZWN0aW9uVHlwZSB0eXBlLCBjb25zdCBBdG9t
aWNTdHJpbmcmIG5hbWUpCi0gICAgOiBIVE1MQ29sbGVjdGlvbihkb2N1bWVudCwgdHlwZSkKLSAg
ICAsIG1fbmFtZShuYW1lKQotewotfQotCi1IVE1MTmFtZUNvbGxlY3Rpb246On5IVE1MTmFtZUNv
bGxlY3Rpb24oKQotewotICAgIEFTU0VSVCh0eXBlKCkgPT0gV2luZG93TmFtZWRJdGVtcyB8fCB0
eXBlKCkgPT0gRG9jdW1lbnROYW1lZEl0ZW1zKTsKLQotICAgIGRvY3VtZW50KCkubm9kZUxpc3Rz
KCktPnJlbW92ZUNhY2hlZENvbGxlY3Rpb24odGhpcywgbV9uYW1lKTsKLX0KLQogYm9vbCBXaW5k
b3dOYW1lQ29sbGVjdGlvbjo6ZWxlbWVudE1hdGNoZXNJZk5hbWVBdHRyaWJ1dGVNYXRjaChjb25z
dCBFbGVtZW50JiBlbGVtZW50KQogewogICAgIHJldHVybiBpczxIVE1MSW1hZ2VFbGVtZW50Pihl
bGVtZW50KSB8fCBpczxIVE1MRm9ybUVsZW1lbnQ+KGVsZW1lbnQpIHx8IGlzPEhUTUxBcHBsZXRF
bGVtZW50PihlbGVtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTmFt
ZUNvbGxlY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE5hbWVDb2xsZWN0aW9uLmgK
aW5kZXggMzIwNzQzZDVhYTljZmJiODIxODQ1NThkODIwMTc4OThjMDhmNzczNy4uNjA0NjZjODVi
YmQ5MzJmMTMzOWQyODc4MjY5ZDgzZjQ0MDI0ZmI4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTmFtZUNvbGxlY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxOYW1lQ29sbGVjdGlvbi5oCkBAIC0yMywxOCArMjMsMjAgQEAKICNpZm5kZWYgSFRNTE5hbWVD
b2xsZWN0aW9uX2gKICNkZWZpbmUgSFRNTE5hbWVDb2xsZWN0aW9uX2gKIAotI2luY2x1ZGUgIkhU
TUxDb2xsZWN0aW9uLmgiCisjaW5jbHVkZSAiQ2FjaGVkSFRNTENvbGxlY3Rpb24uaCIKKyNpbmNs
dWRlICJOb2RlUmFyZURhdGEuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBEb2N1bWVudDsKIAotY2xhc3MgSFRNTE5h
bWVDb2xsZWN0aW9uIDogcHVibGljIEhUTUxDb2xsZWN0aW9uIHsKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBIVE1MQ29sbGVjdGlvbkNsYXNzLCBDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZSB0cmF2ZXJzYWxU
eXBlPgorY2xhc3MgSFRNTE5hbWVDb2xsZWN0aW9uIDogcHVibGljIENhY2hlZEhUTUxDb2xsZWN0
aW9uPEhUTUxDb2xsZWN0aW9uQ2xhc3MsIHRyYXZlcnNhbFR5cGU+IHsKIHB1YmxpYzoKICAgICB2
aXJ0dWFsIH5IVE1MTmFtZUNvbGxlY3Rpb24oKTsKIAotICAgIERvY3VtZW50JiBkb2N1bWVudCgp
IHsgcmV0dXJuIGRvd25jYXN0PERvY3VtZW50Pihvd25lck5vZGUoKSk7IH0KKyAgICBEb2N1bWVu
dCYgZG9jdW1lbnQoKSB7IHJldHVybiBkb3duY2FzdDxEb2N1bWVudD4odGhpcy0+b3duZXJOb2Rl
KCkpOyB9CiAKIHByb3RlY3RlZDoKICAgICBIVE1MTmFtZUNvbGxlY3Rpb24oRG9jdW1lbnQmLCBD
b2xsZWN0aW9uVHlwZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKTsKQEAgLTQyLDEzICs0NCwy
OSBAQCBwcm90ZWN0ZWQ6CiAgICAgQXRvbWljU3RyaW5nIG1fbmFtZTsKIH07CiAKLWNsYXNzIFdp
bmRvd05hbWVDb2xsZWN0aW9uIGZpbmFsIDogcHVibGljIEhUTUxOYW1lQ29sbGVjdGlvbiB7Cit0
ZW1wbGF0ZSA8dHlwZW5hbWUgSFRNTENvbGxlY3Rpb25DbGFzcywgQ29sbGVjdGlvblRyYXZlcnNh
bFR5cGUgdHJhdmVyc2FsVHlwZT4KK0hUTUxOYW1lQ29sbGVjdGlvbjxIVE1MQ29sbGVjdGlvbkNs
YXNzLCB0cmF2ZXJzYWxUeXBlPjo6SFRNTE5hbWVDb2xsZWN0aW9uKERvY3VtZW50JiBkb2N1bWVu
dCwgQ29sbGVjdGlvblR5cGUgdHlwZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKQorICAgIDog
Q2FjaGVkSFRNTENvbGxlY3Rpb248SFRNTENvbGxlY3Rpb25DbGFzcywgdHJhdmVyc2FsVHlwZT4o
ZG9jdW1lbnQsIHR5cGUpCisgICAgLCBtX25hbWUobmFtZSkKK3sKK30KKwordGVtcGxhdGUgPHR5
cGVuYW1lIEhUTUxDb2xsZWN0aW9uQ2xhc3MsIENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlIHRyYXZl
cnNhbFR5cGU+CitIVE1MTmFtZUNvbGxlY3Rpb248SFRNTENvbGxlY3Rpb25DbGFzcywgdHJhdmVy
c2FsVHlwZT46On5IVE1MTmFtZUNvbGxlY3Rpb24oKQoreworICAgIEFTU0VSVCh0aGlzLT50eXBl
KCkgPT0gV2luZG93TmFtZWRJdGVtcyB8fCB0aGlzLT50eXBlKCkgPT0gRG9jdW1lbnROYW1lZEl0
ZW1zKTsKKworICAgIGRvY3VtZW50KCkubm9kZUxpc3RzKCktPnJlbW92ZUNhY2hlZENvbGxlY3Rp
b24odGhpcywgbV9uYW1lKTsKK30KKworY2xhc3MgV2luZG93TmFtZUNvbGxlY3Rpb24gZmluYWwg
OiBwdWJsaWMgSFRNTE5hbWVDb2xsZWN0aW9uPFdpbmRvd05hbWVDb2xsZWN0aW9uLCBDb2xsZWN0
aW9uVHJhdmVyc2FsVHlwZTo6RGVzY2VuZGFudHM+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVm
PFdpbmRvd05hbWVDb2xsZWN0aW9uPiBjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBDb2xsZWN0
aW9uVHlwZSB0eXBlLCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpCiAgICAgewogICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBXaW5kb3dOYW1lQ29sbGVjdGlvbihkb2N1bWVudCwgdHlwZSwg
bmFtZSkpOwogICAgIH0KIAorICAgIC8vIEZvciBDYWNoZWRIVE1MQ29sbGVjdGlvbi4KICAgICBi
b29sIGVsZW1lbnRNYXRjaGVzKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpIGNvbnN0IHsgcmV0dXJu
IGVsZW1lbnRNYXRjaGVzKGVsZW1lbnQsIG1fbmFtZS5pbXBsKCkpOyB9CiAKICAgICBzdGF0aWMg
Ym9vbCBlbGVtZW50TWF0Y2hlc0lmSWRBdHRyaWJ1dGVNYXRjaChjb25zdCBFbGVtZW50JikgeyBy
ZXR1cm4gdHJ1ZTsgfQpAQCAtNTcsMTMgKzc1LDEzIEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAg
ICBXaW5kb3dOYW1lQ29sbGVjdGlvbihEb2N1bWVudCYgZG9jdW1lbnQsIENvbGxlY3Rpb25UeXBl
IHR5cGUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkKLSAgICAgICAgOiBIVE1MTmFtZUNvbGxl
Y3Rpb24oZG9jdW1lbnQsIHR5cGUsIG5hbWUpCisgICAgICAgIDogSFRNTE5hbWVDb2xsZWN0aW9u
PFdpbmRvd05hbWVDb2xsZWN0aW9uLCBDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6RGVzY2VuZGFu
dHM+KGRvY3VtZW50LCB0eXBlLCBuYW1lKQogICAgIHsKICAgICAgICAgQVNTRVJUKHR5cGUgPT0g
V2luZG93TmFtZWRJdGVtcyk7CiAgICAgfQogfTsKIAotY2xhc3MgRG9jdW1lbnROYW1lQ29sbGVj
dGlvbiBmaW5hbCA6IHB1YmxpYyBIVE1MTmFtZUNvbGxlY3Rpb24geworY2xhc3MgRG9jdW1lbnRO
YW1lQ29sbGVjdGlvbiBmaW5hbCA6IHB1YmxpYyBIVE1MTmFtZUNvbGxlY3Rpb248RG9jdW1lbnRO
YW1lQ29sbGVjdGlvbiwgQ29sbGVjdGlvblRyYXZlcnNhbFR5cGU6OkRlc2NlbmRhbnRzPiB7CiBw
dWJsaWM6CiAgICAgc3RhdGljIFJlZjxEb2N1bWVudE5hbWVDb2xsZWN0aW9uPiBjcmVhdGUoRG9j
dW1lbnQmIGRvY3VtZW50LCBDb2xsZWN0aW9uVHlwZSB0eXBlLCBjb25zdCBBdG9taWNTdHJpbmcm
IG5hbWUpCiAgICAgewpAQCAtNzIsMTMgKzkwLDE1IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBi
b29sIGVsZW1lbnRNYXRjaGVzSWZJZEF0dHJpYnV0ZU1hdGNoKGNvbnN0IEVsZW1lbnQmKTsKICAg
ICBzdGF0aWMgYm9vbCBlbGVtZW50TWF0Y2hlc0lmTmFtZUF0dHJpYnV0ZU1hdGNoKGNvbnN0IEVs
ZW1lbnQmKTsKKworICAgIC8vIEZvciBDYWNoZWRIVE1MQ29sbGVjdGlvbi4KICAgICBib29sIGVs
ZW1lbnRNYXRjaGVzKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpIGNvbnN0IHsgcmV0dXJuIGVsZW1l
bnRNYXRjaGVzKGVsZW1lbnQsIG1fbmFtZS5pbXBsKCkpOyB9CiAKICAgICBzdGF0aWMgYm9vbCBl
bGVtZW50TWF0Y2hlcyhjb25zdCBFbGVtZW50JiwgY29uc3QgQXRvbWljU3RyaW5nSW1wbCopOwog
CiBwcml2YXRlOgogICAgIERvY3VtZW50TmFtZUNvbGxlY3Rpb24oRG9jdW1lbnQmIGRvY3VtZW50
LCBDb2xsZWN0aW9uVHlwZSB0eXBlLCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpCi0gICAgICAg
IDogSFRNTE5hbWVDb2xsZWN0aW9uKGRvY3VtZW50LCB0eXBlLCBuYW1lKQorICAgICAgICA6IEhU
TUxOYW1lQ29sbGVjdGlvbjxEb2N1bWVudE5hbWVDb2xsZWN0aW9uLCBDb2xsZWN0aW9uVHJhdmVy
c2FsVHlwZTo6RGVzY2VuZGFudHM+KGRvY3VtZW50LCB0eXBlLCBuYW1lKQogICAgIHsKICAgICAg
ICAgQVNTRVJUKHR5cGUgPT0gRG9jdW1lbnROYW1lZEl0ZW1zKTsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25zQ29sbGVjdGlvbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxPcHRpb25zQ29sbGVjdGlvbi5jcHAKaW5kZXggMTUwOGI0MTVjNDJk
YWViMTA4MDFjZDg5YzI5MTQ2ZDc3MDkzMTJlOS4uZDlhZGEwNmIzNWEwOGY5NDYwMGYwMTE4NTQx
YWNjMzZhYzIxYzRiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9u
c0NvbGxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbnNDb2xs
ZWN0aW9uLmNwcApAQCAtMjcsNyArMjcsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBIVE1M
T3B0aW9uc0NvbGxlY3Rpb246OkhUTUxPcHRpb25zQ29sbGVjdGlvbihIVE1MU2VsZWN0RWxlbWVu
dCYgc2VsZWN0KQotICAgIDogSFRNTENvbGxlY3Rpb24oc2VsZWN0LCBTZWxlY3RPcHRpb25zKQor
ICAgIDogQ2FjaGVkSFRNTENvbGxlY3Rpb248SFRNTE9wdGlvbnNDb2xsZWN0aW9uLCBDb2xsZWN0
aW9uVHlwZVRyYWl0czxTZWxlY3RPcHRpb25zPjo6dHJhdmVyc2FsVHlwZT4oc2VsZWN0LCBTZWxl
Y3RPcHRpb25zKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxP
cHRpb25zQ29sbGVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uc0NvbGxl
Y3Rpb24uaAppbmRleCA2MzY2ODY1ZTU1YzFjM2E2Nzc5NDE1MzllMzM3MTExZDNhZjM5ZTE2Li5j
NWZkMTdiZjcyNjdmMjViNzQ1ZDQwNDgzMGY4Nzg1YjRiZDFiYmZjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25zQ29sbGVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmgKQEAgLTI0LDcgKzI0LDcgQEAKICNpZm5k
ZWYgSFRNTE9wdGlvbnNDb2xsZWN0aW9uX2gKICNkZWZpbmUgSFRNTE9wdGlvbnNDb2xsZWN0aW9u
X2gKIAotI2luY2x1ZGUgIkhUTUxDb2xsZWN0aW9uLmgiCisjaW5jbHVkZSAiQ2FjaGVkSFRNTENv
bGxlY3Rpb24uaCIKICNpbmNsdWRlICJIVE1MU2VsZWN0RWxlbWVudC5oIgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CkBAIC0zMyw3ICszMyw3IEBAIGNsYXNzIEhUTUxPcHRpb25FbGVtZW50OwogCiB0
eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOwogCi1jbGFzcyBIVE1MT3B0aW9uc0NvbGxlY3Rpb24g
ZmluYWwgOiBwdWJsaWMgSFRNTENvbGxlY3Rpb24geworY2xhc3MgSFRNTE9wdGlvbnNDb2xsZWN0
aW9uIGZpbmFsIDogcHVibGljIENhY2hlZEhUTUxDb2xsZWN0aW9uPEhUTUxPcHRpb25zQ29sbGVj
dGlvbiwgQ29sbGVjdGlvblR5cGVUcmFpdHM8U2VsZWN0T3B0aW9ucz46OnRyYXZlcnNhbFR5cGU+
IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPEhUTUxPcHRpb25zQ29sbGVjdGlvbj4gY3JlYXRl
KEhUTUxTZWxlY3RFbGVtZW50JiwgQ29sbGVjdGlvblR5cGUpOwogCkBAIC01MCwxMCArNTAsMTgg
QEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRMZW5ndGgodW5zaWduZWQsIEV4Y2VwdGlvbkNvZGUm
KTsKIAorICAgIC8vIEZvciBDYWNoZWRIVE1MQ29sbGVjdGlvbi4KKyAgICBib29sIGVsZW1lbnRN
YXRjaGVzKEVsZW1lbnQmKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBleHBsaWNpdCBIVE1MT3B0
aW9uc0NvbGxlY3Rpb24oSFRNTFNlbGVjdEVsZW1lbnQmKTsKIH07CiAKK2lubGluZSBib29sIEhU
TUxPcHRpb25zQ29sbGVjdGlvbjo6ZWxlbWVudE1hdGNoZXMoRWxlbWVudCYgZWxlbWVudCkgY29u
c3QKK3sKKyAgICByZXR1cm4gZWxlbWVudC5oYXNUYWdOYW1lKEhUTUxOYW1lczo6b3B0aW9uVGFn
KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRT
X0hUTUxDT0xMRUNUSU9OKEhUTUxPcHRpb25zQ29sbGVjdGlvbiwgU2VsZWN0T3B0aW9ucykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHAKaW5kZXggZDUwNWYzZjEwYTBj
NDg1MjQ0NThiOTQ1NGQ0ZWViZDRjOTU3ZDc3MC4uYzhiNDI2MzIzMzk3MDQ2ZDhiNGUzOTEyYmVm
N2Y0Mzk5ZTUwM2M4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5j
cHAKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJGb3JtQ29udHJvbGxlci5oIgogI2luY2x1
ZGUgIkZvcm1EYXRhTGlzdC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiR2VuZXJp
Y0NhY2hlZEhUTUxDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiSFRNTEZvcm1FbGVtZW50LmgiCiAj
aW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSFRNTE9wdEdyb3VwRWxlbWVudC5oIgpA
QCAtNDYsNiArNDcsNyBAQAogI2luY2x1ZGUgIktleWJvYXJkRXZlbnQuaCIKICNpbmNsdWRlICJM
b2NhbGl6ZWRTdHJpbmdzLmgiCiAjaW5jbHVkZSAiTW91c2VFdmVudC5oIgorI2luY2x1ZGUgIk5v
ZGVSYXJlRGF0YS5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQbGF0Zm9ybU1vdXNl
RXZlbnQuaCIKICNpbmNsdWRlICJSZW5kZXJMaXN0Qm94LmgiCkBAIC0zNzQsMTIgKzM3NiwxMiBA
QCBib29sIEhUTUxTZWxlY3RFbGVtZW50OjpjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKGNvbnN0
IE5vZGUmIGNoaWxkKSBjb25zdAogCiBSZWY8SFRNTENvbGxlY3Rpb24+IEhUTUxTZWxlY3RFbGVt
ZW50OjpzZWxlY3RlZE9wdGlvbnMoKQogewotICAgIHJldHVybiBlbnN1cmVDYWNoZWRIVE1MQ29s
bGVjdGlvbihTZWxlY3RlZE9wdGlvbnMpOworICAgIHJldHVybiBlbnN1cmVSYXJlRGF0YSgpLmVu
c3VyZU5vZGVMaXN0cygpLmFkZENhY2hlZENvbGxlY3Rpb248R2VuZXJpY0NhY2hlZEhUTUxDb2xs
ZWN0aW9uPENvbGxlY3Rpb25UeXBlVHJhaXRzPFNlbGVjdGVkT3B0aW9ucz46OnRyYXZlcnNhbFR5
cGU+PigqdGhpcywgU2VsZWN0ZWRPcHRpb25zKTsKIH0KIAogUmVmPEhUTUxPcHRpb25zQ29sbGVj
dGlvbj4gSFRNTFNlbGVjdEVsZW1lbnQ6Om9wdGlvbnMoKQogewotICAgIHJldHVybiBkb3duY2Fz
dDxIVE1MT3B0aW9uc0NvbGxlY3Rpb24+KGVuc3VyZUNhY2hlZEhUTUxDb2xsZWN0aW9uKFNlbGVj
dE9wdGlvbnMpLmdldCgpKTsKKyAgICByZXR1cm4gZW5zdXJlUmFyZURhdGEoKS5lbnN1cmVOb2Rl
TGlzdHMoKS5hZGRDYWNoZWRDb2xsZWN0aW9uPEhUTUxPcHRpb25zQ29sbGVjdGlvbj4oKnRoaXMs
IFNlbGVjdE9wdGlvbnMpOwogfQogCiB2b2lkIEhUTUxTZWxlY3RFbGVtZW50Ojp1cGRhdGVMaXN0
SXRlbVNlbGVjdGVkU3RhdGVzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFRhYmxlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQu
Y3BwCmluZGV4IDc0NTczNjFiNmUxMjVlYWVmOTY1YWY1NDUzM2JmMzNmNjg0NmVhYTcuLjAyODA4
NmE2MThkZjZiMzRlZTM0NGFmMWQwMzdhNDA3NGU2NjQ4NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVGFibGVFbGVtZW50LmNwcApAQCAtMzEsMTIgKzMxLDE0IEBACiAjaW5jbHVkZSAiQ1NT
VmFsdWVQb29sLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIkV4Y2Vw
dGlvbkNvZGVQbGFjZWhvbGRlci5oIgorI2luY2x1ZGUgIkdlbmVyaWNDYWNoZWRIVE1MQ29sbGVj
dGlvbi5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlv
bXMuaCIKICNpbmNsdWRlICJIVE1MVGFibGVDYXB0aW9uRWxlbWVudC5oIgogI2luY2x1ZGUgIkhU
TUxUYWJsZVJvd0VsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MVGFibGVSb3dzQ29sbGVjdGlvbi5o
IgogI2luY2x1ZGUgIkhUTUxUYWJsZVNlY3Rpb25FbGVtZW50LmgiCisjaW5jbHVkZSAiTm9kZVJh
cmVEYXRhLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGFibGUuaCIKICNpbmNsdWRlICJTdHlsZVByb3Bl
cnRpZXMuaCIKICNpbmNsdWRlIDx3dGYvUmVmLmg+CkBAIC01NTEsMTIgKzU1MywxMiBAQCBib29s
IEhUTUxUYWJsZUVsZW1lbnQ6OmlzVVJMQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYgYXR0cmli
dXRlKSBjb25zdAogCiBSZWY8SFRNTENvbGxlY3Rpb24+IEhUTUxUYWJsZUVsZW1lbnQ6OnJvd3Mo
KQogewotICAgIHJldHVybiBlbnN1cmVDYWNoZWRIVE1MQ29sbGVjdGlvbihUYWJsZVJvd3MpOwor
ICAgIHJldHVybiBlbnN1cmVSYXJlRGF0YSgpLmVuc3VyZU5vZGVMaXN0cygpLmFkZENhY2hlZENv
bGxlY3Rpb248SFRNTFRhYmxlUm93c0NvbGxlY3Rpb24+KCp0aGlzLCBUYWJsZVJvd3MpOwogfQog
CiBSZWY8SFRNTENvbGxlY3Rpb24+IEhUTUxUYWJsZUVsZW1lbnQ6OnRCb2RpZXMoKQogewotICAg
IHJldHVybiBlbnN1cmVDYWNoZWRIVE1MQ29sbGVjdGlvbihUYWJsZVRCb2RpZXMpOworICAgIHJl
dHVybiBlbnN1cmVSYXJlRGF0YSgpLmVuc3VyZU5vZGVMaXN0cygpLmFkZENhY2hlZENvbGxlY3Rp
b248R2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uPENvbGxlY3Rpb25UeXBlVHJhaXRzPFRhYmxl
VEJvZGllcz46OnRyYXZlcnNhbFR5cGU+PigqdGhpcywgVGFibGVUQm9kaWVzKTsKIH0KIAogY29u
c3QgQXRvbWljU3RyaW5nJiBIVE1MVGFibGVFbGVtZW50OjpydWxlcygpIGNvbnN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVJvd0VsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MVGFibGVSb3dFbGVtZW50LmNwcAppbmRleCBkNDM1MWVhZmNhNWU2
Zjc1NTI2Yjk3YTMwNGJhNjdhZmE2ODA3ZWE4Li5jODcyNTlmNWVjYjk2ZDBhYTYwNDhkNGQxNGFl
OGI2MGY5M2I2OGI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVJv
d0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlUm93RWxlbWVu
dC5jcHAKQEAgLTI2LDEyICsyNiwxMyBAQAogI2luY2x1ZGUgIkhUTUxUYWJsZVJvd0VsZW1lbnQu
aCIKIAogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKLSNpbmNsdWRlICJIVE1MQ29sbGVjdGlv
bi5oIgorI2luY2x1ZGUgIkdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUg
IkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhUTUxUYWJsZUNlbGxFbGVtZW50LmgiCiAjaW5jbHVk
ZSAiSFRNTFRhYmxlRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxUYWJsZVNlY3Rpb25FbGVtZW50
LmgiCiAjaW5jbHVkZSAiTm9kZUxpc3QuaCIKKyNpbmNsdWRlICJOb2RlUmFyZURhdGEuaCIKICNp
bmNsdWRlICJUZXh0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTE1Niw3ICsxNTcsNyBA
QCB2b2lkIEhUTUxUYWJsZVJvd0VsZW1lbnQ6OmRlbGV0ZUNlbGwoaW50IGluZGV4LCBFeGNlcHRp
b25Db2RlJiBlYykKIAogUmVmPEhUTUxDb2xsZWN0aW9uPiBIVE1MVGFibGVSb3dFbGVtZW50Ojpj
ZWxscygpCiB7Ci0gICAgcmV0dXJuIGVuc3VyZUNhY2hlZEhUTUxDb2xsZWN0aW9uKFRSQ2VsbHMp
OworICAgIHJldHVybiBlbnN1cmVSYXJlRGF0YSgpLmVuc3VyZU5vZGVMaXN0cygpLmFkZENhY2hl
ZENvbGxlY3Rpb248R2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uPENvbGxlY3Rpb25UeXBlVHJh
aXRzPFRSQ2VsbHM+Ojp0cmF2ZXJzYWxUeXBlPj4oKnRoaXMsIFRSQ2VsbHMpOwogfQogCiB2b2lk
IEhUTUxUYWJsZVJvd0VsZW1lbnQ6OnNldENlbGxzKEhUTUxDb2xsZWN0aW9uKiwgRXhjZXB0aW9u
Q29kZSYgZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVJvd3ND
b2xsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlUm93c0NvbGxlY3Rp
b24uY3BwCmluZGV4IGJmYTVmNmQ3OGQwZmJjYTczYjgzZWJlM2EyZTAxYzJhNDEzNjBhMjUuLjJk
OTFkOWQ0OGY3ODc4NjdmNzc4ZTgwYzY5MjUwZWUzNmQ2ZTBkYTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlUm93c0NvbGxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFRhYmxlUm93c0NvbGxlY3Rpb24uY3BwCkBAIC0xNDksNyArMTQ5LDcg
QEAgSFRNTFRhYmxlUm93RWxlbWVudCogSFRNTFRhYmxlUm93c0NvbGxlY3Rpb246Omxhc3RSb3co
SFRNTFRhYmxlRWxlbWVudCYgdGFibGUpCiB9CiAKIEhUTUxUYWJsZVJvd3NDb2xsZWN0aW9uOjpI
VE1MVGFibGVSb3dzQ29sbGVjdGlvbihIVE1MVGFibGVFbGVtZW50JiB0YWJsZSkKLSAgICA6IEhU
TUxDb2xsZWN0aW9uKHRhYmxlLCBUYWJsZVJvd3MsIEN1c3RvbUZvcndhcmRPbmx5VHJhdmVyc2Fs
KQorICAgIDogQ2FjaGVkSFRNTENvbGxlY3Rpb248SFRNTFRhYmxlUm93c0NvbGxlY3Rpb24sIENv
bGxlY3Rpb25UeXBlVHJhaXRzPFRhYmxlUm93cz46OnRyYXZlcnNhbFR5cGU+KHRhYmxlLCBUYWJs
ZVJvd3MpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxl
Um93c0NvbGxlY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlUm93c0NvbGxl
Y3Rpb24uaAppbmRleCA5ZWI1ZmE2YTdhMjk4MTRmMjNlMTRlMzdhYTk5NTM2ZGRlZGFmOTQ0Li5i
ZjA3YTMyOWY1ODE1NTk0MTZmNDJkYmQ2N2MxMjA4NmM1ZTEyMTZmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVJvd3NDb2xsZWN0aW9uLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MVGFibGVSb3dzQ29sbGVjdGlvbi5oCkBAIC0yOSwxNCArMjksMTQgQEAK
ICNpZm5kZWYgSFRNTFRhYmxlUm93c0NvbGxlY3Rpb25faAogI2RlZmluZSBIVE1MVGFibGVSb3dz
Q29sbGVjdGlvbl9oCiAKLSNpbmNsdWRlICJIVE1MQ29sbGVjdGlvbi5oIgorI2luY2x1ZGUgIkNh
Y2hlZEhUTUxDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiSFRNTFRhYmxlRWxlbWVudC5oIgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEhUTUxUYWJsZVJvd0VsZW1lbnQ7CiAKLWNsYXNz
IEhUTUxUYWJsZVJvd3NDb2xsZWN0aW9uIGZpbmFsIDogcHVibGljIEhUTUxDb2xsZWN0aW9uIHsK
K2NsYXNzIEhUTUxUYWJsZVJvd3NDb2xsZWN0aW9uIGZpbmFsIDogcHVibGljIENhY2hlZEhUTUxD
b2xsZWN0aW9uPEhUTUxUYWJsZVJvd3NDb2xsZWN0aW9uLCBDb2xsZWN0aW9uVHlwZVRyYWl0czxU
YWJsZVJvd3M+Ojp0cmF2ZXJzYWxUeXBlPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxIVE1M
VGFibGVSb3dzQ29sbGVjdGlvbj4gY3JlYXRlKEhUTUxUYWJsZUVsZW1lbnQmLCBDb2xsZWN0aW9u
VHlwZSk7CiAKQEAgLTQ2LDEwICs0NiwxMSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEhUTUxUYWJs
ZVJvd0VsZW1lbnQqIHJvd0FmdGVyKEhUTUxUYWJsZUVsZW1lbnQmLCBIVE1MVGFibGVSb3dFbGVt
ZW50Kik7CiAgICAgc3RhdGljIEhUTUxUYWJsZVJvd0VsZW1lbnQqIGxhc3RSb3coSFRNTFRhYmxl
RWxlbWVudCYpOwogCisgICAgLy8gRm9yIENhY2hlZEhUTUxDb2xsZWN0aW9uLgorICAgIEVsZW1l
bnQqIGN1c3RvbUVsZW1lbnRBZnRlcihFbGVtZW50KikgY29uc3Q7CisKIHByaXZhdGU6CiAgICAg
ZXhwbGljaXQgSFRNTFRhYmxlUm93c0NvbGxlY3Rpb24oSFRNTFRhYmxlRWxlbWVudCYpOwotCi0g
ICAgdmlydHVhbCBFbGVtZW50KiBjdXN0b21FbGVtZW50QWZ0ZXIoRWxlbWVudCopIGNvbnN0IG92
ZXJyaWRlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MVGFibGVTZWN0aW9uRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxUYWJsZVNlY3Rpb25FbGVtZW50LmNwcAppbmRleCBmNzU3MTdlNTk4MjkyYjc0
ZWQ0MjI3NThjNDgwNmRjNWMwMDdiYmRlLi45ZTQ1MzE2ZjhmM2Y0ZmM2ZGE4ZTNkY2RiMWIzZTRl
MmRkOTI3ZDg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVNlY3Rp
b25FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVNlY3Rpb25F
bGVtZW50LmNwcApAQCAtMjYsMTEgKzI2LDEzIEBACiAjaW5jbHVkZSAiSFRNTFRhYmxlU2VjdGlv
bkVsZW1lbnQuaCIKIAogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJHZW5l
cmljQ2FjaGVkSFRNTENvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJIVE1MQ29sbGVjdGlvbi5oIgog
I2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhUTUxUYWJsZVJvd0VsZW1lbnQuaCIK
ICNpbmNsdWRlICJIVE1MVGFibGVFbGVtZW50LmgiCiAjaW5jbHVkZSAiTm9kZUxpc3QuaCIKKyNp
bmNsdWRlICJOb2RlUmFyZURhdGEuaCIKICNpbmNsdWRlICJUZXh0LmgiCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKQEAgLTE0Nyw3ICsxNDksNyBAQCB2b2lkIEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50
OjpzZXRWQWxpZ24oY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKIAogUmVmPEhUTUxDb2xsZWN0
aW9uPiBIVE1MVGFibGVTZWN0aW9uRWxlbWVudDo6cm93cygpCiB7Ci0gICAgcmV0dXJuIGVuc3Vy
ZUNhY2hlZEhUTUxDb2xsZWN0aW9uKFRTZWN0aW9uUm93cyk7CisgICAgcmV0dXJuIGVuc3VyZVJh
cmVEYXRhKCkuZW5zdXJlTm9kZUxpc3RzKCkuYWRkQ2FjaGVkQ29sbGVjdGlvbjxHZW5lcmljQ2Fj
aGVkSFRNTENvbGxlY3Rpb248Q29sbGVjdGlvblR5cGVUcmFpdHM8VFNlY3Rpb25Sb3dzPjo6dHJh
dmVyc2FsVHlwZT4+KCp0aGlzLCBUU2VjdGlvblJvd3MpOwogfQogCiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>259023</attachid>
            <date>2015-08-14 12:26:56 -0700</date>
            <delta_ts>2015-08-14 12:30:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-147979-20150814122636.patch</filename>
            <type>text/plain</type>
            <size>107604</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg4MzY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzE2NDY1NDRmOTcyZmEx
NzYyNDIxN2VkMTdiZDI3ZWQzZDFjNjZmOC4uYzUwMjZlZjM3OTUyNjRmNWE0ZDk4NDk0YjQxMzM4
ZjM3ZDM1ZWRhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4MCBAQAorMjAxNS0wOC0xMyAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFJlZmFjdG9yIEhUTUxDb2xs
ZWN0aW9uIHRvIGJlIGFzIGZhc3QgYXMgQ2FjaGVkTGl2ZU5vZGVMaXN0CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDc5NzkKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWZhY3RvciBIVE1MQ29sbGVjdGlv
biB0byBiZSBhcyBmYXN0IGFzIENhY2hlZExpdmVOb2RlTGlzdC4gVGhpcyBpcyBpbgorICAgICAg
ICBwcmVwYXJhdGlvbiBvZiBoYXZpbmcgZ2V0RWxlbWVudHNCeVRhZ05hbWUqKCkgLyBnZXRFbGVt
ZW50c0J5Q2xhc3NOYW1lKCkKKyAgICAgICAgcmV0dXJuIGFuIEhUTUxDb2xsZWN0aW9uIGluc3Rl
YWQgb2YgYSBOb2RlTGlzdCwgYXMgcGVyIHRoZQorICAgICAgICBzcGVjaWZpY2F0aW9uLiBDaHJv
bWUgYW5kIEZpcmVmb3ggYWxyZWFkeSBtYXRjaCB0aGUgc3BlY2lmaWNhdGlvbiBpbgorICAgICAg
ICB0aGlzIGNhc2UuCisKKyAgICAgICAgVHJhdmVyc2luZyBhbiBIVE1MQ29sbGVjdGlvbiB3YXMg
c2xvdyBiZWNhdXNlIG9mIGFsbCB0aGUgZXh0cmEKKyAgICAgICAgYnJhbmNoaW5nIGl0IGhhZCBj
b21wYXJlZCB0byBDYWNoZWRMaXZlTm9kZUxpc3QuIFRvIGFkZHJlc3MgdGhlIGlzc3VlLAorICAg
ICAgICB0aGlzIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgdGVtcGxhdGVkIENhY2hlZEhUTUxDb2xs
ZWN0aW9uIHN1YmNsYXNzLAorICAgICAgICB3aGljaCBiZWhhdmVzIGluIGEgc2ltaWxhciB3YXkg
YXMgQ2FjaGVkTGl2ZU5vZGVMaXN0LiBUaGUgMiB0ZW1wbGF0ZQorICAgICAgICBwYXJhbWV0ZXJz
IGFyZToKKyAgICAgICAgMS4gVGhlIHR5cGUgb2YgdGhlIHN1YmNsYXNzIG9mIENhY2hlZEhUTUxD
b2xsZWN0aW9uLCBzbyB3ZSBjYW4gY2FsbAorICAgICAgICAgICBlbGVtZW50TWF0Y2hlcygpIGRp
cmVjdGx5IG9uIHRoZSBzdWJjbGFzcywgd2l0aG91dCBuZWVkZWQgYW55CisgICAgICAgICAgIHZp
cnR1YWwgZnVuY3Rpb24gY2FsbCBvciBzd2l0Y2ggc3RhdGVtZW50LiBUaGlzIGlzIHRoZSBzYW1l
IGFwcHJvYWNoCisgICAgICAgICAgIGFzIGluIENhY2hlZExpdmVOb2RlTGlzdC4KKyAgICAgICAg
Mi4gVGhlIHR5cGUgb2YgdHJlZSB0cmF2ZXJzYWwgdXNlZCAoRGVzY2VuZGFudHMsIENoaWxkcmVu
T25seSwKKyAgICAgICAgICAgQ3VzdG9tRm9yd2FyZE9ubHkpLiBVbmxpa2UgTGl2ZU5vZGVMaXN0
LCBIVE1MQ29sbGVjdGlvbiBuZWVkcyB0bworICAgICAgICAgICBzdXBwb3J0IHRoZXNlIDMgdHlw
ZXMgb2YgdHJlZSB0cmF2ZXJzYWwuIFRoZXNlIHdlcmUgY2F1c2luZyBleHRyYQorICAgICAgICAg
ICBicmFuY2hpbmcgZm9yIGV2ZXJ5IGl0ZW0oKSBjYWxsLiBXZSBhcmUgbm93IGFibGUgdG8gY2hv
b3NlIHRoZSByaWdodAorICAgICAgICAgICB0eXBlIG9mIHRyYXZlcnNhbCBmb3IgdGhlIENhY2hl
ZEhUTUxDb2xsZWN0aW9uIGF0IGNvbXBpbGUgdGltZS4KKworICAgICAgICAqIFdlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgQWRkIG5ldyBmaWxlcyB0byB0aGUgUHJv
amVjdC4KKworICAgICAgICAqIGRvbS9Db250YWluZXJOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNvbnRhaW5lck5vZGU6OmNoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRhaW5l
ck5vZGU6OmNhY2hlZEhUTUxDb2xsZWN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBkb20vQ29u
dGFpbmVyTm9kZS5oOgorICAgICAgICBEcm9wIENvbnRhaW5lck5vZGU6OmVuc3VyZUNhY2hlZEhU
TUxDb2xsZWN0aW9uKCkgYW5kIHVzZQorICAgICAgICBOb2RlTGlzdHNOb2RlRGF0YTo6YWRkQ2Fj
aGVkQ29sbGVjdGlvbigpIGRpcmVjdGx5IGF0IGNhbGwgc2l0ZXMKKyAgICAgICAgaW5zdGVhZC4g
V2UgbmVlZCBhY2Nlc3MgdG8gdGhlIENvbGxlY3Rpb25UeXBlIGF0IGJ1aWxkLXRpbWUgc28KKyAg
ICAgICAgd2UgY2FuIHJlc29sdmUgdGhlIENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlIHBhcmFtZXRl
ciBmb3IgdGhlCisgICAgICAgIEdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbiB1c2luZyBDb2xs
ZWN0aW9uVHlwZVRyYWl0cy4KKworICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAg
ICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgIFVwZGF0ZSBlbnN1cmVDYWNoZWRDb2xsZWN0aW9u
KCkgc28gdGhlIENvbGxlY3Rpb25UeXBlIGlzIG5vdyBhIHRlbXBsYXRlCisgICAgICAgIHBhcmFt
ZXRlciBpbnN0ZWFkIG9mIGEgbWV0aG9kIGFyZ3VtZW50LiBXZSBuZWVkIHRvIGtub3cgdGhlCisg
ICAgICAgIENvbGxlY3Rpb25UeXBlIGF0IGJ1aWxkIHRpbWUgdG8gY29uc3RydWN0IHRoZSBHZW5l
cmljQ2FjaGVkSFRNTENvbGxlY3Rpb24uCisKKyAgICAgICAgKiBkb20vRWxlbWVudENoaWxkSXRl
cmF0b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnRU
eXBlPjo6b3BlcmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudENoaWxkQ29uc3RJdGVy
YXRvcjxFbGVtZW50VHlwZT46Om9wZXJhdG9yKToKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIGRl
Y3JlbWVudGluZyBhbiBFbGVtZW50Q2hpbGRJdGVyYXRvciwgZm9yIGNvbnNpc3RlbmN5CisgICAg
ICAgIHdpdGggRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvci4gV2UgbmVlZCB0aGlzIHRvIHN1cHBv
cnQgYmFja3dhcmQKKyAgICAgICAgdHJhdmVyc2FsIGluIENhY2hlZEhUTUxDb2xsZWN0aW9ucyB0
aGF0IHVzZSB0aGUgJ0NoaWxkcmVuT25seScgdHlwZQorICAgICAgICBvZiB0cmF2ZXJzYWwuCisK
KyAgICAgICAgKiBkb20vTGl2ZU5vZGVMaXN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRM
aXZlTm9kZUxpc3Q8Tm9kZUxpc3RUeXBlPjo6Y29sbGVjdGlvbkJlZ2luKToKKyAgICAgICAgKFdl
YkNvcmU6OkNhY2hlZExpdmVOb2RlTGlzdDxOb2RlTGlzdFR5cGU+Ojpjb2xsZWN0aW9uTGFzdCk6
CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRMaXZlTm9kZUxpc3Q8Tm9kZUxpc3RUeXBlPjo6Y29s
bGVjdGlvblRyYXZlcnNlRm9yd2FyZCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRMaXZlTm9k
ZUxpc3Q8Tm9kZUxpc3RUeXBlPjo6Y29sbGVjdGlvblRyYXZlcnNlQmFja3dhcmQpOgorICAgICAg
ICBNb3ZlIHRyYXZlcnNhbCBpbXBsZW1lbnRhdGlvbiB0byBDb2xsZWN0aW9uVHJhdmVyc2FsLmgs
IHNvIGl0IGNhbiBiZQorICAgICAgICBzaGFyZWQgd2l0aCBhY2hlZEhUTUxDb2xsZWN0aW9uLmgu
CisKKyAgICAgICAgKiBodG1sL0NhY2hlZEhUTUxDb2xsZWN0aW9uLmg6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6dHJhdmVyc2FsVHlwZT46OkNhY2hlZEhUTUxDb2xsZWN0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OnRyYXZlcnNhbFR5cGU+Ojp+Q2FjaGVkSFRNTENvbGxlY3Rpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6dHJhdmVyc2FsVHlwZT46OkNhY2hlZEhUTUxDb2xsZWN0aW9uOjptZW1v
cnlDb3N0KToKKyAgICAgICAgKFdlYkNvcmU6OnRyYXZlcnNhbFR5cGU+Ojpjb2xsZWN0aW9uQ2Fu
VHJhdmVyc2VCYWNrd2FyZCk6CisgICAgICAgIChXZWJDb3JlOjp0cmF2ZXJzYWxUeXBlPjo6Y29s
bGVjdGlvblRyYXZlcnNlRm9yd2FyZCk6CisgICAgICAgIChXZWJDb3JlOjp0cmF2ZXJzYWxUeXBl
Pjo6Y29sbGVjdGlvblRyYXZlcnNlQmFja3dhcmQpOgorICAgICAgICAoV2ViQ29yZTo6dHJhdmVy
c2FsVHlwZT46OndpbGxWYWxpZGF0ZUluZGV4Q2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6dHJh
dmVyc2FsVHlwZT46Omxlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjp0cmF2ZXJzYWxUeXBlPjo6
aXRlbSk6CisgICAgICAgIChXZWJDb3JlOjp0cmF2ZXJzYWxUeXBlPjo6aW52YWxpZGF0ZUNhY2hl
KToKKyAgICAgICAgKFdlYkNvcmU6OnRyYXZlcnNhbFR5cGU+OjplbGVtZW50TWF0Y2hlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpuYW1lU2hvdWxkQmVWaXNpYmxlSW5Eb2N1bWVudEFsbCk6CisgICAg
ICAgIChXZWJDb3JlOjp0cmF2ZXJzYWxUeXBlPjo6bmFtZWRJdGVtKToKKworICAgICAgICAqIGh0
bWwvQ29sbGVjdGlvblRyYXZlcnNhbC5oOiBBZGRlZC4KKyAgICAgICAgQWRkIG5ldyB0ZW1wbGF0
ZSBjbGFzcyB0aGF0IHByb3ZpZGUgdGhlIGNvbGxlY3Rpb24gdHJhdmVyc2FsIGNvZGUKKyAgICAg
ICAgbmVlZGVkIGJ5IENvbGxlY3Rpb25JbmRleENhY2hlLiBJdCBoYXMgdGVtcGxhdGUgc3BlY2lh
bGl6YXRpb25zIGZvcgorICAgICAgICBhbGwgMyB0eXBlcyBvZiB0cmF2ZXJzYWw6IERlc2NlbmRh
bnRzLCBDaGlsZHJlbk9ubHksIGFuZAorICAgICAgICBDdXN0b21Gb3J3YXJkT25seS4KKworICAg
ICAgICAqIGh0bWwvQ29sbGVjdGlvblR5cGUuaDoKKyAgICAgICAgQWRkIENvbGxlY3Rpb25UeXBl
VHJhaXRzIHRyYWl0cyBzbyB3ZSBjYW4gcmVzb2x2ZSB0aGUKKyAgICAgICAgQ29sbGVjdGlvblRy
YXZlcnNhbFR5cGUgdXNlZCBieSBhIHNwZWNpZmljIENvbGxlY3Rpb25UeXBlIGF0CisgICAgICAg
IGNvbXBpbGUtdGltZS4gVGhpcyBpcyBuZWVkZWQgZm9yIHRoZSBzZWNvbmQgdGVtcGxhdGUgcGFy
YW1ldGVyIG9mCisgICAgICAgIENhY2hlZEhUTUxDb2xsZWN0aW9uLgorCisgICAgICAgICogaHRt
bC9HZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbjx0cmF2ZXJzYWxUeXBlPjo6ZWxlbWVudE1h
dGNoZXMpOgorICAgICAgICAqIGh0bWwvR2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uLmg6IEFk
ZGVkLgorICAgICAgICBBZGQgQ2FjaGVkSFRNTENvbGxlY3Rpb24gc3ViY2xhc3MgaXMgdGhlIGdl
bmVyaWMgb25lIHVzZWQgZm9yIGFsbAorICAgICAgICBDb2xsZWN0aW9uVHlwZXMgdGhhdCBkbyBu
b3QgaGF2ZSB0aGVpciBvd24gc3ViY2xhc3MgKGUuZy4gTm9kZUNoaWxkcmVuKS4KKyAgICAgICAg
VGhpcyBoYXMgYW4gZWxlbWVudE1hdGNoZXMoKSBtZXRob2Qgd2l0aCBhIHN3aXRjaCgpIHN0YXRl
bWVudCBoYW5kbGluZworICAgICAgICBhbGwgdGhlc2UgQ29sbGVjdGlvblR5cGVzLiBUaG9zZSBh
cmUgbm90IG5vcm1hbGx5IG5vdCBwZXJmb3JtYW5jZQorICAgICAgICBzZW5zaXRpdmUuCisKKyAg
ICAgICAgKiBodG1sL0hUTUxBbGxDb2xsZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxBbGxDb2xsZWN0aW9uOjpIVE1MQWxsQ29sbGVjdGlvbik6CisgICAgICAgICogaHRtbC9IVE1M
QWxsQ29sbGVjdGlvbi5oOgorICAgICAgICBTdWJjbGFzcyBDYWNoZWRIVE1MQ29sbGVjdGlvbiBp
bnN0ZWFkIG9mIEhUTUxDb2xsZWN0aW9uLiBBbHNvIHByb3ZpZGUKKyAgICAgICAgYW4gZWxlbWVu
dE1hdGNoZXMoKSBtZXRob2QgdGhhdCBzaW1wbHkgcmV0dXJucyB0cnVlIGFzIHdlIHdhbnQgdG8K
KyAgICAgICAgbWF0Y2ggYWxsIGVsZW1lbnRzLgorCisgICAgICAgICogaHRtbC9IVE1MQ29sbGVj
dGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ29sbGVjdGlvbjo6SFRNTENvbGxlY3Rp
b24pOgorICAgICAgICBNb3ZlIENvbGxlY3Rpb25JbmRleENhY2hlIG1lbWJlciB0byB0aGUgc3Vi
Y2xhc3MgYW5kIGRyb3AgdGhlIDIgb3RoZXIKKyAgICAgICAgbWVtYmVycyBhcyB0aGV5IGFyZSBy
ZXBsYWNlZCB3aXRoIHRoZSBDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZSB0ZW1wbGF0ZQorICAgICAg
ICBwYXJhbWV0ZXIgb2YgQ2FjaGVkSFRNTENvbGxlY3Rpb24uCisKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxDb2xsZWN0aW9uOjp+SFRNTENvbGxlY3Rpb24pOgorICAgICAgICBNb3ZlIERvY3VtZW50
Ojp1bnJlZ2lzdGVyQ29sbGVjdGlvbigpIGNhbGwgdG8gfkNhY2hlZEhUTUxDb2xsZWN0aW9uKCkK
KyAgICAgICAgYXMgd2UgbmVlZGVkIHRvIGNoZWNrIGlmIHRoZSBDb2xsZWN0aW9uSW5kZXhDYWNo
ZSB3YXMgdmFsaWQgZmlyc3QuCisKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb2xsZWN0aW9uOjp1
cGRhdGVOYW1lZEVsZW1lbnRDYWNoZSk6CisgICAgICAgIE1vdmUgcGFydCBvZiB0aGUgaW1wbGVt
ZW50YXRpb24gdG8gdGhlIENhY2hlZEhUTUxDb2xsZWN0aW9uIHN1YmNsYXNzCisgICAgICAgIGFz
IGl0IG5lZWRzIHRvIGtub3cgYWJvdXQgdGhlIHR5cGUgb2YgdHJhdmVyc2FsIGFuZCBpdCBuZWVk
cyB0byBiZQorICAgICAgICBhYmxlIHRvIGNhbGwgZWxlbWVudE1hdGNoZXMoKS4KKworICAgICAg
ICAqIGh0bWwvSFRNTENvbGxlY3Rpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb2xsZWN0
aW9uOjpyb290Tm9kZSk6CisgICAgICAgIElubGluZSBmb3IgcGVyZm9ybWFuY2UgcmVhc29ucyBh
bmQgY29uc2lzdGVuY3kgd2l0aCBDYWNoZWRMaXZlTm9kZUxpc3QuCisKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxDb2xsZWN0aW9uOjptZW1vcnlDb3N0KToKKyAgICAgICAgTWFrZSB2aXJ0dWFsIGFu
ZCBtb3ZlIHBhcnQgb2YgdGhlIGltcGxlbWVudGF0aW9uIHRvIHRoZQorICAgICAgICBDYWNoZWRI
VE1MQ29sbGVjdGlvbiBzdWJjbGFzcyB0byBjb21wdXRlIHRoZSBjb3N0IG9mIHRoZQorICAgICAg
ICBDb2xsZWN0aW9uSW5kZXhDYWNoZS4KKworICAgICAgICAoV2ViQ29yZTo6SFRNTENvbGxlY3Rp
b246OmludmFsaWRhdGVDYWNoZSk6CisgICAgICAgIE1vdmUgcGFydCBvZiB0aGUgaW1wbGVtZW50
YXRpb24gdG8gdGhlIHN1YmNsYXNzIHRvIGludmFsaWRhdGUgdGhlCisgICAgICAgIENvbGxlY3Rp
b25JbmRleENhY2hlLgorCisgICAgICAgICogaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxGaWVsZFNldEVsZW1lbnQ6OmVsZW1lbnRzKToKKworICAg
ICAgICAqIGh0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uY3BwOgorICAgICAgICAqIGh0
bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uaDoKKyAgICAgICAgU3ViY2xhc3MgQ2FjaGVk
SFRNTENvbGxlY3Rpb24gaW5zdGVhZCBvZiBIVE1MQ29sbGVjdGlvbi4KKyAgICAgICAgY3VzdG9t
RWxlbWVudEFmdGVyKCkgbm8gbG9uZ2VyIG5lZWRzIHRvIGJlIHZpcnR1YWwgYXMgaXQKKyAgICAg
ICAgaXMgY2FsbGVkIGRpcmVjdGx5IGJ5IENhY2hlZEhUTUxDb2xsZWN0aW9uIG9uIHRoZSBzdWJj
bGFzcy4KKworICAgICAgICAqIGh0bWwvSFRNTEZvcm1FbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxGb3JtRWxlbWVudDo6ZWxlbWVudHMpOgorICAgICAgICAqIGh0bWwvSFRNTE1h
cEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1hcEVsZW1lbnQ6OmFyZWFzKToK
KyAgICAgICAgQ2FsbCBOb2RlTGlzdHNOb2RlRGF0YTo6YWRkQ2FjaGVkQ29sbGVjdGlvbigpIGRp
cmVjdGx5LgorCisgICAgICAgICogaHRtbC9IVE1MTmFtZUNvbGxlY3Rpb24uY3BwOgorICAgICAg
ICAqIGh0bWwvSFRNTE5hbWVDb2xsZWN0aW9uLmg6CisgICAgICAgIFN1YmNsYXNzIENhY2hlZEhU
TUxDb2xsZWN0aW9uIGluc3RlYWQgb2YgSFRNTENvbGxlY3Rpb24uCisKKyAgICAgICAgKiBodG1s
L0hUTUxPcHRpb25zQ29sbGVjdGlvbi5jcHA6CisgICAgICAgICogaHRtbC9IVE1MT3B0aW9uc0Nv
bGxlY3Rpb24uaDoKKyAgICAgICAgU3ViY2xhc3MgQ2FjaGVkSFRNTENvbGxlY3Rpb24gaW5zdGVh
ZCBvZiBIVE1MQ29sbGVjdGlvbi4KKworICAgICAgICAqIGh0bWwvSFRNTFNlbGVjdEVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OnNlbGVjdGVkT3B0aW9u
cyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6b3B0aW9ucyk6CisgICAg
ICAgICogaHRtbC9IVE1MVGFibGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxU
YWJsZUVsZW1lbnQ6OnJvd3MpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRhYmxlRWxlbWVudDo6
dEJvZGllcyk6CisgICAgICAgICogaHRtbC9IVE1MVGFibGVSb3dFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxUYWJsZVJvd0VsZW1lbnQ6OmNlbGxzKToKKyAgICAgICAgQ2FsbCBO
b2RlTGlzdHNOb2RlRGF0YTo6YWRkQ2FjaGVkQ29sbGVjdGlvbigpIGRpcmVjdGx5LgorCisgICAg
ICAgICogaHRtbC9IVE1MVGFibGVSb3dzQ29sbGVjdGlvbi5jcHA6CisgICAgICAgICogaHRtbC9I
VE1MVGFibGVSb3dzQ29sbGVjdGlvbi5oOgorICAgICAgICBTdWJjbGFzcyBDYWNoZWRIVE1MQ29s
bGVjdGlvbiBpbnN0ZWFkIG9mIEhUTUxDb2xsZWN0aW9uLgorICAgICAgICBjdXN0b21FbGVtZW50
QWZ0ZXIoKSBubyBsb25nZXIgbmVlZHMgdG8gYmUgdmlydHVhbCBhcyBpdAorICAgICAgICBpcyBj
YWxsZWQgZGlyZWN0bHkgYnkgQ2FjaGVkSFRNTENvbGxlY3Rpb24gb24gdGhlIHN1YmNsYXNzLgor
CisgICAgICAgICogaHRtbC9IVE1MVGFibGVTZWN0aW9uRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MVGFibGVTZWN0aW9uRWxlbWVudDo6cm93cyk6CisgICAgICAgIENhbGwgTm9k
ZUxpc3RzTm9kZURhdGE6OmFkZENhY2hlZENvbGxlY3Rpb24oKSBkaXJlY3RseS4KKwogMjAxNS0w
OC0xMiAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgQ2FjaGVk
UmVzb3VyY2UgbGVhayBpbiB2YWxpZGF0aW9uIGNvZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXgg
ZTY4MzIxZWEyODQ4OTViYjFjYTc5OWYyZTUwY2E3NTc1Y2NkM2Y3Zi4uMDU4ZGY2ZWNhNzkxOGEy
MDQ2NTIzYTA5N2FiZGM1MWQ3Nzk0YTMwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTE2MDgs
NiArMTYwOCw3IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBodG1sL0Zvcm1Bc3NvY2lhdGVk
RWxlbWVudC5jcHAKICAgICBodG1sL0Zvcm1Db250cm9sbGVyLmNwcAogICAgIGh0bWwvRm9ybURh
dGFMaXN0LmNwcAorICAgIGh0bWwvR2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uLmNwcAogICAg
IGh0bWwvSFRNTEFsbENvbGxlY3Rpb24uY3BwCiAgICAgaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5j
cHAKICAgICBodG1sL0hUTUxBcHBsZXRFbGVtZW50LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKaW5kZXggOTJiOWUxYTBjZmY5ODQ1N2YzN2Vi
ZTIxMmIyYzg0MTBmY2I2MTE3ZS4uZDE3ZTM2MmIzNTc0YWJkMTI5YTU1MzdlOTlmZWRhZmU5ZDMz
MmY4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUu
dmN4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hw
cm9qCkBAIC0xNjEwNyw2ICsxNjEwNyw3IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxo
dG1sXEZvcm1Db250cm9sbGVyLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGh0
bWxcRm9ybURhdGFMaXN0LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGh0bWxc
RlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
aHRtbFxHZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb24uY3BwIiAvPgogICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5caHRtbFxIaWRkZW5JbnB1dFR5cGUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5caHRtbFxIVE1MQWxsQ29sbGVjdGlvbi5jcHAiIC8+CiAgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxodG1sXEhUTUxBbmNob3JFbGVtZW50LmNwcCI+CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNDE3NmY3ZjM2
ZTlmN2U3ZjY1NmVmN2Q1ZGUyMzk0MjA0ZTRhNDk2OC4uM2RhYzdlYmZjNDAxMjAzMzU2NTY0MjZj
ZGMwYTI4OTRjMWU5Mjc5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTY4NSw2ICsxNjg1LDcgQEAKIAkJNDZDODNFRkUxQTlC
QkUyOTAwQTc5QTQxIC8qIEdlb05vdGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0NkM4M0VGQzFBOUJCRTI5MDBBNzlBNDEgLyogR2VvTm90aWZp
ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0
NkRCN0Q1NzFCMjBGRTQ2MDA1NjUxQjIgLyogVk5vZGVUcmFja2VyQ29jb2EuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZEQjdENTYxQjIwRkUzQzAw
NTY1MUIyIC8qIFZOb2RlVHJhY2tlckNvY29hLmNwcCAqLzsgfTsKIAkJNDZEQkI2NTAxQUI4Qzk2
RjAwRDlBODEzIC8qIFBvd2VyT2JzZXJ2ZXJNYWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2REJCNjRFMUFCOEM5NkYwMEQ5QTgxMyAvKiBQb3dlck9i
c2VydmVyTWFjLmggKi87IH07CisJCTQ2RUJFQTAyMUI3RDRENjUwMEJFNDk0MSAvKiBDb2xsZWN0
aW9uVHJhdmVyc2FsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0NkVCRUEwMTFCN0Q0RDVEMDBCRTQ5NDEgLyogQ29sbGVjdGlvblRyYXZlcnNhbC5oICov
OyB9OwogCQk0NkYzRTNGOTFCMjEwOTAwMDA4N0VEMTMgLyogVk5vZGVUcmFja2VyLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2REI3RDU4MUIyMEZF
NTgwMDU2NTFCMiAvKiBWTm9kZVRyYWNrZXIuY3BwICovOyB9OwogCQk0NkYzRTNGQTFCMjEwOTEw
MDA4N0VEMTMgLyogVk5vZGVUcmFja2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0NkRCN0Q1OTFCMjBGRTU4MDA1NjUxQjIgLyogVk5vZGVUcmFja2Vy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDZG
Q0I2MTgxQTcwODIwRTAwQzVBMjFFIC8qIERpYWdub3N0aWNMb2dnaW5nS2V5cy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QzN0IzNzUxNUMxQTdFMTAw
NkRDODk4IC8qIERpYWdub3N0aWNMb2dnaW5nS2V5cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0yNjY5LDYgKzI2NzAsMTEgQEAKIAkJODJBQjE3
NzYxMjVDODI2NzAwQzUwNjlEIC8qIEluc3BlY3RvclJlc291cmNlQWdlbnQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgyQUIxNzcyMTI1QzgyNjcwMEM1
MDY5RCAvKiBJbnNwZWN0b3JSZXNvdXJjZUFnZW50LmggKi87IH07CiAJCTgyRTNEOERFMTIyRUEw
RDEwMDNBRTVCQyAvKiBDU1NQcm9wZXJ0eVNvdXJjZURhdGEuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODJFM0Q4REMxMjJFQTBEMTAwM0FFNUJDIC8q
IENTU1Byb3BlcnR5U291cmNlRGF0YS5jcHAgKi87IH07CiAJCTgyRTNEOERGMTIyRUEwRDEwMDNB
RTVCQyAvKiBDU1NQcm9wZXJ0eVNvdXJjZURhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgyRTNEOEREMTIyRUEwRDEwMDNBRTVCQyAvKiBDU1NQcm9w
ZXJ0eVNvdXJjZURhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQk4MzAwMzBGNTFCN0QzM0I1MDBFRDNBQUMgLyogR2VuZXJpY0NhY2hlZEhUTUxD
b2xsZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDgzMDAzMEYzMUI3RDMzQTYwMEVEM0FBQyAvKiBHZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rp
b24uY3BwICovOyB9OworCQk4MzAwMzBGNjFCN0QzM0I1MDBFRDNBQUMgLyogR2VuZXJpY0NhY2hl
ZEhUTUxDb2xsZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4MzAwMzBGNDFCN0QzM0E2MDBFRDNBQUMgLyogR2VuZXJpY0NhY2hlZEhUTUxDb2xs
ZWN0aW9uLmggKi87IH07CisJCTgzMDAzMEY4MUI3RDNCNzgwMEVEM0FBQyAvKiBDYWNoZWRIVE1M
Q29sbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gODMwMDMwRjcxQjdEMzk4ODAwRUQzQUFDIC8qIENhY2hlZEhUTUxDb2xsZWN0aW9uLmggKi87
IH07CisJCTgzMUQ0OEMwMUI3RDlBNTIwMDZERTM5QSAvKiBDbGFzc05vZGVMaXN0LmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzMUQ0OEJFMUI3RDlB
NDYwMDZERTM5QSAvKiBDbGFzc05vZGVMaXN0LmNwcCAqLzsgfTsKKwkJODMxRDQ4QzExQjdEOUE1
MjAwNkRFMzlBIC8qIENsYXNzTm9kZUxpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDgzMUQ0OEJGMUI3RDlBNDYwMDZERTM5QSAvKiBDbGFzc05vZGVM
aXN0LmggKi87IH07CiAJCTgzMkI4NDM0MTlEOEU1NTEwMEIyNjA1NSAvKiBTVkdBbmltYXRlRWxl
bWVudEJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDgzMkI4NDMzMTlEOEU1NTEwMEIyNjA1NSAvKiBTVkdBbmltYXRlRWxlbWVudEJhc2UuaCAqLzsg
fTsKIAkJODMyQjg0MzYxOUQ4RTU3NDAwQjI2MDU1IC8qIFNWR0FuaW1hdGVFbGVtZW50QmFzZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzJCODQz
NTE5RDhFNTc0MDBCMjYwNTUgLyogU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmNwcCAqLzsgfTsKIAkJ
ODM1MjBDN0UxQTcxQkZDQzAwNkJEMkFBIC8qIENTU0ZvbnRGYW1pbHkuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzNTIwQzdEMUE3MUJGQ0MwMDZCRDJB
QSAvKiBDU1NGb250RmFtaWx5LmggKi87IH07CkBAIC01NDEwLDggKzU0MTYsNiBAQAogCQlCQzhC
RjE1QTEwNTgxNDE4MDBBNDBBMDcgLyogVXNlclN0eWxlU2hlZXRUeXBlcy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM4QkYxNTkxMDU4MTQxODAwQTQw
QTA3IC8qIFVzZXJTdHlsZVNoZWV0VHlwZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlCQzhDOEZBRDBERENEMzFCMDBCNTkyRjQgLyogUmVuZGVy
U3R5bGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QkM4QzhGQUIwRERDRDMxQjAwQjU5MkY0IC8qIFJlbmRlclN0eWxlLmNwcCAqLzsgfTsKIAkJQkM4
QzhGQUUwRERDRDMxQjAwQjU5MkY0IC8qIFJlbmRlclN0eWxlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzhDOEZBQzBERENEMzFCMDBCNTkyRjQgLyog
UmVuZGVyU3R5bGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwotCQlCQzkwNEI3NjBEMTA5OThGMDA2ODBEMzIgLyogQ2xhc3NOb2RlTGlzdC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzkwNEI3MjBEMTA5
OThGMDA2ODBEMzIgLyogQ2xhc3NOb2RlTGlzdC5jcHAgKi87IH07Ci0JCUJDOTA0Qjc3MEQxMDk5
OEYwMDY4MEQzMiAvKiBDbGFzc05vZGVMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCQzkwNEI3MzBEMTA5OThGMDA2ODBEMzIgLyogQ2xhc3NOb2Rl
TGlzdC5oICovOyB9OwogCQlCQzkyNkY4MDBDMDU1MjQ3MDA4Mjc3NkIgLyogSlNIVE1MRnJhbWVT
ZXRFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEJDOTI2RjdFMEMwNTUyNDcwMDgyNzc2QiAvKiBKU0hUTUxGcmFtZVNldEVsZW1lbnQuY3Bw
ICovOyB9OwogCQlCQzkyNkY4MTBDMDU1MjQ3MDA4Mjc3NkIgLyogSlNIVE1MRnJhbWVTZXRFbGVt
ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzky
NkY3RjBDMDU1MjQ3MDA4Mjc3NkIgLyogSlNIVE1MRnJhbWVTZXRFbGVtZW50LmggKi87IH07CiAJ
CUJDOTQzOUMzMTE2Q0Y0OTQwMDQ4Qzc1MCAvKiBKU05vZGVDdXN0b20uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDOTQzOUMyMTE2Q0Y0OTQwMDQ4Qzc1
MCAvKiBKU05vZGVDdXN0b20uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwpAQCAtODkyNCw2ICs4OTI4LDcgQEAKIAkJNDZEQjdENTgxQjIwRkU1ODAwNTY1
MUIyIC8qIFZOb2RlVHJhY2tlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBWTm9kZVRyYWNrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkRC
N0Q1OTFCMjBGRTU4MDA1NjUxQjIgLyogVk5vZGVUcmFja2VyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFZOb2RlVHJhY2tlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0NkRCQjY0RTFBQjhDOTZGMDBEOUE4MTMgLyogUG93ZXJPYnNlcnZlck1hYy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQb3dlck9ic2VydmVyTWFjLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2RUJFQTAxMUI3RDRENUQwMEJFNDk0MSAvKiBDb2xsZWN0
aW9uVHJhdmVyc2FsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbGxlY3Rp
b25UcmF2ZXJzYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDkwNzA3RTQxMjE5
QzA0MzAwRDkwRTUxIC8qIEFOR0xFV2ViS2l0QnJpZGdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEFOR0xFV2ViS2l0QnJpZGdlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDkwNzA3RTUxMjE5QzA0MzAwRDkwRTUxIC8qIEFOR0xFV2ViS2l0QnJp
ZGdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFOR0xFV2ViS2l0QnJpZGdl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5MjkxRTRBMTM0MTcyQzgwMEU3NTNE
RSAvKiBJbWFnZVJlbmRlcmluZ01vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSW1hZ2VSZW5kZXJpbmdNb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0x
MDAyNCw2ICsxMDAyOSwxMSBAQAogCQk4MkFCMTc3MjEyNUM4MjY3MDBDNTA2OUQgLyogSW5zcGVj
dG9yUmVzb3VyY2VBZ2VudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNw
ZWN0b3JSZXNvdXJjZUFnZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgyRTNE
OERDMTIyRUEwRDEwMDNBRTVCQyAvKiBDU1NQcm9wZXJ0eVNvdXJjZURhdGEuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ1NTUHJvcGVydHlTb3VyY2VEYXRhLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODJFM0Q4REQxMjJFQTBEMTAwM0FFNUJDIC8q
IENTU1Byb3BlcnR5U291cmNlRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBDU1NQcm9wZXJ0eVNvdXJjZURhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
ODMwMDMwRjMxQjdEMzNBNjAwRUQzQUFDIC8qIEdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbi5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHZW5lcmljQ2FjaGVkSFRN
TENvbGxlY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4MzAwMzBGNDFC
N0QzM0E2MDBFRDNBQUMgLyogR2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbi5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4MzAwMzBGNzFCN0QzOTg4MDBFRDNBQUMgLyog
Q2FjaGVkSFRNTENvbGxlY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Q2FjaGVkSFRNTENvbGxlY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODMx
RDQ4QkUxQjdEOUE0NjAwNkRFMzlBIC8qIENsYXNzTm9kZUxpc3QuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2xhc3NOb2RlTGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTgzMUQ0OEJGMUI3RDlBNDYwMDZERTM5QSAvKiBDbGFzc05vZGVMaXN0
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENsYXNzTm9kZUxpc3QuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODMyQjg0MzMxOUQ4RTU1MTAwQjI2MDU1IC8qIFNW
R0FuaW1hdGVFbGVtZW50QmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
VkdBbmltYXRlRWxlbWVudEJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODMy
Qjg0MzUxOUQ4RTU3NDAwQjI2MDU1IC8qIFNWR0FuaW1hdGVFbGVtZW50QmFzZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdBbmltYXRlRWxlbWVudEJhc2UuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzUyMEM3RDFBNzFCRkNDMDA2QkQyQUEg
LyogQ1NTRm9udEZhbWlseS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDU1NG
b250RmFtaWx5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMjk5Miw4ICsxMzAw
Miw2IEBACiAJCUJDOEJGMTU5MTA1ODE0MTgwMEE0MEEwNyAvKiBVc2VyU3R5bGVTaGVldFR5cGVz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVzZXJTdHlsZVNoZWV0VHlwZXMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM4QzhGQUIwRERDRDMxQjAwQjU5MkY0
IC8qIFJlbmRlclN0eWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFJlbmRlclN0eWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM4QzhGQUMw
RERDRDMxQjAwQjU5MkY0IC8qIFJlbmRlclN0eWxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFJlbmRlclN0eWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUJD
OTA0QjcyMEQxMDk5OEYwMDY4MEQzMiAvKiBDbGFzc05vZGVMaXN0LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENsYXNzTm9kZUxpc3QuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQlCQzkwNEI3MzBEMTA5OThGMDA2ODBEMzIgLyogQ2xhc3NOb2RlTGlz
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDbGFzc05vZGVMaXN0Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDOTI2RjdFMEMwNTUyNDcwMDgyNzc2QiAvKiBK
U0hUTUxGcmFtZVNldEVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTSFRNTEZyYW1lU2V0RWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUJDOTI2RjdGMEMwNTUyNDcwMDgyNzc2QiAvKiBKU0hUTUxGcmFtZVNldEVsZW1lbnQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTSFRNTEZyYW1lU2V0RWxlbWVu
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzk0MzlDMjExNkNGNDk0MDA0OEM3
NTAgLyogSlNOb2RlQ3VzdG9tLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpT
Tm9kZUN1c3RvbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTgxNjIsMTAgKzE4
MTcwLDEyIEBACiAJCQkJRjU1QjNEN0ExMjUxRjEyRDAwM0VGMjY5IC8qIEJhc2VUZXh0SW5wdXRU
eXBlLmggKi8sCiAJCQkJRjU1QjNEN0IxMjUxRjEyRDAwM0VGMjY5IC8qIEJ1dHRvbklucHV0VHlw
ZS5jcHAgKi8sCiAJCQkJRjU1QjNEN0MxMjUxRjEyRDAwM0VGMjY5IC8qIEJ1dHRvbklucHV0VHlw
ZS5oICovLAorCQkJCTgzMDAzMEY3MUI3RDM5ODgwMEVEM0FBQyAvKiBDYWNoZWRIVE1MQ29sbGVj
dGlvbi5oICovLAogCQkJCUY1NUIzRDdEMTI1MUYxMkQwMDNFRjI2OSAvKiBDaGVja2JveElucHV0
VHlwZS5jcHAgKi8sCiAJCQkJRjU1QjNEN0UxMjUxRjEyRDAwM0VGMjY5IC8qIENoZWNrYm94SW5w
dXRUeXBlLmggKi8sCiAJCQkJNEFDQkMwQkMxMjcxM0NCRDAwOTRGOUIyIC8qIENsYXNzTGlzdC5j
cHAgKi8sCiAJCQkJNEFDQkMwQkQxMjcxM0NCRDAwOTRGOUIyIC8qIENsYXNzTGlzdC5oICovLAor
CQkJCTQ2RUJFQTAxMUI3RDRENUQwMEJFNDk0MSAvKiBDb2xsZWN0aW9uVHJhdmVyc2FsLmggKi8s
CiAJCQkJOTNDNDQxRkYwRjgxM0FFMTAwQzFBNjM0IC8qIENvbGxlY3Rpb25UeXBlLmggKi8sCiAJ
CQkJQkMyOTkzNUMxN0ExREQ1ODAwQkNFODgwIC8qIENvbG9ySW5wdXRUeXBlLmNwcCAqLywKIAkJ
CQlGNTVCM0Q4MDEyNTFGMTJEMDAzRUYyNjkgLyogQ29sb3JJbnB1dFR5cGUuaCAqLywKQEAgLTE4
MjAwLDYgKzE4MjEwLDggQEAKIAkJCQk5QjUwQjFEQzE3Q0Q0QzBGMDA4N0Y2M0MgLyogRm9ybU5h
bWVkSXRlbS5oICovLAogCQkJCTk3MjA1QUFEMTIzOTI4Q0EwMEIxNzM4MCAvKiBGVFBEaXJlY3Rv
cnlEb2N1bWVudC5jcHAgKi8sCiAJCQkJOTcyMDVBQUUxMjM5MjhDQTAwQjE3MzgwIC8qIEZUUERp
cmVjdG9yeURvY3VtZW50LmggKi8sCisJCQkJODMwMDMwRjMxQjdEMzNBNjAwRUQzQUFDIC8qIEdl
bmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbi5jcHAgKi8sCisJCQkJODMwMDMwRjQxQjdEMzNBNjAw
RUQzQUFDIC8qIEdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbi5oICovLAogCQkJCUY1NUIzRDhC
MTI1MUYxMkQwMDNFRjI2OSAvKiBIaWRkZW5JbnB1dFR5cGUuY3BwICovLAogCQkJCUY1NUIzRDhD
MTI1MUYxMkQwMDNFRjI2OSAvKiBIaWRkZW5JbnB1dFR5cGUuaCAqLywKIAkJCQlCQzk3RTIzOTEw
OTE0NDk1MDAxMEQzNjEgLyogSFRNTEFsbENvbGxlY3Rpb24uY3BwICovLApAQCAtMjMxNTMsOCAr
MjMxNjUsOCBAQAogCQkJCTgzRDI2RDNDMUFGRENDNTAwMDFCMzg3MyAvKiBDaGlsZE5vZGUuaWRs
ICovLAogCQkJCUE4MTg3MjFBMDk3N0QzQzAwMDU4MjZEOSAvKiBDaGlsZE5vZGVMaXN0LmNwcCAq
LywKIAkJCQlBODE4NzIxNTA5NzdEM0MwMDA1ODI2RDkgLyogQ2hpbGROb2RlTGlzdC5oICovLAot
CQkJCUJDOTA0QjcyMEQxMDk5OEYwMDY4MEQzMiAvKiBDbGFzc05vZGVMaXN0LmNwcCAqLywKLQkJ
CQlCQzkwNEI3MzBEMTA5OThGMDA2ODBEMzIgLyogQ2xhc3NOb2RlTGlzdC5oICovLAorCQkJCTgz
MUQ0OEJFMUI3RDlBNDYwMDZERTM5QSAvKiBDbGFzc05vZGVMaXN0LmNwcCAqLywKKwkJCQk4MzFE
NDhCRjFCN0Q5QTQ2MDA2REUzOUEgLyogQ2xhc3NOb2RlTGlzdC5oICovLAogCQkJCUJDQzA2NTc3
MEYzQ0UxQjcwMENEMkQ4NyAvKiBDbGllbnRSZWN0LmNwcCAqLywKIAkJCQlCQ0MwNjU3ODBGM0NF
MUI3MDBDRDJEODcgLyogQ2xpZW50UmVjdC5oICovLAogCQkJCUJDQzA2NTc5MEYzQ0UxQjcwMENE
MkQ4NyAvKiBDbGllbnRSZWN0LmlkbCAqLywKQEAgLTI0MTcwLDcgKzI0MTgyLDYgQEAKIAkJCQkx
NEQ4MjM1MjBBRjkyQTc5MDAwNEYwNTcgLyogQ2hyb21lLmggaW4gSGVhZGVycyAqLywKIAkJCQkx
NEQ4MjQwODBBRjkzQUVCMDAwNEYwNTcgLyogQ2hyb21lQ2xpZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQk0QUNCQzBCRjEyNzEzQ0JEMDA5NEY5QjIgLyogQ2xhc3NMaXN0LmggaW4gSGVhZGVycyAq
LywKLQkJCQlCQzkwNEI3NzBEMTA5OThGMDA2ODBEMzIgLyogQ2xhc3NOb2RlTGlzdC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQkNDMDY1N0UwRjNDRTFCNzAwQ0QyRDg3IC8qIENsaWVudFJlY3QuaCBp
biBIZWFkZXJzICovLAogCQkJCUJDQzA2NTgxMEYzQ0UxQjcwMENEMkQ4NyAvKiBDbGllbnRSZWN0
TGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODUwMzFCNDAwQTQ0RUZDNzAwRjk5MkUwIC8qIENs
aXBib2FyZEV2ZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTI0NDQyLDYgKzI0NDUzLDcgQEAKIAkJ
CQk4MzcyREIzMTFBNjc4MEE4MDBDNjk3QzUgLyogRGlhZ25vc3RpY0xvZ2dpbmdSZXN1bHRUeXBl
LmggaW4gSGVhZGVycyAqLywKIAkJCQlDRUNBREZDNzE1Mzc3OEZGMDBFMzcwNjggLyogRGljdGF0
aW9uQWx0ZXJuYXRpdmUuaCBpbiBIZWFkZXJzICovLAogCQkJCUNFQ0FERkM5MTUzNzc4RkYwMEUz
NzA2OCAvKiBEaWN0YXRpb25Db21tYW5kLmggaW4gSGVhZGVycyAqLywKKwkJCQk0NkVCRUEwMjFC
N0Q0RDY1MDBCRTQ5NDEgLyogQ29sbGVjdGlvblRyYXZlcnNhbC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJRDBCRDRGNUQxNDA4ODUwRjAwNjgzOUI2IC8qIERpY3RhdGlvbkNvbW1hbmRJT1MuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTE1MTQ1QjkwMUIzQTFDRTAwMDY2MkJGNyAvKiBNZWRpYURldmljZUlu
Zm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTMxNjAyM0YwMTUzMkM0MEMwMEQ1MEZGNCAvKiBEaWN0
aW9uYXJ5LmggaW4gSGVhZGVycyAqLywKQEAgLTI0NTQ3LDYgKzI0NTU5LDcgQEAKIAkJCQk4NUU3
MTE5NjBBQzVENTM1MDA1MzI3MEYgLyogRE9NRG9jdW1lbnRUeXBlSW50ZXJuYWwuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTg1MThEQ0U5MEE5Q0M4MEQwMDkxQjdBNiAvKiBET01ET01JbXBsZW1lbnRh
dGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODVFNzExOTcwQUM1RDUzNTAwNTMyNzBGIC8qIERP
TURPTUltcGxlbWVudGF0aW9uSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAorCQkJCTgzMUQ0OEMx
MUI3RDlBNTIwMDZERTM5QSAvKiBDbGFzc05vZGVMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk1
MkNDQTlFODE1RTNGNjRDMDA1M0M3N0YgLyogRE9NRE9NTmFtZWRGbG93Q29sbGVjdGlvbi5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNTJDQ0E5RUExNUUzRjY0QzAwNTNDNzdGIC8qIERPTURPTU5hbWVk
Rmxvd0NvbGxlY3Rpb25JbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQ5QTI0NzQxNUI5
QzJFMzAwRDM0NTI3IC8qIERPTURPTVNlY3VyaXR5UG9saWN5LmggaW4gSGVhZGVycyAqLywKQEAg
LTI1NjI5LDYgKzI1NjQyLDcgQEAKIAkJCQlGREExNUVCMjEyQjAzRUUxMDAzQTU4M0EgLyogSlNQ
YW5uZXJOb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4QTlBNTg3NTExRTg0QzgxMDA4QUNGRDEg
LyogSlNQZXJmb3JtYW5jZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOEE5QTU4NzExMUU4NEMzNjAw
OEFDRkQxIC8qIEpTUGVyZm9ybWFuY2VOYXZpZ2F0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQk4
MzAwMzBGNjFCN0QzM0I1MDBFRDNBQUMgLyogR2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk4QTlBNTg4ODExRTg0RjM3MDA4QUNGRDEgLyogSlNQZXJmb3Jt
YW5jZVRpbWluZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkRFQTYyNDcxNTIxMDJGQzAwNDc5REYw
IC8qIEpTUGVyaW9kaWNXYXZlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0I3MEQ2QzA5RUIwQzdD
MDA5RDg0NjggLyogSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmggaW4gSGVhZGVycyAqLywKQEAg
LTI2OTY4LDYgKzI2OTgyLDcgQEAKIAkJCQlCMjIyN0E1MTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZH
TnVtYmVyTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjdBNTQwRDAwQkYyMjAwNzFCNzgy
IC8qIFNWR1BhaW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0E1NzBEMDBCRjIyMDA3MUI3
ODIgLyogU1ZHUGFyc2VyVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKKwkJCQk4MzAwMzBGODFC
N0QzQjc4MDBFRDNBQUMgLyogQ2FjaGVkSFRNTENvbGxlY3Rpb24uaCBpbiBIZWFkZXJzICovLAog
CQkJCTJEM0EwRTM2MTNBN0Q3NjEwMEU4NUFGMCAvKiBTVkdQYXJzaW5nRXJyb3IuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTg0QzY3ODREMTIxNDgxNDcwMEE5MjkwMiAvKiBTVkdQYXRoQmxlbmRlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJODQ3NkM5RUIxMURGNkEyOTAwNTU1QjAyIC8qIFNWR1BhdGhC
dWlsZGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTI3OTYzLDcgKzI3OTc4LDYgQEAKIAkJCQkxNEQ4
MjM4QjBBRjkyREY2MDAwNEYwNTcgLyogQ2hyb21lLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUFC
QUYyMjA4MEMwM0IxQzcwMEIwQkNGMCAvKiBDaHJvbWVNYWMubW0gaW4gU291cmNlcyAqLywKIAkJ
CQk0QUNCQzBCRTEyNzEzQ0JEMDA5NEY5QjIgLyogQ2xhc3NMaXN0LmNwcCBpbiBTb3VyY2VzICov
LAotCQkJCUJDOTA0Qjc2MEQxMDk5OEYwMDY4MEQzMiAvKiBDbGFzc05vZGVMaXN0LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUJDQzA2NTdEMEYzQ0UxQjcwMENEMkQ4NyAvKiBDbGllbnRSZWN0LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUJDQzA2NTgwMEYzQ0UxQjcwMENEMkQ4NyAvKiBDbGllbnRS
ZWN0TGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NTAzMUIzRjBBNDRFRkM3MDBGOTkyRTAg
LyogQ2xpcGJvYXJkRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yODk3MCw2ICsyODk4NCw3
IEBACiAJCQkJQTlDNkU2NEMwRDc0NjVFNzAwNjQ0MkU5IC8qIEpTRE9NUGx1Z2luQXJyYXlDdXN0
b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTlDNkU2NEQwRDc0NjVFNzAwNjQ0MkU5IC8qIEpT
RE9NUGx1Z2luQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxNzJBRjhGMTgxMUJDMzcw
MEZCQURCOSAvKiBKU0RPTVByb21pc2UuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJODMxRDQ4QzAx
QjdEOUE1MjAwNkRFMzlBIC8qIENsYXNzTm9kZUxpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QkM1QTg2QjUwQzMzNjdFODAwRUVBNjQ5IC8qIEpTRE9NU2VsZWN0aW9uLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTRBQ0JDMENBMTI3MTNEMEEwMDk0RjlCMiAvKiBKU0RPTVNldHRhYmxlVG9rZW5M
aXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUM1MTM3Q0YyMTFBNTgzNzgwMDRBREI5OSAvKiBK
U0RPTVN0cmluZ0xpc3QuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yOTI2Miw2ICsyOTI3Nyw3IEBA
CiAJCQkJMDc5NjlEQkQxN0QxNDE1MTAwN0ZGODQyIC8qIEpTUlRDU2Vzc2lvbkRlc2NyaXB0aW9u
Q2FsbGJhY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDdEMDdCMTQxODM0MTU4ODAwQUJERDND
IC8qIEpTUlRDU2Vzc2lvbkRlc2NyaXB0aW9uQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTA3OTY5REJGMTdEMTQxNTEwMDdGRjg0MiAvKiBKU1JUQ1N0YXRzQ2FsbGJhY2suY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJODMwMDMwRjUxQjdEMzNCNTAwRUQzQUFDIC8qIEdlbmVyaWNDYWNoZWRI
VE1MQ29sbGVjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzk2OURDMTE3RDE0MTUxMDA3
RkY4NDIgLyogSlNSVENTdGF0c1JlcG9ydC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzk2OURD
MzE3RDE0MTUxMDA3RkY4NDIgLyogSlNSVENTdGF0c1Jlc3BvbnNlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTA3REM1RkQ0MTdEM0VFRTkwMDk5Rjg5MCAvKiBKU1JUQ1N0YXRzUmVzcG9uc2VDdXN0
b20uY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29u
dGFpbmVyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKaW5k
ZXggYmUzYTNjMTg3YTg1YzFjN2U5Zjg2NGZkM2NkN2IxYTdkZTI2ZGE2MS4uYmU5NjRiY2ZjNGFi
ZDllNjY4ZjM0ZjBkNGIyMDM1MTE3MDZkN2U2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0NvbnRhaW5lck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJO
b2RlLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkVkaXRvci5oIgogI2luY2x1ZGUg
IkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgorI2luY2x1ZGUgIkdlbmVyaWND
YWNoZWRIVE1MQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxGb3JtQ29udHJvbHNDb2xsZWN0
aW9uLmgiCiAjaW5jbHVkZSAiSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiSFRN
TFRhYmxlUm93c0NvbGxlY3Rpb24uaCIKQEAgLTkwMiw3ICs5MDMsNyBAQCBSZWZQdHI8UmFkaW9O
b2RlTGlzdD4gQ29udGFpbmVyTm9kZTo6cmFkaW9Ob2RlTGlzdChjb25zdCBBdG9taWNTdHJpbmcm
IG5hbWUpCiAKIFJlZjxIVE1MQ29sbGVjdGlvbj4gQ29udGFpbmVyTm9kZTo6Y2hpbGRyZW4oKQog
ewotICAgIHJldHVybiBlbnN1cmVDYWNoZWRIVE1MQ29sbGVjdGlvbihOb2RlQ2hpbGRyZW4pOwor
ICAgIHJldHVybiBlbnN1cmVSYXJlRGF0YSgpLmVuc3VyZU5vZGVMaXN0cygpLmFkZENhY2hlZENv
bGxlY3Rpb248R2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uPENvbGxlY3Rpb25UeXBlVHJhaXRz
PE5vZGVDaGlsZHJlbj46OnRyYXZlcnNhbFR5cGU+PigqdGhpcywgTm9kZUNoaWxkcmVuKTsKIH0K
IAogRWxlbWVudCogQ29udGFpbmVyTm9kZTo6Zmlyc3RFbGVtZW50Q2hpbGQoKSBjb25zdApAQCAt
OTM5LDIyICs5NDAsNiBAQCB2b2lkIENvbnRhaW5lck5vZGU6OnByZXBlbmQoVmVjdG9yPE5vZGVP
clN0cmluZz4mJiBub2RlT3JTdHJpbmdWZWN0b3IsIEV4Y2VwdGlvbgogICAgIGluc2VydEJlZm9y
ZShub2RlLnJlbGVhc2UoKSwgZmlyc3RDaGlsZCgpLCBlYyk7CiB9CiAKLVJlZjxIVE1MQ29sbGVj
dGlvbj4gQ29udGFpbmVyTm9kZTo6ZW5zdXJlQ2FjaGVkSFRNTENvbGxlY3Rpb24oQ29sbGVjdGlv
blR5cGUgdHlwZSkKLXsKLSAgICBpZiAoSFRNTENvbGxlY3Rpb24qIGNvbGxlY3Rpb24gPSBjYWNo
ZWRIVE1MQ29sbGVjdGlvbih0eXBlKSkKLSAgICAgICAgcmV0dXJuICpjb2xsZWN0aW9uOwotCi0g
ICAgaWYgKHR5cGUgPT0gVGFibGVSb3dzKQotICAgICAgICByZXR1cm4gZW5zdXJlUmFyZURhdGEo
KS5lbnN1cmVOb2RlTGlzdHMoKS5hZGRDYWNoZWRDb2xsZWN0aW9uPEhUTUxUYWJsZVJvd3NDb2xs
ZWN0aW9uPihkb3duY2FzdDxIVE1MVGFibGVFbGVtZW50PigqdGhpcyksIHR5cGUpOwotICAgIGVs
c2UgaWYgKHR5cGUgPT0gU2VsZWN0T3B0aW9ucykKLSAgICAgICAgcmV0dXJuIGVuc3VyZVJhcmVE
YXRhKCkuZW5zdXJlTm9kZUxpc3RzKCkuYWRkQ2FjaGVkQ29sbGVjdGlvbjxIVE1MT3B0aW9uc0Nv
bGxlY3Rpb24+KGRvd25jYXN0PEhUTUxTZWxlY3RFbGVtZW50PigqdGhpcyksIHR5cGUpOwotICAg
IGVsc2UgaWYgKHR5cGUgPT0gRm9ybUNvbnRyb2xzKSB7Ci0gICAgICAgIEFTU0VSVChoYXNUYWdO
YW1lKEhUTUxOYW1lczo6Zm9ybVRhZykgfHwgaGFzVGFnTmFtZShIVE1MTmFtZXM6OmZpZWxkc2V0
VGFnKSk7Ci0gICAgICAgIHJldHVybiBlbnN1cmVSYXJlRGF0YSgpLmVuc3VyZU5vZGVMaXN0cygp
LmFkZENhY2hlZENvbGxlY3Rpb248SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24+KCp0aGlzLCB0
eXBlKTsKLSAgICB9Ci0gICAgcmV0dXJuIGVuc3VyZVJhcmVEYXRhKCkuZW5zdXJlTm9kZUxpc3Rz
KCkuYWRkQ2FjaGVkQ29sbGVjdGlvbjxIVE1MQ29sbGVjdGlvbj4oKnRoaXMsIHR5cGUpOwotfQot
CiBIVE1MQ29sbGVjdGlvbiogQ29udGFpbmVyTm9kZTo6Y2FjaGVkSFRNTENvbGxlY3Rpb24oQ29s
bGVjdGlvblR5cGUgdHlwZSkKIHsKICAgICByZXR1cm4gaGFzUmFyZURhdGEoKSAmJiByYXJlRGF0
YSgpLT5ub2RlTGlzdHMoKSA/IHJhcmVEYXRhKCktPm5vZGVMaXN0cygpLT5jYWNoZWRDb2xsZWN0
aW9uPEhUTUxDb2xsZWN0aW9uPih0eXBlKSA6IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5l
ck5vZGUuaAppbmRleCBkYTA2MjFkN2YwNWM2ZWFiODFmMGM1N2ExZGZmNTYwYmZlNjg5OWRlLi4w
NWIzZmNhZWQ4NDhkZGRiNjY1MTcxODQ3NWNiNzY0ZWY5NTAxMWI1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9D
b250YWluZXJOb2RlLmgKQEAgLTE2OSw3ICsxNjksNiBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBz
ZXRGaXJzdENoaWxkKE5vZGUqIGNoaWxkKSB7IG1fZmlyc3RDaGlsZCA9IGNoaWxkOyB9CiAgICAg
dm9pZCBzZXRMYXN0Q2hpbGQoTm9kZSogY2hpbGQpIHsgbV9sYXN0Q2hpbGQgPSBjaGlsZDsgfQog
Ci0gICAgUmVmPEhUTUxDb2xsZWN0aW9uPiBlbnN1cmVDYWNoZWRIVE1MQ29sbGVjdGlvbihDb2xs
ZWN0aW9uVHlwZSk7CiAgICAgSFRNTENvbGxlY3Rpb24qIGNhY2hlZEhUTUxDb2xsZWN0aW9uKENv
bGxlY3Rpb25UeXBlKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDMz
ZDcxNWQzZjEyNjY5NzM1NGRiZTMxMTJiZjU0NTZhZTA5NWQ4Y2YuLmIzNzE3ZDk3YTQxYmFmMzNl
ODdhNmQ5ODJkMDNiMDIzYjRkOWUyMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNjMs
MTIgKzYzLDEyIEBACiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKICNpbmNsdWRlICJGcmFtZUxv
YWRlckNsaWVudC5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgorI2luY2x1ZGUgIkdlbmVyaWND
YWNoZWRIVE1MQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxBbGxDb2xsZWN0aW9uLmgiCiAj
aW5jbHVkZSAiSFRNTEFuY2hvckVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MQmFzZUVsZW1lbnQu
aCIKICNpbmNsdWRlICJIVE1MQm9keUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MQ2FudmFzRWxl
bWVudC5oIgotI2luY2x1ZGUgIkhUTUxDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiSFRNTERvY3Vt
ZW50LmgiCiAjaW5jbHVkZSAiSFRNTEVsZW1lbnRGYWN0b3J5LmgiCiAjaW5jbHVkZSAiSFRNTEZv
cm1Db250cm9sRWxlbWVudC5oIgpAQCAtNDc3Miw1MCArNDc3Miw1MSBAQCBib29sIERvY3VtZW50
OjpoYXNTVkdSb290Tm9kZSgpIGNvbnN0CiAgICAgcmV0dXJuIGRvY3VtZW50RWxlbWVudCgpICYm
IGRvY3VtZW50RWxlbWVudCgpLT5oYXNUYWdOYW1lKFNWR05hbWVzOjpzdmdUYWcpOwogfQogCi1S
ZWY8SFRNTENvbGxlY3Rpb24+IERvY3VtZW50OjplbnN1cmVDYWNoZWRDb2xsZWN0aW9uKENvbGxl
Y3Rpb25UeXBlIHR5cGUpCit0ZW1wbGF0ZSA8Q29sbGVjdGlvblR5cGUgY29sbGVjdGlvblR5cGU+
CitSZWY8SFRNTENvbGxlY3Rpb24+IERvY3VtZW50OjplbnN1cmVDYWNoZWRDb2xsZWN0aW9uKCkK
IHsKLSAgICByZXR1cm4gZW5zdXJlUmFyZURhdGEoKS5lbnN1cmVOb2RlTGlzdHMoKS5hZGRDYWNo
ZWRDb2xsZWN0aW9uPEhUTUxDb2xsZWN0aW9uPigqdGhpcywgdHlwZSk7CisgICAgcmV0dXJuIGVu
c3VyZVJhcmVEYXRhKCkuZW5zdXJlTm9kZUxpc3RzKCkuYWRkQ2FjaGVkQ29sbGVjdGlvbjxHZW5l
cmljQ2FjaGVkSFRNTENvbGxlY3Rpb248Q29sbGVjdGlvblR5cGVUcmFpdHM8Y29sbGVjdGlvblR5
cGU+Ojp0cmF2ZXJzYWxUeXBlPj4oKnRoaXMsIGNvbGxlY3Rpb25UeXBlKTsKIH0KIAogUmVmPEhU
TUxDb2xsZWN0aW9uPiBEb2N1bWVudDo6aW1hZ2VzKCkKIHsKLSAgICByZXR1cm4gZW5zdXJlQ2Fj
aGVkQ29sbGVjdGlvbihEb2NJbWFnZXMpOworICAgIHJldHVybiBlbnN1cmVDYWNoZWRDb2xsZWN0
aW9uPERvY0ltYWdlcz4oKTsKIH0KIAogUmVmPEhUTUxDb2xsZWN0aW9uPiBEb2N1bWVudDo6YXBw
bGV0cygpCiB7Ci0gICAgcmV0dXJuIGVuc3VyZUNhY2hlZENvbGxlY3Rpb24oRG9jQXBwbGV0cyk7
CisgICAgcmV0dXJuIGVuc3VyZUNhY2hlZENvbGxlY3Rpb248RG9jQXBwbGV0cz4oKTsKIH0KIAog
UmVmPEhUTUxDb2xsZWN0aW9uPiBEb2N1bWVudDo6ZW1iZWRzKCkKIHsKLSAgICByZXR1cm4gZW5z
dXJlQ2FjaGVkQ29sbGVjdGlvbihEb2NFbWJlZHMpOworICAgIHJldHVybiBlbnN1cmVDYWNoZWRD
b2xsZWN0aW9uPERvY0VtYmVkcz4oKTsKIH0KIAogUmVmPEhUTUxDb2xsZWN0aW9uPiBEb2N1bWVu
dDo6cGx1Z2lucygpCiB7CiAgICAgLy8gVGhpcyBpcyBhbiBhbGlhcyBmb3IgZW1iZWRzKCkgcmVx
dWlyZWQgZm9yIHRoZSBKUyBET00gYmluZGluZ3MuCi0gICAgcmV0dXJuIGVuc3VyZUNhY2hlZENv
bGxlY3Rpb24oRG9jRW1iZWRzKTsKKyAgICByZXR1cm4gZW5zdXJlQ2FjaGVkQ29sbGVjdGlvbjxE
b2NFbWJlZHM+KCk7CiB9CiAKIFJlZjxIVE1MQ29sbGVjdGlvbj4gRG9jdW1lbnQ6OnNjcmlwdHMo
KQogewotICAgIHJldHVybiBlbnN1cmVDYWNoZWRDb2xsZWN0aW9uKERvY1NjcmlwdHMpOworICAg
IHJldHVybiBlbnN1cmVDYWNoZWRDb2xsZWN0aW9uPERvY1NjcmlwdHM+KCk7CiB9CiAKIFJlZjxI
VE1MQ29sbGVjdGlvbj4gRG9jdW1lbnQ6OmxpbmtzKCkKIHsKLSAgICByZXR1cm4gZW5zdXJlQ2Fj
aGVkQ29sbGVjdGlvbihEb2NMaW5rcyk7CisgICAgcmV0dXJuIGVuc3VyZUNhY2hlZENvbGxlY3Rp
b248RG9jTGlua3M+KCk7CiB9CiAKIFJlZjxIVE1MQ29sbGVjdGlvbj4gRG9jdW1lbnQ6OmZvcm1z
KCkKIHsKLSAgICByZXR1cm4gZW5zdXJlQ2FjaGVkQ29sbGVjdGlvbihEb2NGb3Jtcyk7CisgICAg
cmV0dXJuIGVuc3VyZUNhY2hlZENvbGxlY3Rpb248RG9jRm9ybXM+KCk7CiB9CiAKIFJlZjxIVE1M
Q29sbGVjdGlvbj4gRG9jdW1lbnQ6OmFuY2hvcnMoKQogewotICAgIHJldHVybiBlbnN1cmVDYWNo
ZWRDb2xsZWN0aW9uKERvY0FuY2hvcnMpOworICAgIHJldHVybiBlbnN1cmVDYWNoZWRDb2xsZWN0
aW9uPERvY0FuY2hvcnM+KCk7CiB9CiAKIFJlZjxIVE1MQ29sbGVjdGlvbj4gRG9jdW1lbnQ6OmFs
bCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IDgwZmU3YTQ4ZWVmMjFiNzQxMDU0MjQyMjhhNmY3
MzI2ZjZjZDRhMjcuLmU1M2JmM2UxYzZjMWVmMjA5YjMyOTMzNmYzNzJlMWY4MTBjZTlmOTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5oCkBAIC0xMTMsNyArMTEzLDYgQEAgY2xhc3MgSFRNTElGcmFtZUVs
ZW1lbnQ7CiBjbGFzcyBIVE1MSW1hZ2VFbGVtZW50OwogY2xhc3MgSFRNTE1hcEVsZW1lbnQ7CiBj
bGFzcyBIVE1MTWVkaWFFbGVtZW50OwotY2xhc3MgSFRNTE5hbWVDb2xsZWN0aW9uOwogY2xhc3Mg
SFRNTFNjcmlwdEVsZW1lbnQ7CiBjbGFzcyBIaXRUZXN0UmVxdWVzdDsKIGNsYXNzIEhpdFRlc3RS
ZXN1bHQ7CkBAIC0xMzQ1LDcgKzEzNDQsOCBAQCBwcml2YXRlOgogCiAgICAgTm9kZSogbm9kZUZy
b21Qb2ludChjb25zdCBMYXlvdXRQb2ludCYgY2xpZW50UG9pbnQsIExheW91dFBvaW50KiBsb2Nh
bFBvaW50ID0gbnVsbHB0cik7CiAKLSAgICBSZWY8SFRNTENvbGxlY3Rpb24+IGVuc3VyZUNhY2hl
ZENvbGxlY3Rpb24oQ29sbGVjdGlvblR5cGUpOworICAgIHRlbXBsYXRlIDxDb2xsZWN0aW9uVHlw
ZSBjb2xsZWN0aW9uVHlwZT4KKyAgICBSZWY8SFRNTENvbGxlY3Rpb24+IGVuc3VyZUNhY2hlZENv
bGxlY3Rpb24oKTsKIAogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAgICB2b2lkIGRpc3Bh
dGNoRnVsbFNjcmVlbkNoYW5nZU9yRXJyb3JFdmVudChEZXF1ZTxSZWZQdHI8Tm9kZT4+JiwgY29u
c3QgQXRvbWljU3RyaW5nJiBldmVudE5hbWUsIGJvb2wgc2hvdWxkTm90aWZ5TWVkaWFFbGVtZW50
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50Q2hpbGRJdGVyYXRvci5o
IGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRDaGlsZEl0ZXJhdG9yLmgKaW5kZXggOTRjZDMx
MzIyNDM0YmRhMDVjOWY1NmUxN2IwZTA2NGMyMjVlNTFjZi4uMWE5NDZiYjhmYjE5M2M2MDQ1MjA5
ZmZiZDUyY2QzNWE4OWNmZWM5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnRDaGlsZEl0ZXJhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRDaGlsZEl0
ZXJhdG9yLmgKQEAgLTQxLDYgKzQxLDcgQEAgcHVibGljOgogCiAgICAgRWxlbWVudENoaWxkSXRl
cmF0b3IoY29uc3QgQ29udGFpbmVyTm9kZSYgcGFyZW50KTsKICAgICBFbGVtZW50Q2hpbGRJdGVy
YXRvcihjb25zdCBDb250YWluZXJOb2RlJiBwYXJlbnQsIEVsZW1lbnRUeXBlKiBjdXJyZW50KTsK
KyAgICBFbGVtZW50Q2hpbGRJdGVyYXRvciYgb3BlcmF0b3ItLSgpOwogICAgIEVsZW1lbnRDaGls
ZEl0ZXJhdG9yJiBvcGVyYXRvcisrKCk7CiB9OwogCkBAIC01NSw2ICs1Niw3IEBAIHB1YmxpYzoK
IAogICAgIEVsZW1lbnRDaGlsZENvbnN0SXRlcmF0b3IoY29uc3QgQ29udGFpbmVyTm9kZSYgcGFy
ZW50KTsKICAgICBFbGVtZW50Q2hpbGRDb25zdEl0ZXJhdG9yKGNvbnN0IENvbnRhaW5lck5vZGUm
IHBhcmVudCwgY29uc3QgRWxlbWVudFR5cGUqIGN1cnJlbnQpOworICAgIEVsZW1lbnRDaGlsZENv
bnN0SXRlcmF0b3ImIG9wZXJhdG9yLS0oKTsKICAgICBFbGVtZW50Q2hpbGRDb25zdEl0ZXJhdG9y
JiBvcGVyYXRvcisrKCk7CiB9OwogCkBAIC0xMDgsNiArMTEwLDEyIEBAIGlubGluZSBFbGVtZW50
Q2hpbGRJdGVyYXRvcjxFbGVtZW50VHlwZT46OkVsZW1lbnRDaGlsZEl0ZXJhdG9yKGNvbnN0IENv
bnRhaW5lck5vCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KK2lubGluZSBF
bGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50VHlwZT4mIEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVs
ZW1lbnRUeXBlPjo6b3BlcmF0b3ItLSgpCit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEVsZW1l
bnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiY+KEVsZW1lbnRJdGVyYXRvcjxFbGVtZW50VHlw
ZT46OnRyYXZlcnNlUHJldmlvdXNTaWJsaW5nKCkpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
RWxlbWVudFR5cGU+CiBpbmxpbmUgRWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVudFR5cGU+JiBF
bGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50VHlwZT46Om9wZXJhdG9yKysoKQogewogICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxFbGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50VHlwZT4mPihFbGVt
ZW50SXRlcmF0b3I8RWxlbWVudFR5cGU+Ojp0cmF2ZXJzZU5leHRTaWJsaW5nKCkpOwpAQCAtMTI4
LDYgKzEzNiwxMyBAQCBpbmxpbmUgRWxlbWVudENoaWxkQ29uc3RJdGVyYXRvcjxFbGVtZW50VHlw
ZT46OkVsZW1lbnRDaGlsZENvbnN0SXRlcmF0b3IoY29uc3QgQwogfQogCiB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgRWxlbWVudFR5cGU+CitpbmxpbmUgRWxlbWVudENoaWxkQ29uc3RJdGVyYXRvcjxFbGVt
ZW50VHlwZT4mIEVsZW1lbnRDaGlsZENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+OjpvcGVyYXRv
ci0tKCkKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RWxlbWVudENoaWxkQ29uc3RJdGVyYXRv
cjxFbGVtZW50VHlwZT4mPihFbGVtZW50Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT46OnRyYXZl
cnNlUHJldmlvdXNTaWJsaW5nKCkpOworfQorCisKK3RlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50
VHlwZT4KIGlubGluZSBFbGVtZW50Q2hpbGRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiYgRWxl
bWVudENoaWxkQ29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT46Om9wZXJhdG9yKysoKQogewogICAg
IHJldHVybiBzdGF0aWNfY2FzdDxFbGVtZW50Q2hpbGRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBl
PiY+KEVsZW1lbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6dHJhdmVyc2VOZXh0U2libGlu
ZygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9MaXZlTm9kZUxpc3QuaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9MaXZlTm9kZUxpc3QuaAppbmRleCAxOTZlNTBiYjgyYmViY2NmNzI2
NGI0NjNhMmVlZTYzZWE2ZDEwYWJiLi4wNTI1OThmN2U5YjdjN2FhODFiNWFhNzIxMjA5ZTlhOTEz
NDE4ODc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTGl2ZU5vZGVMaXN0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0xpdmVOb2RlTGlzdC5oCkBAIC0yNSw2ICsyNSw3IEBACiAj
ZGVmaW5lIExpdmVOb2RlTGlzdF9oCiAKICNpbmNsdWRlICJDb2xsZWN0aW9uSW5kZXhDYWNoZS5o
IgorI2luY2x1ZGUgIkNvbGxlY3Rpb25UcmF2ZXJzYWwuaCIKICNpbmNsdWRlICJDb2xsZWN0aW9u
VHlwZS5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRWxlbWVudERlc2NlbmRh
bnRJdGVyYXRvci5oIgpAQCAtODAsMjUgKzgxLDI5IEBAIGNsYXNzIENhY2hlZExpdmVOb2RlTGlz
dCA6IHB1YmxpYyBMaXZlTm9kZUxpc3QgewogcHVibGljOgogICAgIHZpcnR1YWwgfkNhY2hlZExp
dmVOb2RlTGlzdCgpOwogCi0gICAgdmlydHVhbCB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCBvdmVy
cmlkZSBmaW5hbDsKLSAgICB2aXJ0dWFsIE5vZGUqIGl0ZW0odW5zaWduZWQgb2Zmc2V0KSBjb25z
dCBvdmVycmlkZSBmaW5hbDsKKyAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCBvdmVycmlkZSBm
aW5hbCB7IHJldHVybiBtX2luZGV4Q2FjaGUubm9kZUNvdW50KG5vZGVMaXN0KCkpOyB9CisgICAg
Tm9kZSogaXRlbSh1bnNpZ25lZCBvZmZzZXQpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJu
IG1faW5kZXhDYWNoZS5ub2RlQXQobm9kZUxpc3QoKSwgb2Zmc2V0KTsgfQogCiAgICAgLy8gRm9y
IENvbGxlY3Rpb25JbmRleENhY2hlCi0gICAgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciBjb2xs
ZWN0aW9uQmVnaW4oKSBjb25zdDsKLSAgICBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yIGNvbGxl
Y3Rpb25MYXN0KCkgY29uc3Q7CisgICAgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciBjb2xsZWN0
aW9uQmVnaW4oKSBjb25zdCB7IHJldHVybiBUcmF2ZXJzYWw6OmJlZ2luKG5vZGVMaXN0KCksIHJv
b3ROb2RlKCkpOyB9CisgICAgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciBjb2xsZWN0aW9uTGFz
dCgpIGNvbnN0IHsgcmV0dXJuIFRyYXZlcnNhbDo6bGFzdChub2RlTGlzdCgpLCByb290Tm9kZSgp
KTsgfQogICAgIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IgY29sbGVjdGlvbkVuZCgpIGNvbnN0
IHsgcmV0dXJuIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IoKTsgfQotICAgIHZvaWQgY29sbGVj
dGlvblRyYXZlcnNlRm9yd2FyZChFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yJiwgdW5zaWduZWQg
Y291bnQsIHVuc2lnbmVkJiB0cmF2ZXJzZWRDb3VudCkgY29uc3Q7Ci0gICAgdm9pZCBjb2xsZWN0
aW9uVHJhdmVyc2VCYWNrd2FyZChFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yJiwgdW5zaWduZWQg
Y291bnQpIGNvbnN0OworICAgIHZvaWQgY29sbGVjdGlvblRyYXZlcnNlRm9yd2FyZChFbGVtZW50
RGVzY2VuZGFudEl0ZXJhdG9yJiBjdXJyZW50LCB1bnNpZ25lZCBjb3VudCwgdW5zaWduZWQmIHRy
YXZlcnNlZENvdW50KSBjb25zdCB7IFRyYXZlcnNhbDo6dHJhdmVyc2VGb3J3YXJkKG5vZGVMaXN0
KCksIGN1cnJlbnQsIGNvdW50LCB0cmF2ZXJzZWRDb3VudCk7IH0KKyAgICB2b2lkIGNvbGxlY3Rp
b25UcmF2ZXJzZUJhY2t3YXJkKEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3ImIGN1cnJlbnQsIHVu
c2lnbmVkIGNvdW50KSBjb25zdCB7IFRyYXZlcnNhbDo6dHJhdmVyc2VCYWNrd2FyZChub2RlTGlz
dCgpLCBjdXJyZW50LCBjb3VudCk7IH0KICAgICBib29sIGNvbGxlY3Rpb25DYW5UcmF2ZXJzZUJh
Y2t3YXJkKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZvaWQgd2lsbFZhbGlkYXRlSW5k
ZXhDYWNoZSgpIGNvbnN0OwogCiAgICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVDYWNoZShEb2N1
bWVudCYpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOwotICAgIHZpcnR1YWwgc2l6ZV90IG1lbW9yeUNv
c3QoKSBjb25zdCBvdmVycmlkZSBmaW5hbDsKKyAgICB2aXJ0dWFsIHNpemVfdCBtZW1vcnlDb3N0
KCkgY29uc3Qgb3ZlcnJpZGUgZmluYWwgeyByZXR1cm4gbV9pbmRleENhY2hlLm1lbW9yeUNvc3Qo
KTsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgQ2FjaGVkTGl2ZU5vZGVMaXN0KENvbnRhaW5lck5vZGUm
IHJvb3ROb2RlLCBOb2RlTGlzdEludmFsaWRhdGlvblR5cGUpOwogCiBwcml2YXRlOgorICAgIHVz
aW5nIFRyYXZlcnNhbCA9IENvbGxlY3Rpb25UcmF2ZXJzYWw8Q29sbGVjdGlvblRyYXZlcnNhbFR5
cGU6OkRlc2NlbmRhbnRzPjsKKyAgICBOb2RlTGlzdFR5cGUmIG5vZGVMaXN0KCkgeyByZXR1cm4g
c3RhdGljX2Nhc3Q8Tm9kZUxpc3RUeXBlJj4oKnRoaXMpOyB9CisgICAgY29uc3QgTm9kZUxpc3RU
eXBlJiBub2RlTGlzdCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IE5vZGVMaXN0
VHlwZSY+KCp0aGlzKTsgfQorCiAgICAgQ29udGFpbmVyTm9kZSYgcm9vdE5vZGUoKSBjb25zdDsK
IAogICAgIG11dGFibGUgQ29sbGVjdGlvbkluZGV4Q2FjaGU8Tm9kZUxpc3RUeXBlLCBFbGVtZW50
RGVzY2VuZGFudEl0ZXJhdG9yPiBtX2luZGV4Q2FjaGU7CkBAIC0xMzEsMTE1ICsxMzYsMzkgQEAg
QUxXQVlTX0lOTElORSBib29sIHNob3VsZEludmFsaWRhdGVUeXBlT25BdHRyaWJ1dGVDaGFuZ2Uo
Tm9kZUxpc3RJbnZhbGlkYXRpb25UeXAKIHRlbXBsYXRlIDxjbGFzcyBOb2RlTGlzdFR5cGU+CiBD
YWNoZWRMaXZlTm9kZUxpc3Q8Tm9kZUxpc3RUeXBlPjo6Q2FjaGVkTGl2ZU5vZGVMaXN0KENvbnRh
aW5lck5vZGUmIG93bmVyTm9kZSwgTm9kZUxpc3RJbnZhbGlkYXRpb25UeXBlIGludmFsaWRhdGlv
blR5cGUpCiAgICAgOiBMaXZlTm9kZUxpc3Qob3duZXJOb2RlLCBpbnZhbGlkYXRpb25UeXBlKQot
ICAgICwgbV9pbmRleENhY2hlKHN0YXRpY19jYXN0PE5vZGVMaXN0VHlwZSY+KCp0aGlzKSkKKyAg
ICAsIG1faW5kZXhDYWNoZShub2RlTGlzdCgpKQogewogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgTm9k
ZUxpc3RUeXBlPgogQ2FjaGVkTGl2ZU5vZGVMaXN0PE5vZGVMaXN0VHlwZT46On5DYWNoZWRMaXZl
Tm9kZUxpc3QoKQogewotICAgIGF1dG8mIG5vZGVMaXN0ID0gc3RhdGljX2Nhc3Q8Y29uc3QgTm9k
ZUxpc3RUeXBlJj4oKnRoaXMpOwotICAgIGlmIChtX2luZGV4Q2FjaGUuaGFzVmFsaWRDYWNoZShu
b2RlTGlzdCkpCisgICAgaWYgKG1faW5kZXhDYWNoZS5oYXNWYWxpZENhY2hlKG5vZGVMaXN0KCkp
KQogICAgICAgICBkb2N1bWVudCgpLnVucmVnaXN0ZXJOb2RlTGlzdEZvckludmFsaWRhdGlvbigq
dGhpcyk7CiB9CiAKIHRlbXBsYXRlIDxjbGFzcyBOb2RlTGlzdFR5cGU+CiBpbmxpbmUgQ29udGFp
bmVyTm9kZSYgQ2FjaGVkTGl2ZU5vZGVMaXN0PE5vZGVMaXN0VHlwZT46OnJvb3ROb2RlKCkgY29u
c3QKIHsKLSAgICBpZiAoc3RhdGljX2Nhc3Q8Y29uc3QgTm9kZUxpc3RUeXBlJj4oKnRoaXMpLmlz
Um9vdGVkQXREb2N1bWVudCgpICYmIG93bmVyTm9kZSgpLmluRG9jdW1lbnQoKSkKKyAgICBpZiAo
bm9kZUxpc3QoKS5pc1Jvb3RlZEF0RG9jdW1lbnQoKSAmJiBvd25lck5vZGUoKS5pbkRvY3VtZW50
KCkpCiAgICAgICAgIHJldHVybiBvd25lck5vZGUoKS5kb2N1bWVudCgpOwogCiAgICAgcmV0dXJu
IG93bmVyTm9kZSgpOwogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgTm9kZUxpc3RUeXBlPgotRWxlbWVu
dERlc2NlbmRhbnRJdGVyYXRvciBDYWNoZWRMaXZlTm9kZUxpc3Q8Tm9kZUxpc3RUeXBlPjo6Y29s
bGVjdGlvbkJlZ2luKCkgY29uc3QKLXsKLSAgICBhdXRvJiBub2RlTGlzdCA9IHN0YXRpY19jYXN0
PGNvbnN0IE5vZGVMaXN0VHlwZSY+KCp0aGlzKTsKLSAgICBhdXRvIGRlc2NlbmRhbnRzID0gZWxl
bWVudERlc2NlbmRhbnRzKHJvb3ROb2RlKCkpOwotICAgIGF1dG8gZW5kID0gZGVzY2VuZGFudHMu
ZW5kKCk7Ci0gICAgZm9yIChhdXRvIGl0ID0gZGVzY2VuZGFudHMuYmVnaW4oKTsgaXQgIT0gZW5k
OyArK2l0KSB7Ci0gICAgICAgIGlmIChub2RlTGlzdC5lbGVtZW50TWF0Y2hlcygqaXQpKQotICAg
ICAgICAgICAgcmV0dXJuIGl0OwotICAgIH0KLSAgICByZXR1cm4gZW5kOwotfQotCi10ZW1wbGF0
ZSA8Y2xhc3MgTm9kZUxpc3RUeXBlPgotRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciBDYWNoZWRM
aXZlTm9kZUxpc3Q8Tm9kZUxpc3RUeXBlPjo6Y29sbGVjdGlvbkxhc3QoKSBjb25zdAotewotICAg
IGF1dG8mIG5vZGVMaXN0ID0gc3RhdGljX2Nhc3Q8Y29uc3QgTm9kZUxpc3RUeXBlJj4oKnRoaXMp
OwotICAgIGF1dG8gZGVzY2VuZGFudHMgPSBlbGVtZW50RGVzY2VuZGFudHMocm9vdE5vZGUoKSk7
Ci0gICAgYXV0byBlbmQgPSBkZXNjZW5kYW50cy5lbmQoKTsKLSAgICBmb3IgKGF1dG8gaXQgPSBk
ZXNjZW5kYW50cy5sYXN0KCk7IGl0ICE9IGVuZDsgLS1pdCkgewotICAgICAgICBpZiAobm9kZUxp
c3QuZWxlbWVudE1hdGNoZXMoKml0KSkKLSAgICAgICAgICAgIHJldHVybiBpdDsKLSAgICB9Ci0g
ICAgcmV0dXJuIGVuZDsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIE5vZGVMaXN0VHlwZT4KLXZvaWQg
Q2FjaGVkTGl2ZU5vZGVMaXN0PE5vZGVMaXN0VHlwZT46OmNvbGxlY3Rpb25UcmF2ZXJzZUZvcndh
cmQoRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciYgY3VycmVudCwgdW5zaWduZWQgY291bnQsIHVu
c2lnbmVkJiB0cmF2ZXJzZWRDb3VudCkgY29uc3QKLXsKLSAgICBhdXRvJiBub2RlTGlzdCA9IHN0
YXRpY19jYXN0PGNvbnN0IE5vZGVMaXN0VHlwZSY+KCp0aGlzKTsKLSAgICBBU1NFUlQobm9kZUxp
c3QuZWxlbWVudE1hdGNoZXMoKmN1cnJlbnQpKTsKLSAgICBhdXRvIGVuZCA9IGNvbGxlY3Rpb25F
bmQoKTsKLSAgICBmb3IgKHRyYXZlcnNlZENvdW50ID0gMDsgdHJhdmVyc2VkQ291bnQgPCBjb3Vu
dDsgKyt0cmF2ZXJzZWRDb3VudCkgewotICAgICAgICBkbyB7Ci0gICAgICAgICAgICArK2N1cnJl
bnQ7Ci0gICAgICAgICAgICBpZiAoY3VycmVudCA9PSBlbmQpCi0gICAgICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICB9IHdoaWxlICghbm9kZUxpc3QuZWxlbWVudE1hdGNoZXMoKmN1cnJlbnQp
KTsKLSAgICB9Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBOb2RlTGlzdFR5cGU+Ci12b2lkIENhY2hl
ZExpdmVOb2RlTGlzdDxOb2RlTGlzdFR5cGU+Ojpjb2xsZWN0aW9uVHJhdmVyc2VCYWNrd2FyZChF
bGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yJiBjdXJyZW50LCB1bnNpZ25lZCBjb3VudCkgY29uc3QK
LXsKLSAgICBhdXRvJiBub2RlTGlzdCA9IHN0YXRpY19jYXN0PGNvbnN0IE5vZGVMaXN0VHlwZSY+
KCp0aGlzKTsKLSAgICBBU1NFUlQobm9kZUxpc3QuZWxlbWVudE1hdGNoZXMoKmN1cnJlbnQpKTsK
LSAgICBhdXRvIGVuZCA9IGNvbGxlY3Rpb25FbmQoKTsKLSAgICBmb3IgKDsgY291bnQ7IC0tY291
bnQpIHsKLSAgICAgICAgZG8gewotICAgICAgICAgICAgLS1jdXJyZW50OwotICAgICAgICAgICAg
aWYgKGN1cnJlbnQgPT0gZW5kKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfSB3
aGlsZSAoIW5vZGVMaXN0LmVsZW1lbnRNYXRjaGVzKCpjdXJyZW50KSk7Ci0gICAgfQotfQotCi10
ZW1wbGF0ZSA8Y2xhc3MgTm9kZUxpc3RUeXBlPgogdm9pZCBDYWNoZWRMaXZlTm9kZUxpc3Q8Tm9k
ZUxpc3RUeXBlPjo6d2lsbFZhbGlkYXRlSW5kZXhDYWNoZSgpIGNvbnN0CiB7Ci0gICAgZG9jdW1l
bnQoKS5yZWdpc3Rlck5vZGVMaXN0Rm9ySW52YWxpZGF0aW9uKGNvbnN0X2Nhc3Q8Tm9kZUxpc3RU
eXBlJj4oc3RhdGljX2Nhc3Q8Y29uc3QgTm9kZUxpc3RUeXBlJj4oKnRoaXMpKSk7CisgICAgZG9j
dW1lbnQoKS5yZWdpc3Rlck5vZGVMaXN0Rm9ySW52YWxpZGF0aW9uKGNvbnN0X2Nhc3Q8Q2FjaGVk
TGl2ZU5vZGVMaXN0PE5vZGVMaXN0VHlwZT4mPigqdGhpcykpOwogfQogCiB0ZW1wbGF0ZSA8Y2xh
c3MgTm9kZUxpc3RUeXBlPgogdm9pZCBDYWNoZWRMaXZlTm9kZUxpc3Q8Tm9kZUxpc3RUeXBlPjo6
aW52YWxpZGF0ZUNhY2hlKERvY3VtZW50JiBkb2N1bWVudCkgY29uc3QKIHsKLSAgICBhdXRvJiBu
b2RlTGlzdCA9IHN0YXRpY19jYXN0PGNvbnN0IE5vZGVMaXN0VHlwZSY+KCp0aGlzKTsKLSAgICBp
ZiAoIW1faW5kZXhDYWNoZS5oYXNWYWxpZENhY2hlKG5vZGVMaXN0KSkKKyAgICBpZiAoIW1faW5k
ZXhDYWNoZS5oYXNWYWxpZENhY2hlKG5vZGVMaXN0KCkpKQogICAgICAgICByZXR1cm47Ci0gICAg
ZG9jdW1lbnQudW5yZWdpc3Rlck5vZGVMaXN0Rm9ySW52YWxpZGF0aW9uKGNvbnN0X2Nhc3Q8Tm9k
ZUxpc3RUeXBlJj4obm9kZUxpc3QpKTsKLSAgICBtX2luZGV4Q2FjaGUuaW52YWxpZGF0ZShub2Rl
TGlzdCk7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBOb2RlTGlzdFR5cGU+Ci11bnNpZ25lZCBDYWNo
ZWRMaXZlTm9kZUxpc3Q8Tm9kZUxpc3RUeXBlPjo6bGVuZ3RoKCkgY29uc3QKLXsKLSAgICByZXR1
cm4gbV9pbmRleENhY2hlLm5vZGVDb3VudChzdGF0aWNfY2FzdDxjb25zdCBOb2RlTGlzdFR5cGUm
PigqdGhpcykpOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgTm9kZUxpc3RUeXBlPgotTm9kZSogQ2Fj
aGVkTGl2ZU5vZGVMaXN0PE5vZGVMaXN0VHlwZT46Oml0ZW0odW5zaWduZWQgb2Zmc2V0KSBjb25z
dAotewotICAgIHJldHVybiBtX2luZGV4Q2FjaGUubm9kZUF0KHN0YXRpY19jYXN0PGNvbnN0IE5v
ZGVMaXN0VHlwZSY+KCp0aGlzKSwgb2Zmc2V0KTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIE5vZGVM
aXN0VHlwZT4KLXNpemVfdCBDYWNoZWRMaXZlTm9kZUxpc3Q8Tm9kZUxpc3RUeXBlPjo6bWVtb3J5
Q29zdCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1faW5kZXhDYWNoZS5tZW1vcnlDb3N0KCk7Cisg
ICAgZG9jdW1lbnQudW5yZWdpc3Rlck5vZGVMaXN0Rm9ySW52YWxpZGF0aW9uKGNvbnN0X2Nhc3Q8
Tm9kZUxpc3RUeXBlJj4obm9kZUxpc3QoKSkpOworICAgIG1faW5kZXhDYWNoZS5pbnZhbGlkYXRl
KG5vZGVMaXN0KCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0NhY2hlZEhUTUxDb2xsZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0NhY2hlZEhUTUxDb2xsZWN0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWQzMWU3MDVhMzQ2ZGU0
YmI2NDAzMGI3NmU4MGFiZTIwZWJhNDNhOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvQ2FjaGVkSFRNTENvbGxlY3Rpb24uaApAQCAtMCwwICsxLDE2NiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZm5kZWYgQ2FjaGVkSFRNTENvbGxlY3Rpb25faAorI2RlZmluZSBDYWNoZWRIVE1M
Q29sbGVjdGlvbl9oCisKKyNpbmNsdWRlICJDb2xsZWN0aW9uVHJhdmVyc2FsLmgiCisjaW5jbHVk
ZSAiSFRNTENvbGxlY3Rpb24uaCIKKyNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBIVE1MQ29sbGVjdGlvbkNsYXNzLCBD
b2xsZWN0aW9uVHJhdmVyc2FsVHlwZSB0cmF2ZXJzYWxUeXBlPgorY2xhc3MgQ2FjaGVkSFRNTENv
bGxlY3Rpb24gOiBwdWJsaWMgSFRNTENvbGxlY3Rpb24geworcHVibGljOgorICAgIHVzaW5nIFRy
YXZlcnNhbCA9IENvbGxlY3Rpb25UcmF2ZXJzYWw8dHJhdmVyc2FsVHlwZT47CisgICAgdXNpbmcg
SXRlcmF0b3JUeXBlID0gdHlwZW5hbWUgVHJhdmVyc2FsOjpJdGVyYXRvclR5cGU7CisKKyAgICBD
YWNoZWRIVE1MQ29sbGVjdGlvbihDb250YWluZXJOb2RlJiBiYXNlLCBDb2xsZWN0aW9uVHlwZSk7
CisKKyAgICB2aXJ0dWFsIH5DYWNoZWRIVE1MQ29sbGVjdGlvbigpOworCisgICAgdmlydHVhbCB1
bnNpZ25lZCBsZW5ndGgoKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiBtX2luZGV4Q2Fj
aGUubm9kZUNvdW50KGNvbGxlY3Rpb24oKSk7IH0KKyAgICB2aXJ0dWFsIEVsZW1lbnQqIGl0ZW0o
dW5zaWduZWQgb2Zmc2V0KSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiBtX2luZGV4Q2Fj
aGUubm9kZUF0KGNvbGxlY3Rpb24oKSwgb2Zmc2V0KTsgfQorICAgIHZpcnR1YWwgRWxlbWVudCog
bmFtZWRJdGVtKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkgY29uc3Qgb3ZlcnJpZGU7CisgICAg
dmlydHVhbCBzaXplX3QgbWVtb3J5Q29zdCgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJu
IG1faW5kZXhDYWNoZS5tZW1vcnlDb3N0KCkgKyBIVE1MQ29sbGVjdGlvbjo6bWVtb3J5Q29zdCgp
OyB9CisKKyAgICAvLyBGb3IgQ29sbGVjdGlvbkluZGV4Q2FjaGU7IGRvIG5vdCB1c2UgZWxzZXdo
ZXJlLgorICAgIEl0ZXJhdG9yVHlwZSBjb2xsZWN0aW9uQmVnaW4oKSBjb25zdCB7IHJldHVybiBU
cmF2ZXJzYWw6OmJlZ2luKGNvbGxlY3Rpb24oKSwgcm9vdE5vZGUoKSk7IH0KKyAgICBJdGVyYXRv
clR5cGUgY29sbGVjdGlvbkxhc3QoKSBjb25zdCB7IHJldHVybiBUcmF2ZXJzYWw6Omxhc3QoY29s
bGVjdGlvbigpLCByb290Tm9kZSgpKTsgfQorICAgIEl0ZXJhdG9yVHlwZSBjb2xsZWN0aW9uRW5k
KCkgY29uc3QgeyByZXR1cm4gVHJhdmVyc2FsOjplbmQocm9vdE5vZGUoKSk7IH0KKyAgICB2b2lk
IGNvbGxlY3Rpb25UcmF2ZXJzZUZvcndhcmQoSXRlcmF0b3JUeXBlJiBjdXJyZW50LCB1bnNpZ25l
ZCBjb3VudCwgdW5zaWduZWQmIHRyYXZlcnNlZENvdW50KSBjb25zdCB7IFRyYXZlcnNhbDo6dHJh
dmVyc2VGb3J3YXJkKGNvbGxlY3Rpb24oKSwgY3VycmVudCwgY291bnQsIHRyYXZlcnNlZENvdW50
KTsgfQorICAgIHZvaWQgY29sbGVjdGlvblRyYXZlcnNlQmFja3dhcmQoSXRlcmF0b3JUeXBlJiBj
dXJyZW50LCB1bnNpZ25lZCBjb3VudCkgY29uc3QgeyBUcmF2ZXJzYWw6OnRyYXZlcnNlQmFja3dh
cmQoY29sbGVjdGlvbigpLCBjdXJyZW50LCBjb3VudCk7IH0KKyAgICBib29sIGNvbGxlY3Rpb25D
YW5UcmF2ZXJzZUJhY2t3YXJkKCkgY29uc3QgeyByZXR1cm4gdHJhdmVyc2FsVHlwZSAhPSBDb2xs
ZWN0aW9uVHJhdmVyc2FsVHlwZTo6Q3VzdG9tRm9yd2FyZE9ubHk7IH0KKyAgICB2b2lkIHdpbGxW
YWxpZGF0ZUluZGV4Q2FjaGUoKSBjb25zdDsKKworICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRl
Q2FjaGUoRG9jdW1lbnQmKSBvdmVycmlkZTsKKworICAgIGJvb2wgZWxlbWVudE1hdGNoZXMoRWxl
bWVudCYpIGNvbnN0OworCitwcml2YXRlOgorICAgIEhUTUxDb2xsZWN0aW9uQ2xhc3MmIGNvbGxl
Y3Rpb24oKSB7IHJldHVybiBzdGF0aWNfY2FzdDxIVE1MQ29sbGVjdGlvbkNsYXNzJj4oKnRoaXMp
OyB9CisgICAgY29uc3QgSFRNTENvbGxlY3Rpb25DbGFzcyYgY29sbGVjdGlvbigpIGNvbnN0IHsg
cmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEhUTUxDb2xsZWN0aW9uQ2xhc3MmPigqdGhpcyk7IH0K
KworICAgIG11dGFibGUgQ29sbGVjdGlvbkluZGV4Q2FjaGU8SFRNTENvbGxlY3Rpb25DbGFzcywg
SXRlcmF0b3JUeXBlPiBtX2luZGV4Q2FjaGU7Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgSFRN
TENvbGxlY3Rpb25DbGFzcywgQ29sbGVjdGlvblRyYXZlcnNhbFR5cGUgdHJhdmVyc2FsVHlwZT4K
K0NhY2hlZEhUTUxDb2xsZWN0aW9uPEhUTUxDb2xsZWN0aW9uQ2xhc3MsIHRyYXZlcnNhbFR5cGU+
OjpDYWNoZWRIVE1MQ29sbGVjdGlvbihDb250YWluZXJOb2RlJiBiYXNlLCBDb2xsZWN0aW9uVHlw
ZSBjb2xsZWN0aW9uVHlwZSkKKyAgICA6IEhUTUxDb2xsZWN0aW9uKGJhc2UsIGNvbGxlY3Rpb25U
eXBlKQorICAgICwgbV9pbmRleENhY2hlKGNvbGxlY3Rpb24oKSkKK3sgfQorCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgSFRNTENvbGxlY3Rpb25DbGFzcywgQ29sbGVjdGlvblRyYXZlcnNhbFR5cGUgdHJh
dmVyc2FsVHlwZT4KK0NhY2hlZEhUTUxDb2xsZWN0aW9uPEhUTUxDb2xsZWN0aW9uQ2xhc3MsIHRy
YXZlcnNhbFR5cGU+Ojp+Q2FjaGVkSFRNTENvbGxlY3Rpb24oKQoreworICAgIGlmIChtX2luZGV4
Q2FjaGUuaGFzVmFsaWRDYWNoZShjb2xsZWN0aW9uKCkpKQorICAgICAgICBkb2N1bWVudCgpLnVu
cmVnaXN0ZXJDb2xsZWN0aW9uKCp0aGlzKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIEhUTUxD
b2xsZWN0aW9uQ2xhc3MsIENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlIHRyYXZlcnNhbFR5cGU+Cit2
b2lkIENhY2hlZEhUTUxDb2xsZWN0aW9uPEhUTUxDb2xsZWN0aW9uQ2xhc3MsIHRyYXZlcnNhbFR5
cGU+Ojp3aWxsVmFsaWRhdGVJbmRleENhY2hlKCkgY29uc3QKK3sKKyAgICBkb2N1bWVudCgpLnJl
Z2lzdGVyQ29sbGVjdGlvbihjb25zdF9jYXN0PENhY2hlZEhUTUxDb2xsZWN0aW9uPEhUTUxDb2xs
ZWN0aW9uQ2xhc3MsIHRyYXZlcnNhbFR5cGU+Jj4oKnRoaXMpKTsKK30KKwordGVtcGxhdGUgPHR5
cGVuYW1lIEhUTUxDb2xsZWN0aW9uQ2xhc3MsIENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlIHRyYXZl
cnNhbFR5cGU+Cit2b2lkIENhY2hlZEhUTUxDb2xsZWN0aW9uPEhUTUxDb2xsZWN0aW9uQ2xhc3Ms
IHRyYXZlcnNhbFR5cGU+OjppbnZhbGlkYXRlQ2FjaGUoRG9jdW1lbnQmIGRvY3VtZW50KQorewor
ICAgIEhUTUxDb2xsZWN0aW9uOjppbnZhbGlkYXRlQ2FjaGUoZG9jdW1lbnQpOworICAgIGlmICht
X2luZGV4Q2FjaGUuaGFzVmFsaWRDYWNoZShjb2xsZWN0aW9uKCkpKSB7CisgICAgICAgIGRvY3Vt
ZW50LnVucmVnaXN0ZXJDb2xsZWN0aW9uKCp0aGlzKTsKKyAgICAgICAgbV9pbmRleENhY2hlLmlu
dmFsaWRhdGUoY29sbGVjdGlvbigpKTsKKyAgICB9Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBI
VE1MQ29sbGVjdGlvbkNsYXNzLCBDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZSB0cmF2ZXJzYWxUeXBl
PgorYm9vbCBDYWNoZWRIVE1MQ29sbGVjdGlvbjxIVE1MQ29sbGVjdGlvbkNsYXNzLCB0cmF2ZXJz
YWxUeXBlPjo6ZWxlbWVudE1hdGNoZXMoRWxlbWVudCYpIGNvbnN0Cit7CisgICAgLy8gV2Ugc2hv
dWxkIGNhbGwgdGhlIGVsZW1lbnRNYXRjaGVzKCkgbWV0aG9kIGRpcmVjdGx5IG9uIHRoZSBzdWJj
bGFzcyBpbnN0ZWFkIGZvciBwZXJmb3JtYW5jZS4KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3N0YXRpYyBpbmxpbmUgYm9vbCBuYW1lU2hvdWxkQmVW
aXNpYmxlSW5Eb2N1bWVudEFsbChIVE1MRWxlbWVudCYgZWxlbWVudCkKK3sKKyAgICAvLyBUaGUg
ZG9jdW1lbnQuYWxsIGNvbGxlY3Rpb24gcmV0dXJucyBvbmx5IGNlcnRhaW4gdHlwZXMgb2YgZWxl
bWVudHMgYnkgbmFtZSwKKyAgICAvLyBhbHRob3VnaCBpdCByZXR1cm5zIGFueSB0eXBlIG9mIGVs
ZW1lbnQgYnkgaWQuCisgICAgcmV0dXJuIGVsZW1lbnQuaGFzVGFnTmFtZShIVE1MTmFtZXM6OmFw
cGxldFRhZykKKyAgICAgICAgfHwgZWxlbWVudC5oYXNUYWdOYW1lKEhUTUxOYW1lczo6ZW1iZWRU
YWcpCisgICAgICAgIHx8IGVsZW1lbnQuaGFzVGFnTmFtZShIVE1MTmFtZXM6OmZvcm1UYWcpCisg
ICAgICAgIHx8IGVsZW1lbnQuaGFzVGFnTmFtZShIVE1MTmFtZXM6OmltZ1RhZykKKyAgICAgICAg
fHwgZWxlbWVudC5oYXNUYWdOYW1lKEhUTUxOYW1lczo6aW5wdXRUYWcpCisgICAgICAgIHx8IGVs
ZW1lbnQuaGFzVGFnTmFtZShIVE1MTmFtZXM6Om9iamVjdFRhZykKKyAgICAgICAgfHwgZWxlbWVu
dC5oYXNUYWdOYW1lKEhUTUxOYW1lczo6c2VsZWN0VGFnKTsKK30KKworc3RhdGljIGlubGluZSBi
b29sIG5hbWVTaG91bGRCZVZpc2libGVJbkRvY3VtZW50QWxsKEVsZW1lbnQmIGVsZW1lbnQpCit7
CisgICAgcmV0dXJuIGlzPEhUTUxFbGVtZW50PihlbGVtZW50KSAmJiBuYW1lU2hvdWxkQmVWaXNp
YmxlSW5Eb2N1bWVudEFsbChkb3duY2FzdDxIVE1MRWxlbWVudD4oZWxlbWVudCkpOworfQorCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgSFRNTENvbGxlY3Rpb25DbGFzcywgQ29sbGVjdGlvblRyYXZlcnNh
bFR5cGUgdHJhdmVyc2FsVHlwZT4KK0VsZW1lbnQqIENhY2hlZEhUTUxDb2xsZWN0aW9uPEhUTUxD
b2xsZWN0aW9uQ2xhc3MsIHRyYXZlcnNhbFR5cGU+OjpuYW1lZEl0ZW0oY29uc3QgQXRvbWljU3Ry
aW5nJiBuYW1lKSBjb25zdAoreworICAgIC8vIGh0dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20vd29y
a3Nob3AvYXV0aG9yL2RodG1sL3JlZmVyZW5jZS9tZXRob2RzL25hbWVkaXRlbS5hc3AKKyAgICAv
LyBUaGlzIG1ldGhvZCBmaXJzdCBzZWFyY2hlcyBmb3IgYW4gb2JqZWN0IHdpdGggYSBtYXRjaGlu
ZyBpZAorICAgIC8vIGF0dHJpYnV0ZS4gSWYgYSBtYXRjaCBpcyBub3QgZm91bmQsIHRoZSBtZXRo
b2QgdGhlbiBzZWFyY2hlcyBmb3IgYW4KKyAgICAvLyBvYmplY3Qgd2l0aCBhIG1hdGNoaW5nIG5h
bWUgYXR0cmlidXRlLCBidXQgb25seSBvbiB0aG9zZSBlbGVtZW50cworICAgIC8vIHRoYXQgYXJl
IGFsbG93ZWQgYSBuYW1lIGF0dHJpYnV0ZS4KKworICAgIGlmIChuYW1lLmlzRW1wdHkoKSkKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBDb250YWluZXJOb2RlJiByb290ID0gcm9vdE5v
ZGUoKTsKKyAgICBpZiAodHJhdmVyc2FsVHlwZSAhPSBDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6
Q3VzdG9tRm9yd2FyZE9ubHkgJiYgcm9vdC5pc0luVHJlZVNjb3BlKCkpIHsKKyAgICAgICAgRWxl
bWVudCogY2FuZGlkYXRlID0gbnVsbHB0cjsKKworICAgICAgICBUcmVlU2NvcGUmIHRyZWVTY29w
ZSA9IHJvb3QudHJlZVNjb3BlKCk7CisgICAgICAgIGlmICh0cmVlU2NvcGUuaGFzRWxlbWVudFdp
dGhJZCgqbmFtZS5pbXBsKCkpKSB7CisgICAgICAgICAgICBpZiAoIXRyZWVTY29wZS5jb250YWlu
c011bHRpcGxlRWxlbWVudHNXaXRoSWQobmFtZSkpCisgICAgICAgICAgICAgICAgY2FuZGlkYXRl
ID0gdHJlZVNjb3BlLmdldEVsZW1lbnRCeUlkKG5hbWUpOworICAgICAgICB9IGVsc2UgaWYgKHRy
ZWVTY29wZS5oYXNFbGVtZW50V2l0aE5hbWUoKm5hbWUuaW1wbCgpKSkgeworICAgICAgICAgICAg
aWYgKCF0cmVlU2NvcGUuY29udGFpbnNNdWx0aXBsZUVsZW1lbnRzV2l0aE5hbWUobmFtZSkpIHsK
KyAgICAgICAgICAgICAgICBjYW5kaWRhdGUgPSB0cmVlU2NvcGUuZ2V0RWxlbWVudEJ5TmFtZShu
YW1lKTsKKyAgICAgICAgICAgICAgICBpZiAoY2FuZGlkYXRlICYmIHR5cGUoKSA9PSBEb2NBbGwg
JiYgIW5hbWVTaG91bGRCZVZpc2libGVJbkRvY3VtZW50QWxsKCpjYW5kaWRhdGUpKQorICAgICAg
ICAgICAgICAgICAgICBjYW5kaWRhdGUgPSBudWxscHRyOworICAgICAgICAgICAgfQorICAgICAg
ICB9IGVsc2UKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgICAgIGlmIChjYW5k
aWRhdGUgJiYgY29sbGVjdGlvbigpLmVsZW1lbnRNYXRjaGVzKCpjYW5kaWRhdGUpKSB7CisgICAg
ICAgICAgICBpZiAodHJhdmVyc2FsVHlwZSA9PSBDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6Q2hp
bGRyZW5Pbmx5ID8gY2FuZGlkYXRlLT5wYXJlbnROb2RlKCkgPT0gJnJvb3QgOiBjYW5kaWRhdGUt
PmlzRGVzY2VuZGFudE9mKCZyb290KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gY2FuZGlkYXRl
OworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIEhUTUxDb2xsZWN0aW9uOjpuYW1lZEl0
ZW0obmFtZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIENhY2hl
ZEhUTUxDb2xsZWN0aW9uX2gKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9Db2xs
ZWN0aW9uVHJhdmVyc2FsLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0NvbGxlY3Rpb25UcmF2ZXJz
YWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi43OTk5NmYxMzljNDEyYTNmNzc2MjljOTVmMTZlZjBmNWQ1NjRmZmNi
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Db2xsZWN0aW9uVHJhdmVy
c2FsLmgKQEAgLTAsMCArMSwyMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIENvbGxlY3Rpb25U
cmF2ZXJzYWxfaAorI2RlZmluZSBDb2xsZWN0aW9uVHJhdmVyc2FsX2gKKworI2luY2x1ZGUgIkNv
bGxlY3Rpb25UeXBlLmgiCisjaW5jbHVkZSAiRWxlbWVudENoaWxkSXRlcmF0b3IuaCIKKyNpbmNs
dWRlICJFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KwordGVtcGxhdGUgPENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlIHRyYXZlcnNhbFR5cGU+CitzdHJ1
Y3QgQ29sbGVjdGlvblRyYXZlcnNhbCB7IH07CisKK3RlbXBsYXRlIDw+CitzdHJ1Y3QgQ29sbGVj
dGlvblRyYXZlcnNhbDxDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6RGVzY2VuZGFudHM+IHsKKyAg
ICB1c2luZyBJdGVyYXRvclR5cGUgPSBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yOworCisgICAg
c3RhdGljIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IgZW5kKENvbnRhaW5lck5vZGUmKSB7IHJl
dHVybiBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yKCk7IH0KKworICAgIHRlbXBsYXRlIDx0eXBl
bmFtZSBDb2xsZWN0aW9uQ2xhc3M+CisgICAgc3RhdGljIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0
b3IgYmVnaW4oY29uc3QgQ29sbGVjdGlvbkNsYXNzJiwgQ29udGFpbmVyTm9kZSYgcm9vdE5vZGUp
OworCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIENvbGxlY3Rpb25DbGFzcz4KKyAgICBzdGF0aWMg
RWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciBsYXN0KGNvbnN0IENvbGxlY3Rpb25DbGFzcyYsIENv
bnRhaW5lck5vZGUmIHJvb3ROb2RlKTsKKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDb2xsZWN0
aW9uQ2xhc3M+CisgICAgc3RhdGljIHZvaWQgdHJhdmVyc2VGb3J3YXJkKGNvbnN0IENvbGxlY3Rp
b25DbGFzcyYsIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3ImIGN1cnJlbnQsIHVuc2lnbmVkIGNv
dW50LCB1bnNpZ25lZCYgdHJhdmVyc2VkQ291bnQpOworCisgICAgdGVtcGxhdGUgPHR5cGVuYW1l
IENvbGxlY3Rpb25DbGFzcz4KKyAgICBzdGF0aWMgdm9pZCB0cmF2ZXJzZUJhY2t3YXJkKGNvbnN0
IENvbGxlY3Rpb25DbGFzcyYsIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3ImIGN1cnJlbnQsIHVu
c2lnbmVkIGNvdW50KTsKK307CisKK3RlbXBsYXRlIDw+CitzdHJ1Y3QgQ29sbGVjdGlvblRyYXZl
cnNhbDxDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6Q2hpbGRyZW5Pbmx5PiB7CisgICAgdXNpbmcg
SXRlcmF0b3JUeXBlID0gRWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVudD47CisKKyAgICBzdGF0
aWMgRWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVudD4gZW5kKENvbnRhaW5lck5vZGUmIHJvb3RO
b2RlKSB7IHJldHVybiBFbGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50Pihyb290Tm9kZSk7IH0K
KworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDb2xsZWN0aW9uQ2xhc3M+CisgICAgc3RhdGljIEVs
ZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnQ+IGJlZ2luKGNvbnN0IENvbGxlY3Rpb25DbGFzcyYs
IENvbnRhaW5lck5vZGUmIHJvb3ROb2RlKTsKKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDb2xs
ZWN0aW9uQ2xhc3M+CisgICAgc3RhdGljIEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnQ+IGxh
c3QoY29uc3QgQ29sbGVjdGlvbkNsYXNzJiwgQ29udGFpbmVyTm9kZSYgcm9vdE5vZGUpOworCisg
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIENvbGxlY3Rpb25DbGFzcz4KKyAgICBzdGF0aWMgdm9pZCB0
cmF2ZXJzZUZvcndhcmQoY29uc3QgQ29sbGVjdGlvbkNsYXNzJiwgRWxlbWVudENoaWxkSXRlcmF0
b3I8RWxlbWVudD4mIGN1cnJlbnQsIHVuc2lnbmVkIGNvdW50LCB1bnNpZ25lZCYgdHJhdmVyc2Vk
Q291bnQpOworCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIENvbGxlY3Rpb25DbGFzcz4KKyAgICBz
dGF0aWMgdm9pZCB0cmF2ZXJzZUJhY2t3YXJkKGNvbnN0IENvbGxlY3Rpb25DbGFzcyYsIEVsZW1l
bnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnQ+JiBjdXJyZW50LCB1bnNpZ25lZCBjb3VudCk7Cit9Owor
Cit0ZW1wbGF0ZSA8Pgorc3RydWN0IENvbGxlY3Rpb25UcmF2ZXJzYWw8Q29sbGVjdGlvblRyYXZl
cnNhbFR5cGU6OkN1c3RvbUZvcndhcmRPbmx5PiB7CisgICAgdXNpbmcgSXRlcmF0b3JUeXBlID0g
RWxlbWVudCo7CisKKyAgICBzdGF0aWMgRWxlbWVudCogZW5kKENvbnRhaW5lck5vZGUmKSB7IHJl
dHVybiBudWxscHRyOyB9CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ29sbGVjdGlvbkNsYXNz
PgorICAgIHN0YXRpYyBFbGVtZW50KiBiZWdpbihjb25zdCBDb2xsZWN0aW9uQ2xhc3MmLCBDb250
YWluZXJOb2RlJik7CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ29sbGVjdGlvbkNsYXNzPgor
ICAgIHN0YXRpYyBFbGVtZW50KiBsYXN0KGNvbnN0IENvbGxlY3Rpb25DbGFzcyYsIENvbnRhaW5l
ck5vZGUmKTsKKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDb2xsZWN0aW9uQ2xhc3M+CisgICAg
c3RhdGljIHZvaWQgdHJhdmVyc2VGb3J3YXJkKGNvbnN0IENvbGxlY3Rpb25DbGFzcyYsIEVsZW1l
bnQqJiBjdXJyZW50LCB1bnNpZ25lZCBjb3VudCwgdW5zaWduZWQmIHRyYXZlcnNlZENvdW50KTsK
KworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDb2xsZWN0aW9uQ2xhc3M+CisgICAgc3RhdGljIHZv
aWQgdHJhdmVyc2VCYWNrd2FyZChjb25zdCBDb2xsZWN0aW9uQ2xhc3MmLCBFbGVtZW50KiYsIHVu
c2lnbmVkIGNvdW50KTsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBDb2xsZWN0aW9uQ2xhc3M+
CitpbmxpbmUgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciBDb2xsZWN0aW9uVHJhdmVyc2FsPENv
bGxlY3Rpb25UcmF2ZXJzYWxUeXBlOjpEZXNjZW5kYW50cz46OmJlZ2luKGNvbnN0IENvbGxlY3Rp
b25DbGFzcyYgY29sbGVjdGlvbiwgQ29udGFpbmVyTm9kZSYgcm9vdE5vZGUpCit7CisgICAgYXV0
byBkZXNjZW5kYW50cyA9IGVsZW1lbnREZXNjZW5kYW50cyhyb290Tm9kZSk7CisgICAgYXV0byBl
bmQgPSBkZXNjZW5kYW50cy5lbmQoKTsKKyAgICBmb3IgKGF1dG8gaXQgPSBkZXNjZW5kYW50cy5i
ZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgaWYgKGNvbGxlY3Rpb24uZWxlbWVu
dE1hdGNoZXMoKml0KSkKKyAgICAgICAgICAgIHJldHVybiBpdDsKKyAgICB9CisgICAgcmV0dXJu
IGVuZDsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIENvbGxlY3Rpb25DbGFzcz4KK2lubGluZSBF
bGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50PiBDb2xsZWN0aW9uVHJhdmVyc2FsPENvbGxlY3Rp
b25UcmF2ZXJzYWxUeXBlOjpDaGlsZHJlbk9ubHk+OjpiZWdpbihjb25zdCBDb2xsZWN0aW9uQ2xh
c3MmIGNvbGxlY3Rpb24sIENvbnRhaW5lck5vZGUmIHJvb3ROb2RlKQoreworICAgIGF1dG8gY2hp
bGRyZW4gPSBjaGlsZHJlbk9mVHlwZTxFbGVtZW50Pihyb290Tm9kZSk7CisgICAgYXV0byBlbmQg
PSBjaGlsZHJlbi5lbmQoKTsKKyAgICBmb3IgKGF1dG8gaXQgPSBjaGlsZHJlbi5iZWdpbigpOyBp
dCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgaWYgKGNvbGxlY3Rpb24uZWxlbWVudE1hdGNoZXMo
Kml0KSkKKyAgICAgICAgICAgIHJldHVybiBpdDsKKyAgICB9CisgICAgcmV0dXJuIGVuZDsKK30K
KwordGVtcGxhdGUgPHR5cGVuYW1lIENvbGxlY3Rpb25DbGFzcz4KK2lubGluZSBFbGVtZW50KiBD
b2xsZWN0aW9uVHJhdmVyc2FsPENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlOjpDdXN0b21Gb3J3YXJk
T25seT46OmJlZ2luKGNvbnN0IENvbGxlY3Rpb25DbGFzcyYgY29sbGVjdGlvbiwgQ29udGFpbmVy
Tm9kZSYpCit7CisgICAgcmV0dXJuIGNvbGxlY3Rpb24uY3VzdG9tRWxlbWVudEFmdGVyKG51bGxw
dHIpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ29sbGVjdGlvbkNsYXNzPgoraW5saW5lIEVs
ZW1lbnREZXNjZW5kYW50SXRlcmF0b3IgQ29sbGVjdGlvblRyYXZlcnNhbDxDb2xsZWN0aW9uVHJh
dmVyc2FsVHlwZTo6RGVzY2VuZGFudHM+OjpsYXN0KGNvbnN0IENvbGxlY3Rpb25DbGFzcyYgY29s
bGVjdGlvbiwgQ29udGFpbmVyTm9kZSYgcm9vdE5vZGUpCit7CisgICAgYXV0byBkZXNjZW5kYW50
cyA9IGVsZW1lbnREZXNjZW5kYW50cyhyb290Tm9kZSk7CisgICAgYXV0byBlbmQgPSBkZXNjZW5k
YW50cy5lbmQoKTsKKyAgICBmb3IgKGF1dG8gaXQgPSBkZXNjZW5kYW50cy5sYXN0KCk7IGl0ICE9
IGVuZDsgLS1pdCkgeworICAgICAgICBpZiAoY29sbGVjdGlvbi5lbGVtZW50TWF0Y2hlcygqaXQp
KQorICAgICAgICAgICAgcmV0dXJuIGl0OworICAgIH0KKyAgICByZXR1cm4gZW5kOworfQorCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgQ29sbGVjdGlvbkNsYXNzPgoraW5saW5lIEVsZW1lbnRDaGlsZEl0
ZXJhdG9yPEVsZW1lbnQ+IENvbGxlY3Rpb25UcmF2ZXJzYWw8Q29sbGVjdGlvblRyYXZlcnNhbFR5
cGU6OkNoaWxkcmVuT25seT46Omxhc3QoY29uc3QgQ29sbGVjdGlvbkNsYXNzJiBjb2xsZWN0aW9u
LCBDb250YWluZXJOb2RlJiByb290Tm9kZSkKK3sKKyAgICBhdXRvIGNoaWxkcmVuID0gY2hpbGRy
ZW5PZlR5cGU8RWxlbWVudD4ocm9vdE5vZGUpOworICAgIGF1dG8gZW5kID0gY2hpbGRyZW4uZW5k
KCk7CisgICAgRWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVudD4gbGFzdChyb290Tm9kZSwgY2hp
bGRyZW4ubGFzdCgpKTsKKyAgICBmb3IgKGF1dG8gaXQgPSBsYXN0OyBpdCAhPSBlbmQ7IC0taXQp
IHsKKyAgICAgICAgaWYgKGNvbGxlY3Rpb24uZWxlbWVudE1hdGNoZXMoKml0KSkKKyAgICAgICAg
ICAgIHJldHVybiBpdDsKKyAgICB9CisgICAgcmV0dXJuIGVuZDsKK30KKwordGVtcGxhdGUgPHR5
cGVuYW1lIENvbGxlY3Rpb25DbGFzcz4KK2lubGluZSBFbGVtZW50KiBDb2xsZWN0aW9uVHJhdmVy
c2FsPENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlOjpDdXN0b21Gb3J3YXJkT25seT46Omxhc3QoY29u
c3QgQ29sbGVjdGlvbkNsYXNzJiwgQ29udGFpbmVyTm9kZSYpCit7CisgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBD
b2xsZWN0aW9uQ2xhc3M+CitpbmxpbmUgdm9pZCBDb2xsZWN0aW9uVHJhdmVyc2FsPENvbGxlY3Rp
b25UcmF2ZXJzYWxUeXBlOjpEZXNjZW5kYW50cz46OnRyYXZlcnNlRm9yd2FyZChjb25zdCBDb2xs
ZWN0aW9uQ2xhc3MmIGNvbGxlY3Rpb24sIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3ImIGN1cnJl
bnQsIHVuc2lnbmVkIGNvdW50LCB1bnNpZ25lZCYgdHJhdmVyc2VkQ291bnQpCit7CisgICAgQVNT
RVJUKGNvbGxlY3Rpb24uZWxlbWVudE1hdGNoZXMoKmN1cnJlbnQpKTsKKyAgICBhdXRvIGVuZCA9
IGNvbGxlY3Rpb24uY29sbGVjdGlvbkVuZCgpOworICAgIGZvciAodHJhdmVyc2VkQ291bnQgPSAw
OyB0cmF2ZXJzZWRDb3VudCA8IGNvdW50OyArK3RyYXZlcnNlZENvdW50KSB7CisgICAgICAgIGRv
IHsKKyAgICAgICAgICAgICsrY3VycmVudDsKKyAgICAgICAgICAgIGlmIChjdXJyZW50ID09IGVu
ZCkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0gd2hpbGUgKCFjb2xsZWN0aW9u
LmVsZW1lbnRNYXRjaGVzKCpjdXJyZW50KSk7CisgICAgfQorfQorCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgQ29sbGVjdGlvbkNsYXNzPgoraW5saW5lIHZvaWQgQ29sbGVjdGlvblRyYXZlcnNhbDxDb2xs
ZWN0aW9uVHJhdmVyc2FsVHlwZTo6Q2hpbGRyZW5Pbmx5Pjo6dHJhdmVyc2VGb3J3YXJkKGNvbnN0
IENvbGxlY3Rpb25DbGFzcyYgY29sbGVjdGlvbiwgRWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVu
dD4mIGN1cnJlbnQsIHVuc2lnbmVkIGNvdW50LCB1bnNpZ25lZCYgdHJhdmVyc2VkQ291bnQpCit7
CisgICAgQVNTRVJUKGNvbGxlY3Rpb24uZWxlbWVudE1hdGNoZXMoKmN1cnJlbnQpKTsKKyAgICBh
dXRvIGVuZCA9IGNvbGxlY3Rpb24uY29sbGVjdGlvbkVuZCgpOworICAgIGZvciAodHJhdmVyc2Vk
Q291bnQgPSAwOyB0cmF2ZXJzZWRDb3VudCA8IGNvdW50OyArK3RyYXZlcnNlZENvdW50KSB7Cisg
ICAgICAgIGRvIHsKKyAgICAgICAgICAgICsrY3VycmVudDsKKyAgICAgICAgICAgIGlmIChjdXJy
ZW50ID09IGVuZCkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0gd2hpbGUgKCFj
b2xsZWN0aW9uLmVsZW1lbnRNYXRjaGVzKCpjdXJyZW50KSk7CisgICAgfQorfQorCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgQ29sbGVjdGlvbkNsYXNzPgoraW5saW5lIHZvaWQgQ29sbGVjdGlvblRyYXZl
cnNhbDxDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6Q3VzdG9tRm9yd2FyZE9ubHk+Ojp0cmF2ZXJz
ZUZvcndhcmQoY29uc3QgQ29sbGVjdGlvbkNsYXNzJiBjb2xsZWN0aW9uLCBFbGVtZW50KiYgY3Vy
cmVudCwgdW5zaWduZWQgY291bnQsIHVuc2lnbmVkJiB0cmF2ZXJzZWRDb3VudCkKK3sKKyAgICBF
bGVtZW50KiBlbGVtZW50ID0gY3VycmVudDsKKyAgICBmb3IgKHRyYXZlcnNlZENvdW50ID0gMDsg
dHJhdmVyc2VkQ291bnQgPCBjb3VudDsgKyt0cmF2ZXJzZWRDb3VudCkgeworICAgICAgICBlbGVt
ZW50ID0gY29sbGVjdGlvbi5jdXN0b21FbGVtZW50QWZ0ZXIoZWxlbWVudCk7CisgICAgICAgIGlm
ICghZWxlbWVudCkgeworICAgICAgICAgICAgY3VycmVudCA9IG51bGxwdHI7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisgICAgY3VycmVudCA9IGVsZW1lbnQ7Cit9CisK
K3RlbXBsYXRlIDx0eXBlbmFtZSBDb2xsZWN0aW9uQ2xhc3M+CitpbmxpbmUgdm9pZCBDb2xsZWN0
aW9uVHJhdmVyc2FsPENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlOjpEZXNjZW5kYW50cz46OnRyYXZl
cnNlQmFja3dhcmQoY29uc3QgQ29sbGVjdGlvbkNsYXNzJiBjb2xsZWN0aW9uLCBFbGVtZW50RGVz
Y2VuZGFudEl0ZXJhdG9yJiBjdXJyZW50LCB1bnNpZ25lZCBjb3VudCkKK3sKKyAgICBBU1NFUlQo
Y29sbGVjdGlvbi5lbGVtZW50TWF0Y2hlcygqY3VycmVudCkpOworICAgIGF1dG8gZW5kID0gY29s
bGVjdGlvbi5jb2xsZWN0aW9uRW5kKCk7CisgICAgZm9yICg7IGNvdW50OyAtLWNvdW50KSB7Cisg
ICAgICAgIGRvIHsKKyAgICAgICAgICAgIC0tY3VycmVudDsKKyAgICAgICAgICAgIGlmIChjdXJy
ZW50ID09IGVuZCkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0gd2hpbGUgKCFj
b2xsZWN0aW9uLmVsZW1lbnRNYXRjaGVzKCpjdXJyZW50KSk7CisgICAgfQorfQorCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgQ29sbGVjdGlvbkNsYXNzPgoraW5saW5lIHZvaWQgQ29sbGVjdGlvblRyYXZl
cnNhbDxDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6Q2hpbGRyZW5Pbmx5Pjo6dHJhdmVyc2VCYWNr
d2FyZChjb25zdCBDb2xsZWN0aW9uQ2xhc3MmIGNvbGxlY3Rpb24sIEVsZW1lbnRDaGlsZEl0ZXJh
dG9yPEVsZW1lbnQ+JiBjdXJyZW50LCB1bnNpZ25lZCBjb3VudCkKK3sKKyAgICBBU1NFUlQoY29s
bGVjdGlvbi5lbGVtZW50TWF0Y2hlcygqY3VycmVudCkpOworICAgIGF1dG8gZW5kID0gY29sbGVj
dGlvbi5jb2xsZWN0aW9uRW5kKCk7CisgICAgZm9yICg7IGNvdW50OyAtLWNvdW50KSB7CisgICAg
ICAgIGRvIHsKKyAgICAgICAgICAgIC0tY3VycmVudDsKKyAgICAgICAgICAgIGlmIChjdXJyZW50
ID09IGVuZCkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0gd2hpbGUgKCFjb2xs
ZWN0aW9uLmVsZW1lbnRNYXRjaGVzKCpjdXJyZW50KSk7CisgICAgfQorfQorCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgQ29sbGVjdGlvbkNsYXNzPgoraW5saW5lIHZvaWQgQ29sbGVjdGlvblRyYXZlcnNh
bDxDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6Q3VzdG9tRm9yd2FyZE9ubHk+Ojp0cmF2ZXJzZUJh
Y2t3YXJkKGNvbnN0IENvbGxlY3Rpb25DbGFzcyYsIEVsZW1lbnQqJiwgdW5zaWduZWQgY291bnQp
Cit7CisgICAgVU5VU0VEX1BBUkFNKGNvdW50KTsKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gQ29sbGVjdGlvblRyYXZl
cnNhbF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0NvbGxlY3Rpb25UeXBlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0NvbGxlY3Rpb25UeXBlLmgKaW5kZXggNTEzMGFmOTFkYWU4
NjhhNzE0ZjZlMDU1MGJmYWFkZjQwMWY2NWJiYy4uMWE5MjJkMGZmOTA2MDg0YWQxNzM0YjA3MGY4
NWEwNGNmYjg5NGIxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9Db2xsZWN0aW9u
VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ29sbGVjdGlvblR5cGUuaApAQCAtNTMs
NiArNTMsNDIgQEAgZW51bSBDb2xsZWN0aW9uVHlwZSB7CiAgICAgRm9ybUNvbnRyb2xzCiB9Owog
Ci19IC8vIG5hbWVzcGFjZQorZW51bSBjbGFzcyBDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZSB7IERl
c2NlbmRhbnRzLCBDaGlsZHJlbk9ubHksIEN1c3RvbUZvcndhcmRPbmx5IH07Cit0ZW1wbGF0ZTxD
b2xsZWN0aW9uVHlwZSBjb2xsZWN0aW9uVHlwZT4KK3N0cnVjdCBDb2xsZWN0aW9uVHlwZVRyYWl0
cyB7CisgICAgc3RhdGljIGNvbnN0IENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlIHRyYXZlcnNhbFR5
cGUgPSBDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6RGVzY2VuZGFudHM7Cit9OworCit0ZW1wbGF0
ZTw+CitzdHJ1Y3QgQ29sbGVjdGlvblR5cGVUcmFpdHM8Tm9kZUNoaWxkcmVuPiB7CisgICAgc3Rh
dGljIGNvbnN0IENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlIHRyYXZlcnNhbFR5cGUgPSBDb2xsZWN0
aW9uVHJhdmVyc2FsVHlwZTo6Q2hpbGRyZW5Pbmx5OworfTsKKwordGVtcGxhdGU8Pgorc3RydWN0
IENvbGxlY3Rpb25UeXBlVHJhaXRzPFRSQ2VsbHM+IHsKKyAgICBzdGF0aWMgY29uc3QgQ29sbGVj
dGlvblRyYXZlcnNhbFR5cGUgdHJhdmVyc2FsVHlwZSA9IENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBl
OjpDaGlsZHJlbk9ubHk7Cit9OworCit0ZW1wbGF0ZTw+CitzdHJ1Y3QgQ29sbGVjdGlvblR5cGVU
cmFpdHM8VFNlY3Rpb25Sb3dzPiB7CisgICAgc3RhdGljIGNvbnN0IENvbGxlY3Rpb25UcmF2ZXJz
YWxUeXBlIHRyYXZlcnNhbFR5cGUgPSBDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6Q2hpbGRyZW5P
bmx5OworfTsKKwordGVtcGxhdGU8Pgorc3RydWN0IENvbGxlY3Rpb25UeXBlVHJhaXRzPFRhYmxl
VEJvZGllcz4geworICAgIHN0YXRpYyBjb25zdCBDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZSB0cmF2
ZXJzYWxUeXBlID0gQ29sbGVjdGlvblRyYXZlcnNhbFR5cGU6OkNoaWxkcmVuT25seTsKK307CisK
K3RlbXBsYXRlPD4KK3N0cnVjdCBDb2xsZWN0aW9uVHlwZVRyYWl0czxUYWJsZVJvd3M+IHsKKyAg
ICBzdGF0aWMgY29uc3QgQ29sbGVjdGlvblRyYXZlcnNhbFR5cGUgdHJhdmVyc2FsVHlwZSA9IENv
bGxlY3Rpb25UcmF2ZXJzYWxUeXBlOjpDdXN0b21Gb3J3YXJkT25seTsKK307CisKK3RlbXBsYXRl
PD4KK3N0cnVjdCBDb2xsZWN0aW9uVHlwZVRyYWl0czxGb3JtQ29udHJvbHM+IHsKKyAgICBzdGF0
aWMgY29uc3QgQ29sbGVjdGlvblRyYXZlcnNhbFR5cGUgdHJhdmVyc2FsVHlwZSA9IENvbGxlY3Rp
b25UcmF2ZXJzYWxUeXBlOjpDdXN0b21Gb3J3YXJkT25seTsKK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0dlbmVy
aWNDYWNoZWRIVE1MQ29sbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0dlbmVyaWND
YWNoZWRIVE1MQ29sbGVjdGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGY3OGNkY2ViNWIwY2Y1MmNiOTY5
M2Q1YjQwNjRhNDlkMTViYmNlZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvR2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uLmNwcApAQCAtMCwwICsxLDkwIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdlbmVyaWNDYWNoZWRIVE1M
Q29sbGVjdGlvbi5oIgorCisjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVkZSAiSFRNTE9i
amVjdEVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MT3B0aW9uRWxlbWVudC5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK3VzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CisKK3RlbXBsYXRlIDxD
b2xsZWN0aW9uVHJhdmVyc2FsVHlwZSB0cmF2ZXJzYWxUeXBlPgorYm9vbCBHZW5lcmljQ2FjaGVk
SFRNTENvbGxlY3Rpb248dHJhdmVyc2FsVHlwZT46OmVsZW1lbnRNYXRjaGVzKEVsZW1lbnQmIGVs
ZW1lbnQpIGNvbnN0Cit7CisgICAgc3dpdGNoICh0aGlzLT50eXBlKCkpIHsKKyAgICBjYXNlIE5v
ZGVDaGlsZHJlbjoKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgY2FzZSBEb2NJbWFnZXM6Cisg
ICAgICAgIHJldHVybiBlbGVtZW50Lmhhc1RhZ05hbWUoaW1nVGFnKTsKKyAgICBjYXNlIERvY1Nj
cmlwdHM6CisgICAgICAgIHJldHVybiBlbGVtZW50Lmhhc1RhZ05hbWUoc2NyaXB0VGFnKTsKKyAg
ICBjYXNlIERvY0Zvcm1zOgorICAgICAgICByZXR1cm4gZWxlbWVudC5oYXNUYWdOYW1lKGZvcm1U
YWcpOworICAgIGNhc2UgVGFibGVUQm9kaWVzOgorICAgICAgICByZXR1cm4gZWxlbWVudC5oYXNU
YWdOYW1lKHRib2R5VGFnKTsKKyAgICBjYXNlIFRSQ2VsbHM6CisgICAgICAgIHJldHVybiBlbGVt
ZW50Lmhhc1RhZ05hbWUodGRUYWcpIHx8IGVsZW1lbnQuaGFzVGFnTmFtZSh0aFRhZyk7CisgICAg
Y2FzZSBUU2VjdGlvblJvd3M6CisgICAgICAgIHJldHVybiBlbGVtZW50Lmhhc1RhZ05hbWUodHJU
YWcpOworICAgIGNhc2UgU2VsZWN0ZWRPcHRpb25zOgorICAgICAgICByZXR1cm4gaXM8SFRNTE9w
dGlvbkVsZW1lbnQ+KGVsZW1lbnQpICYmIGRvd25jYXN0PEhUTUxPcHRpb25FbGVtZW50PihlbGVt
ZW50KS5zZWxlY3RlZCgpOworICAgIGNhc2UgRGF0YUxpc3RPcHRpb25zOgorICAgICAgICBpZiAo
aXM8SFRNTE9wdGlvbkVsZW1lbnQ+KGVsZW1lbnQpKSB7CisgICAgICAgICAgICBIVE1MT3B0aW9u
RWxlbWVudCYgb3B0aW9uID0gZG93bmNhc3Q8SFRNTE9wdGlvbkVsZW1lbnQ+KGVsZW1lbnQpOwor
ICAgICAgICAgICAgaWYgKCFvcHRpb24uaXNEaXNhYmxlZEZvcm1Db250cm9sKCkgJiYgIW9wdGlv
bi52YWx1ZSgpLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg
ICAgfQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgY2FzZSBNYXBBcmVhczoKKyAgICAgICAg
cmV0dXJuIGVsZW1lbnQuaGFzVGFnTmFtZShhcmVhVGFnKTsKKyAgICBjYXNlIERvY0FwcGxldHM6
CisgICAgICAgIHJldHVybiBpczxIVE1MQXBwbGV0RWxlbWVudD4oZWxlbWVudCkgfHwgKGlzPEhU
TUxPYmplY3RFbGVtZW50PihlbGVtZW50KSAmJiBkb3duY2FzdDxIVE1MT2JqZWN0RWxlbWVudD4o
ZWxlbWVudCkuY29udGFpbnNKYXZhQXBwbGV0KCkpOworICAgIGNhc2UgRG9jRW1iZWRzOgorICAg
ICAgICByZXR1cm4gZWxlbWVudC5oYXNUYWdOYW1lKGVtYmVkVGFnKTsKKyAgICBjYXNlIERvY0xp
bmtzOgorICAgICAgICByZXR1cm4gKGVsZW1lbnQuaGFzVGFnTmFtZShhVGFnKSB8fCBlbGVtZW50
Lmhhc1RhZ05hbWUoYXJlYVRhZykpICYmIGVsZW1lbnQuZmFzdEhhc0F0dHJpYnV0ZShocmVmQXR0
cik7CisgICAgY2FzZSBEb2NBbmNob3JzOgorICAgICAgICByZXR1cm4gZWxlbWVudC5oYXNUYWdO
YW1lKGFUYWcpICYmIGVsZW1lbnQuZmFzdEhhc0F0dHJpYnV0ZShuYW1lQXR0cik7CisgICAgY2Fz
ZSBEb2NBbGw6CisgICAgY2FzZSBEb2N1bWVudE5hbWVkSXRlbXM6CisgICAgY2FzZSBGb3JtQ29u
dHJvbHM6CisgICAgY2FzZSBTZWxlY3RPcHRpb25zOgorICAgIGNhc2UgVGFibGVSb3dzOgorICAg
IGNhc2UgV2luZG93TmFtZWRJdGVtczoKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIC8vIFJl
bWFpbmluZyBjb2xsZWN0aW9uIHR5cGVzIGhhdmUgdGhlaXIgb3duIENhY2hlZEhUTUxDb2xsZWN0
aW9uIHN1YmNsYXNzZXMgYW5kIGFyZSBub3QgdXNpbmcgR2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0
aW9uLgorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30KK3Rl
bXBsYXRlIGJvb2wgR2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uPENvbGxlY3Rpb25UcmF2ZXJz
YWxUeXBlOjpEZXNjZW5kYW50cz46OmVsZW1lbnRNYXRjaGVzKEVsZW1lbnQmKSBjb25zdDsKK3Rl
bXBsYXRlIGJvb2wgR2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uPENvbGxlY3Rpb25UcmF2ZXJz
YWxUeXBlOjpDaGlsZHJlbk9ubHk+OjplbGVtZW50TWF0Y2hlcyhFbGVtZW50JikgY29uc3Q7Cit0
ZW1wbGF0ZSBib29sIEdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbjxDb2xsZWN0aW9uVHJhdmVy
c2FsVHlwZTo6Q3VzdG9tRm9yd2FyZE9ubHk+OjplbGVtZW50TWF0Y2hlcyhFbGVtZW50JikgY29u
c3Q7CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvR2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0dlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM2MzMxMzNmZGEwYTJh
M2YyYmJjYTNhZTVlYzk0ZTEzYzc2ZWI4ZTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0dlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbi5oCkBAIC0wLDAgKzEsNTIgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIEdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbl9oCisjZGVm
aW5lIEdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbl9oCisKKyNpbmNsdWRlICJDYWNoZWRIVE1M
Q29sbGVjdGlvbi5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3RlbXBsYXRlIDxDb2xsZWN0
aW9uVHJhdmVyc2FsVHlwZSB0cmF2ZXJzYWxUeXBlPgorY2xhc3MgR2VuZXJpY0NhY2hlZEhUTUxD
b2xsZWN0aW9uIGZpbmFsIDogcHVibGljIENhY2hlZEhUTUxDb2xsZWN0aW9uPEdlbmVyaWNDYWNo
ZWRIVE1MQ29sbGVjdGlvbjx0cmF2ZXJzYWxUeXBlPiwgdHJhdmVyc2FsVHlwZT4geworcHVibGlj
OgorICAgIHN0YXRpYyBSZWY8R2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uPiBjcmVhdGUoQ29u
dGFpbmVyTm9kZSYgYmFzZSwgQ29sbGVjdGlvblR5cGUgY29sbGVjdGlvblR5cGUpCisgICAgewor
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBHZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb24o
YmFzZSwgY29sbGVjdGlvblR5cGUpKTsKKyAgICB9CisKKyAgICBib29sIGVsZW1lbnRNYXRjaGVz
KEVsZW1lbnQmKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBHZW5lcmljQ2FjaGVkSFRNTENvbGxl
Y3Rpb24oQ29udGFpbmVyTm9kZSYgYmFzZSwgQ29sbGVjdGlvblR5cGUgY29sbGVjdGlvblR5cGUp
CisgICAgICAgIDogQ2FjaGVkSFRNTENvbGxlY3Rpb248R2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0
aW9uPHRyYXZlcnNhbFR5cGU+LCB0cmF2ZXJzYWxUeXBlPihiYXNlLCBjb2xsZWN0aW9uVHlwZSkK
KyAgICB7IH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEdlbmVy
aWNDYWNoZWRIVE1MQ29sbGVjdGlvbl9oCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEFsbENvbGxlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQWxsQ29s
bGVjdGlvbi5jcHAKaW5kZXggMDE2Njg3MTRlY2JiYmQwZmViZDFlNTBjNGFiZDRiMDkxM2I0Mjdm
My4uZGFiMDUwMGZhZDg4YzY1NGE1YjkxY2JlNWQzZDlhNzQ2Mjc5OGIxYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQWxsQ29sbGVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MQWxsQ29sbGVjdGlvbi5jcHAKQEAgLTM2LDcgKzM2LDcgQEAgUmVmPEhU
TUxBbGxDb2xsZWN0aW9uPiBIVE1MQWxsQ29sbGVjdGlvbjo6Y3JlYXRlKERvY3VtZW50JiBkb2N1
bWVudCwgQ29sbGVjdGlvblQKIH0KIAogaW5saW5lIEhUTUxBbGxDb2xsZWN0aW9uOjpIVE1MQWxs
Q29sbGVjdGlvbihEb2N1bWVudCYgZG9jdW1lbnQsIENvbGxlY3Rpb25UeXBlIHR5cGUpCi0gICAg
OiBIVE1MQ29sbGVjdGlvbihkb2N1bWVudCwgdHlwZSkKKyAgICA6IENhY2hlZEhUTUxDb2xsZWN0
aW9uPEhUTUxBbGxDb2xsZWN0aW9uLCBDb2xsZWN0aW9uVHlwZVRyYWl0czxEb2NBbGw+Ojp0cmF2
ZXJzYWxUeXBlPihkb2N1bWVudCwgdHlwZSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MQWxsQ29sbGVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
QWxsQ29sbGVjdGlvbi5oCmluZGV4IDUxNDUxMTc0YmQyODNiMjAxYzg5MmUyZWE0YTVhYjlmYjYx
NWJmMDEuLmI2MDExYjQ5NjJkZTBjNzc3M2NiMzFiZTkxNjZkM2U5OGI5MDRkYzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFsbENvbGxlY3Rpb24uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxBbGxDb2xsZWN0aW9uLmgKQEAgLTI2LDE2ICsyNiwxOSBAQAogI2lm
bmRlZiBIVE1MQWxsQ29sbGVjdGlvbl9oCiAjZGVmaW5lIEhUTUxBbGxDb2xsZWN0aW9uX2gKIAot
I2luY2x1ZGUgIkhUTUxDb2xsZWN0aW9uLmgiCisjaW5jbHVkZSAiQ2FjaGVkSFRNTENvbGxlY3Rp
b24uaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBIVE1MQWxsQ29sbGVjdGlvbiBm
aW5hbCA6IHB1YmxpYyBIVE1MQ29sbGVjdGlvbiB7CitjbGFzcyBIVE1MQWxsQ29sbGVjdGlvbiBm
aW5hbCA6IHB1YmxpYyBDYWNoZWRIVE1MQ29sbGVjdGlvbjxIVE1MQWxsQ29sbGVjdGlvbiwgQ29s
bGVjdGlvblR5cGVUcmFpdHM8RG9jQWxsPjo6dHJhdmVyc2FsVHlwZT4gewogcHVibGljOgogICAg
IHN0YXRpYyBSZWY8SFRNTEFsbENvbGxlY3Rpb24+IGNyZWF0ZShEb2N1bWVudCYsIENvbGxlY3Rp
b25UeXBlKTsKIAogICAgIEVsZW1lbnQqIG5hbWVkSXRlbVdpdGhJbmRleChjb25zdCBBdG9taWNT
dHJpbmcmIG5hbWUsIHVuc2lnbmVkIGluZGV4KSBjb25zdDsKIAorICAgIC8vIEZvciBDYWNoZWRI
VE1MQ29sbGVjdGlvbi4KKyAgICBib29sIGVsZW1lbnRNYXRjaGVzKEVsZW1lbnQmKSBjb25zdCB7
IHJldHVybiB0cnVlOyB9CisKIHByaXZhdGU6CiAgICAgSFRNTEFsbENvbGxlY3Rpb24oRG9jdW1l
bnQmLCBDb2xsZWN0aW9uVHlwZSk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQ29sbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9u
LmNwcAppbmRleCAzYjRiNjJmNzI2YmM0NTAzOGNiMzkzMTE2MDRmODU3NTMwYjY4MWRmLi4zMDgx
MGNmYWQyODMyOTI0NmY0YzkxN2QyYjc3OWIyMDI3ZDVmMGNiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxDb2xsZWN0aW9uLmNwcApAQCAtMjMsNDggKzIzLDE0IEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiSFRNTENvbGxlY3Rpb24uaCIKIAotI2luY2x1ZGUgIkVsZW1lbnRUcmF2
ZXJzYWwuaCIKLSNpbmNsdWRlICJIVE1MRG9jdW1lbnQuaCIKLSNpbmNsdWRlICJIVE1MTmFtZUNv
bGxlY3Rpb24uaCIKKyNpbmNsdWRlICJDYWNoZWRIVE1MQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUg
IkhUTUxOYW1lcy5oIgotI2luY2x1ZGUgIkhUTUxPYmplY3RFbGVtZW50LmgiCi0jaW5jbHVkZSAi
SFRNTE9wdGlvbkVsZW1lbnQuaCIKICNpbmNsdWRlICJOb2RlUmFyZURhdGEuaCIKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCi1zdGF0aWMgYm9v
bCBzaG91bGRPbmx5SW5jbHVkZURpcmVjdENoaWxkcmVuKENvbGxlY3Rpb25UeXBlIHR5cGUpCi17
Ci0gICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2FzZSBEb2NBbGw6Ci0gICAgY2FzZSBEb2NBbmNo
b3JzOgotICAgIGNhc2UgRG9jQXBwbGV0czoKLSAgICBjYXNlIERvY0VtYmVkczoKLSAgICBjYXNl
IERvY0Zvcm1zOgotICAgIGNhc2UgRG9jSW1hZ2VzOgotICAgIGNhc2UgRG9jTGlua3M6Ci0gICAg
Y2FzZSBEb2NTY3JpcHRzOgotICAgIGNhc2UgRG9jdW1lbnROYW1lZEl0ZW1zOgotICAgIGNhc2Ug
TWFwQXJlYXM6Ci0gICAgY2FzZSBUYWJsZVJvd3M6Ci0gICAgY2FzZSBTZWxlY3RPcHRpb25zOgot
ICAgIGNhc2UgU2VsZWN0ZWRPcHRpb25zOgotICAgIGNhc2UgRGF0YUxpc3RPcHRpb25zOgotICAg
IGNhc2UgV2luZG93TmFtZWRJdGVtczoKLSAgICBjYXNlIEZvcm1Db250cm9sczoKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIGNhc2UgTm9kZUNoaWxkcmVuOgotICAgIGNhc2UgVFJDZWxsczoK
LSAgICBjYXNlIFRTZWN0aW9uUm93czoKLSAgICBjYXNlIFRhYmxlVEJvZGllczoKLSAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgfQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVy
biBmYWxzZTsKLX0KLQogaW5saW5lIGF1dG8gSFRNTENvbGxlY3Rpb246OnJvb3RUeXBlRnJvbUNv
bGxlY3Rpb25UeXBlKENvbGxlY3Rpb25UeXBlIHR5cGUpIC0+IFJvb3RUeXBlCiB7CiAgICAgc3dp
dGNoICh0eXBlKSB7CkBAIC0xMzEsMjYyICs5NywyOSBAQCBzdGF0aWMgTm9kZUxpc3RJbnZhbGlk
YXRpb25UeXBlIGludmFsaWRhdGlvblR5cGVFeGNsdWRpbmdJZEFuZE5hbWVBdHRyaWJ1dGVzKENv
bAogICAgIHJldHVybiBEb05vdEludmFsaWRhdGVPbkF0dHJpYnV0ZUNoYW5nZXM7CiB9CiAKLUhU
TUxDb2xsZWN0aW9uOjpIVE1MQ29sbGVjdGlvbihDb250YWluZXJOb2RlJiBvd25lck5vZGUsIENv
bGxlY3Rpb25UeXBlIHR5cGUsIEVsZW1lbnRUcmF2ZXJzYWxUeXBlIHRyYXZlcnNhbFR5cGUpCitI
VE1MQ29sbGVjdGlvbjo6SFRNTENvbGxlY3Rpb24oQ29udGFpbmVyTm9kZSYgb3duZXJOb2RlLCBD
b2xsZWN0aW9uVHlwZSB0eXBlKQogICAgIDogbV9vd25lck5vZGUob3duZXJOb2RlKQotICAgICwg
bV9pbmRleENhY2hlKCp0aGlzKQogICAgICwgbV9jb2xsZWN0aW9uVHlwZSh0eXBlKQogICAgICwg
bV9pbnZhbGlkYXRpb25UeXBlKGludmFsaWRhdGlvblR5cGVFeGNsdWRpbmdJZEFuZE5hbWVBdHRy
aWJ1dGVzKHR5cGUpKQogICAgICwgbV9yb290VHlwZShyb290VHlwZUZyb21Db2xsZWN0aW9uVHlw
ZSh0eXBlKSkKLSAgICAsIG1fc2hvdWxkT25seUluY2x1ZGVEaXJlY3RDaGlsZHJlbihzaG91bGRP
bmx5SW5jbHVkZURpcmVjdENoaWxkcmVuKHR5cGUpKQotICAgICwgbV91c2VzQ3VzdG9tRm9yd2Fy
ZE9ubHlUcmF2ZXJzYWwodHJhdmVyc2FsVHlwZSA9PSBDdXN0b21Gb3J3YXJkT25seVRyYXZlcnNh
bCkKIHsKICAgICBBU1NFUlQobV9yb290VHlwZSA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocm9v
dFR5cGVGcm9tQ29sbGVjdGlvblR5cGUodHlwZSkpKTsKICAgICBBU1NFUlQobV9pbnZhbGlkYXRp
b25UeXBlID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihpbnZhbGlkYXRpb25UeXBlRXhjbHVkaW5n
SWRBbmROYW1lQXR0cmlidXRlcyh0eXBlKSkpOwogICAgIEFTU0VSVChtX2NvbGxlY3Rpb25UeXBl
ID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPih0eXBlKSk7CiB9CiAKLVJlZjxIVE1MQ29sbGVjdGlv
bj4gSFRNTENvbGxlY3Rpb246OmNyZWF0ZShDb250YWluZXJOb2RlJiBiYXNlLCBDb2xsZWN0aW9u
VHlwZSB0eXBlKQotewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEhUTUxDb2xsZWN0aW9uKGJh
c2UsIHR5cGUpKTsKLX0KLQogSFRNTENvbGxlY3Rpb246On5IVE1MQ29sbGVjdGlvbigpCiB7Ci0g
ICAgaWYgKG1faW5kZXhDYWNoZS5oYXNWYWxpZENhY2hlKCp0aGlzKSkKLSAgICAgICAgZG9jdW1l
bnQoKS51bnJlZ2lzdGVyQ29sbGVjdGlvbigqdGhpcyk7CiAgICAgaWYgKGhhc05hbWVkRWxlbWVu
dENhY2hlKCkpCiAgICAgICAgIGRvY3VtZW50KCkuY29sbGVjdGlvbldpbGxDbGVhcklkTmFtZU1h
cCgqdGhpcyk7CisKICAgICAvLyBIVE1MTmFtZUNvbGxlY3Rpb24gcmVtb3ZlcyBjYWNoZSBieSBp
dHNlbGYuCiAgICAgaWYgKHR5cGUoKSAhPSBXaW5kb3dOYW1lZEl0ZW1zICYmIHR5cGUoKSAhPSBE
b2N1bWVudE5hbWVkSXRlbXMpCiAgICAgICAgIG93bmVyTm9kZSgpLm5vZGVMaXN0cygpLT5yZW1v
dmVDYWNoZWRDb2xsZWN0aW9uKHRoaXMpOwogfQogCi1Db250YWluZXJOb2RlJiBIVE1MQ29sbGVj
dGlvbjo6cm9vdE5vZGUoKSBjb25zdAotewotICAgIGlmIChpc1Jvb3RlZEF0RG9jdW1lbnQoKSAm
JiBvd25lck5vZGUoKS5pbkRvY3VtZW50KCkpCi0gICAgICAgIHJldHVybiBvd25lck5vZGUoKS5k
b2N1bWVudCgpOwotCi0gICAgcmV0dXJuIG93bmVyTm9kZSgpOwotfQotCi1zdGF0aWMgaW5saW5l
IGJvb2wgaXNNYXRjaGluZ0hUTUxFbGVtZW50KGNvbnN0IEhUTUxDb2xsZWN0aW9uJiBjb2xsZWN0
aW9uLCBIVE1MRWxlbWVudCYgZWxlbWVudCkKK3ZvaWQgSFRNTENvbGxlY3Rpb246OmludmFsaWRh
dGVDYWNoZShEb2N1bWVudCYgZG9jdW1lbnQpCiB7Ci0gICAgc3dpdGNoIChjb2xsZWN0aW9uLnR5
cGUoKSkgewotICAgIGNhc2UgRG9jSW1hZ2VzOgotICAgICAgICByZXR1cm4gZWxlbWVudC5oYXNU
YWdOYW1lKGltZ1RhZyk7Ci0gICAgY2FzZSBEb2NTY3JpcHRzOgotICAgICAgICByZXR1cm4gZWxl
bWVudC5oYXNUYWdOYW1lKHNjcmlwdFRhZyk7Ci0gICAgY2FzZSBEb2NGb3JtczoKLSAgICAgICAg
cmV0dXJuIGVsZW1lbnQuaGFzVGFnTmFtZShmb3JtVGFnKTsKLSAgICBjYXNlIFRhYmxlVEJvZGll
czoKLSAgICAgICAgcmV0dXJuIGVsZW1lbnQuaGFzVGFnTmFtZSh0Ym9keVRhZyk7Ci0gICAgY2Fz
ZSBUUkNlbGxzOgotICAgICAgICByZXR1cm4gZWxlbWVudC5oYXNUYWdOYW1lKHRkVGFnKSB8fCBl
bGVtZW50Lmhhc1RhZ05hbWUodGhUYWcpOwotICAgIGNhc2UgVFNlY3Rpb25Sb3dzOgotICAgICAg
ICByZXR1cm4gZWxlbWVudC5oYXNUYWdOYW1lKHRyVGFnKTsKLSAgICBjYXNlIFNlbGVjdE9wdGlv
bnM6Ci0gICAgICAgIHJldHVybiBlbGVtZW50Lmhhc1RhZ05hbWUob3B0aW9uVGFnKTsKLSAgICBj
YXNlIFNlbGVjdGVkT3B0aW9uczoKLSAgICAgICAgcmV0dXJuIGlzPEhUTUxPcHRpb25FbGVtZW50
PihlbGVtZW50KSAmJiBkb3duY2FzdDxIVE1MT3B0aW9uRWxlbWVudD4oZWxlbWVudCkuc2VsZWN0
ZWQoKTsKLSAgICBjYXNlIERhdGFMaXN0T3B0aW9uczoKLSAgICAgICAgaWYgKGlzPEhUTUxPcHRp
b25FbGVtZW50PihlbGVtZW50KSkgewotICAgICAgICAgICAgSFRNTE9wdGlvbkVsZW1lbnQmIG9w
dGlvbiA9IGRvd25jYXN0PEhUTUxPcHRpb25FbGVtZW50PihlbGVtZW50KTsKLSAgICAgICAgICAg
IGlmICghb3B0aW9uLmlzRGlzYWJsZWRGb3JtQ29udHJvbCgpICYmICFvcHRpb24udmFsdWUoKS5p
c0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIGNhc2UgTWFwQXJlYXM6Ci0gICAgICAgIHJldHVybiBlbGVt
ZW50Lmhhc1RhZ05hbWUoYXJlYVRhZyk7Ci0gICAgY2FzZSBEb2NBcHBsZXRzOgotICAgICAgICBy
ZXR1cm4gaXM8SFRNTEFwcGxldEVsZW1lbnQ+KGVsZW1lbnQpIHx8IChpczxIVE1MT2JqZWN0RWxl
bWVudD4oZWxlbWVudCkgJiYgZG93bmNhc3Q8SFRNTE9iamVjdEVsZW1lbnQ+KGVsZW1lbnQpLmNv
bnRhaW5zSmF2YUFwcGxldCgpKTsKLSAgICBjYXNlIERvY0VtYmVkczoKLSAgICAgICAgcmV0dXJu
IGVsZW1lbnQuaGFzVGFnTmFtZShlbWJlZFRhZyk7Ci0gICAgY2FzZSBEb2NMaW5rczoKLSAgICAg
ICAgcmV0dXJuIChlbGVtZW50Lmhhc1RhZ05hbWUoYVRhZykgfHwgZWxlbWVudC5oYXNUYWdOYW1l
KGFyZWFUYWcpKSAmJiBlbGVtZW50LmZhc3RIYXNBdHRyaWJ1dGUoaHJlZkF0dHIpOwotICAgIGNh
c2UgRG9jQW5jaG9yczoKLSAgICAgICAgcmV0dXJuIGVsZW1lbnQuaGFzVGFnTmFtZShhVGFnKSAm
JiBlbGVtZW50LmZhc3RIYXNBdHRyaWJ1dGUobmFtZUF0dHIpOwotICAgIGNhc2UgRG9jdW1lbnRO
YW1lZEl0ZW1zOgotICAgICAgICByZXR1cm4gZG93bmNhc3Q8RG9jdW1lbnROYW1lQ29sbGVjdGlv
bj4oY29sbGVjdGlvbikuZWxlbWVudE1hdGNoZXMoZWxlbWVudCk7Ci0gICAgY2FzZSBEb2NBbGw6
Ci0gICAgY2FzZSBOb2RlQ2hpbGRyZW46Ci0gICAgY2FzZSBXaW5kb3dOYW1lZEl0ZW1zOgotICAg
IGNhc2UgRm9ybUNvbnRyb2xzOgotICAgIGNhc2UgVGFibGVSb3dzOgotICAgICAgICBicmVhazsK
LSAgICB9Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIGZhbHNlOwotfQot
Ci1zdGF0aWMgaW5saW5lIGJvb2wgaXNNYXRjaGluZ0VsZW1lbnQoY29uc3QgSFRNTENvbGxlY3Rp
b24mIGNvbGxlY3Rpb24sIEVsZW1lbnQmIGVsZW1lbnQpCi17Ci0gICAgLy8gQ29sbGVjdGlvbiB0
eXBlcyB0aGF0IGRlYWwgd2l0aCBhbnkgdHlwZSBvZiBFbGVtZW50cywgbm90IGp1c3QgSFRNTEVs
ZW1lbnRzLgotICAgIHN3aXRjaCAoY29sbGVjdGlvbi50eXBlKCkpIHsKLSAgICBjYXNlIERvY0Fs
bDoKLSAgICBjYXNlIE5vZGVDaGlsZHJlbjoKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgY2Fz
ZSBXaW5kb3dOYW1lZEl0ZW1zOgotICAgICAgICByZXR1cm4gZG93bmNhc3Q8V2luZG93TmFtZUNv
bGxlY3Rpb24+KGNvbGxlY3Rpb24pLmVsZW1lbnRNYXRjaGVzKGVsZW1lbnQpOwotICAgIGRlZmF1
bHQ6Ci0gICAgICAgIC8vIENvbGxlY3Rpb24gdHlwZXMgdGhhdCBvbmx5IGRlYWwgd2l0aCBIVE1M
RWxlbWVudHMuCi0gICAgICAgIHJldHVybiBpczxIVE1MRWxlbWVudD4oZWxlbWVudCkgJiYgaXNN
YXRjaGluZ0hUTUxFbGVtZW50KGNvbGxlY3Rpb24sIGRvd25jYXN0PEhUTUxFbGVtZW50PihlbGVt
ZW50KSk7Ci0gICAgfQotfQotCi1zdGF0aWMgaW5saW5lIEVsZW1lbnQqIHByZXZpb3VzRWxlbWVu
dChDb250YWluZXJOb2RlJiBiYXNlLCBFbGVtZW50JiBlbGVtZW50LCBib29sIG9ubHlJbmNsdWRl
RGlyZWN0Q2hpbGRyZW4pCi17Ci0gICAgcmV0dXJuIG9ubHlJbmNsdWRlRGlyZWN0Q2hpbGRyZW4g
PyBFbGVtZW50VHJhdmVyc2FsOjpwcmV2aW91c1NpYmxpbmcoZWxlbWVudCkgOiBFbGVtZW50VHJh
dmVyc2FsOjpwcmV2aW91cyhlbGVtZW50LCAmYmFzZSk7Ci19Ci0KLUFMV0FZU19JTkxJTkUgRWxl
bWVudCogSFRNTENvbGxlY3Rpb246Oml0ZXJhdGVGb3JQcmV2aW91c0VsZW1lbnQoRWxlbWVudCog
ZWxlbWVudCkgY29uc3QKLXsKLSAgICBib29sIG9ubHlJbmNsdWRlRGlyZWN0Q2hpbGRyZW4gPSBt
X3Nob3VsZE9ubHlJbmNsdWRlRGlyZWN0Q2hpbGRyZW47Ci0gICAgQ29udGFpbmVyTm9kZSYgcm9v
dE5vZGUgPSB0aGlzLT5yb290Tm9kZSgpOwotICAgIGZvciAoOyBlbGVtZW50OyBlbGVtZW50ID0g
cHJldmlvdXNFbGVtZW50KHJvb3ROb2RlLCAqZWxlbWVudCwgb25seUluY2x1ZGVEaXJlY3RDaGls
ZHJlbikpIHsKLSAgICAgICAgaWYgKGlzTWF0Y2hpbmdFbGVtZW50KCp0aGlzLCAqZWxlbWVudCkp
Ci0gICAgICAgICAgICByZXR1cm4gZWxlbWVudDsKLSAgICB9Ci0gICAgcmV0dXJuIG51bGxwdHI7
Ci19Ci0KLXN0YXRpYyBpbmxpbmUgRWxlbWVudCogZmlyc3RNYXRjaGluZ0VsZW1lbnQoY29uc3Qg
SFRNTENvbGxlY3Rpb24mIGNvbGxlY3Rpb24sIENvbnRhaW5lck5vZGUmIHJvb3QpCi17Ci0gICAg
RWxlbWVudCogZWxlbWVudCA9IEVsZW1lbnRUcmF2ZXJzYWw6OmZpcnN0V2l0aGluKHJvb3QpOwot
ICAgIHdoaWxlIChlbGVtZW50ICYmICFpc01hdGNoaW5nRWxlbWVudChjb2xsZWN0aW9uLCAqZWxl
bWVudCkpCi0gICAgICAgIGVsZW1lbnQgPSBFbGVtZW50VHJhdmVyc2FsOjpuZXh0KCplbGVtZW50
LCAmcm9vdCk7Ci0gICAgcmV0dXJuIGVsZW1lbnQ7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgRWxlbWVu
dCogbmV4dE1hdGNoaW5nRWxlbWVudChjb25zdCBIVE1MQ29sbGVjdGlvbiYgY29sbGVjdGlvbiwg
RWxlbWVudCYgZWxlbWVudCwgQ29udGFpbmVyTm9kZSYgcm9vdCkKLXsKLSAgICBFbGVtZW50KiBu
ZXh0ID0gJmVsZW1lbnQ7Ci0gICAgZG8gewotICAgICAgICBuZXh0ID0gRWxlbWVudFRyYXZlcnNh
bDo6bmV4dCgqbmV4dCwgJnJvb3QpOwotICAgIH0gd2hpbGUgKG5leHQgJiYgIWlzTWF0Y2hpbmdF
bGVtZW50KGNvbGxlY3Rpb24sICpuZXh0KSk7Ci0gICAgcmV0dXJuIG5leHQ7Ci19Ci0KLXVuc2ln
bmVkIEhUTUxDb2xsZWN0aW9uOjpsZW5ndGgoKSBjb25zdAotewotICAgIHJldHVybiBtX2luZGV4
Q2FjaGUubm9kZUNvdW50KCp0aGlzKTsKLX0KLQotRWxlbWVudCogSFRNTENvbGxlY3Rpb246Oml0
ZW0odW5zaWduZWQgb2Zmc2V0KSBjb25zdAotewotICAgIHJldHVybiBtX2luZGV4Q2FjaGUubm9k
ZUF0KCp0aGlzLCBvZmZzZXQpOwotfQotCi1zdGF0aWMgaW5saW5lIGJvb2wgbmFtZVNob3VsZEJl
VmlzaWJsZUluRG9jdW1lbnRBbGwoSFRNTEVsZW1lbnQmIGVsZW1lbnQpCi17Ci0gICAgLy8gVGhl
IGRvY3VtZW50LmFsbCBjb2xsZWN0aW9uIHJldHVybnMgb25seSBjZXJ0YWluIHR5cGVzIG9mIGVs
ZW1lbnRzIGJ5IG5hbWUsCi0gICAgLy8gYWx0aG91Z2ggaXQgcmV0dXJucyBhbnkgdHlwZSBvZiBl
bGVtZW50IGJ5IGlkLgotICAgIHJldHVybiBlbGVtZW50Lmhhc1RhZ05hbWUoYXBwbGV0VGFnKQot
ICAgICAgICB8fCBlbGVtZW50Lmhhc1RhZ05hbWUoZW1iZWRUYWcpCi0gICAgICAgIHx8IGVsZW1l
bnQuaGFzVGFnTmFtZShmb3JtVGFnKQotICAgICAgICB8fCBlbGVtZW50Lmhhc1RhZ05hbWUoaW1n
VGFnKQotICAgICAgICB8fCBlbGVtZW50Lmhhc1RhZ05hbWUoaW5wdXRUYWcpCi0gICAgICAgIHx8
IGVsZW1lbnQuaGFzVGFnTmFtZShvYmplY3RUYWcpCi0gICAgICAgIHx8IGVsZW1lbnQuaGFzVGFn
TmFtZShzZWxlY3RUYWcpOwotfQotCi1zdGF0aWMgaW5saW5lIGJvb2wgbmFtZVNob3VsZEJlVmlz
aWJsZUluRG9jdW1lbnRBbGwoRWxlbWVudCYgZWxlbWVudCkKLXsKLSAgICByZXR1cm4gaXM8SFRN
TEVsZW1lbnQ+KGVsZW1lbnQpICYmIG5hbWVTaG91bGRCZVZpc2libGVJbkRvY3VtZW50QWxsKGRv
d25jYXN0PEhUTUxFbGVtZW50PihlbGVtZW50KSk7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgRWxlbWVu
dCogZmlyc3RNYXRjaGluZ0NoaWxkRWxlbWVudChjb25zdCBIVE1MQ29sbGVjdGlvbiYgbm9kZUxp
c3QsIENvbnRhaW5lck5vZGUmIHJvb3QpCi17Ci0gICAgRWxlbWVudCogZWxlbWVudCA9IEVsZW1l
bnRUcmF2ZXJzYWw6OmZpcnN0V2l0aGluKHJvb3QpOwotICAgIHdoaWxlIChlbGVtZW50ICYmICFp
c01hdGNoaW5nRWxlbWVudChub2RlTGlzdCwgKmVsZW1lbnQpKQotICAgICAgICBlbGVtZW50ID0g
RWxlbWVudFRyYXZlcnNhbDo6bmV4dFNpYmxpbmcoKmVsZW1lbnQpOwotICAgIHJldHVybiBlbGVt
ZW50OwotfQotCi1zdGF0aWMgaW5saW5lIEVsZW1lbnQqIG5leHRNYXRjaGluZ1NpYmxpbmdFbGVt
ZW50KGNvbnN0IEhUTUxDb2xsZWN0aW9uJiBub2RlTGlzdCwgRWxlbWVudCYgZWxlbWVudCkKLXsK
LSAgICBFbGVtZW50KiBuZXh0ID0gJmVsZW1lbnQ7Ci0gICAgZG8gewotICAgICAgICBuZXh0ID0g
RWxlbWVudFRyYXZlcnNhbDo6bmV4dFNpYmxpbmcoKm5leHQpOwotICAgIH0gd2hpbGUgKG5leHQg
JiYgIWlzTWF0Y2hpbmdFbGVtZW50KG5vZGVMaXN0LCAqbmV4dCkpOwotICAgIHJldHVybiBuZXh0
OwotfQotCi1pbmxpbmUgYm9vbCBIVE1MQ29sbGVjdGlvbjo6dXNlc0N1c3RvbUZvcndhcmRPbmx5
VHJhdmVyc2FsKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV91c2VzQ3VzdG9tRm9yd2FyZE9ubHlU
cmF2ZXJzYWw7Ci19Ci0KLWlubGluZSBFbGVtZW50KiBIVE1MQ29sbGVjdGlvbjo6Zmlyc3RFbGVt
ZW50KENvbnRhaW5lck5vZGUmIHJvb3QpIGNvbnN0Ci17Ci0gICAgaWYgKHVzZXNDdXN0b21Gb3J3
YXJkT25seVRyYXZlcnNhbCgpKQotICAgICAgICByZXR1cm4gY3VzdG9tRWxlbWVudEFmdGVyKG51
bGxwdHIpOwotICAgIGlmIChtX3Nob3VsZE9ubHlJbmNsdWRlRGlyZWN0Q2hpbGRyZW4pCi0gICAg
ICAgIHJldHVybiBmaXJzdE1hdGNoaW5nQ2hpbGRFbGVtZW50KCp0aGlzLCByb290KTsKLSAgICBy
ZXR1cm4gZmlyc3RNYXRjaGluZ0VsZW1lbnQoKnRoaXMsIHJvb3QpOwotfQotCi1pbmxpbmUgRWxl
bWVudCogSFRNTENvbGxlY3Rpb246OnRyYXZlcnNlRm9yd2FyZChFbGVtZW50JiBjdXJyZW50LCB1
bnNpZ25lZCBjb3VudCwgdW5zaWduZWQmIHRyYXZlcnNlZENvdW50LCBDb250YWluZXJOb2RlJiBy
b290KSBjb25zdAotewotICAgIEVsZW1lbnQqIGVsZW1lbnQgPSAmY3VycmVudDsKLSAgICBpZiAo
dXNlc0N1c3RvbUZvcndhcmRPbmx5VHJhdmVyc2FsKCkpIHsKLSAgICAgICAgZm9yICh0cmF2ZXJz
ZWRDb3VudCA9IDA7IHRyYXZlcnNlZENvdW50IDwgY291bnQ7ICsrdHJhdmVyc2VkQ291bnQpIHsK
LSAgICAgICAgICAgIGVsZW1lbnQgPSBjdXN0b21FbGVtZW50QWZ0ZXIoZWxlbWVudCk7Ci0gICAg
ICAgICAgICBpZiAoIWVsZW1lbnQpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0g
ICAgICAgIH0KLSAgICB9IGVsc2UgaWYgKG1fc2hvdWxkT25seUluY2x1ZGVEaXJlY3RDaGlsZHJl
bikgewotICAgICAgICBmb3IgKHRyYXZlcnNlZENvdW50ID0gMDsgdHJhdmVyc2VkQ291bnQgPCBj
b3VudDsgKyt0cmF2ZXJzZWRDb3VudCkgewotICAgICAgICAgICAgZWxlbWVudCA9IG5leHRNYXRj
aGluZ1NpYmxpbmdFbGVtZW50KCp0aGlzLCAqZWxlbWVudCk7Ci0gICAgICAgICAgICBpZiAoIWVs
ZW1lbnQpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIH0KLSAgICB9
IGVsc2UgewotICAgICAgICBmb3IgKHRyYXZlcnNlZENvdW50ID0gMDsgdHJhdmVyc2VkQ291bnQg
PCBjb3VudDsgKyt0cmF2ZXJzZWRDb3VudCkgewotICAgICAgICAgICAgZWxlbWVudCA9IG5leHRN
YXRjaGluZ0VsZW1lbnQoKnRoaXMsICplbGVtZW50LCByb290KTsKLSAgICAgICAgICAgIGlmICgh
ZWxlbWVudCkKLSAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgfQotICAg
IH0KLSAgICByZXR1cm4gZWxlbWVudDsKLX0KLQotRWxlbWVudCogSFRNTENvbGxlY3Rpb246OmNv
bGxlY3Rpb25CZWdpbigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGZpcnN0RWxlbWVudChyb290Tm9k
ZSgpKTsKLX0KLQotRWxlbWVudCogSFRNTENvbGxlY3Rpb246OmNvbGxlY3Rpb25MYXN0KCkgY29u
c3QKLXsKLSAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgb3B0aW1pemVkIHNpbWlsYXJseSB0
byB0aGUgZm9yd2FyZCBjYXNlLgotICAgIGF1dG8mIHJvb3QgPSByb290Tm9kZSgpOwotICAgIEVs
ZW1lbnQqIGxhc3QgPSBtX3Nob3VsZE9ubHlJbmNsdWRlRGlyZWN0Q2hpbGRyZW4gPyBFbGVtZW50
VHJhdmVyc2FsOjpsYXN0Q2hpbGQocm9vdCkgOiBFbGVtZW50VHJhdmVyc2FsOjpsYXN0V2l0aGlu
KHJvb3QpOwotICAgIHJldHVybiBpdGVyYXRlRm9yUHJldmlvdXNFbGVtZW50KGxhc3QpOwotfQot
Ci12b2lkIEhUTUxDb2xsZWN0aW9uOjpjb2xsZWN0aW9uVHJhdmVyc2VGb3J3YXJkKEVsZW1lbnQq
JiBjdXJyZW50LCB1bnNpZ25lZCBjb3VudCwgdW5zaWduZWQmIHRyYXZlcnNlZENvdW50KSBjb25z
dAotewotICAgIGN1cnJlbnQgPSB0cmF2ZXJzZUZvcndhcmQoKmN1cnJlbnQsIGNvdW50LCB0cmF2
ZXJzZWRDb3VudCwgcm9vdE5vZGUoKSk7Ci19Ci0KLXZvaWQgSFRNTENvbGxlY3Rpb246OmNvbGxl
Y3Rpb25UcmF2ZXJzZUJhY2t3YXJkKEVsZW1lbnQqJiBjdXJyZW50LCB1bnNpZ25lZCBjb3VudCkg
Y29uc3QKLXsKLSAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgb3B0aW1pemVkIHNpbWlsYXJs
eSB0byB0aGUgZm9yd2FyZCBjYXNlLgotICAgIGlmIChtX3Nob3VsZE9ubHlJbmNsdWRlRGlyZWN0
Q2hpbGRyZW4pIHsKLSAgICAgICAgZm9yICg7IGNvdW50ICYmIGN1cnJlbnQ7IC0tY291bnQpCi0g
ICAgICAgICAgICBjdXJyZW50ID0gaXRlcmF0ZUZvclByZXZpb3VzRWxlbWVudChFbGVtZW50VHJh
dmVyc2FsOjpwcmV2aW91c1NpYmxpbmcoKmN1cnJlbnQpKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLSAgICBhdXRvJiByb290ID0gcm9vdE5vZGUoKTsKLSAgICBmb3IgKDsgY291bnQgJiYgY3Vy
cmVudDsgLS1jb3VudCkKLSAgICAgICAgY3VycmVudCA9IGl0ZXJhdGVGb3JQcmV2aW91c0VsZW1l
bnQoRWxlbWVudFRyYXZlcnNhbDo6cHJldmlvdXMoKmN1cnJlbnQsICZyb290KSk7Ci19Ci0KLXZv
aWQgSFRNTENvbGxlY3Rpb246OmludmFsaWRhdGVDYWNoZShEb2N1bWVudCYgZG9jdW1lbnQpIGNv
bnN0Ci17Ci0gICAgaWYgKG1faW5kZXhDYWNoZS5oYXNWYWxpZENhY2hlKCp0aGlzKSkgewotICAg
ICAgICBkb2N1bWVudC51bnJlZ2lzdGVyQ29sbGVjdGlvbihjb25zdF9jYXN0PEhUTUxDb2xsZWN0
aW9uJj4oKnRoaXMpKTsKLSAgICAgICAgbV9pbmRleENhY2hlLmludmFsaWRhdGUoKnRoaXMpOwot
ICAgIH0KICAgICBpZiAoaGFzTmFtZWRFbGVtZW50Q2FjaGUoKSkKICAgICAgICAgaW52YWxpZGF0
ZU5hbWVkRWxlbWVudENhY2hlKGRvY3VtZW50KTsKIH0KQEAgLTQwMCwzOCArMTMzLDYgQEAgdm9p
ZCBIVE1MQ29sbGVjdGlvbjo6aW52YWxpZGF0ZU5hbWVkRWxlbWVudENhY2hlKERvY3VtZW50JiBk
b2N1bWVudCkgY29uc3QKIAogRWxlbWVudCogSFRNTENvbGxlY3Rpb246Om5hbWVkSXRlbShjb25z
dCBBdG9taWNTdHJpbmcmIG5hbWUpIGNvbnN0CiB7Ci0gICAgLy8gaHR0cDovL21zZG4ubWljcm9z
b2Z0LmNvbS93b3Jrc2hvcC9hdXRob3IvZGh0bWwvcmVmZXJlbmNlL21ldGhvZHMvbmFtZWRpdGVt
LmFzcAotICAgIC8vIFRoaXMgbWV0aG9kIGZpcnN0IHNlYXJjaGVzIGZvciBhbiBvYmplY3Qgd2l0
aCBhIG1hdGNoaW5nIGlkCi0gICAgLy8gYXR0cmlidXRlLiBJZiBhIG1hdGNoIGlzIG5vdCBmb3Vu
ZCwgdGhlIG1ldGhvZCB0aGVuIHNlYXJjaGVzIGZvciBhbgotICAgIC8vIG9iamVjdCB3aXRoIGEg
bWF0Y2hpbmcgbmFtZSBhdHRyaWJ1dGUsIGJ1dCBvbmx5IG9uIHRob3NlIGVsZW1lbnRzCi0gICAg
Ly8gdGhhdCBhcmUgYWxsb3dlZCBhIG5hbWUgYXR0cmlidXRlLgotCi0gICAgaWYgKG5hbWUuaXNF
bXB0eSgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIENvbnRhaW5lck5vZGUmIHJv
b3QgPSByb290Tm9kZSgpOwotICAgIGlmICghdXNlc0N1c3RvbUZvcndhcmRPbmx5VHJhdmVyc2Fs
KCkgJiYgcm9vdC5pc0luVHJlZVNjb3BlKCkpIHsKLSAgICAgICAgRWxlbWVudCogY2FuZGlkYXRl
ID0gbnVsbHB0cjsKLQotICAgICAgICBUcmVlU2NvcGUmIHRyZWVTY29wZSA9IHJvb3QudHJlZVNj
b3BlKCk7Ci0gICAgICAgIGlmICh0cmVlU2NvcGUuaGFzRWxlbWVudFdpdGhJZCgqbmFtZS5pbXBs
KCkpKSB7Ci0gICAgICAgICAgICBpZiAoIXRyZWVTY29wZS5jb250YWluc011bHRpcGxlRWxlbWVu
dHNXaXRoSWQobmFtZSkpCi0gICAgICAgICAgICAgICAgY2FuZGlkYXRlID0gdHJlZVNjb3BlLmdl
dEVsZW1lbnRCeUlkKG5hbWUpOwotICAgICAgICB9IGVsc2UgaWYgKHRyZWVTY29wZS5oYXNFbGVt
ZW50V2l0aE5hbWUoKm5hbWUuaW1wbCgpKSkgewotICAgICAgICAgICAgaWYgKCF0cmVlU2NvcGUu
Y29udGFpbnNNdWx0aXBsZUVsZW1lbnRzV2l0aE5hbWUobmFtZSkpIHsKLSAgICAgICAgICAgICAg
ICBjYW5kaWRhdGUgPSB0cmVlU2NvcGUuZ2V0RWxlbWVudEJ5TmFtZShuYW1lKTsKLSAgICAgICAg
ICAgICAgICBpZiAoY2FuZGlkYXRlICYmIHR5cGUoKSA9PSBEb2NBbGwgJiYgIW5hbWVTaG91bGRC
ZVZpc2libGVJbkRvY3VtZW50QWxsKCpjYW5kaWRhdGUpKQotICAgICAgICAgICAgICAgICAgICBj
YW5kaWRhdGUgPSBudWxscHRyOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UKLSAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgICAgIGlmIChjYW5kaWRhdGUgJiYgaXNNYXRj
aGluZ0VsZW1lbnQoKnRoaXMsICpjYW5kaWRhdGUpKSB7Ci0gICAgICAgICAgICBpZiAobV9zaG91
bGRPbmx5SW5jbHVkZURpcmVjdENoaWxkcmVuID8gY2FuZGlkYXRlLT5wYXJlbnROb2RlKCkgPT0g
JnJvb3QgOiBjYW5kaWRhdGUtPmlzRGVzY2VuZGFudE9mKCZyb290KSkKLSAgICAgICAgICAgICAg
ICByZXR1cm4gY2FuZGlkYXRlOwotICAgICAgICB9Ci0gICAgfQotCiAgICAgLy8gVGhlIHBhdGhv
bG9naWNhbCBjYXNlLiBXZSBuZWVkIHRvIHdhbGsgdGhlIGVudGlyZSBzdWJ0cmVlLgogICAgIHVw
ZGF0ZU5hbWVkRWxlbWVudENhY2hlKCk7CiAgICAgQVNTRVJUKG1fbmFtZWRFbGVtZW50Q2FjaGUp
OwpAQCAtNDU2LDkgKzE1Nyw5IEBAIHZvaWQgSFRNTENvbGxlY3Rpb246OnVwZGF0ZU5hbWVkRWxl
bWVudENhY2hlKCkgY29uc3QKIAogICAgIGF1dG8gY2FjaGUgPSBzdGQ6Om1ha2VfdW5pcXVlPENv
bGxlY3Rpb25OYW1lZEVsZW1lbnRDYWNoZT4oKTsKIAotICAgIHVuc2lnbmVkIHNpemUgPSBtX2lu
ZGV4Q2FjaGUubm9kZUNvdW50KCp0aGlzKTsKKyAgICB1bnNpZ25lZCBzaXplID0gbGVuZ3RoKCk7
CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7ICsraSkgewotICAgICAgICBFbGVt
ZW50JiBlbGVtZW50ID0gKm1faW5kZXhDYWNoZS5ub2RlQXQoKnRoaXMsIGkpOworICAgICAgICBF
bGVtZW50JiBlbGVtZW50ID0gKml0ZW0oaSk7CiAgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYg
aWQgPSBlbGVtZW50LmdldElkQXR0cmlidXRlKCk7CiAgICAgICAgIGlmICghaWQuaXNFbXB0eSgp
KQogICAgICAgICAgICAgY2FjaGUtPmFwcGVuZFRvSWRDYWNoZShpZCwgZWxlbWVudCk7CkBAIC01
MTMsMTAgKzIxNCw0IEBAIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IEhUTUxDb2xsZWN0aW9uOjp0YWdz
KGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICByZXR1cm4gb3duZXJOb2RlKCkuZ2V0RWxlbWVudHNC
eVRhZ05hbWUobmFtZSk7CiB9CiAKLUVsZW1lbnQqIEhUTUxDb2xsZWN0aW9uOjpjdXN0b21FbGVt
ZW50QWZ0ZXIoRWxlbWVudCopIGNvbnN0Ci17Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0g
ICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTENvbGxlY3Rpb24uaAppbmRleCA0NzE0ZTkwOGRkYjVkOWI4ODljM2I2Y2U2NTdh
MTQwZDdhM2M1OWUyLi5lNmQ4Y2U2MjQ3ZTUzYTcwMDc3ZGI2NGI2NjgwMjU1YjIxYTYzNWYwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5oCkBAIC02MCw1NyArNjAsMzggQEAgcHJp
dmF0ZToKIAogY2xhc3MgSFRNTENvbGxlY3Rpb24gOiBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlLCBw
dWJsaWMgUmVmQ291bnRlZDxIVE1MQ29sbGVjdGlvbj4gewogcHVibGljOgotICAgIHN0YXRpYyBS
ZWY8SFRNTENvbGxlY3Rpb24+IGNyZWF0ZShDb250YWluZXJOb2RlJiBiYXNlLCBDb2xsZWN0aW9u
VHlwZSk7CiAgICAgdmlydHVhbCB+SFRNTENvbGxlY3Rpb24oKTsKIAogICAgIC8vIERPTSBBUEkK
LSAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdDsKLSAgICBFbGVtZW50KiBpdGVtKHVuc2lnbmVk
IG9mZnNldCkgY29uc3Q7CisgICAgdmlydHVhbCB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCA9IDA7
CisgICAgdmlydHVhbCBFbGVtZW50KiBpdGVtKHVuc2lnbmVkIG9mZnNldCkgY29uc3QgPSAwOwog
ICAgIHZpcnR1YWwgRWxlbWVudCogbmFtZWRJdGVtKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkg
Y29uc3Q7CiAgICAgUGFzc1JlZlB0cjxOb2RlTGlzdD4gdGFncyhjb25zdCBTdHJpbmcmKTsKIAog
ICAgIC8vIE5vbi1ET00gQVBJCiAgICAgYm9vbCBoYXNOYW1lZEl0ZW0oY29uc3QgQXRvbWljU3Ry
aW5nJiBuYW1lKSBjb25zdDsKICAgICBWZWN0b3I8UmVmPEVsZW1lbnQ+PiBuYW1lZEl0ZW1zKGNv
bnN0IEF0b21pY1N0cmluZyYgbmFtZSkgY29uc3Q7Ci0gICAgc2l6ZV90IG1lbW9yeUNvc3QoKSBj
b25zdDsKKyAgICB2aXJ0dWFsIHNpemVfdCBtZW1vcnlDb3N0KCkgY29uc3Q7CiAKICAgICBib29s
IGlzUm9vdGVkQXREb2N1bWVudCgpIGNvbnN0OwogICAgIE5vZGVMaXN0SW52YWxpZGF0aW9uVHlw
ZSBpbnZhbGlkYXRpb25UeXBlKCkgY29uc3Q7CiAgICAgQ29sbGVjdGlvblR5cGUgdHlwZSgpIGNv
bnN0OwogICAgIENvbnRhaW5lck5vZGUmIG93bmVyTm9kZSgpIGNvbnN0OwotICAgIHZvaWQgaW52
YWxpZGF0ZUNhY2hlKGNvbnN0IFF1YWxpZmllZE5hbWUqIGF0dHJpYnV0ZU5hbWUpIGNvbnN0Owot
ICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlQ2FjaGUoRG9jdW1lbnQmKSBjb25zdDsKLQotICAg
IC8vIEZvciBDb2xsZWN0aW9uSW5kZXhDYWNoZTsgZG8gbm90IHVzZSBlbHNld2hlcmUuCi0gICAg
RWxlbWVudCogY29sbGVjdGlvbkJlZ2luKCkgY29uc3Q7Ci0gICAgRWxlbWVudCogY29sbGVjdGlv
bkxhc3QoKSBjb25zdDsKLSAgICBFbGVtZW50KiBjb2xsZWN0aW9uRW5kKCkgY29uc3Q7Ci0gICAg
dm9pZCBjb2xsZWN0aW9uVHJhdmVyc2VGb3J3YXJkKEVsZW1lbnQqJiwgdW5zaWduZWQgY291bnQs
IHVuc2lnbmVkJiB0cmF2ZXJzZWRDb3VudCkgY29uc3Q7Ci0gICAgdm9pZCBjb2xsZWN0aW9uVHJh
dmVyc2VCYWNrd2FyZChFbGVtZW50KiYsIHVuc2lnbmVkIGNvdW50KSBjb25zdDsKLSAgICBib29s
IGNvbGxlY3Rpb25DYW5UcmF2ZXJzZUJhY2t3YXJkKCkgY29uc3Q7Ci0gICAgdm9pZCB3aWxsVmFs
aWRhdGVJbmRleENhY2hlKCkgY29uc3Q7CisgICAgdm9pZCBpbnZhbGlkYXRlQ2FjaGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSogYXR0cmlidXRlTmFtZSk7CisgICAgdmlydHVhbCB2b2lkIGludmFsaWRh
dGVDYWNoZShEb2N1bWVudCYpOwogCiAgICAgYm9vbCBoYXNOYW1lZEVsZW1lbnRDYWNoZSgpIGNv
bnN0OwogCiBwcm90ZWN0ZWQ6Ci0gICAgZW51bSBFbGVtZW50VHJhdmVyc2FsVHlwZSB7IE5vcm1h
bFRyYXZlcnNhbCwgQ3VzdG9tRm9yd2FyZE9ubHlUcmF2ZXJzYWwgfTsKLSAgICBIVE1MQ29sbGVj
dGlvbihDb250YWluZXJOb2RlJiBiYXNlLCBDb2xsZWN0aW9uVHlwZSwgRWxlbWVudFRyYXZlcnNh
bFR5cGUgPSBOb3JtYWxUcmF2ZXJzYWwpOworICAgIEhUTUxDb2xsZWN0aW9uKENvbnRhaW5lck5v
ZGUmIGJhc2UsIENvbGxlY3Rpb25UeXBlKTsKIAogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVOYW1l
ZEVsZW1lbnRDYWNoZSgpIGNvbnN0OwogCiAgICAgdm9pZCBzZXROYW1lZEl0ZW1DYWNoZShzdGQ6
OnVuaXF1ZV9wdHI8Q29sbGVjdGlvbk5hbWVkRWxlbWVudENhY2hlPikgY29uc3Q7CiAgICAgY29u
c3QgQ29sbGVjdGlvbk5hbWVkRWxlbWVudENhY2hlJiBuYW1lZEl0ZW1DYWNoZXMoKSBjb25zdDsK
IAotcHJpdmF0ZToKICAgICBEb2N1bWVudCYgZG9jdW1lbnQoKSBjb25zdDsKICAgICBDb250YWlu
ZXJOb2RlJiByb290Tm9kZSgpIGNvbnN0OwotICAgIGJvb2wgdXNlc0N1c3RvbUZvcndhcmRPbmx5
VHJhdmVyc2FsKCkgY29uc3Q7Ci0KLSAgICBFbGVtZW50KiBpdGVyYXRlRm9yUHJldmlvdXNFbGVt
ZW50KEVsZW1lbnQqKSBjb25zdDsKLSAgICBFbGVtZW50KiBmaXJzdEVsZW1lbnQoQ29udGFpbmVy
Tm9kZSYgcm9vdCkgY29uc3Q7Ci0gICAgRWxlbWVudCogdHJhdmVyc2VGb3J3YXJkKEVsZW1lbnQm
LCB1bnNpZ25lZCBjb3VudCwgdW5zaWduZWQmIHRyYXZlcnNlZENvdW50LCBDb250YWluZXJOb2Rl
JiByb290KSBjb25zdDsKLQotICAgIHZpcnR1YWwgRWxlbWVudCogY3VzdG9tRWxlbWVudEFmdGVy
KEVsZW1lbnQqKSBjb25zdDsKIAogICAgIHZvaWQgaW52YWxpZGF0ZU5hbWVkRWxlbWVudENhY2hl
KERvY3VtZW50JikgY29uc3Q7CiAKQEAgLTExOSwxNiArMTAwLDIxIEBAIHByaXZhdGU6CiAKICAg
ICBSZWY8Q29udGFpbmVyTm9kZT4gbV9vd25lck5vZGU7CiAKLSAgICBtdXRhYmxlIENvbGxlY3Rp
b25JbmRleENhY2hlPEhUTUxDb2xsZWN0aW9uLCBFbGVtZW50Kj4gbV9pbmRleENhY2hlOwogICAg
IG11dGFibGUgc3RkOjp1bmlxdWVfcHRyPENvbGxlY3Rpb25OYW1lZEVsZW1lbnRDYWNoZT4gbV9u
YW1lZEVsZW1lbnRDYWNoZTsKIAogICAgIGNvbnN0IHVuc2lnbmVkIG1fY29sbGVjdGlvblR5cGUg
OiA1OwogICAgIGNvbnN0IHVuc2lnbmVkIG1faW52YWxpZGF0aW9uVHlwZSA6IDQ7CiAgICAgY29u
c3QgdW5zaWduZWQgbV9yb290VHlwZSA6IDE7Ci0gICAgY29uc3QgdW5zaWduZWQgbV9zaG91bGRP
bmx5SW5jbHVkZURpcmVjdENoaWxkcmVuIDogMTsKLSAgICBjb25zdCB1bnNpZ25lZCBtX3VzZXND
dXN0b21Gb3J3YXJkT25seVRyYXZlcnNhbCA6IDE7CiB9OwogCitpbmxpbmUgQ29udGFpbmVyTm9k
ZSYgSFRNTENvbGxlY3Rpb246OnJvb3ROb2RlKCkgY29uc3QKK3sKKyAgICBpZiAoaXNSb290ZWRB
dERvY3VtZW50KCkgJiYgb3duZXJOb2RlKCkuaW5Eb2N1bWVudCgpKQorICAgICAgICByZXR1cm4g
b3duZXJOb2RlKCkuZG9jdW1lbnQoKTsKKworICAgIHJldHVybiBvd25lck5vZGUoKTsKK30KKwog
aW5saW5lIGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4qIENvbGxlY3Rpb25OYW1lZEVsZW1lbnRDYWNo
ZTo6ZmluZEVsZW1lbnRzV2l0aElkKGNvbnN0IEF0b21pY1N0cmluZyYgaWQpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIGZpbmQobV9pZE1hcCwgaWQpOwpAQCAtMTc3LDcgKzE2Myw3IEBAIGlubGluZSB2
b2lkIENvbGxlY3Rpb25OYW1lZEVsZW1lbnRDYWNoZTo6YXBwZW5kKFN0cmluZ1RvRWxlbWVudHNN
YXAmIG1hcCwgY29uc3QKIAogaW5saW5lIHNpemVfdCBIVE1MQ29sbGVjdGlvbjo6bWVtb3J5Q29z
dCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1faW5kZXhDYWNoZS5tZW1vcnlDb3N0KCkgKyAobV9u
YW1lZEVsZW1lbnRDYWNoZSA/IG1fbmFtZWRFbGVtZW50Q2FjaGUtPm1lbW9yeUNvc3QoKSA6IDAp
OworICAgIHJldHVybiBtX25hbWVkRWxlbWVudENhY2hlID8gbV9uYW1lZEVsZW1lbnRDYWNoZS0+
bWVtb3J5Q29zdCgpIDogMDsKIH0KIAogaW5saW5lIGJvb2wgSFRNTENvbGxlY3Rpb246OmlzUm9v
dGVkQXREb2N1bWVudCgpIGNvbnN0CkBAIC0yMDUsNyArMTkxLDcgQEAgaW5saW5lIERvY3VtZW50
JiBIVE1MQ29sbGVjdGlvbjo6ZG9jdW1lbnQoKSBjb25zdAogICAgIHJldHVybiBtX293bmVyTm9k
ZS0+ZG9jdW1lbnQoKTsKIH0KIAotaW5saW5lIHZvaWQgSFRNTENvbGxlY3Rpb246OmludmFsaWRh
dGVDYWNoZShjb25zdCBRdWFsaWZpZWROYW1lKiBhdHRyaWJ1dGVOYW1lKSBjb25zdAoraW5saW5l
IHZvaWQgSFRNTENvbGxlY3Rpb246OmludmFsaWRhdGVDYWNoZShjb25zdCBRdWFsaWZpZWROYW1l
KiBhdHRyaWJ1dGVOYW1lKQogewogICAgIGlmICghYXR0cmlidXRlTmFtZSB8fCBzaG91bGRJbnZh
bGlkYXRlVHlwZU9uQXR0cmlidXRlQ2hhbmdlKGludmFsaWRhdGlvblR5cGUoKSwgKmF0dHJpYnV0
ZU5hbWUpKQogICAgICAgICBpbnZhbGlkYXRlQ2FjaGUoZG9jdW1lbnQoKSk7CkBAIC0yMTMsMjEg
KzE5OSw2IEBAIGlubGluZSB2b2lkIEhUTUxDb2xsZWN0aW9uOjppbnZhbGlkYXRlQ2FjaGUoY29u
c3QgUXVhbGlmaWVkTmFtZSogYXR0cmlidXRlTmFtZSkKICAgICAgICAgaW52YWxpZGF0ZU5hbWVk
RWxlbWVudENhY2hlKGRvY3VtZW50KCkpOwogfQogCi1pbmxpbmUgRWxlbWVudCogSFRNTENvbGxl
Y3Rpb246OmNvbGxlY3Rpb25FbmQoKSBjb25zdAotewotICAgIHJldHVybiBudWxscHRyOwotfQot
Ci1pbmxpbmUgYm9vbCBIVE1MQ29sbGVjdGlvbjo6Y29sbGVjdGlvbkNhblRyYXZlcnNlQmFja3dh
cmQoKSBjb25zdAotewotICAgIHJldHVybiAhbV91c2VzQ3VzdG9tRm9yd2FyZE9ubHlUcmF2ZXJz
YWw7Ci19Ci0KLWlubGluZSB2b2lkIEhUTUxDb2xsZWN0aW9uOjp3aWxsVmFsaWRhdGVJbmRleENh
Y2hlKCkgY29uc3QKLXsKLSAgICBkb2N1bWVudCgpLnJlZ2lzdGVyQ29sbGVjdGlvbihjb25zdF9j
YXN0PEhUTUxDb2xsZWN0aW9uJj4oKnRoaXMpKTsKLX0KLQogaW5saW5lIGJvb2wgSFRNTENvbGxl
Y3Rpb246Omhhc05hbWVkRWxlbWVudENhY2hlKCkgY29uc3QKIHsKICAgICByZXR1cm4gISFtX25h
bWVkRWxlbWVudENhY2hlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRmll
bGRTZXRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZpZWxkU2V0RWxlbWVu
dC5jcHAKaW5kZXggYWMzMzJlODcwMjI2MThjMmU0OTNiNjk3N2IwODNkNTVhYjg2YWQ3ZC4uNDAw
YTBiYWUwZWQ5NGZlMDUzZmQ2MzU3MWI0MGFhYzk4ZmJhYzhkZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuY3BwCkBAIC0yNiwxMCArMjYsMTEgQEAKICNpbmNs
dWRlICJIVE1MRmllbGRTZXRFbGVtZW50LmgiCiAKICNpbmNsdWRlICJFbGVtZW50SXRlcmF0b3Iu
aCIKLSNpbmNsdWRlICJIVE1MQ29sbGVjdGlvbi5oIgorI2luY2x1ZGUgIkhUTUxGb3JtQ29udHJv
bHNDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiSFRNTExlZ2VuZEVsZW1lbnQuaCIKICNpbmNsdWRl
ICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJIVE1MT2JqZWN0RWxlbWVudC5oIgorI2luY2x1ZGUg
Ik5vZGVSYXJlRGF0YS5oIgogI2luY2x1ZGUgIlJlbmRlckZpZWxkc2V0LmgiCiAjaW5jbHVkZSA8
d3RmL1N0ZExpYkV4dHJhcy5oPgogCkBAIC0xNjEsNyArMTYyLDcgQEAgSFRNTExlZ2VuZEVsZW1l
bnQqIEhUTUxGaWVsZFNldEVsZW1lbnQ6OmxlZ2VuZCgpIGNvbnN0CiAKIFJlZjxIVE1MQ29sbGVj
dGlvbj4gSFRNTEZpZWxkU2V0RWxlbWVudDo6ZWxlbWVudHMoKQogewotICAgIHJldHVybiBlbnN1
cmVDYWNoZWRIVE1MQ29sbGVjdGlvbihGb3JtQ29udHJvbHMpOworICAgIHJldHVybiBlbnN1cmVS
YXJlRGF0YSgpLmVuc3VyZU5vZGVMaXN0cygpLmFkZENhY2hlZENvbGxlY3Rpb248SFRNTEZvcm1D
b250cm9sc0NvbGxlY3Rpb24+KCp0aGlzLCBGb3JtQ29udHJvbHMpOwogfQogCiB2b2lkIEhUTUxG
aWVsZFNldEVsZW1lbnQ6OnJlZnJlc2hFbGVtZW50c0lmTmVlZGVkKCkgY29uc3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5jcHAKaW5kZXgg
MGRlZWNjMjRlY2Q5YjVjMzdiMGFjMDljMzE3NTI3MzQyYjcxMWQ4NC4uMzAyNTBiYjI2NGI0OThm
ODg4ODIxZTA3ODkxOGZlZDc2ZDgzM2U5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5jcHAKQEAgLTM2LDcgKzM2LDcgQEAgdXNpbmcg
bmFtZXNwYWNlIEhUTUxOYW1lczsKIC8vIGNhbGN1bGF0aW9uIGV2ZXJ5IHRpbWUgaWYgYW55dGhp
bmcgaGFzIGNoYW5nZWQuCiAKIEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uOjpIVE1MRm9ybUNv
bnRyb2xzQ29sbGVjdGlvbihDb250YWluZXJOb2RlJiBvd25lck5vZGUpCi0gICAgOiBIVE1MQ29s
bGVjdGlvbihvd25lck5vZGUsIEZvcm1Db250cm9scywgQ3VzdG9tRm9yd2FyZE9ubHlUcmF2ZXJz
YWwpCisgICAgOiBDYWNoZWRIVE1MQ29sbGVjdGlvbjxIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlv
biwgQ29sbGVjdGlvblR5cGVUcmFpdHM8Rm9ybUNvbnRyb2xzPjo6dHJhdmVyc2FsVHlwZT4ob3du
ZXJOb2RlLCBGb3JtQ29udHJvbHMpCiAgICAgLCBtX2NhY2hlZEVsZW1lbnQobnVsbHB0cikKICAg
ICAsIG1fY2FjaGVkRWxlbWVudE9mZnNldEluQXJyYXkoMCkKIHsKQEAgLTE3Nyw5ICsxNzcsOSBA
QCB2b2lkIEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uOjp1cGRhdGVOYW1lZEVsZW1lbnRDYWNo
ZSgpIGNvbnN0CiAgICAgc2V0TmFtZWRJdGVtQ2FjaGUoV1RGOjptb3ZlKGNhY2hlKSk7CiB9CiAK
LXZvaWQgSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246OmludmFsaWRhdGVDYWNoZShEb2N1bWVu
dCYgZG9jdW1lbnQpIGNvbnN0Cit2b2lkIEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uOjppbnZh
bGlkYXRlQ2FjaGUoRG9jdW1lbnQmIGRvY3VtZW50KQogewotICAgIEhUTUxDb2xsZWN0aW9uOjpp
bnZhbGlkYXRlQ2FjaGUoZG9jdW1lbnQpOworICAgIENhY2hlZEhUTUxDb2xsZWN0aW9uPEhUTUxG
b3JtQ29udHJvbHNDb2xsZWN0aW9uLCBDb2xsZWN0aW9uVHlwZVRyYWl0czxGb3JtQ29udHJvbHM+
Ojp0cmF2ZXJzYWxUeXBlPjo6aW52YWxpZGF0ZUNhY2hlKGRvY3VtZW50KTsKICAgICBtX2NhY2hl
ZEVsZW1lbnQgPSBudWxscHRyOwogICAgIG1fY2FjaGVkRWxlbWVudE9mZnNldEluQXJyYXkgPSAw
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29s
bGVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlv
bi5oCmluZGV4IGIxNjhhZDljMDYwNTQ0OGE5OTQ5ZDRhOGUxNWU0NDY1ZDc4NWJiNzMuLmMwZDUy
MGY2YWYyMWRhZTRiZDIxZGZiMTIyMDA3ODcxOGQ1NDQyYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmgKQEAgLTIzLDcgKzIzLDcgQEAK
ICNpZm5kZWYgSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb25faAogI2RlZmluZSBIVE1MRm9ybUNv
bnRyb2xzQ29sbGVjdGlvbl9oCiAKLSNpbmNsdWRlICJIVE1MQ29sbGVjdGlvbi5oIgorI2luY2x1
ZGUgIkNhY2hlZEhUTUxDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzQsMjEgKzM0LDIzIEBAIGNsYXNzIEhUTUxJbWFnZUVs
ZW1lbnQ7CiAvLyBUaGlzIGNsYXNzIGlzIGp1c3QgYSBiaWcgaGFjayB0byBmaW5kIGZvcm0gZWxl
bWVudHMgZXZlbiBpbiBtYWxmb3JtZWQgSFRNTCBlbGVtZW50cy4KIC8vIFRoZSBmYW1vdXMgPHRh
YmxlPjx0cj48Zm9ybT48dGQ+IHByb2JsZW0uCiAKLWNsYXNzIEhUTUxGb3JtQ29udHJvbHNDb2xs
ZWN0aW9uIGZpbmFsIDogcHVibGljIEhUTUxDb2xsZWN0aW9uIHsKK2NsYXNzIEhUTUxGb3JtQ29u
dHJvbHNDb2xsZWN0aW9uIGZpbmFsIDogcHVibGljIENhY2hlZEhUTUxDb2xsZWN0aW9uPEhUTUxG
b3JtQ29udHJvbHNDb2xsZWN0aW9uLCBDb2xsZWN0aW9uVHlwZVRyYWl0czxGb3JtQ29udHJvbHM+
Ojp0cmF2ZXJzYWxUeXBlPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxIVE1MRm9ybUNvbnRy
b2xzQ29sbGVjdGlvbj4gY3JlYXRlKENvbnRhaW5lck5vZGUmLCBDb2xsZWN0aW9uVHlwZSk7CiAg
ICAgdmlydHVhbCB+SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24oKTsKIAorICAgIC8vIEZvciBD
YWNoZWRIVE1MQ29sbGVjdGlvbi4KKyAgICBFbGVtZW50KiBjdXN0b21FbGVtZW50QWZ0ZXIoRWxl
bWVudCopIGNvbnN0OworCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IEhUTUxGb3JtQ29udHJvbHND
b2xsZWN0aW9uKENvbnRhaW5lck5vZGUmKTsKIAogICAgIHZpcnR1YWwgSFRNTEVsZW1lbnQqIG5h
bWVkSXRlbShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgdm9pZCBpbnZhbGlkYXRlQ2FjaGUoRG9jdW1lbnQmKSBjb25zdCBvdmVycmlkZTsKKyAg
ICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZUNhY2hlKERvY3VtZW50Jikgb3ZlcnJpZGU7CiAgICAg
dmlydHVhbCB2b2lkIHVwZGF0ZU5hbWVkRWxlbWVudENhY2hlKCkgY29uc3Qgb3ZlcnJpZGU7CiAK
ICAgICBjb25zdCBWZWN0b3I8Rm9ybUFzc29jaWF0ZWRFbGVtZW50Kj4mIGZvcm1Db250cm9sRWxl
bWVudHMoKSBjb25zdDsKICAgICBjb25zdCBWZWN0b3I8SFRNTEltYWdlRWxlbWVudCo+JiBmb3Jt
SW1hZ2VFbGVtZW50cygpIGNvbnN0OwotICAgIHZpcnR1YWwgRWxlbWVudCogY3VzdG9tRWxlbWVu
dEFmdGVyKEVsZW1lbnQqKSBjb25zdCBvdmVycmlkZTsKIAogICAgIG11dGFibGUgRWxlbWVudCog
bV9jYWNoZWRFbGVtZW50OwogICAgIG11dGFibGUgdW5zaWduZWQgbV9jYWNoZWRFbGVtZW50T2Zm
c2V0SW5BcnJheTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcAppbmRleCA1
ZmZhM2E4YTcxOTk3ODdmN2RmN2RmMWY4MDlhNjhhZTY0M2QwMWVkLi4wNTQyNzlmZjFlZjVhOGMz
YjE4MGE0YjgwZDIwZmJjOWViZmFlMTgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxGb3JtRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVs
ZW1lbnQuY3BwCkBAIC0zNywxMSArMzcsMTIgQEAKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1
ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKLSNpbmNs
dWRlICJIVE1MQ29sbGVjdGlvbi5oIgorI2luY2x1ZGUgIkhUTUxGb3JtQ29udHJvbHNDb2xsZWN0
aW9uLmgiCiAjaW5jbHVkZSAiSFRNTEltYWdlRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxJbnB1
dEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJIVE1MVGFibGVF
bGVtZW50LmgiCisjaW5jbHVkZSAiTm9kZVJhcmVEYXRhLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgog
I2luY2x1ZGUgIlJlbmRlclRleHRDb250cm9sLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxl
ci5oIgpAQCAtNjM4LDcgKzYzOSw3IEBAIHZvaWQgSFRNTEZvcm1FbGVtZW50OjpyZW1vdmVJbWdF
bGVtZW50KEhUTUxJbWFnZUVsZW1lbnQqIGUpCiAKIFJlZjxIVE1MQ29sbGVjdGlvbj4gSFRNTEZv
cm1FbGVtZW50OjplbGVtZW50cygpCiB7Ci0gICAgcmV0dXJuIGVuc3VyZUNhY2hlZEhUTUxDb2xs
ZWN0aW9uKEZvcm1Db250cm9scyk7CisgICAgcmV0dXJuIGVuc3VyZVJhcmVEYXRhKCkuZW5zdXJl
Tm9kZUxpc3RzKCkuYWRkQ2FjaGVkQ29sbGVjdGlvbjxIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlv
bj4oKnRoaXMsIEZvcm1Db250cm9scyk7CiB9CiAKIFN0cmluZyBIVE1MRm9ybUVsZW1lbnQ6Om5h
bWUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWFwRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNYXBFbGVtZW50LmNwcAppbmRleCBhM2M5
YzMzOTIzYTcwZmM4ZWI5NmQzZTMwZGEwYzQzYmU3YWEwMjBiLi4zZWU2MWJhYTAwMWUyMzRhNGIz
M2Y3ZDE1OGJjNjg2OTkyYzQ2Y2Y4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNYXBFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNYXBFbGVtZW50
LmNwcApAQCAtMjUsMTEgKzI1LDEyIEBACiAjaW5jbHVkZSAiQXR0cmlidXRlLmgiCiAjaW5jbHVk
ZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFbGVtZW50SXRlcmF0b3IuaCIKKyNpbmNsdWRlICJH
ZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJIVE1MQXJlYUVsZW1lbnQu
aCIKLSNpbmNsdWRlICJIVE1MQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxJbWFnZUVsZW1l
bnQuaCIKICNpbmNsdWRlICJIaXRUZXN0UmVzdWx0LmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgor
I2luY2x1ZGUgIk5vZGVSYXJlRGF0YS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTEx
Miw3ICsxMTMsNyBAQCB2b2lkIEhUTUxNYXBFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbgogCiBSZWY8SFRNTENvbGxlY3Rp
b24+IEhUTUxNYXBFbGVtZW50OjphcmVhcygpCiB7Ci0gICAgcmV0dXJuIGVuc3VyZUNhY2hlZEhU
TUxDb2xsZWN0aW9uKE1hcEFyZWFzKTsKKyAgICByZXR1cm4gZW5zdXJlUmFyZURhdGEoKS5lbnN1
cmVOb2RlTGlzdHMoKS5hZGRDYWNoZWRDb2xsZWN0aW9uPEdlbmVyaWNDYWNoZWRIVE1MQ29sbGVj
dGlvbjxDb2xsZWN0aW9uVHlwZVRyYWl0czxNYXBBcmVhcz46OnRyYXZlcnNhbFR5cGU+PigqdGhp
cywgTWFwQXJlYXMpOwogfQogCiBOb2RlOjpJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IEhU
TUxNYXBFbGVtZW50OjppbnNlcnRlZEludG8oQ29udGFpbmVyTm9kZSYgaW5zZXJ0aW9uUG9pbnQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxOYW1lQ29sbGVjdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxOYW1lQ29sbGVjdGlvbi5jcHAKaW5kZXggMzdmNThj
MTRlMWNkYzVkNjFjMjM1NTJhZmU2MTY2ODBlOWZmOTg1My4uMzI5NzQ5YmJiMGQzMGY5MGM3NDU4
NzRkMDE1YTM3NDU1MjMzMzVmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TmFtZUNvbGxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE5hbWVDb2xs
ZWN0aW9uLmNwcApAQCAtMzYsMTkgKzM2LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2lu
ZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCi1IVE1MTmFtZUNvbGxlY3Rpb246OkhUTUxOYW1lQ29s
bGVjdGlvbihEb2N1bWVudCYgZG9jdW1lbnQsIENvbGxlY3Rpb25UeXBlIHR5cGUsIGNvbnN0IEF0
b21pY1N0cmluZyYgbmFtZSkKLSAgICA6IEhUTUxDb2xsZWN0aW9uKGRvY3VtZW50LCB0eXBlKQot
ICAgICwgbV9uYW1lKG5hbWUpCi17Ci19Ci0KLUhUTUxOYW1lQ29sbGVjdGlvbjo6fkhUTUxOYW1l
Q29sbGVjdGlvbigpCi17Ci0gICAgQVNTRVJUKHR5cGUoKSA9PSBXaW5kb3dOYW1lZEl0ZW1zIHx8
IHR5cGUoKSA9PSBEb2N1bWVudE5hbWVkSXRlbXMpOwotCi0gICAgZG9jdW1lbnQoKS5ub2RlTGlz
dHMoKS0+cmVtb3ZlQ2FjaGVkQ29sbGVjdGlvbih0aGlzLCBtX25hbWUpOwotfQotCiBib29sIFdp
bmRvd05hbWVDb2xsZWN0aW9uOjplbGVtZW50TWF0Y2hlc0lmTmFtZUF0dHJpYnV0ZU1hdGNoKGNv
bnN0IEVsZW1lbnQmIGVsZW1lbnQpCiB7CiAgICAgcmV0dXJuIGlzPEhUTUxJbWFnZUVsZW1lbnQ+
KGVsZW1lbnQpIHx8IGlzPEhUTUxGb3JtRWxlbWVudD4oZWxlbWVudCkgfHwgaXM8SFRNTEFwcGxl
dEVsZW1lbnQ+KGVsZW1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxO
YW1lQ29sbGVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTmFtZUNvbGxlY3Rpb24u
aAppbmRleCAzMjA3NDNkNWFhOWNmYmI4MjE4NDU1OGQ4MjAxNzg5OGMwOGY3NzM3Li42MDQ2NmM4
NWJiZDkzMmYxMzM5ZDI4NzgyNjlkODNmNDQwMjRmYjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxOYW1lQ29sbGVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE5hbWVDb2xsZWN0aW9uLmgKQEAgLTIzLDE4ICsyMywyMCBAQAogI2lmbmRlZiBIVE1MTmFt
ZUNvbGxlY3Rpb25faAogI2RlZmluZSBIVE1MTmFtZUNvbGxlY3Rpb25faAogCi0jaW5jbHVkZSAi
SFRNTENvbGxlY3Rpb24uaCIKKyNpbmNsdWRlICJDYWNoZWRIVE1MQ29sbGVjdGlvbi5oIgorI2lu
Y2x1ZGUgIk5vZGVSYXJlRGF0YS5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERvY3VtZW50OwogCi1jbGFzcyBIVE1M
TmFtZUNvbGxlY3Rpb24gOiBwdWJsaWMgSFRNTENvbGxlY3Rpb24gewordGVtcGxhdGUgPHR5cGVu
YW1lIEhUTUxDb2xsZWN0aW9uQ2xhc3MsIENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlIHRyYXZlcnNh
bFR5cGU+CitjbGFzcyBIVE1MTmFtZUNvbGxlY3Rpb24gOiBwdWJsaWMgQ2FjaGVkSFRNTENvbGxl
Y3Rpb248SFRNTENvbGxlY3Rpb25DbGFzcywgdHJhdmVyc2FsVHlwZT4gewogcHVibGljOgogICAg
IHZpcnR1YWwgfkhUTUxOYW1lQ29sbGVjdGlvbigpOwogCi0gICAgRG9jdW1lbnQmIGRvY3VtZW50
KCkgeyByZXR1cm4gZG93bmNhc3Q8RG9jdW1lbnQ+KG93bmVyTm9kZSgpKTsgfQorICAgIERvY3Vt
ZW50JiBkb2N1bWVudCgpIHsgcmV0dXJuIGRvd25jYXN0PERvY3VtZW50Pih0aGlzLT5vd25lck5v
ZGUoKSk7IH0KIAogcHJvdGVjdGVkOgogICAgIEhUTUxOYW1lQ29sbGVjdGlvbihEb2N1bWVudCYs
IENvbGxlY3Rpb25UeXBlLCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpOwpAQCAtNDIsMTMgKzQ0
LDI5IEBAIHByb3RlY3RlZDoKICAgICBBdG9taWNTdHJpbmcgbV9uYW1lOwogfTsKIAotY2xhc3Mg
V2luZG93TmFtZUNvbGxlY3Rpb24gZmluYWwgOiBwdWJsaWMgSFRNTE5hbWVDb2xsZWN0aW9uIHsK
K3RlbXBsYXRlIDx0eXBlbmFtZSBIVE1MQ29sbGVjdGlvbkNsYXNzLCBDb2xsZWN0aW9uVHJhdmVy
c2FsVHlwZSB0cmF2ZXJzYWxUeXBlPgorSFRNTE5hbWVDb2xsZWN0aW9uPEhUTUxDb2xsZWN0aW9u
Q2xhc3MsIHRyYXZlcnNhbFR5cGU+OjpIVE1MTmFtZUNvbGxlY3Rpb24oRG9jdW1lbnQmIGRvY3Vt
ZW50LCBDb2xsZWN0aW9uVHlwZSB0eXBlLCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpCisgICAg
OiBDYWNoZWRIVE1MQ29sbGVjdGlvbjxIVE1MQ29sbGVjdGlvbkNsYXNzLCB0cmF2ZXJzYWxUeXBl
Pihkb2N1bWVudCwgdHlwZSkKKyAgICAsIG1fbmFtZShuYW1lKQoreworfQorCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgSFRNTENvbGxlY3Rpb25DbGFzcywgQ29sbGVjdGlvblRyYXZlcnNhbFR5cGUgdHJh
dmVyc2FsVHlwZT4KK0hUTUxOYW1lQ29sbGVjdGlvbjxIVE1MQ29sbGVjdGlvbkNsYXNzLCB0cmF2
ZXJzYWxUeXBlPjo6fkhUTUxOYW1lQ29sbGVjdGlvbigpCit7CisgICAgQVNTRVJUKHRoaXMtPnR5
cGUoKSA9PSBXaW5kb3dOYW1lZEl0ZW1zIHx8IHRoaXMtPnR5cGUoKSA9PSBEb2N1bWVudE5hbWVk
SXRlbXMpOworCisgICAgZG9jdW1lbnQoKS5ub2RlTGlzdHMoKS0+cmVtb3ZlQ2FjaGVkQ29sbGVj
dGlvbih0aGlzLCBtX25hbWUpOworfQorCitjbGFzcyBXaW5kb3dOYW1lQ29sbGVjdGlvbiBmaW5h
bCA6IHB1YmxpYyBIVE1MTmFtZUNvbGxlY3Rpb248V2luZG93TmFtZUNvbGxlY3Rpb24sIENvbGxl
Y3Rpb25UcmF2ZXJzYWxUeXBlOjpEZXNjZW5kYW50cz4gewogcHVibGljOgogICAgIHN0YXRpYyBS
ZWY8V2luZG93TmFtZUNvbGxlY3Rpb24+IGNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIENvbGxl
Y3Rpb25UeXBlIHR5cGUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkKICAgICB7CiAgICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFdpbmRvd05hbWVDb2xsZWN0aW9uKGRvY3VtZW50LCB0eXBl
LCBuYW1lKSk7CiAgICAgfQogCisgICAgLy8gRm9yIENhY2hlZEhUTUxDb2xsZWN0aW9uLgogICAg
IGJvb2wgZWxlbWVudE1hdGNoZXMoY29uc3QgRWxlbWVudCYgZWxlbWVudCkgY29uc3QgeyByZXR1
cm4gZWxlbWVudE1hdGNoZXMoZWxlbWVudCwgbV9uYW1lLmltcGwoKSk7IH0KIAogICAgIHN0YXRp
YyBib29sIGVsZW1lbnRNYXRjaGVzSWZJZEF0dHJpYnV0ZU1hdGNoKGNvbnN0IEVsZW1lbnQmKSB7
IHJldHVybiB0cnVlOyB9CkBAIC01NywxMyArNzUsMTMgQEAgcHVibGljOgogCiBwcml2YXRlOgog
ICAgIFdpbmRvd05hbWVDb2xsZWN0aW9uKERvY3VtZW50JiBkb2N1bWVudCwgQ29sbGVjdGlvblR5
cGUgdHlwZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKQotICAgICAgICA6IEhUTUxOYW1lQ29s
bGVjdGlvbihkb2N1bWVudCwgdHlwZSwgbmFtZSkKKyAgICAgICAgOiBIVE1MTmFtZUNvbGxlY3Rp
b248V2luZG93TmFtZUNvbGxlY3Rpb24sIENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlOjpEZXNjZW5k
YW50cz4oZG9jdW1lbnQsIHR5cGUsIG5hbWUpCiAgICAgewogICAgICAgICBBU1NFUlQodHlwZSA9
PSBXaW5kb3dOYW1lZEl0ZW1zKTsKICAgICB9CiB9OwogCi1jbGFzcyBEb2N1bWVudE5hbWVDb2xs
ZWN0aW9uIGZpbmFsIDogcHVibGljIEhUTUxOYW1lQ29sbGVjdGlvbiB7CitjbGFzcyBEb2N1bWVu
dE5hbWVDb2xsZWN0aW9uIGZpbmFsIDogcHVibGljIEhUTUxOYW1lQ29sbGVjdGlvbjxEb2N1bWVu
dE5hbWVDb2xsZWN0aW9uLCBDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6RGVzY2VuZGFudHM+IHsK
IHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPERvY3VtZW50TmFtZUNvbGxlY3Rpb24+IGNyZWF0ZShE
b2N1bWVudCYgZG9jdW1lbnQsIENvbGxlY3Rpb25UeXBlIHR5cGUsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgbmFtZSkKICAgICB7CkBAIC03MiwxMyArOTAsMTUgQEAgcHVibGljOgogCiAgICAgc3RhdGlj
IGJvb2wgZWxlbWVudE1hdGNoZXNJZklkQXR0cmlidXRlTWF0Y2goY29uc3QgRWxlbWVudCYpOwog
ICAgIHN0YXRpYyBib29sIGVsZW1lbnRNYXRjaGVzSWZOYW1lQXR0cmlidXRlTWF0Y2goY29uc3Qg
RWxlbWVudCYpOworCisgICAgLy8gRm9yIENhY2hlZEhUTUxDb2xsZWN0aW9uLgogICAgIGJvb2wg
ZWxlbWVudE1hdGNoZXMoY29uc3QgRWxlbWVudCYgZWxlbWVudCkgY29uc3QgeyByZXR1cm4gZWxl
bWVudE1hdGNoZXMoZWxlbWVudCwgbV9uYW1lLmltcGwoKSk7IH0KIAogICAgIHN0YXRpYyBib29s
IGVsZW1lbnRNYXRjaGVzKGNvbnN0IEVsZW1lbnQmLCBjb25zdCBBdG9taWNTdHJpbmdJbXBsKik7
CiAKIHByaXZhdGU6CiAgICAgRG9jdW1lbnROYW1lQ29sbGVjdGlvbihEb2N1bWVudCYgZG9jdW1l
bnQsIENvbGxlY3Rpb25UeXBlIHR5cGUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkKLSAgICAg
ICAgOiBIVE1MTmFtZUNvbGxlY3Rpb24oZG9jdW1lbnQsIHR5cGUsIG5hbWUpCisgICAgICAgIDog
SFRNTE5hbWVDb2xsZWN0aW9uPERvY3VtZW50TmFtZUNvbGxlY3Rpb24sIENvbGxlY3Rpb25UcmF2
ZXJzYWxUeXBlOjpEZXNjZW5kYW50cz4oZG9jdW1lbnQsIHR5cGUsIG5hbWUpCiAgICAgewogICAg
ICAgICBBU1NFUlQodHlwZSA9PSBEb2N1bWVudE5hbWVkSXRlbXMpOwogICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmNwcAppbmRleCAxNTA4YjQxNWM0
MmRhZWIxMDgwMWNkODljMjkxNDZkNzcwOTMxMmU5Li5kOWFkYTA2YjM1YTA4Zjk0NjAwZjAxMTg1
NDFhY2MzNmFjMjFjNGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRp
b25zQ29sbGVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uc0Nv
bGxlY3Rpb24uY3BwCkBAIC0yNyw3ICsyNyw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEhU
TUxPcHRpb25zQ29sbGVjdGlvbjo6SFRNTE9wdGlvbnNDb2xsZWN0aW9uKEhUTUxTZWxlY3RFbGVt
ZW50JiBzZWxlY3QpCi0gICAgOiBIVE1MQ29sbGVjdGlvbihzZWxlY3QsIFNlbGVjdE9wdGlvbnMp
CisgICAgOiBDYWNoZWRIVE1MQ29sbGVjdGlvbjxIVE1MT3B0aW9uc0NvbGxlY3Rpb24sIENvbGxl
Y3Rpb25UeXBlVHJhaXRzPFNlbGVjdE9wdGlvbnM+Ojp0cmF2ZXJzYWxUeXBlPihzZWxlY3QsIFNl
bGVjdE9wdGlvbnMpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE9wdGlvbnNDb2xsZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25zQ29s
bGVjdGlvbi5oCmluZGV4IDYzNjY4NjVlNTVjMWMzYTY3Nzk0MTUzOWUzMzcxMTFkM2FmMzllMTYu
LmM1ZmQxN2JmNzI2N2YyNWI3NDVkNDA0ODMwZjg3ODViNGJkMWJiZmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MT3B0aW9uc0NvbGxlY3Rpb24uaApAQCAtMjQsNyArMjQsNyBAQAogI2lm
bmRlZiBIVE1MT3B0aW9uc0NvbGxlY3Rpb25faAogI2RlZmluZSBIVE1MT3B0aW9uc0NvbGxlY3Rp
b25faAogCi0jaW5jbHVkZSAiSFRNTENvbGxlY3Rpb24uaCIKKyNpbmNsdWRlICJDYWNoZWRIVE1M
Q29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxTZWxlY3RFbGVtZW50LmgiCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKQEAgLTMzLDcgKzMzLDcgQEAgY2xhc3MgSFRNTE9wdGlvbkVsZW1lbnQ7CiAK
IHR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7CiAKLWNsYXNzIEhUTUxPcHRpb25zQ29sbGVjdGlv
biBmaW5hbCA6IHB1YmxpYyBIVE1MQ29sbGVjdGlvbiB7CitjbGFzcyBIVE1MT3B0aW9uc0NvbGxl
Y3Rpb24gZmluYWwgOiBwdWJsaWMgQ2FjaGVkSFRNTENvbGxlY3Rpb248SFRNTE9wdGlvbnNDb2xs
ZWN0aW9uLCBDb2xsZWN0aW9uVHlwZVRyYWl0czxTZWxlY3RPcHRpb25zPjo6dHJhdmVyc2FsVHlw
ZT4gewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8SFRNTE9wdGlvbnNDb2xsZWN0aW9uPiBjcmVh
dGUoSFRNTFNlbGVjdEVsZW1lbnQmLCBDb2xsZWN0aW9uVHlwZSk7CiAKQEAgLTUwLDEwICs1MCwx
OCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldExlbmd0aCh1bnNpZ25lZCwgRXhjZXB0aW9uQ29k
ZSYpOwogCisgICAgLy8gRm9yIENhY2hlZEhUTUxDb2xsZWN0aW9uLgorICAgIGJvb2wgZWxlbWVu
dE1hdGNoZXMoRWxlbWVudCYpIGNvbnN0OworCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IEhUTUxP
cHRpb25zQ29sbGVjdGlvbihIVE1MU2VsZWN0RWxlbWVudCYpOwogfTsKIAoraW5saW5lIGJvb2wg
SFRNTE9wdGlvbnNDb2xsZWN0aW9uOjplbGVtZW50TWF0Y2hlcyhFbGVtZW50JiBlbGVtZW50KSBj
b25zdAoreworICAgIHJldHVybiBlbGVtZW50Lmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpvcHRpb25U
YWcpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKIFNQRUNJQUxJWkVfVFlQRV9UUkFJ
VFNfSFRNTENPTExFQ1RJT04oSFRNTE9wdGlvbnNDb2xsZWN0aW9uLCBTZWxlY3RPcHRpb25zKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcAppbmRleCBkNTA1ZjNmMTBh
MGM0ODUyNDQ1OGI5NDU0ZDRlZWJkNGM5NTdkNzcwLi5jOGI0MjYzMjMzOTcwNDZkOGI0ZTM5MTJi
ZWY3ZjQzOTllNTAzYzgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxl
Y3RFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50
LmNwcApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIkZvcm1Db250cm9sbGVyLmgiCiAjaW5j
bHVkZSAiRm9ybURhdGFMaXN0LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJHZW5l
cmljQ2FjaGVkSFRNTENvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJIVE1MRm9ybUVsZW1lbnQuaCIK
ICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJIVE1MT3B0R3JvdXBFbGVtZW50Lmgi
CkBAIC00Niw2ICs0Nyw3IEBACiAjaW5jbHVkZSAiS2V5Ym9hcmRFdmVudC5oIgogI2luY2x1ZGUg
IkxvY2FsaXplZFN0cmluZ3MuaCIKICNpbmNsdWRlICJNb3VzZUV2ZW50LmgiCisjaW5jbHVkZSAi
Tm9kZVJhcmVEYXRhLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtTW91
c2VFdmVudC5oIgogI2luY2x1ZGUgIlJlbmRlckxpc3RCb3guaCIKQEAgLTM3NCwxMiArMzc2LDEy
IEBAIGJvb2wgSFRNTFNlbGVjdEVsZW1lbnQ6OmNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoY29u
c3QgTm9kZSYgY2hpbGQpIGNvbnN0CiAKIFJlZjxIVE1MQ29sbGVjdGlvbj4gSFRNTFNlbGVjdEVs
ZW1lbnQ6OnNlbGVjdGVkT3B0aW9ucygpCiB7Ci0gICAgcmV0dXJuIGVuc3VyZUNhY2hlZEhUTUxD
b2xsZWN0aW9uKFNlbGVjdGVkT3B0aW9ucyk7CisgICAgcmV0dXJuIGVuc3VyZVJhcmVEYXRhKCku
ZW5zdXJlTm9kZUxpc3RzKCkuYWRkQ2FjaGVkQ29sbGVjdGlvbjxHZW5lcmljQ2FjaGVkSFRNTENv
bGxlY3Rpb248Q29sbGVjdGlvblR5cGVUcmFpdHM8U2VsZWN0ZWRPcHRpb25zPjo6dHJhdmVyc2Fs
VHlwZT4+KCp0aGlzLCBTZWxlY3RlZE9wdGlvbnMpOwogfQogCiBSZWY8SFRNTE9wdGlvbnNDb2xs
ZWN0aW9uPiBIVE1MU2VsZWN0RWxlbWVudDo6b3B0aW9ucygpCiB7Ci0gICAgcmV0dXJuIGRvd25j
YXN0PEhUTUxPcHRpb25zQ29sbGVjdGlvbj4oZW5zdXJlQ2FjaGVkSFRNTENvbGxlY3Rpb24oU2Vs
ZWN0T3B0aW9ucykuZ2V0KCkpOworICAgIHJldHVybiBlbnN1cmVSYXJlRGF0YSgpLmVuc3VyZU5v
ZGVMaXN0cygpLmFkZENhY2hlZENvbGxlY3Rpb248SFRNTE9wdGlvbnNDb2xsZWN0aW9uPigqdGhp
cywgU2VsZWN0T3B0aW9ucyk7CiB9CiAKIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6OnVwZGF0ZUxp
c3RJdGVtU2VsZWN0ZWRTdGF0ZXMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MVGFibGVFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVu
dC5jcHAKaW5kZXggNzQ1NzM2MWI2ZTEyNWVhZWY5NjVhZjU0NTMzYmYzM2Y2ODQ2ZWFhNy4uMDI4
MDg2YTYxOGRmNmIzNGVlMzQ0YWYxZDAzN2E0MDc0ZTY2NDg1YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxUYWJsZUVsZW1lbnQuY3BwCkBAIC0zMSwxMiArMzEsMTQgQEAKICNpbmNsdWRlICJD
U1NWYWx1ZVBvb2wuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiRXhj
ZXB0aW9uQ29kZVBsYWNlaG9sZGVyLmgiCisjaW5jbHVkZSAiR2VuZXJpY0NhY2hlZEhUTUxDb2xs
ZWN0aW9uLmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSFRNTFBhcnNlcklk
aW9tcy5oIgogI2luY2x1ZGUgIkhUTUxUYWJsZUNhcHRpb25FbGVtZW50LmgiCiAjaW5jbHVkZSAi
SFRNTFRhYmxlUm93RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxUYWJsZVJvd3NDb2xsZWN0aW9u
LmgiCiAjaW5jbHVkZSAiSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQuaCIKKyNpbmNsdWRlICJOb2Rl
UmFyZURhdGEuaCIKICNpbmNsdWRlICJSZW5kZXJUYWJsZS5oIgogI2luY2x1ZGUgIlN0eWxlUHJv
cGVydGllcy5oIgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KQEAgLTU1MSwxMiArNTUzLDEyIEBAIGJv
b2wgSFRNTFRhYmxlRWxlbWVudDo6aXNVUkxBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJiBhdHRy
aWJ1dGUpIGNvbnN0CiAKIFJlZjxIVE1MQ29sbGVjdGlvbj4gSFRNTFRhYmxlRWxlbWVudDo6cm93
cygpCiB7Ci0gICAgcmV0dXJuIGVuc3VyZUNhY2hlZEhUTUxDb2xsZWN0aW9uKFRhYmxlUm93cyk7
CisgICAgcmV0dXJuIGVuc3VyZVJhcmVEYXRhKCkuZW5zdXJlTm9kZUxpc3RzKCkuYWRkQ2FjaGVk
Q29sbGVjdGlvbjxIVE1MVGFibGVSb3dzQ29sbGVjdGlvbj4oKnRoaXMsIFRhYmxlUm93cyk7CiB9
CiAKIFJlZjxIVE1MQ29sbGVjdGlvbj4gSFRNTFRhYmxlRWxlbWVudDo6dEJvZGllcygpCiB7Ci0g
ICAgcmV0dXJuIGVuc3VyZUNhY2hlZEhUTUxDb2xsZWN0aW9uKFRhYmxlVEJvZGllcyk7CisgICAg
cmV0dXJuIGVuc3VyZVJhcmVEYXRhKCkuZW5zdXJlTm9kZUxpc3RzKCkuYWRkQ2FjaGVkQ29sbGVj
dGlvbjxHZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb248Q29sbGVjdGlvblR5cGVUcmFpdHM8VGFi
bGVUQm9kaWVzPjo6dHJhdmVyc2FsVHlwZT4+KCp0aGlzLCBUYWJsZVRCb2RpZXMpOwogfQogCiBj
b25zdCBBdG9taWNTdHJpbmcmIEhUTUxUYWJsZUVsZW1lbnQ6OnJ1bGVzKCkgY29uc3QKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlUm93RWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVJvd0VsZW1lbnQuY3BwCmluZGV4IGQ0MzUxZWFmY2E1
ZTZmNzU1MjZiOTdhMzA0YmE2N2FmYTY4MDdlYTguLmM4NzI1OWY1ZWNiOTZkMGFhNjA0OGQ0ZDE0
YWU4YjYwZjkzYjY4YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxl
Um93RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVSb3dFbGVt
ZW50LmNwcApAQCAtMjYsMTIgKzI2LDEzIEBACiAjaW5jbHVkZSAiSFRNTFRhYmxlUm93RWxlbWVu
dC5oIgogCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgotI2luY2x1ZGUgIkhUTUxDb2xsZWN0
aW9uLmgiCisjaW5jbHVkZSAiR2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uLmgiCiAjaW5jbHVk
ZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSFRNTFRhYmxlQ2VsbEVsZW1lbnQuaCIKICNpbmNs
dWRlICJIVE1MVGFibGVFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFRhYmxlU2VjdGlvbkVsZW1l
bnQuaCIKICNpbmNsdWRlICJOb2RlTGlzdC5oIgorI2luY2x1ZGUgIk5vZGVSYXJlRGF0YS5oIgog
I2luY2x1ZGUgIlRleHQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTU2LDcgKzE1Nyw3
IEBAIHZvaWQgSFRNTFRhYmxlUm93RWxlbWVudDo6ZGVsZXRlQ2VsbChpbnQgaW5kZXgsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQogCiBSZWY8SFRNTENvbGxlY3Rpb24+IEhUTUxUYWJsZVJvd0VsZW1lbnQ6
OmNlbGxzKCkKIHsKLSAgICByZXR1cm4gZW5zdXJlQ2FjaGVkSFRNTENvbGxlY3Rpb24oVFJDZWxs
cyk7CisgICAgcmV0dXJuIGVuc3VyZVJhcmVEYXRhKCkuZW5zdXJlTm9kZUxpc3RzKCkuYWRkQ2Fj
aGVkQ29sbGVjdGlvbjxHZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb248Q29sbGVjdGlvblR5cGVU
cmFpdHM8VFJDZWxscz46OnRyYXZlcnNhbFR5cGU+PigqdGhpcywgVFJDZWxscyk7CiB9CiAKIHZv
aWQgSFRNTFRhYmxlUm93RWxlbWVudDo6c2V0Q2VsbHMoSFRNTENvbGxlY3Rpb24qLCBFeGNlcHRp
b25Db2RlJiBlYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlUm93
c0NvbGxlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVSb3dzQ29sbGVj
dGlvbi5jcHAKaW5kZXggYmZhNWY2ZDc4ZDBmYmNhNzNiODNlYmUzYTJlMDFjMmE0MTM2MGEyNS4u
MmQ5MWQ5ZDQ4Zjc4Nzg2N2Y3NzhlODBjNjkyNTBlZTM2ZDZlMGRhMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVSb3dzQ29sbGVjdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MVGFibGVSb3dzQ29sbGVjdGlvbi5jcHAKQEAgLTE0OSw3ICsxNDks
NyBAQCBIVE1MVGFibGVSb3dFbGVtZW50KiBIVE1MVGFibGVSb3dzQ29sbGVjdGlvbjo6bGFzdFJv
dyhIVE1MVGFibGVFbGVtZW50JiB0YWJsZSkKIH0KIAogSFRNTFRhYmxlUm93c0NvbGxlY3Rpb246
OkhUTUxUYWJsZVJvd3NDb2xsZWN0aW9uKEhUTUxUYWJsZUVsZW1lbnQmIHRhYmxlKQotICAgIDog
SFRNTENvbGxlY3Rpb24odGFibGUsIFRhYmxlUm93cywgQ3VzdG9tRm9yd2FyZE9ubHlUcmF2ZXJz
YWwpCisgICAgOiBDYWNoZWRIVE1MQ29sbGVjdGlvbjxIVE1MVGFibGVSb3dzQ29sbGVjdGlvbiwg
Q29sbGVjdGlvblR5cGVUcmFpdHM8VGFibGVSb3dzPjo6dHJhdmVyc2FsVHlwZT4odGFibGUsIFRh
YmxlUm93cykKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFi
bGVSb3dzQ29sbGVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVSb3dzQ29s
bGVjdGlvbi5oCmluZGV4IDllYjVmYTZhN2EyOTgxNGYyM2UxNGUzN2FhOTk1MzZkZGVkYWY5NDQu
LmJmMDdhMzI5ZjU4MTU1OTQxNmY0MmRiZDY3YzEyMDg2YzVlMTIxNmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlUm93c0NvbGxlY3Rpb24uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxUYWJsZVJvd3NDb2xsZWN0aW9uLmgKQEAgLTI5LDE0ICsyOSwxNCBA
QAogI2lmbmRlZiBIVE1MVGFibGVSb3dzQ29sbGVjdGlvbl9oCiAjZGVmaW5lIEhUTUxUYWJsZVJv
d3NDb2xsZWN0aW9uX2gKIAotI2luY2x1ZGUgIkhUTUxDb2xsZWN0aW9uLmgiCisjaW5jbHVkZSAi
Q2FjaGVkSFRNTENvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJIVE1MVGFibGVFbGVtZW50LmgiCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSFRNTFRhYmxlUm93RWxlbWVudDsKIAotY2xh
c3MgSFRNTFRhYmxlUm93c0NvbGxlY3Rpb24gZmluYWwgOiBwdWJsaWMgSFRNTENvbGxlY3Rpb24g
eworY2xhc3MgSFRNTFRhYmxlUm93c0NvbGxlY3Rpb24gZmluYWwgOiBwdWJsaWMgQ2FjaGVkSFRN
TENvbGxlY3Rpb248SFRNTFRhYmxlUm93c0NvbGxlY3Rpb24sIENvbGxlY3Rpb25UeXBlVHJhaXRz
PFRhYmxlUm93cz46OnRyYXZlcnNhbFR5cGU+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPEhU
TUxUYWJsZVJvd3NDb2xsZWN0aW9uPiBjcmVhdGUoSFRNTFRhYmxlRWxlbWVudCYsIENvbGxlY3Rp
b25UeXBlKTsKIApAQCAtNDYsMTAgKzQ2LDExIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSFRNTFRh
YmxlUm93RWxlbWVudCogcm93QWZ0ZXIoSFRNTFRhYmxlRWxlbWVudCYsIEhUTUxUYWJsZVJvd0Vs
ZW1lbnQqKTsKICAgICBzdGF0aWMgSFRNTFRhYmxlUm93RWxlbWVudCogbGFzdFJvdyhIVE1MVGFi
bGVFbGVtZW50Jik7CiAKKyAgICAvLyBGb3IgQ2FjaGVkSFRNTENvbGxlY3Rpb24uCisgICAgRWxl
bWVudCogY3VzdG9tRWxlbWVudEFmdGVyKEVsZW1lbnQqKSBjb25zdDsKKwogcHJpdmF0ZToKICAg
ICBleHBsaWNpdCBIVE1MVGFibGVSb3dzQ29sbGVjdGlvbihIVE1MVGFibGVFbGVtZW50Jik7Ci0K
LSAgICB2aXJ0dWFsIEVsZW1lbnQqIGN1c3RvbUVsZW1lbnRBZnRlcihFbGVtZW50KikgY29uc3Qg
b3ZlcnJpZGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVNlY3Rpb25FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQuY3BwCmluZGV4IGY3NTcxN2U1OTgyOTJi
NzRlZDQyMjc1OGM0ODA2ZGM1YzAwN2JiZGUuLjllNDUzMTZmOGYzZjRmYzZkYThlM2RjZGIxYjNl
NGUyZGQ5MjdkODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlU2Vj
dGlvbkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlU2VjdGlv
bkVsZW1lbnQuY3BwCkBAIC0yNiwxMSArMjYsMTMgQEAKICNpbmNsdWRlICJIVE1MVGFibGVTZWN0
aW9uRWxlbWVudC5oIgogCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgIkdl
bmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxDb2xsZWN0aW9uLmgi
CiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSFRNTFRhYmxlUm93RWxlbWVudC5o
IgogI2luY2x1ZGUgIkhUTUxUYWJsZUVsZW1lbnQuaCIKICNpbmNsdWRlICJOb2RlTGlzdC5oIgor
I2luY2x1ZGUgIk5vZGVSYXJlRGF0YS5oIgogI2luY2x1ZGUgIlRleHQuaCIKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpAQCAtMTQ3LDcgKzE0OSw3IEBAIHZvaWQgSFRNTFRhYmxlU2VjdGlvbkVsZW1l
bnQ6OnNldFZBbGlnbihjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQogCiBSZWY8SFRNTENvbGxl
Y3Rpb24+IEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50Ojpyb3dzKCkKIHsKLSAgICByZXR1cm4gZW5z
dXJlQ2FjaGVkSFRNTENvbGxlY3Rpb24oVFNlY3Rpb25Sb3dzKTsKKyAgICByZXR1cm4gZW5zdXJl
UmFyZURhdGEoKS5lbnN1cmVOb2RlTGlzdHMoKS5hZGRDYWNoZWRDb2xsZWN0aW9uPEdlbmVyaWND
YWNoZWRIVE1MQ29sbGVjdGlvbjxDb2xsZWN0aW9uVHlwZVRyYWl0czxUU2VjdGlvblJvd3M+Ojp0
cmF2ZXJzYWxUeXBlPj4oKnRoaXMsIFRTZWN0aW9uUm93cyk7CiB9CiAKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>259026</attachid>
            <date>2015-08-14 12:29:23 -0700</date>
            <delta_ts>2015-08-14 21:36:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-147979-20150814122904.patch</filename>
            <type>text/plain</type>
            <size>108489</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg4MzY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzE2NDY1NDRmOTcyZmEx
NzYyNDIxN2VkMTdiZDI3ZWQzZDFjNjZmOC4uYzUwMjZlZjM3OTUyNjRmNWE0ZDk4NDk0YjQxMzM4
ZjM3ZDM1ZWRhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4MCBAQAorMjAxNS0wOC0xMyAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFJlZmFjdG9yIEhUTUxDb2xs
ZWN0aW9uIHRvIGJlIGFzIGZhc3QgYXMgQ2FjaGVkTGl2ZU5vZGVMaXN0CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDc5NzkKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWZhY3RvciBIVE1MQ29sbGVjdGlv
biB0byBiZSBhcyBmYXN0IGFzIENhY2hlZExpdmVOb2RlTGlzdC4gVGhpcyBpcyBpbgorICAgICAg
ICBwcmVwYXJhdGlvbiBvZiBoYXZpbmcgZ2V0RWxlbWVudHNCeVRhZ05hbWUqKCkgLyBnZXRFbGVt
ZW50c0J5Q2xhc3NOYW1lKCkKKyAgICAgICAgcmV0dXJuIGFuIEhUTUxDb2xsZWN0aW9uIGluc3Rl
YWQgb2YgYSBOb2RlTGlzdCwgYXMgcGVyIHRoZQorICAgICAgICBzcGVjaWZpY2F0aW9uLiBDaHJv
bWUgYW5kIEZpcmVmb3ggYWxyZWFkeSBtYXRjaCB0aGUgc3BlY2lmaWNhdGlvbiBpbgorICAgICAg
ICB0aGlzIGNhc2UuCisKKyAgICAgICAgVHJhdmVyc2luZyBhbiBIVE1MQ29sbGVjdGlvbiB3YXMg
c2xvdyBiZWNhdXNlIG9mIGFsbCB0aGUgZXh0cmEKKyAgICAgICAgYnJhbmNoaW5nIGl0IGhhZCBj
b21wYXJlZCB0byBDYWNoZWRMaXZlTm9kZUxpc3QuIFRvIGFkZHJlc3MgdGhlIGlzc3VlLAorICAg
ICAgICB0aGlzIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgdGVtcGxhdGVkIENhY2hlZEhUTUxDb2xs
ZWN0aW9uIHN1YmNsYXNzLAorICAgICAgICB3aGljaCBiZWhhdmVzIGluIGEgc2ltaWxhciB3YXkg
YXMgQ2FjaGVkTGl2ZU5vZGVMaXN0LiBUaGUgMiB0ZW1wbGF0ZQorICAgICAgICBwYXJhbWV0ZXJz
IGFyZToKKyAgICAgICAgMS4gVGhlIHR5cGUgb2YgdGhlIHN1YmNsYXNzIG9mIENhY2hlZEhUTUxD
b2xsZWN0aW9uLCBzbyB3ZSBjYW4gY2FsbAorICAgICAgICAgICBlbGVtZW50TWF0Y2hlcygpIGRp
cmVjdGx5IG9uIHRoZSBzdWJjbGFzcywgd2l0aG91dCBuZWVkZWQgYW55CisgICAgICAgICAgIHZp
cnR1YWwgZnVuY3Rpb24gY2FsbCBvciBzd2l0Y2ggc3RhdGVtZW50LiBUaGlzIGlzIHRoZSBzYW1l
IGFwcHJvYWNoCisgICAgICAgICAgIGFzIGluIENhY2hlZExpdmVOb2RlTGlzdC4KKyAgICAgICAg
Mi4gVGhlIHR5cGUgb2YgdHJlZSB0cmF2ZXJzYWwgdXNlZCAoRGVzY2VuZGFudHMsIENoaWxkcmVu
T25seSwKKyAgICAgICAgICAgQ3VzdG9tRm9yd2FyZE9ubHkpLiBVbmxpa2UgTGl2ZU5vZGVMaXN0
LCBIVE1MQ29sbGVjdGlvbiBuZWVkcyB0bworICAgICAgICAgICBzdXBwb3J0IHRoZXNlIDMgdHlw
ZXMgb2YgdHJlZSB0cmF2ZXJzYWwuIFRoZXNlIHdlcmUgY2F1c2luZyBleHRyYQorICAgICAgICAg
ICBicmFuY2hpbmcgZm9yIGV2ZXJ5IGl0ZW0oKSBjYWxsLiBXZSBhcmUgbm93IGFibGUgdG8gY2hv
b3NlIHRoZSByaWdodAorICAgICAgICAgICB0eXBlIG9mIHRyYXZlcnNhbCBmb3IgdGhlIENhY2hl
ZEhUTUxDb2xsZWN0aW9uIGF0IGNvbXBpbGUgdGltZS4KKworICAgICAgICAqIFdlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgQWRkIG5ldyBmaWxlcyB0byB0aGUgUHJv
amVjdC4KKworICAgICAgICAqIGRvbS9Db250YWluZXJOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNvbnRhaW5lck5vZGU6OmNoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRhaW5l
ck5vZGU6OmNhY2hlZEhUTUxDb2xsZWN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBkb20vQ29u
dGFpbmVyTm9kZS5oOgorICAgICAgICBEcm9wIENvbnRhaW5lck5vZGU6OmVuc3VyZUNhY2hlZEhU
TUxDb2xsZWN0aW9uKCkgYW5kIHVzZQorICAgICAgICBOb2RlTGlzdHNOb2RlRGF0YTo6YWRkQ2Fj
aGVkQ29sbGVjdGlvbigpIGRpcmVjdGx5IGF0IGNhbGwgc2l0ZXMKKyAgICAgICAgaW5zdGVhZC4g
V2UgbmVlZCBhY2Nlc3MgdG8gdGhlIENvbGxlY3Rpb25UeXBlIGF0IGJ1aWxkLXRpbWUgc28KKyAg
ICAgICAgd2UgY2FuIHJlc29sdmUgdGhlIENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlIHBhcmFtZXRl
ciBmb3IgdGhlCisgICAgICAgIEdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbiB1c2luZyBDb2xs
ZWN0aW9uVHlwZVRyYWl0cy4KKworICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAg
ICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgIFVwZGF0ZSBlbnN1cmVDYWNoZWRDb2xsZWN0aW9u
KCkgc28gdGhlIENvbGxlY3Rpb25UeXBlIGlzIG5vdyBhIHRlbXBsYXRlCisgICAgICAgIHBhcmFt
ZXRlciBpbnN0ZWFkIG9mIGEgbWV0aG9kIGFyZ3VtZW50LiBXZSBuZWVkIHRvIGtub3cgdGhlCisg
ICAgICAgIENvbGxlY3Rpb25UeXBlIGF0IGJ1aWxkIHRpbWUgdG8gY29uc3RydWN0IHRoZSBHZW5l
cmljQ2FjaGVkSFRNTENvbGxlY3Rpb24uCisKKyAgICAgICAgKiBkb20vRWxlbWVudENoaWxkSXRl
cmF0b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnRU
eXBlPjo6b3BlcmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudENoaWxkQ29uc3RJdGVy
YXRvcjxFbGVtZW50VHlwZT46Om9wZXJhdG9yKToKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIGRl
Y3JlbWVudGluZyBhbiBFbGVtZW50Q2hpbGRJdGVyYXRvciwgZm9yIGNvbnNpc3RlbmN5CisgICAg
ICAgIHdpdGggRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvci4gV2UgbmVlZCB0aGlzIHRvIHN1cHBv
cnQgYmFja3dhcmQKKyAgICAgICAgdHJhdmVyc2FsIGluIENhY2hlZEhUTUxDb2xsZWN0aW9ucyB0
aGF0IHVzZSB0aGUgJ0NoaWxkcmVuT25seScgdHlwZQorICAgICAgICBvZiB0cmF2ZXJzYWwuCisK
KyAgICAgICAgKiBkb20vTGl2ZU5vZGVMaXN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRM
aXZlTm9kZUxpc3Q8Tm9kZUxpc3RUeXBlPjo6Y29sbGVjdGlvbkJlZ2luKToKKyAgICAgICAgKFdl
YkNvcmU6OkNhY2hlZExpdmVOb2RlTGlzdDxOb2RlTGlzdFR5cGU+Ojpjb2xsZWN0aW9uTGFzdCk6
CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRMaXZlTm9kZUxpc3Q8Tm9kZUxpc3RUeXBlPjo6Y29s
bGVjdGlvblRyYXZlcnNlRm9yd2FyZCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRMaXZlTm9k
ZUxpc3Q8Tm9kZUxpc3RUeXBlPjo6Y29sbGVjdGlvblRyYXZlcnNlQmFja3dhcmQpOgorICAgICAg
ICBNb3ZlIHRyYXZlcnNhbCBpbXBsZW1lbnRhdGlvbiB0byBDb2xsZWN0aW9uVHJhdmVyc2FsLmgs
IHNvIGl0IGNhbiBiZQorICAgICAgICBzaGFyZWQgd2l0aCBhY2hlZEhUTUxDb2xsZWN0aW9uLmgu
CisKKyAgICAgICAgKiBodG1sL0NhY2hlZEhUTUxDb2xsZWN0aW9uLmg6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6dHJhdmVyc2FsVHlwZT46OkNhY2hlZEhUTUxDb2xsZWN0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OnRyYXZlcnNhbFR5cGU+Ojp+Q2FjaGVkSFRNTENvbGxlY3Rpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6dHJhdmVyc2FsVHlwZT46OkNhY2hlZEhUTUxDb2xsZWN0aW9uOjptZW1v
cnlDb3N0KToKKyAgICAgICAgKFdlYkNvcmU6OnRyYXZlcnNhbFR5cGU+Ojpjb2xsZWN0aW9uQ2Fu
VHJhdmVyc2VCYWNrd2FyZCk6CisgICAgICAgIChXZWJDb3JlOjp0cmF2ZXJzYWxUeXBlPjo6Y29s
bGVjdGlvblRyYXZlcnNlRm9yd2FyZCk6CisgICAgICAgIChXZWJDb3JlOjp0cmF2ZXJzYWxUeXBl
Pjo6Y29sbGVjdGlvblRyYXZlcnNlQmFja3dhcmQpOgorICAgICAgICAoV2ViQ29yZTo6dHJhdmVy
c2FsVHlwZT46OndpbGxWYWxpZGF0ZUluZGV4Q2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6dHJh
dmVyc2FsVHlwZT46Omxlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjp0cmF2ZXJzYWxUeXBlPjo6
aXRlbSk6CisgICAgICAgIChXZWJDb3JlOjp0cmF2ZXJzYWxUeXBlPjo6aW52YWxpZGF0ZUNhY2hl
KToKKyAgICAgICAgKFdlYkNvcmU6OnRyYXZlcnNhbFR5cGU+OjplbGVtZW50TWF0Y2hlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpuYW1lU2hvdWxkQmVWaXNpYmxlSW5Eb2N1bWVudEFsbCk6CisgICAg
ICAgIChXZWJDb3JlOjp0cmF2ZXJzYWxUeXBlPjo6bmFtZWRJdGVtKToKKworICAgICAgICAqIGh0
bWwvQ29sbGVjdGlvblRyYXZlcnNhbC5oOiBBZGRlZC4KKyAgICAgICAgQWRkIG5ldyB0ZW1wbGF0
ZSBjbGFzcyB0aGF0IHByb3ZpZGUgdGhlIGNvbGxlY3Rpb24gdHJhdmVyc2FsIGNvZGUKKyAgICAg
ICAgbmVlZGVkIGJ5IENvbGxlY3Rpb25JbmRleENhY2hlLiBJdCBoYXMgdGVtcGxhdGUgc3BlY2lh
bGl6YXRpb25zIGZvcgorICAgICAgICBhbGwgMyB0eXBlcyBvZiB0cmF2ZXJzYWw6IERlc2NlbmRh
bnRzLCBDaGlsZHJlbk9ubHksIGFuZAorICAgICAgICBDdXN0b21Gb3J3YXJkT25seS4KKworICAg
ICAgICAqIGh0bWwvQ29sbGVjdGlvblR5cGUuaDoKKyAgICAgICAgQWRkIENvbGxlY3Rpb25UeXBl
VHJhaXRzIHRyYWl0cyBzbyB3ZSBjYW4gcmVzb2x2ZSB0aGUKKyAgICAgICAgQ29sbGVjdGlvblRy
YXZlcnNhbFR5cGUgdXNlZCBieSBhIHNwZWNpZmljIENvbGxlY3Rpb25UeXBlIGF0CisgICAgICAg
IGNvbXBpbGUtdGltZS4gVGhpcyBpcyBuZWVkZWQgZm9yIHRoZSBzZWNvbmQgdGVtcGxhdGUgcGFy
YW1ldGVyIG9mCisgICAgICAgIENhY2hlZEhUTUxDb2xsZWN0aW9uLgorCisgICAgICAgICogaHRt
bC9HZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbjx0cmF2ZXJzYWxUeXBlPjo6ZWxlbWVudE1h
dGNoZXMpOgorICAgICAgICAqIGh0bWwvR2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uLmg6IEFk
ZGVkLgorICAgICAgICBBZGQgQ2FjaGVkSFRNTENvbGxlY3Rpb24gc3ViY2xhc3MgaXMgdGhlIGdl
bmVyaWMgb25lIHVzZWQgZm9yIGFsbAorICAgICAgICBDb2xsZWN0aW9uVHlwZXMgdGhhdCBkbyBu
b3QgaGF2ZSB0aGVpciBvd24gc3ViY2xhc3MgKGUuZy4gTm9kZUNoaWxkcmVuKS4KKyAgICAgICAg
VGhpcyBoYXMgYW4gZWxlbWVudE1hdGNoZXMoKSBtZXRob2Qgd2l0aCBhIHN3aXRjaCgpIHN0YXRl
bWVudCBoYW5kbGluZworICAgICAgICBhbGwgdGhlc2UgQ29sbGVjdGlvblR5cGVzLiBUaG9zZSBh
cmUgbm90IG5vcm1hbGx5IG5vdCBwZXJmb3JtYW5jZQorICAgICAgICBzZW5zaXRpdmUuCisKKyAg
ICAgICAgKiBodG1sL0hUTUxBbGxDb2xsZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxBbGxDb2xsZWN0aW9uOjpIVE1MQWxsQ29sbGVjdGlvbik6CisgICAgICAgICogaHRtbC9IVE1M
QWxsQ29sbGVjdGlvbi5oOgorICAgICAgICBTdWJjbGFzcyBDYWNoZWRIVE1MQ29sbGVjdGlvbiBp
bnN0ZWFkIG9mIEhUTUxDb2xsZWN0aW9uLiBBbHNvIHByb3ZpZGUKKyAgICAgICAgYW4gZWxlbWVu
dE1hdGNoZXMoKSBtZXRob2QgdGhhdCBzaW1wbHkgcmV0dXJucyB0cnVlIGFzIHdlIHdhbnQgdG8K
KyAgICAgICAgbWF0Y2ggYWxsIGVsZW1lbnRzLgorCisgICAgICAgICogaHRtbC9IVE1MQ29sbGVj
dGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ29sbGVjdGlvbjo6SFRNTENvbGxlY3Rp
b24pOgorICAgICAgICBNb3ZlIENvbGxlY3Rpb25JbmRleENhY2hlIG1lbWJlciB0byB0aGUgc3Vi
Y2xhc3MgYW5kIGRyb3AgdGhlIDIgb3RoZXIKKyAgICAgICAgbWVtYmVycyBhcyB0aGV5IGFyZSBy
ZXBsYWNlZCB3aXRoIHRoZSBDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZSB0ZW1wbGF0ZQorICAgICAg
ICBwYXJhbWV0ZXIgb2YgQ2FjaGVkSFRNTENvbGxlY3Rpb24uCisKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxDb2xsZWN0aW9uOjp+SFRNTENvbGxlY3Rpb24pOgorICAgICAgICBNb3ZlIERvY3VtZW50
Ojp1bnJlZ2lzdGVyQ29sbGVjdGlvbigpIGNhbGwgdG8gfkNhY2hlZEhUTUxDb2xsZWN0aW9uKCkK
KyAgICAgICAgYXMgd2UgbmVlZGVkIHRvIGNoZWNrIGlmIHRoZSBDb2xsZWN0aW9uSW5kZXhDYWNo
ZSB3YXMgdmFsaWQgZmlyc3QuCisKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb2xsZWN0aW9uOjp1
cGRhdGVOYW1lZEVsZW1lbnRDYWNoZSk6CisgICAgICAgIE1vdmUgcGFydCBvZiB0aGUgaW1wbGVt
ZW50YXRpb24gdG8gdGhlIENhY2hlZEhUTUxDb2xsZWN0aW9uIHN1YmNsYXNzCisgICAgICAgIGFz
IGl0IG5lZWRzIHRvIGtub3cgYWJvdXQgdGhlIHR5cGUgb2YgdHJhdmVyc2FsIGFuZCBpdCBuZWVk
cyB0byBiZQorICAgICAgICBhYmxlIHRvIGNhbGwgZWxlbWVudE1hdGNoZXMoKS4KKworICAgICAg
ICAqIGh0bWwvSFRNTENvbGxlY3Rpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb2xsZWN0
aW9uOjpyb290Tm9kZSk6CisgICAgICAgIElubGluZSBmb3IgcGVyZm9ybWFuY2UgcmVhc29ucyBh
bmQgY29uc2lzdGVuY3kgd2l0aCBDYWNoZWRMaXZlTm9kZUxpc3QuCisKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxDb2xsZWN0aW9uOjptZW1vcnlDb3N0KToKKyAgICAgICAgTWFrZSB2aXJ0dWFsIGFu
ZCBtb3ZlIHBhcnQgb2YgdGhlIGltcGxlbWVudGF0aW9uIHRvIHRoZQorICAgICAgICBDYWNoZWRI
VE1MQ29sbGVjdGlvbiBzdWJjbGFzcyB0byBjb21wdXRlIHRoZSBjb3N0IG9mIHRoZQorICAgICAg
ICBDb2xsZWN0aW9uSW5kZXhDYWNoZS4KKworICAgICAgICAoV2ViQ29yZTo6SFRNTENvbGxlY3Rp
b246OmludmFsaWRhdGVDYWNoZSk6CisgICAgICAgIE1vdmUgcGFydCBvZiB0aGUgaW1wbGVtZW50
YXRpb24gdG8gdGhlIHN1YmNsYXNzIHRvIGludmFsaWRhdGUgdGhlCisgICAgICAgIENvbGxlY3Rp
b25JbmRleENhY2hlLgorCisgICAgICAgICogaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxGaWVsZFNldEVsZW1lbnQ6OmVsZW1lbnRzKToKKworICAg
ICAgICAqIGh0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uY3BwOgorICAgICAgICAqIGh0
bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uaDoKKyAgICAgICAgU3ViY2xhc3MgQ2FjaGVk
SFRNTENvbGxlY3Rpb24gaW5zdGVhZCBvZiBIVE1MQ29sbGVjdGlvbi4KKyAgICAgICAgY3VzdG9t
RWxlbWVudEFmdGVyKCkgbm8gbG9uZ2VyIG5lZWRzIHRvIGJlIHZpcnR1YWwgYXMgaXQKKyAgICAg
ICAgaXMgY2FsbGVkIGRpcmVjdGx5IGJ5IENhY2hlZEhUTUxDb2xsZWN0aW9uIG9uIHRoZSBzdWJj
bGFzcy4KKworICAgICAgICAqIGh0bWwvSFRNTEZvcm1FbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxGb3JtRWxlbWVudDo6ZWxlbWVudHMpOgorICAgICAgICAqIGh0bWwvSFRNTE1h
cEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1hcEVsZW1lbnQ6OmFyZWFzKToK
KyAgICAgICAgQ2FsbCBOb2RlTGlzdHNOb2RlRGF0YTo6YWRkQ2FjaGVkQ29sbGVjdGlvbigpIGRp
cmVjdGx5LgorCisgICAgICAgICogaHRtbC9IVE1MTmFtZUNvbGxlY3Rpb24uY3BwOgorICAgICAg
ICAqIGh0bWwvSFRNTE5hbWVDb2xsZWN0aW9uLmg6CisgICAgICAgIFN1YmNsYXNzIENhY2hlZEhU
TUxDb2xsZWN0aW9uIGluc3RlYWQgb2YgSFRNTENvbGxlY3Rpb24uCisKKyAgICAgICAgKiBodG1s
L0hUTUxPcHRpb25zQ29sbGVjdGlvbi5jcHA6CisgICAgICAgICogaHRtbC9IVE1MT3B0aW9uc0Nv
bGxlY3Rpb24uaDoKKyAgICAgICAgU3ViY2xhc3MgQ2FjaGVkSFRNTENvbGxlY3Rpb24gaW5zdGVh
ZCBvZiBIVE1MQ29sbGVjdGlvbi4KKworICAgICAgICAqIGh0bWwvSFRNTFNlbGVjdEVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OnNlbGVjdGVkT3B0aW9u
cyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6b3B0aW9ucyk6CisgICAg
ICAgICogaHRtbC9IVE1MVGFibGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxU
YWJsZUVsZW1lbnQ6OnJvd3MpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRhYmxlRWxlbWVudDo6
dEJvZGllcyk6CisgICAgICAgICogaHRtbC9IVE1MVGFibGVSb3dFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxUYWJsZVJvd0VsZW1lbnQ6OmNlbGxzKToKKyAgICAgICAgQ2FsbCBO
b2RlTGlzdHNOb2RlRGF0YTo6YWRkQ2FjaGVkQ29sbGVjdGlvbigpIGRpcmVjdGx5LgorCisgICAg
ICAgICogaHRtbC9IVE1MVGFibGVSb3dzQ29sbGVjdGlvbi5jcHA6CisgICAgICAgICogaHRtbC9I
VE1MVGFibGVSb3dzQ29sbGVjdGlvbi5oOgorICAgICAgICBTdWJjbGFzcyBDYWNoZWRIVE1MQ29s
bGVjdGlvbiBpbnN0ZWFkIG9mIEhUTUxDb2xsZWN0aW9uLgorICAgICAgICBjdXN0b21FbGVtZW50
QWZ0ZXIoKSBubyBsb25nZXIgbmVlZHMgdG8gYmUgdmlydHVhbCBhcyBpdAorICAgICAgICBpcyBj
YWxsZWQgZGlyZWN0bHkgYnkgQ2FjaGVkSFRNTENvbGxlY3Rpb24gb24gdGhlIHN1YmNsYXNzLgor
CisgICAgICAgICogaHRtbC9IVE1MVGFibGVTZWN0aW9uRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MVGFibGVTZWN0aW9uRWxlbWVudDo6cm93cyk6CisgICAgICAgIENhbGwgTm9k
ZUxpc3RzTm9kZURhdGE6OmFkZENhY2hlZENvbGxlY3Rpb24oKSBkaXJlY3RseS4KKwogMjAxNS0w
OC0xMiAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgQ2FjaGVk
UmVzb3VyY2UgbGVhayBpbiB2YWxpZGF0aW9uIGNvZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXgg
ZTY4MzIxZWEyODQ4OTViYjFjYTc5OWYyZTUwY2E3NTc1Y2NkM2Y3Zi4uMDU4ZGY2ZWNhNzkxOGEy
MDQ2NTIzYTA5N2FiZGM1MWQ3Nzk0YTMwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTE2MDgs
NiArMTYwOCw3IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBodG1sL0Zvcm1Bc3NvY2lhdGVk
RWxlbWVudC5jcHAKICAgICBodG1sL0Zvcm1Db250cm9sbGVyLmNwcAogICAgIGh0bWwvRm9ybURh
dGFMaXN0LmNwcAorICAgIGh0bWwvR2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uLmNwcAogICAg
IGh0bWwvSFRNTEFsbENvbGxlY3Rpb24uY3BwCiAgICAgaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5j
cHAKICAgICBodG1sL0hUTUxBcHBsZXRFbGVtZW50LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKaW5kZXggOTJiOWUxYTBjZmY5ODQ1N2YzN2Vi
ZTIxMmIyYzg0MTBmY2I2MTE3ZS4uZDE3ZTM2MmIzNTc0YWJkMTI5YTU1MzdlOTlmZWRhZmU5ZDMz
MmY4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUu
dmN4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hw
cm9qCkBAIC0xNjEwNyw2ICsxNjEwNyw3IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxo
dG1sXEZvcm1Db250cm9sbGVyLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGh0
bWxcRm9ybURhdGFMaXN0LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGh0bWxc
RlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
aHRtbFxHZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb24uY3BwIiAvPgogICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5caHRtbFxIaWRkZW5JbnB1dFR5cGUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5caHRtbFxIVE1MQWxsQ29sbGVjdGlvbi5jcHAiIC8+CiAgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxodG1sXEhUTUxBbmNob3JFbGVtZW50LmNwcCI+CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNDE3NmY3ZjM2
ZTlmN2U3ZjY1NmVmN2Q1ZGUyMzk0MjA0ZTRhNDk2OC4uM2RhYzdlYmZjNDAxMjAzMzU2NTY0MjZj
ZGMwYTI4OTRjMWU5Mjc5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTY4NSw2ICsxNjg1LDcgQEAKIAkJNDZDODNFRkUxQTlC
QkUyOTAwQTc5QTQxIC8qIEdlb05vdGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0NkM4M0VGQzFBOUJCRTI5MDBBNzlBNDEgLyogR2VvTm90aWZp
ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0
NkRCN0Q1NzFCMjBGRTQ2MDA1NjUxQjIgLyogVk5vZGVUcmFja2VyQ29jb2EuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZEQjdENTYxQjIwRkUzQzAw
NTY1MUIyIC8qIFZOb2RlVHJhY2tlckNvY29hLmNwcCAqLzsgfTsKIAkJNDZEQkI2NTAxQUI4Qzk2
RjAwRDlBODEzIC8qIFBvd2VyT2JzZXJ2ZXJNYWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2REJCNjRFMUFCOEM5NkYwMEQ5QTgxMyAvKiBQb3dlck9i
c2VydmVyTWFjLmggKi87IH07CisJCTQ2RUJFQTAyMUI3RDRENjUwMEJFNDk0MSAvKiBDb2xsZWN0
aW9uVHJhdmVyc2FsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0NkVCRUEwMTFCN0Q0RDVEMDBCRTQ5NDEgLyogQ29sbGVjdGlvblRyYXZlcnNhbC5oICov
OyB9OwogCQk0NkYzRTNGOTFCMjEwOTAwMDA4N0VEMTMgLyogVk5vZGVUcmFja2VyLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2REI3RDU4MUIyMEZF
NTgwMDU2NTFCMiAvKiBWTm9kZVRyYWNrZXIuY3BwICovOyB9OwogCQk0NkYzRTNGQTFCMjEwOTEw
MDA4N0VEMTMgLyogVk5vZGVUcmFja2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0NkRCN0Q1OTFCMjBGRTU4MDA1NjUxQjIgLyogVk5vZGVUcmFja2Vy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDZG
Q0I2MTgxQTcwODIwRTAwQzVBMjFFIC8qIERpYWdub3N0aWNMb2dnaW5nS2V5cy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QzN0IzNzUxNUMxQTdFMTAw
NkRDODk4IC8qIERpYWdub3N0aWNMb2dnaW5nS2V5cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0yNjY5LDYgKzI2NzAsMTEgQEAKIAkJODJBQjE3
NzYxMjVDODI2NzAwQzUwNjlEIC8qIEluc3BlY3RvclJlc291cmNlQWdlbnQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgyQUIxNzcyMTI1QzgyNjcwMEM1
MDY5RCAvKiBJbnNwZWN0b3JSZXNvdXJjZUFnZW50LmggKi87IH07CiAJCTgyRTNEOERFMTIyRUEw
RDEwMDNBRTVCQyAvKiBDU1NQcm9wZXJ0eVNvdXJjZURhdGEuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODJFM0Q4REMxMjJFQTBEMTAwM0FFNUJDIC8q
IENTU1Byb3BlcnR5U291cmNlRGF0YS5jcHAgKi87IH07CiAJCTgyRTNEOERGMTIyRUEwRDEwMDNB
RTVCQyAvKiBDU1NQcm9wZXJ0eVNvdXJjZURhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgyRTNEOEREMTIyRUEwRDEwMDNBRTVCQyAvKiBDU1NQcm9w
ZXJ0eVNvdXJjZURhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQk4MzAwMzBGNTFCN0QzM0I1MDBFRDNBQUMgLyogR2VuZXJpY0NhY2hlZEhUTUxD
b2xsZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDgzMDAzMEYzMUI3RDMzQTYwMEVEM0FBQyAvKiBHZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rp
b24uY3BwICovOyB9OworCQk4MzAwMzBGNjFCN0QzM0I1MDBFRDNBQUMgLyogR2VuZXJpY0NhY2hl
ZEhUTUxDb2xsZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4MzAwMzBGNDFCN0QzM0E2MDBFRDNBQUMgLyogR2VuZXJpY0NhY2hlZEhUTUxDb2xs
ZWN0aW9uLmggKi87IH07CisJCTgzMDAzMEY4MUI3RDNCNzgwMEVEM0FBQyAvKiBDYWNoZWRIVE1M
Q29sbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gODMwMDMwRjcxQjdEMzk4ODAwRUQzQUFDIC8qIENhY2hlZEhUTUxDb2xsZWN0aW9uLmggKi87
IH07CisJCTgzMUQ0OEMwMUI3RDlBNTIwMDZERTM5QSAvKiBDbGFzc05vZGVMaXN0LmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzMUQ0OEJFMUI3RDlB
NDYwMDZERTM5QSAvKiBDbGFzc05vZGVMaXN0LmNwcCAqLzsgfTsKKwkJODMxRDQ4QzExQjdEOUE1
MjAwNkRFMzlBIC8qIENsYXNzTm9kZUxpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDgzMUQ0OEJGMUI3RDlBNDYwMDZERTM5QSAvKiBDbGFzc05vZGVM
aXN0LmggKi87IH07CiAJCTgzMkI4NDM0MTlEOEU1NTEwMEIyNjA1NSAvKiBTVkdBbmltYXRlRWxl
bWVudEJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDgzMkI4NDMzMTlEOEU1NTEwMEIyNjA1NSAvKiBTVkdBbmltYXRlRWxlbWVudEJhc2UuaCAqLzsg
fTsKIAkJODMyQjg0MzYxOUQ4RTU3NDAwQjI2MDU1IC8qIFNWR0FuaW1hdGVFbGVtZW50QmFzZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzJCODQz
NTE5RDhFNTc0MDBCMjYwNTUgLyogU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmNwcCAqLzsgfTsKIAkJ
ODM1MjBDN0UxQTcxQkZDQzAwNkJEMkFBIC8qIENTU0ZvbnRGYW1pbHkuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzNTIwQzdEMUE3MUJGQ0MwMDZCRDJB
QSAvKiBDU1NGb250RmFtaWx5LmggKi87IH07CkBAIC01NDEwLDggKzU0MTYsNiBAQAogCQlCQzhC
RjE1QTEwNTgxNDE4MDBBNDBBMDcgLyogVXNlclN0eWxlU2hlZXRUeXBlcy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM4QkYxNTkxMDU4MTQxODAwQTQw
QTA3IC8qIFVzZXJTdHlsZVNoZWV0VHlwZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlCQzhDOEZBRDBERENEMzFCMDBCNTkyRjQgLyogUmVuZGVy
U3R5bGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QkM4QzhGQUIwRERDRDMxQjAwQjU5MkY0IC8qIFJlbmRlclN0eWxlLmNwcCAqLzsgfTsKIAkJQkM4
QzhGQUUwRERDRDMxQjAwQjU5MkY0IC8qIFJlbmRlclN0eWxlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzhDOEZBQzBERENEMzFCMDBCNTkyRjQgLyog
UmVuZGVyU3R5bGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwotCQlCQzkwNEI3NjBEMTA5OThGMDA2ODBEMzIgLyogQ2xhc3NOb2RlTGlzdC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzkwNEI3MjBEMTA5
OThGMDA2ODBEMzIgLyogQ2xhc3NOb2RlTGlzdC5jcHAgKi87IH07Ci0JCUJDOTA0Qjc3MEQxMDk5
OEYwMDY4MEQzMiAvKiBDbGFzc05vZGVMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCQzkwNEI3MzBEMTA5OThGMDA2ODBEMzIgLyogQ2xhc3NOb2Rl
TGlzdC5oICovOyB9OwogCQlCQzkyNkY4MDBDMDU1MjQ3MDA4Mjc3NkIgLyogSlNIVE1MRnJhbWVT
ZXRFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEJDOTI2RjdFMEMwNTUyNDcwMDgyNzc2QiAvKiBKU0hUTUxGcmFtZVNldEVsZW1lbnQuY3Bw
ICovOyB9OwogCQlCQzkyNkY4MTBDMDU1MjQ3MDA4Mjc3NkIgLyogSlNIVE1MRnJhbWVTZXRFbGVt
ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzky
NkY3RjBDMDU1MjQ3MDA4Mjc3NkIgLyogSlNIVE1MRnJhbWVTZXRFbGVtZW50LmggKi87IH07CiAJ
CUJDOTQzOUMzMTE2Q0Y0OTQwMDQ4Qzc1MCAvKiBKU05vZGVDdXN0b20uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDOTQzOUMyMTE2Q0Y0OTQwMDQ4Qzc1
MCAvKiBKU05vZGVDdXN0b20uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwpAQCAtODkyNCw2ICs4OTI4LDcgQEAKIAkJNDZEQjdENTgxQjIwRkU1ODAwNTY1
MUIyIC8qIFZOb2RlVHJhY2tlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBWTm9kZVRyYWNrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkRC
N0Q1OTFCMjBGRTU4MDA1NjUxQjIgLyogVk5vZGVUcmFja2VyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFZOb2RlVHJhY2tlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0NkRCQjY0RTFBQjhDOTZGMDBEOUE4MTMgLyogUG93ZXJPYnNlcnZlck1hYy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQb3dlck9ic2VydmVyTWFjLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2RUJFQTAxMUI3RDRENUQwMEJFNDk0MSAvKiBDb2xsZWN0
aW9uVHJhdmVyc2FsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbGxlY3Rp
b25UcmF2ZXJzYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDkwNzA3RTQxMjE5
QzA0MzAwRDkwRTUxIC8qIEFOR0xFV2ViS2l0QnJpZGdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEFOR0xFV2ViS2l0QnJpZGdlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDkwNzA3RTUxMjE5QzA0MzAwRDkwRTUxIC8qIEFOR0xFV2ViS2l0QnJp
ZGdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFOR0xFV2ViS2l0QnJpZGdl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5MjkxRTRBMTM0MTcyQzgwMEU3NTNE
RSAvKiBJbWFnZVJlbmRlcmluZ01vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSW1hZ2VSZW5kZXJpbmdNb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0x
MDAyNCw2ICsxMDAyOSwxMSBAQAogCQk4MkFCMTc3MjEyNUM4MjY3MDBDNTA2OUQgLyogSW5zcGVj
dG9yUmVzb3VyY2VBZ2VudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNw
ZWN0b3JSZXNvdXJjZUFnZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgyRTNE
OERDMTIyRUEwRDEwMDNBRTVCQyAvKiBDU1NQcm9wZXJ0eVNvdXJjZURhdGEuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ1NTUHJvcGVydHlTb3VyY2VEYXRhLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODJFM0Q4REQxMjJFQTBEMTAwM0FFNUJDIC8q
IENTU1Byb3BlcnR5U291cmNlRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBDU1NQcm9wZXJ0eVNvdXJjZURhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
ODMwMDMwRjMxQjdEMzNBNjAwRUQzQUFDIC8qIEdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbi5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHZW5lcmljQ2FjaGVkSFRN
TENvbGxlY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4MzAwMzBGNDFC
N0QzM0E2MDBFRDNBQUMgLyogR2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbi5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4MzAwMzBGNzFCN0QzOTg4MDBFRDNBQUMgLyog
Q2FjaGVkSFRNTENvbGxlY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Q2FjaGVkSFRNTENvbGxlY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODMx
RDQ4QkUxQjdEOUE0NjAwNkRFMzlBIC8qIENsYXNzTm9kZUxpc3QuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2xhc3NOb2RlTGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTgzMUQ0OEJGMUI3RDlBNDYwMDZERTM5QSAvKiBDbGFzc05vZGVMaXN0
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENsYXNzTm9kZUxpc3QuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODMyQjg0MzMxOUQ4RTU1MTAwQjI2MDU1IC8qIFNW
R0FuaW1hdGVFbGVtZW50QmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
VkdBbmltYXRlRWxlbWVudEJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODMy
Qjg0MzUxOUQ4RTU3NDAwQjI2MDU1IC8qIFNWR0FuaW1hdGVFbGVtZW50QmFzZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdBbmltYXRlRWxlbWVudEJhc2UuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzUyMEM3RDFBNzFCRkNDMDA2QkQyQUEg
LyogQ1NTRm9udEZhbWlseS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDU1NG
b250RmFtaWx5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMjk5Miw4ICsxMzAw
Miw2IEBACiAJCUJDOEJGMTU5MTA1ODE0MTgwMEE0MEEwNyAvKiBVc2VyU3R5bGVTaGVldFR5cGVz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVzZXJTdHlsZVNoZWV0VHlwZXMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM4QzhGQUIwRERDRDMxQjAwQjU5MkY0
IC8qIFJlbmRlclN0eWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFJlbmRlclN0eWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM4QzhGQUMw
RERDRDMxQjAwQjU5MkY0IC8qIFJlbmRlclN0eWxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFJlbmRlclN0eWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUJD
OTA0QjcyMEQxMDk5OEYwMDY4MEQzMiAvKiBDbGFzc05vZGVMaXN0LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENsYXNzTm9kZUxpc3QuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQlCQzkwNEI3MzBEMTA5OThGMDA2ODBEMzIgLyogQ2xhc3NOb2RlTGlz
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDbGFzc05vZGVMaXN0Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDOTI2RjdFMEMwNTUyNDcwMDgyNzc2QiAvKiBK
U0hUTUxGcmFtZVNldEVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTSFRNTEZyYW1lU2V0RWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUJDOTI2RjdGMEMwNTUyNDcwMDgyNzc2QiAvKiBKU0hUTUxGcmFtZVNldEVsZW1lbnQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTSFRNTEZyYW1lU2V0RWxlbWVu
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzk0MzlDMjExNkNGNDk0MDA0OEM3
NTAgLyogSlNOb2RlQ3VzdG9tLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpT
Tm9kZUN1c3RvbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTgxNjIsMTAgKzE4
MTcwLDEyIEBACiAJCQkJRjU1QjNEN0ExMjUxRjEyRDAwM0VGMjY5IC8qIEJhc2VUZXh0SW5wdXRU
eXBlLmggKi8sCiAJCQkJRjU1QjNEN0IxMjUxRjEyRDAwM0VGMjY5IC8qIEJ1dHRvbklucHV0VHlw
ZS5jcHAgKi8sCiAJCQkJRjU1QjNEN0MxMjUxRjEyRDAwM0VGMjY5IC8qIEJ1dHRvbklucHV0VHlw
ZS5oICovLAorCQkJCTgzMDAzMEY3MUI3RDM5ODgwMEVEM0FBQyAvKiBDYWNoZWRIVE1MQ29sbGVj
dGlvbi5oICovLAogCQkJCUY1NUIzRDdEMTI1MUYxMkQwMDNFRjI2OSAvKiBDaGVja2JveElucHV0
VHlwZS5jcHAgKi8sCiAJCQkJRjU1QjNEN0UxMjUxRjEyRDAwM0VGMjY5IC8qIENoZWNrYm94SW5w
dXRUeXBlLmggKi8sCiAJCQkJNEFDQkMwQkMxMjcxM0NCRDAwOTRGOUIyIC8qIENsYXNzTGlzdC5j
cHAgKi8sCiAJCQkJNEFDQkMwQkQxMjcxM0NCRDAwOTRGOUIyIC8qIENsYXNzTGlzdC5oICovLAor
CQkJCTQ2RUJFQTAxMUI3RDRENUQwMEJFNDk0MSAvKiBDb2xsZWN0aW9uVHJhdmVyc2FsLmggKi8s
CiAJCQkJOTNDNDQxRkYwRjgxM0FFMTAwQzFBNjM0IC8qIENvbGxlY3Rpb25UeXBlLmggKi8sCiAJ
CQkJQkMyOTkzNUMxN0ExREQ1ODAwQkNFODgwIC8qIENvbG9ySW5wdXRUeXBlLmNwcCAqLywKIAkJ
CQlGNTVCM0Q4MDEyNTFGMTJEMDAzRUYyNjkgLyogQ29sb3JJbnB1dFR5cGUuaCAqLywKQEAgLTE4
MjAwLDYgKzE4MjEwLDggQEAKIAkJCQk5QjUwQjFEQzE3Q0Q0QzBGMDA4N0Y2M0MgLyogRm9ybU5h
bWVkSXRlbS5oICovLAogCQkJCTk3MjA1QUFEMTIzOTI4Q0EwMEIxNzM4MCAvKiBGVFBEaXJlY3Rv
cnlEb2N1bWVudC5jcHAgKi8sCiAJCQkJOTcyMDVBQUUxMjM5MjhDQTAwQjE3MzgwIC8qIEZUUERp
cmVjdG9yeURvY3VtZW50LmggKi8sCisJCQkJODMwMDMwRjMxQjdEMzNBNjAwRUQzQUFDIC8qIEdl
bmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbi5jcHAgKi8sCisJCQkJODMwMDMwRjQxQjdEMzNBNjAw
RUQzQUFDIC8qIEdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbi5oICovLAogCQkJCUY1NUIzRDhC
MTI1MUYxMkQwMDNFRjI2OSAvKiBIaWRkZW5JbnB1dFR5cGUuY3BwICovLAogCQkJCUY1NUIzRDhD
MTI1MUYxMkQwMDNFRjI2OSAvKiBIaWRkZW5JbnB1dFR5cGUuaCAqLywKIAkJCQlCQzk3RTIzOTEw
OTE0NDk1MDAxMEQzNjEgLyogSFRNTEFsbENvbGxlY3Rpb24uY3BwICovLApAQCAtMjMxNTMsOCAr
MjMxNjUsOCBAQAogCQkJCTgzRDI2RDNDMUFGRENDNTAwMDFCMzg3MyAvKiBDaGlsZE5vZGUuaWRs
ICovLAogCQkJCUE4MTg3MjFBMDk3N0QzQzAwMDU4MjZEOSAvKiBDaGlsZE5vZGVMaXN0LmNwcCAq
LywKIAkJCQlBODE4NzIxNTA5NzdEM0MwMDA1ODI2RDkgLyogQ2hpbGROb2RlTGlzdC5oICovLAot
CQkJCUJDOTA0QjcyMEQxMDk5OEYwMDY4MEQzMiAvKiBDbGFzc05vZGVMaXN0LmNwcCAqLywKLQkJ
CQlCQzkwNEI3MzBEMTA5OThGMDA2ODBEMzIgLyogQ2xhc3NOb2RlTGlzdC5oICovLAorCQkJCTgz
MUQ0OEJFMUI3RDlBNDYwMDZERTM5QSAvKiBDbGFzc05vZGVMaXN0LmNwcCAqLywKKwkJCQk4MzFE
NDhCRjFCN0Q5QTQ2MDA2REUzOUEgLyogQ2xhc3NOb2RlTGlzdC5oICovLAogCQkJCUJDQzA2NTc3
MEYzQ0UxQjcwMENEMkQ4NyAvKiBDbGllbnRSZWN0LmNwcCAqLywKIAkJCQlCQ0MwNjU3ODBGM0NF
MUI3MDBDRDJEODcgLyogQ2xpZW50UmVjdC5oICovLAogCQkJCUJDQzA2NTc5MEYzQ0UxQjcwMENE
MkQ4NyAvKiBDbGllbnRSZWN0LmlkbCAqLywKQEAgLTI0MTcwLDcgKzI0MTgyLDYgQEAKIAkJCQkx
NEQ4MjM1MjBBRjkyQTc5MDAwNEYwNTcgLyogQ2hyb21lLmggaW4gSGVhZGVycyAqLywKIAkJCQkx
NEQ4MjQwODBBRjkzQUVCMDAwNEYwNTcgLyogQ2hyb21lQ2xpZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQk0QUNCQzBCRjEyNzEzQ0JEMDA5NEY5QjIgLyogQ2xhc3NMaXN0LmggaW4gSGVhZGVycyAq
LywKLQkJCQlCQzkwNEI3NzBEMTA5OThGMDA2ODBEMzIgLyogQ2xhc3NOb2RlTGlzdC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQkNDMDY1N0UwRjNDRTFCNzAwQ0QyRDg3IC8qIENsaWVudFJlY3QuaCBp
biBIZWFkZXJzICovLAogCQkJCUJDQzA2NTgxMEYzQ0UxQjcwMENEMkQ4NyAvKiBDbGllbnRSZWN0
TGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODUwMzFCNDAwQTQ0RUZDNzAwRjk5MkUwIC8qIENs
aXBib2FyZEV2ZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTI0NDQyLDYgKzI0NDUzLDcgQEAKIAkJ
CQk4MzcyREIzMTFBNjc4MEE4MDBDNjk3QzUgLyogRGlhZ25vc3RpY0xvZ2dpbmdSZXN1bHRUeXBl
LmggaW4gSGVhZGVycyAqLywKIAkJCQlDRUNBREZDNzE1Mzc3OEZGMDBFMzcwNjggLyogRGljdGF0
aW9uQWx0ZXJuYXRpdmUuaCBpbiBIZWFkZXJzICovLAogCQkJCUNFQ0FERkM5MTUzNzc4RkYwMEUz
NzA2OCAvKiBEaWN0YXRpb25Db21tYW5kLmggaW4gSGVhZGVycyAqLywKKwkJCQk0NkVCRUEwMjFC
N0Q0RDY1MDBCRTQ5NDEgLyogQ29sbGVjdGlvblRyYXZlcnNhbC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJRDBCRDRGNUQxNDA4ODUwRjAwNjgzOUI2IC8qIERpY3RhdGlvbkNvbW1hbmRJT1MuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTE1MTQ1QjkwMUIzQTFDRTAwMDY2MkJGNyAvKiBNZWRpYURldmljZUlu
Zm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTMxNjAyM0YwMTUzMkM0MEMwMEQ1MEZGNCAvKiBEaWN0
aW9uYXJ5LmggaW4gSGVhZGVycyAqLywKQEAgLTI0NTQ3LDYgKzI0NTU5LDcgQEAKIAkJCQk4NUU3
MTE5NjBBQzVENTM1MDA1MzI3MEYgLyogRE9NRG9jdW1lbnRUeXBlSW50ZXJuYWwuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTg1MThEQ0U5MEE5Q0M4MEQwMDkxQjdBNiAvKiBET01ET01JbXBsZW1lbnRh
dGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODVFNzExOTcwQUM1RDUzNTAwNTMyNzBGIC8qIERP
TURPTUltcGxlbWVudGF0aW9uSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAorCQkJCTgzMUQ0OEMx
MUI3RDlBNTIwMDZERTM5QSAvKiBDbGFzc05vZGVMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk1
MkNDQTlFODE1RTNGNjRDMDA1M0M3N0YgLyogRE9NRE9NTmFtZWRGbG93Q29sbGVjdGlvbi5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNTJDQ0E5RUExNUUzRjY0QzAwNTNDNzdGIC8qIERPTURPTU5hbWVk
Rmxvd0NvbGxlY3Rpb25JbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQ5QTI0NzQxNUI5
QzJFMzAwRDM0NTI3IC8qIERPTURPTVNlY3VyaXR5UG9saWN5LmggaW4gSGVhZGVycyAqLywKQEAg
LTI1NjI5LDYgKzI1NjQyLDcgQEAKIAkJCQlGREExNUVCMjEyQjAzRUUxMDAzQTU4M0EgLyogSlNQ
YW5uZXJOb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4QTlBNTg3NTExRTg0QzgxMDA4QUNGRDEg
LyogSlNQZXJmb3JtYW5jZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOEE5QTU4NzExMUU4NEMzNjAw
OEFDRkQxIC8qIEpTUGVyZm9ybWFuY2VOYXZpZ2F0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQk4
MzAwMzBGNjFCN0QzM0I1MDBFRDNBQUMgLyogR2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk4QTlBNTg4ODExRTg0RjM3MDA4QUNGRDEgLyogSlNQZXJmb3Jt
YW5jZVRpbWluZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkRFQTYyNDcxNTIxMDJGQzAwNDc5REYw
IC8qIEpTUGVyaW9kaWNXYXZlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0I3MEQ2QzA5RUIwQzdD
MDA5RDg0NjggLyogSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmggaW4gSGVhZGVycyAqLywKQEAg
LTI2OTY4LDYgKzI2OTgyLDcgQEAKIAkJCQlCMjIyN0E1MTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZH
TnVtYmVyTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjdBNTQwRDAwQkYyMjAwNzFCNzgy
IC8qIFNWR1BhaW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0E1NzBEMDBCRjIyMDA3MUI3
ODIgLyogU1ZHUGFyc2VyVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKKwkJCQk4MzAwMzBGODFC
N0QzQjc4MDBFRDNBQUMgLyogQ2FjaGVkSFRNTENvbGxlY3Rpb24uaCBpbiBIZWFkZXJzICovLAog
CQkJCTJEM0EwRTM2MTNBN0Q3NjEwMEU4NUFGMCAvKiBTVkdQYXJzaW5nRXJyb3IuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTg0QzY3ODREMTIxNDgxNDcwMEE5MjkwMiAvKiBTVkdQYXRoQmxlbmRlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJODQ3NkM5RUIxMURGNkEyOTAwNTU1QjAyIC8qIFNWR1BhdGhC
dWlsZGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTI3OTYzLDcgKzI3OTc4LDYgQEAKIAkJCQkxNEQ4
MjM4QjBBRjkyREY2MDAwNEYwNTcgLyogQ2hyb21lLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUFC
QUYyMjA4MEMwM0IxQzcwMEIwQkNGMCAvKiBDaHJvbWVNYWMubW0gaW4gU291cmNlcyAqLywKIAkJ
CQk0QUNCQzBCRTEyNzEzQ0JEMDA5NEY5QjIgLyogQ2xhc3NMaXN0LmNwcCBpbiBTb3VyY2VzICov
LAotCQkJCUJDOTA0Qjc2MEQxMDk5OEYwMDY4MEQzMiAvKiBDbGFzc05vZGVMaXN0LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUJDQzA2NTdEMEYzQ0UxQjcwMENEMkQ4NyAvKiBDbGllbnRSZWN0LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUJDQzA2NTgwMEYzQ0UxQjcwMENEMkQ4NyAvKiBDbGllbnRS
ZWN0TGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NTAzMUIzRjBBNDRFRkM3MDBGOTkyRTAg
LyogQ2xpcGJvYXJkRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yODk3MCw2ICsyODk4NCw3
IEBACiAJCQkJQTlDNkU2NEMwRDc0NjVFNzAwNjQ0MkU5IC8qIEpTRE9NUGx1Z2luQXJyYXlDdXN0
b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTlDNkU2NEQwRDc0NjVFNzAwNjQ0MkU5IC8qIEpT
RE9NUGx1Z2luQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxNzJBRjhGMTgxMUJDMzcw
MEZCQURCOSAvKiBKU0RPTVByb21pc2UuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJODMxRDQ4QzAx
QjdEOUE1MjAwNkRFMzlBIC8qIENsYXNzTm9kZUxpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QkM1QTg2QjUwQzMzNjdFODAwRUVBNjQ5IC8qIEpTRE9NU2VsZWN0aW9uLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTRBQ0JDMENBMTI3MTNEMEEwMDk0RjlCMiAvKiBKU0RPTVNldHRhYmxlVG9rZW5M
aXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUM1MTM3Q0YyMTFBNTgzNzgwMDRBREI5OSAvKiBK
U0RPTVN0cmluZ0xpc3QuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yOTI2Miw2ICsyOTI3Nyw3IEBA
CiAJCQkJMDc5NjlEQkQxN0QxNDE1MTAwN0ZGODQyIC8qIEpTUlRDU2Vzc2lvbkRlc2NyaXB0aW9u
Q2FsbGJhY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDdEMDdCMTQxODM0MTU4ODAwQUJERDND
IC8qIEpTUlRDU2Vzc2lvbkRlc2NyaXB0aW9uQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTA3OTY5REJGMTdEMTQxNTEwMDdGRjg0MiAvKiBKU1JUQ1N0YXRzQ2FsbGJhY2suY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJODMwMDMwRjUxQjdEMzNCNTAwRUQzQUFDIC8qIEdlbmVyaWNDYWNoZWRI
VE1MQ29sbGVjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzk2OURDMTE3RDE0MTUxMDA3
RkY4NDIgLyogSlNSVENTdGF0c1JlcG9ydC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzk2OURD
MzE3RDE0MTUxMDA3RkY4NDIgLyogSlNSVENTdGF0c1Jlc3BvbnNlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTA3REM1RkQ0MTdEM0VFRTkwMDk5Rjg5MCAvKiBKU1JUQ1N0YXRzUmVzcG9uc2VDdXN0
b20uY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29u
dGFpbmVyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKaW5k
ZXggYmUzYTNjMTg3YTg1YzFjN2U5Zjg2NGZkM2NkN2IxYTdkZTI2ZGE2MS4uYmU5NjRiY2ZjNGFi
ZDllNjY4ZjM0ZjBkNGIyMDM1MTE3MDZkN2U2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0NvbnRhaW5lck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJO
b2RlLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkVkaXRvci5oIgogI2luY2x1ZGUg
IkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgorI2luY2x1ZGUgIkdlbmVyaWND
YWNoZWRIVE1MQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxGb3JtQ29udHJvbHNDb2xsZWN0
aW9uLmgiCiAjaW5jbHVkZSAiSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiSFRN
TFRhYmxlUm93c0NvbGxlY3Rpb24uaCIKQEAgLTkwMiw3ICs5MDMsNyBAQCBSZWZQdHI8UmFkaW9O
b2RlTGlzdD4gQ29udGFpbmVyTm9kZTo6cmFkaW9Ob2RlTGlzdChjb25zdCBBdG9taWNTdHJpbmcm
IG5hbWUpCiAKIFJlZjxIVE1MQ29sbGVjdGlvbj4gQ29udGFpbmVyTm9kZTo6Y2hpbGRyZW4oKQog
ewotICAgIHJldHVybiBlbnN1cmVDYWNoZWRIVE1MQ29sbGVjdGlvbihOb2RlQ2hpbGRyZW4pOwor
ICAgIHJldHVybiBlbnN1cmVSYXJlRGF0YSgpLmVuc3VyZU5vZGVMaXN0cygpLmFkZENhY2hlZENv
bGxlY3Rpb248R2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uPENvbGxlY3Rpb25UeXBlVHJhaXRz
PE5vZGVDaGlsZHJlbj46OnRyYXZlcnNhbFR5cGU+PigqdGhpcywgTm9kZUNoaWxkcmVuKTsKIH0K
IAogRWxlbWVudCogQ29udGFpbmVyTm9kZTo6Zmlyc3RFbGVtZW50Q2hpbGQoKSBjb25zdApAQCAt
OTM5LDIyICs5NDAsNiBAQCB2b2lkIENvbnRhaW5lck5vZGU6OnByZXBlbmQoVmVjdG9yPE5vZGVP
clN0cmluZz4mJiBub2RlT3JTdHJpbmdWZWN0b3IsIEV4Y2VwdGlvbgogICAgIGluc2VydEJlZm9y
ZShub2RlLnJlbGVhc2UoKSwgZmlyc3RDaGlsZCgpLCBlYyk7CiB9CiAKLVJlZjxIVE1MQ29sbGVj
dGlvbj4gQ29udGFpbmVyTm9kZTo6ZW5zdXJlQ2FjaGVkSFRNTENvbGxlY3Rpb24oQ29sbGVjdGlv
blR5cGUgdHlwZSkKLXsKLSAgICBpZiAoSFRNTENvbGxlY3Rpb24qIGNvbGxlY3Rpb24gPSBjYWNo
ZWRIVE1MQ29sbGVjdGlvbih0eXBlKSkKLSAgICAgICAgcmV0dXJuICpjb2xsZWN0aW9uOwotCi0g
ICAgaWYgKHR5cGUgPT0gVGFibGVSb3dzKQotICAgICAgICByZXR1cm4gZW5zdXJlUmFyZURhdGEo
KS5lbnN1cmVOb2RlTGlzdHMoKS5hZGRDYWNoZWRDb2xsZWN0aW9uPEhUTUxUYWJsZVJvd3NDb2xs
ZWN0aW9uPihkb3duY2FzdDxIVE1MVGFibGVFbGVtZW50PigqdGhpcyksIHR5cGUpOwotICAgIGVs
c2UgaWYgKHR5cGUgPT0gU2VsZWN0T3B0aW9ucykKLSAgICAgICAgcmV0dXJuIGVuc3VyZVJhcmVE
YXRhKCkuZW5zdXJlTm9kZUxpc3RzKCkuYWRkQ2FjaGVkQ29sbGVjdGlvbjxIVE1MT3B0aW9uc0Nv
bGxlY3Rpb24+KGRvd25jYXN0PEhUTUxTZWxlY3RFbGVtZW50PigqdGhpcyksIHR5cGUpOwotICAg
IGVsc2UgaWYgKHR5cGUgPT0gRm9ybUNvbnRyb2xzKSB7Ci0gICAgICAgIEFTU0VSVChoYXNUYWdO
YW1lKEhUTUxOYW1lczo6Zm9ybVRhZykgfHwgaGFzVGFnTmFtZShIVE1MTmFtZXM6OmZpZWxkc2V0
VGFnKSk7Ci0gICAgICAgIHJldHVybiBlbnN1cmVSYXJlRGF0YSgpLmVuc3VyZU5vZGVMaXN0cygp
LmFkZENhY2hlZENvbGxlY3Rpb248SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24+KCp0aGlzLCB0
eXBlKTsKLSAgICB9Ci0gICAgcmV0dXJuIGVuc3VyZVJhcmVEYXRhKCkuZW5zdXJlTm9kZUxpc3Rz
KCkuYWRkQ2FjaGVkQ29sbGVjdGlvbjxIVE1MQ29sbGVjdGlvbj4oKnRoaXMsIHR5cGUpOwotfQot
CiBIVE1MQ29sbGVjdGlvbiogQ29udGFpbmVyTm9kZTo6Y2FjaGVkSFRNTENvbGxlY3Rpb24oQ29s
bGVjdGlvblR5cGUgdHlwZSkKIHsKICAgICByZXR1cm4gaGFzUmFyZURhdGEoKSAmJiByYXJlRGF0
YSgpLT5ub2RlTGlzdHMoKSA/IHJhcmVEYXRhKCktPm5vZGVMaXN0cygpLT5jYWNoZWRDb2xsZWN0
aW9uPEhUTUxDb2xsZWN0aW9uPih0eXBlKSA6IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5l
ck5vZGUuaAppbmRleCBkYTA2MjFkN2YwNWM2ZWFiODFmMGM1N2ExZGZmNTYwYmZlNjg5OWRlLi4w
NWIzZmNhZWQ4NDhkZGRiNjY1MTcxODQ3NWNiNzY0ZWY5NTAxMWI1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9D
b250YWluZXJOb2RlLmgKQEAgLTE2OSw3ICsxNjksNiBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBz
ZXRGaXJzdENoaWxkKE5vZGUqIGNoaWxkKSB7IG1fZmlyc3RDaGlsZCA9IGNoaWxkOyB9CiAgICAg
dm9pZCBzZXRMYXN0Q2hpbGQoTm9kZSogY2hpbGQpIHsgbV9sYXN0Q2hpbGQgPSBjaGlsZDsgfQog
Ci0gICAgUmVmPEhUTUxDb2xsZWN0aW9uPiBlbnN1cmVDYWNoZWRIVE1MQ29sbGVjdGlvbihDb2xs
ZWN0aW9uVHlwZSk7CiAgICAgSFRNTENvbGxlY3Rpb24qIGNhY2hlZEhUTUxDb2xsZWN0aW9uKENv
bGxlY3Rpb25UeXBlKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDMz
ZDcxNWQzZjEyNjY5NzM1NGRiZTMxMTJiZjU0NTZhZTA5NWQ4Y2YuLmIzNzE3ZDk3YTQxYmFmMzNl
ODdhNmQ5ODJkMDNiMDIzYjRkOWUyMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNjMs
MTIgKzYzLDEyIEBACiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKICNpbmNsdWRlICJGcmFtZUxv
YWRlckNsaWVudC5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgorI2luY2x1ZGUgIkdlbmVyaWND
YWNoZWRIVE1MQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxBbGxDb2xsZWN0aW9uLmgiCiAj
aW5jbHVkZSAiSFRNTEFuY2hvckVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MQmFzZUVsZW1lbnQu
aCIKICNpbmNsdWRlICJIVE1MQm9keUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MQ2FudmFzRWxl
bWVudC5oIgotI2luY2x1ZGUgIkhUTUxDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiSFRNTERvY3Vt
ZW50LmgiCiAjaW5jbHVkZSAiSFRNTEVsZW1lbnRGYWN0b3J5LmgiCiAjaW5jbHVkZSAiSFRNTEZv
cm1Db250cm9sRWxlbWVudC5oIgpAQCAtNDc3Miw1MCArNDc3Miw1MSBAQCBib29sIERvY3VtZW50
OjpoYXNTVkdSb290Tm9kZSgpIGNvbnN0CiAgICAgcmV0dXJuIGRvY3VtZW50RWxlbWVudCgpICYm
IGRvY3VtZW50RWxlbWVudCgpLT5oYXNUYWdOYW1lKFNWR05hbWVzOjpzdmdUYWcpOwogfQogCi1S
ZWY8SFRNTENvbGxlY3Rpb24+IERvY3VtZW50OjplbnN1cmVDYWNoZWRDb2xsZWN0aW9uKENvbGxl
Y3Rpb25UeXBlIHR5cGUpCit0ZW1wbGF0ZSA8Q29sbGVjdGlvblR5cGUgY29sbGVjdGlvblR5cGU+
CitSZWY8SFRNTENvbGxlY3Rpb24+IERvY3VtZW50OjplbnN1cmVDYWNoZWRDb2xsZWN0aW9uKCkK
IHsKLSAgICByZXR1cm4gZW5zdXJlUmFyZURhdGEoKS5lbnN1cmVOb2RlTGlzdHMoKS5hZGRDYWNo
ZWRDb2xsZWN0aW9uPEhUTUxDb2xsZWN0aW9uPigqdGhpcywgdHlwZSk7CisgICAgcmV0dXJuIGVu
c3VyZVJhcmVEYXRhKCkuZW5zdXJlTm9kZUxpc3RzKCkuYWRkQ2FjaGVkQ29sbGVjdGlvbjxHZW5l
cmljQ2FjaGVkSFRNTENvbGxlY3Rpb248Q29sbGVjdGlvblR5cGVUcmFpdHM8Y29sbGVjdGlvblR5
cGU+Ojp0cmF2ZXJzYWxUeXBlPj4oKnRoaXMsIGNvbGxlY3Rpb25UeXBlKTsKIH0KIAogUmVmPEhU
TUxDb2xsZWN0aW9uPiBEb2N1bWVudDo6aW1hZ2VzKCkKIHsKLSAgICByZXR1cm4gZW5zdXJlQ2Fj
aGVkQ29sbGVjdGlvbihEb2NJbWFnZXMpOworICAgIHJldHVybiBlbnN1cmVDYWNoZWRDb2xsZWN0
aW9uPERvY0ltYWdlcz4oKTsKIH0KIAogUmVmPEhUTUxDb2xsZWN0aW9uPiBEb2N1bWVudDo6YXBw
bGV0cygpCiB7Ci0gICAgcmV0dXJuIGVuc3VyZUNhY2hlZENvbGxlY3Rpb24oRG9jQXBwbGV0cyk7
CisgICAgcmV0dXJuIGVuc3VyZUNhY2hlZENvbGxlY3Rpb248RG9jQXBwbGV0cz4oKTsKIH0KIAog
UmVmPEhUTUxDb2xsZWN0aW9uPiBEb2N1bWVudDo6ZW1iZWRzKCkKIHsKLSAgICByZXR1cm4gZW5z
dXJlQ2FjaGVkQ29sbGVjdGlvbihEb2NFbWJlZHMpOworICAgIHJldHVybiBlbnN1cmVDYWNoZWRD
b2xsZWN0aW9uPERvY0VtYmVkcz4oKTsKIH0KIAogUmVmPEhUTUxDb2xsZWN0aW9uPiBEb2N1bWVu
dDo6cGx1Z2lucygpCiB7CiAgICAgLy8gVGhpcyBpcyBhbiBhbGlhcyBmb3IgZW1iZWRzKCkgcmVx
dWlyZWQgZm9yIHRoZSBKUyBET00gYmluZGluZ3MuCi0gICAgcmV0dXJuIGVuc3VyZUNhY2hlZENv
bGxlY3Rpb24oRG9jRW1iZWRzKTsKKyAgICByZXR1cm4gZW5zdXJlQ2FjaGVkQ29sbGVjdGlvbjxE
b2NFbWJlZHM+KCk7CiB9CiAKIFJlZjxIVE1MQ29sbGVjdGlvbj4gRG9jdW1lbnQ6OnNjcmlwdHMo
KQogewotICAgIHJldHVybiBlbnN1cmVDYWNoZWRDb2xsZWN0aW9uKERvY1NjcmlwdHMpOworICAg
IHJldHVybiBlbnN1cmVDYWNoZWRDb2xsZWN0aW9uPERvY1NjcmlwdHM+KCk7CiB9CiAKIFJlZjxI
VE1MQ29sbGVjdGlvbj4gRG9jdW1lbnQ6OmxpbmtzKCkKIHsKLSAgICByZXR1cm4gZW5zdXJlQ2Fj
aGVkQ29sbGVjdGlvbihEb2NMaW5rcyk7CisgICAgcmV0dXJuIGVuc3VyZUNhY2hlZENvbGxlY3Rp
b248RG9jTGlua3M+KCk7CiB9CiAKIFJlZjxIVE1MQ29sbGVjdGlvbj4gRG9jdW1lbnQ6OmZvcm1z
KCkKIHsKLSAgICByZXR1cm4gZW5zdXJlQ2FjaGVkQ29sbGVjdGlvbihEb2NGb3Jtcyk7CisgICAg
cmV0dXJuIGVuc3VyZUNhY2hlZENvbGxlY3Rpb248RG9jRm9ybXM+KCk7CiB9CiAKIFJlZjxIVE1M
Q29sbGVjdGlvbj4gRG9jdW1lbnQ6OmFuY2hvcnMoKQogewotICAgIHJldHVybiBlbnN1cmVDYWNo
ZWRDb2xsZWN0aW9uKERvY0FuY2hvcnMpOworICAgIHJldHVybiBlbnN1cmVDYWNoZWRDb2xsZWN0
aW9uPERvY0FuY2hvcnM+KCk7CiB9CiAKIFJlZjxIVE1MQ29sbGVjdGlvbj4gRG9jdW1lbnQ6OmFs
bCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IDgwZmU3YTQ4ZWVmMjFiNzQxMDU0MjQyMjhhNmY3
MzI2ZjZjZDRhMjcuLmU1M2JmM2UxYzZjMWVmMjA5YjMyOTMzNmYzNzJlMWY4MTBjZTlmOTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5oCkBAIC0xMTMsNyArMTEzLDYgQEAgY2xhc3MgSFRNTElGcmFtZUVs
ZW1lbnQ7CiBjbGFzcyBIVE1MSW1hZ2VFbGVtZW50OwogY2xhc3MgSFRNTE1hcEVsZW1lbnQ7CiBj
bGFzcyBIVE1MTWVkaWFFbGVtZW50OwotY2xhc3MgSFRNTE5hbWVDb2xsZWN0aW9uOwogY2xhc3Mg
SFRNTFNjcmlwdEVsZW1lbnQ7CiBjbGFzcyBIaXRUZXN0UmVxdWVzdDsKIGNsYXNzIEhpdFRlc3RS
ZXN1bHQ7CkBAIC0xMzQ1LDcgKzEzNDQsOCBAQCBwcml2YXRlOgogCiAgICAgTm9kZSogbm9kZUZy
b21Qb2ludChjb25zdCBMYXlvdXRQb2ludCYgY2xpZW50UG9pbnQsIExheW91dFBvaW50KiBsb2Nh
bFBvaW50ID0gbnVsbHB0cik7CiAKLSAgICBSZWY8SFRNTENvbGxlY3Rpb24+IGVuc3VyZUNhY2hl
ZENvbGxlY3Rpb24oQ29sbGVjdGlvblR5cGUpOworICAgIHRlbXBsYXRlIDxDb2xsZWN0aW9uVHlw
ZSBjb2xsZWN0aW9uVHlwZT4KKyAgICBSZWY8SFRNTENvbGxlY3Rpb24+IGVuc3VyZUNhY2hlZENv
bGxlY3Rpb24oKTsKIAogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAgICB2b2lkIGRpc3Bh
dGNoRnVsbFNjcmVlbkNoYW5nZU9yRXJyb3JFdmVudChEZXF1ZTxSZWZQdHI8Tm9kZT4+JiwgY29u
c3QgQXRvbWljU3RyaW5nJiBldmVudE5hbWUsIGJvb2wgc2hvdWxkTm90aWZ5TWVkaWFFbGVtZW50
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50Q2hpbGRJdGVyYXRvci5o
IGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRDaGlsZEl0ZXJhdG9yLmgKaW5kZXggOTRjZDMx
MzIyNDM0YmRhMDVjOWY1NmUxN2IwZTA2NGMyMjVlNTFjZi4uMWE5NDZiYjhmYjE5M2M2MDQ1MjA5
ZmZiZDUyY2QzNWE4OWNmZWM5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnRDaGlsZEl0ZXJhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRDaGlsZEl0
ZXJhdG9yLmgKQEAgLTQxLDYgKzQxLDcgQEAgcHVibGljOgogCiAgICAgRWxlbWVudENoaWxkSXRl
cmF0b3IoY29uc3QgQ29udGFpbmVyTm9kZSYgcGFyZW50KTsKICAgICBFbGVtZW50Q2hpbGRJdGVy
YXRvcihjb25zdCBDb250YWluZXJOb2RlJiBwYXJlbnQsIEVsZW1lbnRUeXBlKiBjdXJyZW50KTsK
KyAgICBFbGVtZW50Q2hpbGRJdGVyYXRvciYgb3BlcmF0b3ItLSgpOwogICAgIEVsZW1lbnRDaGls
ZEl0ZXJhdG9yJiBvcGVyYXRvcisrKCk7CiB9OwogCkBAIC01NSw2ICs1Niw3IEBAIHB1YmxpYzoK
IAogICAgIEVsZW1lbnRDaGlsZENvbnN0SXRlcmF0b3IoY29uc3QgQ29udGFpbmVyTm9kZSYgcGFy
ZW50KTsKICAgICBFbGVtZW50Q2hpbGRDb25zdEl0ZXJhdG9yKGNvbnN0IENvbnRhaW5lck5vZGUm
IHBhcmVudCwgY29uc3QgRWxlbWVudFR5cGUqIGN1cnJlbnQpOworICAgIEVsZW1lbnRDaGlsZENv
bnN0SXRlcmF0b3ImIG9wZXJhdG9yLS0oKTsKICAgICBFbGVtZW50Q2hpbGRDb25zdEl0ZXJhdG9y
JiBvcGVyYXRvcisrKCk7CiB9OwogCkBAIC0xMDgsNiArMTEwLDEyIEBAIGlubGluZSBFbGVtZW50
Q2hpbGRJdGVyYXRvcjxFbGVtZW50VHlwZT46OkVsZW1lbnRDaGlsZEl0ZXJhdG9yKGNvbnN0IENv
bnRhaW5lck5vCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KK2lubGluZSBF
bGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50VHlwZT4mIEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVs
ZW1lbnRUeXBlPjo6b3BlcmF0b3ItLSgpCit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEVsZW1l
bnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiY+KEVsZW1lbnRJdGVyYXRvcjxFbGVtZW50VHlw
ZT46OnRyYXZlcnNlUHJldmlvdXNTaWJsaW5nKCkpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
RWxlbWVudFR5cGU+CiBpbmxpbmUgRWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVudFR5cGU+JiBF
bGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50VHlwZT46Om9wZXJhdG9yKysoKQogewogICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxFbGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50VHlwZT4mPihFbGVt
ZW50SXRlcmF0b3I8RWxlbWVudFR5cGU+Ojp0cmF2ZXJzZU5leHRTaWJsaW5nKCkpOwpAQCAtMTI4
LDYgKzEzNiwxMyBAQCBpbmxpbmUgRWxlbWVudENoaWxkQ29uc3RJdGVyYXRvcjxFbGVtZW50VHlw
ZT46OkVsZW1lbnRDaGlsZENvbnN0SXRlcmF0b3IoY29uc3QgQwogfQogCiB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgRWxlbWVudFR5cGU+CitpbmxpbmUgRWxlbWVudENoaWxkQ29uc3RJdGVyYXRvcjxFbGVt
ZW50VHlwZT4mIEVsZW1lbnRDaGlsZENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+OjpvcGVyYXRv
ci0tKCkKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RWxlbWVudENoaWxkQ29uc3RJdGVyYXRv
cjxFbGVtZW50VHlwZT4mPihFbGVtZW50Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT46OnRyYXZl
cnNlUHJldmlvdXNTaWJsaW5nKCkpOworfQorCisKK3RlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50
VHlwZT4KIGlubGluZSBFbGVtZW50Q2hpbGRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiYgRWxl
bWVudENoaWxkQ29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT46Om9wZXJhdG9yKysoKQogewogICAg
IHJldHVybiBzdGF0aWNfY2FzdDxFbGVtZW50Q2hpbGRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBl
PiY+KEVsZW1lbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6dHJhdmVyc2VOZXh0U2libGlu
ZygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9MaXZlTm9kZUxpc3QuaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9MaXZlTm9kZUxpc3QuaAppbmRleCAxOTZlNTBiYjgyYmViY2NmNzI2
NGI0NjNhMmVlZTYzZWE2ZDEwYWJiLi4wNTI1OThmN2U5YjdjN2FhODFiNWFhNzIxMjA5ZTlhOTEz
NDE4ODc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTGl2ZU5vZGVMaXN0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0xpdmVOb2RlTGlzdC5oCkBAIC0yNSw2ICsyNSw3IEBACiAj
ZGVmaW5lIExpdmVOb2RlTGlzdF9oCiAKICNpbmNsdWRlICJDb2xsZWN0aW9uSW5kZXhDYWNoZS5o
IgorI2luY2x1ZGUgIkNvbGxlY3Rpb25UcmF2ZXJzYWwuaCIKICNpbmNsdWRlICJDb2xsZWN0aW9u
VHlwZS5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRWxlbWVudERlc2NlbmRh
bnRJdGVyYXRvci5oIgpAQCAtODAsMjUgKzgxLDI5IEBAIGNsYXNzIENhY2hlZExpdmVOb2RlTGlz
dCA6IHB1YmxpYyBMaXZlTm9kZUxpc3QgewogcHVibGljOgogICAgIHZpcnR1YWwgfkNhY2hlZExp
dmVOb2RlTGlzdCgpOwogCi0gICAgdmlydHVhbCB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCBvdmVy
cmlkZSBmaW5hbDsKLSAgICB2aXJ0dWFsIE5vZGUqIGl0ZW0odW5zaWduZWQgb2Zmc2V0KSBjb25z
dCBvdmVycmlkZSBmaW5hbDsKKyAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCBvdmVycmlkZSBm
aW5hbCB7IHJldHVybiBtX2luZGV4Q2FjaGUubm9kZUNvdW50KG5vZGVMaXN0KCkpOyB9CisgICAg
Tm9kZSogaXRlbSh1bnNpZ25lZCBvZmZzZXQpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJu
IG1faW5kZXhDYWNoZS5ub2RlQXQobm9kZUxpc3QoKSwgb2Zmc2V0KTsgfQogCiAgICAgLy8gRm9y
IENvbGxlY3Rpb25JbmRleENhY2hlCi0gICAgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciBjb2xs
ZWN0aW9uQmVnaW4oKSBjb25zdDsKLSAgICBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yIGNvbGxl
Y3Rpb25MYXN0KCkgY29uc3Q7CisgICAgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciBjb2xsZWN0
aW9uQmVnaW4oKSBjb25zdCB7IHJldHVybiBUcmF2ZXJzYWw6OmJlZ2luKG5vZGVMaXN0KCksIHJv
b3ROb2RlKCkpOyB9CisgICAgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciBjb2xsZWN0aW9uTGFz
dCgpIGNvbnN0IHsgcmV0dXJuIFRyYXZlcnNhbDo6bGFzdChub2RlTGlzdCgpLCByb290Tm9kZSgp
KTsgfQogICAgIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IgY29sbGVjdGlvbkVuZCgpIGNvbnN0
IHsgcmV0dXJuIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IoKTsgfQotICAgIHZvaWQgY29sbGVj
dGlvblRyYXZlcnNlRm9yd2FyZChFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yJiwgdW5zaWduZWQg
Y291bnQsIHVuc2lnbmVkJiB0cmF2ZXJzZWRDb3VudCkgY29uc3Q7Ci0gICAgdm9pZCBjb2xsZWN0
aW9uVHJhdmVyc2VCYWNrd2FyZChFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yJiwgdW5zaWduZWQg
Y291bnQpIGNvbnN0OworICAgIHZvaWQgY29sbGVjdGlvblRyYXZlcnNlRm9yd2FyZChFbGVtZW50
RGVzY2VuZGFudEl0ZXJhdG9yJiBjdXJyZW50LCB1bnNpZ25lZCBjb3VudCwgdW5zaWduZWQmIHRy
YXZlcnNlZENvdW50KSBjb25zdCB7IFRyYXZlcnNhbDo6dHJhdmVyc2VGb3J3YXJkKG5vZGVMaXN0
KCksIGN1cnJlbnQsIGNvdW50LCB0cmF2ZXJzZWRDb3VudCk7IH0KKyAgICB2b2lkIGNvbGxlY3Rp
b25UcmF2ZXJzZUJhY2t3YXJkKEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3ImIGN1cnJlbnQsIHVu
c2lnbmVkIGNvdW50KSBjb25zdCB7IFRyYXZlcnNhbDo6dHJhdmVyc2VCYWNrd2FyZChub2RlTGlz
dCgpLCBjdXJyZW50LCBjb3VudCk7IH0KICAgICBib29sIGNvbGxlY3Rpb25DYW5UcmF2ZXJzZUJh
Y2t3YXJkKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZvaWQgd2lsbFZhbGlkYXRlSW5k
ZXhDYWNoZSgpIGNvbnN0OwogCiAgICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVDYWNoZShEb2N1
bWVudCYpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOwotICAgIHZpcnR1YWwgc2l6ZV90IG1lbW9yeUNv
c3QoKSBjb25zdCBvdmVycmlkZSBmaW5hbDsKKyAgICB2aXJ0dWFsIHNpemVfdCBtZW1vcnlDb3N0
KCkgY29uc3Qgb3ZlcnJpZGUgZmluYWwgeyByZXR1cm4gbV9pbmRleENhY2hlLm1lbW9yeUNvc3Qo
KTsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgQ2FjaGVkTGl2ZU5vZGVMaXN0KENvbnRhaW5lck5vZGUm
IHJvb3ROb2RlLCBOb2RlTGlzdEludmFsaWRhdGlvblR5cGUpOwogCiBwcml2YXRlOgorICAgIHVz
aW5nIFRyYXZlcnNhbCA9IENvbGxlY3Rpb25UcmF2ZXJzYWw8Q29sbGVjdGlvblRyYXZlcnNhbFR5
cGU6OkRlc2NlbmRhbnRzPjsKKyAgICBOb2RlTGlzdFR5cGUmIG5vZGVMaXN0KCkgeyByZXR1cm4g
c3RhdGljX2Nhc3Q8Tm9kZUxpc3RUeXBlJj4oKnRoaXMpOyB9CisgICAgY29uc3QgTm9kZUxpc3RU
eXBlJiBub2RlTGlzdCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IE5vZGVMaXN0
VHlwZSY+KCp0aGlzKTsgfQorCiAgICAgQ29udGFpbmVyTm9kZSYgcm9vdE5vZGUoKSBjb25zdDsK
IAogICAgIG11dGFibGUgQ29sbGVjdGlvbkluZGV4Q2FjaGU8Tm9kZUxpc3RUeXBlLCBFbGVtZW50
RGVzY2VuZGFudEl0ZXJhdG9yPiBtX2luZGV4Q2FjaGU7CkBAIC0xMzEsMTE1ICsxMzYsMzkgQEAg
QUxXQVlTX0lOTElORSBib29sIHNob3VsZEludmFsaWRhdGVUeXBlT25BdHRyaWJ1dGVDaGFuZ2Uo
Tm9kZUxpc3RJbnZhbGlkYXRpb25UeXAKIHRlbXBsYXRlIDxjbGFzcyBOb2RlTGlzdFR5cGU+CiBD
YWNoZWRMaXZlTm9kZUxpc3Q8Tm9kZUxpc3RUeXBlPjo6Q2FjaGVkTGl2ZU5vZGVMaXN0KENvbnRh
aW5lck5vZGUmIG93bmVyTm9kZSwgTm9kZUxpc3RJbnZhbGlkYXRpb25UeXBlIGludmFsaWRhdGlv
blR5cGUpCiAgICAgOiBMaXZlTm9kZUxpc3Qob3duZXJOb2RlLCBpbnZhbGlkYXRpb25UeXBlKQot
ICAgICwgbV9pbmRleENhY2hlKHN0YXRpY19jYXN0PE5vZGVMaXN0VHlwZSY+KCp0aGlzKSkKKyAg
ICAsIG1faW5kZXhDYWNoZShub2RlTGlzdCgpKQogewogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgTm9k
ZUxpc3RUeXBlPgogQ2FjaGVkTGl2ZU5vZGVMaXN0PE5vZGVMaXN0VHlwZT46On5DYWNoZWRMaXZl
Tm9kZUxpc3QoKQogewotICAgIGF1dG8mIG5vZGVMaXN0ID0gc3RhdGljX2Nhc3Q8Y29uc3QgTm9k
ZUxpc3RUeXBlJj4oKnRoaXMpOwotICAgIGlmIChtX2luZGV4Q2FjaGUuaGFzVmFsaWRDYWNoZShu
b2RlTGlzdCkpCisgICAgaWYgKG1faW5kZXhDYWNoZS5oYXNWYWxpZENhY2hlKG5vZGVMaXN0KCkp
KQogICAgICAgICBkb2N1bWVudCgpLnVucmVnaXN0ZXJOb2RlTGlzdEZvckludmFsaWRhdGlvbigq
dGhpcyk7CiB9CiAKIHRlbXBsYXRlIDxjbGFzcyBOb2RlTGlzdFR5cGU+CiBpbmxpbmUgQ29udGFp
bmVyTm9kZSYgQ2FjaGVkTGl2ZU5vZGVMaXN0PE5vZGVMaXN0VHlwZT46OnJvb3ROb2RlKCkgY29u
c3QKIHsKLSAgICBpZiAoc3RhdGljX2Nhc3Q8Y29uc3QgTm9kZUxpc3RUeXBlJj4oKnRoaXMpLmlz
Um9vdGVkQXREb2N1bWVudCgpICYmIG93bmVyTm9kZSgpLmluRG9jdW1lbnQoKSkKKyAgICBpZiAo
bm9kZUxpc3QoKS5pc1Jvb3RlZEF0RG9jdW1lbnQoKSAmJiBvd25lck5vZGUoKS5pbkRvY3VtZW50
KCkpCiAgICAgICAgIHJldHVybiBvd25lck5vZGUoKS5kb2N1bWVudCgpOwogCiAgICAgcmV0dXJu
IG93bmVyTm9kZSgpOwogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgTm9kZUxpc3RUeXBlPgotRWxlbWVu
dERlc2NlbmRhbnRJdGVyYXRvciBDYWNoZWRMaXZlTm9kZUxpc3Q8Tm9kZUxpc3RUeXBlPjo6Y29s
bGVjdGlvbkJlZ2luKCkgY29uc3QKLXsKLSAgICBhdXRvJiBub2RlTGlzdCA9IHN0YXRpY19jYXN0
PGNvbnN0IE5vZGVMaXN0VHlwZSY+KCp0aGlzKTsKLSAgICBhdXRvIGRlc2NlbmRhbnRzID0gZWxl
bWVudERlc2NlbmRhbnRzKHJvb3ROb2RlKCkpOwotICAgIGF1dG8gZW5kID0gZGVzY2VuZGFudHMu
ZW5kKCk7Ci0gICAgZm9yIChhdXRvIGl0ID0gZGVzY2VuZGFudHMuYmVnaW4oKTsgaXQgIT0gZW5k
OyArK2l0KSB7Ci0gICAgICAgIGlmIChub2RlTGlzdC5lbGVtZW50TWF0Y2hlcygqaXQpKQotICAg
ICAgICAgICAgcmV0dXJuIGl0OwotICAgIH0KLSAgICByZXR1cm4gZW5kOwotfQotCi10ZW1wbGF0
ZSA8Y2xhc3MgTm9kZUxpc3RUeXBlPgotRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciBDYWNoZWRM
aXZlTm9kZUxpc3Q8Tm9kZUxpc3RUeXBlPjo6Y29sbGVjdGlvbkxhc3QoKSBjb25zdAotewotICAg
IGF1dG8mIG5vZGVMaXN0ID0gc3RhdGljX2Nhc3Q8Y29uc3QgTm9kZUxpc3RUeXBlJj4oKnRoaXMp
OwotICAgIGF1dG8gZGVzY2VuZGFudHMgPSBlbGVtZW50RGVzY2VuZGFudHMocm9vdE5vZGUoKSk7
Ci0gICAgYXV0byBlbmQgPSBkZXNjZW5kYW50cy5lbmQoKTsKLSAgICBmb3IgKGF1dG8gaXQgPSBk
ZXNjZW5kYW50cy5sYXN0KCk7IGl0ICE9IGVuZDsgLS1pdCkgewotICAgICAgICBpZiAobm9kZUxp
c3QuZWxlbWVudE1hdGNoZXMoKml0KSkKLSAgICAgICAgICAgIHJldHVybiBpdDsKLSAgICB9Ci0g
ICAgcmV0dXJuIGVuZDsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIE5vZGVMaXN0VHlwZT4KLXZvaWQg
Q2FjaGVkTGl2ZU5vZGVMaXN0PE5vZGVMaXN0VHlwZT46OmNvbGxlY3Rpb25UcmF2ZXJzZUZvcndh
cmQoRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciYgY3VycmVudCwgdW5zaWduZWQgY291bnQsIHVu
c2lnbmVkJiB0cmF2ZXJzZWRDb3VudCkgY29uc3QKLXsKLSAgICBhdXRvJiBub2RlTGlzdCA9IHN0
YXRpY19jYXN0PGNvbnN0IE5vZGVMaXN0VHlwZSY+KCp0aGlzKTsKLSAgICBBU1NFUlQobm9kZUxp
c3QuZWxlbWVudE1hdGNoZXMoKmN1cnJlbnQpKTsKLSAgICBhdXRvIGVuZCA9IGNvbGxlY3Rpb25F
bmQoKTsKLSAgICBmb3IgKHRyYXZlcnNlZENvdW50ID0gMDsgdHJhdmVyc2VkQ291bnQgPCBjb3Vu
dDsgKyt0cmF2ZXJzZWRDb3VudCkgewotICAgICAgICBkbyB7Ci0gICAgICAgICAgICArK2N1cnJl
bnQ7Ci0gICAgICAgICAgICBpZiAoY3VycmVudCA9PSBlbmQpCi0gICAgICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICB9IHdoaWxlICghbm9kZUxpc3QuZWxlbWVudE1hdGNoZXMoKmN1cnJlbnQp
KTsKLSAgICB9Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBOb2RlTGlzdFR5cGU+Ci12b2lkIENhY2hl
ZExpdmVOb2RlTGlzdDxOb2RlTGlzdFR5cGU+Ojpjb2xsZWN0aW9uVHJhdmVyc2VCYWNrd2FyZChF
bGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yJiBjdXJyZW50LCB1bnNpZ25lZCBjb3VudCkgY29uc3QK
LXsKLSAgICBhdXRvJiBub2RlTGlzdCA9IHN0YXRpY19jYXN0PGNvbnN0IE5vZGVMaXN0VHlwZSY+
KCp0aGlzKTsKLSAgICBBU1NFUlQobm9kZUxpc3QuZWxlbWVudE1hdGNoZXMoKmN1cnJlbnQpKTsK
LSAgICBhdXRvIGVuZCA9IGNvbGxlY3Rpb25FbmQoKTsKLSAgICBmb3IgKDsgY291bnQ7IC0tY291
bnQpIHsKLSAgICAgICAgZG8gewotICAgICAgICAgICAgLS1jdXJyZW50OwotICAgICAgICAgICAg
aWYgKGN1cnJlbnQgPT0gZW5kKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfSB3
aGlsZSAoIW5vZGVMaXN0LmVsZW1lbnRNYXRjaGVzKCpjdXJyZW50KSk7Ci0gICAgfQotfQotCi10
ZW1wbGF0ZSA8Y2xhc3MgTm9kZUxpc3RUeXBlPgogdm9pZCBDYWNoZWRMaXZlTm9kZUxpc3Q8Tm9k
ZUxpc3RUeXBlPjo6d2lsbFZhbGlkYXRlSW5kZXhDYWNoZSgpIGNvbnN0CiB7Ci0gICAgZG9jdW1l
bnQoKS5yZWdpc3Rlck5vZGVMaXN0Rm9ySW52YWxpZGF0aW9uKGNvbnN0X2Nhc3Q8Tm9kZUxpc3RU
eXBlJj4oc3RhdGljX2Nhc3Q8Y29uc3QgTm9kZUxpc3RUeXBlJj4oKnRoaXMpKSk7CisgICAgZG9j
dW1lbnQoKS5yZWdpc3Rlck5vZGVMaXN0Rm9ySW52YWxpZGF0aW9uKGNvbnN0X2Nhc3Q8Q2FjaGVk
TGl2ZU5vZGVMaXN0PE5vZGVMaXN0VHlwZT4mPigqdGhpcykpOwogfQogCiB0ZW1wbGF0ZSA8Y2xh
c3MgTm9kZUxpc3RUeXBlPgogdm9pZCBDYWNoZWRMaXZlTm9kZUxpc3Q8Tm9kZUxpc3RUeXBlPjo6
aW52YWxpZGF0ZUNhY2hlKERvY3VtZW50JiBkb2N1bWVudCkgY29uc3QKIHsKLSAgICBhdXRvJiBu
b2RlTGlzdCA9IHN0YXRpY19jYXN0PGNvbnN0IE5vZGVMaXN0VHlwZSY+KCp0aGlzKTsKLSAgICBp
ZiAoIW1faW5kZXhDYWNoZS5oYXNWYWxpZENhY2hlKG5vZGVMaXN0KSkKKyAgICBpZiAoIW1faW5k
ZXhDYWNoZS5oYXNWYWxpZENhY2hlKG5vZGVMaXN0KCkpKQogICAgICAgICByZXR1cm47Ci0gICAg
ZG9jdW1lbnQudW5yZWdpc3Rlck5vZGVMaXN0Rm9ySW52YWxpZGF0aW9uKGNvbnN0X2Nhc3Q8Tm9k
ZUxpc3RUeXBlJj4obm9kZUxpc3QpKTsKLSAgICBtX2luZGV4Q2FjaGUuaW52YWxpZGF0ZShub2Rl
TGlzdCk7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBOb2RlTGlzdFR5cGU+Ci11bnNpZ25lZCBDYWNo
ZWRMaXZlTm9kZUxpc3Q8Tm9kZUxpc3RUeXBlPjo6bGVuZ3RoKCkgY29uc3QKLXsKLSAgICByZXR1
cm4gbV9pbmRleENhY2hlLm5vZGVDb3VudChzdGF0aWNfY2FzdDxjb25zdCBOb2RlTGlzdFR5cGUm
PigqdGhpcykpOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgTm9kZUxpc3RUeXBlPgotTm9kZSogQ2Fj
aGVkTGl2ZU5vZGVMaXN0PE5vZGVMaXN0VHlwZT46Oml0ZW0odW5zaWduZWQgb2Zmc2V0KSBjb25z
dAotewotICAgIHJldHVybiBtX2luZGV4Q2FjaGUubm9kZUF0KHN0YXRpY19jYXN0PGNvbnN0IE5v
ZGVMaXN0VHlwZSY+KCp0aGlzKSwgb2Zmc2V0KTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIE5vZGVM
aXN0VHlwZT4KLXNpemVfdCBDYWNoZWRMaXZlTm9kZUxpc3Q8Tm9kZUxpc3RUeXBlPjo6bWVtb3J5
Q29zdCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1faW5kZXhDYWNoZS5tZW1vcnlDb3N0KCk7Cisg
ICAgZG9jdW1lbnQudW5yZWdpc3Rlck5vZGVMaXN0Rm9ySW52YWxpZGF0aW9uKGNvbnN0X2Nhc3Q8
Tm9kZUxpc3RUeXBlJj4obm9kZUxpc3QoKSkpOworICAgIG1faW5kZXhDYWNoZS5pbnZhbGlkYXRl
KG5vZGVMaXN0KCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0NhY2hlZEhUTUxDb2xsZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0NhY2hlZEhUTUxDb2xsZWN0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWQzMWU3MDVhMzQ2ZGU0
YmI2NDAzMGI3NmU4MGFiZTIwZWJhNDNhOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvQ2FjaGVkSFRNTENvbGxlY3Rpb24uaApAQCAtMCwwICsxLDE2NiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZm5kZWYgQ2FjaGVkSFRNTENvbGxlY3Rpb25faAorI2RlZmluZSBDYWNoZWRIVE1M
Q29sbGVjdGlvbl9oCisKKyNpbmNsdWRlICJDb2xsZWN0aW9uVHJhdmVyc2FsLmgiCisjaW5jbHVk
ZSAiSFRNTENvbGxlY3Rpb24uaCIKKyNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBIVE1MQ29sbGVjdGlvbkNsYXNzLCBD
b2xsZWN0aW9uVHJhdmVyc2FsVHlwZSB0cmF2ZXJzYWxUeXBlPgorY2xhc3MgQ2FjaGVkSFRNTENv
bGxlY3Rpb24gOiBwdWJsaWMgSFRNTENvbGxlY3Rpb24geworcHVibGljOgorICAgIHVzaW5nIFRy
YXZlcnNhbCA9IENvbGxlY3Rpb25UcmF2ZXJzYWw8dHJhdmVyc2FsVHlwZT47CisgICAgdXNpbmcg
SXRlcmF0b3JUeXBlID0gdHlwZW5hbWUgVHJhdmVyc2FsOjpJdGVyYXRvclR5cGU7CisKKyAgICBD
YWNoZWRIVE1MQ29sbGVjdGlvbihDb250YWluZXJOb2RlJiBiYXNlLCBDb2xsZWN0aW9uVHlwZSk7
CisKKyAgICB2aXJ0dWFsIH5DYWNoZWRIVE1MQ29sbGVjdGlvbigpOworCisgICAgdmlydHVhbCB1
bnNpZ25lZCBsZW5ndGgoKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiBtX2luZGV4Q2Fj
aGUubm9kZUNvdW50KGNvbGxlY3Rpb24oKSk7IH0KKyAgICB2aXJ0dWFsIEVsZW1lbnQqIGl0ZW0o
dW5zaWduZWQgb2Zmc2V0KSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiBtX2luZGV4Q2Fj
aGUubm9kZUF0KGNvbGxlY3Rpb24oKSwgb2Zmc2V0KTsgfQorICAgIHZpcnR1YWwgRWxlbWVudCog
bmFtZWRJdGVtKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkgY29uc3Qgb3ZlcnJpZGU7CisgICAg
dmlydHVhbCBzaXplX3QgbWVtb3J5Q29zdCgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJu
IG1faW5kZXhDYWNoZS5tZW1vcnlDb3N0KCkgKyBIVE1MQ29sbGVjdGlvbjo6bWVtb3J5Q29zdCgp
OyB9CisKKyAgICAvLyBGb3IgQ29sbGVjdGlvbkluZGV4Q2FjaGU7IGRvIG5vdCB1c2UgZWxzZXdo
ZXJlLgorICAgIEl0ZXJhdG9yVHlwZSBjb2xsZWN0aW9uQmVnaW4oKSBjb25zdCB7IHJldHVybiBU
cmF2ZXJzYWw6OmJlZ2luKGNvbGxlY3Rpb24oKSwgcm9vdE5vZGUoKSk7IH0KKyAgICBJdGVyYXRv
clR5cGUgY29sbGVjdGlvbkxhc3QoKSBjb25zdCB7IHJldHVybiBUcmF2ZXJzYWw6Omxhc3QoY29s
bGVjdGlvbigpLCByb290Tm9kZSgpKTsgfQorICAgIEl0ZXJhdG9yVHlwZSBjb2xsZWN0aW9uRW5k
KCkgY29uc3QgeyByZXR1cm4gVHJhdmVyc2FsOjplbmQocm9vdE5vZGUoKSk7IH0KKyAgICB2b2lk
IGNvbGxlY3Rpb25UcmF2ZXJzZUZvcndhcmQoSXRlcmF0b3JUeXBlJiBjdXJyZW50LCB1bnNpZ25l
ZCBjb3VudCwgdW5zaWduZWQmIHRyYXZlcnNlZENvdW50KSBjb25zdCB7IFRyYXZlcnNhbDo6dHJh
dmVyc2VGb3J3YXJkKGNvbGxlY3Rpb24oKSwgY3VycmVudCwgY291bnQsIHRyYXZlcnNlZENvdW50
KTsgfQorICAgIHZvaWQgY29sbGVjdGlvblRyYXZlcnNlQmFja3dhcmQoSXRlcmF0b3JUeXBlJiBj
dXJyZW50LCB1bnNpZ25lZCBjb3VudCkgY29uc3QgeyBUcmF2ZXJzYWw6OnRyYXZlcnNlQmFja3dh
cmQoY29sbGVjdGlvbigpLCBjdXJyZW50LCBjb3VudCk7IH0KKyAgICBib29sIGNvbGxlY3Rpb25D
YW5UcmF2ZXJzZUJhY2t3YXJkKCkgY29uc3QgeyByZXR1cm4gdHJhdmVyc2FsVHlwZSAhPSBDb2xs
ZWN0aW9uVHJhdmVyc2FsVHlwZTo6Q3VzdG9tRm9yd2FyZE9ubHk7IH0KKyAgICB2b2lkIHdpbGxW
YWxpZGF0ZUluZGV4Q2FjaGUoKSBjb25zdDsKKworICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRl
Q2FjaGUoRG9jdW1lbnQmKSBvdmVycmlkZTsKKworICAgIGJvb2wgZWxlbWVudE1hdGNoZXMoRWxl
bWVudCYpIGNvbnN0OworCitwcml2YXRlOgorICAgIEhUTUxDb2xsZWN0aW9uQ2xhc3MmIGNvbGxl
Y3Rpb24oKSB7IHJldHVybiBzdGF0aWNfY2FzdDxIVE1MQ29sbGVjdGlvbkNsYXNzJj4oKnRoaXMp
OyB9CisgICAgY29uc3QgSFRNTENvbGxlY3Rpb25DbGFzcyYgY29sbGVjdGlvbigpIGNvbnN0IHsg
cmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEhUTUxDb2xsZWN0aW9uQ2xhc3MmPigqdGhpcyk7IH0K
KworICAgIG11dGFibGUgQ29sbGVjdGlvbkluZGV4Q2FjaGU8SFRNTENvbGxlY3Rpb25DbGFzcywg
SXRlcmF0b3JUeXBlPiBtX2luZGV4Q2FjaGU7Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgSFRN
TENvbGxlY3Rpb25DbGFzcywgQ29sbGVjdGlvblRyYXZlcnNhbFR5cGUgdHJhdmVyc2FsVHlwZT4K
K0NhY2hlZEhUTUxDb2xsZWN0aW9uPEhUTUxDb2xsZWN0aW9uQ2xhc3MsIHRyYXZlcnNhbFR5cGU+
OjpDYWNoZWRIVE1MQ29sbGVjdGlvbihDb250YWluZXJOb2RlJiBiYXNlLCBDb2xsZWN0aW9uVHlw
ZSBjb2xsZWN0aW9uVHlwZSkKKyAgICA6IEhUTUxDb2xsZWN0aW9uKGJhc2UsIGNvbGxlY3Rpb25U
eXBlKQorICAgICwgbV9pbmRleENhY2hlKGNvbGxlY3Rpb24oKSkKK3sgfQorCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgSFRNTENvbGxlY3Rpb25DbGFzcywgQ29sbGVjdGlvblRyYXZlcnNhbFR5cGUgdHJh
dmVyc2FsVHlwZT4KK0NhY2hlZEhUTUxDb2xsZWN0aW9uPEhUTUxDb2xsZWN0aW9uQ2xhc3MsIHRy
YXZlcnNhbFR5cGU+Ojp+Q2FjaGVkSFRNTENvbGxlY3Rpb24oKQoreworICAgIGlmIChtX2luZGV4
Q2FjaGUuaGFzVmFsaWRDYWNoZShjb2xsZWN0aW9uKCkpKQorICAgICAgICBkb2N1bWVudCgpLnVu
cmVnaXN0ZXJDb2xsZWN0aW9uKCp0aGlzKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIEhUTUxD
b2xsZWN0aW9uQ2xhc3MsIENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlIHRyYXZlcnNhbFR5cGU+Cit2
b2lkIENhY2hlZEhUTUxDb2xsZWN0aW9uPEhUTUxDb2xsZWN0aW9uQ2xhc3MsIHRyYXZlcnNhbFR5
cGU+Ojp3aWxsVmFsaWRhdGVJbmRleENhY2hlKCkgY29uc3QKK3sKKyAgICBkb2N1bWVudCgpLnJl
Z2lzdGVyQ29sbGVjdGlvbihjb25zdF9jYXN0PENhY2hlZEhUTUxDb2xsZWN0aW9uPEhUTUxDb2xs
ZWN0aW9uQ2xhc3MsIHRyYXZlcnNhbFR5cGU+Jj4oKnRoaXMpKTsKK30KKwordGVtcGxhdGUgPHR5
cGVuYW1lIEhUTUxDb2xsZWN0aW9uQ2xhc3MsIENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlIHRyYXZl
cnNhbFR5cGU+Cit2b2lkIENhY2hlZEhUTUxDb2xsZWN0aW9uPEhUTUxDb2xsZWN0aW9uQ2xhc3Ms
IHRyYXZlcnNhbFR5cGU+OjppbnZhbGlkYXRlQ2FjaGUoRG9jdW1lbnQmIGRvY3VtZW50KQorewor
ICAgIEhUTUxDb2xsZWN0aW9uOjppbnZhbGlkYXRlQ2FjaGUoZG9jdW1lbnQpOworICAgIGlmICht
X2luZGV4Q2FjaGUuaGFzVmFsaWRDYWNoZShjb2xsZWN0aW9uKCkpKSB7CisgICAgICAgIGRvY3Vt
ZW50LnVucmVnaXN0ZXJDb2xsZWN0aW9uKCp0aGlzKTsKKyAgICAgICAgbV9pbmRleENhY2hlLmlu
dmFsaWRhdGUoY29sbGVjdGlvbigpKTsKKyAgICB9Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBI
VE1MQ29sbGVjdGlvbkNsYXNzLCBDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZSB0cmF2ZXJzYWxUeXBl
PgorYm9vbCBDYWNoZWRIVE1MQ29sbGVjdGlvbjxIVE1MQ29sbGVjdGlvbkNsYXNzLCB0cmF2ZXJz
YWxUeXBlPjo6ZWxlbWVudE1hdGNoZXMoRWxlbWVudCYpIGNvbnN0Cit7CisgICAgLy8gV2Ugc2hv
dWxkIGNhbGwgdGhlIGVsZW1lbnRNYXRjaGVzKCkgbWV0aG9kIGRpcmVjdGx5IG9uIHRoZSBzdWJj
bGFzcyBpbnN0ZWFkIGZvciBwZXJmb3JtYW5jZS4KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3N0YXRpYyBpbmxpbmUgYm9vbCBuYW1lU2hvdWxkQmVW
aXNpYmxlSW5Eb2N1bWVudEFsbChIVE1MRWxlbWVudCYgZWxlbWVudCkKK3sKKyAgICAvLyBUaGUg
ZG9jdW1lbnQuYWxsIGNvbGxlY3Rpb24gcmV0dXJucyBvbmx5IGNlcnRhaW4gdHlwZXMgb2YgZWxl
bWVudHMgYnkgbmFtZSwKKyAgICAvLyBhbHRob3VnaCBpdCByZXR1cm5zIGFueSB0eXBlIG9mIGVs
ZW1lbnQgYnkgaWQuCisgICAgcmV0dXJuIGVsZW1lbnQuaGFzVGFnTmFtZShIVE1MTmFtZXM6OmFw
cGxldFRhZykKKyAgICAgICAgfHwgZWxlbWVudC5oYXNUYWdOYW1lKEhUTUxOYW1lczo6ZW1iZWRU
YWcpCisgICAgICAgIHx8IGVsZW1lbnQuaGFzVGFnTmFtZShIVE1MTmFtZXM6OmZvcm1UYWcpCisg
ICAgICAgIHx8IGVsZW1lbnQuaGFzVGFnTmFtZShIVE1MTmFtZXM6OmltZ1RhZykKKyAgICAgICAg
fHwgZWxlbWVudC5oYXNUYWdOYW1lKEhUTUxOYW1lczo6aW5wdXRUYWcpCisgICAgICAgIHx8IGVs
ZW1lbnQuaGFzVGFnTmFtZShIVE1MTmFtZXM6Om9iamVjdFRhZykKKyAgICAgICAgfHwgZWxlbWVu
dC5oYXNUYWdOYW1lKEhUTUxOYW1lczo6c2VsZWN0VGFnKTsKK30KKworc3RhdGljIGlubGluZSBi
b29sIG5hbWVTaG91bGRCZVZpc2libGVJbkRvY3VtZW50QWxsKEVsZW1lbnQmIGVsZW1lbnQpCit7
CisgICAgcmV0dXJuIGlzPEhUTUxFbGVtZW50PihlbGVtZW50KSAmJiBuYW1lU2hvdWxkQmVWaXNp
YmxlSW5Eb2N1bWVudEFsbChkb3duY2FzdDxIVE1MRWxlbWVudD4oZWxlbWVudCkpOworfQorCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgSFRNTENvbGxlY3Rpb25DbGFzcywgQ29sbGVjdGlvblRyYXZlcnNh
bFR5cGUgdHJhdmVyc2FsVHlwZT4KK0VsZW1lbnQqIENhY2hlZEhUTUxDb2xsZWN0aW9uPEhUTUxD
b2xsZWN0aW9uQ2xhc3MsIHRyYXZlcnNhbFR5cGU+OjpuYW1lZEl0ZW0oY29uc3QgQXRvbWljU3Ry
aW5nJiBuYW1lKSBjb25zdAoreworICAgIC8vIGh0dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20vd29y
a3Nob3AvYXV0aG9yL2RodG1sL3JlZmVyZW5jZS9tZXRob2RzL25hbWVkaXRlbS5hc3AKKyAgICAv
LyBUaGlzIG1ldGhvZCBmaXJzdCBzZWFyY2hlcyBmb3IgYW4gb2JqZWN0IHdpdGggYSBtYXRjaGlu
ZyBpZAorICAgIC8vIGF0dHJpYnV0ZS4gSWYgYSBtYXRjaCBpcyBub3QgZm91bmQsIHRoZSBtZXRo
b2QgdGhlbiBzZWFyY2hlcyBmb3IgYW4KKyAgICAvLyBvYmplY3Qgd2l0aCBhIG1hdGNoaW5nIG5h
bWUgYXR0cmlidXRlLCBidXQgb25seSBvbiB0aG9zZSBlbGVtZW50cworICAgIC8vIHRoYXQgYXJl
IGFsbG93ZWQgYSBuYW1lIGF0dHJpYnV0ZS4KKworICAgIGlmIChuYW1lLmlzRW1wdHkoKSkKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBDb250YWluZXJOb2RlJiByb290ID0gcm9vdE5v
ZGUoKTsKKyAgICBpZiAodHJhdmVyc2FsVHlwZSAhPSBDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6
Q3VzdG9tRm9yd2FyZE9ubHkgJiYgcm9vdC5pc0luVHJlZVNjb3BlKCkpIHsKKyAgICAgICAgRWxl
bWVudCogY2FuZGlkYXRlID0gbnVsbHB0cjsKKworICAgICAgICBUcmVlU2NvcGUmIHRyZWVTY29w
ZSA9IHJvb3QudHJlZVNjb3BlKCk7CisgICAgICAgIGlmICh0cmVlU2NvcGUuaGFzRWxlbWVudFdp
dGhJZCgqbmFtZS5pbXBsKCkpKSB7CisgICAgICAgICAgICBpZiAoIXRyZWVTY29wZS5jb250YWlu
c011bHRpcGxlRWxlbWVudHNXaXRoSWQobmFtZSkpCisgICAgICAgICAgICAgICAgY2FuZGlkYXRl
ID0gdHJlZVNjb3BlLmdldEVsZW1lbnRCeUlkKG5hbWUpOworICAgICAgICB9IGVsc2UgaWYgKHRy
ZWVTY29wZS5oYXNFbGVtZW50V2l0aE5hbWUoKm5hbWUuaW1wbCgpKSkgeworICAgICAgICAgICAg
aWYgKCF0cmVlU2NvcGUuY29udGFpbnNNdWx0aXBsZUVsZW1lbnRzV2l0aE5hbWUobmFtZSkpIHsK
KyAgICAgICAgICAgICAgICBjYW5kaWRhdGUgPSB0cmVlU2NvcGUuZ2V0RWxlbWVudEJ5TmFtZShu
YW1lKTsKKyAgICAgICAgICAgICAgICBpZiAoY2FuZGlkYXRlICYmIHR5cGUoKSA9PSBEb2NBbGwg
JiYgIW5hbWVTaG91bGRCZVZpc2libGVJbkRvY3VtZW50QWxsKCpjYW5kaWRhdGUpKQorICAgICAg
ICAgICAgICAgICAgICBjYW5kaWRhdGUgPSBudWxscHRyOworICAgICAgICAgICAgfQorICAgICAg
ICB9IGVsc2UKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgICAgIGlmIChjYW5k
aWRhdGUgJiYgY29sbGVjdGlvbigpLmVsZW1lbnRNYXRjaGVzKCpjYW5kaWRhdGUpKSB7CisgICAg
ICAgICAgICBpZiAodHJhdmVyc2FsVHlwZSA9PSBDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6Q2hp
bGRyZW5Pbmx5ID8gY2FuZGlkYXRlLT5wYXJlbnROb2RlKCkgPT0gJnJvb3QgOiBjYW5kaWRhdGUt
PmlzRGVzY2VuZGFudE9mKCZyb290KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gY2FuZGlkYXRl
OworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIEhUTUxDb2xsZWN0aW9uOjpuYW1lZEl0
ZW0obmFtZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIENhY2hl
ZEhUTUxDb2xsZWN0aW9uX2gKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9Db2xs
ZWN0aW9uVHJhdmVyc2FsLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0NvbGxlY3Rpb25UcmF2ZXJz
YWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi43OTk5NmYxMzljNDEyYTNmNzc2MjljOTVmMTZlZjBmNWQ1NjRmZmNi
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Db2xsZWN0aW9uVHJhdmVy
c2FsLmgKQEAgLTAsMCArMSwyMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIENvbGxlY3Rpb25U
cmF2ZXJzYWxfaAorI2RlZmluZSBDb2xsZWN0aW9uVHJhdmVyc2FsX2gKKworI2luY2x1ZGUgIkNv
bGxlY3Rpb25UeXBlLmgiCisjaW5jbHVkZSAiRWxlbWVudENoaWxkSXRlcmF0b3IuaCIKKyNpbmNs
dWRlICJFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KwordGVtcGxhdGUgPENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlIHRyYXZlcnNhbFR5cGU+CitzdHJ1
Y3QgQ29sbGVjdGlvblRyYXZlcnNhbCB7IH07CisKK3RlbXBsYXRlIDw+CitzdHJ1Y3QgQ29sbGVj
dGlvblRyYXZlcnNhbDxDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6RGVzY2VuZGFudHM+IHsKKyAg
ICB1c2luZyBJdGVyYXRvclR5cGUgPSBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yOworCisgICAg
c3RhdGljIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IgZW5kKENvbnRhaW5lck5vZGUmKSB7IHJl
dHVybiBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yKCk7IH0KKworICAgIHRlbXBsYXRlIDx0eXBl
bmFtZSBDb2xsZWN0aW9uQ2xhc3M+CisgICAgc3RhdGljIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0
b3IgYmVnaW4oY29uc3QgQ29sbGVjdGlvbkNsYXNzJiwgQ29udGFpbmVyTm9kZSYgcm9vdE5vZGUp
OworCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIENvbGxlY3Rpb25DbGFzcz4KKyAgICBzdGF0aWMg
RWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciBsYXN0KGNvbnN0IENvbGxlY3Rpb25DbGFzcyYsIENv
bnRhaW5lck5vZGUmIHJvb3ROb2RlKTsKKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDb2xsZWN0
aW9uQ2xhc3M+CisgICAgc3RhdGljIHZvaWQgdHJhdmVyc2VGb3J3YXJkKGNvbnN0IENvbGxlY3Rp
b25DbGFzcyYsIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3ImIGN1cnJlbnQsIHVuc2lnbmVkIGNv
dW50LCB1bnNpZ25lZCYgdHJhdmVyc2VkQ291bnQpOworCisgICAgdGVtcGxhdGUgPHR5cGVuYW1l
IENvbGxlY3Rpb25DbGFzcz4KKyAgICBzdGF0aWMgdm9pZCB0cmF2ZXJzZUJhY2t3YXJkKGNvbnN0
IENvbGxlY3Rpb25DbGFzcyYsIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3ImIGN1cnJlbnQsIHVu
c2lnbmVkIGNvdW50KTsKK307CisKK3RlbXBsYXRlIDw+CitzdHJ1Y3QgQ29sbGVjdGlvblRyYXZl
cnNhbDxDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6Q2hpbGRyZW5Pbmx5PiB7CisgICAgdXNpbmcg
SXRlcmF0b3JUeXBlID0gRWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVudD47CisKKyAgICBzdGF0
aWMgRWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVudD4gZW5kKENvbnRhaW5lck5vZGUmIHJvb3RO
b2RlKSB7IHJldHVybiBFbGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50Pihyb290Tm9kZSk7IH0K
KworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDb2xsZWN0aW9uQ2xhc3M+CisgICAgc3RhdGljIEVs
ZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnQ+IGJlZ2luKGNvbnN0IENvbGxlY3Rpb25DbGFzcyYs
IENvbnRhaW5lck5vZGUmIHJvb3ROb2RlKTsKKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDb2xs
ZWN0aW9uQ2xhc3M+CisgICAgc3RhdGljIEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnQ+IGxh
c3QoY29uc3QgQ29sbGVjdGlvbkNsYXNzJiwgQ29udGFpbmVyTm9kZSYgcm9vdE5vZGUpOworCisg
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIENvbGxlY3Rpb25DbGFzcz4KKyAgICBzdGF0aWMgdm9pZCB0
cmF2ZXJzZUZvcndhcmQoY29uc3QgQ29sbGVjdGlvbkNsYXNzJiwgRWxlbWVudENoaWxkSXRlcmF0
b3I8RWxlbWVudD4mIGN1cnJlbnQsIHVuc2lnbmVkIGNvdW50LCB1bnNpZ25lZCYgdHJhdmVyc2Vk
Q291bnQpOworCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIENvbGxlY3Rpb25DbGFzcz4KKyAgICBz
dGF0aWMgdm9pZCB0cmF2ZXJzZUJhY2t3YXJkKGNvbnN0IENvbGxlY3Rpb25DbGFzcyYsIEVsZW1l
bnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnQ+JiBjdXJyZW50LCB1bnNpZ25lZCBjb3VudCk7Cit9Owor
Cit0ZW1wbGF0ZSA8Pgorc3RydWN0IENvbGxlY3Rpb25UcmF2ZXJzYWw8Q29sbGVjdGlvblRyYXZl
cnNhbFR5cGU6OkN1c3RvbUZvcndhcmRPbmx5PiB7CisgICAgdXNpbmcgSXRlcmF0b3JUeXBlID0g
RWxlbWVudCo7CisKKyAgICBzdGF0aWMgRWxlbWVudCogZW5kKENvbnRhaW5lck5vZGUmKSB7IHJl
dHVybiBudWxscHRyOyB9CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ29sbGVjdGlvbkNsYXNz
PgorICAgIHN0YXRpYyBFbGVtZW50KiBiZWdpbihjb25zdCBDb2xsZWN0aW9uQ2xhc3MmLCBDb250
YWluZXJOb2RlJik7CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ29sbGVjdGlvbkNsYXNzPgor
ICAgIHN0YXRpYyBFbGVtZW50KiBsYXN0KGNvbnN0IENvbGxlY3Rpb25DbGFzcyYsIENvbnRhaW5l
ck5vZGUmKTsKKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDb2xsZWN0aW9uQ2xhc3M+CisgICAg
c3RhdGljIHZvaWQgdHJhdmVyc2VGb3J3YXJkKGNvbnN0IENvbGxlY3Rpb25DbGFzcyYsIEVsZW1l
bnQqJiBjdXJyZW50LCB1bnNpZ25lZCBjb3VudCwgdW5zaWduZWQmIHRyYXZlcnNlZENvdW50KTsK
KworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDb2xsZWN0aW9uQ2xhc3M+CisgICAgc3RhdGljIHZv
aWQgdHJhdmVyc2VCYWNrd2FyZChjb25zdCBDb2xsZWN0aW9uQ2xhc3MmLCBFbGVtZW50KiYsIHVu
c2lnbmVkIGNvdW50KTsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBDb2xsZWN0aW9uQ2xhc3M+
CitpbmxpbmUgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciBDb2xsZWN0aW9uVHJhdmVyc2FsPENv
bGxlY3Rpb25UcmF2ZXJzYWxUeXBlOjpEZXNjZW5kYW50cz46OmJlZ2luKGNvbnN0IENvbGxlY3Rp
b25DbGFzcyYgY29sbGVjdGlvbiwgQ29udGFpbmVyTm9kZSYgcm9vdE5vZGUpCit7CisgICAgYXV0
byBkZXNjZW5kYW50cyA9IGVsZW1lbnREZXNjZW5kYW50cyhyb290Tm9kZSk7CisgICAgYXV0byBl
bmQgPSBkZXNjZW5kYW50cy5lbmQoKTsKKyAgICBmb3IgKGF1dG8gaXQgPSBkZXNjZW5kYW50cy5i
ZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgaWYgKGNvbGxlY3Rpb24uZWxlbWVu
dE1hdGNoZXMoKml0KSkKKyAgICAgICAgICAgIHJldHVybiBpdDsKKyAgICB9CisgICAgcmV0dXJu
IGVuZDsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIENvbGxlY3Rpb25DbGFzcz4KK2lubGluZSBF
bGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50PiBDb2xsZWN0aW9uVHJhdmVyc2FsPENvbGxlY3Rp
b25UcmF2ZXJzYWxUeXBlOjpDaGlsZHJlbk9ubHk+OjpiZWdpbihjb25zdCBDb2xsZWN0aW9uQ2xh
c3MmIGNvbGxlY3Rpb24sIENvbnRhaW5lck5vZGUmIHJvb3ROb2RlKQoreworICAgIGF1dG8gY2hp
bGRyZW4gPSBjaGlsZHJlbk9mVHlwZTxFbGVtZW50Pihyb290Tm9kZSk7CisgICAgYXV0byBlbmQg
PSBjaGlsZHJlbi5lbmQoKTsKKyAgICBmb3IgKGF1dG8gaXQgPSBjaGlsZHJlbi5iZWdpbigpOyBp
dCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgaWYgKGNvbGxlY3Rpb24uZWxlbWVudE1hdGNoZXMo
Kml0KSkKKyAgICAgICAgICAgIHJldHVybiBpdDsKKyAgICB9CisgICAgcmV0dXJuIGVuZDsKK30K
KwordGVtcGxhdGUgPHR5cGVuYW1lIENvbGxlY3Rpb25DbGFzcz4KK2lubGluZSBFbGVtZW50KiBD
b2xsZWN0aW9uVHJhdmVyc2FsPENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlOjpDdXN0b21Gb3J3YXJk
T25seT46OmJlZ2luKGNvbnN0IENvbGxlY3Rpb25DbGFzcyYgY29sbGVjdGlvbiwgQ29udGFpbmVy
Tm9kZSYpCit7CisgICAgcmV0dXJuIGNvbGxlY3Rpb24uY3VzdG9tRWxlbWVudEFmdGVyKG51bGxw
dHIpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ29sbGVjdGlvbkNsYXNzPgoraW5saW5lIEVs
ZW1lbnREZXNjZW5kYW50SXRlcmF0b3IgQ29sbGVjdGlvblRyYXZlcnNhbDxDb2xsZWN0aW9uVHJh
dmVyc2FsVHlwZTo6RGVzY2VuZGFudHM+OjpsYXN0KGNvbnN0IENvbGxlY3Rpb25DbGFzcyYgY29s
bGVjdGlvbiwgQ29udGFpbmVyTm9kZSYgcm9vdE5vZGUpCit7CisgICAgYXV0byBkZXNjZW5kYW50
cyA9IGVsZW1lbnREZXNjZW5kYW50cyhyb290Tm9kZSk7CisgICAgYXV0byBlbmQgPSBkZXNjZW5k
YW50cy5lbmQoKTsKKyAgICBmb3IgKGF1dG8gaXQgPSBkZXNjZW5kYW50cy5sYXN0KCk7IGl0ICE9
IGVuZDsgLS1pdCkgeworICAgICAgICBpZiAoY29sbGVjdGlvbi5lbGVtZW50TWF0Y2hlcygqaXQp
KQorICAgICAgICAgICAgcmV0dXJuIGl0OworICAgIH0KKyAgICByZXR1cm4gZW5kOworfQorCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgQ29sbGVjdGlvbkNsYXNzPgoraW5saW5lIEVsZW1lbnRDaGlsZEl0
ZXJhdG9yPEVsZW1lbnQ+IENvbGxlY3Rpb25UcmF2ZXJzYWw8Q29sbGVjdGlvblRyYXZlcnNhbFR5
cGU6OkNoaWxkcmVuT25seT46Omxhc3QoY29uc3QgQ29sbGVjdGlvbkNsYXNzJiBjb2xsZWN0aW9u
LCBDb250YWluZXJOb2RlJiByb290Tm9kZSkKK3sKKyAgICBhdXRvIGNoaWxkcmVuID0gY2hpbGRy
ZW5PZlR5cGU8RWxlbWVudD4ocm9vdE5vZGUpOworICAgIGF1dG8gZW5kID0gY2hpbGRyZW4uZW5k
KCk7CisgICAgRWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVudD4gbGFzdChyb290Tm9kZSwgY2hp
bGRyZW4ubGFzdCgpKTsKKyAgICBmb3IgKGF1dG8gaXQgPSBsYXN0OyBpdCAhPSBlbmQ7IC0taXQp
IHsKKyAgICAgICAgaWYgKGNvbGxlY3Rpb24uZWxlbWVudE1hdGNoZXMoKml0KSkKKyAgICAgICAg
ICAgIHJldHVybiBpdDsKKyAgICB9CisgICAgcmV0dXJuIGVuZDsKK30KKwordGVtcGxhdGUgPHR5
cGVuYW1lIENvbGxlY3Rpb25DbGFzcz4KK2lubGluZSBFbGVtZW50KiBDb2xsZWN0aW9uVHJhdmVy
c2FsPENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlOjpDdXN0b21Gb3J3YXJkT25seT46Omxhc3QoY29u
c3QgQ29sbGVjdGlvbkNsYXNzJiwgQ29udGFpbmVyTm9kZSYpCit7CisgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBD
b2xsZWN0aW9uQ2xhc3M+CitpbmxpbmUgdm9pZCBDb2xsZWN0aW9uVHJhdmVyc2FsPENvbGxlY3Rp
b25UcmF2ZXJzYWxUeXBlOjpEZXNjZW5kYW50cz46OnRyYXZlcnNlRm9yd2FyZChjb25zdCBDb2xs
ZWN0aW9uQ2xhc3MmIGNvbGxlY3Rpb24sIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3ImIGN1cnJl
bnQsIHVuc2lnbmVkIGNvdW50LCB1bnNpZ25lZCYgdHJhdmVyc2VkQ291bnQpCit7CisgICAgQVNT
RVJUKGNvbGxlY3Rpb24uZWxlbWVudE1hdGNoZXMoKmN1cnJlbnQpKTsKKyAgICBhdXRvIGVuZCA9
IGNvbGxlY3Rpb24uY29sbGVjdGlvbkVuZCgpOworICAgIGZvciAodHJhdmVyc2VkQ291bnQgPSAw
OyB0cmF2ZXJzZWRDb3VudCA8IGNvdW50OyArK3RyYXZlcnNlZENvdW50KSB7CisgICAgICAgIGRv
IHsKKyAgICAgICAgICAgICsrY3VycmVudDsKKyAgICAgICAgICAgIGlmIChjdXJyZW50ID09IGVu
ZCkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0gd2hpbGUgKCFjb2xsZWN0aW9u
LmVsZW1lbnRNYXRjaGVzKCpjdXJyZW50KSk7CisgICAgfQorfQorCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgQ29sbGVjdGlvbkNsYXNzPgoraW5saW5lIHZvaWQgQ29sbGVjdGlvblRyYXZlcnNhbDxDb2xs
ZWN0aW9uVHJhdmVyc2FsVHlwZTo6Q2hpbGRyZW5Pbmx5Pjo6dHJhdmVyc2VGb3J3YXJkKGNvbnN0
IENvbGxlY3Rpb25DbGFzcyYgY29sbGVjdGlvbiwgRWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVu
dD4mIGN1cnJlbnQsIHVuc2lnbmVkIGNvdW50LCB1bnNpZ25lZCYgdHJhdmVyc2VkQ291bnQpCit7
CisgICAgQVNTRVJUKGNvbGxlY3Rpb24uZWxlbWVudE1hdGNoZXMoKmN1cnJlbnQpKTsKKyAgICBh
dXRvIGVuZCA9IGNvbGxlY3Rpb24uY29sbGVjdGlvbkVuZCgpOworICAgIGZvciAodHJhdmVyc2Vk
Q291bnQgPSAwOyB0cmF2ZXJzZWRDb3VudCA8IGNvdW50OyArK3RyYXZlcnNlZENvdW50KSB7Cisg
ICAgICAgIGRvIHsKKyAgICAgICAgICAgICsrY3VycmVudDsKKyAgICAgICAgICAgIGlmIChjdXJy
ZW50ID09IGVuZCkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0gd2hpbGUgKCFj
b2xsZWN0aW9uLmVsZW1lbnRNYXRjaGVzKCpjdXJyZW50KSk7CisgICAgfQorfQorCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgQ29sbGVjdGlvbkNsYXNzPgoraW5saW5lIHZvaWQgQ29sbGVjdGlvblRyYXZl
cnNhbDxDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6Q3VzdG9tRm9yd2FyZE9ubHk+Ojp0cmF2ZXJz
ZUZvcndhcmQoY29uc3QgQ29sbGVjdGlvbkNsYXNzJiBjb2xsZWN0aW9uLCBFbGVtZW50KiYgY3Vy
cmVudCwgdW5zaWduZWQgY291bnQsIHVuc2lnbmVkJiB0cmF2ZXJzZWRDb3VudCkKK3sKKyAgICBF
bGVtZW50KiBlbGVtZW50ID0gY3VycmVudDsKKyAgICBmb3IgKHRyYXZlcnNlZENvdW50ID0gMDsg
dHJhdmVyc2VkQ291bnQgPCBjb3VudDsgKyt0cmF2ZXJzZWRDb3VudCkgeworICAgICAgICBlbGVt
ZW50ID0gY29sbGVjdGlvbi5jdXN0b21FbGVtZW50QWZ0ZXIoZWxlbWVudCk7CisgICAgICAgIGlm
ICghZWxlbWVudCkgeworICAgICAgICAgICAgY3VycmVudCA9IG51bGxwdHI7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisgICAgY3VycmVudCA9IGVsZW1lbnQ7Cit9CisK
K3RlbXBsYXRlIDx0eXBlbmFtZSBDb2xsZWN0aW9uQ2xhc3M+CitpbmxpbmUgdm9pZCBDb2xsZWN0
aW9uVHJhdmVyc2FsPENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlOjpEZXNjZW5kYW50cz46OnRyYXZl
cnNlQmFja3dhcmQoY29uc3QgQ29sbGVjdGlvbkNsYXNzJiBjb2xsZWN0aW9uLCBFbGVtZW50RGVz
Y2VuZGFudEl0ZXJhdG9yJiBjdXJyZW50LCB1bnNpZ25lZCBjb3VudCkKK3sKKyAgICBBU1NFUlQo
Y29sbGVjdGlvbi5lbGVtZW50TWF0Y2hlcygqY3VycmVudCkpOworICAgIGF1dG8gZW5kID0gY29s
bGVjdGlvbi5jb2xsZWN0aW9uRW5kKCk7CisgICAgZm9yICg7IGNvdW50OyAtLWNvdW50KSB7Cisg
ICAgICAgIGRvIHsKKyAgICAgICAgICAgIC0tY3VycmVudDsKKyAgICAgICAgICAgIGlmIChjdXJy
ZW50ID09IGVuZCkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0gd2hpbGUgKCFj
b2xsZWN0aW9uLmVsZW1lbnRNYXRjaGVzKCpjdXJyZW50KSk7CisgICAgfQorfQorCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgQ29sbGVjdGlvbkNsYXNzPgoraW5saW5lIHZvaWQgQ29sbGVjdGlvblRyYXZl
cnNhbDxDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6Q2hpbGRyZW5Pbmx5Pjo6dHJhdmVyc2VCYWNr
d2FyZChjb25zdCBDb2xsZWN0aW9uQ2xhc3MmIGNvbGxlY3Rpb24sIEVsZW1lbnRDaGlsZEl0ZXJh
dG9yPEVsZW1lbnQ+JiBjdXJyZW50LCB1bnNpZ25lZCBjb3VudCkKK3sKKyAgICBBU1NFUlQoY29s
bGVjdGlvbi5lbGVtZW50TWF0Y2hlcygqY3VycmVudCkpOworICAgIGF1dG8gZW5kID0gY29sbGVj
dGlvbi5jb2xsZWN0aW9uRW5kKCk7CisgICAgZm9yICg7IGNvdW50OyAtLWNvdW50KSB7CisgICAg
ICAgIGRvIHsKKyAgICAgICAgICAgIC0tY3VycmVudDsKKyAgICAgICAgICAgIGlmIChjdXJyZW50
ID09IGVuZCkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0gd2hpbGUgKCFjb2xs
ZWN0aW9uLmVsZW1lbnRNYXRjaGVzKCpjdXJyZW50KSk7CisgICAgfQorfQorCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgQ29sbGVjdGlvbkNsYXNzPgoraW5saW5lIHZvaWQgQ29sbGVjdGlvblRyYXZlcnNh
bDxDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6Q3VzdG9tRm9yd2FyZE9ubHk+Ojp0cmF2ZXJzZUJh
Y2t3YXJkKGNvbnN0IENvbGxlY3Rpb25DbGFzcyYsIEVsZW1lbnQqJiwgdW5zaWduZWQgY291bnQp
Cit7CisgICAgVU5VU0VEX1BBUkFNKGNvdW50KTsKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gQ29sbGVjdGlvblRyYXZl
cnNhbF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0NvbGxlY3Rpb25UeXBlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0NvbGxlY3Rpb25UeXBlLmgKaW5kZXggNTEzMGFmOTFkYWU4
NjhhNzE0ZjZlMDU1MGJmYWFkZjQwMWY2NWJiYy4uMWE5MjJkMGZmOTA2MDg0YWQxNzM0YjA3MGY4
NWEwNGNmYjg5NGIxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9Db2xsZWN0aW9u
VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ29sbGVjdGlvblR5cGUuaApAQCAtNTMs
NiArNTMsNDIgQEAgZW51bSBDb2xsZWN0aW9uVHlwZSB7CiAgICAgRm9ybUNvbnRyb2xzCiB9Owog
Ci19IC8vIG5hbWVzcGFjZQorZW51bSBjbGFzcyBDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZSB7IERl
c2NlbmRhbnRzLCBDaGlsZHJlbk9ubHksIEN1c3RvbUZvcndhcmRPbmx5IH07Cit0ZW1wbGF0ZTxD
b2xsZWN0aW9uVHlwZSBjb2xsZWN0aW9uVHlwZT4KK3N0cnVjdCBDb2xsZWN0aW9uVHlwZVRyYWl0
cyB7CisgICAgc3RhdGljIGNvbnN0IENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlIHRyYXZlcnNhbFR5
cGUgPSBDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6RGVzY2VuZGFudHM7Cit9OworCit0ZW1wbGF0
ZTw+CitzdHJ1Y3QgQ29sbGVjdGlvblR5cGVUcmFpdHM8Tm9kZUNoaWxkcmVuPiB7CisgICAgc3Rh
dGljIGNvbnN0IENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlIHRyYXZlcnNhbFR5cGUgPSBDb2xsZWN0
aW9uVHJhdmVyc2FsVHlwZTo6Q2hpbGRyZW5Pbmx5OworfTsKKwordGVtcGxhdGU8Pgorc3RydWN0
IENvbGxlY3Rpb25UeXBlVHJhaXRzPFRSQ2VsbHM+IHsKKyAgICBzdGF0aWMgY29uc3QgQ29sbGVj
dGlvblRyYXZlcnNhbFR5cGUgdHJhdmVyc2FsVHlwZSA9IENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBl
OjpDaGlsZHJlbk9ubHk7Cit9OworCit0ZW1wbGF0ZTw+CitzdHJ1Y3QgQ29sbGVjdGlvblR5cGVU
cmFpdHM8VFNlY3Rpb25Sb3dzPiB7CisgICAgc3RhdGljIGNvbnN0IENvbGxlY3Rpb25UcmF2ZXJz
YWxUeXBlIHRyYXZlcnNhbFR5cGUgPSBDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6Q2hpbGRyZW5P
bmx5OworfTsKKwordGVtcGxhdGU8Pgorc3RydWN0IENvbGxlY3Rpb25UeXBlVHJhaXRzPFRhYmxl
VEJvZGllcz4geworICAgIHN0YXRpYyBjb25zdCBDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZSB0cmF2
ZXJzYWxUeXBlID0gQ29sbGVjdGlvblRyYXZlcnNhbFR5cGU6OkNoaWxkcmVuT25seTsKK307CisK
K3RlbXBsYXRlPD4KK3N0cnVjdCBDb2xsZWN0aW9uVHlwZVRyYWl0czxUYWJsZVJvd3M+IHsKKyAg
ICBzdGF0aWMgY29uc3QgQ29sbGVjdGlvblRyYXZlcnNhbFR5cGUgdHJhdmVyc2FsVHlwZSA9IENv
bGxlY3Rpb25UcmF2ZXJzYWxUeXBlOjpDdXN0b21Gb3J3YXJkT25seTsKK307CisKK3RlbXBsYXRl
PD4KK3N0cnVjdCBDb2xsZWN0aW9uVHlwZVRyYWl0czxGb3JtQ29udHJvbHM+IHsKKyAgICBzdGF0
aWMgY29uc3QgQ29sbGVjdGlvblRyYXZlcnNhbFR5cGUgdHJhdmVyc2FsVHlwZSA9IENvbGxlY3Rp
b25UcmF2ZXJzYWxUeXBlOjpDdXN0b21Gb3J3YXJkT25seTsKK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0dlbmVy
aWNDYWNoZWRIVE1MQ29sbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0dlbmVyaWND
YWNoZWRIVE1MQ29sbGVjdGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGY3OGNkY2ViNWIwY2Y1MmNiOTY5
M2Q1YjQwNjRhNDlkMTViYmNlZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvR2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uLmNwcApAQCAtMCwwICsxLDkwIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdlbmVyaWNDYWNoZWRIVE1M
Q29sbGVjdGlvbi5oIgorCisjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVkZSAiSFRNTE9i
amVjdEVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MT3B0aW9uRWxlbWVudC5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK3VzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CisKK3RlbXBsYXRlIDxD
b2xsZWN0aW9uVHJhdmVyc2FsVHlwZSB0cmF2ZXJzYWxUeXBlPgorYm9vbCBHZW5lcmljQ2FjaGVk
SFRNTENvbGxlY3Rpb248dHJhdmVyc2FsVHlwZT46OmVsZW1lbnRNYXRjaGVzKEVsZW1lbnQmIGVs
ZW1lbnQpIGNvbnN0Cit7CisgICAgc3dpdGNoICh0aGlzLT50eXBlKCkpIHsKKyAgICBjYXNlIE5v
ZGVDaGlsZHJlbjoKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgY2FzZSBEb2NJbWFnZXM6Cisg
ICAgICAgIHJldHVybiBlbGVtZW50Lmhhc1RhZ05hbWUoaW1nVGFnKTsKKyAgICBjYXNlIERvY1Nj
cmlwdHM6CisgICAgICAgIHJldHVybiBlbGVtZW50Lmhhc1RhZ05hbWUoc2NyaXB0VGFnKTsKKyAg
ICBjYXNlIERvY0Zvcm1zOgorICAgICAgICByZXR1cm4gZWxlbWVudC5oYXNUYWdOYW1lKGZvcm1U
YWcpOworICAgIGNhc2UgVGFibGVUQm9kaWVzOgorICAgICAgICByZXR1cm4gZWxlbWVudC5oYXNU
YWdOYW1lKHRib2R5VGFnKTsKKyAgICBjYXNlIFRSQ2VsbHM6CisgICAgICAgIHJldHVybiBlbGVt
ZW50Lmhhc1RhZ05hbWUodGRUYWcpIHx8IGVsZW1lbnQuaGFzVGFnTmFtZSh0aFRhZyk7CisgICAg
Y2FzZSBUU2VjdGlvblJvd3M6CisgICAgICAgIHJldHVybiBlbGVtZW50Lmhhc1RhZ05hbWUodHJU
YWcpOworICAgIGNhc2UgU2VsZWN0ZWRPcHRpb25zOgorICAgICAgICByZXR1cm4gaXM8SFRNTE9w
dGlvbkVsZW1lbnQ+KGVsZW1lbnQpICYmIGRvd25jYXN0PEhUTUxPcHRpb25FbGVtZW50PihlbGVt
ZW50KS5zZWxlY3RlZCgpOworICAgIGNhc2UgRGF0YUxpc3RPcHRpb25zOgorICAgICAgICBpZiAo
aXM8SFRNTE9wdGlvbkVsZW1lbnQ+KGVsZW1lbnQpKSB7CisgICAgICAgICAgICBIVE1MT3B0aW9u
RWxlbWVudCYgb3B0aW9uID0gZG93bmNhc3Q8SFRNTE9wdGlvbkVsZW1lbnQ+KGVsZW1lbnQpOwor
ICAgICAgICAgICAgaWYgKCFvcHRpb24uaXNEaXNhYmxlZEZvcm1Db250cm9sKCkgJiYgIW9wdGlv
bi52YWx1ZSgpLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg
ICAgfQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgY2FzZSBNYXBBcmVhczoKKyAgICAgICAg
cmV0dXJuIGVsZW1lbnQuaGFzVGFnTmFtZShhcmVhVGFnKTsKKyAgICBjYXNlIERvY0FwcGxldHM6
CisgICAgICAgIHJldHVybiBpczxIVE1MQXBwbGV0RWxlbWVudD4oZWxlbWVudCkgfHwgKGlzPEhU
TUxPYmplY3RFbGVtZW50PihlbGVtZW50KSAmJiBkb3duY2FzdDxIVE1MT2JqZWN0RWxlbWVudD4o
ZWxlbWVudCkuY29udGFpbnNKYXZhQXBwbGV0KCkpOworICAgIGNhc2UgRG9jRW1iZWRzOgorICAg
ICAgICByZXR1cm4gZWxlbWVudC5oYXNUYWdOYW1lKGVtYmVkVGFnKTsKKyAgICBjYXNlIERvY0xp
bmtzOgorICAgICAgICByZXR1cm4gKGVsZW1lbnQuaGFzVGFnTmFtZShhVGFnKSB8fCBlbGVtZW50
Lmhhc1RhZ05hbWUoYXJlYVRhZykpICYmIGVsZW1lbnQuZmFzdEhhc0F0dHJpYnV0ZShocmVmQXR0
cik7CisgICAgY2FzZSBEb2NBbmNob3JzOgorICAgICAgICByZXR1cm4gZWxlbWVudC5oYXNUYWdO
YW1lKGFUYWcpICYmIGVsZW1lbnQuZmFzdEhhc0F0dHJpYnV0ZShuYW1lQXR0cik7CisgICAgY2Fz
ZSBEb2NBbGw6CisgICAgY2FzZSBEb2N1bWVudE5hbWVkSXRlbXM6CisgICAgY2FzZSBGb3JtQ29u
dHJvbHM6CisgICAgY2FzZSBTZWxlY3RPcHRpb25zOgorICAgIGNhc2UgVGFibGVSb3dzOgorICAg
IGNhc2UgV2luZG93TmFtZWRJdGVtczoKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIC8vIFJl
bWFpbmluZyBjb2xsZWN0aW9uIHR5cGVzIGhhdmUgdGhlaXIgb3duIENhY2hlZEhUTUxDb2xsZWN0
aW9uIHN1YmNsYXNzZXMgYW5kIGFyZSBub3QgdXNpbmcgR2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0
aW9uLgorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30KK3Rl
bXBsYXRlIGJvb2wgR2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uPENvbGxlY3Rpb25UcmF2ZXJz
YWxUeXBlOjpEZXNjZW5kYW50cz46OmVsZW1lbnRNYXRjaGVzKEVsZW1lbnQmKSBjb25zdDsKK3Rl
bXBsYXRlIGJvb2wgR2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uPENvbGxlY3Rpb25UcmF2ZXJz
YWxUeXBlOjpDaGlsZHJlbk9ubHk+OjplbGVtZW50TWF0Y2hlcyhFbGVtZW50JikgY29uc3Q7Cit0
ZW1wbGF0ZSBib29sIEdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbjxDb2xsZWN0aW9uVHJhdmVy
c2FsVHlwZTo6Q3VzdG9tRm9yd2FyZE9ubHk+OjplbGVtZW50TWF0Y2hlcyhFbGVtZW50JikgY29u
c3Q7CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvR2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0dlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM2MzMxMzNmZGEwYTJh
M2YyYmJjYTNhZTVlYzk0ZTEzYzc2ZWI4ZTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0dlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbi5oCkBAIC0wLDAgKzEsNTIgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIEdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbl9oCisjZGVm
aW5lIEdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbl9oCisKKyNpbmNsdWRlICJDYWNoZWRIVE1M
Q29sbGVjdGlvbi5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3RlbXBsYXRlIDxDb2xsZWN0
aW9uVHJhdmVyc2FsVHlwZSB0cmF2ZXJzYWxUeXBlPgorY2xhc3MgR2VuZXJpY0NhY2hlZEhUTUxD
b2xsZWN0aW9uIGZpbmFsIDogcHVibGljIENhY2hlZEhUTUxDb2xsZWN0aW9uPEdlbmVyaWNDYWNo
ZWRIVE1MQ29sbGVjdGlvbjx0cmF2ZXJzYWxUeXBlPiwgdHJhdmVyc2FsVHlwZT4geworcHVibGlj
OgorICAgIHN0YXRpYyBSZWY8R2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uPiBjcmVhdGUoQ29u
dGFpbmVyTm9kZSYgYmFzZSwgQ29sbGVjdGlvblR5cGUgY29sbGVjdGlvblR5cGUpCisgICAgewor
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBHZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb24o
YmFzZSwgY29sbGVjdGlvblR5cGUpKTsKKyAgICB9CisKKyAgICBib29sIGVsZW1lbnRNYXRjaGVz
KEVsZW1lbnQmKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBHZW5lcmljQ2FjaGVkSFRNTENvbGxl
Y3Rpb24oQ29udGFpbmVyTm9kZSYgYmFzZSwgQ29sbGVjdGlvblR5cGUgY29sbGVjdGlvblR5cGUp
CisgICAgICAgIDogQ2FjaGVkSFRNTENvbGxlY3Rpb248R2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0
aW9uPHRyYXZlcnNhbFR5cGU+LCB0cmF2ZXJzYWxUeXBlPihiYXNlLCBjb2xsZWN0aW9uVHlwZSkK
KyAgICB7IH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEdlbmVy
aWNDYWNoZWRIVE1MQ29sbGVjdGlvbl9oCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEFsbENvbGxlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQWxsQ29s
bGVjdGlvbi5jcHAKaW5kZXggMDE2Njg3MTRlY2JiYmQwZmViZDFlNTBjNGFiZDRiMDkxM2I0Mjdm
My4uZGFiMDUwMGZhZDg4YzY1NGE1YjkxY2JlNWQzZDlhNzQ2Mjc5OGIxYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQWxsQ29sbGVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MQWxsQ29sbGVjdGlvbi5jcHAKQEAgLTM2LDcgKzM2LDcgQEAgUmVmPEhU
TUxBbGxDb2xsZWN0aW9uPiBIVE1MQWxsQ29sbGVjdGlvbjo6Y3JlYXRlKERvY3VtZW50JiBkb2N1
bWVudCwgQ29sbGVjdGlvblQKIH0KIAogaW5saW5lIEhUTUxBbGxDb2xsZWN0aW9uOjpIVE1MQWxs
Q29sbGVjdGlvbihEb2N1bWVudCYgZG9jdW1lbnQsIENvbGxlY3Rpb25UeXBlIHR5cGUpCi0gICAg
OiBIVE1MQ29sbGVjdGlvbihkb2N1bWVudCwgdHlwZSkKKyAgICA6IENhY2hlZEhUTUxDb2xsZWN0
aW9uPEhUTUxBbGxDb2xsZWN0aW9uLCBDb2xsZWN0aW9uVHlwZVRyYWl0czxEb2NBbGw+Ojp0cmF2
ZXJzYWxUeXBlPihkb2N1bWVudCwgdHlwZSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MQWxsQ29sbGVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
QWxsQ29sbGVjdGlvbi5oCmluZGV4IDUxNDUxMTc0YmQyODNiMjAxYzg5MmUyZWE0YTVhYjlmYjYx
NWJmMDEuLmI2MDExYjQ5NjJkZTBjNzc3M2NiMzFiZTkxNjZkM2U5OGI5MDRkYzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFsbENvbGxlY3Rpb24uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxBbGxDb2xsZWN0aW9uLmgKQEAgLTI2LDE2ICsyNiwxOSBAQAogI2lm
bmRlZiBIVE1MQWxsQ29sbGVjdGlvbl9oCiAjZGVmaW5lIEhUTUxBbGxDb2xsZWN0aW9uX2gKIAot
I2luY2x1ZGUgIkhUTUxDb2xsZWN0aW9uLmgiCisjaW5jbHVkZSAiQ2FjaGVkSFRNTENvbGxlY3Rp
b24uaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBIVE1MQWxsQ29sbGVjdGlvbiBm
aW5hbCA6IHB1YmxpYyBIVE1MQ29sbGVjdGlvbiB7CitjbGFzcyBIVE1MQWxsQ29sbGVjdGlvbiBm
aW5hbCA6IHB1YmxpYyBDYWNoZWRIVE1MQ29sbGVjdGlvbjxIVE1MQWxsQ29sbGVjdGlvbiwgQ29s
bGVjdGlvblR5cGVUcmFpdHM8RG9jQWxsPjo6dHJhdmVyc2FsVHlwZT4gewogcHVibGljOgogICAg
IHN0YXRpYyBSZWY8SFRNTEFsbENvbGxlY3Rpb24+IGNyZWF0ZShEb2N1bWVudCYsIENvbGxlY3Rp
b25UeXBlKTsKIAogICAgIEVsZW1lbnQqIG5hbWVkSXRlbVdpdGhJbmRleChjb25zdCBBdG9taWNT
dHJpbmcmIG5hbWUsIHVuc2lnbmVkIGluZGV4KSBjb25zdDsKIAorICAgIC8vIEZvciBDYWNoZWRI
VE1MQ29sbGVjdGlvbi4KKyAgICBib29sIGVsZW1lbnRNYXRjaGVzKEVsZW1lbnQmKSBjb25zdCB7
IHJldHVybiB0cnVlOyB9CisKIHByaXZhdGU6CiAgICAgSFRNTEFsbENvbGxlY3Rpb24oRG9jdW1l
bnQmLCBDb2xsZWN0aW9uVHlwZSk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQ29sbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9u
LmNwcAppbmRleCAzYjRiNjJmNzI2YmM0NTAzOGNiMzkzMTE2MDRmODU3NTMwYjY4MWRmLi4zMDgx
MGNmYWQyODMyOTI0NmY0YzkxN2QyYjc3OWIyMDI3ZDVmMGNiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxDb2xsZWN0aW9uLmNwcApAQCAtMjMsNDggKzIzLDE0IEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiSFRNTENvbGxlY3Rpb24uaCIKIAotI2luY2x1ZGUgIkVsZW1lbnRUcmF2
ZXJzYWwuaCIKLSNpbmNsdWRlICJIVE1MRG9jdW1lbnQuaCIKLSNpbmNsdWRlICJIVE1MTmFtZUNv
bGxlY3Rpb24uaCIKKyNpbmNsdWRlICJDYWNoZWRIVE1MQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUg
IkhUTUxOYW1lcy5oIgotI2luY2x1ZGUgIkhUTUxPYmplY3RFbGVtZW50LmgiCi0jaW5jbHVkZSAi
SFRNTE9wdGlvbkVsZW1lbnQuaCIKICNpbmNsdWRlICJOb2RlUmFyZURhdGEuaCIKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCi1zdGF0aWMgYm9v
bCBzaG91bGRPbmx5SW5jbHVkZURpcmVjdENoaWxkcmVuKENvbGxlY3Rpb25UeXBlIHR5cGUpCi17
Ci0gICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2FzZSBEb2NBbGw6Ci0gICAgY2FzZSBEb2NBbmNo
b3JzOgotICAgIGNhc2UgRG9jQXBwbGV0czoKLSAgICBjYXNlIERvY0VtYmVkczoKLSAgICBjYXNl
IERvY0Zvcm1zOgotICAgIGNhc2UgRG9jSW1hZ2VzOgotICAgIGNhc2UgRG9jTGlua3M6Ci0gICAg
Y2FzZSBEb2NTY3JpcHRzOgotICAgIGNhc2UgRG9jdW1lbnROYW1lZEl0ZW1zOgotICAgIGNhc2Ug
TWFwQXJlYXM6Ci0gICAgY2FzZSBUYWJsZVJvd3M6Ci0gICAgY2FzZSBTZWxlY3RPcHRpb25zOgot
ICAgIGNhc2UgU2VsZWN0ZWRPcHRpb25zOgotICAgIGNhc2UgRGF0YUxpc3RPcHRpb25zOgotICAg
IGNhc2UgV2luZG93TmFtZWRJdGVtczoKLSAgICBjYXNlIEZvcm1Db250cm9sczoKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIGNhc2UgTm9kZUNoaWxkcmVuOgotICAgIGNhc2UgVFJDZWxsczoK
LSAgICBjYXNlIFRTZWN0aW9uUm93czoKLSAgICBjYXNlIFRhYmxlVEJvZGllczoKLSAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgfQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVy
biBmYWxzZTsKLX0KLQogaW5saW5lIGF1dG8gSFRNTENvbGxlY3Rpb246OnJvb3RUeXBlRnJvbUNv
bGxlY3Rpb25UeXBlKENvbGxlY3Rpb25UeXBlIHR5cGUpIC0+IFJvb3RUeXBlCiB7CiAgICAgc3dp
dGNoICh0eXBlKSB7CkBAIC0xMzEsMjYyICs5NywyOSBAQCBzdGF0aWMgTm9kZUxpc3RJbnZhbGlk
YXRpb25UeXBlIGludmFsaWRhdGlvblR5cGVFeGNsdWRpbmdJZEFuZE5hbWVBdHRyaWJ1dGVzKENv
bAogICAgIHJldHVybiBEb05vdEludmFsaWRhdGVPbkF0dHJpYnV0ZUNoYW5nZXM7CiB9CiAKLUhU
TUxDb2xsZWN0aW9uOjpIVE1MQ29sbGVjdGlvbihDb250YWluZXJOb2RlJiBvd25lck5vZGUsIENv
bGxlY3Rpb25UeXBlIHR5cGUsIEVsZW1lbnRUcmF2ZXJzYWxUeXBlIHRyYXZlcnNhbFR5cGUpCitI
VE1MQ29sbGVjdGlvbjo6SFRNTENvbGxlY3Rpb24oQ29udGFpbmVyTm9kZSYgb3duZXJOb2RlLCBD
b2xsZWN0aW9uVHlwZSB0eXBlKQogICAgIDogbV9vd25lck5vZGUob3duZXJOb2RlKQotICAgICwg
bV9pbmRleENhY2hlKCp0aGlzKQogICAgICwgbV9jb2xsZWN0aW9uVHlwZSh0eXBlKQogICAgICwg
bV9pbnZhbGlkYXRpb25UeXBlKGludmFsaWRhdGlvblR5cGVFeGNsdWRpbmdJZEFuZE5hbWVBdHRy
aWJ1dGVzKHR5cGUpKQogICAgICwgbV9yb290VHlwZShyb290VHlwZUZyb21Db2xsZWN0aW9uVHlw
ZSh0eXBlKSkKLSAgICAsIG1fc2hvdWxkT25seUluY2x1ZGVEaXJlY3RDaGlsZHJlbihzaG91bGRP
bmx5SW5jbHVkZURpcmVjdENoaWxkcmVuKHR5cGUpKQotICAgICwgbV91c2VzQ3VzdG9tRm9yd2Fy
ZE9ubHlUcmF2ZXJzYWwodHJhdmVyc2FsVHlwZSA9PSBDdXN0b21Gb3J3YXJkT25seVRyYXZlcnNh
bCkKIHsKICAgICBBU1NFUlQobV9yb290VHlwZSA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocm9v
dFR5cGVGcm9tQ29sbGVjdGlvblR5cGUodHlwZSkpKTsKICAgICBBU1NFUlQobV9pbnZhbGlkYXRp
b25UeXBlID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihpbnZhbGlkYXRpb25UeXBlRXhjbHVkaW5n
SWRBbmROYW1lQXR0cmlidXRlcyh0eXBlKSkpOwogICAgIEFTU0VSVChtX2NvbGxlY3Rpb25UeXBl
ID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPih0eXBlKSk7CiB9CiAKLVJlZjxIVE1MQ29sbGVjdGlv
bj4gSFRNTENvbGxlY3Rpb246OmNyZWF0ZShDb250YWluZXJOb2RlJiBiYXNlLCBDb2xsZWN0aW9u
VHlwZSB0eXBlKQotewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEhUTUxDb2xsZWN0aW9uKGJh
c2UsIHR5cGUpKTsKLX0KLQogSFRNTENvbGxlY3Rpb246On5IVE1MQ29sbGVjdGlvbigpCiB7Ci0g
ICAgaWYgKG1faW5kZXhDYWNoZS5oYXNWYWxpZENhY2hlKCp0aGlzKSkKLSAgICAgICAgZG9jdW1l
bnQoKS51bnJlZ2lzdGVyQ29sbGVjdGlvbigqdGhpcyk7CiAgICAgaWYgKGhhc05hbWVkRWxlbWVu
dENhY2hlKCkpCiAgICAgICAgIGRvY3VtZW50KCkuY29sbGVjdGlvbldpbGxDbGVhcklkTmFtZU1h
cCgqdGhpcyk7CisKICAgICAvLyBIVE1MTmFtZUNvbGxlY3Rpb24gcmVtb3ZlcyBjYWNoZSBieSBp
dHNlbGYuCiAgICAgaWYgKHR5cGUoKSAhPSBXaW5kb3dOYW1lZEl0ZW1zICYmIHR5cGUoKSAhPSBE
b2N1bWVudE5hbWVkSXRlbXMpCiAgICAgICAgIG93bmVyTm9kZSgpLm5vZGVMaXN0cygpLT5yZW1v
dmVDYWNoZWRDb2xsZWN0aW9uKHRoaXMpOwogfQogCi1Db250YWluZXJOb2RlJiBIVE1MQ29sbGVj
dGlvbjo6cm9vdE5vZGUoKSBjb25zdAotewotICAgIGlmIChpc1Jvb3RlZEF0RG9jdW1lbnQoKSAm
JiBvd25lck5vZGUoKS5pbkRvY3VtZW50KCkpCi0gICAgICAgIHJldHVybiBvd25lck5vZGUoKS5k
b2N1bWVudCgpOwotCi0gICAgcmV0dXJuIG93bmVyTm9kZSgpOwotfQotCi1zdGF0aWMgaW5saW5l
IGJvb2wgaXNNYXRjaGluZ0hUTUxFbGVtZW50KGNvbnN0IEhUTUxDb2xsZWN0aW9uJiBjb2xsZWN0
aW9uLCBIVE1MRWxlbWVudCYgZWxlbWVudCkKK3ZvaWQgSFRNTENvbGxlY3Rpb246OmludmFsaWRh
dGVDYWNoZShEb2N1bWVudCYgZG9jdW1lbnQpCiB7Ci0gICAgc3dpdGNoIChjb2xsZWN0aW9uLnR5
cGUoKSkgewotICAgIGNhc2UgRG9jSW1hZ2VzOgotICAgICAgICByZXR1cm4gZWxlbWVudC5oYXNU
YWdOYW1lKGltZ1RhZyk7Ci0gICAgY2FzZSBEb2NTY3JpcHRzOgotICAgICAgICByZXR1cm4gZWxl
bWVudC5oYXNUYWdOYW1lKHNjcmlwdFRhZyk7Ci0gICAgY2FzZSBEb2NGb3JtczoKLSAgICAgICAg
cmV0dXJuIGVsZW1lbnQuaGFzVGFnTmFtZShmb3JtVGFnKTsKLSAgICBjYXNlIFRhYmxlVEJvZGll
czoKLSAgICAgICAgcmV0dXJuIGVsZW1lbnQuaGFzVGFnTmFtZSh0Ym9keVRhZyk7Ci0gICAgY2Fz
ZSBUUkNlbGxzOgotICAgICAgICByZXR1cm4gZWxlbWVudC5oYXNUYWdOYW1lKHRkVGFnKSB8fCBl
bGVtZW50Lmhhc1RhZ05hbWUodGhUYWcpOwotICAgIGNhc2UgVFNlY3Rpb25Sb3dzOgotICAgICAg
ICByZXR1cm4gZWxlbWVudC5oYXNUYWdOYW1lKHRyVGFnKTsKLSAgICBjYXNlIFNlbGVjdE9wdGlv
bnM6Ci0gICAgICAgIHJldHVybiBlbGVtZW50Lmhhc1RhZ05hbWUob3B0aW9uVGFnKTsKLSAgICBj
YXNlIFNlbGVjdGVkT3B0aW9uczoKLSAgICAgICAgcmV0dXJuIGlzPEhUTUxPcHRpb25FbGVtZW50
PihlbGVtZW50KSAmJiBkb3duY2FzdDxIVE1MT3B0aW9uRWxlbWVudD4oZWxlbWVudCkuc2VsZWN0
ZWQoKTsKLSAgICBjYXNlIERhdGFMaXN0T3B0aW9uczoKLSAgICAgICAgaWYgKGlzPEhUTUxPcHRp
b25FbGVtZW50PihlbGVtZW50KSkgewotICAgICAgICAgICAgSFRNTE9wdGlvbkVsZW1lbnQmIG9w
dGlvbiA9IGRvd25jYXN0PEhUTUxPcHRpb25FbGVtZW50PihlbGVtZW50KTsKLSAgICAgICAgICAg
IGlmICghb3B0aW9uLmlzRGlzYWJsZWRGb3JtQ29udHJvbCgpICYmICFvcHRpb24udmFsdWUoKS5p
c0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIGNhc2UgTWFwQXJlYXM6Ci0gICAgICAgIHJldHVybiBlbGVt
ZW50Lmhhc1RhZ05hbWUoYXJlYVRhZyk7Ci0gICAgY2FzZSBEb2NBcHBsZXRzOgotICAgICAgICBy
ZXR1cm4gaXM8SFRNTEFwcGxldEVsZW1lbnQ+KGVsZW1lbnQpIHx8IChpczxIVE1MT2JqZWN0RWxl
bWVudD4oZWxlbWVudCkgJiYgZG93bmNhc3Q8SFRNTE9iamVjdEVsZW1lbnQ+KGVsZW1lbnQpLmNv
bnRhaW5zSmF2YUFwcGxldCgpKTsKLSAgICBjYXNlIERvY0VtYmVkczoKLSAgICAgICAgcmV0dXJu
IGVsZW1lbnQuaGFzVGFnTmFtZShlbWJlZFRhZyk7Ci0gICAgY2FzZSBEb2NMaW5rczoKLSAgICAg
ICAgcmV0dXJuIChlbGVtZW50Lmhhc1RhZ05hbWUoYVRhZykgfHwgZWxlbWVudC5oYXNUYWdOYW1l
KGFyZWFUYWcpKSAmJiBlbGVtZW50LmZhc3RIYXNBdHRyaWJ1dGUoaHJlZkF0dHIpOwotICAgIGNh
c2UgRG9jQW5jaG9yczoKLSAgICAgICAgcmV0dXJuIGVsZW1lbnQuaGFzVGFnTmFtZShhVGFnKSAm
JiBlbGVtZW50LmZhc3RIYXNBdHRyaWJ1dGUobmFtZUF0dHIpOwotICAgIGNhc2UgRG9jdW1lbnRO
YW1lZEl0ZW1zOgotICAgICAgICByZXR1cm4gZG93bmNhc3Q8RG9jdW1lbnROYW1lQ29sbGVjdGlv
bj4oY29sbGVjdGlvbikuZWxlbWVudE1hdGNoZXMoZWxlbWVudCk7Ci0gICAgY2FzZSBEb2NBbGw6
Ci0gICAgY2FzZSBOb2RlQ2hpbGRyZW46Ci0gICAgY2FzZSBXaW5kb3dOYW1lZEl0ZW1zOgotICAg
IGNhc2UgRm9ybUNvbnRyb2xzOgotICAgIGNhc2UgVGFibGVSb3dzOgotICAgICAgICBicmVhazsK
LSAgICB9Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIGZhbHNlOwotfQot
Ci1zdGF0aWMgaW5saW5lIGJvb2wgaXNNYXRjaGluZ0VsZW1lbnQoY29uc3QgSFRNTENvbGxlY3Rp
b24mIGNvbGxlY3Rpb24sIEVsZW1lbnQmIGVsZW1lbnQpCi17Ci0gICAgLy8gQ29sbGVjdGlvbiB0
eXBlcyB0aGF0IGRlYWwgd2l0aCBhbnkgdHlwZSBvZiBFbGVtZW50cywgbm90IGp1c3QgSFRNTEVs
ZW1lbnRzLgotICAgIHN3aXRjaCAoY29sbGVjdGlvbi50eXBlKCkpIHsKLSAgICBjYXNlIERvY0Fs
bDoKLSAgICBjYXNlIE5vZGVDaGlsZHJlbjoKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgY2Fz
ZSBXaW5kb3dOYW1lZEl0ZW1zOgotICAgICAgICByZXR1cm4gZG93bmNhc3Q8V2luZG93TmFtZUNv
bGxlY3Rpb24+KGNvbGxlY3Rpb24pLmVsZW1lbnRNYXRjaGVzKGVsZW1lbnQpOwotICAgIGRlZmF1
bHQ6Ci0gICAgICAgIC8vIENvbGxlY3Rpb24gdHlwZXMgdGhhdCBvbmx5IGRlYWwgd2l0aCBIVE1M
RWxlbWVudHMuCi0gICAgICAgIHJldHVybiBpczxIVE1MRWxlbWVudD4oZWxlbWVudCkgJiYgaXNN
YXRjaGluZ0hUTUxFbGVtZW50KGNvbGxlY3Rpb24sIGRvd25jYXN0PEhUTUxFbGVtZW50PihlbGVt
ZW50KSk7Ci0gICAgfQotfQotCi1zdGF0aWMgaW5saW5lIEVsZW1lbnQqIHByZXZpb3VzRWxlbWVu
dChDb250YWluZXJOb2RlJiBiYXNlLCBFbGVtZW50JiBlbGVtZW50LCBib29sIG9ubHlJbmNsdWRl
RGlyZWN0Q2hpbGRyZW4pCi17Ci0gICAgcmV0dXJuIG9ubHlJbmNsdWRlRGlyZWN0Q2hpbGRyZW4g
PyBFbGVtZW50VHJhdmVyc2FsOjpwcmV2aW91c1NpYmxpbmcoZWxlbWVudCkgOiBFbGVtZW50VHJh
dmVyc2FsOjpwcmV2aW91cyhlbGVtZW50LCAmYmFzZSk7Ci19Ci0KLUFMV0FZU19JTkxJTkUgRWxl
bWVudCogSFRNTENvbGxlY3Rpb246Oml0ZXJhdGVGb3JQcmV2aW91c0VsZW1lbnQoRWxlbWVudCog
ZWxlbWVudCkgY29uc3QKLXsKLSAgICBib29sIG9ubHlJbmNsdWRlRGlyZWN0Q2hpbGRyZW4gPSBt
X3Nob3VsZE9ubHlJbmNsdWRlRGlyZWN0Q2hpbGRyZW47Ci0gICAgQ29udGFpbmVyTm9kZSYgcm9v
dE5vZGUgPSB0aGlzLT5yb290Tm9kZSgpOwotICAgIGZvciAoOyBlbGVtZW50OyBlbGVtZW50ID0g
cHJldmlvdXNFbGVtZW50KHJvb3ROb2RlLCAqZWxlbWVudCwgb25seUluY2x1ZGVEaXJlY3RDaGls
ZHJlbikpIHsKLSAgICAgICAgaWYgKGlzTWF0Y2hpbmdFbGVtZW50KCp0aGlzLCAqZWxlbWVudCkp
Ci0gICAgICAgICAgICByZXR1cm4gZWxlbWVudDsKLSAgICB9Ci0gICAgcmV0dXJuIG51bGxwdHI7
Ci19Ci0KLXN0YXRpYyBpbmxpbmUgRWxlbWVudCogZmlyc3RNYXRjaGluZ0VsZW1lbnQoY29uc3Qg
SFRNTENvbGxlY3Rpb24mIGNvbGxlY3Rpb24sIENvbnRhaW5lck5vZGUmIHJvb3QpCi17Ci0gICAg
RWxlbWVudCogZWxlbWVudCA9IEVsZW1lbnRUcmF2ZXJzYWw6OmZpcnN0V2l0aGluKHJvb3QpOwot
ICAgIHdoaWxlIChlbGVtZW50ICYmICFpc01hdGNoaW5nRWxlbWVudChjb2xsZWN0aW9uLCAqZWxl
bWVudCkpCi0gICAgICAgIGVsZW1lbnQgPSBFbGVtZW50VHJhdmVyc2FsOjpuZXh0KCplbGVtZW50
LCAmcm9vdCk7Ci0gICAgcmV0dXJuIGVsZW1lbnQ7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgRWxlbWVu
dCogbmV4dE1hdGNoaW5nRWxlbWVudChjb25zdCBIVE1MQ29sbGVjdGlvbiYgY29sbGVjdGlvbiwg
RWxlbWVudCYgZWxlbWVudCwgQ29udGFpbmVyTm9kZSYgcm9vdCkKLXsKLSAgICBFbGVtZW50KiBu
ZXh0ID0gJmVsZW1lbnQ7Ci0gICAgZG8gewotICAgICAgICBuZXh0ID0gRWxlbWVudFRyYXZlcnNh
bDo6bmV4dCgqbmV4dCwgJnJvb3QpOwotICAgIH0gd2hpbGUgKG5leHQgJiYgIWlzTWF0Y2hpbmdF
bGVtZW50KGNvbGxlY3Rpb24sICpuZXh0KSk7Ci0gICAgcmV0dXJuIG5leHQ7Ci19Ci0KLXVuc2ln
bmVkIEhUTUxDb2xsZWN0aW9uOjpsZW5ndGgoKSBjb25zdAotewotICAgIHJldHVybiBtX2luZGV4
Q2FjaGUubm9kZUNvdW50KCp0aGlzKTsKLX0KLQotRWxlbWVudCogSFRNTENvbGxlY3Rpb246Oml0
ZW0odW5zaWduZWQgb2Zmc2V0KSBjb25zdAotewotICAgIHJldHVybiBtX2luZGV4Q2FjaGUubm9k
ZUF0KCp0aGlzLCBvZmZzZXQpOwotfQotCi1zdGF0aWMgaW5saW5lIGJvb2wgbmFtZVNob3VsZEJl
VmlzaWJsZUluRG9jdW1lbnRBbGwoSFRNTEVsZW1lbnQmIGVsZW1lbnQpCi17Ci0gICAgLy8gVGhl
IGRvY3VtZW50LmFsbCBjb2xsZWN0aW9uIHJldHVybnMgb25seSBjZXJ0YWluIHR5cGVzIG9mIGVs
ZW1lbnRzIGJ5IG5hbWUsCi0gICAgLy8gYWx0aG91Z2ggaXQgcmV0dXJucyBhbnkgdHlwZSBvZiBl
bGVtZW50IGJ5IGlkLgotICAgIHJldHVybiBlbGVtZW50Lmhhc1RhZ05hbWUoYXBwbGV0VGFnKQot
ICAgICAgICB8fCBlbGVtZW50Lmhhc1RhZ05hbWUoZW1iZWRUYWcpCi0gICAgICAgIHx8IGVsZW1l
bnQuaGFzVGFnTmFtZShmb3JtVGFnKQotICAgICAgICB8fCBlbGVtZW50Lmhhc1RhZ05hbWUoaW1n
VGFnKQotICAgICAgICB8fCBlbGVtZW50Lmhhc1RhZ05hbWUoaW5wdXRUYWcpCi0gICAgICAgIHx8
IGVsZW1lbnQuaGFzVGFnTmFtZShvYmplY3RUYWcpCi0gICAgICAgIHx8IGVsZW1lbnQuaGFzVGFn
TmFtZShzZWxlY3RUYWcpOwotfQotCi1zdGF0aWMgaW5saW5lIGJvb2wgbmFtZVNob3VsZEJlVmlz
aWJsZUluRG9jdW1lbnRBbGwoRWxlbWVudCYgZWxlbWVudCkKLXsKLSAgICByZXR1cm4gaXM8SFRN
TEVsZW1lbnQ+KGVsZW1lbnQpICYmIG5hbWVTaG91bGRCZVZpc2libGVJbkRvY3VtZW50QWxsKGRv
d25jYXN0PEhUTUxFbGVtZW50PihlbGVtZW50KSk7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgRWxlbWVu
dCogZmlyc3RNYXRjaGluZ0NoaWxkRWxlbWVudChjb25zdCBIVE1MQ29sbGVjdGlvbiYgbm9kZUxp
c3QsIENvbnRhaW5lck5vZGUmIHJvb3QpCi17Ci0gICAgRWxlbWVudCogZWxlbWVudCA9IEVsZW1l
bnRUcmF2ZXJzYWw6OmZpcnN0V2l0aGluKHJvb3QpOwotICAgIHdoaWxlIChlbGVtZW50ICYmICFp
c01hdGNoaW5nRWxlbWVudChub2RlTGlzdCwgKmVsZW1lbnQpKQotICAgICAgICBlbGVtZW50ID0g
RWxlbWVudFRyYXZlcnNhbDo6bmV4dFNpYmxpbmcoKmVsZW1lbnQpOwotICAgIHJldHVybiBlbGVt
ZW50OwotfQotCi1zdGF0aWMgaW5saW5lIEVsZW1lbnQqIG5leHRNYXRjaGluZ1NpYmxpbmdFbGVt
ZW50KGNvbnN0IEhUTUxDb2xsZWN0aW9uJiBub2RlTGlzdCwgRWxlbWVudCYgZWxlbWVudCkKLXsK
LSAgICBFbGVtZW50KiBuZXh0ID0gJmVsZW1lbnQ7Ci0gICAgZG8gewotICAgICAgICBuZXh0ID0g
RWxlbWVudFRyYXZlcnNhbDo6bmV4dFNpYmxpbmcoKm5leHQpOwotICAgIH0gd2hpbGUgKG5leHQg
JiYgIWlzTWF0Y2hpbmdFbGVtZW50KG5vZGVMaXN0LCAqbmV4dCkpOwotICAgIHJldHVybiBuZXh0
OwotfQotCi1pbmxpbmUgYm9vbCBIVE1MQ29sbGVjdGlvbjo6dXNlc0N1c3RvbUZvcndhcmRPbmx5
VHJhdmVyc2FsKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV91c2VzQ3VzdG9tRm9yd2FyZE9ubHlU
cmF2ZXJzYWw7Ci19Ci0KLWlubGluZSBFbGVtZW50KiBIVE1MQ29sbGVjdGlvbjo6Zmlyc3RFbGVt
ZW50KENvbnRhaW5lck5vZGUmIHJvb3QpIGNvbnN0Ci17Ci0gICAgaWYgKHVzZXNDdXN0b21Gb3J3
YXJkT25seVRyYXZlcnNhbCgpKQotICAgICAgICByZXR1cm4gY3VzdG9tRWxlbWVudEFmdGVyKG51
bGxwdHIpOwotICAgIGlmIChtX3Nob3VsZE9ubHlJbmNsdWRlRGlyZWN0Q2hpbGRyZW4pCi0gICAg
ICAgIHJldHVybiBmaXJzdE1hdGNoaW5nQ2hpbGRFbGVtZW50KCp0aGlzLCByb290KTsKLSAgICBy
ZXR1cm4gZmlyc3RNYXRjaGluZ0VsZW1lbnQoKnRoaXMsIHJvb3QpOwotfQotCi1pbmxpbmUgRWxl
bWVudCogSFRNTENvbGxlY3Rpb246OnRyYXZlcnNlRm9yd2FyZChFbGVtZW50JiBjdXJyZW50LCB1
bnNpZ25lZCBjb3VudCwgdW5zaWduZWQmIHRyYXZlcnNlZENvdW50LCBDb250YWluZXJOb2RlJiBy
b290KSBjb25zdAotewotICAgIEVsZW1lbnQqIGVsZW1lbnQgPSAmY3VycmVudDsKLSAgICBpZiAo
dXNlc0N1c3RvbUZvcndhcmRPbmx5VHJhdmVyc2FsKCkpIHsKLSAgICAgICAgZm9yICh0cmF2ZXJz
ZWRDb3VudCA9IDA7IHRyYXZlcnNlZENvdW50IDwgY291bnQ7ICsrdHJhdmVyc2VkQ291bnQpIHsK
LSAgICAgICAgICAgIGVsZW1lbnQgPSBjdXN0b21FbGVtZW50QWZ0ZXIoZWxlbWVudCk7Ci0gICAg
ICAgICAgICBpZiAoIWVsZW1lbnQpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0g
ICAgICAgIH0KLSAgICB9IGVsc2UgaWYgKG1fc2hvdWxkT25seUluY2x1ZGVEaXJlY3RDaGlsZHJl
bikgewotICAgICAgICBmb3IgKHRyYXZlcnNlZENvdW50ID0gMDsgdHJhdmVyc2VkQ291bnQgPCBj
b3VudDsgKyt0cmF2ZXJzZWRDb3VudCkgewotICAgICAgICAgICAgZWxlbWVudCA9IG5leHRNYXRj
aGluZ1NpYmxpbmdFbGVtZW50KCp0aGlzLCAqZWxlbWVudCk7Ci0gICAgICAgICAgICBpZiAoIWVs
ZW1lbnQpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIH0KLSAgICB9
IGVsc2UgewotICAgICAgICBmb3IgKHRyYXZlcnNlZENvdW50ID0gMDsgdHJhdmVyc2VkQ291bnQg
PCBjb3VudDsgKyt0cmF2ZXJzZWRDb3VudCkgewotICAgICAgICAgICAgZWxlbWVudCA9IG5leHRN
YXRjaGluZ0VsZW1lbnQoKnRoaXMsICplbGVtZW50LCByb290KTsKLSAgICAgICAgICAgIGlmICgh
ZWxlbWVudCkKLSAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgfQotICAg
IH0KLSAgICByZXR1cm4gZWxlbWVudDsKLX0KLQotRWxlbWVudCogSFRNTENvbGxlY3Rpb246OmNv
bGxlY3Rpb25CZWdpbigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGZpcnN0RWxlbWVudChyb290Tm9k
ZSgpKTsKLX0KLQotRWxlbWVudCogSFRNTENvbGxlY3Rpb246OmNvbGxlY3Rpb25MYXN0KCkgY29u
c3QKLXsKLSAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgb3B0aW1pemVkIHNpbWlsYXJseSB0
byB0aGUgZm9yd2FyZCBjYXNlLgotICAgIGF1dG8mIHJvb3QgPSByb290Tm9kZSgpOwotICAgIEVs
ZW1lbnQqIGxhc3QgPSBtX3Nob3VsZE9ubHlJbmNsdWRlRGlyZWN0Q2hpbGRyZW4gPyBFbGVtZW50
VHJhdmVyc2FsOjpsYXN0Q2hpbGQocm9vdCkgOiBFbGVtZW50VHJhdmVyc2FsOjpsYXN0V2l0aGlu
KHJvb3QpOwotICAgIHJldHVybiBpdGVyYXRlRm9yUHJldmlvdXNFbGVtZW50KGxhc3QpOwotfQot
Ci12b2lkIEhUTUxDb2xsZWN0aW9uOjpjb2xsZWN0aW9uVHJhdmVyc2VGb3J3YXJkKEVsZW1lbnQq
JiBjdXJyZW50LCB1bnNpZ25lZCBjb3VudCwgdW5zaWduZWQmIHRyYXZlcnNlZENvdW50KSBjb25z
dAotewotICAgIGN1cnJlbnQgPSB0cmF2ZXJzZUZvcndhcmQoKmN1cnJlbnQsIGNvdW50LCB0cmF2
ZXJzZWRDb3VudCwgcm9vdE5vZGUoKSk7Ci19Ci0KLXZvaWQgSFRNTENvbGxlY3Rpb246OmNvbGxl
Y3Rpb25UcmF2ZXJzZUJhY2t3YXJkKEVsZW1lbnQqJiBjdXJyZW50LCB1bnNpZ25lZCBjb3VudCkg
Y29uc3QKLXsKLSAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgb3B0aW1pemVkIHNpbWlsYXJs
eSB0byB0aGUgZm9yd2FyZCBjYXNlLgotICAgIGlmIChtX3Nob3VsZE9ubHlJbmNsdWRlRGlyZWN0
Q2hpbGRyZW4pIHsKLSAgICAgICAgZm9yICg7IGNvdW50ICYmIGN1cnJlbnQ7IC0tY291bnQpCi0g
ICAgICAgICAgICBjdXJyZW50ID0gaXRlcmF0ZUZvclByZXZpb3VzRWxlbWVudChFbGVtZW50VHJh
dmVyc2FsOjpwcmV2aW91c1NpYmxpbmcoKmN1cnJlbnQpKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLSAgICBhdXRvJiByb290ID0gcm9vdE5vZGUoKTsKLSAgICBmb3IgKDsgY291bnQgJiYgY3Vy
cmVudDsgLS1jb3VudCkKLSAgICAgICAgY3VycmVudCA9IGl0ZXJhdGVGb3JQcmV2aW91c0VsZW1l
bnQoRWxlbWVudFRyYXZlcnNhbDo6cHJldmlvdXMoKmN1cnJlbnQsICZyb290KSk7Ci19Ci0KLXZv
aWQgSFRNTENvbGxlY3Rpb246OmludmFsaWRhdGVDYWNoZShEb2N1bWVudCYgZG9jdW1lbnQpIGNv
bnN0Ci17Ci0gICAgaWYgKG1faW5kZXhDYWNoZS5oYXNWYWxpZENhY2hlKCp0aGlzKSkgewotICAg
ICAgICBkb2N1bWVudC51bnJlZ2lzdGVyQ29sbGVjdGlvbihjb25zdF9jYXN0PEhUTUxDb2xsZWN0
aW9uJj4oKnRoaXMpKTsKLSAgICAgICAgbV9pbmRleENhY2hlLmludmFsaWRhdGUoKnRoaXMpOwot
ICAgIH0KICAgICBpZiAoaGFzTmFtZWRFbGVtZW50Q2FjaGUoKSkKICAgICAgICAgaW52YWxpZGF0
ZU5hbWVkRWxlbWVudENhY2hlKGRvY3VtZW50KTsKIH0KQEAgLTQwMCwzOCArMTMzLDYgQEAgdm9p
ZCBIVE1MQ29sbGVjdGlvbjo6aW52YWxpZGF0ZU5hbWVkRWxlbWVudENhY2hlKERvY3VtZW50JiBk
b2N1bWVudCkgY29uc3QKIAogRWxlbWVudCogSFRNTENvbGxlY3Rpb246Om5hbWVkSXRlbShjb25z
dCBBdG9taWNTdHJpbmcmIG5hbWUpIGNvbnN0CiB7Ci0gICAgLy8gaHR0cDovL21zZG4ubWljcm9z
b2Z0LmNvbS93b3Jrc2hvcC9hdXRob3IvZGh0bWwvcmVmZXJlbmNlL21ldGhvZHMvbmFtZWRpdGVt
LmFzcAotICAgIC8vIFRoaXMgbWV0aG9kIGZpcnN0IHNlYXJjaGVzIGZvciBhbiBvYmplY3Qgd2l0
aCBhIG1hdGNoaW5nIGlkCi0gICAgLy8gYXR0cmlidXRlLiBJZiBhIG1hdGNoIGlzIG5vdCBmb3Vu
ZCwgdGhlIG1ldGhvZCB0aGVuIHNlYXJjaGVzIGZvciBhbgotICAgIC8vIG9iamVjdCB3aXRoIGEg
bWF0Y2hpbmcgbmFtZSBhdHRyaWJ1dGUsIGJ1dCBvbmx5IG9uIHRob3NlIGVsZW1lbnRzCi0gICAg
Ly8gdGhhdCBhcmUgYWxsb3dlZCBhIG5hbWUgYXR0cmlidXRlLgotCi0gICAgaWYgKG5hbWUuaXNF
bXB0eSgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIENvbnRhaW5lck5vZGUmIHJv
b3QgPSByb290Tm9kZSgpOwotICAgIGlmICghdXNlc0N1c3RvbUZvcndhcmRPbmx5VHJhdmVyc2Fs
KCkgJiYgcm9vdC5pc0luVHJlZVNjb3BlKCkpIHsKLSAgICAgICAgRWxlbWVudCogY2FuZGlkYXRl
ID0gbnVsbHB0cjsKLQotICAgICAgICBUcmVlU2NvcGUmIHRyZWVTY29wZSA9IHJvb3QudHJlZVNj
b3BlKCk7Ci0gICAgICAgIGlmICh0cmVlU2NvcGUuaGFzRWxlbWVudFdpdGhJZCgqbmFtZS5pbXBs
KCkpKSB7Ci0gICAgICAgICAgICBpZiAoIXRyZWVTY29wZS5jb250YWluc011bHRpcGxlRWxlbWVu
dHNXaXRoSWQobmFtZSkpCi0gICAgICAgICAgICAgICAgY2FuZGlkYXRlID0gdHJlZVNjb3BlLmdl
dEVsZW1lbnRCeUlkKG5hbWUpOwotICAgICAgICB9IGVsc2UgaWYgKHRyZWVTY29wZS5oYXNFbGVt
ZW50V2l0aE5hbWUoKm5hbWUuaW1wbCgpKSkgewotICAgICAgICAgICAgaWYgKCF0cmVlU2NvcGUu
Y29udGFpbnNNdWx0aXBsZUVsZW1lbnRzV2l0aE5hbWUobmFtZSkpIHsKLSAgICAgICAgICAgICAg
ICBjYW5kaWRhdGUgPSB0cmVlU2NvcGUuZ2V0RWxlbWVudEJ5TmFtZShuYW1lKTsKLSAgICAgICAg
ICAgICAgICBpZiAoY2FuZGlkYXRlICYmIHR5cGUoKSA9PSBEb2NBbGwgJiYgIW5hbWVTaG91bGRC
ZVZpc2libGVJbkRvY3VtZW50QWxsKCpjYW5kaWRhdGUpKQotICAgICAgICAgICAgICAgICAgICBj
YW5kaWRhdGUgPSBudWxscHRyOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UKLSAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgICAgIGlmIChjYW5kaWRhdGUgJiYgaXNNYXRj
aGluZ0VsZW1lbnQoKnRoaXMsICpjYW5kaWRhdGUpKSB7Ci0gICAgICAgICAgICBpZiAobV9zaG91
bGRPbmx5SW5jbHVkZURpcmVjdENoaWxkcmVuID8gY2FuZGlkYXRlLT5wYXJlbnROb2RlKCkgPT0g
JnJvb3QgOiBjYW5kaWRhdGUtPmlzRGVzY2VuZGFudE9mKCZyb290KSkKLSAgICAgICAgICAgICAg
ICByZXR1cm4gY2FuZGlkYXRlOwotICAgICAgICB9Ci0gICAgfQotCiAgICAgLy8gVGhlIHBhdGhv
bG9naWNhbCBjYXNlLiBXZSBuZWVkIHRvIHdhbGsgdGhlIGVudGlyZSBzdWJ0cmVlLgogICAgIHVw
ZGF0ZU5hbWVkRWxlbWVudENhY2hlKCk7CiAgICAgQVNTRVJUKG1fbmFtZWRFbGVtZW50Q2FjaGUp
OwpAQCAtNDU2LDkgKzE1Nyw5IEBAIHZvaWQgSFRNTENvbGxlY3Rpb246OnVwZGF0ZU5hbWVkRWxl
bWVudENhY2hlKCkgY29uc3QKIAogICAgIGF1dG8gY2FjaGUgPSBzdGQ6Om1ha2VfdW5pcXVlPENv
bGxlY3Rpb25OYW1lZEVsZW1lbnRDYWNoZT4oKTsKIAotICAgIHVuc2lnbmVkIHNpemUgPSBtX2lu
ZGV4Q2FjaGUubm9kZUNvdW50KCp0aGlzKTsKKyAgICB1bnNpZ25lZCBzaXplID0gbGVuZ3RoKCk7
CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7ICsraSkgewotICAgICAgICBFbGVt
ZW50JiBlbGVtZW50ID0gKm1faW5kZXhDYWNoZS5ub2RlQXQoKnRoaXMsIGkpOworICAgICAgICBF
bGVtZW50JiBlbGVtZW50ID0gKml0ZW0oaSk7CiAgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYg
aWQgPSBlbGVtZW50LmdldElkQXR0cmlidXRlKCk7CiAgICAgICAgIGlmICghaWQuaXNFbXB0eSgp
KQogICAgICAgICAgICAgY2FjaGUtPmFwcGVuZFRvSWRDYWNoZShpZCwgZWxlbWVudCk7CkBAIC01
MTMsMTAgKzIxNCw0IEBAIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IEhUTUxDb2xsZWN0aW9uOjp0YWdz
KGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICByZXR1cm4gb3duZXJOb2RlKCkuZ2V0RWxlbWVudHNC
eVRhZ05hbWUobmFtZSk7CiB9CiAKLUVsZW1lbnQqIEhUTUxDb2xsZWN0aW9uOjpjdXN0b21FbGVt
ZW50QWZ0ZXIoRWxlbWVudCopIGNvbnN0Ci17Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0g
ICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTENvbGxlY3Rpb24uaAppbmRleCA0NzE0ZTkwOGRkYjVkOWI4ODljM2I2Y2U2NTdh
MTQwZDdhM2M1OWUyLi5lNmQ4Y2U2MjQ3ZTUzYTcwMDc3ZGI2NGI2NjgwMjU1YjIxYTYzNWYwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5oCkBAIC02MCw1NyArNjAsMzggQEAgcHJp
dmF0ZToKIAogY2xhc3MgSFRNTENvbGxlY3Rpb24gOiBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlLCBw
dWJsaWMgUmVmQ291bnRlZDxIVE1MQ29sbGVjdGlvbj4gewogcHVibGljOgotICAgIHN0YXRpYyBS
ZWY8SFRNTENvbGxlY3Rpb24+IGNyZWF0ZShDb250YWluZXJOb2RlJiBiYXNlLCBDb2xsZWN0aW9u
VHlwZSk7CiAgICAgdmlydHVhbCB+SFRNTENvbGxlY3Rpb24oKTsKIAogICAgIC8vIERPTSBBUEkK
LSAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdDsKLSAgICBFbGVtZW50KiBpdGVtKHVuc2lnbmVk
IG9mZnNldCkgY29uc3Q7CisgICAgdmlydHVhbCB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCA9IDA7
CisgICAgdmlydHVhbCBFbGVtZW50KiBpdGVtKHVuc2lnbmVkIG9mZnNldCkgY29uc3QgPSAwOwog
ICAgIHZpcnR1YWwgRWxlbWVudCogbmFtZWRJdGVtKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkg
Y29uc3Q7CiAgICAgUGFzc1JlZlB0cjxOb2RlTGlzdD4gdGFncyhjb25zdCBTdHJpbmcmKTsKIAog
ICAgIC8vIE5vbi1ET00gQVBJCiAgICAgYm9vbCBoYXNOYW1lZEl0ZW0oY29uc3QgQXRvbWljU3Ry
aW5nJiBuYW1lKSBjb25zdDsKICAgICBWZWN0b3I8UmVmPEVsZW1lbnQ+PiBuYW1lZEl0ZW1zKGNv
bnN0IEF0b21pY1N0cmluZyYgbmFtZSkgY29uc3Q7Ci0gICAgc2l6ZV90IG1lbW9yeUNvc3QoKSBj
b25zdDsKKyAgICB2aXJ0dWFsIHNpemVfdCBtZW1vcnlDb3N0KCkgY29uc3Q7CiAKICAgICBib29s
IGlzUm9vdGVkQXREb2N1bWVudCgpIGNvbnN0OwogICAgIE5vZGVMaXN0SW52YWxpZGF0aW9uVHlw
ZSBpbnZhbGlkYXRpb25UeXBlKCkgY29uc3Q7CiAgICAgQ29sbGVjdGlvblR5cGUgdHlwZSgpIGNv
bnN0OwogICAgIENvbnRhaW5lck5vZGUmIG93bmVyTm9kZSgpIGNvbnN0OwotICAgIHZvaWQgaW52
YWxpZGF0ZUNhY2hlKGNvbnN0IFF1YWxpZmllZE5hbWUqIGF0dHJpYnV0ZU5hbWUpIGNvbnN0Owot
ICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlQ2FjaGUoRG9jdW1lbnQmKSBjb25zdDsKLQotICAg
IC8vIEZvciBDb2xsZWN0aW9uSW5kZXhDYWNoZTsgZG8gbm90IHVzZSBlbHNld2hlcmUuCi0gICAg
RWxlbWVudCogY29sbGVjdGlvbkJlZ2luKCkgY29uc3Q7Ci0gICAgRWxlbWVudCogY29sbGVjdGlv
bkxhc3QoKSBjb25zdDsKLSAgICBFbGVtZW50KiBjb2xsZWN0aW9uRW5kKCkgY29uc3Q7Ci0gICAg
dm9pZCBjb2xsZWN0aW9uVHJhdmVyc2VGb3J3YXJkKEVsZW1lbnQqJiwgdW5zaWduZWQgY291bnQs
IHVuc2lnbmVkJiB0cmF2ZXJzZWRDb3VudCkgY29uc3Q7Ci0gICAgdm9pZCBjb2xsZWN0aW9uVHJh
dmVyc2VCYWNrd2FyZChFbGVtZW50KiYsIHVuc2lnbmVkIGNvdW50KSBjb25zdDsKLSAgICBib29s
IGNvbGxlY3Rpb25DYW5UcmF2ZXJzZUJhY2t3YXJkKCkgY29uc3Q7Ci0gICAgdm9pZCB3aWxsVmFs
aWRhdGVJbmRleENhY2hlKCkgY29uc3Q7CisgICAgdm9pZCBpbnZhbGlkYXRlQ2FjaGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSogYXR0cmlidXRlTmFtZSk7CisgICAgdmlydHVhbCB2b2lkIGludmFsaWRh
dGVDYWNoZShEb2N1bWVudCYpOwogCiAgICAgYm9vbCBoYXNOYW1lZEVsZW1lbnRDYWNoZSgpIGNv
bnN0OwogCiBwcm90ZWN0ZWQ6Ci0gICAgZW51bSBFbGVtZW50VHJhdmVyc2FsVHlwZSB7IE5vcm1h
bFRyYXZlcnNhbCwgQ3VzdG9tRm9yd2FyZE9ubHlUcmF2ZXJzYWwgfTsKLSAgICBIVE1MQ29sbGVj
dGlvbihDb250YWluZXJOb2RlJiBiYXNlLCBDb2xsZWN0aW9uVHlwZSwgRWxlbWVudFRyYXZlcnNh
bFR5cGUgPSBOb3JtYWxUcmF2ZXJzYWwpOworICAgIEhUTUxDb2xsZWN0aW9uKENvbnRhaW5lck5v
ZGUmIGJhc2UsIENvbGxlY3Rpb25UeXBlKTsKIAogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVOYW1l
ZEVsZW1lbnRDYWNoZSgpIGNvbnN0OwogCiAgICAgdm9pZCBzZXROYW1lZEl0ZW1DYWNoZShzdGQ6
OnVuaXF1ZV9wdHI8Q29sbGVjdGlvbk5hbWVkRWxlbWVudENhY2hlPikgY29uc3Q7CiAgICAgY29u
c3QgQ29sbGVjdGlvbk5hbWVkRWxlbWVudENhY2hlJiBuYW1lZEl0ZW1DYWNoZXMoKSBjb25zdDsK
IAotcHJpdmF0ZToKICAgICBEb2N1bWVudCYgZG9jdW1lbnQoKSBjb25zdDsKICAgICBDb250YWlu
ZXJOb2RlJiByb290Tm9kZSgpIGNvbnN0OwotICAgIGJvb2wgdXNlc0N1c3RvbUZvcndhcmRPbmx5
VHJhdmVyc2FsKCkgY29uc3Q7Ci0KLSAgICBFbGVtZW50KiBpdGVyYXRlRm9yUHJldmlvdXNFbGVt
ZW50KEVsZW1lbnQqKSBjb25zdDsKLSAgICBFbGVtZW50KiBmaXJzdEVsZW1lbnQoQ29udGFpbmVy
Tm9kZSYgcm9vdCkgY29uc3Q7Ci0gICAgRWxlbWVudCogdHJhdmVyc2VGb3J3YXJkKEVsZW1lbnQm
LCB1bnNpZ25lZCBjb3VudCwgdW5zaWduZWQmIHRyYXZlcnNlZENvdW50LCBDb250YWluZXJOb2Rl
JiByb290KSBjb25zdDsKLQotICAgIHZpcnR1YWwgRWxlbWVudCogY3VzdG9tRWxlbWVudEFmdGVy
KEVsZW1lbnQqKSBjb25zdDsKIAogICAgIHZvaWQgaW52YWxpZGF0ZU5hbWVkRWxlbWVudENhY2hl
KERvY3VtZW50JikgY29uc3Q7CiAKQEAgLTExOSwxNiArMTAwLDIxIEBAIHByaXZhdGU6CiAKICAg
ICBSZWY8Q29udGFpbmVyTm9kZT4gbV9vd25lck5vZGU7CiAKLSAgICBtdXRhYmxlIENvbGxlY3Rp
b25JbmRleENhY2hlPEhUTUxDb2xsZWN0aW9uLCBFbGVtZW50Kj4gbV9pbmRleENhY2hlOwogICAg
IG11dGFibGUgc3RkOjp1bmlxdWVfcHRyPENvbGxlY3Rpb25OYW1lZEVsZW1lbnRDYWNoZT4gbV9u
YW1lZEVsZW1lbnRDYWNoZTsKIAogICAgIGNvbnN0IHVuc2lnbmVkIG1fY29sbGVjdGlvblR5cGUg
OiA1OwogICAgIGNvbnN0IHVuc2lnbmVkIG1faW52YWxpZGF0aW9uVHlwZSA6IDQ7CiAgICAgY29u
c3QgdW5zaWduZWQgbV9yb290VHlwZSA6IDE7Ci0gICAgY29uc3QgdW5zaWduZWQgbV9zaG91bGRP
bmx5SW5jbHVkZURpcmVjdENoaWxkcmVuIDogMTsKLSAgICBjb25zdCB1bnNpZ25lZCBtX3VzZXND
dXN0b21Gb3J3YXJkT25seVRyYXZlcnNhbCA6IDE7CiB9OwogCitpbmxpbmUgQ29udGFpbmVyTm9k
ZSYgSFRNTENvbGxlY3Rpb246OnJvb3ROb2RlKCkgY29uc3QKK3sKKyAgICBpZiAoaXNSb290ZWRB
dERvY3VtZW50KCkgJiYgb3duZXJOb2RlKCkuaW5Eb2N1bWVudCgpKQorICAgICAgICByZXR1cm4g
b3duZXJOb2RlKCkuZG9jdW1lbnQoKTsKKworICAgIHJldHVybiBvd25lck5vZGUoKTsKK30KKwog
aW5saW5lIGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4qIENvbGxlY3Rpb25OYW1lZEVsZW1lbnRDYWNo
ZTo6ZmluZEVsZW1lbnRzV2l0aElkKGNvbnN0IEF0b21pY1N0cmluZyYgaWQpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIGZpbmQobV9pZE1hcCwgaWQpOwpAQCAtMTc3LDcgKzE2Myw3IEBAIGlubGluZSB2
b2lkIENvbGxlY3Rpb25OYW1lZEVsZW1lbnRDYWNoZTo6YXBwZW5kKFN0cmluZ1RvRWxlbWVudHNN
YXAmIG1hcCwgY29uc3QKIAogaW5saW5lIHNpemVfdCBIVE1MQ29sbGVjdGlvbjo6bWVtb3J5Q29z
dCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1faW5kZXhDYWNoZS5tZW1vcnlDb3N0KCkgKyAobV9u
YW1lZEVsZW1lbnRDYWNoZSA/IG1fbmFtZWRFbGVtZW50Q2FjaGUtPm1lbW9yeUNvc3QoKSA6IDAp
OworICAgIHJldHVybiBtX25hbWVkRWxlbWVudENhY2hlID8gbV9uYW1lZEVsZW1lbnRDYWNoZS0+
bWVtb3J5Q29zdCgpIDogMDsKIH0KIAogaW5saW5lIGJvb2wgSFRNTENvbGxlY3Rpb246OmlzUm9v
dGVkQXREb2N1bWVudCgpIGNvbnN0CkBAIC0yMDUsNyArMTkxLDcgQEAgaW5saW5lIERvY3VtZW50
JiBIVE1MQ29sbGVjdGlvbjo6ZG9jdW1lbnQoKSBjb25zdAogICAgIHJldHVybiBtX293bmVyTm9k
ZS0+ZG9jdW1lbnQoKTsKIH0KIAotaW5saW5lIHZvaWQgSFRNTENvbGxlY3Rpb246OmludmFsaWRh
dGVDYWNoZShjb25zdCBRdWFsaWZpZWROYW1lKiBhdHRyaWJ1dGVOYW1lKSBjb25zdAoraW5saW5l
IHZvaWQgSFRNTENvbGxlY3Rpb246OmludmFsaWRhdGVDYWNoZShjb25zdCBRdWFsaWZpZWROYW1l
KiBhdHRyaWJ1dGVOYW1lKQogewogICAgIGlmICghYXR0cmlidXRlTmFtZSB8fCBzaG91bGRJbnZh
bGlkYXRlVHlwZU9uQXR0cmlidXRlQ2hhbmdlKGludmFsaWRhdGlvblR5cGUoKSwgKmF0dHJpYnV0
ZU5hbWUpKQogICAgICAgICBpbnZhbGlkYXRlQ2FjaGUoZG9jdW1lbnQoKSk7CkBAIC0yMTMsMjEg
KzE5OSw2IEBAIGlubGluZSB2b2lkIEhUTUxDb2xsZWN0aW9uOjppbnZhbGlkYXRlQ2FjaGUoY29u
c3QgUXVhbGlmaWVkTmFtZSogYXR0cmlidXRlTmFtZSkKICAgICAgICAgaW52YWxpZGF0ZU5hbWVk
RWxlbWVudENhY2hlKGRvY3VtZW50KCkpOwogfQogCi1pbmxpbmUgRWxlbWVudCogSFRNTENvbGxl
Y3Rpb246OmNvbGxlY3Rpb25FbmQoKSBjb25zdAotewotICAgIHJldHVybiBudWxscHRyOwotfQot
Ci1pbmxpbmUgYm9vbCBIVE1MQ29sbGVjdGlvbjo6Y29sbGVjdGlvbkNhblRyYXZlcnNlQmFja3dh
cmQoKSBjb25zdAotewotICAgIHJldHVybiAhbV91c2VzQ3VzdG9tRm9yd2FyZE9ubHlUcmF2ZXJz
YWw7Ci19Ci0KLWlubGluZSB2b2lkIEhUTUxDb2xsZWN0aW9uOjp3aWxsVmFsaWRhdGVJbmRleENh
Y2hlKCkgY29uc3QKLXsKLSAgICBkb2N1bWVudCgpLnJlZ2lzdGVyQ29sbGVjdGlvbihjb25zdF9j
YXN0PEhUTUxDb2xsZWN0aW9uJj4oKnRoaXMpKTsKLX0KLQogaW5saW5lIGJvb2wgSFRNTENvbGxl
Y3Rpb246Omhhc05hbWVkRWxlbWVudENhY2hlKCkgY29uc3QKIHsKICAgICByZXR1cm4gISFtX25h
bWVkRWxlbWVudENhY2hlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGF0
YUxpc3RFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERhdGFMaXN0RWxlbWVu
dC5jcHAKaW5kZXggZmU1ZTc2ZmFkNWVkNmYzYWNhY2VhZWY2NGIwNDUzMzI3NzQ2NWQwNi4uMTY4
NGMyZGY5OTNkNWEwMzcxMGNjNDhiOTkxNzcxZmViOTFiOGI0OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRGF0YUxpc3RFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxEYXRhTGlzdEVsZW1lbnQuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAKICNpbmNs
dWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJJZFRhcmdldE9ic2VydmVyUmVnaXN0cnkuaCIK
KyNpbmNsdWRlICJOb2RlUmFyZURhdGEuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01
MCw3ICs1MSw3IEBAIFJlZjxIVE1MRGF0YUxpc3RFbGVtZW50PiBIVE1MRGF0YUxpc3RFbGVtZW50
OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtCiAKIFJlZjxIVE1MQ29sbGVjdGlv
bj4gSFRNTERhdGFMaXN0RWxlbWVudDo6b3B0aW9ucygpCiB7Ci0gICAgcmV0dXJuIGVuc3VyZUNh
Y2hlZEhUTUxDb2xsZWN0aW9uKERhdGFMaXN0T3B0aW9ucyk7CisgICAgcmV0dXJuIGVuc3VyZVJh
cmVEYXRhKCkuZW5zdXJlTm9kZUxpc3RzKCkuYWRkQ2FjaGVkQ29sbGVjdGlvbjxHZW5lcmljQ2Fj
aGVkSFRNTENvbGxlY3Rpb248Q29sbGVjdGlvblR5cGVUcmFpdHM8RGF0YUxpc3RPcHRpb25zPjo6
dHJhdmVyc2FsVHlwZT4+KCp0aGlzLCBEYXRhTGlzdE9wdGlvbnMpOwogfQogCiB2b2lkIEhUTUxE
YXRhTGlzdEVsZW1lbnQ6Om9wdGlvbkVsZW1lbnRDaGlsZHJlbkNoYW5nZWQoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5jcHAKaW5kZXggYWMzMzJlODcwMjI2MThj
MmU0OTNiNjk3N2IwODNkNTVhYjg2YWQ3ZC4uNDAwYTBiYWUwZWQ5NGZlMDUzZmQ2MzU3MWI0MGFh
Yzk4ZmJhYzhkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRmllbGRTZXRF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGaWVsZFNldEVsZW1lbnQu
Y3BwCkBAIC0yNiwxMCArMjYsMTEgQEAKICNpbmNsdWRlICJIVE1MRmllbGRTZXRFbGVtZW50Lmgi
CiAKICNpbmNsdWRlICJFbGVtZW50SXRlcmF0b3IuaCIKLSNpbmNsdWRlICJIVE1MQ29sbGVjdGlv
bi5oIgorI2luY2x1ZGUgIkhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAi
SFRNTExlZ2VuZEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJI
VE1MT2JqZWN0RWxlbWVudC5oIgorI2luY2x1ZGUgIk5vZGVSYXJlRGF0YS5oIgogI2luY2x1ZGUg
IlJlbmRlckZpZWxkc2V0LmgiCiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCkBAIC0x
NjEsNyArMTYyLDcgQEAgSFRNTExlZ2VuZEVsZW1lbnQqIEhUTUxGaWVsZFNldEVsZW1lbnQ6Omxl
Z2VuZCgpIGNvbnN0CiAKIFJlZjxIVE1MQ29sbGVjdGlvbj4gSFRNTEZpZWxkU2V0RWxlbWVudDo6
ZWxlbWVudHMoKQogewotICAgIHJldHVybiBlbnN1cmVDYWNoZWRIVE1MQ29sbGVjdGlvbihGb3Jt
Q29udHJvbHMpOworICAgIHJldHVybiBlbnN1cmVSYXJlRGF0YSgpLmVuc3VyZU5vZGVMaXN0cygp
LmFkZENhY2hlZENvbGxlY3Rpb248SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24+KCp0aGlzLCBG
b3JtQ29udHJvbHMpOwogfQogCiB2b2lkIEhUTUxGaWVsZFNldEVsZW1lbnQ6OnJlZnJlc2hFbGVt
ZW50c0lmTmVlZGVkKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEZvcm1Db250cm9sc0NvbGxlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9y
bUNvbnRyb2xzQ29sbGVjdGlvbi5jcHAKaW5kZXggMGRlZWNjMjRlY2Q5YjVjMzdiMGFjMDljMzE3
NTI3MzQyYjcxMWQ4NC4uMzAyNTBiYjI2NGI0OThmODg4ODIxZTA3ODkxOGZlZDc2ZDgzM2U5YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlv
bi5jcHAKQEAgLTM2LDcgKzM2LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIC8vIGNh
bGN1bGF0aW9uIGV2ZXJ5IHRpbWUgaWYgYW55dGhpbmcgaGFzIGNoYW5nZWQuCiAKIEhUTUxGb3Jt
Q29udHJvbHNDb2xsZWN0aW9uOjpIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbihDb250YWluZXJO
b2RlJiBvd25lck5vZGUpCi0gICAgOiBIVE1MQ29sbGVjdGlvbihvd25lck5vZGUsIEZvcm1Db250
cm9scywgQ3VzdG9tRm9yd2FyZE9ubHlUcmF2ZXJzYWwpCisgICAgOiBDYWNoZWRIVE1MQ29sbGVj
dGlvbjxIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbiwgQ29sbGVjdGlvblR5cGVUcmFpdHM8Rm9y
bUNvbnRyb2xzPjo6dHJhdmVyc2FsVHlwZT4ob3duZXJOb2RlLCBGb3JtQ29udHJvbHMpCiAgICAg
LCBtX2NhY2hlZEVsZW1lbnQobnVsbHB0cikKICAgICAsIG1fY2FjaGVkRWxlbWVudE9mZnNldElu
QXJyYXkoMCkKIHsKQEAgLTE3Nyw5ICsxNzcsOSBAQCB2b2lkIEhUTUxGb3JtQ29udHJvbHNDb2xs
ZWN0aW9uOjp1cGRhdGVOYW1lZEVsZW1lbnRDYWNoZSgpIGNvbnN0CiAgICAgc2V0TmFtZWRJdGVt
Q2FjaGUoV1RGOjptb3ZlKGNhY2hlKSk7CiB9CiAKLXZvaWQgSFRNTEZvcm1Db250cm9sc0NvbGxl
Y3Rpb246OmludmFsaWRhdGVDYWNoZShEb2N1bWVudCYgZG9jdW1lbnQpIGNvbnN0Cit2b2lkIEhU
TUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uOjppbnZhbGlkYXRlQ2FjaGUoRG9jdW1lbnQmIGRvY3Vt
ZW50KQogewotICAgIEhUTUxDb2xsZWN0aW9uOjppbnZhbGlkYXRlQ2FjaGUoZG9jdW1lbnQpOwor
ICAgIENhY2hlZEhUTUxDb2xsZWN0aW9uPEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLCBDb2xs
ZWN0aW9uVHlwZVRyYWl0czxGb3JtQ29udHJvbHM+Ojp0cmF2ZXJzYWxUeXBlPjo6aW52YWxpZGF0
ZUNhY2hlKGRvY3VtZW50KTsKICAgICBtX2NhY2hlZEVsZW1lbnQgPSBudWxscHRyOwogICAgIG1f
Y2FjaGVkRWxlbWVudE9mZnNldEluQXJyYXkgPSAwOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5oCmluZGV4IGIxNjhhZDljMDYwNTQ0OGE5
OTQ5ZDRhOGUxNWU0NDY1ZDc4NWJiNzMuLmMwZDUyMGY2YWYyMWRhZTRiZDIxZGZiMTIyMDA3ODcx
OGQ1NDQyYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9s
c0NvbGxlY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbHND
b2xsZWN0aW9uLmgKQEAgLTIzLDcgKzIzLDcgQEAKICNpZm5kZWYgSFRNTEZvcm1Db250cm9sc0Nv
bGxlY3Rpb25faAogI2RlZmluZSBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbl9oCiAKLSNpbmNs
dWRlICJIVE1MQ29sbGVjdGlvbi5oIgorI2luY2x1ZGUgIkNhY2hlZEhUTUxDb2xsZWN0aW9uLmgi
CiAjaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzQs
MjEgKzM0LDIzIEBAIGNsYXNzIEhUTUxJbWFnZUVsZW1lbnQ7CiAvLyBUaGlzIGNsYXNzIGlzIGp1
c3QgYSBiaWcgaGFjayB0byBmaW5kIGZvcm0gZWxlbWVudHMgZXZlbiBpbiBtYWxmb3JtZWQgSFRN
TCBlbGVtZW50cy4KIC8vIFRoZSBmYW1vdXMgPHRhYmxlPjx0cj48Zm9ybT48dGQ+IHByb2JsZW0u
CiAKLWNsYXNzIEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uIGZpbmFsIDogcHVibGljIEhUTUxD
b2xsZWN0aW9uIHsKK2NsYXNzIEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uIGZpbmFsIDogcHVi
bGljIENhY2hlZEhUTUxDb2xsZWN0aW9uPEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLCBDb2xs
ZWN0aW9uVHlwZVRyYWl0czxGb3JtQ29udHJvbHM+Ojp0cmF2ZXJzYWxUeXBlPiB7CiBwdWJsaWM6
CiAgICAgc3RhdGljIFJlZjxIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbj4gY3JlYXRlKENvbnRh
aW5lck5vZGUmLCBDb2xsZWN0aW9uVHlwZSk7CiAgICAgdmlydHVhbCB+SFRNTEZvcm1Db250cm9s
c0NvbGxlY3Rpb24oKTsKIAorICAgIC8vIEZvciBDYWNoZWRIVE1MQ29sbGVjdGlvbi4KKyAgICBF
bGVtZW50KiBjdXN0b21FbGVtZW50QWZ0ZXIoRWxlbWVudCopIGNvbnN0OworCiBwcml2YXRlOgog
ICAgIGV4cGxpY2l0IEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uKENvbnRhaW5lck5vZGUmKTsK
IAogICAgIHZpcnR1YWwgSFRNTEVsZW1lbnQqIG5hbWVkSXRlbShjb25zdCBBdG9taWNTdHJpbmcm
IG5hbWUpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlQ2FjaGUo
RG9jdW1lbnQmKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZUNh
Y2hlKERvY3VtZW50Jikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZU5hbWVkRWxl
bWVudENhY2hlKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBjb25zdCBWZWN0b3I8Rm9ybUFzc29j
aWF0ZWRFbGVtZW50Kj4mIGZvcm1Db250cm9sRWxlbWVudHMoKSBjb25zdDsKICAgICBjb25zdCBW
ZWN0b3I8SFRNTEltYWdlRWxlbWVudCo+JiBmb3JtSW1hZ2VFbGVtZW50cygpIGNvbnN0OwotICAg
IHZpcnR1YWwgRWxlbWVudCogY3VzdG9tRWxlbWVudEFmdGVyKEVsZW1lbnQqKSBjb25zdCBvdmVy
cmlkZTsKIAogICAgIG11dGFibGUgRWxlbWVudCogbV9jYWNoZWRFbGVtZW50OwogICAgIG11dGFi
bGUgdW5zaWduZWQgbV9jYWNoZWRFbGVtZW50T2Zmc2V0SW5BcnJheTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEZvcm1FbGVtZW50LmNwcAppbmRleCA1ZmZhM2E4YTcxOTk3ODdmN2RmN2RmMWY4MDlh
NjhhZTY0M2QwMWVkLi4wNTQyNzlmZjFlZjVhOGMzYjE4MGE0YjgwZDIwZmJjOWViZmFlMTgxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCkBAIC0zNywxMSArMzcsMTIg
QEAKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVk
ZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKLSNpbmNsdWRlICJIVE1MQ29sbGVjdGlvbi5oIgorI2lu
Y2x1ZGUgIkhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiSFRNTEltYWdl
RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1M
TmFtZXMuaCIKICNpbmNsdWRlICJIVE1MVGFibGVFbGVtZW50LmgiCisjaW5jbHVkZSAiTm9kZVJh
cmVEYXRhLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlJlbmRlclRleHRDb250cm9s
LmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgpAQCAtNjM4LDcgKzYzOSw3IEBAIHZv
aWQgSFRNTEZvcm1FbGVtZW50OjpyZW1vdmVJbWdFbGVtZW50KEhUTUxJbWFnZUVsZW1lbnQqIGUp
CiAKIFJlZjxIVE1MQ29sbGVjdGlvbj4gSFRNTEZvcm1FbGVtZW50OjplbGVtZW50cygpCiB7Ci0g
ICAgcmV0dXJuIGVuc3VyZUNhY2hlZEhUTUxDb2xsZWN0aW9uKEZvcm1Db250cm9scyk7CisgICAg
cmV0dXJuIGVuc3VyZVJhcmVEYXRhKCkuZW5zdXJlTm9kZUxpc3RzKCkuYWRkQ2FjaGVkQ29sbGVj
dGlvbjxIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbj4oKnRoaXMsIEZvcm1Db250cm9scyk7CiB9
CiAKIFN0cmluZyBIVE1MRm9ybUVsZW1lbnQ6Om5hbWUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWFwRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNYXBFbGVtZW50LmNwcAppbmRleCBhM2M5YzMzOTIzYTcwZmM4ZWI5NmQzZTMwZGEwYzQz
YmU3YWEwMjBiLi4zZWU2MWJhYTAwMWUyMzRhNGIzM2Y3ZDE1OGJjNjg2OTkyYzQ2Y2Y4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNYXBFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNYXBFbGVtZW50LmNwcApAQCAtMjUsMTEgKzI1LDEyIEBACiAj
aW5jbHVkZSAiQXR0cmlidXRlLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJF
bGVtZW50SXRlcmF0b3IuaCIKKyNpbmNsdWRlICJHZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb24u
aCIKICNpbmNsdWRlICJIVE1MQXJlYUVsZW1lbnQuaCIKLSNpbmNsdWRlICJIVE1MQ29sbGVjdGlv
bi5oIgogI2luY2x1ZGUgIkhUTUxJbWFnZUVsZW1lbnQuaCIKICNpbmNsdWRlICJIaXRUZXN0UmVz
dWx0LmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgorI2luY2x1ZGUgIk5vZGVSYXJlRGF0YS5oIgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTExMiw3ICsxMTMsNyBAQCB2b2lkIEhUTUxNYXBF
bGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBB
dG9taWNTdHJpbgogCiBSZWY8SFRNTENvbGxlY3Rpb24+IEhUTUxNYXBFbGVtZW50OjphcmVhcygp
CiB7Ci0gICAgcmV0dXJuIGVuc3VyZUNhY2hlZEhUTUxDb2xsZWN0aW9uKE1hcEFyZWFzKTsKKyAg
ICByZXR1cm4gZW5zdXJlUmFyZURhdGEoKS5lbnN1cmVOb2RlTGlzdHMoKS5hZGRDYWNoZWRDb2xs
ZWN0aW9uPEdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbjxDb2xsZWN0aW9uVHlwZVRyYWl0czxN
YXBBcmVhcz46OnRyYXZlcnNhbFR5cGU+PigqdGhpcywgTWFwQXJlYXMpOwogfQogCiBOb2RlOjpJ
bnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IEhUTUxNYXBFbGVtZW50OjppbnNlcnRlZEludG8o
Q29udGFpbmVyTm9kZSYgaW5zZXJ0aW9uUG9pbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxOYW1lQ29sbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxO
YW1lQ29sbGVjdGlvbi5jcHAKaW5kZXggMzdmNThjMTRlMWNkYzVkNjFjMjM1NTJhZmU2MTY2ODBl
OWZmOTg1My4uMzI5NzQ5YmJiMGQzMGY5MGM3NDU4NzRkMDE1YTM3NDU1MjMzMzVmNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTmFtZUNvbGxlY3Rpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE5hbWVDb2xsZWN0aW9uLmNwcApAQCAtMzYsMTkgKzM2LDYg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCi1I
VE1MTmFtZUNvbGxlY3Rpb246OkhUTUxOYW1lQ29sbGVjdGlvbihEb2N1bWVudCYgZG9jdW1lbnQs
IENvbGxlY3Rpb25UeXBlIHR5cGUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkKLSAgICA6IEhU
TUxDb2xsZWN0aW9uKGRvY3VtZW50LCB0eXBlKQotICAgICwgbV9uYW1lKG5hbWUpCi17Ci19Ci0K
LUhUTUxOYW1lQ29sbGVjdGlvbjo6fkhUTUxOYW1lQ29sbGVjdGlvbigpCi17Ci0gICAgQVNTRVJU
KHR5cGUoKSA9PSBXaW5kb3dOYW1lZEl0ZW1zIHx8IHR5cGUoKSA9PSBEb2N1bWVudE5hbWVkSXRl
bXMpOwotCi0gICAgZG9jdW1lbnQoKS5ub2RlTGlzdHMoKS0+cmVtb3ZlQ2FjaGVkQ29sbGVjdGlv
bih0aGlzLCBtX25hbWUpOwotfQotCiBib29sIFdpbmRvd05hbWVDb2xsZWN0aW9uOjplbGVtZW50
TWF0Y2hlc0lmTmFtZUF0dHJpYnV0ZU1hdGNoKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpCiB7CiAg
ICAgcmV0dXJuIGlzPEhUTUxJbWFnZUVsZW1lbnQ+KGVsZW1lbnQpIHx8IGlzPEhUTUxGb3JtRWxl
bWVudD4oZWxlbWVudCkgfHwgaXM8SFRNTEFwcGxldEVsZW1lbnQ+KGVsZW1lbnQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxOYW1lQ29sbGVjdGlvbi5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTmFtZUNvbGxlY3Rpb24uaAppbmRleCAzMjA3NDNkNWFhOWNmYmI4MjE4
NDU1OGQ4MjAxNzg5OGMwOGY3NzM3Li42MDQ2NmM4NWJiZDkzMmYxMzM5ZDI4NzgyNjlkODNmNDQw
MjRmYjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxOYW1lQ29sbGVjdGlv
bi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE5hbWVDb2xsZWN0aW9uLmgKQEAgLTIz
LDE4ICsyMywyMCBAQAogI2lmbmRlZiBIVE1MTmFtZUNvbGxlY3Rpb25faAogI2RlZmluZSBIVE1M
TmFtZUNvbGxlY3Rpb25faAogCi0jaW5jbHVkZSAiSFRNTENvbGxlY3Rpb24uaCIKKyNpbmNsdWRl
ICJDYWNoZWRIVE1MQ29sbGVjdGlvbi5oIgorI2luY2x1ZGUgIk5vZGVSYXJlRGF0YS5oIgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIERvY3VtZW50OwogCi1jbGFzcyBIVE1MTmFtZUNvbGxlY3Rpb24gOiBwdWJsaWMgSFRN
TENvbGxlY3Rpb24gewordGVtcGxhdGUgPHR5cGVuYW1lIEhUTUxDb2xsZWN0aW9uQ2xhc3MsIENv
bGxlY3Rpb25UcmF2ZXJzYWxUeXBlIHRyYXZlcnNhbFR5cGU+CitjbGFzcyBIVE1MTmFtZUNvbGxl
Y3Rpb24gOiBwdWJsaWMgQ2FjaGVkSFRNTENvbGxlY3Rpb248SFRNTENvbGxlY3Rpb25DbGFzcywg
dHJhdmVyc2FsVHlwZT4gewogcHVibGljOgogICAgIHZpcnR1YWwgfkhUTUxOYW1lQ29sbGVjdGlv
bigpOwogCi0gICAgRG9jdW1lbnQmIGRvY3VtZW50KCkgeyByZXR1cm4gZG93bmNhc3Q8RG9jdW1l
bnQ+KG93bmVyTm9kZSgpKTsgfQorICAgIERvY3VtZW50JiBkb2N1bWVudCgpIHsgcmV0dXJuIGRv
d25jYXN0PERvY3VtZW50Pih0aGlzLT5vd25lck5vZGUoKSk7IH0KIAogcHJvdGVjdGVkOgogICAg
IEhUTUxOYW1lQ29sbGVjdGlvbihEb2N1bWVudCYsIENvbGxlY3Rpb25UeXBlLCBjb25zdCBBdG9t
aWNTdHJpbmcmIG5hbWUpOwpAQCAtNDIsMTMgKzQ0LDI5IEBAIHByb3RlY3RlZDoKICAgICBBdG9t
aWNTdHJpbmcgbV9uYW1lOwogfTsKIAotY2xhc3MgV2luZG93TmFtZUNvbGxlY3Rpb24gZmluYWwg
OiBwdWJsaWMgSFRNTE5hbWVDb2xsZWN0aW9uIHsKK3RlbXBsYXRlIDx0eXBlbmFtZSBIVE1MQ29s
bGVjdGlvbkNsYXNzLCBDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZSB0cmF2ZXJzYWxUeXBlPgorSFRN
TE5hbWVDb2xsZWN0aW9uPEhUTUxDb2xsZWN0aW9uQ2xhc3MsIHRyYXZlcnNhbFR5cGU+OjpIVE1M
TmFtZUNvbGxlY3Rpb24oRG9jdW1lbnQmIGRvY3VtZW50LCBDb2xsZWN0aW9uVHlwZSB0eXBlLCBj
b25zdCBBdG9taWNTdHJpbmcmIG5hbWUpCisgICAgOiBDYWNoZWRIVE1MQ29sbGVjdGlvbjxIVE1M
Q29sbGVjdGlvbkNsYXNzLCB0cmF2ZXJzYWxUeXBlPihkb2N1bWVudCwgdHlwZSkKKyAgICAsIG1f
bmFtZShuYW1lKQoreworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgSFRNTENvbGxlY3Rpb25DbGFz
cywgQ29sbGVjdGlvblRyYXZlcnNhbFR5cGUgdHJhdmVyc2FsVHlwZT4KK0hUTUxOYW1lQ29sbGVj
dGlvbjxIVE1MQ29sbGVjdGlvbkNsYXNzLCB0cmF2ZXJzYWxUeXBlPjo6fkhUTUxOYW1lQ29sbGVj
dGlvbigpCit7CisgICAgQVNTRVJUKHRoaXMtPnR5cGUoKSA9PSBXaW5kb3dOYW1lZEl0ZW1zIHx8
IHRoaXMtPnR5cGUoKSA9PSBEb2N1bWVudE5hbWVkSXRlbXMpOworCisgICAgZG9jdW1lbnQoKS5u
b2RlTGlzdHMoKS0+cmVtb3ZlQ2FjaGVkQ29sbGVjdGlvbih0aGlzLCBtX25hbWUpOworfQorCitj
bGFzcyBXaW5kb3dOYW1lQ29sbGVjdGlvbiBmaW5hbCA6IHB1YmxpYyBIVE1MTmFtZUNvbGxlY3Rp
b248V2luZG93TmFtZUNvbGxlY3Rpb24sIENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlOjpEZXNjZW5k
YW50cz4gewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8V2luZG93TmFtZUNvbGxlY3Rpb24+IGNy
ZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIENvbGxlY3Rpb25UeXBlIHR5cGUsIGNvbnN0IEF0b21p
Y1N0cmluZyYgbmFtZSkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdpbmRv
d05hbWVDb2xsZWN0aW9uKGRvY3VtZW50LCB0eXBlLCBuYW1lKSk7CiAgICAgfQogCisgICAgLy8g
Rm9yIENhY2hlZEhUTUxDb2xsZWN0aW9uLgogICAgIGJvb2wgZWxlbWVudE1hdGNoZXMoY29uc3Qg
RWxlbWVudCYgZWxlbWVudCkgY29uc3QgeyByZXR1cm4gZWxlbWVudE1hdGNoZXMoZWxlbWVudCwg
bV9uYW1lLmltcGwoKSk7IH0KIAogICAgIHN0YXRpYyBib29sIGVsZW1lbnRNYXRjaGVzSWZJZEF0
dHJpYnV0ZU1hdGNoKGNvbnN0IEVsZW1lbnQmKSB7IHJldHVybiB0cnVlOyB9CkBAIC01NywxMyAr
NzUsMTMgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIFdpbmRvd05hbWVDb2xsZWN0aW9uKERv
Y3VtZW50JiBkb2N1bWVudCwgQ29sbGVjdGlvblR5cGUgdHlwZSwgY29uc3QgQXRvbWljU3RyaW5n
JiBuYW1lKQotICAgICAgICA6IEhUTUxOYW1lQ29sbGVjdGlvbihkb2N1bWVudCwgdHlwZSwgbmFt
ZSkKKyAgICAgICAgOiBIVE1MTmFtZUNvbGxlY3Rpb248V2luZG93TmFtZUNvbGxlY3Rpb24sIENv
bGxlY3Rpb25UcmF2ZXJzYWxUeXBlOjpEZXNjZW5kYW50cz4oZG9jdW1lbnQsIHR5cGUsIG5hbWUp
CiAgICAgewogICAgICAgICBBU1NFUlQodHlwZSA9PSBXaW5kb3dOYW1lZEl0ZW1zKTsKICAgICB9
CiB9OwogCi1jbGFzcyBEb2N1bWVudE5hbWVDb2xsZWN0aW9uIGZpbmFsIDogcHVibGljIEhUTUxO
YW1lQ29sbGVjdGlvbiB7CitjbGFzcyBEb2N1bWVudE5hbWVDb2xsZWN0aW9uIGZpbmFsIDogcHVi
bGljIEhUTUxOYW1lQ29sbGVjdGlvbjxEb2N1bWVudE5hbWVDb2xsZWN0aW9uLCBDb2xsZWN0aW9u
VHJhdmVyc2FsVHlwZTo6RGVzY2VuZGFudHM+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPERv
Y3VtZW50TmFtZUNvbGxlY3Rpb24+IGNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIENvbGxlY3Rp
b25UeXBlIHR5cGUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkKICAgICB7CkBAIC03MiwxMyAr
OTAsMTUgQEAgcHVibGljOgogCiAgICAgc3RhdGljIGJvb2wgZWxlbWVudE1hdGNoZXNJZklkQXR0
cmlidXRlTWF0Y2goY29uc3QgRWxlbWVudCYpOwogICAgIHN0YXRpYyBib29sIGVsZW1lbnRNYXRj
aGVzSWZOYW1lQXR0cmlidXRlTWF0Y2goY29uc3QgRWxlbWVudCYpOworCisgICAgLy8gRm9yIENh
Y2hlZEhUTUxDb2xsZWN0aW9uLgogICAgIGJvb2wgZWxlbWVudE1hdGNoZXMoY29uc3QgRWxlbWVu
dCYgZWxlbWVudCkgY29uc3QgeyByZXR1cm4gZWxlbWVudE1hdGNoZXMoZWxlbWVudCwgbV9uYW1l
LmltcGwoKSk7IH0KIAogICAgIHN0YXRpYyBib29sIGVsZW1lbnRNYXRjaGVzKGNvbnN0IEVsZW1l
bnQmLCBjb25zdCBBdG9taWNTdHJpbmdJbXBsKik7CiAKIHByaXZhdGU6CiAgICAgRG9jdW1lbnRO
YW1lQ29sbGVjdGlvbihEb2N1bWVudCYgZG9jdW1lbnQsIENvbGxlY3Rpb25UeXBlIHR5cGUsIGNv
bnN0IEF0b21pY1N0cmluZyYgbmFtZSkKLSAgICAgICAgOiBIVE1MTmFtZUNvbGxlY3Rpb24oZG9j
dW1lbnQsIHR5cGUsIG5hbWUpCisgICAgICAgIDogSFRNTE5hbWVDb2xsZWN0aW9uPERvY3VtZW50
TmFtZUNvbGxlY3Rpb24sIENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlOjpEZXNjZW5kYW50cz4oZG9j
dW1lbnQsIHR5cGUsIG5hbWUpCiAgICAgewogICAgICAgICBBU1NFUlQodHlwZSA9PSBEb2N1bWVu
dE5hbWVkSXRlbXMpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE9wdGlvbnNDb2xsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbnND
b2xsZWN0aW9uLmNwcAppbmRleCAxNTA4YjQxNWM0MmRhZWIxMDgwMWNkODljMjkxNDZkNzcwOTMx
MmU5Li5kOWFkYTA2YjM1YTA4Zjk0NjAwZjAxMTg1NDFhY2MzNmFjMjFjNGI3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25zQ29sbGVjdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uc0NvbGxlY3Rpb24uY3BwCkBAIC0yNyw3ICsyNyw3
IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEhUTUxPcHRpb25zQ29sbGVjdGlvbjo6SFRNTE9w
dGlvbnNDb2xsZWN0aW9uKEhUTUxTZWxlY3RFbGVtZW50JiBzZWxlY3QpCi0gICAgOiBIVE1MQ29s
bGVjdGlvbihzZWxlY3QsIFNlbGVjdE9wdGlvbnMpCisgICAgOiBDYWNoZWRIVE1MQ29sbGVjdGlv
bjxIVE1MT3B0aW9uc0NvbGxlY3Rpb24sIENvbGxlY3Rpb25UeXBlVHJhaXRzPFNlbGVjdE9wdGlv
bnM+Ojp0cmF2ZXJzYWxUeXBlPihzZWxlY3QsIFNlbGVjdE9wdGlvbnMpCiB7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25zQ29sbGVjdGlvbi5oCmluZGV4IDYzNjY4NjVlNTVj
MWMzYTY3Nzk0MTUzOWUzMzcxMTFkM2FmMzllMTYuLmM1ZmQxN2JmNzI2N2YyNWI3NDVkNDA0ODMw
Zjg3ODViNGJkMWJiZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlv
bnNDb2xsZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uc0NvbGxl
Y3Rpb24uaApAQCAtMjQsNyArMjQsNyBAQAogI2lmbmRlZiBIVE1MT3B0aW9uc0NvbGxlY3Rpb25f
aAogI2RlZmluZSBIVE1MT3B0aW9uc0NvbGxlY3Rpb25faAogCi0jaW5jbHVkZSAiSFRNTENvbGxl
Y3Rpb24uaCIKKyNpbmNsdWRlICJDYWNoZWRIVE1MQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkhU
TUxTZWxlY3RFbGVtZW50LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTMzLDcgKzMzLDcg
QEAgY2xhc3MgSFRNTE9wdGlvbkVsZW1lbnQ7CiAKIHR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7
CiAKLWNsYXNzIEhUTUxPcHRpb25zQ29sbGVjdGlvbiBmaW5hbCA6IHB1YmxpYyBIVE1MQ29sbGVj
dGlvbiB7CitjbGFzcyBIVE1MT3B0aW9uc0NvbGxlY3Rpb24gZmluYWwgOiBwdWJsaWMgQ2FjaGVk
SFRNTENvbGxlY3Rpb248SFRNTE9wdGlvbnNDb2xsZWN0aW9uLCBDb2xsZWN0aW9uVHlwZVRyYWl0
czxTZWxlY3RPcHRpb25zPjo6dHJhdmVyc2FsVHlwZT4gewogcHVibGljOgogICAgIHN0YXRpYyBS
ZWY8SFRNTE9wdGlvbnNDb2xsZWN0aW9uPiBjcmVhdGUoSFRNTFNlbGVjdEVsZW1lbnQmLCBDb2xs
ZWN0aW9uVHlwZSk7CiAKQEAgLTUwLDEwICs1MCwxOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNl
dExlbmd0aCh1bnNpZ25lZCwgRXhjZXB0aW9uQ29kZSYpOwogCisgICAgLy8gRm9yIENhY2hlZEhU
TUxDb2xsZWN0aW9uLgorICAgIGJvb2wgZWxlbWVudE1hdGNoZXMoRWxlbWVudCYpIGNvbnN0Owor
CiBwcml2YXRlOgogICAgIGV4cGxpY2l0IEhUTUxPcHRpb25zQ29sbGVjdGlvbihIVE1MU2VsZWN0
RWxlbWVudCYpOwogfTsKIAoraW5saW5lIGJvb2wgSFRNTE9wdGlvbnNDb2xsZWN0aW9uOjplbGVt
ZW50TWF0Y2hlcyhFbGVtZW50JiBlbGVtZW50KSBjb25zdAoreworICAgIHJldHVybiBlbGVtZW50
Lmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpvcHRpb25UYWcpOworfQorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfSFRNTENPTExFQ1RJT04oSFRNTE9wdGlv
bnNDb2xsZWN0aW9uLCBTZWxlY3RPcHRpb25zKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxl
Y3RFbGVtZW50LmNwcAppbmRleCBkNTA1ZjNmMTBhMGM0ODUyNDQ1OGI5NDU0ZDRlZWJkNGM5NTdk
NzcwLi5jOGI0MjYzMjMzOTcwNDZkOGI0ZTM5MTJiZWY3ZjQzOTllNTAzYzgyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcApAQCAtMzgsNiArMzgsNyBAQAogI2lu
Y2x1ZGUgIkZvcm1Db250cm9sbGVyLmgiCiAjaW5jbHVkZSAiRm9ybURhdGFMaXN0LmgiCiAjaW5j
bHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJHZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb24uaCIK
ICNpbmNsdWRlICJIVE1MRm9ybUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNp
bmNsdWRlICJIVE1MT3B0R3JvdXBFbGVtZW50LmgiCkBAIC00Niw2ICs0Nyw3IEBACiAjaW5jbHVk
ZSAiS2V5Ym9hcmRFdmVudC5oIgogI2luY2x1ZGUgIkxvY2FsaXplZFN0cmluZ3MuaCIKICNpbmNs
dWRlICJNb3VzZUV2ZW50LmgiCisjaW5jbHVkZSAiTm9kZVJhcmVEYXRhLmgiCiAjaW5jbHVkZSAi
UGFnZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtTW91c2VFdmVudC5oIgogI2luY2x1ZGUgIlJlbmRl
ckxpc3RCb3guaCIKQEAgLTM3NCwxMiArMzc2LDEyIEBAIGJvb2wgSFRNTFNlbGVjdEVsZW1lbnQ6
OmNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoY29uc3QgTm9kZSYgY2hpbGQpIGNvbnN0CiAKIFJl
ZjxIVE1MQ29sbGVjdGlvbj4gSFRNTFNlbGVjdEVsZW1lbnQ6OnNlbGVjdGVkT3B0aW9ucygpCiB7
Ci0gICAgcmV0dXJuIGVuc3VyZUNhY2hlZEhUTUxDb2xsZWN0aW9uKFNlbGVjdGVkT3B0aW9ucyk7
CisgICAgcmV0dXJuIGVuc3VyZVJhcmVEYXRhKCkuZW5zdXJlTm9kZUxpc3RzKCkuYWRkQ2FjaGVk
Q29sbGVjdGlvbjxHZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb248Q29sbGVjdGlvblR5cGVUcmFp
dHM8U2VsZWN0ZWRPcHRpb25zPjo6dHJhdmVyc2FsVHlwZT4+KCp0aGlzLCBTZWxlY3RlZE9wdGlv
bnMpOwogfQogCiBSZWY8SFRNTE9wdGlvbnNDb2xsZWN0aW9uPiBIVE1MU2VsZWN0RWxlbWVudDo6
b3B0aW9ucygpCiB7Ci0gICAgcmV0dXJuIGRvd25jYXN0PEhUTUxPcHRpb25zQ29sbGVjdGlvbj4o
ZW5zdXJlQ2FjaGVkSFRNTENvbGxlY3Rpb24oU2VsZWN0T3B0aW9ucykuZ2V0KCkpOworICAgIHJl
dHVybiBlbnN1cmVSYXJlRGF0YSgpLmVuc3VyZU5vZGVMaXN0cygpLmFkZENhY2hlZENvbGxlY3Rp
b248SFRNTE9wdGlvbnNDb2xsZWN0aW9uPigqdGhpcywgU2VsZWN0T3B0aW9ucyk7CiB9CiAKIHZv
aWQgSFRNTFNlbGVjdEVsZW1lbnQ6OnVwZGF0ZUxpc3RJdGVtU2VsZWN0ZWRTdGF0ZXMoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVudC5jcHAKaW5kZXggNzQ1NzM2MWI2ZTEyNWVh
ZWY5NjVhZjU0NTMzYmYzM2Y2ODQ2ZWFhNy4uMDI4MDg2YTYxOGRmNmIzNGVlMzQ0YWYxZDAzN2E0
MDc0ZTY2NDg1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuY3BwCkBA
IC0zMSwxMiArMzEsMTQgQEAKICNpbmNsdWRlICJDU1NWYWx1ZVBvb2wuaCIKICNpbmNsdWRlICJF
eGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZVBsYWNlaG9sZGVyLmgiCisj
aW5jbHVkZSAiR2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiSFRNTE5h
bWVzLmgiCiAjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgogI2luY2x1ZGUgIkhUTUxUYWJs
ZUNhcHRpb25FbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFRhYmxlUm93RWxlbWVudC5oIgogI2lu
Y2x1ZGUgIkhUTUxUYWJsZVJvd3NDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiSFRNTFRhYmxlU2Vj
dGlvbkVsZW1lbnQuaCIKKyNpbmNsdWRlICJOb2RlUmFyZURhdGEuaCIKICNpbmNsdWRlICJSZW5k
ZXJUYWJsZS5oIgogI2luY2x1ZGUgIlN0eWxlUHJvcGVydGllcy5oIgogI2luY2x1ZGUgPHd0Zi9S
ZWYuaD4KQEAgLTU1MSwxMiArNTUzLDEyIEBAIGJvb2wgSFRNTFRhYmxlRWxlbWVudDo6aXNVUkxB
dHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJiBhdHRyaWJ1dGUpIGNvbnN0CiAKIFJlZjxIVE1MQ29s
bGVjdGlvbj4gSFRNTFRhYmxlRWxlbWVudDo6cm93cygpCiB7Ci0gICAgcmV0dXJuIGVuc3VyZUNh
Y2hlZEhUTUxDb2xsZWN0aW9uKFRhYmxlUm93cyk7CisgICAgcmV0dXJuIGVuc3VyZVJhcmVEYXRh
KCkuZW5zdXJlTm9kZUxpc3RzKCkuYWRkQ2FjaGVkQ29sbGVjdGlvbjxIVE1MVGFibGVSb3dzQ29s
bGVjdGlvbj4oKnRoaXMsIFRhYmxlUm93cyk7CiB9CiAKIFJlZjxIVE1MQ29sbGVjdGlvbj4gSFRN
TFRhYmxlRWxlbWVudDo6dEJvZGllcygpCiB7Ci0gICAgcmV0dXJuIGVuc3VyZUNhY2hlZEhUTUxD
b2xsZWN0aW9uKFRhYmxlVEJvZGllcyk7CisgICAgcmV0dXJuIGVuc3VyZVJhcmVEYXRhKCkuZW5z
dXJlTm9kZUxpc3RzKCkuYWRkQ2FjaGVkQ29sbGVjdGlvbjxHZW5lcmljQ2FjaGVkSFRNTENvbGxl
Y3Rpb248Q29sbGVjdGlvblR5cGVUcmFpdHM8VGFibGVUQm9kaWVzPjo6dHJhdmVyc2FsVHlwZT4+
KCp0aGlzLCBUYWJsZVRCb2RpZXMpOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIEhUTUxUYWJs
ZUVsZW1lbnQ6OnJ1bGVzKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFRhYmxlUm93RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVJv
d0VsZW1lbnQuY3BwCmluZGV4IGQ0MzUxZWFmY2E1ZTZmNzU1MjZiOTdhMzA0YmE2N2FmYTY4MDdl
YTguLmM4NzI1OWY1ZWNiOTZkMGFhNjA0OGQ0ZDE0YWU4YjYwZjkzYjY4YjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlUm93RWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MVGFibGVSb3dFbGVtZW50LmNwcApAQCAtMjYsMTIgKzI2LDEzIEBA
CiAjaW5jbHVkZSAiSFRNTFRhYmxlUm93RWxlbWVudC5oIgogCiAjaW5jbHVkZSAiRXhjZXB0aW9u
Q29kZS5oIgotI2luY2x1ZGUgIkhUTUxDb2xsZWN0aW9uLmgiCisjaW5jbHVkZSAiR2VuZXJpY0Nh
Y2hlZEhUTUxDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAi
SFRNTFRhYmxlQ2VsbEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MVGFibGVFbGVtZW50LmgiCiAj
aW5jbHVkZSAiSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQuaCIKICNpbmNsdWRlICJOb2RlTGlzdC5o
IgorI2luY2x1ZGUgIk5vZGVSYXJlRGF0YS5oIgogI2luY2x1ZGUgIlRleHQuaCIKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpAQCAtMTU2LDcgKzE1Nyw3IEBAIHZvaWQgSFRNTFRhYmxlUm93RWxlbWVu
dDo6ZGVsZXRlQ2VsbChpbnQgaW5kZXgsIEV4Y2VwdGlvbkNvZGUmIGVjKQogCiBSZWY8SFRNTENv
bGxlY3Rpb24+IEhUTUxUYWJsZVJvd0VsZW1lbnQ6OmNlbGxzKCkKIHsKLSAgICByZXR1cm4gZW5z
dXJlQ2FjaGVkSFRNTENvbGxlY3Rpb24oVFJDZWxscyk7CisgICAgcmV0dXJuIGVuc3VyZVJhcmVE
YXRhKCkuZW5zdXJlTm9kZUxpc3RzKCkuYWRkQ2FjaGVkQ29sbGVjdGlvbjxHZW5lcmljQ2FjaGVk
SFRNTENvbGxlY3Rpb248Q29sbGVjdGlvblR5cGVUcmFpdHM8VFJDZWxscz46OnRyYXZlcnNhbFR5
cGU+PigqdGhpcywgVFJDZWxscyk7CiB9CiAKIHZvaWQgSFRNTFRhYmxlUm93RWxlbWVudDo6c2V0
Q2VsbHMoSFRNTENvbGxlY3Rpb24qLCBFeGNlcHRpb25Db2RlJiBlYykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlUm93c0NvbGxlY3Rpb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MVGFibGVSb3dzQ29sbGVjdGlvbi5jcHAKaW5kZXggYmZhNWY2ZDc4ZDBm
YmNhNzNiODNlYmUzYTJlMDFjMmE0MTM2MGEyNS4uMmQ5MWQ5ZDQ4Zjc4Nzg2N2Y3NzhlODBjNjky
NTBlZTM2ZDZlMGRhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVS
b3dzQ29sbGVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVSb3dz
Q29sbGVjdGlvbi5jcHAKQEAgLTE0OSw3ICsxNDksNyBAQCBIVE1MVGFibGVSb3dFbGVtZW50KiBI
VE1MVGFibGVSb3dzQ29sbGVjdGlvbjo6bGFzdFJvdyhIVE1MVGFibGVFbGVtZW50JiB0YWJsZSkK
IH0KIAogSFRNTFRhYmxlUm93c0NvbGxlY3Rpb246OkhUTUxUYWJsZVJvd3NDb2xsZWN0aW9uKEhU
TUxUYWJsZUVsZW1lbnQmIHRhYmxlKQotICAgIDogSFRNTENvbGxlY3Rpb24odGFibGUsIFRhYmxl
Um93cywgQ3VzdG9tRm9yd2FyZE9ubHlUcmF2ZXJzYWwpCisgICAgOiBDYWNoZWRIVE1MQ29sbGVj
dGlvbjxIVE1MVGFibGVSb3dzQ29sbGVjdGlvbiwgQ29sbGVjdGlvblR5cGVUcmFpdHM8VGFibGVS
b3dzPjo6dHJhdmVyc2FsVHlwZT4odGFibGUsIFRhYmxlUm93cykKIHsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVSb3dzQ29sbGVjdGlvbi5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MVGFibGVSb3dzQ29sbGVjdGlvbi5oCmluZGV4IDllYjVmYTZhN2Ey
OTgxNGYyM2UxNGUzN2FhOTk1MzZkZGVkYWY5NDQuLmJmMDdhMzI5ZjU4MTU1OTQxNmY0MmRiZDY3
YzEyMDg2YzVlMTIxNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxl
Um93c0NvbGxlY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVJvd3ND
b2xsZWN0aW9uLmgKQEAgLTI5LDE0ICsyOSwxNCBAQAogI2lmbmRlZiBIVE1MVGFibGVSb3dzQ29s
bGVjdGlvbl9oCiAjZGVmaW5lIEhUTUxUYWJsZVJvd3NDb2xsZWN0aW9uX2gKIAotI2luY2x1ZGUg
IkhUTUxDb2xsZWN0aW9uLmgiCisjaW5jbHVkZSAiQ2FjaGVkSFRNTENvbGxlY3Rpb24uaCIKICNp
bmNsdWRlICJIVE1MVGFibGVFbGVtZW50LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgSFRNTFRhYmxlUm93RWxlbWVudDsKIAotY2xhc3MgSFRNTFRhYmxlUm93c0NvbGxlY3Rpb24g
ZmluYWwgOiBwdWJsaWMgSFRNTENvbGxlY3Rpb24geworY2xhc3MgSFRNTFRhYmxlUm93c0NvbGxl
Y3Rpb24gZmluYWwgOiBwdWJsaWMgQ2FjaGVkSFRNTENvbGxlY3Rpb248SFRNTFRhYmxlUm93c0Nv
bGxlY3Rpb24sIENvbGxlY3Rpb25UeXBlVHJhaXRzPFRhYmxlUm93cz46OnRyYXZlcnNhbFR5cGU+
IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPEhUTUxUYWJsZVJvd3NDb2xsZWN0aW9uPiBjcmVh
dGUoSFRNTFRhYmxlRWxlbWVudCYsIENvbGxlY3Rpb25UeXBlKTsKIApAQCAtNDYsMTAgKzQ2LDEx
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSFRNTFRhYmxlUm93RWxlbWVudCogcm93QWZ0ZXIoSFRN
TFRhYmxlRWxlbWVudCYsIEhUTUxUYWJsZVJvd0VsZW1lbnQqKTsKICAgICBzdGF0aWMgSFRNTFRh
YmxlUm93RWxlbWVudCogbGFzdFJvdyhIVE1MVGFibGVFbGVtZW50Jik7CiAKKyAgICAvLyBGb3Ig
Q2FjaGVkSFRNTENvbGxlY3Rpb24uCisgICAgRWxlbWVudCogY3VzdG9tRWxlbWVudEFmdGVyKEVs
ZW1lbnQqKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBleHBsaWNpdCBIVE1MVGFibGVSb3dzQ29s
bGVjdGlvbihIVE1MVGFibGVFbGVtZW50Jik7Ci0KLSAgICB2aXJ0dWFsIEVsZW1lbnQqIGN1c3Rv
bUVsZW1lbnRBZnRlcihFbGVtZW50KikgY29uc3Qgb3ZlcnJpZGU7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVNl
Y3Rpb25FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlU2VjdGlvbkVs
ZW1lbnQuY3BwCmluZGV4IGY3NTcxN2U1OTgyOTJiNzRlZDQyMjc1OGM0ODA2ZGM1YzAwN2JiZGUu
LjllNDUzMTZmOGYzZjRmYzZkYThlM2RjZGIxYjNlNGUyZGQ5MjdkODYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQuY3BwCkBAIC0yNiwxMSArMjYs
MTMgQEAKICNpbmNsdWRlICJIVE1MVGFibGVTZWN0aW9uRWxlbWVudC5oIgogCiAjaW5jbHVkZSAi
RXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgIkdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbi5o
IgogI2luY2x1ZGUgIkhUTUxDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAj
aW5jbHVkZSAiSFRNTFRhYmxlUm93RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxUYWJsZUVsZW1l
bnQuaCIKICNpbmNsdWRlICJOb2RlTGlzdC5oIgorI2luY2x1ZGUgIk5vZGVSYXJlRGF0YS5oIgog
I2luY2x1ZGUgIlRleHQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTQ3LDcgKzE0OSw3
IEBAIHZvaWQgSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQ6OnNldFZBbGlnbihjb25zdCBBdG9taWNT
dHJpbmcmIHZhbHVlKQogCiBSZWY8SFRNTENvbGxlY3Rpb24+IEhUTUxUYWJsZVNlY3Rpb25FbGVt
ZW50Ojpyb3dzKCkKIHsKLSAgICByZXR1cm4gZW5zdXJlQ2FjaGVkSFRNTENvbGxlY3Rpb24oVFNl
Y3Rpb25Sb3dzKTsKKyAgICByZXR1cm4gZW5zdXJlUmFyZURhdGEoKS5lbnN1cmVOb2RlTGlzdHMo
KS5hZGRDYWNoZWRDb2xsZWN0aW9uPEdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbjxDb2xsZWN0
aW9uVHlwZVRyYWl0czxUU2VjdGlvblJvd3M+Ojp0cmF2ZXJzYWxUeXBlPj4oKnRoaXMsIFRTZWN0
aW9uUm93cyk7CiB9CiAKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>259082</attachid>
            <date>2015-08-14 21:37:01 -0700</date>
            <delta_ts>2015-08-16 10:57:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-147979-20150814213642.patch</filename>
            <type>text/plain</type>
            <size>108980</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg4NTA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmY3ZjczYTJkODBkMjdh
YjhiNjQzYjM4MGI2OTU3YzU0MWQ5MGQ5OS4uMWZkODRmYzYwZDE5Nzc0NjliYTMzOGZlZmQzNzIy
OGQ0ZTkzY2Y4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4MCBAQAorMjAxNS0wOC0xMyAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFJlZmFjdG9yIEhUTUxDb2xs
ZWN0aW9uIHRvIGJlIGFzIGZhc3QgYXMgQ2FjaGVkTGl2ZU5vZGVMaXN0CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDc5NzkKKworICAgICAgICBSZXZp
ZXdlZCBieSBSeW9zdWtlIE5pd2EuCisKKyAgICAgICAgUmVmYWN0b3IgSFRNTENvbGxlY3Rpb24g
dG8gYmUgYXMgZmFzdCBhcyBDYWNoZWRMaXZlTm9kZUxpc3QuIFRoaXMgaXMgaW4KKyAgICAgICAg
cHJlcGFyYXRpb24gb2YgaGF2aW5nIGdldEVsZW1lbnRzQnlUYWdOYW1lKigpIC8gZ2V0RWxlbWVu
dHNCeUNsYXNzTmFtZSgpCisgICAgICAgIHJldHVybiBhbiBIVE1MQ29sbGVjdGlvbiBpbnN0ZWFk
IG9mIGEgTm9kZUxpc3QsIGFzIHBlciB0aGUKKyAgICAgICAgc3BlY2lmaWNhdGlvbi4gQ2hyb21l
IGFuZCBGaXJlZm94IGFscmVhZHkgbWF0Y2ggdGhlIHNwZWNpZmljYXRpb24gaW4KKyAgICAgICAg
dGhpcyBjYXNlLgorCisgICAgICAgIFRyYXZlcnNpbmcgYW4gSFRNTENvbGxlY3Rpb24gd2FzIHNs
b3cgYmVjYXVzZSBvZiBhbGwgdGhlIGV4dHJhCisgICAgICAgIGJyYW5jaGluZyBpdCBoYWQgY29t
cGFyZWQgdG8gQ2FjaGVkTGl2ZU5vZGVMaXN0LiBUbyBhZGRyZXNzIHRoZSBpc3N1ZSwKKyAgICAg
ICAgdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IHRlbXBsYXRlZCBDYWNoZWRIVE1MQ29sbGVj
dGlvbiBzdWJjbGFzcywKKyAgICAgICAgd2hpY2ggYmVoYXZlcyBpbiBhIHNpbWlsYXIgd2F5IGFz
IENhY2hlZExpdmVOb2RlTGlzdC4gVGhlIDIgdGVtcGxhdGUKKyAgICAgICAgcGFyYW1ldGVycyBh
cmU6CisgICAgICAgIDEuIFRoZSB0eXBlIG9mIHRoZSBzdWJjbGFzcyBvZiBDYWNoZWRIVE1MQ29s
bGVjdGlvbiwgc28gd2UgY2FuIGNhbGwKKyAgICAgICAgICAgZWxlbWVudE1hdGNoZXMoKSBkaXJl
Y3RseSBvbiB0aGUgc3ViY2xhc3MsIHdpdGhvdXQgbmVlZGVkIGFueQorICAgICAgICAgICB2aXJ0
dWFsIGZ1bmN0aW9uIGNhbGwgb3Igc3dpdGNoIHN0YXRlbWVudC4gVGhpcyBpcyB0aGUgc2FtZSBh
cHByb2FjaAorICAgICAgICAgICBhcyBpbiBDYWNoZWRMaXZlTm9kZUxpc3QuCisgICAgICAgIDIu
IFRoZSB0eXBlIG9mIHRyZWUgdHJhdmVyc2FsIHVzZWQgKERlc2NlbmRhbnRzLCBDaGlsZHJlbk9u
bHksCisgICAgICAgICAgIEN1c3RvbUZvcndhcmRPbmx5KS4gVW5saWtlIExpdmVOb2RlTGlzdCwg
SFRNTENvbGxlY3Rpb24gbmVlZHMgdG8KKyAgICAgICAgICAgc3VwcG9ydCB0aGVzZSAzIHR5cGVz
IG9mIHRyZWUgdHJhdmVyc2FsLiBUaGVzZSB3ZXJlIGNhdXNpbmcgZXh0cmEKKyAgICAgICAgICAg
YnJhbmNoaW5nIGZvciBldmVyeSBpdGVtKCkgY2FsbC4gV2UgYXJlIG5vdyBhYmxlIHRvIGNob29z
ZSB0aGUgcmlnaHQKKyAgICAgICAgICAgdHlwZSBvZiB0cmF2ZXJzYWwgZm9yIHRoZSBDYWNoZWRI
VE1MQ29sbGVjdGlvbiBhdCBjb21waWxlIHRpbWUuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgIEFkZCBuZXcgZmlsZXMgdG8gdGhlIFByb2pl
Y3QuCisKKyAgICAgICAgKiBkb20vQ29udGFpbmVyTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDb250YWluZXJOb2RlOjpjaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpDb250YWluZXJO
b2RlOjpjYWNoZWRIVE1MQ29sbGVjdGlvbik6IERlbGV0ZWQuCisgICAgICAgICogZG9tL0NvbnRh
aW5lck5vZGUuaDoKKyAgICAgICAgRHJvcCBDb250YWluZXJOb2RlOjplbnN1cmVDYWNoZWRIVE1M
Q29sbGVjdGlvbigpIGFuZCB1c2UKKyAgICAgICAgTm9kZUxpc3RzTm9kZURhdGE6OmFkZENhY2hl
ZENvbGxlY3Rpb24oKSBkaXJlY3RseSBhdCBjYWxsIHNpdGVzCisgICAgICAgIGluc3RlYWQuIFdl
IG5lZWQgYWNjZXNzIHRvIHRoZSBDb2xsZWN0aW9uVHlwZSBhdCBidWlsZC10aW1lIHNvCisgICAg
ICAgIHdlIGNhbiByZXNvbHZlIHRoZSBDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZSBwYXJhbWV0ZXIg
Zm9yIHRoZQorICAgICAgICBHZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb24gdXNpbmcgQ29sbGVj
dGlvblR5cGVUcmFpdHMuCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAq
IGRvbS9Eb2N1bWVudC5oOgorICAgICAgICBVcGRhdGUgZW5zdXJlQ2FjaGVkQ29sbGVjdGlvbigp
IHNvIHRoZSBDb2xsZWN0aW9uVHlwZSBpcyBub3cgYSB0ZW1wbGF0ZQorICAgICAgICBwYXJhbWV0
ZXIgaW5zdGVhZCBvZiBhIG1ldGhvZCBhcmd1bWVudC4gV2UgbmVlZCB0byBrbm93IHRoZQorICAg
ICAgICBDb2xsZWN0aW9uVHlwZSBhdCBidWlsZCB0aW1lIHRvIGNvbnN0cnVjdCB0aGUgR2VuZXJp
Y0NhY2hlZEhUTUxDb2xsZWN0aW9uLgorCisgICAgICAgICogZG9tL0VsZW1lbnRDaGlsZEl0ZXJh
dG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50VHlw
ZT46Om9wZXJhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRDaGlsZENvbnN0SXRlcmF0
b3I8RWxlbWVudFR5cGU+OjpvcGVyYXRvcik6CisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBkZWNy
ZW1lbnRpbmcgYW4gRWxlbWVudENoaWxkSXRlcmF0b3IsIGZvciBjb25zaXN0ZW5jeQorICAgICAg
ICB3aXRoIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IuIFdlIG5lZWQgdGhpcyB0byBzdXBwb3J0
IGJhY2t3YXJkCisgICAgICAgIHRyYXZlcnNhbCBpbiBDYWNoZWRIVE1MQ29sbGVjdGlvbnMgdGhh
dCB1c2UgdGhlICdDaGlsZHJlbk9ubHknIHR5cGUKKyAgICAgICAgb2YgdHJhdmVyc2FsLgorCisg
ICAgICAgICogZG9tL0xpdmVOb2RlTGlzdC5oOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkTGl2
ZU5vZGVMaXN0PE5vZGVMaXN0VHlwZT46OmNvbGxlY3Rpb25CZWdpbik6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZWRMaXZlTm9kZUxpc3Q8Tm9kZUxpc3RUeXBlPjo6Y29sbGVjdGlvbkxhc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkTGl2ZU5vZGVMaXN0PE5vZGVMaXN0VHlwZT46OmNvbGxl
Y3Rpb25UcmF2ZXJzZUZvcndhcmQpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkTGl2ZU5vZGVM
aXN0PE5vZGVMaXN0VHlwZT46OmNvbGxlY3Rpb25UcmF2ZXJzZUJhY2t3YXJkKToKKyAgICAgICAg
TW92ZSB0cmF2ZXJzYWwgaW1wbGVtZW50YXRpb24gdG8gQ29sbGVjdGlvblRyYXZlcnNhbC5oLCBz
byBpdCBjYW4gYmUKKyAgICAgICAgc2hhcmVkIHdpdGggYWNoZWRIVE1MQ29sbGVjdGlvbi5oLgor
CisgICAgICAgICogaHRtbC9DYWNoZWRIVE1MQ29sbGVjdGlvbi5oOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OnRyYXZlcnNhbFR5cGU+OjpDYWNoZWRIVE1MQ29sbGVjdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjp0cmF2ZXJzYWxUeXBlPjo6fkNhY2hlZEhUTUxDb2xsZWN0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OnRyYXZlcnNhbFR5cGU+OjpDYWNoZWRIVE1MQ29sbGVjdGlvbjo6bWVtb3J5
Q29zdCk6CisgICAgICAgIChXZWJDb3JlOjp0cmF2ZXJzYWxUeXBlPjo6Y29sbGVjdGlvbkNhblRy
YXZlcnNlQmFja3dhcmQpOgorICAgICAgICAoV2ViQ29yZTo6dHJhdmVyc2FsVHlwZT46OmNvbGxl
Y3Rpb25UcmF2ZXJzZUZvcndhcmQpOgorICAgICAgICAoV2ViQ29yZTo6dHJhdmVyc2FsVHlwZT46
OmNvbGxlY3Rpb25UcmF2ZXJzZUJhY2t3YXJkKToKKyAgICAgICAgKFdlYkNvcmU6OnRyYXZlcnNh
bFR5cGU+Ojp3aWxsVmFsaWRhdGVJbmRleENhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6OnRyYXZl
cnNhbFR5cGU+OjpsZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6dHJhdmVyc2FsVHlwZT46Oml0
ZW0pOgorICAgICAgICAoV2ViQ29yZTo6dHJhdmVyc2FsVHlwZT46OmludmFsaWRhdGVDYWNoZSk6
CisgICAgICAgIChXZWJDb3JlOjp0cmF2ZXJzYWxUeXBlPjo6ZWxlbWVudE1hdGNoZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6bmFtZVNob3VsZEJlVmlzaWJsZUluRG9jdW1lbnRBbGwpOgorICAgICAg
ICAoV2ViQ29yZTo6dHJhdmVyc2FsVHlwZT46Om5hbWVkSXRlbSk6CisKKyAgICAgICAgKiBodG1s
L0NvbGxlY3Rpb25UcmF2ZXJzYWwuaDogQWRkZWQuCisgICAgICAgIEFkZCBuZXcgdGVtcGxhdGUg
Y2xhc3MgdGhhdCBwcm92aWRlIHRoZSBjb2xsZWN0aW9uIHRyYXZlcnNhbCBjb2RlCisgICAgICAg
IG5lZWRlZCBieSBDb2xsZWN0aW9uSW5kZXhDYWNoZS4gSXQgaGFzIHRlbXBsYXRlIHNwZWNpYWxp
emF0aW9ucyBmb3IKKyAgICAgICAgYWxsIDMgdHlwZXMgb2YgdHJhdmVyc2FsOiBEZXNjZW5kYW50
cywgQ2hpbGRyZW5Pbmx5LCBhbmQKKyAgICAgICAgQ3VzdG9tRm9yd2FyZE9ubHkuCisKKyAgICAg
ICAgKiBodG1sL0NvbGxlY3Rpb25UeXBlLmg6CisgICAgICAgIEFkZCBDb2xsZWN0aW9uVHlwZVRy
YWl0cyB0cmFpdHMgc28gd2UgY2FuIHJlc29sdmUgdGhlCisgICAgICAgIENvbGxlY3Rpb25UcmF2
ZXJzYWxUeXBlIHVzZWQgYnkgYSBzcGVjaWZpYyBDb2xsZWN0aW9uVHlwZSBhdAorICAgICAgICBj
b21waWxlLXRpbWUuIFRoaXMgaXMgbmVlZGVkIGZvciB0aGUgc2Vjb25kIHRlbXBsYXRlIHBhcmFt
ZXRlciBvZgorICAgICAgICBDYWNoZWRIVE1MQ29sbGVjdGlvbi4KKworICAgICAgICAqIGh0bWwv
R2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
OjpHZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb248dHJhdmVyc2FsVHlwZT46OmVsZW1lbnRNYXRj
aGVzKToKKyAgICAgICAgKiBodG1sL0dlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbi5oOiBBZGRl
ZC4KKyAgICAgICAgQWRkIENhY2hlZEhUTUxDb2xsZWN0aW9uIHN1YmNsYXNzIGlzIHRoZSBnZW5l
cmljIG9uZSB1c2VkIGZvciBhbGwKKyAgICAgICAgQ29sbGVjdGlvblR5cGVzIHRoYXQgZG8gbm90
IGhhdmUgdGhlaXIgb3duIHN1YmNsYXNzIChlLmcuIE5vZGVDaGlsZHJlbikuCisgICAgICAgIFRo
aXMgaGFzIGFuIGVsZW1lbnRNYXRjaGVzKCkgbWV0aG9kIHdpdGggYSBzd2l0Y2goKSBzdGF0ZW1l
bnQgaGFuZGxpbmcKKyAgICAgICAgYWxsIHRoZXNlIENvbGxlY3Rpb25UeXBlcy4gVGhvc2UgYXJl
IG5vdCBub3JtYWxseSBub3QgcGVyZm9ybWFuY2UKKyAgICAgICAgc2Vuc2l0aXZlLgorCisgICAg
ICAgICogaHRtbC9IVE1MQWxsQ29sbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
QWxsQ29sbGVjdGlvbjo6SFRNTEFsbENvbGxlY3Rpb24pOgorICAgICAgICAqIGh0bWwvSFRNTEFs
bENvbGxlY3Rpb24uaDoKKyAgICAgICAgU3ViY2xhc3MgQ2FjaGVkSFRNTENvbGxlY3Rpb24gaW5z
dGVhZCBvZiBIVE1MQ29sbGVjdGlvbi4gQWxzbyBwcm92aWRlCisgICAgICAgIGFuIGVsZW1lbnRN
YXRjaGVzKCkgbWV0aG9kIHRoYXQgc2ltcGx5IHJldHVybnMgdHJ1ZSBhcyB3ZSB3YW50IHRvCisg
ICAgICAgIG1hdGNoIGFsbCBlbGVtZW50cy4KKworICAgICAgICAqIGh0bWwvSFRNTENvbGxlY3Rp
b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENvbGxlY3Rpb246OkhUTUxDb2xsZWN0aW9u
KToKKyAgICAgICAgTW92ZSBDb2xsZWN0aW9uSW5kZXhDYWNoZSBtZW1iZXIgdG8gdGhlIHN1YmNs
YXNzIGFuZCBkcm9wIHRoZSAyIG90aGVyCisgICAgICAgIG1lbWJlcnMgYXMgdGhleSBhcmUgcmVw
bGFjZWQgd2l0aCB0aGUgQ29sbGVjdGlvblRyYXZlcnNhbFR5cGUgdGVtcGxhdGUKKyAgICAgICAg
cGFyYW1ldGVyIG9mIENhY2hlZEhUTUxDb2xsZWN0aW9uLgorCisgICAgICAgIChXZWJDb3JlOjpI
VE1MQ29sbGVjdGlvbjo6fkhUTUxDb2xsZWN0aW9uKToKKyAgICAgICAgTW92ZSBEb2N1bWVudDo6
dW5yZWdpc3RlckNvbGxlY3Rpb24oKSBjYWxsIHRvIH5DYWNoZWRIVE1MQ29sbGVjdGlvbigpCisg
ICAgICAgIGFzIHdlIG5lZWRlZCB0byBjaGVjayBpZiB0aGUgQ29sbGVjdGlvbkluZGV4Q2FjaGUg
d2FzIHZhbGlkIGZpcnN0LgorCisgICAgICAgIChXZWJDb3JlOjpIVE1MQ29sbGVjdGlvbjo6dXBk
YXRlTmFtZWRFbGVtZW50Q2FjaGUpOgorICAgICAgICBNb3ZlIHBhcnQgb2YgdGhlIGltcGxlbWVu
dGF0aW9uIHRvIHRoZSBDYWNoZWRIVE1MQ29sbGVjdGlvbiBzdWJjbGFzcworICAgICAgICBhcyBp
dCBuZWVkcyB0byBrbm93IGFib3V0IHRoZSB0eXBlIG9mIHRyYXZlcnNhbCBhbmQgaXQgbmVlZHMg
dG8gYmUKKyAgICAgICAgYWJsZSB0byBjYWxsIGVsZW1lbnRNYXRjaGVzKCkuCisKKyAgICAgICAg
KiBodG1sL0hUTUxDb2xsZWN0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ29sbGVjdGlv
bjo6cm9vdE5vZGUpOgorICAgICAgICBJbmxpbmUgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMgYW5k
IGNvbnNpc3RlbmN5IHdpdGggQ2FjaGVkTGl2ZU5vZGVMaXN0LgorCisgICAgICAgIChXZWJDb3Jl
OjpIVE1MQ29sbGVjdGlvbjo6bWVtb3J5Q29zdCk6CisgICAgICAgIE1ha2UgdmlydHVhbCBhbmQg
bW92ZSBwYXJ0IG9mIHRoZSBpbXBsZW1lbnRhdGlvbiB0byB0aGUKKyAgICAgICAgQ2FjaGVkSFRN
TENvbGxlY3Rpb24gc3ViY2xhc3MgdG8gY29tcHV0ZSB0aGUgY29zdCBvZiB0aGUKKyAgICAgICAg
Q29sbGVjdGlvbkluZGV4Q2FjaGUuCisKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb2xsZWN0aW9u
OjppbnZhbGlkYXRlQ2FjaGUpOgorICAgICAgICBNb3ZlIHBhcnQgb2YgdGhlIGltcGxlbWVudGF0
aW9uIHRvIHRoZSBzdWJjbGFzcyB0byBpbnZhbGlkYXRlIHRoZQorICAgICAgICBDb2xsZWN0aW9u
SW5kZXhDYWNoZS4KKworICAgICAgICAqIGh0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MRmllbGRTZXRFbGVtZW50OjplbGVtZW50cyk6CisKKyAgICAg
ICAgKiBodG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmNwcDoKKyAgICAgICAgKiBodG1s
L0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmg6CisgICAgICAgIFN1YmNsYXNzIENhY2hlZEhU
TUxDb2xsZWN0aW9uIGluc3RlYWQgb2YgSFRNTENvbGxlY3Rpb24uCisgICAgICAgIGN1c3RvbUVs
ZW1lbnRBZnRlcigpIG5vIGxvbmdlciBuZWVkcyB0byBiZSB2aXJ0dWFsIGFzIGl0CisgICAgICAg
IGlzIGNhbGxlZCBkaXJlY3RseSBieSBDYWNoZWRIVE1MQ29sbGVjdGlvbiBvbiB0aGUgc3ViY2xh
c3MuCisKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MRm9ybUVsZW1lbnQ6OmVsZW1lbnRzKToKKyAgICAgICAgKiBodG1sL0hUTUxNYXBF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNYXBFbGVtZW50OjphcmVhcyk6Cisg
ICAgICAgIENhbGwgTm9kZUxpc3RzTm9kZURhdGE6OmFkZENhY2hlZENvbGxlY3Rpb24oKSBkaXJl
Y3RseS4KKworICAgICAgICAqIGh0bWwvSFRNTE5hbWVDb2xsZWN0aW9uLmNwcDoKKyAgICAgICAg
KiBodG1sL0hUTUxOYW1lQ29sbGVjdGlvbi5oOgorICAgICAgICBTdWJjbGFzcyBDYWNoZWRIVE1M
Q29sbGVjdGlvbiBpbnN0ZWFkIG9mIEhUTUxDb2xsZWN0aW9uLgorCisgICAgICAgICogaHRtbC9I
VE1MT3B0aW9uc0NvbGxlY3Rpb24uY3BwOgorICAgICAgICAqIGh0bWwvSFRNTE9wdGlvbnNDb2xs
ZWN0aW9uLmg6CisgICAgICAgIFN1YmNsYXNzIENhY2hlZEhUTUxDb2xsZWN0aW9uIGluc3RlYWQg
b2YgSFRNTENvbGxlY3Rpb24uCisKKyAgICAgICAgKiBodG1sL0hUTUxTZWxlY3RFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50OjpzZWxlY3RlZE9wdGlvbnMp
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6Om9wdGlvbnMpOgorICAgICAg
ICAqIGh0bWwvSFRNTFRhYmxlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGFi
bGVFbGVtZW50Ojpyb3dzKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUYWJsZUVsZW1lbnQ6OnRC
b2RpZXMpOgorICAgICAgICAqIGh0bWwvSFRNTFRhYmxlUm93RWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MVGFibGVSb3dFbGVtZW50OjpjZWxscyk6CisgICAgICAgIENhbGwgTm9k
ZUxpc3RzTm9kZURhdGE6OmFkZENhY2hlZENvbGxlY3Rpb24oKSBkaXJlY3RseS4KKworICAgICAg
ICAqIGh0bWwvSFRNTFRhYmxlUm93c0NvbGxlY3Rpb24uY3BwOgorICAgICAgICAqIGh0bWwvSFRN
TFRhYmxlUm93c0NvbGxlY3Rpb24uaDoKKyAgICAgICAgU3ViY2xhc3MgQ2FjaGVkSFRNTENvbGxl
Y3Rpb24gaW5zdGVhZCBvZiBIVE1MQ29sbGVjdGlvbi4KKyAgICAgICAgY3VzdG9tRWxlbWVudEFm
dGVyKCkgbm8gbG9uZ2VyIG5lZWRzIHRvIGJlIHZpcnR1YWwgYXMgaXQKKyAgICAgICAgaXMgY2Fs
bGVkIGRpcmVjdGx5IGJ5IENhY2hlZEhUTUxDb2xsZWN0aW9uIG9uIHRoZSBzdWJjbGFzcy4KKwor
ICAgICAgICAqIGh0bWwvSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQ6OnJvd3MpOgorICAgICAgICBDYWxsIE5vZGVM
aXN0c05vZGVEYXRhOjphZGRDYWNoZWRDb2xsZWN0aW9uKCkgZGlyZWN0bHkuCisKIDIwMTUtMDgt
MTQgIE1hdHRoZXcgRGFpdGVyICA8bWRhaXRlckBhcHBsZS5jb20+CiAKICAgICAgICAgSW1wbGVt
ZW50aW5nIGVudW1lcmF0ZURldmljZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtl
TGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggZGMwZDM2MTFj
ZTdiY2I4OWM5MGU5ZmUzYzk3ZTRjZWFjMGM4Y2YwYS4uYTNhNTA2ZjU1MDg3MWRlM2M3ODQ3Yzk0
MzhiMTZmMmNhYTQwMWY0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50
eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTE2MDgsNiArMTYwOCw3
IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBodG1sL0Zvcm1Bc3NvY2lhdGVkRWxlbWVudC5j
cHAKICAgICBodG1sL0Zvcm1Db250cm9sbGVyLmNwcAogICAgIGh0bWwvRm9ybURhdGFMaXN0LmNw
cAorICAgIGh0bWwvR2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uLmNwcAogICAgIGh0bWwvSFRN
TEFsbENvbGxlY3Rpb24uY3BwCiAgICAgaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAKICAgICBo
dG1sL0hUTUxBcHBsZXRFbGVtZW50LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4
cHJvai9XZWJDb3JlLnZjeHByb2oKaW5kZXggOTJiOWUxYTBjZmY5ODQ1N2YzN2ViZTIxMmIyYzg0
MTBmY2I2MTE3ZS4uZDE3ZTM2MmIzNTc0YWJkMTI5YTU1MzdlOTlmZWRhZmU5ZDMzMmY4YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagor
KysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCkBAIC0x
NjEwNyw2ICsxNjEwNyw3IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxodG1sXEZvcm1D
b250cm9sbGVyLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGh0bWxcRm9ybURh
dGFMaXN0LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGh0bWxcRlRQRGlyZWN0
b3J5RG9jdW1lbnQuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caHRtbFxHZW5l
cmljQ2FjaGVkSFRNTENvbGxlY3Rpb24uY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5caHRtbFxIaWRkZW5JbnB1dFR5cGUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5caHRtbFxIVE1MQWxsQ29sbGVjdGlvbi5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxodG1sXEhUTUxBbmNob3JFbGVtZW50LmNwcCI+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZGM0ZTkyODQzMjFlMTBiZGMw
Y2IxOTFhMzI0NDRiZWIwOWQwMGY5Zi4uM2E0YTEyOGRkMDU2ZWY3MmE2YTI4OTczYzg1YjY5NGZl
YTFhY2E0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtMTY4Nyw2ICsxNjg3LDcgQEAKIAkJNDZDODNFRkUxQTlCQkUyOTAwQTc5
QTQxIC8qIEdlb05vdGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0NkM4M0VGQzFBOUJCRTI5MDBBNzlBNDEgLyogR2VvTm90aWZpZXIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NkRCN0Q1NzFC
MjBGRTQ2MDA1NjUxQjIgLyogVk5vZGVUcmFja2VyQ29jb2EuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZEQjdENTYxQjIwRkUzQzAwNTY1MUIyIC8q
IFZOb2RlVHJhY2tlckNvY29hLmNwcCAqLzsgfTsKIAkJNDZEQkI2NTAxQUI4Qzk2RjAwRDlBODEz
IC8qIFBvd2VyT2JzZXJ2ZXJNYWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQ2REJCNjRFMUFCOEM5NkYwMEQ5QTgxMyAvKiBQb3dlck9ic2VydmVyTWFj
LmggKi87IH07CisJCTQ2RUJFQTAyMUI3RDRENjUwMEJFNDk0MSAvKiBDb2xsZWN0aW9uVHJhdmVy
c2FsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkVC
RUEwMTFCN0Q0RDVEMDBCRTQ5NDEgLyogQ29sbGVjdGlvblRyYXZlcnNhbC5oICovOyB9OwogCQk0
NkYzRTNGOTFCMjEwOTAwMDA4N0VEMTMgLyogVk5vZGVUcmFja2VyLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2REI3RDU4MUIyMEZFNTgwMDU2NTFC
MiAvKiBWTm9kZVRyYWNrZXIuY3BwICovOyB9OwogCQk0NkYzRTNGQTFCMjEwOTEwMDA4N0VEMTMg
LyogVk5vZGVUcmFja2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0NkRCN0Q1OTFCMjBGRTU4MDA1NjUxQjIgLyogVk5vZGVUcmFja2VyLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDZGQ0I2MTgxQTcw
ODIwRTAwQzVBMjFFIC8qIERpYWdub3N0aWNMb2dnaW5nS2V5cy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QzN0IzNzUxNUMxQTdFMTAwNkRDODk4IC8q
IERpYWdub3N0aWNMb2dnaW5nS2V5cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CkBAIC0yNjcxLDYgKzI2NzIsMTEgQEAKIAkJODJBQjE3NzYxMjVDODI2
NzAwQzUwNjlEIC8qIEluc3BlY3RvclJlc291cmNlQWdlbnQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgyQUIxNzcyMTI1QzgyNjcwMEM1MDY5RCAvKiBJ
bnNwZWN0b3JSZXNvdXJjZUFnZW50LmggKi87IH07CiAJCTgyRTNEOERFMTIyRUEwRDEwMDNBRTVC
QyAvKiBDU1NQcm9wZXJ0eVNvdXJjZURhdGEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gODJFM0Q4REMxMjJFQTBEMTAwM0FFNUJDIC8qIENTU1Byb3Bl
cnR5U291cmNlRGF0YS5jcHAgKi87IH07CiAJCTgyRTNEOERGMTIyRUEwRDEwMDNBRTVCQyAvKiBD
U1NQcm9wZXJ0eVNvdXJjZURhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDgyRTNEOEREMTIyRUEwRDEwMDNBRTVCQyAvKiBDU1NQcm9wZXJ0eVNvdXJj
ZURhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQk4MzAwMzBGNTFCN0QzM0I1MDBFRDNBQUMgLyogR2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9u
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzMDAz
MEYzMUI3RDMzQTYwMEVEM0FBQyAvKiBHZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb24uY3BwICov
OyB9OworCQk4MzAwMzBGNjFCN0QzM0I1MDBFRDNBQUMgLyogR2VuZXJpY0NhY2hlZEhUTUxDb2xs
ZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
MzAwMzBGNDFCN0QzM0E2MDBFRDNBQUMgLyogR2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uLmgg
Ki87IH07CisJCTgzMDAzMEY4MUI3RDNCNzgwMEVEM0FBQyAvKiBDYWNoZWRIVE1MQ29sbGVjdGlv
bi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODMwMDMw
RjcxQjdEMzk4ODAwRUQzQUFDIC8qIENhY2hlZEhUTUxDb2xsZWN0aW9uLmggKi87IH07CisJCTgz
MUQ0OEMwMUI3RDlBNTIwMDZERTM5QSAvKiBDbGFzc05vZGVMaXN0LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzMUQ0OEJFMUI3RDlBNDYwMDZERTM5
QSAvKiBDbGFzc05vZGVMaXN0LmNwcCAqLzsgfTsKKwkJODMxRDQ4QzExQjdEOUE1MjAwNkRFMzlB
IC8qIENsYXNzTm9kZUxpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDgzMUQ0OEJGMUI3RDlBNDYwMDZERTM5QSAvKiBDbGFzc05vZGVMaXN0LmggKi87
IH07CiAJCTgzMkI4NDM0MTlEOEU1NTEwMEIyNjA1NSAvKiBTVkdBbmltYXRlRWxlbWVudEJhc2Uu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzMkI4NDMz
MTlEOEU1NTEwMEIyNjA1NSAvKiBTVkdBbmltYXRlRWxlbWVudEJhc2UuaCAqLzsgfTsKIAkJODMy
Qjg0MzYxOUQ4RTU3NDAwQjI2MDU1IC8qIFNWR0FuaW1hdGVFbGVtZW50QmFzZS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzJCODQzNTE5RDhFNTc0
MDBCMjYwNTUgLyogU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmNwcCAqLzsgfTsKIAkJODM1MjBDN0Ux
QTcxQkZDQzAwNkJEMkFBIC8qIENTU0ZvbnRGYW1pbHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzNTIwQzdEMUE3MUJGQ0MwMDZCRDJBQSAvKiBDU1NG
b250RmFtaWx5LmggKi87IH07CkBAIC01NDEyLDggKzU0MTgsNiBAQAogCQlCQzhCRjE1QTEwNTgx
NDE4MDBBNDBBMDcgLyogVXNlclN0eWxlU2hlZXRUeXBlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM4QkYxNTkxMDU4MTQxODAwQTQwQTA3IC8qIFVz
ZXJTdHlsZVNoZWV0VHlwZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlCQzhDOEZBRDBERENEMzFCMDBCNTkyRjQgLyogUmVuZGVyU3R5bGUuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM4QzhGQUIw
RERDRDMxQjAwQjU5MkY0IC8qIFJlbmRlclN0eWxlLmNwcCAqLzsgfTsKIAkJQkM4QzhGQUUwRERD
RDMxQjAwQjU5MkY0IC8qIFJlbmRlclN0eWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCQzhDOEZBQzBERENEMzFCMDBCNTkyRjQgLyogUmVuZGVyU3R5
bGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlC
QzkwNEI3NjBEMTA5OThGMDA2ODBEMzIgLyogQ2xhc3NOb2RlTGlzdC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzkwNEI3MjBEMTA5OThGMDA2ODBE
MzIgLyogQ2xhc3NOb2RlTGlzdC5jcHAgKi87IH07Ci0JCUJDOTA0Qjc3MEQxMDk5OEYwMDY4MEQz
MiAvKiBDbGFzc05vZGVMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCQzkwNEI3MzBEMTA5OThGMDA2ODBEMzIgLyogQ2xhc3NOb2RlTGlzdC5oICov
OyB9OwogCQlCQzkyNkY4MDBDMDU1MjQ3MDA4Mjc3NkIgLyogSlNIVE1MRnJhbWVTZXRFbGVtZW50
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDOTI2
RjdFMEMwNTUyNDcwMDgyNzc2QiAvKiBKU0hUTUxGcmFtZVNldEVsZW1lbnQuY3BwICovOyB9Owog
CQlCQzkyNkY4MTBDMDU1MjQ3MDA4Mjc3NkIgLyogSlNIVE1MRnJhbWVTZXRFbGVtZW50LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzkyNkY3RjBDMDU1
MjQ3MDA4Mjc3NkIgLyogSlNIVE1MRnJhbWVTZXRFbGVtZW50LmggKi87IH07CiAJCUJDOTQzOUMz
MTE2Q0Y0OTQwMDQ4Qzc1MCAvKiBKU05vZGVDdXN0b20uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDOTQzOUMyMTE2Q0Y0OTQwMDQ4Qzc1MCAvKiBKU05v
ZGVDdXN0b20uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwpAQCAtODkyOCw2ICs4OTMyLDcgQEAKIAkJNDZEQjdENTgxQjIwRkU1ODAwNTY1MUIyIC8qIFZO
b2RlVHJhY2tlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBWTm9k
ZVRyYWNrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkRCN0Q1OTFCMjBG
RTU4MDA1NjUxQjIgLyogVk5vZGVUcmFja2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFZOb2RlVHJhY2tlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkRC
QjY0RTFBQjhDOTZGMDBEOUE4MTMgLyogUG93ZXJPYnNlcnZlck1hYy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBQb3dlck9ic2VydmVyTWFjLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTQ2RUJFQTAxMUI3RDRENUQwMEJFNDk0MSAvKiBDb2xsZWN0aW9uVHJhdmVy
c2FsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbGxlY3Rpb25UcmF2ZXJz
YWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDkwNzA3RTQxMjE5QzA0MzAwRDkw
RTUxIC8qIEFOR0xFV2ViS2l0QnJpZGdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEFOR0xFV2ViS2l0QnJpZGdlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDkwNzA3RTUxMjE5QzA0MzAwRDkwRTUxIC8qIEFOR0xFV2ViS2l0QnJpZGdlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFOR0xFV2ViS2l0QnJpZGdlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5MjkxRTRBMTM0MTcyQzgwMEU3NTNERSAvKiBJbWFn
ZVJlbmRlcmluZ01vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VS
ZW5kZXJpbmdNb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMDAyOCw2ICsx
MDAzMywxMSBAQAogCQk4MkFCMTc3MjEyNUM4MjY3MDBDNTA2OUQgLyogSW5zcGVjdG9yUmVzb3Vy
Y2VBZ2VudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JSZXNv
dXJjZUFnZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgyRTNEOERDMTIyRUEw
RDEwMDNBRTVCQyAvKiBDU1NQcm9wZXJ0eVNvdXJjZURhdGEuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gQ1NTUHJvcGVydHlTb3VyY2VEYXRhLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODJFM0Q4REQxMjJFQTBEMTAwM0FFNUJDIC8qIENTU1Byb3Bl
cnR5U291cmNlRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDU1NQcm9w
ZXJ0eVNvdXJjZURhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODMwMDMwRjMx
QjdEMzNBNjAwRUQzQUFDIC8qIEdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbi5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rp
b24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4MzAwMzBGNDFCN0QzM0E2MDBF
RDNBQUMgLyogR2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbi5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk4MzAwMzBGNzFCN0QzOTg4MDBFRDNBQUMgLyogQ2FjaGVkSFRN
TENvbGxlY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FjaGVkSFRN
TENvbGxlY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODMxRDQ4QkUxQjdE
OUE0NjAwNkRFMzlBIC8qIENsYXNzTm9kZUxpc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gQ2xhc3NOb2RlTGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTgzMUQ0OEJGMUI3RDlBNDYwMDZERTM5QSAvKiBDbGFzc05vZGVMaXN0LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENsYXNzTm9kZUxpc3QuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJODMyQjg0MzMxOUQ4RTU1MTAwQjI2MDU1IC8qIFNWR0FuaW1hdGVF
bGVtZW50QmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdBbmltYXRl
RWxlbWVudEJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODMyQjg0MzUxOUQ4
RTU3NDAwQjI2MDU1IC8qIFNWR0FuaW1hdGVFbGVtZW50QmFzZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdBbmltYXRlRWxlbWVudEJhc2UuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk4MzUyMEM3RDFBNzFCRkNDMDA2QkQyQUEgLyogQ1NTRm9u
dEZhbWlseS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDU1NGb250RmFtaWx5
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMjk5Niw4ICsxMzAwNiw2IEBACiAJ
CUJDOEJGMTU5MTA1ODE0MTgwMEE0MEEwNyAvKiBVc2VyU3R5bGVTaGVldFR5cGVzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVzZXJTdHlsZVNoZWV0VHlwZXMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM4QzhGQUIwRERDRDMxQjAwQjU5MkY0IC8qIFJlbmRl
clN0eWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlclN0
eWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM4QzhGQUMwRERDRDMxQjAw
QjU5MkY0IC8qIFJlbmRlclN0eWxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFJlbmRlclN0eWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUJDOTA0QjcyMEQx
MDk5OEYwMDY4MEQzMiAvKiBDbGFzc05vZGVMaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IENsYXNzTm9kZUxpc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQlCQzkwNEI3MzBEMTA5OThGMDA2ODBEMzIgLyogQ2xhc3NOb2RlTGlzdC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDbGFzc05vZGVMaXN0Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUJDOTI2RjdFMEMwNTUyNDcwMDgyNzc2QiAvKiBKU0hUTUxGcmFt
ZVNldEVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpT
SFRNTEZyYW1lU2V0RWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJD
OTI2RjdGMEMwNTUyNDcwMDgyNzc2QiAvKiBKU0hUTUxGcmFtZVNldEVsZW1lbnQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTSFRNTEZyYW1lU2V0RWxlbWVudC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzk0MzlDMjExNkNGNDk0MDA0OEM3NTAgLyogSlNO
b2RlQ3VzdG9tLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTm9kZUN1c3Rv
bS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTgxNjgsMTAgKzE4MTc2LDEyIEBA
CiAJCQkJRjU1QjNEN0ExMjUxRjEyRDAwM0VGMjY5IC8qIEJhc2VUZXh0SW5wdXRUeXBlLmggKi8s
CiAJCQkJRjU1QjNEN0IxMjUxRjEyRDAwM0VGMjY5IC8qIEJ1dHRvbklucHV0VHlwZS5jcHAgKi8s
CiAJCQkJRjU1QjNEN0MxMjUxRjEyRDAwM0VGMjY5IC8qIEJ1dHRvbklucHV0VHlwZS5oICovLAor
CQkJCTgzMDAzMEY3MUI3RDM5ODgwMEVEM0FBQyAvKiBDYWNoZWRIVE1MQ29sbGVjdGlvbi5oICov
LAogCQkJCUY1NUIzRDdEMTI1MUYxMkQwMDNFRjI2OSAvKiBDaGVja2JveElucHV0VHlwZS5jcHAg
Ki8sCiAJCQkJRjU1QjNEN0UxMjUxRjEyRDAwM0VGMjY5IC8qIENoZWNrYm94SW5wdXRUeXBlLmgg
Ki8sCiAJCQkJNEFDQkMwQkMxMjcxM0NCRDAwOTRGOUIyIC8qIENsYXNzTGlzdC5jcHAgKi8sCiAJ
CQkJNEFDQkMwQkQxMjcxM0NCRDAwOTRGOUIyIC8qIENsYXNzTGlzdC5oICovLAorCQkJCTQ2RUJF
QTAxMUI3RDRENUQwMEJFNDk0MSAvKiBDb2xsZWN0aW9uVHJhdmVyc2FsLmggKi8sCiAJCQkJOTND
NDQxRkYwRjgxM0FFMTAwQzFBNjM0IC8qIENvbGxlY3Rpb25UeXBlLmggKi8sCiAJCQkJQkMyOTkz
NUMxN0ExREQ1ODAwQkNFODgwIC8qIENvbG9ySW5wdXRUeXBlLmNwcCAqLywKIAkJCQlGNTVCM0Q4
MDEyNTFGMTJEMDAzRUYyNjkgLyogQ29sb3JJbnB1dFR5cGUuaCAqLywKQEAgLTE4MjA2LDYgKzE4
MjE2LDggQEAKIAkJCQk5QjUwQjFEQzE3Q0Q0QzBGMDA4N0Y2M0MgLyogRm9ybU5hbWVkSXRlbS5o
ICovLAogCQkJCTk3MjA1QUFEMTIzOTI4Q0EwMEIxNzM4MCAvKiBGVFBEaXJlY3RvcnlEb2N1bWVu
dC5jcHAgKi8sCiAJCQkJOTcyMDVBQUUxMjM5MjhDQTAwQjE3MzgwIC8qIEZUUERpcmVjdG9yeURv
Y3VtZW50LmggKi8sCisJCQkJODMwMDMwRjMxQjdEMzNBNjAwRUQzQUFDIC8qIEdlbmVyaWNDYWNo
ZWRIVE1MQ29sbGVjdGlvbi5jcHAgKi8sCisJCQkJODMwMDMwRjQxQjdEMzNBNjAwRUQzQUFDIC8q
IEdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbi5oICovLAogCQkJCUY1NUIzRDhCMTI1MUYxMkQw
MDNFRjI2OSAvKiBIaWRkZW5JbnB1dFR5cGUuY3BwICovLAogCQkJCUY1NUIzRDhDMTI1MUYxMkQw
MDNFRjI2OSAvKiBIaWRkZW5JbnB1dFR5cGUuaCAqLywKIAkJCQlCQzk3RTIzOTEwOTE0NDk1MDAx
MEQzNjEgLyogSFRNTEFsbENvbGxlY3Rpb24uY3BwICovLApAQCAtMjMxNTksOCArMjMxNzEsOCBA
QAogCQkJCTgzRDI2RDNDMUFGRENDNTAwMDFCMzg3MyAvKiBDaGlsZE5vZGUuaWRsICovLAogCQkJ
CUE4MTg3MjFBMDk3N0QzQzAwMDU4MjZEOSAvKiBDaGlsZE5vZGVMaXN0LmNwcCAqLywKIAkJCQlB
ODE4NzIxNTA5NzdEM0MwMDA1ODI2RDkgLyogQ2hpbGROb2RlTGlzdC5oICovLAotCQkJCUJDOTA0
QjcyMEQxMDk5OEYwMDY4MEQzMiAvKiBDbGFzc05vZGVMaXN0LmNwcCAqLywKLQkJCQlCQzkwNEI3
MzBEMTA5OThGMDA2ODBEMzIgLyogQ2xhc3NOb2RlTGlzdC5oICovLAorCQkJCTgzMUQ0OEJFMUI3
RDlBNDYwMDZERTM5QSAvKiBDbGFzc05vZGVMaXN0LmNwcCAqLywKKwkJCQk4MzFENDhCRjFCN0Q5
QTQ2MDA2REUzOUEgLyogQ2xhc3NOb2RlTGlzdC5oICovLAogCQkJCUJDQzA2NTc3MEYzQ0UxQjcw
MENEMkQ4NyAvKiBDbGllbnRSZWN0LmNwcCAqLywKIAkJCQlCQ0MwNjU3ODBGM0NFMUI3MDBDRDJE
ODcgLyogQ2xpZW50UmVjdC5oICovLAogCQkJCUJDQzA2NTc5MEYzQ0UxQjcwMENEMkQ4NyAvKiBD
bGllbnRSZWN0LmlkbCAqLywKQEAgLTI0MTc2LDcgKzI0MTg4LDYgQEAKIAkJCQkxNEQ4MjM1MjBB
RjkyQTc5MDAwNEYwNTcgLyogQ2hyb21lLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNEQ4MjQwODBB
RjkzQUVCMDAwNEYwNTcgLyogQ2hyb21lQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk0QUNC
QzBCRjEyNzEzQ0JEMDA5NEY5QjIgLyogQ2xhc3NMaXN0LmggaW4gSGVhZGVycyAqLywKLQkJCQlC
QzkwNEI3NzBEMTA5OThGMDA2ODBEMzIgLyogQ2xhc3NOb2RlTGlzdC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQkNDMDY1N0UwRjNDRTFCNzAwQ0QyRDg3IC8qIENsaWVudFJlY3QuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUJDQzA2NTgxMEYzQ0UxQjcwMENEMkQ4NyAvKiBDbGllbnRSZWN0TGlzdC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJODUwMzFCNDAwQTQ0RUZDNzAwRjk5MkUwIC8qIENsaXBib2FyZEV2
ZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTI0NDQ4LDYgKzI0NDU5LDcgQEAKIAkJCQk4MzcyREIz
MTFBNjc4MEE4MDBDNjk3QzUgLyogRGlhZ25vc3RpY0xvZ2dpbmdSZXN1bHRUeXBlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlDRUNBREZDNzE1Mzc3OEZGMDBFMzcwNjggLyogRGljdGF0aW9uQWx0ZXJu
YXRpdmUuaCBpbiBIZWFkZXJzICovLAogCQkJCUNFQ0FERkM5MTUzNzc4RkYwMEUzNzA2OCAvKiBE
aWN0YXRpb25Db21tYW5kLmggaW4gSGVhZGVycyAqLywKKwkJCQk0NkVCRUEwMjFCN0Q0RDY1MDBC
RTQ5NDEgLyogQ29sbGVjdGlvblRyYXZlcnNhbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRDBCRDRG
NUQxNDA4ODUwRjAwNjgzOUI2IC8qIERpY3RhdGlvbkNvbW1hbmRJT1MuaCBpbiBIZWFkZXJzICov
LAogCQkJCTE1MTQ1QjkwMUIzQTFDRTAwMDY2MkJGNyAvKiBNZWRpYURldmljZUluZm8uaCBpbiBI
ZWFkZXJzICovLAogCQkJCTMxNjAyM0YwMTUzMkM0MEMwMEQ1MEZGNCAvKiBEaWN0aW9uYXJ5Lmgg
aW4gSGVhZGVycyAqLywKQEAgLTI0NTUzLDYgKzI0NTY1LDcgQEAKIAkJCQk4NUU3MTE5NjBBQzVE
NTM1MDA1MzI3MEYgLyogRE9NRG9jdW1lbnRUeXBlSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAog
CQkJCTg1MThEQ0U5MEE5Q0M4MEQwMDkxQjdBNiAvKiBET01ET01JbXBsZW1lbnRhdGlvbi5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJODVFNzExOTcwQUM1RDUzNTAwNTMyNzBGIC8qIERPTURPTUltcGxl
bWVudGF0aW9uSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAorCQkJCTgzMUQ0OEMxMUI3RDlBNTIw
MDZERTM5QSAvKiBDbGFzc05vZGVMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MkNDQTlFODE1
RTNGNjRDMDA1M0M3N0YgLyogRE9NRE9NTmFtZWRGbG93Q29sbGVjdGlvbi5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTJDQ0E5RUExNUUzRjY0QzAwNTNDNzdGIC8qIERPTURPTU5hbWVkRmxvd0NvbGxl
Y3Rpb25JbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQ5QTI0NzQxNUI5QzJFMzAwRDM0
NTI3IC8qIERPTURPTVNlY3VyaXR5UG9saWN5LmggaW4gSGVhZGVycyAqLywKQEAgLTI1NjM1LDYg
KzI1NjQ4LDcgQEAKIAkJCQlGREExNUVCMjEyQjAzRUUxMDAzQTU4M0EgLyogSlNQYW5uZXJOb2Rl
LmggaW4gSGVhZGVycyAqLywKIAkJCQk4QTlBNTg3NTExRTg0QzgxMDA4QUNGRDEgLyogSlNQZXJm
b3JtYW5jZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOEE5QTU4NzExMUU4NEMzNjAwOEFDRkQxIC8q
IEpTUGVyZm9ybWFuY2VOYXZpZ2F0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQk4MzAwMzBGNjFC
N0QzM0I1MDBFRDNBQUMgLyogR2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk4QTlBNTg4ODExRTg0RjM3MDA4QUNGRDEgLyogSlNQZXJmb3JtYW5jZVRpbWlu
Zy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkRFQTYyNDcxNTIxMDJGQzAwNDc5REYwIC8qIEpTUGVy
aW9kaWNXYXZlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0I3MEQ2QzA5RUIwQzdDMDA5RDg0Njgg
LyogSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmggaW4gSGVhZGVycyAqLywKQEAgLTI2OTc1LDYg
KzI2OTg5LDcgQEAKIAkJCQlCMjIyN0E1MTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHTnVtYmVyTGlz
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjdBNTQwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1Bh
aW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0E1NzBEMDBCRjIyMDA3MUI3ODIgLyogU1ZH
UGFyc2VyVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKKwkJCQk4MzAwMzBGODFCN0QzQjc4MDBF
RDNBQUMgLyogQ2FjaGVkSFRNTENvbGxlY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTJEM0Ew
RTM2MTNBN0Q3NjEwMEU4NUFGMCAvKiBTVkdQYXJzaW5nRXJyb3IuaCBpbiBIZWFkZXJzICovLAog
CQkJCTg0QzY3ODREMTIxNDgxNDcwMEE5MjkwMiAvKiBTVkdQYXRoQmxlbmRlci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJODQ3NkM5RUIxMURGNkEyOTAwNTU1QjAyIC8qIFNWR1BhdGhCdWlsZGVyLmgg
aW4gSGVhZGVycyAqLywKQEAgLTI3OTcwLDcgKzI3OTg1LDYgQEAKIAkJCQkxNEQ4MjM4QjBBRjky
REY2MDAwNEYwNTcgLyogQ2hyb21lLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUFCQUYyMjA4MEMw
M0IxQzcwMEIwQkNGMCAvKiBDaHJvbWVNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQk0QUNCQzBC
RTEyNzEzQ0JEMDA5NEY5QjIgLyogQ2xhc3NMaXN0LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUJD
OTA0Qjc2MEQxMDk5OEYwMDY4MEQzMiAvKiBDbGFzc05vZGVMaXN0LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUJDQzA2NTdEMEYzQ0UxQjcwMENEMkQ4NyAvKiBDbGllbnRSZWN0LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUJDQzA2NTgwMEYzQ0UxQjcwMENEMkQ4NyAvKiBDbGllbnRSZWN0TGlzdC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk4NTAzMUIzRjBBNDRFRkM3MDBGOTkyRTAgLyogQ2xpcGJv
YXJkRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yODk3Nyw2ICsyODk5MSw3IEBACiAJCQkJ
QTlDNkU2NEMwRDc0NjVFNzAwNjQ0MkU5IC8qIEpTRE9NUGx1Z2luQXJyYXlDdXN0b20uY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQTlDNkU2NEQwRDc0NjVFNzAwNjQ0MkU5IC8qIEpTRE9NUGx1Z2lu
Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxNzJBRjhGMTgxMUJDMzcwMEZCQURCOSAv
KiBKU0RPTVByb21pc2UuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJODMxRDQ4QzAxQjdEOUE1MjAw
NkRFMzlBIC8qIENsYXNzTm9kZUxpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM1QTg2QjUw
QzMzNjdFODAwRUVBNjQ5IC8qIEpTRE9NU2VsZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTRBQ0JDMENBMTI3MTNEMEEwMDk0RjlCMiAvKiBKU0RPTVNldHRhYmxlVG9rZW5MaXN0LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUM1MTM3Q0YyMTFBNTgzNzgwMDRBREI5OSAvKiBKU0RPTVN0cmlu
Z0xpc3QuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yOTI2OSw2ICsyOTI4NCw3IEBACiAJCQkJMDc5
NjlEQkQxN0QxNDE1MTAwN0ZGODQyIC8qIEpTUlRDU2Vzc2lvbkRlc2NyaXB0aW9uQ2FsbGJhY2su
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDdEMDdCMTQxODM0MTU4ODAwQUJERDNDIC8qIEpTUlRD
U2Vzc2lvbkRlc2NyaXB0aW9uQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA3OTY5REJG
MTdEMTQxNTEwMDdGRjg0MiAvKiBKU1JUQ1N0YXRzQ2FsbGJhY2suY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJODMwMDMwRjUxQjdEMzNCNTAwRUQzQUFDIC8qIEdlbmVyaWNDYWNoZWRIVE1MQ29sbGVj
dGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzk2OURDMTE3RDE0MTUxMDA3RkY4NDIgLyog
SlNSVENTdGF0c1JlcG9ydC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzk2OURDMzE3RDE0MTUx
MDA3RkY4NDIgLyogSlNSVENTdGF0c1Jlc3BvbnNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA3
REM1RkQ0MTdEM0VFRTkwMDk5Rjg5MCAvKiBKU1JUQ1N0YXRzUmVzcG9uc2VDdXN0b20uY3BwIGlu
IFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9k
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKaW5kZXggYmUzYTNj
MTg3YTg1YzFjN2U5Zjg2NGZkM2NkN2IxYTdkZTI2ZGE2MS4uYmU5NjRiY2ZjNGFiZDllNjY4ZjM0
ZjBkNGIyMDM1MTE3MDZkN2U2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRh
aW5lck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcApA
QCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkVkaXRvci5oIgogI2luY2x1ZGUgIkZsb2F0UmVj
dC5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgorI2luY2x1ZGUgIkdlbmVyaWNDYWNoZWRIVE1M
Q29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmgiCiAj
aW5jbHVkZSAiSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiSFRNTFRhYmxlUm93
c0NvbGxlY3Rpb24uaCIKQEAgLTkwMiw3ICs5MDMsNyBAQCBSZWZQdHI8UmFkaW9Ob2RlTGlzdD4g
Q29udGFpbmVyTm9kZTo6cmFkaW9Ob2RlTGlzdChjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpCiAK
IFJlZjxIVE1MQ29sbGVjdGlvbj4gQ29udGFpbmVyTm9kZTo6Y2hpbGRyZW4oKQogewotICAgIHJl
dHVybiBlbnN1cmVDYWNoZWRIVE1MQ29sbGVjdGlvbihOb2RlQ2hpbGRyZW4pOworICAgIHJldHVy
biBlbnN1cmVSYXJlRGF0YSgpLmVuc3VyZU5vZGVMaXN0cygpLmFkZENhY2hlZENvbGxlY3Rpb248
R2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uPENvbGxlY3Rpb25UeXBlVHJhaXRzPE5vZGVDaGls
ZHJlbj46OnRyYXZlcnNhbFR5cGU+PigqdGhpcywgTm9kZUNoaWxkcmVuKTsKIH0KIAogRWxlbWVu
dCogQ29udGFpbmVyTm9kZTo6Zmlyc3RFbGVtZW50Q2hpbGQoKSBjb25zdApAQCAtOTM5LDIyICs5
NDAsNiBAQCB2b2lkIENvbnRhaW5lck5vZGU6OnByZXBlbmQoVmVjdG9yPE5vZGVPclN0cmluZz4m
JiBub2RlT3JTdHJpbmdWZWN0b3IsIEV4Y2VwdGlvbgogICAgIGluc2VydEJlZm9yZShub2RlLnJl
bGVhc2UoKSwgZmlyc3RDaGlsZCgpLCBlYyk7CiB9CiAKLVJlZjxIVE1MQ29sbGVjdGlvbj4gQ29u
dGFpbmVyTm9kZTo6ZW5zdXJlQ2FjaGVkSFRNTENvbGxlY3Rpb24oQ29sbGVjdGlvblR5cGUgdHlw
ZSkKLXsKLSAgICBpZiAoSFRNTENvbGxlY3Rpb24qIGNvbGxlY3Rpb24gPSBjYWNoZWRIVE1MQ29s
bGVjdGlvbih0eXBlKSkKLSAgICAgICAgcmV0dXJuICpjb2xsZWN0aW9uOwotCi0gICAgaWYgKHR5
cGUgPT0gVGFibGVSb3dzKQotICAgICAgICByZXR1cm4gZW5zdXJlUmFyZURhdGEoKS5lbnN1cmVO
b2RlTGlzdHMoKS5hZGRDYWNoZWRDb2xsZWN0aW9uPEhUTUxUYWJsZVJvd3NDb2xsZWN0aW9uPihk
b3duY2FzdDxIVE1MVGFibGVFbGVtZW50PigqdGhpcyksIHR5cGUpOwotICAgIGVsc2UgaWYgKHR5
cGUgPT0gU2VsZWN0T3B0aW9ucykKLSAgICAgICAgcmV0dXJuIGVuc3VyZVJhcmVEYXRhKCkuZW5z
dXJlTm9kZUxpc3RzKCkuYWRkQ2FjaGVkQ29sbGVjdGlvbjxIVE1MT3B0aW9uc0NvbGxlY3Rpb24+
KGRvd25jYXN0PEhUTUxTZWxlY3RFbGVtZW50PigqdGhpcyksIHR5cGUpOwotICAgIGVsc2UgaWYg
KHR5cGUgPT0gRm9ybUNvbnRyb2xzKSB7Ci0gICAgICAgIEFTU0VSVChoYXNUYWdOYW1lKEhUTUxO
YW1lczo6Zm9ybVRhZykgfHwgaGFzVGFnTmFtZShIVE1MTmFtZXM6OmZpZWxkc2V0VGFnKSk7Ci0g
ICAgICAgIHJldHVybiBlbnN1cmVSYXJlRGF0YSgpLmVuc3VyZU5vZGVMaXN0cygpLmFkZENhY2hl
ZENvbGxlY3Rpb248SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24+KCp0aGlzLCB0eXBlKTsKLSAg
ICB9Ci0gICAgcmV0dXJuIGVuc3VyZVJhcmVEYXRhKCkuZW5zdXJlTm9kZUxpc3RzKCkuYWRkQ2Fj
aGVkQ29sbGVjdGlvbjxIVE1MQ29sbGVjdGlvbj4oKnRoaXMsIHR5cGUpOwotfQotCiBIVE1MQ29s
bGVjdGlvbiogQ29udGFpbmVyTm9kZTo6Y2FjaGVkSFRNTENvbGxlY3Rpb24oQ29sbGVjdGlvblR5
cGUgdHlwZSkKIHsKICAgICByZXR1cm4gaGFzUmFyZURhdGEoKSAmJiByYXJlRGF0YSgpLT5ub2Rl
TGlzdHMoKSA/IHJhcmVEYXRhKCktPm5vZGVMaXN0cygpLT5jYWNoZWRDb2xsZWN0aW9uPEhUTUxD
b2xsZWN0aW9uPih0eXBlKSA6IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vQ29udGFpbmVyTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuaApp
bmRleCBkYTA2MjFkN2YwNWM2ZWFiODFmMGM1N2ExZGZmNTYwYmZlNjg5OWRlLi4wNWIzZmNhZWQ4
NDhkZGRiNjY1MTcxODQ3NWNiNzY0ZWY5NTAxMWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vQ29udGFpbmVyTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJO
b2RlLmgKQEAgLTE2OSw3ICsxNjksNiBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBzZXRGaXJzdENo
aWxkKE5vZGUqIGNoaWxkKSB7IG1fZmlyc3RDaGlsZCA9IGNoaWxkOyB9CiAgICAgdm9pZCBzZXRM
YXN0Q2hpbGQoTm9kZSogY2hpbGQpIHsgbV9sYXN0Q2hpbGQgPSBjaGlsZDsgfQogCi0gICAgUmVm
PEhUTUxDb2xsZWN0aW9uPiBlbnN1cmVDYWNoZWRIVE1MQ29sbGVjdGlvbihDb2xsZWN0aW9uVHlw
ZSk7CiAgICAgSFRNTENvbGxlY3Rpb24qIGNhY2hlZEhUTUxDb2xsZWN0aW9uKENvbGxlY3Rpb25U
eXBlKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDlkZWM2YzgwMmYx
ZDg1NjEzMGFmYzQ1ZDEzZjI0NGFmZDNmMTM5Y2UuLmQxMjhhMjE4MjdkM2NjZTI4YmRmZGE5MDdj
Mzk3OGYyMWEwOTM4NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNjMsMTIgKzYzLDEy
IEBACiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVu
dC5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgorI2luY2x1ZGUgIkdlbmVyaWNDYWNoZWRIVE1M
Q29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxBbGxDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAi
SFRNTEFuY2hvckVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MQmFzZUVsZW1lbnQuaCIKICNpbmNs
dWRlICJIVE1MQm9keUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MQ2FudmFzRWxlbWVudC5oIgot
I2luY2x1ZGUgIkhUTUxDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiSFRNTERvY3VtZW50LmgiCiAj
aW5jbHVkZSAiSFRNTEVsZW1lbnRGYWN0b3J5LmgiCiAjaW5jbHVkZSAiSFRNTEZvcm1Db250cm9s
RWxlbWVudC5oIgpAQCAtNDc3Miw1MCArNDc3Miw1MSBAQCBib29sIERvY3VtZW50OjpoYXNTVkdS
b290Tm9kZSgpIGNvbnN0CiAgICAgcmV0dXJuIGRvY3VtZW50RWxlbWVudCgpICYmIGRvY3VtZW50
RWxlbWVudCgpLT5oYXNUYWdOYW1lKFNWR05hbWVzOjpzdmdUYWcpOwogfQogCi1SZWY8SFRNTENv
bGxlY3Rpb24+IERvY3VtZW50OjplbnN1cmVDYWNoZWRDb2xsZWN0aW9uKENvbGxlY3Rpb25UeXBl
IHR5cGUpCit0ZW1wbGF0ZSA8Q29sbGVjdGlvblR5cGUgY29sbGVjdGlvblR5cGU+CitSZWY8SFRN
TENvbGxlY3Rpb24+IERvY3VtZW50OjplbnN1cmVDYWNoZWRDb2xsZWN0aW9uKCkKIHsKLSAgICBy
ZXR1cm4gZW5zdXJlUmFyZURhdGEoKS5lbnN1cmVOb2RlTGlzdHMoKS5hZGRDYWNoZWRDb2xsZWN0
aW9uPEhUTUxDb2xsZWN0aW9uPigqdGhpcywgdHlwZSk7CisgICAgcmV0dXJuIGVuc3VyZVJhcmVE
YXRhKCkuZW5zdXJlTm9kZUxpc3RzKCkuYWRkQ2FjaGVkQ29sbGVjdGlvbjxHZW5lcmljQ2FjaGVk
SFRNTENvbGxlY3Rpb248Q29sbGVjdGlvblR5cGVUcmFpdHM8Y29sbGVjdGlvblR5cGU+Ojp0cmF2
ZXJzYWxUeXBlPj4oKnRoaXMsIGNvbGxlY3Rpb25UeXBlKTsKIH0KIAogUmVmPEhUTUxDb2xsZWN0
aW9uPiBEb2N1bWVudDo6aW1hZ2VzKCkKIHsKLSAgICByZXR1cm4gZW5zdXJlQ2FjaGVkQ29sbGVj
dGlvbihEb2NJbWFnZXMpOworICAgIHJldHVybiBlbnN1cmVDYWNoZWRDb2xsZWN0aW9uPERvY0lt
YWdlcz4oKTsKIH0KIAogUmVmPEhUTUxDb2xsZWN0aW9uPiBEb2N1bWVudDo6YXBwbGV0cygpCiB7
Ci0gICAgcmV0dXJuIGVuc3VyZUNhY2hlZENvbGxlY3Rpb24oRG9jQXBwbGV0cyk7CisgICAgcmV0
dXJuIGVuc3VyZUNhY2hlZENvbGxlY3Rpb248RG9jQXBwbGV0cz4oKTsKIH0KIAogUmVmPEhUTUxD
b2xsZWN0aW9uPiBEb2N1bWVudDo6ZW1iZWRzKCkKIHsKLSAgICByZXR1cm4gZW5zdXJlQ2FjaGVk
Q29sbGVjdGlvbihEb2NFbWJlZHMpOworICAgIHJldHVybiBlbnN1cmVDYWNoZWRDb2xsZWN0aW9u
PERvY0VtYmVkcz4oKTsKIH0KIAogUmVmPEhUTUxDb2xsZWN0aW9uPiBEb2N1bWVudDo6cGx1Z2lu
cygpCiB7CiAgICAgLy8gVGhpcyBpcyBhbiBhbGlhcyBmb3IgZW1iZWRzKCkgcmVxdWlyZWQgZm9y
IHRoZSBKUyBET00gYmluZGluZ3MuCi0gICAgcmV0dXJuIGVuc3VyZUNhY2hlZENvbGxlY3Rpb24o
RG9jRW1iZWRzKTsKKyAgICByZXR1cm4gZW5zdXJlQ2FjaGVkQ29sbGVjdGlvbjxEb2NFbWJlZHM+
KCk7CiB9CiAKIFJlZjxIVE1MQ29sbGVjdGlvbj4gRG9jdW1lbnQ6OnNjcmlwdHMoKQogewotICAg
IHJldHVybiBlbnN1cmVDYWNoZWRDb2xsZWN0aW9uKERvY1NjcmlwdHMpOworICAgIHJldHVybiBl
bnN1cmVDYWNoZWRDb2xsZWN0aW9uPERvY1NjcmlwdHM+KCk7CiB9CiAKIFJlZjxIVE1MQ29sbGVj
dGlvbj4gRG9jdW1lbnQ6OmxpbmtzKCkKIHsKLSAgICByZXR1cm4gZW5zdXJlQ2FjaGVkQ29sbGVj
dGlvbihEb2NMaW5rcyk7CisgICAgcmV0dXJuIGVuc3VyZUNhY2hlZENvbGxlY3Rpb248RG9jTGlu
a3M+KCk7CiB9CiAKIFJlZjxIVE1MQ29sbGVjdGlvbj4gRG9jdW1lbnQ6OmZvcm1zKCkKIHsKLSAg
ICByZXR1cm4gZW5zdXJlQ2FjaGVkQ29sbGVjdGlvbihEb2NGb3Jtcyk7CisgICAgcmV0dXJuIGVu
c3VyZUNhY2hlZENvbGxlY3Rpb248RG9jRm9ybXM+KCk7CiB9CiAKIFJlZjxIVE1MQ29sbGVjdGlv
bj4gRG9jdW1lbnQ6OmFuY2hvcnMoKQogewotICAgIHJldHVybiBlbnN1cmVDYWNoZWRDb2xsZWN0
aW9uKERvY0FuY2hvcnMpOworICAgIHJldHVybiBlbnN1cmVDYWNoZWRDb2xsZWN0aW9uPERvY0Fu
Y2hvcnM+KCk7CiB9CiAKIFJlZjxIVE1MQ29sbGVjdGlvbj4gRG9jdW1lbnQ6OmFsbCgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5oCmluZGV4IDgwZmU3YTQ4ZWVmMjFiNzQxMDU0MjQyMjhhNmY3MzI2ZjZjZDRh
MjcuLmU1M2JmM2UxYzZjMWVmMjA5YjMyOTMzNmYzNzJlMWY4MTBjZTlmOTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5oCkBAIC0xMTMsNyArMTEzLDYgQEAgY2xhc3MgSFRNTElGcmFtZUVsZW1lbnQ7CiBj
bGFzcyBIVE1MSW1hZ2VFbGVtZW50OwogY2xhc3MgSFRNTE1hcEVsZW1lbnQ7CiBjbGFzcyBIVE1M
TWVkaWFFbGVtZW50OwotY2xhc3MgSFRNTE5hbWVDb2xsZWN0aW9uOwogY2xhc3MgSFRNTFNjcmlw
dEVsZW1lbnQ7CiBjbGFzcyBIaXRUZXN0UmVxdWVzdDsKIGNsYXNzIEhpdFRlc3RSZXN1bHQ7CkBA
IC0xMzQ1LDcgKzEzNDQsOCBAQCBwcml2YXRlOgogCiAgICAgTm9kZSogbm9kZUZyb21Qb2ludChj
b25zdCBMYXlvdXRQb2ludCYgY2xpZW50UG9pbnQsIExheW91dFBvaW50KiBsb2NhbFBvaW50ID0g
bnVsbHB0cik7CiAKLSAgICBSZWY8SFRNTENvbGxlY3Rpb24+IGVuc3VyZUNhY2hlZENvbGxlY3Rp
b24oQ29sbGVjdGlvblR5cGUpOworICAgIHRlbXBsYXRlIDxDb2xsZWN0aW9uVHlwZSBjb2xsZWN0
aW9uVHlwZT4KKyAgICBSZWY8SFRNTENvbGxlY3Rpb24+IGVuc3VyZUNhY2hlZENvbGxlY3Rpb24o
KTsKIAogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAgICB2b2lkIGRpc3BhdGNoRnVsbFNj
cmVlbkNoYW5nZU9yRXJyb3JFdmVudChEZXF1ZTxSZWZQdHI8Tm9kZT4+JiwgY29uc3QgQXRvbWlj
U3RyaW5nJiBldmVudE5hbWUsIGJvb2wgc2hvdWxkTm90aWZ5TWVkaWFFbGVtZW50KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50Q2hpbGRJdGVyYXRvci5oIGIvU291cmNl
L1dlYkNvcmUvZG9tL0VsZW1lbnRDaGlsZEl0ZXJhdG9yLmgKaW5kZXggOTRjZDMxMzIyNDM0YmRh
MDVjOWY1NmUxN2IwZTA2NGMyMjVlNTFjZi4uMWE5NDZiYjhmYjE5M2M2MDQ1MjA5ZmZiZDUyY2Qz
NWE4OWNmZWM5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRDaGlsZEl0
ZXJhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRDaGlsZEl0ZXJhdG9yLmgK
QEAgLTQxLDYgKzQxLDcgQEAgcHVibGljOgogCiAgICAgRWxlbWVudENoaWxkSXRlcmF0b3IoY29u
c3QgQ29udGFpbmVyTm9kZSYgcGFyZW50KTsKICAgICBFbGVtZW50Q2hpbGRJdGVyYXRvcihjb25z
dCBDb250YWluZXJOb2RlJiBwYXJlbnQsIEVsZW1lbnRUeXBlKiBjdXJyZW50KTsKKyAgICBFbGVt
ZW50Q2hpbGRJdGVyYXRvciYgb3BlcmF0b3ItLSgpOwogICAgIEVsZW1lbnRDaGlsZEl0ZXJhdG9y
JiBvcGVyYXRvcisrKCk7CiB9OwogCkBAIC01NSw2ICs1Niw3IEBAIHB1YmxpYzoKIAogICAgIEVs
ZW1lbnRDaGlsZENvbnN0SXRlcmF0b3IoY29uc3QgQ29udGFpbmVyTm9kZSYgcGFyZW50KTsKICAg
ICBFbGVtZW50Q2hpbGRDb25zdEl0ZXJhdG9yKGNvbnN0IENvbnRhaW5lck5vZGUmIHBhcmVudCwg
Y29uc3QgRWxlbWVudFR5cGUqIGN1cnJlbnQpOworICAgIEVsZW1lbnRDaGlsZENvbnN0SXRlcmF0
b3ImIG9wZXJhdG9yLS0oKTsKICAgICBFbGVtZW50Q2hpbGRDb25zdEl0ZXJhdG9yJiBvcGVyYXRv
cisrKCk7CiB9OwogCkBAIC0xMDgsNiArMTEwLDEyIEBAIGlubGluZSBFbGVtZW50Q2hpbGRJdGVy
YXRvcjxFbGVtZW50VHlwZT46OkVsZW1lbnRDaGlsZEl0ZXJhdG9yKGNvbnN0IENvbnRhaW5lck5v
CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KK2lubGluZSBFbGVtZW50Q2hp
bGRJdGVyYXRvcjxFbGVtZW50VHlwZT4mIEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnRUeXBl
Pjo6b3BlcmF0b3ItLSgpCit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEVsZW1lbnRDaGlsZEl0
ZXJhdG9yPEVsZW1lbnRUeXBlPiY+KEVsZW1lbnRJdGVyYXRvcjxFbGVtZW50VHlwZT46OnRyYXZl
cnNlUHJldmlvdXNTaWJsaW5nKCkpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5
cGU+CiBpbmxpbmUgRWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVudFR5cGU+JiBFbGVtZW50Q2hp
bGRJdGVyYXRvcjxFbGVtZW50VHlwZT46Om9wZXJhdG9yKysoKQogewogICAgIHJldHVybiBzdGF0
aWNfY2FzdDxFbGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50VHlwZT4mPihFbGVtZW50SXRlcmF0
b3I8RWxlbWVudFR5cGU+Ojp0cmF2ZXJzZU5leHRTaWJsaW5nKCkpOwpAQCAtMTI4LDYgKzEzNiwx
MyBAQCBpbmxpbmUgRWxlbWVudENoaWxkQ29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT46OkVsZW1l
bnRDaGlsZENvbnN0SXRlcmF0b3IoY29uc3QgQwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxl
bWVudFR5cGU+CitpbmxpbmUgRWxlbWVudENoaWxkQ29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT4m
IEVsZW1lbnRDaGlsZENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+OjpvcGVyYXRvci0tKCkKK3sK
KyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RWxlbWVudENoaWxkQ29uc3RJdGVyYXRvcjxFbGVtZW50
VHlwZT4mPihFbGVtZW50Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT46OnRyYXZlcnNlUHJldmlv
dXNTaWJsaW5nKCkpOworfQorCisKK3RlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KIGlu
bGluZSBFbGVtZW50Q2hpbGRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiYgRWxlbWVudENoaWxk
Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT46Om9wZXJhdG9yKysoKQogewogICAgIHJldHVybiBz
dGF0aWNfY2FzdDxFbGVtZW50Q2hpbGRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiY+KEVsZW1l
bnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6dHJhdmVyc2VOZXh0U2libGluZygpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9MaXZlTm9kZUxpc3QuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9MaXZlTm9kZUxpc3QuaAppbmRleCAxOTZlNTBiYjgyYmViY2NmNzI2NGI0NjNhMmVl
ZTYzZWE2ZDEwYWJiLi4wMTA0MjY2OTcxYzVhYzE2ODVlYmQ2ZjQyNDQ1NDQ4MWRkNjJhY2JhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTGl2ZU5vZGVMaXN0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0xpdmVOb2RlTGlzdC5oCkBAIC0yNSw2ICsyNSw3IEBACiAjZGVmaW5lIExp
dmVOb2RlTGlzdF9oCiAKICNpbmNsdWRlICJDb2xsZWN0aW9uSW5kZXhDYWNoZS5oIgorI2luY2x1
ZGUgIkNvbGxlY3Rpb25UcmF2ZXJzYWwuaCIKICNpbmNsdWRlICJDb2xsZWN0aW9uVHlwZS5oIgog
I2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRWxlbWVudERlc2NlbmRhbnRJdGVyYXRv
ci5oIgpAQCAtODAsMjUgKzgxLDI4IEBAIGNsYXNzIENhY2hlZExpdmVOb2RlTGlzdCA6IHB1Ymxp
YyBMaXZlTm9kZUxpc3QgewogcHVibGljOgogICAgIHZpcnR1YWwgfkNhY2hlZExpdmVOb2RlTGlz
dCgpOwogCi0gICAgdmlydHVhbCB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCBvdmVycmlkZSBmaW5h
bDsKLSAgICB2aXJ0dWFsIE5vZGUqIGl0ZW0odW5zaWduZWQgb2Zmc2V0KSBjb25zdCBvdmVycmlk
ZSBmaW5hbDsKKyAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJl
dHVybiBtX2luZGV4Q2FjaGUubm9kZUNvdW50KG5vZGVMaXN0KCkpOyB9CisgICAgTm9kZSogaXRl
bSh1bnNpZ25lZCBvZmZzZXQpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIG1faW5kZXhD
YWNoZS5ub2RlQXQobm9kZUxpc3QoKSwgb2Zmc2V0KTsgfQogCiAgICAgLy8gRm9yIENvbGxlY3Rp
b25JbmRleENhY2hlCi0gICAgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciBjb2xsZWN0aW9uQmVn
aW4oKSBjb25zdDsKLSAgICBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yIGNvbGxlY3Rpb25MYXN0
KCkgY29uc3Q7CisgICAgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciBjb2xsZWN0aW9uQmVnaW4o
KSBjb25zdCB7IHJldHVybiBDb2xsZWN0aW9uVHJhdmVyc2FsPENvbGxlY3Rpb25UcmF2ZXJzYWxU
eXBlOjpEZXNjZW5kYW50cz46OmJlZ2luKG5vZGVMaXN0KCksIHJvb3ROb2RlKCkpOyB9CisgICAg
RWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciBjb2xsZWN0aW9uTGFzdCgpIGNvbnN0IHsgcmV0dXJu
IENvbGxlY3Rpb25UcmF2ZXJzYWw8Q29sbGVjdGlvblRyYXZlcnNhbFR5cGU6OkRlc2NlbmRhbnRz
Pjo6bGFzdChub2RlTGlzdCgpLCByb290Tm9kZSgpKTsgfQogICAgIEVsZW1lbnREZXNjZW5kYW50
SXRlcmF0b3IgY29sbGVjdGlvbkVuZCgpIGNvbnN0IHsgcmV0dXJuIEVsZW1lbnREZXNjZW5kYW50
SXRlcmF0b3IoKTsgfQotICAgIHZvaWQgY29sbGVjdGlvblRyYXZlcnNlRm9yd2FyZChFbGVtZW50
RGVzY2VuZGFudEl0ZXJhdG9yJiwgdW5zaWduZWQgY291bnQsIHVuc2lnbmVkJiB0cmF2ZXJzZWRD
b3VudCkgY29uc3Q7Ci0gICAgdm9pZCBjb2xsZWN0aW9uVHJhdmVyc2VCYWNrd2FyZChFbGVtZW50
RGVzY2VuZGFudEl0ZXJhdG9yJiwgdW5zaWduZWQgY291bnQpIGNvbnN0OworICAgIHZvaWQgY29s
bGVjdGlvblRyYXZlcnNlRm9yd2FyZChFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yJiBjdXJyZW50
LCB1bnNpZ25lZCBjb3VudCwgdW5zaWduZWQmIHRyYXZlcnNlZENvdW50KSBjb25zdCB7IENvbGxl
Y3Rpb25UcmF2ZXJzYWw8Q29sbGVjdGlvblRyYXZlcnNhbFR5cGU6OkRlc2NlbmRhbnRzPjo6dHJh
dmVyc2VGb3J3YXJkKG5vZGVMaXN0KCksIGN1cnJlbnQsIGNvdW50LCB0cmF2ZXJzZWRDb3VudCk7
IH0KKyAgICB2b2lkIGNvbGxlY3Rpb25UcmF2ZXJzZUJhY2t3YXJkKEVsZW1lbnREZXNjZW5kYW50
SXRlcmF0b3ImIGN1cnJlbnQsIHVuc2lnbmVkIGNvdW50KSBjb25zdCB7IENvbGxlY3Rpb25UcmF2
ZXJzYWw8Q29sbGVjdGlvblRyYXZlcnNhbFR5cGU6OkRlc2NlbmRhbnRzPjo6dHJhdmVyc2VCYWNr
d2FyZChub2RlTGlzdCgpLCBjdXJyZW50LCBjb3VudCk7IH0KICAgICBib29sIGNvbGxlY3Rpb25D
YW5UcmF2ZXJzZUJhY2t3YXJkKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZvaWQgd2ls
bFZhbGlkYXRlSW5kZXhDYWNoZSgpIGNvbnN0OworICAgIHZvaWQgd2lsbFZhbGlkYXRlSW5kZXhD
YWNoZSgpIGNvbnN0IHsgZG9jdW1lbnQoKS5yZWdpc3Rlck5vZGVMaXN0Rm9ySW52YWxpZGF0aW9u
KGNvbnN0X2Nhc3Q8Q2FjaGVkTGl2ZU5vZGVMaXN0PE5vZGVMaXN0VHlwZT4mPigqdGhpcykpOyB9
CiAKICAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZUNhY2hlKERvY3VtZW50JikgY29uc3Qgb3Zl
cnJpZGUgZmluYWw7Ci0gICAgdmlydHVhbCBzaXplX3QgbWVtb3J5Q29zdCgpIGNvbnN0IG92ZXJy
aWRlIGZpbmFsOworICAgIHZpcnR1YWwgc2l6ZV90IG1lbW9yeUNvc3QoKSBjb25zdCBvdmVycmlk
ZSBmaW5hbCB7IHJldHVybiBtX2luZGV4Q2FjaGUubWVtb3J5Q29zdCgpOyB9CiAKIHByb3RlY3Rl
ZDoKICAgICBDYWNoZWRMaXZlTm9kZUxpc3QoQ29udGFpbmVyTm9kZSYgcm9vdE5vZGUsIE5vZGVM
aXN0SW52YWxpZGF0aW9uVHlwZSk7CiAKIHByaXZhdGU6CisgICAgTm9kZUxpc3RUeXBlJiBub2Rl
TGlzdCgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PE5vZGVMaXN0VHlwZSY+KCp0aGlzKTsgfQorICAg
IGNvbnN0IE5vZGVMaXN0VHlwZSYgbm9kZUxpc3QoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2Fz
dDxjb25zdCBOb2RlTGlzdFR5cGUmPigqdGhpcyk7IH0KKwogICAgIENvbnRhaW5lck5vZGUmIHJv
b3ROb2RlKCkgY29uc3Q7CiAKICAgICBtdXRhYmxlIENvbGxlY3Rpb25JbmRleENhY2hlPE5vZGVM
aXN0VHlwZSwgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcj4gbV9pbmRleENhY2hlOwpAQCAtMTMx
LDExNSArMTM1LDMzIEBAIEFMV0FZU19JTkxJTkUgYm9vbCBzaG91bGRJbnZhbGlkYXRlVHlwZU9u
QXR0cmlidXRlQ2hhbmdlKE5vZGVMaXN0SW52YWxpZGF0aW9uVHlwCiB0ZW1wbGF0ZSA8Y2xhc3Mg
Tm9kZUxpc3RUeXBlPgogQ2FjaGVkTGl2ZU5vZGVMaXN0PE5vZGVMaXN0VHlwZT46OkNhY2hlZExp
dmVOb2RlTGlzdChDb250YWluZXJOb2RlJiBvd25lck5vZGUsIE5vZGVMaXN0SW52YWxpZGF0aW9u
VHlwZSBpbnZhbGlkYXRpb25UeXBlKQogICAgIDogTGl2ZU5vZGVMaXN0KG93bmVyTm9kZSwgaW52
YWxpZGF0aW9uVHlwZSkKLSAgICAsIG1faW5kZXhDYWNoZShzdGF0aWNfY2FzdDxOb2RlTGlzdFR5
cGUmPigqdGhpcykpCisgICAgLCBtX2luZGV4Q2FjaGUobm9kZUxpc3QoKSkKIHsKIH0KIAogdGVt
cGxhdGUgPGNsYXNzIE5vZGVMaXN0VHlwZT4KIENhY2hlZExpdmVOb2RlTGlzdDxOb2RlTGlzdFR5
cGU+Ojp+Q2FjaGVkTGl2ZU5vZGVMaXN0KCkKIHsKLSAgICBhdXRvJiBub2RlTGlzdCA9IHN0YXRp
Y19jYXN0PGNvbnN0IE5vZGVMaXN0VHlwZSY+KCp0aGlzKTsKLSAgICBpZiAobV9pbmRleENhY2hl
Lmhhc1ZhbGlkQ2FjaGUobm9kZUxpc3QpKQorICAgIGlmIChtX2luZGV4Q2FjaGUuaGFzVmFsaWRD
YWNoZShub2RlTGlzdCgpKSkKICAgICAgICAgZG9jdW1lbnQoKS51bnJlZ2lzdGVyTm9kZUxpc3RG
b3JJbnZhbGlkYXRpb24oKnRoaXMpOwogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgTm9kZUxpc3RUeXBl
PgogaW5saW5lIENvbnRhaW5lck5vZGUmIENhY2hlZExpdmVOb2RlTGlzdDxOb2RlTGlzdFR5cGU+
Ojpyb290Tm9kZSgpIGNvbnN0CiB7Ci0gICAgaWYgKHN0YXRpY19jYXN0PGNvbnN0IE5vZGVMaXN0
VHlwZSY+KCp0aGlzKS5pc1Jvb3RlZEF0RG9jdW1lbnQoKSAmJiBvd25lck5vZGUoKS5pbkRvY3Vt
ZW50KCkpCisgICAgaWYgKG5vZGVMaXN0KCkuaXNSb290ZWRBdERvY3VtZW50KCkgJiYgb3duZXJO
b2RlKCkuaW5Eb2N1bWVudCgpKQogICAgICAgICByZXR1cm4gb3duZXJOb2RlKCkuZG9jdW1lbnQo
KTsKIAogICAgIHJldHVybiBvd25lck5vZGUoKTsKIH0KIAogdGVtcGxhdGUgPGNsYXNzIE5vZGVM
aXN0VHlwZT4KLUVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IgQ2FjaGVkTGl2ZU5vZGVMaXN0PE5v
ZGVMaXN0VHlwZT46OmNvbGxlY3Rpb25CZWdpbigpIGNvbnN0Ci17Ci0gICAgYXV0byYgbm9kZUxp
c3QgPSBzdGF0aWNfY2FzdDxjb25zdCBOb2RlTGlzdFR5cGUmPigqdGhpcyk7Ci0gICAgYXV0byBk
ZXNjZW5kYW50cyA9IGVsZW1lbnREZXNjZW5kYW50cyhyb290Tm9kZSgpKTsKLSAgICBhdXRvIGVu
ZCA9IGRlc2NlbmRhbnRzLmVuZCgpOwotICAgIGZvciAoYXV0byBpdCA9IGRlc2NlbmRhbnRzLmJl
Z2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBpZiAobm9kZUxpc3QuZWxlbWVudE1h
dGNoZXMoKml0KSkKLSAgICAgICAgICAgIHJldHVybiBpdDsKLSAgICB9Ci0gICAgcmV0dXJuIGVu
ZDsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIE5vZGVMaXN0VHlwZT4KLUVsZW1lbnREZXNjZW5kYW50
SXRlcmF0b3IgQ2FjaGVkTGl2ZU5vZGVMaXN0PE5vZGVMaXN0VHlwZT46OmNvbGxlY3Rpb25MYXN0
KCkgY29uc3QKLXsKLSAgICBhdXRvJiBub2RlTGlzdCA9IHN0YXRpY19jYXN0PGNvbnN0IE5vZGVM
aXN0VHlwZSY+KCp0aGlzKTsKLSAgICBhdXRvIGRlc2NlbmRhbnRzID0gZWxlbWVudERlc2NlbmRh
bnRzKHJvb3ROb2RlKCkpOwotICAgIGF1dG8gZW5kID0gZGVzY2VuZGFudHMuZW5kKCk7Ci0gICAg
Zm9yIChhdXRvIGl0ID0gZGVzY2VuZGFudHMubGFzdCgpOyBpdCAhPSBlbmQ7IC0taXQpIHsKLSAg
ICAgICAgaWYgKG5vZGVMaXN0LmVsZW1lbnRNYXRjaGVzKCppdCkpCi0gICAgICAgICAgICByZXR1
cm4gaXQ7Ci0gICAgfQotICAgIHJldHVybiBlbmQ7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBOb2Rl
TGlzdFR5cGU+Ci12b2lkIENhY2hlZExpdmVOb2RlTGlzdDxOb2RlTGlzdFR5cGU+Ojpjb2xsZWN0
aW9uVHJhdmVyc2VGb3J3YXJkKEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3ImIGN1cnJlbnQsIHVu
c2lnbmVkIGNvdW50LCB1bnNpZ25lZCYgdHJhdmVyc2VkQ291bnQpIGNvbnN0Ci17Ci0gICAgYXV0
byYgbm9kZUxpc3QgPSBzdGF0aWNfY2FzdDxjb25zdCBOb2RlTGlzdFR5cGUmPigqdGhpcyk7Ci0g
ICAgQVNTRVJUKG5vZGVMaXN0LmVsZW1lbnRNYXRjaGVzKCpjdXJyZW50KSk7Ci0gICAgYXV0byBl
bmQgPSBjb2xsZWN0aW9uRW5kKCk7Ci0gICAgZm9yICh0cmF2ZXJzZWRDb3VudCA9IDA7IHRyYXZl
cnNlZENvdW50IDwgY291bnQ7ICsrdHJhdmVyc2VkQ291bnQpIHsKLSAgICAgICAgZG8gewotICAg
ICAgICAgICAgKytjdXJyZW50OwotICAgICAgICAgICAgaWYgKGN1cnJlbnQgPT0gZW5kKQotICAg
ICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfSB3aGlsZSAoIW5vZGVMaXN0LmVsZW1lbnRN
YXRjaGVzKCpjdXJyZW50KSk7Ci0gICAgfQotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgTm9kZUxpc3RU
eXBlPgotdm9pZCBDYWNoZWRMaXZlTm9kZUxpc3Q8Tm9kZUxpc3RUeXBlPjo6Y29sbGVjdGlvblRy
YXZlcnNlQmFja3dhcmQoRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciYgY3VycmVudCwgdW5zaWdu
ZWQgY291bnQpIGNvbnN0Ci17Ci0gICAgYXV0byYgbm9kZUxpc3QgPSBzdGF0aWNfY2FzdDxjb25z
dCBOb2RlTGlzdFR5cGUmPigqdGhpcyk7Ci0gICAgQVNTRVJUKG5vZGVMaXN0LmVsZW1lbnRNYXRj
aGVzKCpjdXJyZW50KSk7Ci0gICAgYXV0byBlbmQgPSBjb2xsZWN0aW9uRW5kKCk7Ci0gICAgZm9y
ICg7IGNvdW50OyAtLWNvdW50KSB7Ci0gICAgICAgIGRvIHsKLSAgICAgICAgICAgIC0tY3VycmVu
dDsKLSAgICAgICAgICAgIGlmIChjdXJyZW50ID09IGVuZCkKLSAgICAgICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIH0gd2hpbGUgKCFub2RlTGlzdC5lbGVtZW50TWF0Y2hlcygqY3VycmVudCkp
OwotICAgIH0KLX0KLQotdGVtcGxhdGUgPGNsYXNzIE5vZGVMaXN0VHlwZT4KLXZvaWQgQ2FjaGVk
TGl2ZU5vZGVMaXN0PE5vZGVMaXN0VHlwZT46OndpbGxWYWxpZGF0ZUluZGV4Q2FjaGUoKSBjb25z
dAotewotICAgIGRvY3VtZW50KCkucmVnaXN0ZXJOb2RlTGlzdEZvckludmFsaWRhdGlvbihjb25z
dF9jYXN0PE5vZGVMaXN0VHlwZSY+KHN0YXRpY19jYXN0PGNvbnN0IE5vZGVMaXN0VHlwZSY+KCp0
aGlzKSkpOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgTm9kZUxpc3RUeXBlPgogdm9pZCBDYWNoZWRM
aXZlTm9kZUxpc3Q8Tm9kZUxpc3RUeXBlPjo6aW52YWxpZGF0ZUNhY2hlKERvY3VtZW50JiBkb2N1
bWVudCkgY29uc3QKIHsKLSAgICBhdXRvJiBub2RlTGlzdCA9IHN0YXRpY19jYXN0PGNvbnN0IE5v
ZGVMaXN0VHlwZSY+KCp0aGlzKTsKLSAgICBpZiAoIW1faW5kZXhDYWNoZS5oYXNWYWxpZENhY2hl
KG5vZGVMaXN0KSkKKyAgICBpZiAoIW1faW5kZXhDYWNoZS5oYXNWYWxpZENhY2hlKG5vZGVMaXN0
KCkpKQogICAgICAgICByZXR1cm47Ci0gICAgZG9jdW1lbnQudW5yZWdpc3Rlck5vZGVMaXN0Rm9y
SW52YWxpZGF0aW9uKGNvbnN0X2Nhc3Q8Tm9kZUxpc3RUeXBlJj4obm9kZUxpc3QpKTsKLSAgICBt
X2luZGV4Q2FjaGUuaW52YWxpZGF0ZShub2RlTGlzdCk7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBO
b2RlTGlzdFR5cGU+Ci11bnNpZ25lZCBDYWNoZWRMaXZlTm9kZUxpc3Q8Tm9kZUxpc3RUeXBlPjo6
bGVuZ3RoKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9pbmRleENhY2hlLm5vZGVDb3VudChzdGF0
aWNfY2FzdDxjb25zdCBOb2RlTGlzdFR5cGUmPigqdGhpcykpOwotfQotCi10ZW1wbGF0ZSA8Y2xh
c3MgTm9kZUxpc3RUeXBlPgotTm9kZSogQ2FjaGVkTGl2ZU5vZGVMaXN0PE5vZGVMaXN0VHlwZT46
Oml0ZW0odW5zaWduZWQgb2Zmc2V0KSBjb25zdAotewotICAgIHJldHVybiBtX2luZGV4Q2FjaGUu
bm9kZUF0KHN0YXRpY19jYXN0PGNvbnN0IE5vZGVMaXN0VHlwZSY+KCp0aGlzKSwgb2Zmc2V0KTsK
LX0KLQotdGVtcGxhdGUgPGNsYXNzIE5vZGVMaXN0VHlwZT4KLXNpemVfdCBDYWNoZWRMaXZlTm9k
ZUxpc3Q8Tm9kZUxpc3RUeXBlPjo6bWVtb3J5Q29zdCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1f
aW5kZXhDYWNoZS5tZW1vcnlDb3N0KCk7CisgICAgZG9jdW1lbnQudW5yZWdpc3Rlck5vZGVMaXN0
Rm9ySW52YWxpZGF0aW9uKGNvbnN0X2Nhc3Q8Tm9kZUxpc3RUeXBlJj4obm9kZUxpc3QoKSkpOwor
ICAgIG1faW5kZXhDYWNoZS5pbnZhbGlkYXRlKG5vZGVMaXN0KCkpOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0NhY2hlZEhUTUxD
b2xsZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0NhY2hlZEhUTUxDb2xsZWN0aW9uLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uODE3NjAyMGIxMTFmNGU2YzdjZjRkNWViNDQ1YzMzZGVhMDQ3Y2I2MwotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ2FjaGVkSFRNTENvbGxlY3Rpb24u
aApAQCAtMCwwICsxLDE1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQ2FjaGVkSFRNTENvbGxl
Y3Rpb25faAorI2RlZmluZSBDYWNoZWRIVE1MQ29sbGVjdGlvbl9oCisKKyNpbmNsdWRlICJDb2xs
ZWN0aW9uVHJhdmVyc2FsLmgiCisjaW5jbHVkZSAiSFRNTENvbGxlY3Rpb24uaCIKKyNpbmNsdWRl
ICJIVE1MRWxlbWVudC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3RlbXBsYXRlIDx0eXBl
bmFtZSBIVE1MQ29sbGVjdGlvbkNsYXNzLCBDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZSB0cmF2ZXJz
YWxUeXBlPgorY2xhc3MgQ2FjaGVkSFRNTENvbGxlY3Rpb24gOiBwdWJsaWMgSFRNTENvbGxlY3Rp
b24geworcHVibGljOgorICAgIENhY2hlZEhUTUxDb2xsZWN0aW9uKENvbnRhaW5lck5vZGUmIGJh
c2UsIENvbGxlY3Rpb25UeXBlKTsKKworICAgIHZpcnR1YWwgfkNhY2hlZEhUTUxDb2xsZWN0aW9u
KCk7CisKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0IG92ZXJyaWRlIGZpbmFs
IHsgcmV0dXJuIG1faW5kZXhDYWNoZS5ub2RlQ291bnQoY29sbGVjdGlvbigpKTsgfQorICAgIHZp
cnR1YWwgRWxlbWVudCogaXRlbSh1bnNpZ25lZCBvZmZzZXQpIGNvbnN0IG92ZXJyaWRlIGZpbmFs
IHsgcmV0dXJuIG1faW5kZXhDYWNoZS5ub2RlQXQoY29sbGVjdGlvbigpLCBvZmZzZXQpOyB9Cisg
ICAgdmlydHVhbCBFbGVtZW50KiBuYW1lZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKSBj
b25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHNpemVfdCBtZW1vcnlDb3N0KCkgY29uc3Qgb3Zl
cnJpZGUgZmluYWwgeyByZXR1cm4gbV9pbmRleENhY2hlLm1lbW9yeUNvc3QoKSArIEhUTUxDb2xs
ZWN0aW9uOjptZW1vcnlDb3N0KCk7IH0KKworICAgIC8vIEZvciBDb2xsZWN0aW9uSW5kZXhDYWNo
ZTsgZG8gbm90IHVzZSBlbHNld2hlcmUuCisgICAgdXNpbmcgQ29sbGVjdGlvblRyYXZlcnNhbEl0
ZXJhdG9yID0gdHlwZW5hbWUgQ29sbGVjdGlvblRyYXZlcnNhbDx0cmF2ZXJzYWxUeXBlPjo6SXRl
cmF0b3I7CisgICAgQ29sbGVjdGlvblRyYXZlcnNhbEl0ZXJhdG9yIGNvbGxlY3Rpb25CZWdpbigp
IGNvbnN0IHsgcmV0dXJuIENvbGxlY3Rpb25UcmF2ZXJzYWw8dHJhdmVyc2FsVHlwZT46OmJlZ2lu
KGNvbGxlY3Rpb24oKSwgcm9vdE5vZGUoKSk7IH0KKyAgICBDb2xsZWN0aW9uVHJhdmVyc2FsSXRl
cmF0b3IgY29sbGVjdGlvbkxhc3QoKSBjb25zdCB7IHJldHVybiBDb2xsZWN0aW9uVHJhdmVyc2Fs
PHRyYXZlcnNhbFR5cGU+OjpsYXN0KGNvbGxlY3Rpb24oKSwgcm9vdE5vZGUoKSk7IH0KKyAgICBD
b2xsZWN0aW9uVHJhdmVyc2FsSXRlcmF0b3IgY29sbGVjdGlvbkVuZCgpIGNvbnN0IHsgcmV0dXJu
IENvbGxlY3Rpb25UcmF2ZXJzYWw8dHJhdmVyc2FsVHlwZT46OmVuZChyb290Tm9kZSgpKTsgfQor
ICAgIHZvaWQgY29sbGVjdGlvblRyYXZlcnNlRm9yd2FyZChDb2xsZWN0aW9uVHJhdmVyc2FsSXRl
cmF0b3ImIGN1cnJlbnQsIHVuc2lnbmVkIGNvdW50LCB1bnNpZ25lZCYgdHJhdmVyc2VkQ291bnQp
IGNvbnN0IHsgQ29sbGVjdGlvblRyYXZlcnNhbDx0cmF2ZXJzYWxUeXBlPjo6dHJhdmVyc2VGb3J3
YXJkKGNvbGxlY3Rpb24oKSwgY3VycmVudCwgY291bnQsIHRyYXZlcnNlZENvdW50KTsgfQorICAg
IHZvaWQgY29sbGVjdGlvblRyYXZlcnNlQmFja3dhcmQoQ29sbGVjdGlvblRyYXZlcnNhbEl0ZXJh
dG9yJiBjdXJyZW50LCB1bnNpZ25lZCBjb3VudCkgY29uc3QgeyBDb2xsZWN0aW9uVHJhdmVyc2Fs
PHRyYXZlcnNhbFR5cGU+Ojp0cmF2ZXJzZUJhY2t3YXJkKGNvbGxlY3Rpb24oKSwgY3VycmVudCwg
Y291bnQpOyB9CisgICAgYm9vbCBjb2xsZWN0aW9uQ2FuVHJhdmVyc2VCYWNrd2FyZCgpIGNvbnN0
IHsgcmV0dXJuIHRyYXZlcnNhbFR5cGUgIT0gQ29sbGVjdGlvblRyYXZlcnNhbFR5cGU6OkN1c3Rv
bUZvcndhcmRPbmx5OyB9CisgICAgdm9pZCB3aWxsVmFsaWRhdGVJbmRleENhY2hlKCkgY29uc3Qg
eyBkb2N1bWVudCgpLnJlZ2lzdGVyQ29sbGVjdGlvbihjb25zdF9jYXN0PENhY2hlZEhUTUxDb2xs
ZWN0aW9uPEhUTUxDb2xsZWN0aW9uQ2xhc3MsIHRyYXZlcnNhbFR5cGU+Jj4oKnRoaXMpKTsgfQor
CisgICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVDYWNoZShEb2N1bWVudCYpIG92ZXJyaWRlOwor
CisgICAgYm9vbCBlbGVtZW50TWF0Y2hlcyhFbGVtZW50JikgY29uc3Q7CisKK3ByaXZhdGU6Cisg
ICAgSFRNTENvbGxlY3Rpb25DbGFzcyYgY29sbGVjdGlvbigpIHsgcmV0dXJuIHN0YXRpY19jYXN0
PEhUTUxDb2xsZWN0aW9uQ2xhc3MmPigqdGhpcyk7IH0KKyAgICBjb25zdCBIVE1MQ29sbGVjdGlv
bkNsYXNzJiBjb2xsZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSFRN
TENvbGxlY3Rpb25DbGFzcyY+KCp0aGlzKTsgfQorCisgICAgbXV0YWJsZSBDb2xsZWN0aW9uSW5k
ZXhDYWNoZTxIVE1MQ29sbGVjdGlvbkNsYXNzLCBDb2xsZWN0aW9uVHJhdmVyc2FsSXRlcmF0b3I+
IG1faW5kZXhDYWNoZTsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBIVE1MQ29sbGVjdGlvbkNs
YXNzLCBDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZSB0cmF2ZXJzYWxUeXBlPgorQ2FjaGVkSFRNTENv
bGxlY3Rpb248SFRNTENvbGxlY3Rpb25DbGFzcywgdHJhdmVyc2FsVHlwZT46OkNhY2hlZEhUTUxD
b2xsZWN0aW9uKENvbnRhaW5lck5vZGUmIGJhc2UsIENvbGxlY3Rpb25UeXBlIGNvbGxlY3Rpb25U
eXBlKQorICAgIDogSFRNTENvbGxlY3Rpb24oYmFzZSwgY29sbGVjdGlvblR5cGUpCisgICAgLCBt
X2luZGV4Q2FjaGUoY29sbGVjdGlvbigpKQoreyB9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBIVE1M
Q29sbGVjdGlvbkNsYXNzLCBDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZSB0cmF2ZXJzYWxUeXBlPgor
Q2FjaGVkSFRNTENvbGxlY3Rpb248SFRNTENvbGxlY3Rpb25DbGFzcywgdHJhdmVyc2FsVHlwZT46
On5DYWNoZWRIVE1MQ29sbGVjdGlvbigpCit7CisgICAgaWYgKG1faW5kZXhDYWNoZS5oYXNWYWxp
ZENhY2hlKGNvbGxlY3Rpb24oKSkpCisgICAgICAgIGRvY3VtZW50KCkudW5yZWdpc3RlckNvbGxl
Y3Rpb24oKnRoaXMpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgSFRNTENvbGxlY3Rpb25DbGFz
cywgQ29sbGVjdGlvblRyYXZlcnNhbFR5cGUgdHJhdmVyc2FsVHlwZT4KK3ZvaWQgQ2FjaGVkSFRN
TENvbGxlY3Rpb248SFRNTENvbGxlY3Rpb25DbGFzcywgdHJhdmVyc2FsVHlwZT46OmludmFsaWRh
dGVDYWNoZShEb2N1bWVudCYgZG9jdW1lbnQpCit7CisgICAgSFRNTENvbGxlY3Rpb246OmludmFs
aWRhdGVDYWNoZShkb2N1bWVudCk7CisgICAgaWYgKG1faW5kZXhDYWNoZS5oYXNWYWxpZENhY2hl
KGNvbGxlY3Rpb24oKSkpIHsKKyAgICAgICAgZG9jdW1lbnQudW5yZWdpc3RlckNvbGxlY3Rpb24o
KnRoaXMpOworICAgICAgICBtX2luZGV4Q2FjaGUuaW52YWxpZGF0ZShjb2xsZWN0aW9uKCkpOwor
ICAgIH0KK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIEhUTUxDb2xsZWN0aW9uQ2xhc3MsIENvbGxl
Y3Rpb25UcmF2ZXJzYWxUeXBlIHRyYXZlcnNhbFR5cGU+Citib29sIENhY2hlZEhUTUxDb2xsZWN0
aW9uPEhUTUxDb2xsZWN0aW9uQ2xhc3MsIHRyYXZlcnNhbFR5cGU+OjplbGVtZW50TWF0Y2hlcyhF
bGVtZW50JikgY29uc3QKK3sKKyAgICAvLyBXZSBjYWxsIHRoZSBlbGVtZW50TWF0Y2hlcygpIG1l
dGhvZCBkaXJlY3RseSBvbiB0aGUgc3ViY2xhc3MgaW5zdGVhZCBmb3IgcGVyZm9ybWFuY2UuCisg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitzdGF0aWMg
aW5saW5lIGJvb2wgbmFtZVNob3VsZEJlVmlzaWJsZUluRG9jdW1lbnRBbGwoSFRNTEVsZW1lbnQm
IGVsZW1lbnQpCit7CisgICAgLy8gVGhlIGRvY3VtZW50LmFsbCBjb2xsZWN0aW9uIHJldHVybnMg
b25seSBjZXJ0YWluIHR5cGVzIG9mIGVsZW1lbnRzIGJ5IG5hbWUsCisgICAgLy8gYWx0aG91Z2gg
aXQgcmV0dXJucyBhbnkgdHlwZSBvZiBlbGVtZW50IGJ5IGlkLgorICAgIHJldHVybiBlbGVtZW50
Lmhhc1RhZ05hbWUoSFRNTE5hbWVzOjphcHBsZXRUYWcpCisgICAgICAgIHx8IGVsZW1lbnQuaGFz
VGFnTmFtZShIVE1MTmFtZXM6OmVtYmVkVGFnKQorICAgICAgICB8fCBlbGVtZW50Lmhhc1RhZ05h
bWUoSFRNTE5hbWVzOjpmb3JtVGFnKQorICAgICAgICB8fCBlbGVtZW50Lmhhc1RhZ05hbWUoSFRN
TE5hbWVzOjppbWdUYWcpCisgICAgICAgIHx8IGVsZW1lbnQuaGFzVGFnTmFtZShIVE1MTmFtZXM6
OmlucHV0VGFnKQorICAgICAgICB8fCBlbGVtZW50Lmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpvYmpl
Y3RUYWcpCisgICAgICAgIHx8IGVsZW1lbnQuaGFzVGFnTmFtZShIVE1MTmFtZXM6OnNlbGVjdFRh
Zyk7Cit9CisKK3N0YXRpYyBpbmxpbmUgYm9vbCBuYW1lU2hvdWxkQmVWaXNpYmxlSW5Eb2N1bWVu
dEFsbChFbGVtZW50JiBlbGVtZW50KQoreworICAgIHJldHVybiBpczxIVE1MRWxlbWVudD4oZWxl
bWVudCkgJiYgbmFtZVNob3VsZEJlVmlzaWJsZUluRG9jdW1lbnRBbGwoZG93bmNhc3Q8SFRNTEVs
ZW1lbnQ+KGVsZW1lbnQpKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIEhUTUxDb2xsZWN0aW9u
Q2xhc3MsIENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlIHRyYXZlcnNhbFR5cGU+CitFbGVtZW50KiBD
YWNoZWRIVE1MQ29sbGVjdGlvbjxIVE1MQ29sbGVjdGlvbkNsYXNzLCB0cmF2ZXJzYWxUeXBlPjo6
bmFtZWRJdGVtKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkgY29uc3QKK3sKKyAgICAvLyBodHRw
Oi8vbXNkbi5taWNyb3NvZnQuY29tL3dvcmtzaG9wL2F1dGhvci9kaHRtbC9yZWZlcmVuY2UvbWV0
aG9kcy9uYW1lZGl0ZW0uYXNwCisgICAgLy8gVGhpcyBtZXRob2QgZmlyc3Qgc2VhcmNoZXMgZm9y
IGFuIG9iamVjdCB3aXRoIGEgbWF0Y2hpbmcgaWQKKyAgICAvLyBhdHRyaWJ1dGUuIElmIGEgbWF0
Y2ggaXMgbm90IGZvdW5kLCB0aGUgbWV0aG9kIHRoZW4gc2VhcmNoZXMgZm9yIGFuCisgICAgLy8g
b2JqZWN0IHdpdGggYSBtYXRjaGluZyBuYW1lIGF0dHJpYnV0ZSwgYnV0IG9ubHkgb24gdGhvc2Ug
ZWxlbWVudHMKKyAgICAvLyB0aGF0IGFyZSBhbGxvd2VkIGEgbmFtZSBhdHRyaWJ1dGUuCisKKyAg
ICBpZiAobmFtZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgQ29u
dGFpbmVyTm9kZSYgcm9vdCA9IHJvb3ROb2RlKCk7CisgICAgaWYgKHRyYXZlcnNhbFR5cGUgIT0g
Q29sbGVjdGlvblRyYXZlcnNhbFR5cGU6OkN1c3RvbUZvcndhcmRPbmx5ICYmIHJvb3QuaXNJblRy
ZWVTY29wZSgpKSB7CisgICAgICAgIEVsZW1lbnQqIGNhbmRpZGF0ZSA9IG51bGxwdHI7CisKKyAg
ICAgICAgVHJlZVNjb3BlJiB0cmVlU2NvcGUgPSByb290LnRyZWVTY29wZSgpOworICAgICAgICBp
ZiAodHJlZVNjb3BlLmhhc0VsZW1lbnRXaXRoSWQoKm5hbWUuaW1wbCgpKSkgeworICAgICAgICAg
ICAgaWYgKCF0cmVlU2NvcGUuY29udGFpbnNNdWx0aXBsZUVsZW1lbnRzV2l0aElkKG5hbWUpKQor
ICAgICAgICAgICAgICAgIGNhbmRpZGF0ZSA9IHRyZWVTY29wZS5nZXRFbGVtZW50QnlJZChuYW1l
KTsKKyAgICAgICAgfSBlbHNlIGlmICh0cmVlU2NvcGUuaGFzRWxlbWVudFdpdGhOYW1lKCpuYW1l
LmltcGwoKSkpIHsKKyAgICAgICAgICAgIGlmICghdHJlZVNjb3BlLmNvbnRhaW5zTXVsdGlwbGVF
bGVtZW50c1dpdGhOYW1lKG5hbWUpKSB7CisgICAgICAgICAgICAgICAgY2FuZGlkYXRlID0gdHJl
ZVNjb3BlLmdldEVsZW1lbnRCeU5hbWUobmFtZSk7CisgICAgICAgICAgICAgICAgaWYgKGNhbmRp
ZGF0ZSAmJiB0eXBlKCkgPT0gRG9jQWxsICYmICFuYW1lU2hvdWxkQmVWaXNpYmxlSW5Eb2N1bWVu
dEFsbCgqY2FuZGlkYXRlKSkKKyAgICAgICAgICAgICAgICAgICAgY2FuZGlkYXRlID0gbnVsbHB0
cjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKworICAgICAgICBpZiAoY2FuZGlkYXRlICYmIGNvbGxlY3Rpb24oKS5lbGVtZW50TWF0
Y2hlcygqY2FuZGlkYXRlKSkgeworICAgICAgICAgICAgaWYgKHRyYXZlcnNhbFR5cGUgPT0gQ29s
bGVjdGlvblRyYXZlcnNhbFR5cGU6OkNoaWxkcmVuT25seSA/IGNhbmRpZGF0ZS0+cGFyZW50Tm9k
ZSgpID09ICZyb290IDogY2FuZGlkYXRlLT5pc0Rlc2NlbmRhbnRPZigmcm9vdCkpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIGNhbmRpZGF0ZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVy
biBuYW1lZEl0ZW1TbG93KG5hbWUpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAvLyBDYWNoZWRIVE1MQ29sbGVjdGlvbl9oCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvQ29sbGVjdGlvblRyYXZlcnNhbC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Db2xs
ZWN0aW9uVHJhdmVyc2FsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGQ3YjkyYzNlOTJkMTcyM2E0OGE1OWU3MWFh
MDZlOWU2ZDg1YWI1OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ29s
bGVjdGlvblRyYXZlcnNhbC5oCkBAIC0wLDAgKzEsMjM2IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRl
ZiBDb2xsZWN0aW9uVHJhdmVyc2FsX2gKKyNkZWZpbmUgQ29sbGVjdGlvblRyYXZlcnNhbF9oCisK
KyNpbmNsdWRlICJDb2xsZWN0aW9uVHlwZS5oIgorI2luY2x1ZGUgIkVsZW1lbnRDaGlsZEl0ZXJh
dG9yLmgiCisjaW5jbHVkZSAiRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvci5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK3RlbXBsYXRlIDxDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZSB0cmF2ZXJz
YWxUeXBlPgorc3RydWN0IENvbGxlY3Rpb25UcmF2ZXJzYWwgeyB9OworCit0ZW1wbGF0ZSA8Pgor
c3RydWN0IENvbGxlY3Rpb25UcmF2ZXJzYWw8Q29sbGVjdGlvblRyYXZlcnNhbFR5cGU6OkRlc2Nl
bmRhbnRzPiB7CisgICAgdXNpbmcgSXRlcmF0b3IgPSBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9y
OworCisgICAgc3RhdGljIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IgZW5kKENvbnRhaW5lck5v
ZGUmKSB7IHJldHVybiBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yKCk7IH0KKworICAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBDb2xsZWN0aW9uQ2xhc3M+CisgICAgc3RhdGljIEVsZW1lbnREZXNjZW5k
YW50SXRlcmF0b3IgYmVnaW4oY29uc3QgQ29sbGVjdGlvbkNsYXNzJiwgQ29udGFpbmVyTm9kZSYg
cm9vdE5vZGUpOworCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIENvbGxlY3Rpb25DbGFzcz4KKyAg
ICBzdGF0aWMgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciBsYXN0KGNvbnN0IENvbGxlY3Rpb25D
bGFzcyYsIENvbnRhaW5lck5vZGUmIHJvb3ROb2RlKTsKKworICAgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBDb2xsZWN0aW9uQ2xhc3M+CisgICAgc3RhdGljIHZvaWQgdHJhdmVyc2VGb3J3YXJkKGNvbnN0
IENvbGxlY3Rpb25DbGFzcyYsIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3ImIGN1cnJlbnQsIHVu
c2lnbmVkIGNvdW50LCB1bnNpZ25lZCYgdHJhdmVyc2VkQ291bnQpOworCisgICAgdGVtcGxhdGUg
PHR5cGVuYW1lIENvbGxlY3Rpb25DbGFzcz4KKyAgICBzdGF0aWMgdm9pZCB0cmF2ZXJzZUJhY2t3
YXJkKGNvbnN0IENvbGxlY3Rpb25DbGFzcyYsIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3ImIGN1
cnJlbnQsIHVuc2lnbmVkIGNvdW50KTsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBDb2xsZWN0
aW9uQ2xhc3M+CitpbmxpbmUgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciBDb2xsZWN0aW9uVHJh
dmVyc2FsPENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlOjpEZXNjZW5kYW50cz46OmJlZ2luKGNvbnN0
IENvbGxlY3Rpb25DbGFzcyYgY29sbGVjdGlvbiwgQ29udGFpbmVyTm9kZSYgcm9vdE5vZGUpCit7
CisgICAgYXV0byBkZXNjZW5kYW50cyA9IGVsZW1lbnREZXNjZW5kYW50cyhyb290Tm9kZSk7Cisg
ICAgYXV0byBlbmQgPSBkZXNjZW5kYW50cy5lbmQoKTsKKyAgICBmb3IgKGF1dG8gaXQgPSBkZXNj
ZW5kYW50cy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgaWYgKGNvbGxlY3Rp
b24uZWxlbWVudE1hdGNoZXMoKml0KSkKKyAgICAgICAgICAgIHJldHVybiBpdDsKKyAgICB9Cisg
ICAgcmV0dXJuIGVuZDsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIENvbGxlY3Rpb25DbGFzcz4K
K2lubGluZSBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yIENvbGxlY3Rpb25UcmF2ZXJzYWw8Q29s
bGVjdGlvblRyYXZlcnNhbFR5cGU6OkRlc2NlbmRhbnRzPjo6bGFzdChjb25zdCBDb2xsZWN0aW9u
Q2xhc3MmIGNvbGxlY3Rpb24sIENvbnRhaW5lck5vZGUmIHJvb3ROb2RlKQoreworICAgIGF1dG8g
ZGVzY2VuZGFudHMgPSBlbGVtZW50RGVzY2VuZGFudHMocm9vdE5vZGUpOworICAgIEVsZW1lbnRE
ZXNjZW5kYW50SXRlcmF0b3IgaW52YWxpZDsKKyAgICBmb3IgKGF1dG8gaXQgPSBkZXNjZW5kYW50
cy5sYXN0KCk7IGl0ICE9IGludmFsaWQ7IC0taXQpIHsKKyAgICAgICAgaWYgKGNvbGxlY3Rpb24u
ZWxlbWVudE1hdGNoZXMoKml0KSkKKyAgICAgICAgICAgIHJldHVybiBpdDsKKyAgICB9CisgICAg
cmV0dXJuIGludmFsaWQ7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBDb2xsZWN0aW9uQ2xhc3M+
CitpbmxpbmUgdm9pZCBDb2xsZWN0aW9uVHJhdmVyc2FsPENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBl
OjpEZXNjZW5kYW50cz46OnRyYXZlcnNlRm9yd2FyZChjb25zdCBDb2xsZWN0aW9uQ2xhc3MmIGNv
bGxlY3Rpb24sIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3ImIGN1cnJlbnQsIHVuc2lnbmVkIGNv
dW50LCB1bnNpZ25lZCYgdHJhdmVyc2VkQ291bnQpCit7CisgICAgQVNTRVJUKGNvbGxlY3Rpb24u
ZWxlbWVudE1hdGNoZXMoKmN1cnJlbnQpKTsKKyAgICBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9y
IGludmFsaWQ7CisgICAgZm9yICh0cmF2ZXJzZWRDb3VudCA9IDA7IHRyYXZlcnNlZENvdW50IDwg
Y291bnQ7ICsrdHJhdmVyc2VkQ291bnQpIHsKKyAgICAgICAgZG8geworICAgICAgICAgICAgKytj
dXJyZW50OworICAgICAgICAgICAgaWYgKGN1cnJlbnQgPT0gaW52YWxpZCkKKyAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0gd2hpbGUgKCFjb2xsZWN0aW9uLmVsZW1lbnRNYXRjaGVz
KCpjdXJyZW50KSk7CisgICAgfQorfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ29sbGVjdGlvbkNs
YXNzPgoraW5saW5lIHZvaWQgQ29sbGVjdGlvblRyYXZlcnNhbDxDb2xsZWN0aW9uVHJhdmVyc2Fs
VHlwZTo6RGVzY2VuZGFudHM+Ojp0cmF2ZXJzZUJhY2t3YXJkKGNvbnN0IENvbGxlY3Rpb25DbGFz
cyYgY29sbGVjdGlvbiwgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciYgY3VycmVudCwgdW5zaWdu
ZWQgY291bnQpCit7CisgICAgQVNTRVJUKGNvbGxlY3Rpb24uZWxlbWVudE1hdGNoZXMoKmN1cnJl
bnQpKTsKKyAgICBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yIGludmFsaWQ7CisgICAgZm9yICg7
IGNvdW50OyAtLWNvdW50KSB7CisgICAgICAgIGRvIHsKKyAgICAgICAgICAgIC0tY3VycmVudDsK
KyAgICAgICAgICAgIGlmIChjdXJyZW50ID09IGludmFsaWQpCisgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9IHdoaWxlICghY29sbGVjdGlvbi5lbGVtZW50TWF0Y2hlcygqY3VycmVu
dCkpOworICAgIH0KK30KKwordGVtcGxhdGUgPD4KK3N0cnVjdCBDb2xsZWN0aW9uVHJhdmVyc2Fs
PENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlOjpDaGlsZHJlbk9ubHk+IHsKKyAgICB1c2luZyBJdGVy
YXRvciA9IEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnQ+OworCisgICAgc3RhdGljIEVsZW1l
bnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnQ+IGVuZChDb250YWluZXJOb2RlJiByb290Tm9kZSkgeyBy
ZXR1cm4gRWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVudD4ocm9vdE5vZGUpOyB9CisKKyAgICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgQ29sbGVjdGlvbkNsYXNzPgorICAgIHN0YXRpYyBFbGVtZW50Q2hp
bGRJdGVyYXRvcjxFbGVtZW50PiBiZWdpbihjb25zdCBDb2xsZWN0aW9uQ2xhc3MmLCBDb250YWlu
ZXJOb2RlJiByb290Tm9kZSk7CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ29sbGVjdGlvbkNs
YXNzPgorICAgIHN0YXRpYyBFbGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50PiBsYXN0KGNvbnN0
IENvbGxlY3Rpb25DbGFzcyYsIENvbnRhaW5lck5vZGUmIHJvb3ROb2RlKTsKKworICAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBDb2xsZWN0aW9uQ2xhc3M+CisgICAgc3RhdGljIHZvaWQgdHJhdmVyc2VG
b3J3YXJkKGNvbnN0IENvbGxlY3Rpb25DbGFzcyYsIEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1l
bnQ+JiBjdXJyZW50LCB1bnNpZ25lZCBjb3VudCwgdW5zaWduZWQmIHRyYXZlcnNlZENvdW50KTsK
KworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDb2xsZWN0aW9uQ2xhc3M+CisgICAgc3RhdGljIHZv
aWQgdHJhdmVyc2VCYWNrd2FyZChjb25zdCBDb2xsZWN0aW9uQ2xhc3MmLCBFbGVtZW50Q2hpbGRJ
dGVyYXRvcjxFbGVtZW50PiYgY3VycmVudCwgdW5zaWduZWQgY291bnQpOworfTsKKwordGVtcGxh
dGUgPHR5cGVuYW1lIENvbGxlY3Rpb25DbGFzcz4KK2lubGluZSBFbGVtZW50Q2hpbGRJdGVyYXRv
cjxFbGVtZW50PiBDb2xsZWN0aW9uVHJhdmVyc2FsPENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlOjpD
aGlsZHJlbk9ubHk+OjpiZWdpbihjb25zdCBDb2xsZWN0aW9uQ2xhc3MmIGNvbGxlY3Rpb24sIENv
bnRhaW5lck5vZGUmIHJvb3ROb2RlKQoreworICAgIGF1dG8gY2hpbGRyZW4gPSBjaGlsZHJlbk9m
VHlwZTxFbGVtZW50Pihyb290Tm9kZSk7CisgICAgYXV0byBlbmQgPSBjaGlsZHJlbi5lbmQoKTsK
KyAgICBmb3IgKGF1dG8gaXQgPSBjaGlsZHJlbi5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsK
KyAgICAgICAgaWYgKGNvbGxlY3Rpb24uZWxlbWVudE1hdGNoZXMoKml0KSkKKyAgICAgICAgICAg
IHJldHVybiBpdDsKKyAgICB9CisgICAgcmV0dXJuIGVuZDsKK30KKwordGVtcGxhdGUgPHR5cGVu
YW1lIENvbGxlY3Rpb25DbGFzcz4KK2lubGluZSBFbGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50
PiBDb2xsZWN0aW9uVHJhdmVyc2FsPENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlOjpDaGlsZHJlbk9u
bHk+OjpsYXN0KGNvbnN0IENvbGxlY3Rpb25DbGFzcyYgY29sbGVjdGlvbiwgQ29udGFpbmVyTm9k
ZSYgcm9vdE5vZGUpCit7CisgICAgYXV0byBjaGlsZHJlbiA9IGNoaWxkcmVuT2ZUeXBlPEVsZW1l
bnQ+KHJvb3ROb2RlKTsKKyAgICBFbGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50PiBpbnZhbGlk
KGNvbGxlY3Rpb24ucm9vdE5vZGUoKSk7CisgICAgRWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVu
dD4gbGFzdChyb290Tm9kZSwgY2hpbGRyZW4ubGFzdCgpKTsKKyAgICBmb3IgKGF1dG8gaXQgPSBs
YXN0OyBpdCAhPSBpbnZhbGlkOyAtLWl0KSB7CisgICAgICAgIGlmIChjb2xsZWN0aW9uLmVsZW1l
bnRNYXRjaGVzKCppdCkpCisgICAgICAgICAgICByZXR1cm4gaXQ7CisgICAgfQorICAgIHJldHVy
biBpbnZhbGlkOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ29sbGVjdGlvbkNsYXNzPgoraW5s
aW5lIHZvaWQgQ29sbGVjdGlvblRyYXZlcnNhbDxDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6Q2hp
bGRyZW5Pbmx5Pjo6dHJhdmVyc2VGb3J3YXJkKGNvbnN0IENvbGxlY3Rpb25DbGFzcyYgY29sbGVj
dGlvbiwgRWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVudD4mIGN1cnJlbnQsIHVuc2lnbmVkIGNv
dW50LCB1bnNpZ25lZCYgdHJhdmVyc2VkQ291bnQpCit7CisgICAgQVNTRVJUKGNvbGxlY3Rpb24u
ZWxlbWVudE1hdGNoZXMoKmN1cnJlbnQpKTsKKyAgICBFbGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVt
ZW50PiBpbnZhbGlkKGNvbGxlY3Rpb24ucm9vdE5vZGUoKSk7CisgICAgZm9yICh0cmF2ZXJzZWRD
b3VudCA9IDA7IHRyYXZlcnNlZENvdW50IDwgY291bnQ7ICsrdHJhdmVyc2VkQ291bnQpIHsKKyAg
ICAgICAgZG8geworICAgICAgICAgICAgKytjdXJyZW50OworICAgICAgICAgICAgaWYgKGN1cnJl
bnQgPT0gaW52YWxpZCkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0gd2hpbGUg
KCFjb2xsZWN0aW9uLmVsZW1lbnRNYXRjaGVzKCpjdXJyZW50KSk7CisgICAgfQorfQorCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgQ29sbGVjdGlvbkNsYXNzPgoraW5saW5lIHZvaWQgQ29sbGVjdGlvblRy
YXZlcnNhbDxDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6Q2hpbGRyZW5Pbmx5Pjo6dHJhdmVyc2VC
YWNrd2FyZChjb25zdCBDb2xsZWN0aW9uQ2xhc3MmIGNvbGxlY3Rpb24sIEVsZW1lbnRDaGlsZEl0
ZXJhdG9yPEVsZW1lbnQ+JiBjdXJyZW50LCB1bnNpZ25lZCBjb3VudCkKK3sKKyAgICBBU1NFUlQo
Y29sbGVjdGlvbi5lbGVtZW50TWF0Y2hlcygqY3VycmVudCkpOworICAgIEVsZW1lbnRDaGlsZEl0
ZXJhdG9yPEVsZW1lbnQ+IGludmFsaWQoY29sbGVjdGlvbi5yb290Tm9kZSgpKTsKKyAgICBmb3Ig
KDsgY291bnQ7IC0tY291bnQpIHsKKyAgICAgICAgZG8geworICAgICAgICAgICAgLS1jdXJyZW50
OworICAgICAgICAgICAgaWYgKGN1cnJlbnQgPT0gaW52YWxpZCkKKyAgICAgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0gd2hpbGUgKCFjb2xsZWN0aW9uLmVsZW1lbnRNYXRjaGVzKCpjdXJy
ZW50KSk7CisgICAgfQorfQorCit0ZW1wbGF0ZSA8Pgorc3RydWN0IENvbGxlY3Rpb25UcmF2ZXJz
YWw8Q29sbGVjdGlvblRyYXZlcnNhbFR5cGU6OkN1c3RvbUZvcndhcmRPbmx5PiB7CisgICAgdXNp
bmcgSXRlcmF0b3IgPSBFbGVtZW50KjsKKworICAgIHN0YXRpYyBFbGVtZW50KiBlbmQoQ29udGFp
bmVyTm9kZSYpIHsgcmV0dXJuIG51bGxwdHI7IH0KKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBD
b2xsZWN0aW9uQ2xhc3M+CisgICAgc3RhdGljIEVsZW1lbnQqIGJlZ2luKGNvbnN0IENvbGxlY3Rp
b25DbGFzcyYsIENvbnRhaW5lck5vZGUmKTsKKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDb2xs
ZWN0aW9uQ2xhc3M+CisgICAgc3RhdGljIEVsZW1lbnQqIGxhc3QoY29uc3QgQ29sbGVjdGlvbkNs
YXNzJiwgQ29udGFpbmVyTm9kZSYpOworCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIENvbGxlY3Rp
b25DbGFzcz4KKyAgICBzdGF0aWMgdm9pZCB0cmF2ZXJzZUZvcndhcmQoY29uc3QgQ29sbGVjdGlv
bkNsYXNzJiwgRWxlbWVudComIGN1cnJlbnQsIHVuc2lnbmVkIGNvdW50LCB1bnNpZ25lZCYgdHJh
dmVyc2VkQ291bnQpOworCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIENvbGxlY3Rpb25DbGFzcz4K
KyAgICBzdGF0aWMgdm9pZCB0cmF2ZXJzZUJhY2t3YXJkKGNvbnN0IENvbGxlY3Rpb25DbGFzcyYs
IEVsZW1lbnQqJiwgdW5zaWduZWQgY291bnQpOworfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIENv
bGxlY3Rpb25DbGFzcz4KK2lubGluZSBFbGVtZW50KiBDb2xsZWN0aW9uVHJhdmVyc2FsPENvbGxl
Y3Rpb25UcmF2ZXJzYWxUeXBlOjpDdXN0b21Gb3J3YXJkT25seT46OmJlZ2luKGNvbnN0IENvbGxl
Y3Rpb25DbGFzcyYgY29sbGVjdGlvbiwgQ29udGFpbmVyTm9kZSYpCit7CisgICAgcmV0dXJuIGNv
bGxlY3Rpb24uY3VzdG9tRWxlbWVudEFmdGVyKG51bGxwdHIpOworfQorCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgQ29sbGVjdGlvbkNsYXNzPgoraW5saW5lIEVsZW1lbnQqIENvbGxlY3Rpb25UcmF2ZXJz
YWw8Q29sbGVjdGlvblRyYXZlcnNhbFR5cGU6OkN1c3RvbUZvcndhcmRPbmx5Pjo6bGFzdChjb25z
dCBDb2xsZWN0aW9uQ2xhc3MmLCBDb250YWluZXJOb2RlJikKK3sKKyAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIENv
bGxlY3Rpb25DbGFzcz4KK2lubGluZSB2b2lkIENvbGxlY3Rpb25UcmF2ZXJzYWw8Q29sbGVjdGlv
blRyYXZlcnNhbFR5cGU6OkN1c3RvbUZvcndhcmRPbmx5Pjo6dHJhdmVyc2VGb3J3YXJkKGNvbnN0
IENvbGxlY3Rpb25DbGFzcyYgY29sbGVjdGlvbiwgRWxlbWVudComIGN1cnJlbnQsIHVuc2lnbmVk
IGNvdW50LCB1bnNpZ25lZCYgdHJhdmVyc2VkQ291bnQpCit7CisgICAgRWxlbWVudCogZWxlbWVu
dCA9IGN1cnJlbnQ7CisgICAgZm9yICh0cmF2ZXJzZWRDb3VudCA9IDA7IHRyYXZlcnNlZENvdW50
IDwgY291bnQ7ICsrdHJhdmVyc2VkQ291bnQpIHsKKyAgICAgICAgZWxlbWVudCA9IGNvbGxlY3Rp
b24uY3VzdG9tRWxlbWVudEFmdGVyKGVsZW1lbnQpOworICAgICAgICBpZiAoIWVsZW1lbnQpIHsK
KyAgICAgICAgICAgIGN1cnJlbnQgPSBudWxscHRyOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisgICAgfQorICAgIGN1cnJlbnQgPSBlbGVtZW50OworfQorCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgQ29sbGVjdGlvbkNsYXNzPgoraW5saW5lIHZvaWQgQ29sbGVjdGlvblRyYXZlcnNhbDxD
b2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6Q3VzdG9tRm9yd2FyZE9ubHk+Ojp0cmF2ZXJzZUJhY2t3
YXJkKGNvbnN0IENvbGxlY3Rpb25DbGFzcyYsIEVsZW1lbnQqJiwgdW5zaWduZWQgY291bnQpCit7
CisgICAgVU5VU0VEX1BBUkFNKGNvdW50KTsKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gQ29sbGVjdGlvblRyYXZlcnNh
bF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0NvbGxlY3Rpb25UeXBlLmggYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0NvbGxlY3Rpb25UeXBlLmgKaW5kZXggNTEzMGFmOTFkYWU4Njhh
NzE0ZjZlMDU1MGJmYWFkZjQwMWY2NWJiYy4uMWE5MjJkMGZmOTA2MDg0YWQxNzM0YjA3MGY4NWEw
NGNmYjg5NGIxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9Db2xsZWN0aW9uVHlw
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ29sbGVjdGlvblR5cGUuaApAQCAtNTMsNiAr
NTMsNDIgQEAgZW51bSBDb2xsZWN0aW9uVHlwZSB7CiAgICAgRm9ybUNvbnRyb2xzCiB9OwogCi19
IC8vIG5hbWVzcGFjZQorZW51bSBjbGFzcyBDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZSB7IERlc2Nl
bmRhbnRzLCBDaGlsZHJlbk9ubHksIEN1c3RvbUZvcndhcmRPbmx5IH07Cit0ZW1wbGF0ZTxDb2xs
ZWN0aW9uVHlwZSBjb2xsZWN0aW9uVHlwZT4KK3N0cnVjdCBDb2xsZWN0aW9uVHlwZVRyYWl0cyB7
CisgICAgc3RhdGljIGNvbnN0IENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlIHRyYXZlcnNhbFR5cGUg
PSBDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6RGVzY2VuZGFudHM7Cit9OworCit0ZW1wbGF0ZTw+
CitzdHJ1Y3QgQ29sbGVjdGlvblR5cGVUcmFpdHM8Tm9kZUNoaWxkcmVuPiB7CisgICAgc3RhdGlj
IGNvbnN0IENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlIHRyYXZlcnNhbFR5cGUgPSBDb2xsZWN0aW9u
VHJhdmVyc2FsVHlwZTo6Q2hpbGRyZW5Pbmx5OworfTsKKwordGVtcGxhdGU8Pgorc3RydWN0IENv
bGxlY3Rpb25UeXBlVHJhaXRzPFRSQ2VsbHM+IHsKKyAgICBzdGF0aWMgY29uc3QgQ29sbGVjdGlv
blRyYXZlcnNhbFR5cGUgdHJhdmVyc2FsVHlwZSA9IENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlOjpD
aGlsZHJlbk9ubHk7Cit9OworCit0ZW1wbGF0ZTw+CitzdHJ1Y3QgQ29sbGVjdGlvblR5cGVUcmFp
dHM8VFNlY3Rpb25Sb3dzPiB7CisgICAgc3RhdGljIGNvbnN0IENvbGxlY3Rpb25UcmF2ZXJzYWxU
eXBlIHRyYXZlcnNhbFR5cGUgPSBDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6Q2hpbGRyZW5Pbmx5
OworfTsKKwordGVtcGxhdGU8Pgorc3RydWN0IENvbGxlY3Rpb25UeXBlVHJhaXRzPFRhYmxlVEJv
ZGllcz4geworICAgIHN0YXRpYyBjb25zdCBDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZSB0cmF2ZXJz
YWxUeXBlID0gQ29sbGVjdGlvblRyYXZlcnNhbFR5cGU6OkNoaWxkcmVuT25seTsKK307CisKK3Rl
bXBsYXRlPD4KK3N0cnVjdCBDb2xsZWN0aW9uVHlwZVRyYWl0czxUYWJsZVJvd3M+IHsKKyAgICBz
dGF0aWMgY29uc3QgQ29sbGVjdGlvblRyYXZlcnNhbFR5cGUgdHJhdmVyc2FsVHlwZSA9IENvbGxl
Y3Rpb25UcmF2ZXJzYWxUeXBlOjpDdXN0b21Gb3J3YXJkT25seTsKK307CisKK3RlbXBsYXRlPD4K
K3N0cnVjdCBDb2xsZWN0aW9uVHlwZVRyYWl0czxGb3JtQ29udHJvbHM+IHsKKyAgICBzdGF0aWMg
Y29uc3QgQ29sbGVjdGlvblRyYXZlcnNhbFR5cGUgdHJhdmVyc2FsVHlwZSA9IENvbGxlY3Rpb25U
cmF2ZXJzYWxUeXBlOjpDdXN0b21Gb3J3YXJkT25seTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0dlbmVyaWND
YWNoZWRIVE1MQ29sbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0dlbmVyaWNDYWNo
ZWRIVE1MQ29sbGVjdGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjZiY2VkYTAxYmI4NTM5OTgzZTRjNTdi
ZjYzM2UzM2RiOWU0ZmVhZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
R2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uLmNwcApAQCAtMCwwICsxLDg5IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdlbmVyaWNDYWNoZWRIVE1MQ29s
bGVjdGlvbi5oIgorCisjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVkZSAiSFRNTE9iamVj
dEVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MT3B0aW9uRWxlbWVudC5oIgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK3VzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CisKK3RlbXBsYXRlIDxDb2xs
ZWN0aW9uVHJhdmVyc2FsVHlwZSB0cmF2ZXJzYWxUeXBlPgorYm9vbCBHZW5lcmljQ2FjaGVkSFRN
TENvbGxlY3Rpb248dHJhdmVyc2FsVHlwZT46OmVsZW1lbnRNYXRjaGVzKEVsZW1lbnQmIGVsZW1l
bnQpIGNvbnN0Cit7CisgICAgc3dpdGNoICh0aGlzLT50eXBlKCkpIHsKKyAgICBjYXNlIE5vZGVD
aGlsZHJlbjoKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgY2FzZSBEb2NJbWFnZXM6CisgICAg
ICAgIHJldHVybiBlbGVtZW50Lmhhc1RhZ05hbWUoaW1nVGFnKTsKKyAgICBjYXNlIERvY1Njcmlw
dHM6CisgICAgICAgIHJldHVybiBlbGVtZW50Lmhhc1RhZ05hbWUoc2NyaXB0VGFnKTsKKyAgICBj
YXNlIERvY0Zvcm1zOgorICAgICAgICByZXR1cm4gZWxlbWVudC5oYXNUYWdOYW1lKGZvcm1UYWcp
OworICAgIGNhc2UgVGFibGVUQm9kaWVzOgorICAgICAgICByZXR1cm4gZWxlbWVudC5oYXNUYWdO
YW1lKHRib2R5VGFnKTsKKyAgICBjYXNlIFRSQ2VsbHM6CisgICAgICAgIHJldHVybiBlbGVtZW50
Lmhhc1RhZ05hbWUodGRUYWcpIHx8IGVsZW1lbnQuaGFzVGFnTmFtZSh0aFRhZyk7CisgICAgY2Fz
ZSBUU2VjdGlvblJvd3M6CisgICAgICAgIHJldHVybiBlbGVtZW50Lmhhc1RhZ05hbWUodHJUYWcp
OworICAgIGNhc2UgU2VsZWN0ZWRPcHRpb25zOgorICAgICAgICByZXR1cm4gaXM8SFRNTE9wdGlv
bkVsZW1lbnQ+KGVsZW1lbnQpICYmIGRvd25jYXN0PEhUTUxPcHRpb25FbGVtZW50PihlbGVtZW50
KS5zZWxlY3RlZCgpOworICAgIGNhc2UgRGF0YUxpc3RPcHRpb25zOgorICAgICAgICBpZiAoaXM8
SFRNTE9wdGlvbkVsZW1lbnQ+KGVsZW1lbnQpKSB7CisgICAgICAgICAgICBIVE1MT3B0aW9uRWxl
bWVudCYgb3B0aW9uID0gZG93bmNhc3Q8SFRNTE9wdGlvbkVsZW1lbnQ+KGVsZW1lbnQpOworICAg
ICAgICAgICAgaWYgKCFvcHRpb24uaXNEaXNhYmxlZEZvcm1Db250cm9sKCkgJiYgIW9wdGlvbi52
YWx1ZSgpLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAg
fQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgY2FzZSBNYXBBcmVhczoKKyAgICAgICAgcmV0
dXJuIGVsZW1lbnQuaGFzVGFnTmFtZShhcmVhVGFnKTsKKyAgICBjYXNlIERvY0FwcGxldHM6Cisg
ICAgICAgIHJldHVybiBpczxIVE1MQXBwbGV0RWxlbWVudD4oZWxlbWVudCkgfHwgKGlzPEhUTUxP
YmplY3RFbGVtZW50PihlbGVtZW50KSAmJiBkb3duY2FzdDxIVE1MT2JqZWN0RWxlbWVudD4oZWxl
bWVudCkuY29udGFpbnNKYXZhQXBwbGV0KCkpOworICAgIGNhc2UgRG9jRW1iZWRzOgorICAgICAg
ICByZXR1cm4gZWxlbWVudC5oYXNUYWdOYW1lKGVtYmVkVGFnKTsKKyAgICBjYXNlIERvY0xpbmtz
OgorICAgICAgICByZXR1cm4gKGVsZW1lbnQuaGFzVGFnTmFtZShhVGFnKSB8fCBlbGVtZW50Lmhh
c1RhZ05hbWUoYXJlYVRhZykpICYmIGVsZW1lbnQuZmFzdEhhc0F0dHJpYnV0ZShocmVmQXR0cik7
CisgICAgY2FzZSBEb2NBbmNob3JzOgorICAgICAgICByZXR1cm4gZWxlbWVudC5oYXNUYWdOYW1l
KGFUYWcpICYmIGVsZW1lbnQuZmFzdEhhc0F0dHJpYnV0ZShuYW1lQXR0cik7CisgICAgY2FzZSBE
b2NBbGw6CisgICAgY2FzZSBEb2N1bWVudE5hbWVkSXRlbXM6CisgICAgY2FzZSBGb3JtQ29udHJv
bHM6CisgICAgY2FzZSBTZWxlY3RPcHRpb25zOgorICAgIGNhc2UgVGFibGVSb3dzOgorICAgIGNh
c2UgV2luZG93TmFtZWRJdGVtczoKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIC8vIFJlbWFp
bmluZyBjb2xsZWN0aW9uIHR5cGVzIGhhdmUgdGhlaXIgb3duIENhY2hlZEhUTUxDb2xsZWN0aW9u
IHN1YmNsYXNzZXMgYW5kIGFyZSBub3QgdXNpbmcgR2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9u
LgorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30KK3RlbXBs
YXRlIGJvb2wgR2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uPENvbGxlY3Rpb25UcmF2ZXJzYWxU
eXBlOjpEZXNjZW5kYW50cz46OmVsZW1lbnRNYXRjaGVzKEVsZW1lbnQmKSBjb25zdDsKK3RlbXBs
YXRlIGJvb2wgR2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uPENvbGxlY3Rpb25UcmF2ZXJzYWxU
eXBlOjpDaGlsZHJlbk9ubHk+OjplbGVtZW50TWF0Y2hlcyhFbGVtZW50JikgY29uc3Q7CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvR2Vu
ZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0dlbmVyaWND
YWNoZWRIVE1MQ29sbGVjdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM2MzMxMzNmZGEwYTJhM2YyYmJjYTNh
ZTVlYzk0ZTEzYzc2ZWI4ZTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0dlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbi5oCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIEdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbl9oCisjZGVmaW5lIEdlbmVy
aWNDYWNoZWRIVE1MQ29sbGVjdGlvbl9oCisKKyNpbmNsdWRlICJDYWNoZWRIVE1MQ29sbGVjdGlv
bi5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3RlbXBsYXRlIDxDb2xsZWN0aW9uVHJhdmVy
c2FsVHlwZSB0cmF2ZXJzYWxUeXBlPgorY2xhc3MgR2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9u
IGZpbmFsIDogcHVibGljIENhY2hlZEhUTUxDb2xsZWN0aW9uPEdlbmVyaWNDYWNoZWRIVE1MQ29s
bGVjdGlvbjx0cmF2ZXJzYWxUeXBlPiwgdHJhdmVyc2FsVHlwZT4geworcHVibGljOgorICAgIHN0
YXRpYyBSZWY8R2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uPiBjcmVhdGUoQ29udGFpbmVyTm9k
ZSYgYmFzZSwgQ29sbGVjdGlvblR5cGUgY29sbGVjdGlvblR5cGUpCisgICAgeworICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBHZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb24oYmFzZSwgY29s
bGVjdGlvblR5cGUpKTsKKyAgICB9CisKKyAgICBib29sIGVsZW1lbnRNYXRjaGVzKEVsZW1lbnQm
KSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBHZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb24oQ29u
dGFpbmVyTm9kZSYgYmFzZSwgQ29sbGVjdGlvblR5cGUgY29sbGVjdGlvblR5cGUpCisgICAgICAg
IDogQ2FjaGVkSFRNTENvbGxlY3Rpb248R2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uPHRyYXZl
cnNhbFR5cGU+LCB0cmF2ZXJzYWxUeXBlPihiYXNlLCBjb2xsZWN0aW9uVHlwZSkKKyAgICB7IH0K
K307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEdlbmVyaWNDYWNoZWRI
VE1MQ29sbGVjdGlvbl9oCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFs
bENvbGxlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQWxsQ29sbGVjdGlvbi5j
cHAKaW5kZXggMDE2Njg3MTRlY2JiYmQwZmViZDFlNTBjNGFiZDRiMDkxM2I0MjdmMy4uZGFiMDUw
MGZhZDg4YzY1NGE1YjkxY2JlNWQzZDlhNzQ2Mjc5OGIxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MQWxsQ29sbGVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQWxsQ29sbGVjdGlvbi5jcHAKQEAgLTM2LDcgKzM2LDcgQEAgUmVmPEhUTUxBbGxDb2xs
ZWN0aW9uPiBIVE1MQWxsQ29sbGVjdGlvbjo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgQ29s
bGVjdGlvblQKIH0KIAogaW5saW5lIEhUTUxBbGxDb2xsZWN0aW9uOjpIVE1MQWxsQ29sbGVjdGlv
bihEb2N1bWVudCYgZG9jdW1lbnQsIENvbGxlY3Rpb25UeXBlIHR5cGUpCi0gICAgOiBIVE1MQ29s
bGVjdGlvbihkb2N1bWVudCwgdHlwZSkKKyAgICA6IENhY2hlZEhUTUxDb2xsZWN0aW9uPEhUTUxB
bGxDb2xsZWN0aW9uLCBDb2xsZWN0aW9uVHlwZVRyYWl0czxEb2NBbGw+Ojp0cmF2ZXJzYWxUeXBl
Pihkb2N1bWVudCwgdHlwZSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQWxsQ29sbGVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQWxsQ29sbGVj
dGlvbi5oCmluZGV4IDUxNDUxMTc0YmQyODNiMjAxYzg5MmUyZWE0YTVhYjlmYjYxNWJmMDEuLmI2
MDExYjQ5NjJkZTBjNzc3M2NiMzFiZTkxNjZkM2U5OGI5MDRkYzAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEFsbENvbGxlY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxBbGxDb2xsZWN0aW9uLmgKQEAgLTI2LDE2ICsyNiwxOSBAQAogI2lmbmRlZiBIVE1M
QWxsQ29sbGVjdGlvbl9oCiAjZGVmaW5lIEhUTUxBbGxDb2xsZWN0aW9uX2gKIAotI2luY2x1ZGUg
IkhUTUxDb2xsZWN0aW9uLmgiCisjaW5jbHVkZSAiQ2FjaGVkSFRNTENvbGxlY3Rpb24uaCIKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBIVE1MQWxsQ29sbGVjdGlvbiBmaW5hbCA6IHB1
YmxpYyBIVE1MQ29sbGVjdGlvbiB7CitjbGFzcyBIVE1MQWxsQ29sbGVjdGlvbiBmaW5hbCA6IHB1
YmxpYyBDYWNoZWRIVE1MQ29sbGVjdGlvbjxIVE1MQWxsQ29sbGVjdGlvbiwgQ29sbGVjdGlvblR5
cGVUcmFpdHM8RG9jQWxsPjo6dHJhdmVyc2FsVHlwZT4gewogcHVibGljOgogICAgIHN0YXRpYyBS
ZWY8SFRNTEFsbENvbGxlY3Rpb24+IGNyZWF0ZShEb2N1bWVudCYsIENvbGxlY3Rpb25UeXBlKTsK
IAogICAgIEVsZW1lbnQqIG5hbWVkSXRlbVdpdGhJbmRleChjb25zdCBBdG9taWNTdHJpbmcmIG5h
bWUsIHVuc2lnbmVkIGluZGV4KSBjb25zdDsKIAorICAgIC8vIEZvciBDYWNoZWRIVE1MQ29sbGVj
dGlvbi4KKyAgICBib29sIGVsZW1lbnRNYXRjaGVzKEVsZW1lbnQmKSBjb25zdCB7IHJldHVybiB0
cnVlOyB9CisKIHByaXZhdGU6CiAgICAgSFRNTEFsbENvbGxlY3Rpb24oRG9jdW1lbnQmLCBDb2xs
ZWN0aW9uVHlwZSk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29s
bGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmNwcAppbmRl
eCAzYjRiNjJmNzI2YmM0NTAzOGNiMzkzMTE2MDRmODU3NTMwYjY4MWRmLi4xMTgyY2ZiZGZjMWZi
YTM2ZGE2ZjUzYTEzY2M1OWMxZWE1ODhmNmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxDb2xsZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDb2xs
ZWN0aW9uLmNwcApAQCAtMjMsNDggKzIzLDE0IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiSFRNTENvbGxlY3Rpb24uaCIKIAotI2luY2x1ZGUgIkVsZW1lbnRUcmF2ZXJzYWwuaCIK
LSNpbmNsdWRlICJIVE1MRG9jdW1lbnQuaCIKLSNpbmNsdWRlICJIVE1MTmFtZUNvbGxlY3Rpb24u
aCIKKyNpbmNsdWRlICJDYWNoZWRIVE1MQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxOYW1l
cy5oIgotI2luY2x1ZGUgIkhUTUxPYmplY3RFbGVtZW50LmgiCi0jaW5jbHVkZSAiSFRNTE9wdGlv
bkVsZW1lbnQuaCIKICNpbmNsdWRlICJOb2RlUmFyZURhdGEuaCIKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCi1zdGF0aWMgYm9vbCBzaG91bGRP
bmx5SW5jbHVkZURpcmVjdENoaWxkcmVuKENvbGxlY3Rpb25UeXBlIHR5cGUpCi17Ci0gICAgc3dp
dGNoICh0eXBlKSB7Ci0gICAgY2FzZSBEb2NBbGw6Ci0gICAgY2FzZSBEb2NBbmNob3JzOgotICAg
IGNhc2UgRG9jQXBwbGV0czoKLSAgICBjYXNlIERvY0VtYmVkczoKLSAgICBjYXNlIERvY0Zvcm1z
OgotICAgIGNhc2UgRG9jSW1hZ2VzOgotICAgIGNhc2UgRG9jTGlua3M6Ci0gICAgY2FzZSBEb2NT
Y3JpcHRzOgotICAgIGNhc2UgRG9jdW1lbnROYW1lZEl0ZW1zOgotICAgIGNhc2UgTWFwQXJlYXM6
Ci0gICAgY2FzZSBUYWJsZVJvd3M6Ci0gICAgY2FzZSBTZWxlY3RPcHRpb25zOgotICAgIGNhc2Ug
U2VsZWN0ZWRPcHRpb25zOgotICAgIGNhc2UgRGF0YUxpc3RPcHRpb25zOgotICAgIGNhc2UgV2lu
ZG93TmFtZWRJdGVtczoKLSAgICBjYXNlIEZvcm1Db250cm9sczoKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIGNhc2UgTm9kZUNoaWxkcmVuOgotICAgIGNhc2UgVFJDZWxsczoKLSAgICBjYXNl
IFRTZWN0aW9uUm93czoKLSAgICBjYXNlIFRhYmxlVEJvZGllczoKLSAgICAgICAgcmV0dXJuIHRy
dWU7Ci0gICAgfQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBmYWxzZTsK
LX0KLQogaW5saW5lIGF1dG8gSFRNTENvbGxlY3Rpb246OnJvb3RUeXBlRnJvbUNvbGxlY3Rpb25U
eXBlKENvbGxlY3Rpb25UeXBlIHR5cGUpIC0+IFJvb3RUeXBlCiB7CiAgICAgc3dpdGNoICh0eXBl
KSB7CkBAIC0xMzEsMjYyICs5NywyOSBAQCBzdGF0aWMgTm9kZUxpc3RJbnZhbGlkYXRpb25UeXBl
IGludmFsaWRhdGlvblR5cGVFeGNsdWRpbmdJZEFuZE5hbWVBdHRyaWJ1dGVzKENvbAogICAgIHJl
dHVybiBEb05vdEludmFsaWRhdGVPbkF0dHJpYnV0ZUNoYW5nZXM7CiB9CiAKLUhUTUxDb2xsZWN0
aW9uOjpIVE1MQ29sbGVjdGlvbihDb250YWluZXJOb2RlJiBvd25lck5vZGUsIENvbGxlY3Rpb25U
eXBlIHR5cGUsIEVsZW1lbnRUcmF2ZXJzYWxUeXBlIHRyYXZlcnNhbFR5cGUpCitIVE1MQ29sbGVj
dGlvbjo6SFRNTENvbGxlY3Rpb24oQ29udGFpbmVyTm9kZSYgb3duZXJOb2RlLCBDb2xsZWN0aW9u
VHlwZSB0eXBlKQogICAgIDogbV9vd25lck5vZGUob3duZXJOb2RlKQotICAgICwgbV9pbmRleENh
Y2hlKCp0aGlzKQogICAgICwgbV9jb2xsZWN0aW9uVHlwZSh0eXBlKQogICAgICwgbV9pbnZhbGlk
YXRpb25UeXBlKGludmFsaWRhdGlvblR5cGVFeGNsdWRpbmdJZEFuZE5hbWVBdHRyaWJ1dGVzKHR5
cGUpKQogICAgICwgbV9yb290VHlwZShyb290VHlwZUZyb21Db2xsZWN0aW9uVHlwZSh0eXBlKSkK
LSAgICAsIG1fc2hvdWxkT25seUluY2x1ZGVEaXJlY3RDaGlsZHJlbihzaG91bGRPbmx5SW5jbHVk
ZURpcmVjdENoaWxkcmVuKHR5cGUpKQotICAgICwgbV91c2VzQ3VzdG9tRm9yd2FyZE9ubHlUcmF2
ZXJzYWwodHJhdmVyc2FsVHlwZSA9PSBDdXN0b21Gb3J3YXJkT25seVRyYXZlcnNhbCkKIHsKICAg
ICBBU1NFUlQobV9yb290VHlwZSA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocm9vdFR5cGVGcm9t
Q29sbGVjdGlvblR5cGUodHlwZSkpKTsKICAgICBBU1NFUlQobV9pbnZhbGlkYXRpb25UeXBlID09
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihpbnZhbGlkYXRpb25UeXBlRXhjbHVkaW5nSWRBbmROYW1l
QXR0cmlidXRlcyh0eXBlKSkpOwogICAgIEFTU0VSVChtX2NvbGxlY3Rpb25UeXBlID09IHN0YXRp
Y19jYXN0PHVuc2lnbmVkPih0eXBlKSk7CiB9CiAKLVJlZjxIVE1MQ29sbGVjdGlvbj4gSFRNTENv
bGxlY3Rpb246OmNyZWF0ZShDb250YWluZXJOb2RlJiBiYXNlLCBDb2xsZWN0aW9uVHlwZSB0eXBl
KQotewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEhUTUxDb2xsZWN0aW9uKGJhc2UsIHR5cGUp
KTsKLX0KLQogSFRNTENvbGxlY3Rpb246On5IVE1MQ29sbGVjdGlvbigpCiB7Ci0gICAgaWYgKG1f
aW5kZXhDYWNoZS5oYXNWYWxpZENhY2hlKCp0aGlzKSkKLSAgICAgICAgZG9jdW1lbnQoKS51bnJl
Z2lzdGVyQ29sbGVjdGlvbigqdGhpcyk7CiAgICAgaWYgKGhhc05hbWVkRWxlbWVudENhY2hlKCkp
CiAgICAgICAgIGRvY3VtZW50KCkuY29sbGVjdGlvbldpbGxDbGVhcklkTmFtZU1hcCgqdGhpcyk7
CisKICAgICAvLyBIVE1MTmFtZUNvbGxlY3Rpb24gcmVtb3ZlcyBjYWNoZSBieSBpdHNlbGYuCiAg
ICAgaWYgKHR5cGUoKSAhPSBXaW5kb3dOYW1lZEl0ZW1zICYmIHR5cGUoKSAhPSBEb2N1bWVudE5h
bWVkSXRlbXMpCiAgICAgICAgIG93bmVyTm9kZSgpLm5vZGVMaXN0cygpLT5yZW1vdmVDYWNoZWRD
b2xsZWN0aW9uKHRoaXMpOwogfQogCi1Db250YWluZXJOb2RlJiBIVE1MQ29sbGVjdGlvbjo6cm9v
dE5vZGUoKSBjb25zdAotewotICAgIGlmIChpc1Jvb3RlZEF0RG9jdW1lbnQoKSAmJiBvd25lck5v
ZGUoKS5pbkRvY3VtZW50KCkpCi0gICAgICAgIHJldHVybiBvd25lck5vZGUoKS5kb2N1bWVudCgp
OwotCi0gICAgcmV0dXJuIG93bmVyTm9kZSgpOwotfQotCi1zdGF0aWMgaW5saW5lIGJvb2wgaXNN
YXRjaGluZ0hUTUxFbGVtZW50KGNvbnN0IEhUTUxDb2xsZWN0aW9uJiBjb2xsZWN0aW9uLCBIVE1M
RWxlbWVudCYgZWxlbWVudCkKK3ZvaWQgSFRNTENvbGxlY3Rpb246OmludmFsaWRhdGVDYWNoZShE
b2N1bWVudCYgZG9jdW1lbnQpCiB7Ci0gICAgc3dpdGNoIChjb2xsZWN0aW9uLnR5cGUoKSkgewot
ICAgIGNhc2UgRG9jSW1hZ2VzOgotICAgICAgICByZXR1cm4gZWxlbWVudC5oYXNUYWdOYW1lKGlt
Z1RhZyk7Ci0gICAgY2FzZSBEb2NTY3JpcHRzOgotICAgICAgICByZXR1cm4gZWxlbWVudC5oYXNU
YWdOYW1lKHNjcmlwdFRhZyk7Ci0gICAgY2FzZSBEb2NGb3JtczoKLSAgICAgICAgcmV0dXJuIGVs
ZW1lbnQuaGFzVGFnTmFtZShmb3JtVGFnKTsKLSAgICBjYXNlIFRhYmxlVEJvZGllczoKLSAgICAg
ICAgcmV0dXJuIGVsZW1lbnQuaGFzVGFnTmFtZSh0Ym9keVRhZyk7Ci0gICAgY2FzZSBUUkNlbGxz
OgotICAgICAgICByZXR1cm4gZWxlbWVudC5oYXNUYWdOYW1lKHRkVGFnKSB8fCBlbGVtZW50Lmhh
c1RhZ05hbWUodGhUYWcpOwotICAgIGNhc2UgVFNlY3Rpb25Sb3dzOgotICAgICAgICByZXR1cm4g
ZWxlbWVudC5oYXNUYWdOYW1lKHRyVGFnKTsKLSAgICBjYXNlIFNlbGVjdE9wdGlvbnM6Ci0gICAg
ICAgIHJldHVybiBlbGVtZW50Lmhhc1RhZ05hbWUob3B0aW9uVGFnKTsKLSAgICBjYXNlIFNlbGVj
dGVkT3B0aW9uczoKLSAgICAgICAgcmV0dXJuIGlzPEhUTUxPcHRpb25FbGVtZW50PihlbGVtZW50
KSAmJiBkb3duY2FzdDxIVE1MT3B0aW9uRWxlbWVudD4oZWxlbWVudCkuc2VsZWN0ZWQoKTsKLSAg
ICBjYXNlIERhdGFMaXN0T3B0aW9uczoKLSAgICAgICAgaWYgKGlzPEhUTUxPcHRpb25FbGVtZW50
PihlbGVtZW50KSkgewotICAgICAgICAgICAgSFRNTE9wdGlvbkVsZW1lbnQmIG9wdGlvbiA9IGRv
d25jYXN0PEhUTUxPcHRpb25FbGVtZW50PihlbGVtZW50KTsKLSAgICAgICAgICAgIGlmICghb3B0
aW9uLmlzRGlzYWJsZWRGb3JtQ29udHJvbCgpICYmICFvcHRpb24udmFsdWUoKS5pc0VtcHR5KCkp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIGNhc2UgTWFwQXJlYXM6Ci0gICAgICAgIHJldHVybiBlbGVtZW50Lmhhc1Rh
Z05hbWUoYXJlYVRhZyk7Ci0gICAgY2FzZSBEb2NBcHBsZXRzOgotICAgICAgICByZXR1cm4gaXM8
SFRNTEFwcGxldEVsZW1lbnQ+KGVsZW1lbnQpIHx8IChpczxIVE1MT2JqZWN0RWxlbWVudD4oZWxl
bWVudCkgJiYgZG93bmNhc3Q8SFRNTE9iamVjdEVsZW1lbnQ+KGVsZW1lbnQpLmNvbnRhaW5zSmF2
YUFwcGxldCgpKTsKLSAgICBjYXNlIERvY0VtYmVkczoKLSAgICAgICAgcmV0dXJuIGVsZW1lbnQu
aGFzVGFnTmFtZShlbWJlZFRhZyk7Ci0gICAgY2FzZSBEb2NMaW5rczoKLSAgICAgICAgcmV0dXJu
IChlbGVtZW50Lmhhc1RhZ05hbWUoYVRhZykgfHwgZWxlbWVudC5oYXNUYWdOYW1lKGFyZWFUYWcp
KSAmJiBlbGVtZW50LmZhc3RIYXNBdHRyaWJ1dGUoaHJlZkF0dHIpOwotICAgIGNhc2UgRG9jQW5j
aG9yczoKLSAgICAgICAgcmV0dXJuIGVsZW1lbnQuaGFzVGFnTmFtZShhVGFnKSAmJiBlbGVtZW50
LmZhc3RIYXNBdHRyaWJ1dGUobmFtZUF0dHIpOwotICAgIGNhc2UgRG9jdW1lbnROYW1lZEl0ZW1z
OgotICAgICAgICByZXR1cm4gZG93bmNhc3Q8RG9jdW1lbnROYW1lQ29sbGVjdGlvbj4oY29sbGVj
dGlvbikuZWxlbWVudE1hdGNoZXMoZWxlbWVudCk7Ci0gICAgY2FzZSBEb2NBbGw6Ci0gICAgY2Fz
ZSBOb2RlQ2hpbGRyZW46Ci0gICAgY2FzZSBXaW5kb3dOYW1lZEl0ZW1zOgotICAgIGNhc2UgRm9y
bUNvbnRyb2xzOgotICAgIGNhc2UgVGFibGVSb3dzOgotICAgICAgICBicmVhazsKLSAgICB9Ci0g
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1zdGF0aWMg
aW5saW5lIGJvb2wgaXNNYXRjaGluZ0VsZW1lbnQoY29uc3QgSFRNTENvbGxlY3Rpb24mIGNvbGxl
Y3Rpb24sIEVsZW1lbnQmIGVsZW1lbnQpCi17Ci0gICAgLy8gQ29sbGVjdGlvbiB0eXBlcyB0aGF0
IGRlYWwgd2l0aCBhbnkgdHlwZSBvZiBFbGVtZW50cywgbm90IGp1c3QgSFRNTEVsZW1lbnRzLgot
ICAgIHN3aXRjaCAoY29sbGVjdGlvbi50eXBlKCkpIHsKLSAgICBjYXNlIERvY0FsbDoKLSAgICBj
YXNlIE5vZGVDaGlsZHJlbjoKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgY2FzZSBXaW5kb3dO
YW1lZEl0ZW1zOgotICAgICAgICByZXR1cm4gZG93bmNhc3Q8V2luZG93TmFtZUNvbGxlY3Rpb24+
KGNvbGxlY3Rpb24pLmVsZW1lbnRNYXRjaGVzKGVsZW1lbnQpOwotICAgIGRlZmF1bHQ6Ci0gICAg
ICAgIC8vIENvbGxlY3Rpb24gdHlwZXMgdGhhdCBvbmx5IGRlYWwgd2l0aCBIVE1MRWxlbWVudHMu
Ci0gICAgICAgIHJldHVybiBpczxIVE1MRWxlbWVudD4oZWxlbWVudCkgJiYgaXNNYXRjaGluZ0hU
TUxFbGVtZW50KGNvbGxlY3Rpb24sIGRvd25jYXN0PEhUTUxFbGVtZW50PihlbGVtZW50KSk7Ci0g
ICAgfQotfQotCi1zdGF0aWMgaW5saW5lIEVsZW1lbnQqIHByZXZpb3VzRWxlbWVudChDb250YWlu
ZXJOb2RlJiBiYXNlLCBFbGVtZW50JiBlbGVtZW50LCBib29sIG9ubHlJbmNsdWRlRGlyZWN0Q2hp
bGRyZW4pCi17Ci0gICAgcmV0dXJuIG9ubHlJbmNsdWRlRGlyZWN0Q2hpbGRyZW4gPyBFbGVtZW50
VHJhdmVyc2FsOjpwcmV2aW91c1NpYmxpbmcoZWxlbWVudCkgOiBFbGVtZW50VHJhdmVyc2FsOjpw
cmV2aW91cyhlbGVtZW50LCAmYmFzZSk7Ci19Ci0KLUFMV0FZU19JTkxJTkUgRWxlbWVudCogSFRN
TENvbGxlY3Rpb246Oml0ZXJhdGVGb3JQcmV2aW91c0VsZW1lbnQoRWxlbWVudCogZWxlbWVudCkg
Y29uc3QKLXsKLSAgICBib29sIG9ubHlJbmNsdWRlRGlyZWN0Q2hpbGRyZW4gPSBtX3Nob3VsZE9u
bHlJbmNsdWRlRGlyZWN0Q2hpbGRyZW47Ci0gICAgQ29udGFpbmVyTm9kZSYgcm9vdE5vZGUgPSB0
aGlzLT5yb290Tm9kZSgpOwotICAgIGZvciAoOyBlbGVtZW50OyBlbGVtZW50ID0gcHJldmlvdXNF
bGVtZW50KHJvb3ROb2RlLCAqZWxlbWVudCwgb25seUluY2x1ZGVEaXJlY3RDaGlsZHJlbikpIHsK
LSAgICAgICAgaWYgKGlzTWF0Y2hpbmdFbGVtZW50KCp0aGlzLCAqZWxlbWVudCkpCi0gICAgICAg
ICAgICByZXR1cm4gZWxlbWVudDsKLSAgICB9Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KLXN0
YXRpYyBpbmxpbmUgRWxlbWVudCogZmlyc3RNYXRjaGluZ0VsZW1lbnQoY29uc3QgSFRNTENvbGxl
Y3Rpb24mIGNvbGxlY3Rpb24sIENvbnRhaW5lck5vZGUmIHJvb3QpCi17Ci0gICAgRWxlbWVudCog
ZWxlbWVudCA9IEVsZW1lbnRUcmF2ZXJzYWw6OmZpcnN0V2l0aGluKHJvb3QpOwotICAgIHdoaWxl
IChlbGVtZW50ICYmICFpc01hdGNoaW5nRWxlbWVudChjb2xsZWN0aW9uLCAqZWxlbWVudCkpCi0g
ICAgICAgIGVsZW1lbnQgPSBFbGVtZW50VHJhdmVyc2FsOjpuZXh0KCplbGVtZW50LCAmcm9vdCk7
Ci0gICAgcmV0dXJuIGVsZW1lbnQ7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgRWxlbWVudCogbmV4dE1h
dGNoaW5nRWxlbWVudChjb25zdCBIVE1MQ29sbGVjdGlvbiYgY29sbGVjdGlvbiwgRWxlbWVudCYg
ZWxlbWVudCwgQ29udGFpbmVyTm9kZSYgcm9vdCkKLXsKLSAgICBFbGVtZW50KiBuZXh0ID0gJmVs
ZW1lbnQ7Ci0gICAgZG8gewotICAgICAgICBuZXh0ID0gRWxlbWVudFRyYXZlcnNhbDo6bmV4dCgq
bmV4dCwgJnJvb3QpOwotICAgIH0gd2hpbGUgKG5leHQgJiYgIWlzTWF0Y2hpbmdFbGVtZW50KGNv
bGxlY3Rpb24sICpuZXh0KSk7Ci0gICAgcmV0dXJuIG5leHQ7Ci19Ci0KLXVuc2lnbmVkIEhUTUxD
b2xsZWN0aW9uOjpsZW5ndGgoKSBjb25zdAotewotICAgIHJldHVybiBtX2luZGV4Q2FjaGUubm9k
ZUNvdW50KCp0aGlzKTsKLX0KLQotRWxlbWVudCogSFRNTENvbGxlY3Rpb246Oml0ZW0odW5zaWdu
ZWQgb2Zmc2V0KSBjb25zdAotewotICAgIHJldHVybiBtX2luZGV4Q2FjaGUubm9kZUF0KCp0aGlz
LCBvZmZzZXQpOwotfQotCi1zdGF0aWMgaW5saW5lIGJvb2wgbmFtZVNob3VsZEJlVmlzaWJsZUlu
RG9jdW1lbnRBbGwoSFRNTEVsZW1lbnQmIGVsZW1lbnQpCi17Ci0gICAgLy8gVGhlIGRvY3VtZW50
LmFsbCBjb2xsZWN0aW9uIHJldHVybnMgb25seSBjZXJ0YWluIHR5cGVzIG9mIGVsZW1lbnRzIGJ5
IG5hbWUsCi0gICAgLy8gYWx0aG91Z2ggaXQgcmV0dXJucyBhbnkgdHlwZSBvZiBlbGVtZW50IGJ5
IGlkLgotICAgIHJldHVybiBlbGVtZW50Lmhhc1RhZ05hbWUoYXBwbGV0VGFnKQotICAgICAgICB8
fCBlbGVtZW50Lmhhc1RhZ05hbWUoZW1iZWRUYWcpCi0gICAgICAgIHx8IGVsZW1lbnQuaGFzVGFn
TmFtZShmb3JtVGFnKQotICAgICAgICB8fCBlbGVtZW50Lmhhc1RhZ05hbWUoaW1nVGFnKQotICAg
ICAgICB8fCBlbGVtZW50Lmhhc1RhZ05hbWUoaW5wdXRUYWcpCi0gICAgICAgIHx8IGVsZW1lbnQu
aGFzVGFnTmFtZShvYmplY3RUYWcpCi0gICAgICAgIHx8IGVsZW1lbnQuaGFzVGFnTmFtZShzZWxl
Y3RUYWcpOwotfQotCi1zdGF0aWMgaW5saW5lIGJvb2wgbmFtZVNob3VsZEJlVmlzaWJsZUluRG9j
dW1lbnRBbGwoRWxlbWVudCYgZWxlbWVudCkKLXsKLSAgICByZXR1cm4gaXM8SFRNTEVsZW1lbnQ+
KGVsZW1lbnQpICYmIG5hbWVTaG91bGRCZVZpc2libGVJbkRvY3VtZW50QWxsKGRvd25jYXN0PEhU
TUxFbGVtZW50PihlbGVtZW50KSk7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgRWxlbWVudCogZmlyc3RN
YXRjaGluZ0NoaWxkRWxlbWVudChjb25zdCBIVE1MQ29sbGVjdGlvbiYgbm9kZUxpc3QsIENvbnRh
aW5lck5vZGUmIHJvb3QpCi17Ci0gICAgRWxlbWVudCogZWxlbWVudCA9IEVsZW1lbnRUcmF2ZXJz
YWw6OmZpcnN0V2l0aGluKHJvb3QpOwotICAgIHdoaWxlIChlbGVtZW50ICYmICFpc01hdGNoaW5n
RWxlbWVudChub2RlTGlzdCwgKmVsZW1lbnQpKQotICAgICAgICBlbGVtZW50ID0gRWxlbWVudFRy
YXZlcnNhbDo6bmV4dFNpYmxpbmcoKmVsZW1lbnQpOwotICAgIHJldHVybiBlbGVtZW50OwotfQot
Ci1zdGF0aWMgaW5saW5lIEVsZW1lbnQqIG5leHRNYXRjaGluZ1NpYmxpbmdFbGVtZW50KGNvbnN0
IEhUTUxDb2xsZWN0aW9uJiBub2RlTGlzdCwgRWxlbWVudCYgZWxlbWVudCkKLXsKLSAgICBFbGVt
ZW50KiBuZXh0ID0gJmVsZW1lbnQ7Ci0gICAgZG8gewotICAgICAgICBuZXh0ID0gRWxlbWVudFRy
YXZlcnNhbDo6bmV4dFNpYmxpbmcoKm5leHQpOwotICAgIH0gd2hpbGUgKG5leHQgJiYgIWlzTWF0
Y2hpbmdFbGVtZW50KG5vZGVMaXN0LCAqbmV4dCkpOwotICAgIHJldHVybiBuZXh0OwotfQotCi1p
bmxpbmUgYm9vbCBIVE1MQ29sbGVjdGlvbjo6dXNlc0N1c3RvbUZvcndhcmRPbmx5VHJhdmVyc2Fs
KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV91c2VzQ3VzdG9tRm9yd2FyZE9ubHlUcmF2ZXJzYWw7
Ci19Ci0KLWlubGluZSBFbGVtZW50KiBIVE1MQ29sbGVjdGlvbjo6Zmlyc3RFbGVtZW50KENvbnRh
aW5lck5vZGUmIHJvb3QpIGNvbnN0Ci17Ci0gICAgaWYgKHVzZXNDdXN0b21Gb3J3YXJkT25seVRy
YXZlcnNhbCgpKQotICAgICAgICByZXR1cm4gY3VzdG9tRWxlbWVudEFmdGVyKG51bGxwdHIpOwot
ICAgIGlmIChtX3Nob3VsZE9ubHlJbmNsdWRlRGlyZWN0Q2hpbGRyZW4pCi0gICAgICAgIHJldHVy
biBmaXJzdE1hdGNoaW5nQ2hpbGRFbGVtZW50KCp0aGlzLCByb290KTsKLSAgICByZXR1cm4gZmly
c3RNYXRjaGluZ0VsZW1lbnQoKnRoaXMsIHJvb3QpOwotfQotCi1pbmxpbmUgRWxlbWVudCogSFRN
TENvbGxlY3Rpb246OnRyYXZlcnNlRm9yd2FyZChFbGVtZW50JiBjdXJyZW50LCB1bnNpZ25lZCBj
b3VudCwgdW5zaWduZWQmIHRyYXZlcnNlZENvdW50LCBDb250YWluZXJOb2RlJiByb290KSBjb25z
dAotewotICAgIEVsZW1lbnQqIGVsZW1lbnQgPSAmY3VycmVudDsKLSAgICBpZiAodXNlc0N1c3Rv
bUZvcndhcmRPbmx5VHJhdmVyc2FsKCkpIHsKLSAgICAgICAgZm9yICh0cmF2ZXJzZWRDb3VudCA9
IDA7IHRyYXZlcnNlZENvdW50IDwgY291bnQ7ICsrdHJhdmVyc2VkQ291bnQpIHsKLSAgICAgICAg
ICAgIGVsZW1lbnQgPSBjdXN0b21FbGVtZW50QWZ0ZXIoZWxlbWVudCk7Ci0gICAgICAgICAgICBp
ZiAoIWVsZW1lbnQpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIH0K
LSAgICB9IGVsc2UgaWYgKG1fc2hvdWxkT25seUluY2x1ZGVEaXJlY3RDaGlsZHJlbikgewotICAg
ICAgICBmb3IgKHRyYXZlcnNlZENvdW50ID0gMDsgdHJhdmVyc2VkQ291bnQgPCBjb3VudDsgKyt0
cmF2ZXJzZWRDb3VudCkgewotICAgICAgICAgICAgZWxlbWVudCA9IG5leHRNYXRjaGluZ1NpYmxp
bmdFbGVtZW50KCp0aGlzLCAqZWxlbWVudCk7Ci0gICAgICAgICAgICBpZiAoIWVsZW1lbnQpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIH0KLSAgICB9IGVsc2Ugewot
ICAgICAgICBmb3IgKHRyYXZlcnNlZENvdW50ID0gMDsgdHJhdmVyc2VkQ291bnQgPCBjb3VudDsg
Kyt0cmF2ZXJzZWRDb3VudCkgewotICAgICAgICAgICAgZWxlbWVudCA9IG5leHRNYXRjaGluZ0Vs
ZW1lbnQoKnRoaXMsICplbGVtZW50LCByb290KTsKLSAgICAgICAgICAgIGlmICghZWxlbWVudCkK
LSAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgfQotICAgIH0KLSAgICBy
ZXR1cm4gZWxlbWVudDsKLX0KLQotRWxlbWVudCogSFRNTENvbGxlY3Rpb246OmNvbGxlY3Rpb25C
ZWdpbigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGZpcnN0RWxlbWVudChyb290Tm9kZSgpKTsKLX0K
LQotRWxlbWVudCogSFRNTENvbGxlY3Rpb246OmNvbGxlY3Rpb25MYXN0KCkgY29uc3QKLXsKLSAg
ICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgb3B0aW1pemVkIHNpbWlsYXJseSB0byB0aGUgZm9y
d2FyZCBjYXNlLgotICAgIGF1dG8mIHJvb3QgPSByb290Tm9kZSgpOwotICAgIEVsZW1lbnQqIGxh
c3QgPSBtX3Nob3VsZE9ubHlJbmNsdWRlRGlyZWN0Q2hpbGRyZW4gPyBFbGVtZW50VHJhdmVyc2Fs
OjpsYXN0Q2hpbGQocm9vdCkgOiBFbGVtZW50VHJhdmVyc2FsOjpsYXN0V2l0aGluKHJvb3QpOwot
ICAgIHJldHVybiBpdGVyYXRlRm9yUHJldmlvdXNFbGVtZW50KGxhc3QpOwotfQotCi12b2lkIEhU
TUxDb2xsZWN0aW9uOjpjb2xsZWN0aW9uVHJhdmVyc2VGb3J3YXJkKEVsZW1lbnQqJiBjdXJyZW50
LCB1bnNpZ25lZCBjb3VudCwgdW5zaWduZWQmIHRyYXZlcnNlZENvdW50KSBjb25zdAotewotICAg
IGN1cnJlbnQgPSB0cmF2ZXJzZUZvcndhcmQoKmN1cnJlbnQsIGNvdW50LCB0cmF2ZXJzZWRDb3Vu
dCwgcm9vdE5vZGUoKSk7Ci19Ci0KLXZvaWQgSFRNTENvbGxlY3Rpb246OmNvbGxlY3Rpb25UcmF2
ZXJzZUJhY2t3YXJkKEVsZW1lbnQqJiBjdXJyZW50LCB1bnNpZ25lZCBjb3VudCkgY29uc3QKLXsK
LSAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgb3B0aW1pemVkIHNpbWlsYXJseSB0byB0aGUg
Zm9yd2FyZCBjYXNlLgotICAgIGlmIChtX3Nob3VsZE9ubHlJbmNsdWRlRGlyZWN0Q2hpbGRyZW4p
IHsKLSAgICAgICAgZm9yICg7IGNvdW50ICYmIGN1cnJlbnQ7IC0tY291bnQpCi0gICAgICAgICAg
ICBjdXJyZW50ID0gaXRlcmF0ZUZvclByZXZpb3VzRWxlbWVudChFbGVtZW50VHJhdmVyc2FsOjpw
cmV2aW91c1NpYmxpbmcoKmN1cnJlbnQpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBh
dXRvJiByb290ID0gcm9vdE5vZGUoKTsKLSAgICBmb3IgKDsgY291bnQgJiYgY3VycmVudDsgLS1j
b3VudCkKLSAgICAgICAgY3VycmVudCA9IGl0ZXJhdGVGb3JQcmV2aW91c0VsZW1lbnQoRWxlbWVu
dFRyYXZlcnNhbDo6cHJldmlvdXMoKmN1cnJlbnQsICZyb290KSk7Ci19Ci0KLXZvaWQgSFRNTENv
bGxlY3Rpb246OmludmFsaWRhdGVDYWNoZShEb2N1bWVudCYgZG9jdW1lbnQpIGNvbnN0Ci17Ci0g
ICAgaWYgKG1faW5kZXhDYWNoZS5oYXNWYWxpZENhY2hlKCp0aGlzKSkgewotICAgICAgICBkb2N1
bWVudC51bnJlZ2lzdGVyQ29sbGVjdGlvbihjb25zdF9jYXN0PEhUTUxDb2xsZWN0aW9uJj4oKnRo
aXMpKTsKLSAgICAgICAgbV9pbmRleENhY2hlLmludmFsaWRhdGUoKnRoaXMpOwotICAgIH0KICAg
ICBpZiAoaGFzTmFtZWRFbGVtZW50Q2FjaGUoKSkKICAgICAgICAgaW52YWxpZGF0ZU5hbWVkRWxl
bWVudENhY2hlKGRvY3VtZW50KTsKIH0KQEAgLTM5OCw0MCArMTMxLDggQEAgdm9pZCBIVE1MQ29s
bGVjdGlvbjo6aW52YWxpZGF0ZU5hbWVkRWxlbWVudENhY2hlKERvY3VtZW50JiBkb2N1bWVudCkg
Y29uc3QKICAgICBtX25hbWVkRWxlbWVudENhY2hlID0gbnVsbHB0cjsKIH0KIAotRWxlbWVudCog
SFRNTENvbGxlY3Rpb246Om5hbWVkSXRlbShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpIGNvbnN0
CitFbGVtZW50KiBIVE1MQ29sbGVjdGlvbjo6bmFtZWRJdGVtU2xvdyhjb25zdCBBdG9taWNTdHJp
bmcmIG5hbWUpIGNvbnN0CiB7Ci0gICAgLy8gaHR0cDovL21zZG4ubWljcm9zb2Z0LmNvbS93b3Jr
c2hvcC9hdXRob3IvZGh0bWwvcmVmZXJlbmNlL21ldGhvZHMvbmFtZWRpdGVtLmFzcAotICAgIC8v
IFRoaXMgbWV0aG9kIGZpcnN0IHNlYXJjaGVzIGZvciBhbiBvYmplY3Qgd2l0aCBhIG1hdGNoaW5n
IGlkCi0gICAgLy8gYXR0cmlidXRlLiBJZiBhIG1hdGNoIGlzIG5vdCBmb3VuZCwgdGhlIG1ldGhv
ZCB0aGVuIHNlYXJjaGVzIGZvciBhbgotICAgIC8vIG9iamVjdCB3aXRoIGEgbWF0Y2hpbmcgbmFt
ZSBhdHRyaWJ1dGUsIGJ1dCBvbmx5IG9uIHRob3NlIGVsZW1lbnRzCi0gICAgLy8gdGhhdCBhcmUg
YWxsb3dlZCBhIG5hbWUgYXR0cmlidXRlLgotCi0gICAgaWYgKG5hbWUuaXNFbXB0eSgpKQotICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIENvbnRhaW5lck5vZGUmIHJvb3QgPSByb290Tm9k
ZSgpOwotICAgIGlmICghdXNlc0N1c3RvbUZvcndhcmRPbmx5VHJhdmVyc2FsKCkgJiYgcm9vdC5p
c0luVHJlZVNjb3BlKCkpIHsKLSAgICAgICAgRWxlbWVudCogY2FuZGlkYXRlID0gbnVsbHB0cjsK
LQotICAgICAgICBUcmVlU2NvcGUmIHRyZWVTY29wZSA9IHJvb3QudHJlZVNjb3BlKCk7Ci0gICAg
ICAgIGlmICh0cmVlU2NvcGUuaGFzRWxlbWVudFdpdGhJZCgqbmFtZS5pbXBsKCkpKSB7Ci0gICAg
ICAgICAgICBpZiAoIXRyZWVTY29wZS5jb250YWluc011bHRpcGxlRWxlbWVudHNXaXRoSWQobmFt
ZSkpCi0gICAgICAgICAgICAgICAgY2FuZGlkYXRlID0gdHJlZVNjb3BlLmdldEVsZW1lbnRCeUlk
KG5hbWUpOwotICAgICAgICB9IGVsc2UgaWYgKHRyZWVTY29wZS5oYXNFbGVtZW50V2l0aE5hbWUo
Km5hbWUuaW1wbCgpKSkgewotICAgICAgICAgICAgaWYgKCF0cmVlU2NvcGUuY29udGFpbnNNdWx0
aXBsZUVsZW1lbnRzV2l0aE5hbWUobmFtZSkpIHsKLSAgICAgICAgICAgICAgICBjYW5kaWRhdGUg
PSB0cmVlU2NvcGUuZ2V0RWxlbWVudEJ5TmFtZShuYW1lKTsKLSAgICAgICAgICAgICAgICBpZiAo
Y2FuZGlkYXRlICYmIHR5cGUoKSA9PSBEb2NBbGwgJiYgIW5hbWVTaG91bGRCZVZpc2libGVJbkRv
Y3VtZW50QWxsKCpjYW5kaWRhdGUpKQotICAgICAgICAgICAgICAgICAgICBjYW5kaWRhdGUgPSBu
dWxscHRyOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHJldHVy
biBudWxscHRyOwotCi0gICAgICAgIGlmIChjYW5kaWRhdGUgJiYgaXNNYXRjaGluZ0VsZW1lbnQo
KnRoaXMsICpjYW5kaWRhdGUpKSB7Ci0gICAgICAgICAgICBpZiAobV9zaG91bGRPbmx5SW5jbHVk
ZURpcmVjdENoaWxkcmVuID8gY2FuZGlkYXRlLT5wYXJlbnROb2RlKCkgPT0gJnJvb3QgOiBjYW5k
aWRhdGUtPmlzRGVzY2VuZGFudE9mKCZyb290KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gY2Fu
ZGlkYXRlOwotICAgICAgICB9Ci0gICAgfQotCiAgICAgLy8gVGhlIHBhdGhvbG9naWNhbCBjYXNl
LiBXZSBuZWVkIHRvIHdhbGsgdGhlIGVudGlyZSBzdWJ0cmVlLgogICAgIHVwZGF0ZU5hbWVkRWxl
bWVudENhY2hlKCk7CiAgICAgQVNTRVJUKG1fbmFtZWRFbGVtZW50Q2FjaGUpOwpAQCAtNDU2LDkg
KzE1Nyw5IEBAIHZvaWQgSFRNTENvbGxlY3Rpb246OnVwZGF0ZU5hbWVkRWxlbWVudENhY2hlKCkg
Y29uc3QKIAogICAgIGF1dG8gY2FjaGUgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbGxlY3Rpb25OYW1l
ZEVsZW1lbnRDYWNoZT4oKTsKIAotICAgIHVuc2lnbmVkIHNpemUgPSBtX2luZGV4Q2FjaGUubm9k
ZUNvdW50KCp0aGlzKTsKKyAgICB1bnNpZ25lZCBzaXplID0gbGVuZ3RoKCk7CiAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7ICsraSkgewotICAgICAgICBFbGVtZW50JiBlbGVtZW50
ID0gKm1faW5kZXhDYWNoZS5ub2RlQXQoKnRoaXMsIGkpOworICAgICAgICBFbGVtZW50JiBlbGVt
ZW50ID0gKml0ZW0oaSk7CiAgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgaWQgPSBlbGVtZW50
LmdldElkQXR0cmlidXRlKCk7CiAgICAgICAgIGlmICghaWQuaXNFbXB0eSgpKQogICAgICAgICAg
ICAgY2FjaGUtPmFwcGVuZFRvSWRDYWNoZShpZCwgZWxlbWVudCk7CkBAIC01MTMsMTAgKzIxNCw0
IEBAIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IEhUTUxDb2xsZWN0aW9uOjp0YWdzKGNvbnN0IFN0cmlu
ZyYgbmFtZSkKICAgICByZXR1cm4gb3duZXJOb2RlKCkuZ2V0RWxlbWVudHNCeVRhZ05hbWUobmFt
ZSk7CiB9CiAKLUVsZW1lbnQqIEhUTUxDb2xsZWN0aW9uOjpjdXN0b21FbGVtZW50QWZ0ZXIoRWxl
bWVudCopIGNvbnN0Ci17Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIG51
bGxwdHI7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENv
bGxlY3Rpb24uaAppbmRleCA0NzE0ZTkwOGRkYjVkOWI4ODljM2I2Y2U2NTdhMTQwZDdhM2M1OWUy
Li5iNDIwNjFhMTIxZGZmNDA4NjYzNDQyYmM1YzFlZGQ2NDczZjVjODhmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQ29sbGVjdGlvbi5oCkBAIC02MCw1NyArNjAsMzkgQEAgcHJpdmF0ZToKIAogY2xh
c3MgSFRNTENvbGxlY3Rpb24gOiBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlLCBwdWJsaWMgUmVmQ291
bnRlZDxIVE1MQ29sbGVjdGlvbj4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8SFRNTENvbGxl
Y3Rpb24+IGNyZWF0ZShDb250YWluZXJOb2RlJiBiYXNlLCBDb2xsZWN0aW9uVHlwZSk7CiAgICAg
dmlydHVhbCB+SFRNTENvbGxlY3Rpb24oKTsKIAogICAgIC8vIERPTSBBUEkKLSAgICB1bnNpZ25l
ZCBsZW5ndGgoKSBjb25zdDsKLSAgICBFbGVtZW50KiBpdGVtKHVuc2lnbmVkIG9mZnNldCkgY29u
c3Q7Ci0gICAgdmlydHVhbCBFbGVtZW50KiBuYW1lZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5nJiBu
YW1lKSBjb25zdDsKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0ID0gMDsKKyAg
ICB2aXJ0dWFsIEVsZW1lbnQqIGl0ZW0odW5zaWduZWQgb2Zmc2V0KSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCBFbGVtZW50KiBuYW1lZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKSBjb25z
dCA9IDA7CiAgICAgUGFzc1JlZlB0cjxOb2RlTGlzdD4gdGFncyhjb25zdCBTdHJpbmcmKTsKIAog
ICAgIC8vIE5vbi1ET00gQVBJCiAgICAgYm9vbCBoYXNOYW1lZEl0ZW0oY29uc3QgQXRvbWljU3Ry
aW5nJiBuYW1lKSBjb25zdDsKICAgICBWZWN0b3I8UmVmPEVsZW1lbnQ+PiBuYW1lZEl0ZW1zKGNv
bnN0IEF0b21pY1N0cmluZyYgbmFtZSkgY29uc3Q7Ci0gICAgc2l6ZV90IG1lbW9yeUNvc3QoKSBj
b25zdDsKKyAgICB2aXJ0dWFsIHNpemVfdCBtZW1vcnlDb3N0KCkgY29uc3Q7CiAKICAgICBib29s
IGlzUm9vdGVkQXREb2N1bWVudCgpIGNvbnN0OwogICAgIE5vZGVMaXN0SW52YWxpZGF0aW9uVHlw
ZSBpbnZhbGlkYXRpb25UeXBlKCkgY29uc3Q7CiAgICAgQ29sbGVjdGlvblR5cGUgdHlwZSgpIGNv
bnN0OwogICAgIENvbnRhaW5lck5vZGUmIG93bmVyTm9kZSgpIGNvbnN0OwotICAgIHZvaWQgaW52
YWxpZGF0ZUNhY2hlKGNvbnN0IFF1YWxpZmllZE5hbWUqIGF0dHJpYnV0ZU5hbWUpIGNvbnN0Owot
ICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlQ2FjaGUoRG9jdW1lbnQmKSBjb25zdDsKLQotICAg
IC8vIEZvciBDb2xsZWN0aW9uSW5kZXhDYWNoZTsgZG8gbm90IHVzZSBlbHNld2hlcmUuCi0gICAg
RWxlbWVudCogY29sbGVjdGlvbkJlZ2luKCkgY29uc3Q7Ci0gICAgRWxlbWVudCogY29sbGVjdGlv
bkxhc3QoKSBjb25zdDsKLSAgICBFbGVtZW50KiBjb2xsZWN0aW9uRW5kKCkgY29uc3Q7Ci0gICAg
dm9pZCBjb2xsZWN0aW9uVHJhdmVyc2VGb3J3YXJkKEVsZW1lbnQqJiwgdW5zaWduZWQgY291bnQs
IHVuc2lnbmVkJiB0cmF2ZXJzZWRDb3VudCkgY29uc3Q7Ci0gICAgdm9pZCBjb2xsZWN0aW9uVHJh
dmVyc2VCYWNrd2FyZChFbGVtZW50KiYsIHVuc2lnbmVkIGNvdW50KSBjb25zdDsKLSAgICBib29s
IGNvbGxlY3Rpb25DYW5UcmF2ZXJzZUJhY2t3YXJkKCkgY29uc3Q7Ci0gICAgdm9pZCB3aWxsVmFs
aWRhdGVJbmRleENhY2hlKCkgY29uc3Q7CisgICAgQ29udGFpbmVyTm9kZSYgcm9vdE5vZGUoKSBj
b25zdDsKKyAgICB2b2lkIGludmFsaWRhdGVDYWNoZShjb25zdCBRdWFsaWZpZWROYW1lKiBhdHRy
aWJ1dGVOYW1lKTsKKyAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZUNhY2hlKERvY3VtZW50Jik7
CiAKICAgICBib29sIGhhc05hbWVkRWxlbWVudENhY2hlKCkgY29uc3Q7CiAKIHByb3RlY3RlZDoK
LSAgICBlbnVtIEVsZW1lbnRUcmF2ZXJzYWxUeXBlIHsgTm9ybWFsVHJhdmVyc2FsLCBDdXN0b21G
b3J3YXJkT25seVRyYXZlcnNhbCB9OwotICAgIEhUTUxDb2xsZWN0aW9uKENvbnRhaW5lck5vZGUm
IGJhc2UsIENvbGxlY3Rpb25UeXBlLCBFbGVtZW50VHJhdmVyc2FsVHlwZSA9IE5vcm1hbFRyYXZl
cnNhbCk7CisgICAgSFRNTENvbGxlY3Rpb24oQ29udGFpbmVyTm9kZSYgYmFzZSwgQ29sbGVjdGlv
blR5cGUpOwogCiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZU5hbWVkRWxlbWVudENhY2hlKCkgY29u
c3Q7CisgICAgRWxlbWVudCogbmFtZWRJdGVtU2xvdyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUp
IGNvbnN0OwogCiAgICAgdm9pZCBzZXROYW1lZEl0ZW1DYWNoZShzdGQ6OnVuaXF1ZV9wdHI8Q29s
bGVjdGlvbk5hbWVkRWxlbWVudENhY2hlPikgY29uc3Q7CiAgICAgY29uc3QgQ29sbGVjdGlvbk5h
bWVkRWxlbWVudENhY2hlJiBuYW1lZEl0ZW1DYWNoZXMoKSBjb25zdDsKIAotcHJpdmF0ZToKICAg
ICBEb2N1bWVudCYgZG9jdW1lbnQoKSBjb25zdDsKLSAgICBDb250YWluZXJOb2RlJiByb290Tm9k
ZSgpIGNvbnN0OwotICAgIGJvb2wgdXNlc0N1c3RvbUZvcndhcmRPbmx5VHJhdmVyc2FsKCkgY29u
c3Q7Ci0KLSAgICBFbGVtZW50KiBpdGVyYXRlRm9yUHJldmlvdXNFbGVtZW50KEVsZW1lbnQqKSBj
b25zdDsKLSAgICBFbGVtZW50KiBmaXJzdEVsZW1lbnQoQ29udGFpbmVyTm9kZSYgcm9vdCkgY29u
c3Q7Ci0gICAgRWxlbWVudCogdHJhdmVyc2VGb3J3YXJkKEVsZW1lbnQmLCB1bnNpZ25lZCBjb3Vu
dCwgdW5zaWduZWQmIHRyYXZlcnNlZENvdW50LCBDb250YWluZXJOb2RlJiByb290KSBjb25zdDsK
LQotICAgIHZpcnR1YWwgRWxlbWVudCogY3VzdG9tRWxlbWVudEFmdGVyKEVsZW1lbnQqKSBjb25z
dDsKIAogICAgIHZvaWQgaW52YWxpZGF0ZU5hbWVkRWxlbWVudENhY2hlKERvY3VtZW50JikgY29u
c3Q7CiAKQEAgLTExOSwxNiArMTAxLDIxIEBAIHByaXZhdGU6CiAKICAgICBSZWY8Q29udGFpbmVy
Tm9kZT4gbV9vd25lck5vZGU7CiAKLSAgICBtdXRhYmxlIENvbGxlY3Rpb25JbmRleENhY2hlPEhU
TUxDb2xsZWN0aW9uLCBFbGVtZW50Kj4gbV9pbmRleENhY2hlOwogICAgIG11dGFibGUgc3RkOjp1
bmlxdWVfcHRyPENvbGxlY3Rpb25OYW1lZEVsZW1lbnRDYWNoZT4gbV9uYW1lZEVsZW1lbnRDYWNo
ZTsKIAogICAgIGNvbnN0IHVuc2lnbmVkIG1fY29sbGVjdGlvblR5cGUgOiA1OwogICAgIGNvbnN0
IHVuc2lnbmVkIG1faW52YWxpZGF0aW9uVHlwZSA6IDQ7CiAgICAgY29uc3QgdW5zaWduZWQgbV9y
b290VHlwZSA6IDE7Ci0gICAgY29uc3QgdW5zaWduZWQgbV9zaG91bGRPbmx5SW5jbHVkZURpcmVj
dENoaWxkcmVuIDogMTsKLSAgICBjb25zdCB1bnNpZ25lZCBtX3VzZXNDdXN0b21Gb3J3YXJkT25s
eVRyYXZlcnNhbCA6IDE7CiB9OwogCitpbmxpbmUgQ29udGFpbmVyTm9kZSYgSFRNTENvbGxlY3Rp
b246OnJvb3ROb2RlKCkgY29uc3QKK3sKKyAgICBpZiAoaXNSb290ZWRBdERvY3VtZW50KCkgJiYg
b3duZXJOb2RlKCkuaW5Eb2N1bWVudCgpKQorICAgICAgICByZXR1cm4gb3duZXJOb2RlKCkuZG9j
dW1lbnQoKTsKKworICAgIHJldHVybiBvd25lck5vZGUoKTsKK30KKwogaW5saW5lIGNvbnN0IFZl
Y3RvcjxFbGVtZW50Kj4qIENvbGxlY3Rpb25OYW1lZEVsZW1lbnRDYWNoZTo6ZmluZEVsZW1lbnRz
V2l0aElkKGNvbnN0IEF0b21pY1N0cmluZyYgaWQpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGZpbmQo
bV9pZE1hcCwgaWQpOwpAQCAtMTc3LDcgKzE2NCw3IEBAIGlubGluZSB2b2lkIENvbGxlY3Rpb25O
YW1lZEVsZW1lbnRDYWNoZTo6YXBwZW5kKFN0cmluZ1RvRWxlbWVudHNNYXAmIG1hcCwgY29uc3QK
IAogaW5saW5lIHNpemVfdCBIVE1MQ29sbGVjdGlvbjo6bWVtb3J5Q29zdCgpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIG1faW5kZXhDYWNoZS5tZW1vcnlDb3N0KCkgKyAobV9uYW1lZEVsZW1lbnRDYWNo
ZSA/IG1fbmFtZWRFbGVtZW50Q2FjaGUtPm1lbW9yeUNvc3QoKSA6IDApOworICAgIHJldHVybiBt
X25hbWVkRWxlbWVudENhY2hlID8gbV9uYW1lZEVsZW1lbnRDYWNoZS0+bWVtb3J5Q29zdCgpIDog
MDsKIH0KIAogaW5saW5lIGJvb2wgSFRNTENvbGxlY3Rpb246OmlzUm9vdGVkQXREb2N1bWVudCgp
IGNvbnN0CkBAIC0yMDUsNyArMTkyLDcgQEAgaW5saW5lIERvY3VtZW50JiBIVE1MQ29sbGVjdGlv
bjo6ZG9jdW1lbnQoKSBjb25zdAogICAgIHJldHVybiBtX293bmVyTm9kZS0+ZG9jdW1lbnQoKTsK
IH0KIAotaW5saW5lIHZvaWQgSFRNTENvbGxlY3Rpb246OmludmFsaWRhdGVDYWNoZShjb25zdCBR
dWFsaWZpZWROYW1lKiBhdHRyaWJ1dGVOYW1lKSBjb25zdAoraW5saW5lIHZvaWQgSFRNTENvbGxl
Y3Rpb246OmludmFsaWRhdGVDYWNoZShjb25zdCBRdWFsaWZpZWROYW1lKiBhdHRyaWJ1dGVOYW1l
KQogewogICAgIGlmICghYXR0cmlidXRlTmFtZSB8fCBzaG91bGRJbnZhbGlkYXRlVHlwZU9uQXR0
cmlidXRlQ2hhbmdlKGludmFsaWRhdGlvblR5cGUoKSwgKmF0dHJpYnV0ZU5hbWUpKQogICAgICAg
ICBpbnZhbGlkYXRlQ2FjaGUoZG9jdW1lbnQoKSk7CkBAIC0yMTMsMjEgKzIwMCw2IEBAIGlubGlu
ZSB2b2lkIEhUTUxDb2xsZWN0aW9uOjppbnZhbGlkYXRlQ2FjaGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSogYXR0cmlidXRlTmFtZSkKICAgICAgICAgaW52YWxpZGF0ZU5hbWVkRWxlbWVudENhY2hlKGRv
Y3VtZW50KCkpOwogfQogCi1pbmxpbmUgRWxlbWVudCogSFRNTENvbGxlY3Rpb246OmNvbGxlY3Rp
b25FbmQoKSBjb25zdAotewotICAgIHJldHVybiBudWxscHRyOwotfQotCi1pbmxpbmUgYm9vbCBI
VE1MQ29sbGVjdGlvbjo6Y29sbGVjdGlvbkNhblRyYXZlcnNlQmFja3dhcmQoKSBjb25zdAotewot
ICAgIHJldHVybiAhbV91c2VzQ3VzdG9tRm9yd2FyZE9ubHlUcmF2ZXJzYWw7Ci19Ci0KLWlubGlu
ZSB2b2lkIEhUTUxDb2xsZWN0aW9uOjp3aWxsVmFsaWRhdGVJbmRleENhY2hlKCkgY29uc3QKLXsK
LSAgICBkb2N1bWVudCgpLnJlZ2lzdGVyQ29sbGVjdGlvbihjb25zdF9jYXN0PEhUTUxDb2xsZWN0
aW9uJj4oKnRoaXMpKTsKLX0KLQogaW5saW5lIGJvb2wgSFRNTENvbGxlY3Rpb246Omhhc05hbWVk
RWxlbWVudENhY2hlKCkgY29uc3QKIHsKICAgICByZXR1cm4gISFtX25hbWVkRWxlbWVudENhY2hl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGF0YUxpc3RFbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERhdGFMaXN0RWxlbWVudC5jcHAKaW5kZXggZmU1
ZTc2ZmFkNWVkNmYzYWNhY2VhZWY2NGIwNDUzMzI3NzQ2NWQwNi4uMjg0NjU0NzZkZmQ0OTk3YjFi
MWFiNzI3MTA5ZDc1YjMxMjIwZWIwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRGF0YUxpc3RFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEYXRh
TGlzdEVsZW1lbnQuY3BwCkBAIC0zMyw4ICszMywxMCBAQAogI2lmIEVOQUJMRShEQVRBTElTVF9F
TEVNRU5UKQogI2luY2x1ZGUgIkhUTUxEYXRhTGlzdEVsZW1lbnQuaCIKIAorI2luY2x1ZGUgIkdl
bmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2lu
Y2x1ZGUgIklkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5oIgorI2luY2x1ZGUgIk5vZGVSYXJlRGF0
YS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTUwLDcgKzUyLDcgQEAgUmVmPEhUTUxE
YXRhTGlzdEVsZW1lbnQ+IEhUTUxEYXRhTGlzdEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiB0YWdOYW0KIAogUmVmPEhUTUxDb2xsZWN0aW9uPiBIVE1MRGF0YUxpc3RFbGVtZW50
OjpvcHRpb25zKCkKIHsKLSAgICByZXR1cm4gZW5zdXJlQ2FjaGVkSFRNTENvbGxlY3Rpb24oRGF0
YUxpc3RPcHRpb25zKTsKKyAgICByZXR1cm4gZW5zdXJlUmFyZURhdGEoKS5lbnN1cmVOb2RlTGlz
dHMoKS5hZGRDYWNoZWRDb2xsZWN0aW9uPEdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbjxDb2xs
ZWN0aW9uVHlwZVRyYWl0czxEYXRhTGlzdE9wdGlvbnM+Ojp0cmF2ZXJzYWxUeXBlPj4oKnRoaXMs
IERhdGFMaXN0T3B0aW9ucyk7CiB9CiAKIHZvaWQgSFRNTERhdGFMaXN0RWxlbWVudDo6b3B0aW9u
RWxlbWVudENoaWxkcmVuQ2hhbmdlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxGaWVsZFNldEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRmllbGRT
ZXRFbGVtZW50LmNwcAppbmRleCBhYzMzMmU4NzAyMjYxOGMyZTQ5M2I2OTc3YjA4M2Q1NWFiODZh
ZDdkLi40MDBhMGJhZTBlZDk0ZmUwNTNmZDYzNTcxYjQwYWFjOThmYmFjOGRkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5jcHAKQEAgLTI2LDEwICsyNiwxMSBA
QAogI2luY2x1ZGUgIkhUTUxGaWVsZFNldEVsZW1lbnQuaCIKIAogI2luY2x1ZGUgIkVsZW1lbnRJ
dGVyYXRvci5oIgotI2luY2x1ZGUgIkhUTUxDb2xsZWN0aW9uLmgiCisjaW5jbHVkZSAiSFRNTEZv
cm1Db250cm9sc0NvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJIVE1MTGVnZW5kRWxlbWVudC5oIgog
I2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhUTUxPYmplY3RFbGVtZW50LmgiCisj
aW5jbHVkZSAiTm9kZVJhcmVEYXRhLmgiCiAjaW5jbHVkZSAiUmVuZGVyRmllbGRzZXQuaCIKICNp
bmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKQEAgLTE2MSw3ICsxNjIsNyBAQCBIVE1MTGVn
ZW5kRWxlbWVudCogSFRNTEZpZWxkU2V0RWxlbWVudDo6bGVnZW5kKCkgY29uc3QKIAogUmVmPEhU
TUxDb2xsZWN0aW9uPiBIVE1MRmllbGRTZXRFbGVtZW50OjplbGVtZW50cygpCiB7Ci0gICAgcmV0
dXJuIGVuc3VyZUNhY2hlZEhUTUxDb2xsZWN0aW9uKEZvcm1Db250cm9scyk7CisgICAgcmV0dXJu
IGVuc3VyZVJhcmVEYXRhKCkuZW5zdXJlTm9kZUxpc3RzKCkuYWRkQ2FjaGVkQ29sbGVjdGlvbjxI
VE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbj4oKnRoaXMsIEZvcm1Db250cm9scyk7CiB9CiAKIHZv
aWQgSFRNTEZpZWxkU2V0RWxlbWVudDo6cmVmcmVzaEVsZW1lbnRzSWZOZWVkZWQoKSBjb25zdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlv
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmNw
cAppbmRleCAwZGVlY2MyNGVjZDliNWMzN2IwYWMwOWMzMTc1MjczNDJiNzExZDg0Li4zMDI1MGJi
MjY0YjQ5OGY4ODg4MjFlMDc4OTE4ZmVkNzZkODMzZTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmNwcApAQCAtMzYsNyArMzYsNyBA
QCB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogLy8gY2FsY3VsYXRpb24gZXZlcnkgdGltZSBp
ZiBhbnl0aGluZyBoYXMgY2hhbmdlZC4KIAogSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246OkhU
TUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uKENvbnRhaW5lck5vZGUmIG93bmVyTm9kZSkKLSAgICA6
IEhUTUxDb2xsZWN0aW9uKG93bmVyTm9kZSwgRm9ybUNvbnRyb2xzLCBDdXN0b21Gb3J3YXJkT25s
eVRyYXZlcnNhbCkKKyAgICA6IENhY2hlZEhUTUxDb2xsZWN0aW9uPEhUTUxGb3JtQ29udHJvbHND
b2xsZWN0aW9uLCBDb2xsZWN0aW9uVHlwZVRyYWl0czxGb3JtQ29udHJvbHM+Ojp0cmF2ZXJzYWxU
eXBlPihvd25lck5vZGUsIEZvcm1Db250cm9scykKICAgICAsIG1fY2FjaGVkRWxlbWVudChudWxs
cHRyKQogICAgICwgbV9jYWNoZWRFbGVtZW50T2Zmc2V0SW5BcnJheSgwKQogewpAQCAtMTc3LDkg
KzE3Nyw5IEBAIHZvaWQgSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246OnVwZGF0ZU5hbWVkRWxl
bWVudENhY2hlKCkgY29uc3QKICAgICBzZXROYW1lZEl0ZW1DYWNoZShXVEY6Om1vdmUoY2FjaGUp
KTsKIH0KIAotdm9pZCBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6aW52YWxpZGF0ZUNhY2hl
KERvY3VtZW50JiBkb2N1bWVudCkgY29uc3QKK3ZvaWQgSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rp
b246OmludmFsaWRhdGVDYWNoZShEb2N1bWVudCYgZG9jdW1lbnQpCiB7Ci0gICAgSFRNTENvbGxl
Y3Rpb246OmludmFsaWRhdGVDYWNoZShkb2N1bWVudCk7CisgICAgQ2FjaGVkSFRNTENvbGxlY3Rp
b248SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24sIENvbGxlY3Rpb25UeXBlVHJhaXRzPEZvcm1D
b250cm9scz46OnRyYXZlcnNhbFR5cGU+OjppbnZhbGlkYXRlQ2FjaGUoZG9jdW1lbnQpOwogICAg
IG1fY2FjaGVkRWxlbWVudCA9IG51bGxwdHI7CiAgICAgbV9jYWNoZWRFbGVtZW50T2Zmc2V0SW5B
cnJheSA9IDA7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29u
dHJvbHNDb2xsZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbHND
b2xsZWN0aW9uLmgKaW5kZXggYjE2OGFkOWMwNjA1NDQ4YTk5NDlkNGE4ZTE1ZTQ0NjVkNzg1YmI3
My4uYzBkNTIwZjZhZjIxZGFlNGJkMjFkZmIxMjIwMDc4NzE4ZDU0NDJhZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uaApAQCAtMjMsNyAr
MjMsNyBAQAogI2lmbmRlZiBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbl9oCiAjZGVmaW5lIEhU
TUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uX2gKIAotI2luY2x1ZGUgIkhUTUxDb2xsZWN0aW9uLmgi
CisjaW5jbHVkZSAiQ2FjaGVkSFRNTENvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJIVE1MRWxlbWVu
dC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zNCwyMSArMzQsMjMgQEAgY2xhc3MgSFRN
TEltYWdlRWxlbWVudDsKIC8vIFRoaXMgY2xhc3MgaXMganVzdCBhIGJpZyBoYWNrIHRvIGZpbmQg
Zm9ybSBlbGVtZW50cyBldmVuIGluIG1hbGZvcm1lZCBIVE1MIGVsZW1lbnRzLgogLy8gVGhlIGZh
bW91cyA8dGFibGU+PHRyPjxmb3JtPjx0ZD4gcHJvYmxlbS4KIAotY2xhc3MgSFRNTEZvcm1Db250
cm9sc0NvbGxlY3Rpb24gZmluYWwgOiBwdWJsaWMgSFRNTENvbGxlY3Rpb24geworY2xhc3MgSFRN
TEZvcm1Db250cm9sc0NvbGxlY3Rpb24gZmluYWwgOiBwdWJsaWMgQ2FjaGVkSFRNTENvbGxlY3Rp
b248SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24sIENvbGxlY3Rpb25UeXBlVHJhaXRzPEZvcm1D
b250cm9scz46OnRyYXZlcnNhbFR5cGU+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPEhUTUxG
b3JtQ29udHJvbHNDb2xsZWN0aW9uPiBjcmVhdGUoQ29udGFpbmVyTm9kZSYsIENvbGxlY3Rpb25U
eXBlKTsKICAgICB2aXJ0dWFsIH5IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbigpOwogCisgICAg
Ly8gRm9yIENhY2hlZEhUTUxDb2xsZWN0aW9uLgorICAgIEVsZW1lbnQqIGN1c3RvbUVsZW1lbnRB
ZnRlcihFbGVtZW50KikgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgSFRNTEZvcm1D
b250cm9sc0NvbGxlY3Rpb24oQ29udGFpbmVyTm9kZSYpOwogCiAgICAgdmlydHVhbCBIVE1MRWxl
bWVudCogbmFtZWRJdGVtKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkgY29uc3Qgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVDYWNoZShEb2N1bWVudCYpIGNvbnN0IG92ZXJy
aWRlOworICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlQ2FjaGUoRG9jdW1lbnQmKSBvdmVycmlk
ZTsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlTmFtZWRFbGVtZW50Q2FjaGUoKSBjb25zdCBvdmVy
cmlkZTsKIAogICAgIGNvbnN0IFZlY3RvcjxGb3JtQXNzb2NpYXRlZEVsZW1lbnQqPiYgZm9ybUNv
bnRyb2xFbGVtZW50cygpIGNvbnN0OwogICAgIGNvbnN0IFZlY3RvcjxIVE1MSW1hZ2VFbGVtZW50
Kj4mIGZvcm1JbWFnZUVsZW1lbnRzKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBFbGVtZW50KiBjdXN0
b21FbGVtZW50QWZ0ZXIoRWxlbWVudCopIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgbXV0YWJsZSBF
bGVtZW50KiBtX2NhY2hlZEVsZW1lbnQ7CiAgICAgbXV0YWJsZSB1bnNpZ25lZCBtX2NhY2hlZEVs
ZW1lbnRPZmZzZXRJbkFycmF5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
Rm9ybUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3Bw
CmluZGV4IDVmZmEzYThhNzE5OTc4N2Y3ZGY3ZGYxZjgwOWE2OGFlNjQzZDAxZWQuLjA1NDI3OWZm
MWVmNWE4YzNiMTgwYTRiODBkMjBmYmM5ZWJmYWUxODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxGb3JtRWxlbWVudC5jcHAKQEAgLTM3LDExICszNywxMiBAQAogI2luY2x1ZGUgIkZyYW1lLmgi
CiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudC5o
IgotI2luY2x1ZGUgIkhUTUxDb2xsZWN0aW9uLmgiCisjaW5jbHVkZSAiSFRNTEZvcm1Db250cm9s
c0NvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJIVE1MSW1hZ2VFbGVtZW50LmgiCiAjaW5jbHVkZSAi
SFRNTElucHV0RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhU
TUxUYWJsZUVsZW1lbnQuaCIKKyNpbmNsdWRlICJOb2RlUmFyZURhdGEuaCIKICNpbmNsdWRlICJQ
YWdlLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGV4dENvbnRyb2wuaCIKICNpbmNsdWRlICJTY3JpcHRD
b250cm9sbGVyLmgiCkBAIC02MzgsNyArNjM5LDcgQEAgdm9pZCBIVE1MRm9ybUVsZW1lbnQ6OnJl
bW92ZUltZ0VsZW1lbnQoSFRNTEltYWdlRWxlbWVudCogZSkKIAogUmVmPEhUTUxDb2xsZWN0aW9u
PiBIVE1MRm9ybUVsZW1lbnQ6OmVsZW1lbnRzKCkKIHsKLSAgICByZXR1cm4gZW5zdXJlQ2FjaGVk
SFRNTENvbGxlY3Rpb24oRm9ybUNvbnRyb2xzKTsKKyAgICByZXR1cm4gZW5zdXJlUmFyZURhdGEo
KS5lbnN1cmVOb2RlTGlzdHMoKS5hZGRDYWNoZWRDb2xsZWN0aW9uPEhUTUxGb3JtQ29udHJvbHND
b2xsZWN0aW9uPigqdGhpcywgRm9ybUNvbnRyb2xzKTsKIH0KIAogU3RyaW5nIEhUTUxGb3JtRWxl
bWVudDo6bmFtZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
YXBFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1hcEVsZW1lbnQuY3BwCmlu
ZGV4IGEzYzljMzM5MjNhNzBmYzhlYjk2ZDNlMzBkYTBjNDNiZTdhYTAyMGIuLjNlZTYxYmFhMDAx
ZTIzNGE0YjMzZjdkMTU4YmM2ODY5OTJjNDZjZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1hcEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1h
cEVsZW1lbnQuY3BwCkBAIC0yNSwxMSArMjUsMTIgQEAKICNpbmNsdWRlICJBdHRyaWJ1dGUuaCIK
ICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkVsZW1lbnRJdGVyYXRvci5oIgorI2lu
Y2x1ZGUgIkdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxBcmVh
RWxlbWVudC5oIgotI2luY2x1ZGUgIkhUTUxDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiSFRNTElt
YWdlRWxlbWVudC5oIgogI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKICNpbmNsdWRlICJJbnRT
aXplLmgiCisjaW5jbHVkZSAiTm9kZVJhcmVEYXRhLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IApAQCAtMTEyLDcgKzExMyw3IEBAIHZvaWQgSFRNTE1hcEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluCiAKIFJlZjxIVE1M
Q29sbGVjdGlvbj4gSFRNTE1hcEVsZW1lbnQ6OmFyZWFzKCkKIHsKLSAgICByZXR1cm4gZW5zdXJl
Q2FjaGVkSFRNTENvbGxlY3Rpb24oTWFwQXJlYXMpOworICAgIHJldHVybiBlbnN1cmVSYXJlRGF0
YSgpLmVuc3VyZU5vZGVMaXN0cygpLmFkZENhY2hlZENvbGxlY3Rpb248R2VuZXJpY0NhY2hlZEhU
TUxDb2xsZWN0aW9uPENvbGxlY3Rpb25UeXBlVHJhaXRzPE1hcEFyZWFzPjo6dHJhdmVyc2FsVHlw
ZT4+KCp0aGlzLCBNYXBBcmVhcyk7CiB9CiAKIE5vZGU6Okluc2VydGlvbk5vdGlmaWNhdGlvblJl
cXVlc3QgSFRNTE1hcEVsZW1lbnQ6Omluc2VydGVkSW50byhDb250YWluZXJOb2RlJiBpbnNlcnRp
b25Qb2ludCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE5hbWVDb2xsZWN0
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE5hbWVDb2xsZWN0aW9uLmNwcAppbmRl
eCAzN2Y1OGMxNGUxY2RjNWQ2MWMyMzU1MmFmZTYxNjY4MGU5ZmY5ODUzLi4zMjk3NDliYmIwZDMw
ZjkwYzc0NTg3NGQwMTVhMzc0NTUyMzMzNWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxOYW1lQ29sbGVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TmFtZUNvbGxlY3Rpb24uY3BwCkBAIC0zNiwxOSArMzYsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKLUhUTUxOYW1lQ29sbGVjdGlvbjo6SFRN
TE5hbWVDb2xsZWN0aW9uKERvY3VtZW50JiBkb2N1bWVudCwgQ29sbGVjdGlvblR5cGUgdHlwZSwg
Y29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKQotICAgIDogSFRNTENvbGxlY3Rpb24oZG9jdW1lbnQs
IHR5cGUpCi0gICAgLCBtX25hbWUobmFtZSkKLXsKLX0KLQotSFRNTE5hbWVDb2xsZWN0aW9uOjp+
SFRNTE5hbWVDb2xsZWN0aW9uKCkKLXsKLSAgICBBU1NFUlQodHlwZSgpID09IFdpbmRvd05hbWVk
SXRlbXMgfHwgdHlwZSgpID09IERvY3VtZW50TmFtZWRJdGVtcyk7Ci0KLSAgICBkb2N1bWVudCgp
Lm5vZGVMaXN0cygpLT5yZW1vdmVDYWNoZWRDb2xsZWN0aW9uKHRoaXMsIG1fbmFtZSk7Ci19Ci0K
IGJvb2wgV2luZG93TmFtZUNvbGxlY3Rpb246OmVsZW1lbnRNYXRjaGVzSWZOYW1lQXR0cmlidXRl
TWF0Y2goY29uc3QgRWxlbWVudCYgZWxlbWVudCkKIHsKICAgICByZXR1cm4gaXM8SFRNTEltYWdl
RWxlbWVudD4oZWxlbWVudCkgfHwgaXM8SFRNTEZvcm1FbGVtZW50PihlbGVtZW50KSB8fCBpczxI
VE1MQXBwbGV0RWxlbWVudD4oZWxlbWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE5hbWVDb2xsZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxOYW1lQ29s
bGVjdGlvbi5oCmluZGV4IDMyMDc0M2Q1YWE5Y2ZiYjgyMTg0NTU4ZDgyMDE3ODk4YzA4Zjc3Mzcu
LjYwNDY2Yzg1YmJkOTMyZjEzMzlkMjg3ODI2OWQ4M2Y0NDAyNGZiOGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE5hbWVDb2xsZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTmFtZUNvbGxlY3Rpb24uaApAQCAtMjMsMTggKzIzLDIwIEBACiAjaWZuZGVm
IEhUTUxOYW1lQ29sbGVjdGlvbl9oCiAjZGVmaW5lIEhUTUxOYW1lQ29sbGVjdGlvbl9oCiAKLSNp
bmNsdWRlICJIVE1MQ29sbGVjdGlvbi5oIgorI2luY2x1ZGUgIkNhY2hlZEhUTUxDb2xsZWN0aW9u
LmgiCisjaW5jbHVkZSAiTm9kZVJhcmVEYXRhLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWlj
U3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRG9jdW1lbnQ7CiAKLWNs
YXNzIEhUTUxOYW1lQ29sbGVjdGlvbiA6IHB1YmxpYyBIVE1MQ29sbGVjdGlvbiB7Cit0ZW1wbGF0
ZSA8dHlwZW5hbWUgSFRNTENvbGxlY3Rpb25DbGFzcywgQ29sbGVjdGlvblRyYXZlcnNhbFR5cGUg
dHJhdmVyc2FsVHlwZT4KK2NsYXNzIEhUTUxOYW1lQ29sbGVjdGlvbiA6IHB1YmxpYyBDYWNoZWRI
VE1MQ29sbGVjdGlvbjxIVE1MQ29sbGVjdGlvbkNsYXNzLCB0cmF2ZXJzYWxUeXBlPiB7CiBwdWJs
aWM6CiAgICAgdmlydHVhbCB+SFRNTE5hbWVDb2xsZWN0aW9uKCk7CiAKLSAgICBEb2N1bWVudCYg
ZG9jdW1lbnQoKSB7IHJldHVybiBkb3duY2FzdDxEb2N1bWVudD4ob3duZXJOb2RlKCkpOyB9Cisg
ICAgRG9jdW1lbnQmIGRvY3VtZW50KCkgeyByZXR1cm4gZG93bmNhc3Q8RG9jdW1lbnQ+KHRoaXMt
Pm93bmVyTm9kZSgpKTsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgSFRNTE5hbWVDb2xsZWN0aW9uKERv
Y3VtZW50JiwgQ29sbGVjdGlvblR5cGUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSk7CkBAIC00
MiwxMyArNDQsMjkgQEAgcHJvdGVjdGVkOgogICAgIEF0b21pY1N0cmluZyBtX25hbWU7CiB9Owog
Ci1jbGFzcyBXaW5kb3dOYW1lQ29sbGVjdGlvbiBmaW5hbCA6IHB1YmxpYyBIVE1MTmFtZUNvbGxl
Y3Rpb24gewordGVtcGxhdGUgPHR5cGVuYW1lIEhUTUxDb2xsZWN0aW9uQ2xhc3MsIENvbGxlY3Rp
b25UcmF2ZXJzYWxUeXBlIHRyYXZlcnNhbFR5cGU+CitIVE1MTmFtZUNvbGxlY3Rpb248SFRNTENv
bGxlY3Rpb25DbGFzcywgdHJhdmVyc2FsVHlwZT46OkhUTUxOYW1lQ29sbGVjdGlvbihEb2N1bWVu
dCYgZG9jdW1lbnQsIENvbGxlY3Rpb25UeXBlIHR5cGUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFt
ZSkKKyAgICA6IENhY2hlZEhUTUxDb2xsZWN0aW9uPEhUTUxDb2xsZWN0aW9uQ2xhc3MsIHRyYXZl
cnNhbFR5cGU+KGRvY3VtZW50LCB0eXBlKQorICAgICwgbV9uYW1lKG5hbWUpCit7Cit9CisKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBIVE1MQ29sbGVjdGlvbkNsYXNzLCBDb2xsZWN0aW9uVHJhdmVyc2Fs
VHlwZSB0cmF2ZXJzYWxUeXBlPgorSFRNTE5hbWVDb2xsZWN0aW9uPEhUTUxDb2xsZWN0aW9uQ2xh
c3MsIHRyYXZlcnNhbFR5cGU+Ojp+SFRNTE5hbWVDb2xsZWN0aW9uKCkKK3sKKyAgICBBU1NFUlQo
dGhpcy0+dHlwZSgpID09IFdpbmRvd05hbWVkSXRlbXMgfHwgdGhpcy0+dHlwZSgpID09IERvY3Vt
ZW50TmFtZWRJdGVtcyk7CisKKyAgICBkb2N1bWVudCgpLm5vZGVMaXN0cygpLT5yZW1vdmVDYWNo
ZWRDb2xsZWN0aW9uKHRoaXMsIG1fbmFtZSk7Cit9CisKK2NsYXNzIFdpbmRvd05hbWVDb2xsZWN0
aW9uIGZpbmFsIDogcHVibGljIEhUTUxOYW1lQ29sbGVjdGlvbjxXaW5kb3dOYW1lQ29sbGVjdGlv
biwgQ29sbGVjdGlvblRyYXZlcnNhbFR5cGU6OkRlc2NlbmRhbnRzPiB7CiBwdWJsaWM6CiAgICAg
c3RhdGljIFJlZjxXaW5kb3dOYW1lQ29sbGVjdGlvbj4gY3JlYXRlKERvY3VtZW50JiBkb2N1bWVu
dCwgQ29sbGVjdGlvblR5cGUgdHlwZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2luZG93TmFtZUNvbGxlY3Rpb24oZG9jdW1l
bnQsIHR5cGUsIG5hbWUpKTsKICAgICB9CiAKKyAgICAvLyBGb3IgQ2FjaGVkSFRNTENvbGxlY3Rp
b24uCiAgICAgYm9vbCBlbGVtZW50TWF0Y2hlcyhjb25zdCBFbGVtZW50JiBlbGVtZW50KSBjb25z
dCB7IHJldHVybiBlbGVtZW50TWF0Y2hlcyhlbGVtZW50LCBtX25hbWUuaW1wbCgpKTsgfQogCiAg
ICAgc3RhdGljIGJvb2wgZWxlbWVudE1hdGNoZXNJZklkQXR0cmlidXRlTWF0Y2goY29uc3QgRWxl
bWVudCYpIHsgcmV0dXJuIHRydWU7IH0KQEAgLTU3LDEzICs3NSwxMyBAQCBwdWJsaWM6CiAKIHBy
aXZhdGU6CiAgICAgV2luZG93TmFtZUNvbGxlY3Rpb24oRG9jdW1lbnQmIGRvY3VtZW50LCBDb2xs
ZWN0aW9uVHlwZSB0eXBlLCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpCi0gICAgICAgIDogSFRN
TE5hbWVDb2xsZWN0aW9uKGRvY3VtZW50LCB0eXBlLCBuYW1lKQorICAgICAgICA6IEhUTUxOYW1l
Q29sbGVjdGlvbjxXaW5kb3dOYW1lQ29sbGVjdGlvbiwgQ29sbGVjdGlvblRyYXZlcnNhbFR5cGU6
OkRlc2NlbmRhbnRzPihkb2N1bWVudCwgdHlwZSwgbmFtZSkKICAgICB7CiAgICAgICAgIEFTU0VS
VCh0eXBlID09IFdpbmRvd05hbWVkSXRlbXMpOwogICAgIH0KIH07CiAKLWNsYXNzIERvY3VtZW50
TmFtZUNvbGxlY3Rpb24gZmluYWwgOiBwdWJsaWMgSFRNTE5hbWVDb2xsZWN0aW9uIHsKK2NsYXNz
IERvY3VtZW50TmFtZUNvbGxlY3Rpb24gZmluYWwgOiBwdWJsaWMgSFRNTE5hbWVDb2xsZWN0aW9u
PERvY3VtZW50TmFtZUNvbGxlY3Rpb24sIENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlOjpEZXNjZW5k
YW50cz4gewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8RG9jdW1lbnROYW1lQ29sbGVjdGlvbj4g
Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgQ29sbGVjdGlvblR5cGUgdHlwZSwgY29uc3QgQXRv
bWljU3RyaW5nJiBuYW1lKQogICAgIHsKQEAgLTcyLDEzICs5MCwxNSBAQCBwdWJsaWM6CiAKICAg
ICBzdGF0aWMgYm9vbCBlbGVtZW50TWF0Y2hlc0lmSWRBdHRyaWJ1dGVNYXRjaChjb25zdCBFbGVt
ZW50Jik7CiAgICAgc3RhdGljIGJvb2wgZWxlbWVudE1hdGNoZXNJZk5hbWVBdHRyaWJ1dGVNYXRj
aChjb25zdCBFbGVtZW50Jik7CisKKyAgICAvLyBGb3IgQ2FjaGVkSFRNTENvbGxlY3Rpb24uCiAg
ICAgYm9vbCBlbGVtZW50TWF0Y2hlcyhjb25zdCBFbGVtZW50JiBlbGVtZW50KSBjb25zdCB7IHJl
dHVybiBlbGVtZW50TWF0Y2hlcyhlbGVtZW50LCBtX25hbWUuaW1wbCgpKTsgfQogCiAgICAgc3Rh
dGljIGJvb2wgZWxlbWVudE1hdGNoZXMoY29uc3QgRWxlbWVudCYsIGNvbnN0IEF0b21pY1N0cmlu
Z0ltcGwqKTsKIAogcHJpdmF0ZToKICAgICBEb2N1bWVudE5hbWVDb2xsZWN0aW9uKERvY3VtZW50
JiBkb2N1bWVudCwgQ29sbGVjdGlvblR5cGUgdHlwZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1l
KQotICAgICAgICA6IEhUTUxOYW1lQ29sbGVjdGlvbihkb2N1bWVudCwgdHlwZSwgbmFtZSkKKyAg
ICAgICAgOiBIVE1MTmFtZUNvbGxlY3Rpb248RG9jdW1lbnROYW1lQ29sbGVjdGlvbiwgQ29sbGVj
dGlvblRyYXZlcnNhbFR5cGU6OkRlc2NlbmRhbnRzPihkb2N1bWVudCwgdHlwZSwgbmFtZSkKICAg
ICB7CiAgICAgICAgIEFTU0VSVCh0eXBlID09IERvY3VtZW50TmFtZWRJdGVtcyk7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uc0NvbGxlY3Rpb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uc0NvbGxlY3Rpb24uY3BwCmluZGV4IDE1
MDhiNDE1YzQyZGFlYjEwODAxY2Q4OWMyOTE0NmQ3NzA5MzEyZTkuLmQ5YWRhMDZiMzVhMDhmOTQ2
MDBmMDExODU0MWFjYzM2YWMyMWM0YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE9wdGlvbnNDb2xsZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxP
cHRpb25zQ29sbGVjdGlvbi5jcHAKQEAgLTI3LDcgKzI3LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogSFRNTE9wdGlvbnNDb2xsZWN0aW9uOjpIVE1MT3B0aW9uc0NvbGxlY3Rpb24oSFRNTFNl
bGVjdEVsZW1lbnQmIHNlbGVjdCkKLSAgICA6IEhUTUxDb2xsZWN0aW9uKHNlbGVjdCwgU2VsZWN0
T3B0aW9ucykKKyAgICA6IENhY2hlZEhUTUxDb2xsZWN0aW9uPEhUTUxPcHRpb25zQ29sbGVjdGlv
biwgQ29sbGVjdGlvblR5cGVUcmFpdHM8U2VsZWN0T3B0aW9ucz46OnRyYXZlcnNhbFR5cGU+KHNl
bGVjdCwgU2VsZWN0T3B0aW9ucykKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MT3B0aW9uc0NvbGxlY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9w
dGlvbnNDb2xsZWN0aW9uLmgKaW5kZXggNjM2Njg2NWU1NWMxYzNhNjc3OTQxNTM5ZTMzNzExMWQz
YWYzOWUxNi4uYzVmZDE3YmY3MjY3ZjI1Yjc0NWQ0MDQ4MzBmODc4NWI0YmQxYmJmYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uc0NvbGxlY3Rpb24uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25zQ29sbGVjdGlvbi5oCkBAIC0yNCw3ICsyNCw3
IEBACiAjaWZuZGVmIEhUTUxPcHRpb25zQ29sbGVjdGlvbl9oCiAjZGVmaW5lIEhUTUxPcHRpb25z
Q29sbGVjdGlvbl9oCiAKLSNpbmNsdWRlICJIVE1MQ29sbGVjdGlvbi5oIgorI2luY2x1ZGUgIkNh
Y2hlZEhUTUxDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiSFRNTFNlbGVjdEVsZW1lbnQuaCIKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzMsNyArMzMsNyBAQCBjbGFzcyBIVE1MT3B0aW9uRWxl
bWVudDsKIAogdHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKIAotY2xhc3MgSFRNTE9wdGlvbnND
b2xsZWN0aW9uIGZpbmFsIDogcHVibGljIEhUTUxDb2xsZWN0aW9uIHsKK2NsYXNzIEhUTUxPcHRp
b25zQ29sbGVjdGlvbiBmaW5hbCA6IHB1YmxpYyBDYWNoZWRIVE1MQ29sbGVjdGlvbjxIVE1MT3B0
aW9uc0NvbGxlY3Rpb24sIENvbGxlY3Rpb25UeXBlVHJhaXRzPFNlbGVjdE9wdGlvbnM+Ojp0cmF2
ZXJzYWxUeXBlPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxIVE1MT3B0aW9uc0NvbGxlY3Rp
b24+IGNyZWF0ZShIVE1MU2VsZWN0RWxlbWVudCYsIENvbGxlY3Rpb25UeXBlKTsKIApAQCAtNTAs
MTAgKzUwLDE4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0TGVuZ3RoKHVuc2lnbmVkLCBFeGNl
cHRpb25Db2RlJik7CiAKKyAgICAvLyBGb3IgQ2FjaGVkSFRNTENvbGxlY3Rpb24uCisgICAgYm9v
bCBlbGVtZW50TWF0Y2hlcyhFbGVtZW50JikgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgZXhwbGlj
aXQgSFRNTE9wdGlvbnNDb2xsZWN0aW9uKEhUTUxTZWxlY3RFbGVtZW50Jik7CiB9OwogCitpbmxp
bmUgYm9vbCBIVE1MT3B0aW9uc0NvbGxlY3Rpb246OmVsZW1lbnRNYXRjaGVzKEVsZW1lbnQmIGVs
ZW1lbnQpIGNvbnN0Cit7CisgICAgcmV0dXJuIGVsZW1lbnQuaGFzVGFnTmFtZShIVE1MTmFtZXM6
Om9wdGlvblRhZyk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogU1BFQ0lBTElaRV9U
WVBFX1RSQUlUU19IVE1MQ09MTEVDVElPTihIVE1MT3B0aW9uc0NvbGxlY3Rpb24sIFNlbGVjdE9w
dGlvbnMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwCmluZGV4IGQ1
MDVmM2YxMGEwYzQ4NTI0NDU4Yjk0NTRkNGVlYmQ0Yzk1N2Q3NzAuLmM4YjQyNjMyMzM5NzA0NmQ4
YjRlMzkxMmJlZjdmNDM5OWU1MDNjODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFNlbGVjdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVj
dEVsZW1lbnQuY3BwCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSAiRm9ybUNvbnRyb2xsZXIu
aCIKICNpbmNsdWRlICJGb3JtRGF0YUxpc3QuaCIKICNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1
ZGUgIkdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxGb3JtRWxl
bWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhUTUxPcHRHcm91cEVs
ZW1lbnQuaCIKQEAgLTQ2LDYgKzQ3LDcgQEAKICNpbmNsdWRlICJLZXlib2FyZEV2ZW50LmgiCiAj
aW5jbHVkZSAiTG9jYWxpemVkU3RyaW5ncy5oIgogI2luY2x1ZGUgIk1vdXNlRXZlbnQuaCIKKyNp
bmNsdWRlICJOb2RlUmFyZURhdGEuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGxh
dGZvcm1Nb3VzZUV2ZW50LmgiCiAjaW5jbHVkZSAiUmVuZGVyTGlzdEJveC5oIgpAQCAtMzc0LDEy
ICszNzYsMTIgQEAgYm9vbCBIVE1MU2VsZWN0RWxlbWVudDo6Y2hpbGRTaG91bGRDcmVhdGVSZW5k
ZXJlcihjb25zdCBOb2RlJiBjaGlsZCkgY29uc3QKIAogUmVmPEhUTUxDb2xsZWN0aW9uPiBIVE1M
U2VsZWN0RWxlbWVudDo6c2VsZWN0ZWRPcHRpb25zKCkKIHsKLSAgICByZXR1cm4gZW5zdXJlQ2Fj
aGVkSFRNTENvbGxlY3Rpb24oU2VsZWN0ZWRPcHRpb25zKTsKKyAgICByZXR1cm4gZW5zdXJlUmFy
ZURhdGEoKS5lbnN1cmVOb2RlTGlzdHMoKS5hZGRDYWNoZWRDb2xsZWN0aW9uPEdlbmVyaWNDYWNo
ZWRIVE1MQ29sbGVjdGlvbjxDb2xsZWN0aW9uVHlwZVRyYWl0czxTZWxlY3RlZE9wdGlvbnM+Ojp0
cmF2ZXJzYWxUeXBlPj4oKnRoaXMsIFNlbGVjdGVkT3B0aW9ucyk7CiB9CiAKIFJlZjxIVE1MT3B0
aW9uc0NvbGxlY3Rpb24+IEhUTUxTZWxlY3RFbGVtZW50OjpvcHRpb25zKCkKIHsKLSAgICByZXR1
cm4gZG93bmNhc3Q8SFRNTE9wdGlvbnNDb2xsZWN0aW9uPihlbnN1cmVDYWNoZWRIVE1MQ29sbGVj
dGlvbihTZWxlY3RPcHRpb25zKS5nZXQoKSk7CisgICAgcmV0dXJuIGVuc3VyZVJhcmVEYXRhKCku
ZW5zdXJlTm9kZUxpc3RzKCkuYWRkQ2FjaGVkQ29sbGVjdGlvbjxIVE1MT3B0aW9uc0NvbGxlY3Rp
b24+KCp0aGlzLCBTZWxlY3RPcHRpb25zKTsKIH0KIAogdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6
dXBkYXRlTGlzdEl0ZW1TZWxlY3RlZFN0YXRlcygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFi
bGVFbGVtZW50LmNwcAppbmRleCA3NDU3MzYxYjZlMTI1ZWFlZjk2NWFmNTQ1MzNiZjMzZjY4NDZl
YWE3Li4wMjgwODZhNjE4ZGY2YjM0ZWUzNDRhZjFkMDM3YTQwNzRlNjY0ODVjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVudC5jcHAKQEAgLTMxLDEyICszMSwxNCBAQAogI2lu
Y2x1ZGUgIkNTU1ZhbHVlUG9vbC5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNs
dWRlICJFeGNlcHRpb25Db2RlUGxhY2Vob2xkZXIuaCIKKyNpbmNsdWRlICJHZW5lcmljQ2FjaGVk
SFRNTENvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJIVE1M
UGFyc2VySWRpb21zLmgiCiAjaW5jbHVkZSAiSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQuaCIKICNp
bmNsdWRlICJIVE1MVGFibGVSb3dFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFRhYmxlUm93c0Nv
bGxlY3Rpb24uaCIKICNpbmNsdWRlICJIVE1MVGFibGVTZWN0aW9uRWxlbWVudC5oIgorI2luY2x1
ZGUgIk5vZGVSYXJlRGF0YS5oIgogI2luY2x1ZGUgIlJlbmRlclRhYmxlLmgiCiAjaW5jbHVkZSAi
U3R5bGVQcm9wZXJ0aWVzLmgiCiAjaW5jbHVkZSA8d3RmL1JlZi5oPgpAQCAtNTUxLDEyICs1NTMs
MTIgQEAgYm9vbCBIVE1MVGFibGVFbGVtZW50Ojppc1VSTEF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1
dGUmIGF0dHJpYnV0ZSkgY29uc3QKIAogUmVmPEhUTUxDb2xsZWN0aW9uPiBIVE1MVGFibGVFbGVt
ZW50Ojpyb3dzKCkKIHsKLSAgICByZXR1cm4gZW5zdXJlQ2FjaGVkSFRNTENvbGxlY3Rpb24oVGFi
bGVSb3dzKTsKKyAgICByZXR1cm4gZW5zdXJlUmFyZURhdGEoKS5lbnN1cmVOb2RlTGlzdHMoKS5h
ZGRDYWNoZWRDb2xsZWN0aW9uPEhUTUxUYWJsZVJvd3NDb2xsZWN0aW9uPigqdGhpcywgVGFibGVS
b3dzKTsKIH0KIAogUmVmPEhUTUxDb2xsZWN0aW9uPiBIVE1MVGFibGVFbGVtZW50Ojp0Qm9kaWVz
KCkKIHsKLSAgICByZXR1cm4gZW5zdXJlQ2FjaGVkSFRNTENvbGxlY3Rpb24oVGFibGVUQm9kaWVz
KTsKKyAgICByZXR1cm4gZW5zdXJlUmFyZURhdGEoKS5lbnN1cmVOb2RlTGlzdHMoKS5hZGRDYWNo
ZWRDb2xsZWN0aW9uPEdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbjxDb2xsZWN0aW9uVHlwZVRy
YWl0czxUYWJsZVRCb2RpZXM+Ojp0cmF2ZXJzYWxUeXBlPj4oKnRoaXMsIFRhYmxlVEJvZGllcyk7
CiB9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgSFRNTFRhYmxlRWxlbWVudDo6cnVsZXMoKSBjb25z
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVSb3dFbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlUm93RWxlbWVudC5jcHAKaW5kZXggZDQz
NTFlYWZjYTVlNmY3NTUyNmI5N2EzMDRiYTY3YWZhNjgwN2VhOC4uYzg3MjU5ZjVlY2I5NmQwYWE2
MDQ4ZDRkMTRhZThiNjBmOTNiNjhiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MVGFibGVSb3dFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJs
ZVJvd0VsZW1lbnQuY3BwCkBAIC0yNiwxMiArMjYsMTMgQEAKICNpbmNsdWRlICJIVE1MVGFibGVS
b3dFbGVtZW50LmgiCiAKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCi0jaW5jbHVkZSAiSFRN
TENvbGxlY3Rpb24uaCIKKyNpbmNsdWRlICJHZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb24uaCIK
ICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJIVE1MVGFibGVDZWxsRWxlbWVudC5o
IgogI2luY2x1ZGUgIkhUTUxUYWJsZUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MVGFibGVTZWN0
aW9uRWxlbWVudC5oIgogI2luY2x1ZGUgIk5vZGVMaXN0LmgiCisjaW5jbHVkZSAiTm9kZVJhcmVE
YXRhLmgiCiAjaW5jbHVkZSAiVGV4dC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xNTYs
NyArMTU3LDcgQEAgdm9pZCBIVE1MVGFibGVSb3dFbGVtZW50OjpkZWxldGVDZWxsKGludCBpbmRl
eCwgRXhjZXB0aW9uQ29kZSYgZWMpCiAKIFJlZjxIVE1MQ29sbGVjdGlvbj4gSFRNTFRhYmxlUm93
RWxlbWVudDo6Y2VsbHMoKQogewotICAgIHJldHVybiBlbnN1cmVDYWNoZWRIVE1MQ29sbGVjdGlv
bihUUkNlbGxzKTsKKyAgICByZXR1cm4gZW5zdXJlUmFyZURhdGEoKS5lbnN1cmVOb2RlTGlzdHMo
KS5hZGRDYWNoZWRDb2xsZWN0aW9uPEdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbjxDb2xsZWN0
aW9uVHlwZVRyYWl0czxUUkNlbGxzPjo6dHJhdmVyc2FsVHlwZT4+KCp0aGlzLCBUUkNlbGxzKTsK
IH0KIAogdm9pZCBIVE1MVGFibGVSb3dFbGVtZW50OjpzZXRDZWxscyhIVE1MQ29sbGVjdGlvbios
IEV4Y2VwdGlvbkNvZGUmIGVjKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VGFibGVSb3dzQ29sbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVJv
d3NDb2xsZWN0aW9uLmNwcAppbmRleCBiZmE1ZjZkNzhkMGZiY2E3M2I4M2ViZTNhMmUwMWMyYTQx
MzYwYTI1Li4yZDkxZDlkNDhmNzg3ODY3Zjc3OGU4MGM2OTI1MGVlMzZkNmUwZGEyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVJvd3NDb2xsZWN0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVJvd3NDb2xsZWN0aW9uLmNwcApAQCAtMTQ5
LDcgKzE0OSw3IEBAIEhUTUxUYWJsZVJvd0VsZW1lbnQqIEhUTUxUYWJsZVJvd3NDb2xsZWN0aW9u
OjpsYXN0Um93KEhUTUxUYWJsZUVsZW1lbnQmIHRhYmxlKQogfQogCiBIVE1MVGFibGVSb3dzQ29s
bGVjdGlvbjo6SFRNTFRhYmxlUm93c0NvbGxlY3Rpb24oSFRNTFRhYmxlRWxlbWVudCYgdGFibGUp
Ci0gICAgOiBIVE1MQ29sbGVjdGlvbih0YWJsZSwgVGFibGVSb3dzLCBDdXN0b21Gb3J3YXJkT25s
eVRyYXZlcnNhbCkKKyAgICA6IENhY2hlZEhUTUxDb2xsZWN0aW9uPEhUTUxUYWJsZVJvd3NDb2xs
ZWN0aW9uLCBDb2xsZWN0aW9uVHlwZVRyYWl0czxUYWJsZVJvd3M+Ojp0cmF2ZXJzYWxUeXBlPih0
YWJsZSwgVGFibGVSb3dzKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxUYWJsZVJvd3NDb2xsZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJs
ZVJvd3NDb2xsZWN0aW9uLmgKaW5kZXggOWViNWZhNmE3YTI5ODE0ZjIzZTE0ZTM3YWE5OTUzNmRk
ZWRhZjk0NC4uYmYwN2EzMjlmNTgxNTU5NDE2ZjQyZGJkNjdjMTIwODZjNWUxMjE2ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVSb3dzQ29sbGVjdGlvbi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlUm93c0NvbGxlY3Rpb24uaApAQCAtMjksMTQg
KzI5LDE0IEBACiAjaWZuZGVmIEhUTUxUYWJsZVJvd3NDb2xsZWN0aW9uX2gKICNkZWZpbmUgSFRN
TFRhYmxlUm93c0NvbGxlY3Rpb25faAogCi0jaW5jbHVkZSAiSFRNTENvbGxlY3Rpb24uaCIKKyNp
bmNsdWRlICJDYWNoZWRIVE1MQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxUYWJsZUVsZW1l
bnQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBIVE1MVGFibGVSb3dFbGVtZW50
OwogCi1jbGFzcyBIVE1MVGFibGVSb3dzQ29sbGVjdGlvbiBmaW5hbCA6IHB1YmxpYyBIVE1MQ29s
bGVjdGlvbiB7CitjbGFzcyBIVE1MVGFibGVSb3dzQ29sbGVjdGlvbiBmaW5hbCA6IHB1YmxpYyBD
YWNoZWRIVE1MQ29sbGVjdGlvbjxIVE1MVGFibGVSb3dzQ29sbGVjdGlvbiwgQ29sbGVjdGlvblR5
cGVUcmFpdHM8VGFibGVSb3dzPjo6dHJhdmVyc2FsVHlwZT4gewogcHVibGljOgogICAgIHN0YXRp
YyBSZWY8SFRNTFRhYmxlUm93c0NvbGxlY3Rpb24+IGNyZWF0ZShIVE1MVGFibGVFbGVtZW50Jiwg
Q29sbGVjdGlvblR5cGUpOwogCkBAIC00NiwxMCArNDYsMTEgQEAgcHVibGljOgogICAgIHN0YXRp
YyBIVE1MVGFibGVSb3dFbGVtZW50KiByb3dBZnRlcihIVE1MVGFibGVFbGVtZW50JiwgSFRNTFRh
YmxlUm93RWxlbWVudCopOwogICAgIHN0YXRpYyBIVE1MVGFibGVSb3dFbGVtZW50KiBsYXN0Um93
KEhUTUxUYWJsZUVsZW1lbnQmKTsKIAorICAgIC8vIEZvciBDYWNoZWRIVE1MQ29sbGVjdGlvbi4K
KyAgICBFbGVtZW50KiBjdXN0b21FbGVtZW50QWZ0ZXIoRWxlbWVudCopIGNvbnN0OworCiBwcml2
YXRlOgogICAgIGV4cGxpY2l0IEhUTUxUYWJsZVJvd3NDb2xsZWN0aW9uKEhUTUxUYWJsZUVsZW1l
bnQmKTsKLQotICAgIHZpcnR1YWwgRWxlbWVudCogY3VzdG9tRWxlbWVudEFmdGVyKEVsZW1lbnQq
KSBjb25zdCBvdmVycmlkZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVTZWN0aW9uRWxlbWVudC5jcHAKaW5kZXggZjc1NzE3
ZTU5ODI5MmI3NGVkNDIyNzU4YzQ4MDZkYzVjMDA3YmJkZS4uOWU0NTMxNmY4ZjNmNGZjNmRhOGUz
ZGNkYjFiM2U0ZTJkZDkyN2Q4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VGFibGVTZWN0aW9uRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFi
bGVTZWN0aW9uRWxlbWVudC5jcHAKQEAgLTI2LDExICsyNiwxMyBAQAogI2luY2x1ZGUgIkhUTUxU
YWJsZVNlY3Rpb25FbGVtZW50LmgiCiAKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5j
bHVkZSAiR2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiSFRNTENvbGxl
Y3Rpb24uaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJIVE1MVGFibGVSb3dF
bGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFRhYmxlRWxlbWVudC5oIgogI2luY2x1ZGUgIk5vZGVM
aXN0LmgiCisjaW5jbHVkZSAiTm9kZVJhcmVEYXRhLmgiCiAjaW5jbHVkZSAiVGV4dC5oIgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xNDcsNyArMTQ5LDcgQEAgdm9pZCBIVE1MVGFibGVTZWN0
aW9uRWxlbWVudDo6c2V0VkFsaWduKGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCiAKIFJlZjxI
VE1MQ29sbGVjdGlvbj4gSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQ6OnJvd3MoKQogewotICAgIHJl
dHVybiBlbnN1cmVDYWNoZWRIVE1MQ29sbGVjdGlvbihUU2VjdGlvblJvd3MpOworICAgIHJldHVy
biBlbnN1cmVSYXJlRGF0YSgpLmVuc3VyZU5vZGVMaXN0cygpLmFkZENhY2hlZENvbGxlY3Rpb248
R2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uPENvbGxlY3Rpb25UeXBlVHJhaXRzPFRTZWN0aW9u
Um93cz46OnRyYXZlcnNhbFR5cGU+PigqdGhpcywgVFNlY3Rpb25Sb3dzKTsKIH0KIAogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>259125</attachid>
            <date>2015-08-16 10:57:10 -0700</date>
            <delta_ts>2015-08-16 11:01:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-147979-20150816105649.patch</filename>
            <type>text/plain</type>
            <size>114055</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg4NTE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzgyZjZmMTM1MDMyOGVi
ZjE0ZWY3ODczMzk4YzFkZGRlZDdmZTM2OS4uNDgzNzI2ZmIwMjEwYWE0MmNlZDU3ZjgwYTgwYzJk
Mjk0MDBmNTE2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4MCBAQAorMjAxNS0wOC0xNSAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFJlZmFjdG9yIEhUTUxDb2xs
ZWN0aW9uIHRvIGJlIGFzIGZhc3QgYXMgQ2FjaGVkTGl2ZU5vZGVMaXN0CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDc5NzkKKworICAgICAgICBSZXZp
ZXdlZCBieSBSeW9zdWtlIE5pd2EuCisKKyAgICAgICAgUmVmYWN0b3IgSFRNTENvbGxlY3Rpb24g
dG8gYmUgYXMgZmFzdCBhcyBDYWNoZWRMaXZlTm9kZUxpc3QuIFRoaXMgaXMgaW4KKyAgICAgICAg
cHJlcGFyYXRpb24gb2YgaGF2aW5nIGdldEVsZW1lbnRzQnlUYWdOYW1lKigpIC8gZ2V0RWxlbWVu
dHNCeUNsYXNzTmFtZSgpCisgICAgICAgIHJldHVybiBhbiBIVE1MQ29sbGVjdGlvbiBpbnN0ZWFk
IG9mIGEgTm9kZUxpc3QsIGFzIHBlciB0aGUKKyAgICAgICAgc3BlY2lmaWNhdGlvbi4gQ2hyb21l
IGFuZCBGaXJlZm94IGFscmVhZHkgbWF0Y2ggdGhlIHNwZWNpZmljYXRpb24gaW4KKyAgICAgICAg
dGhpcyBjYXNlLgorCisgICAgICAgIFRyYXZlcnNpbmcgYW4gSFRNTENvbGxlY3Rpb24gd2FzIHNs
b3cgYmVjYXVzZSBvZiBhbGwgdGhlIGV4dHJhCisgICAgICAgIGJyYW5jaGluZyBpdCBoYWQgY29t
cGFyZWQgdG8gQ2FjaGVkTGl2ZU5vZGVMaXN0LiBUbyBhZGRyZXNzIHRoZSBpc3N1ZSwKKyAgICAg
ICAgdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IHRlbXBsYXRlZCBDYWNoZWRIVE1MQ29sbGVj
dGlvbiBzdWJjbGFzcywKKyAgICAgICAgd2hpY2ggYmVoYXZlcyBpbiBhIHNpbWlsYXIgd2F5IGFz
IENhY2hlZExpdmVOb2RlTGlzdC4gVGhlIDIgdGVtcGxhdGUKKyAgICAgICAgcGFyYW1ldGVycyBh
cmU6CisgICAgICAgIDEuIFRoZSB0eXBlIG9mIHRoZSBzdWJjbGFzcyBvZiBDYWNoZWRIVE1MQ29s
bGVjdGlvbiwgc28gd2UgY2FuIGNhbGwKKyAgICAgICAgICAgZWxlbWVudE1hdGNoZXMoKSBkaXJl
Y3RseSBvbiB0aGUgc3ViY2xhc3MsIHdpdGhvdXQgbmVlZGVkIGFueQorICAgICAgICAgICB2aXJ0
dWFsIGZ1bmN0aW9uIGNhbGwgb3Igc3dpdGNoIHN0YXRlbWVudC4gVGhpcyBpcyB0aGUgc2FtZSBh
cHByb2FjaAorICAgICAgICAgICBhcyBpbiBDYWNoZWRMaXZlTm9kZUxpc3QuCisgICAgICAgIDIu
IFRoZSB0eXBlIG9mIHRyZWUgdHJhdmVyc2FsIHVzZWQgKERlc2NlbmRhbnRzLCBDaGlsZHJlbk9u
bHksCisgICAgICAgICAgIEN1c3RvbUZvcndhcmRPbmx5KS4gVW5saWtlIExpdmVOb2RlTGlzdCwg
SFRNTENvbGxlY3Rpb24gbmVlZHMgdG8KKyAgICAgICAgICAgc3VwcG9ydCB0aGVzZSAzIHR5cGVz
IG9mIHRyZWUgdHJhdmVyc2FsLiBUaGVzZSB3ZXJlIGNhdXNpbmcgZXh0cmEKKyAgICAgICAgICAg
YnJhbmNoaW5nIGZvciBldmVyeSBpdGVtKCkgY2FsbC4gV2UgYXJlIG5vdyBhYmxlIHRvIGNob29z
ZSB0aGUgcmlnaHQKKyAgICAgICAgICAgdHlwZSBvZiB0cmF2ZXJzYWwgZm9yIHRoZSBDYWNoZWRI
VE1MQ29sbGVjdGlvbiBhdCBjb21waWxlIHRpbWUuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgIEFkZCBuZXcgZmlsZXMgdG8gdGhlIFByb2pl
Y3QuCisKKyAgICAgICAgKiBkb20vQ29udGFpbmVyTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDb250YWluZXJOb2RlOjpjaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpDb250YWluZXJO
b2RlOjpjYWNoZWRIVE1MQ29sbGVjdGlvbik6IERlbGV0ZWQuCisgICAgICAgICogZG9tL0NvbnRh
aW5lck5vZGUuaDoKKyAgICAgICAgRHJvcCBDb250YWluZXJOb2RlOjplbnN1cmVDYWNoZWRIVE1M
Q29sbGVjdGlvbigpIGFuZCB1c2UKKyAgICAgICAgTm9kZUxpc3RzTm9kZURhdGE6OmFkZENhY2hl
ZENvbGxlY3Rpb24oKSBkaXJlY3RseSBhdCBjYWxsIHNpdGVzCisgICAgICAgIGluc3RlYWQuIFdl
IG5lZWQgYWNjZXNzIHRvIHRoZSBDb2xsZWN0aW9uVHlwZSBhdCBidWlsZC10aW1lIHNvCisgICAg
ICAgIHdlIGNhbiByZXNvbHZlIHRoZSBDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZSBwYXJhbWV0ZXIg
Zm9yIHRoZQorICAgICAgICBHZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb24gdXNpbmcgQ29sbGVj
dGlvblR5cGVUcmFpdHMuCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAq
IGRvbS9Eb2N1bWVudC5oOgorICAgICAgICBVcGRhdGUgZW5zdXJlQ2FjaGVkQ29sbGVjdGlvbigp
IHNvIHRoZSBDb2xsZWN0aW9uVHlwZSBpcyBub3cgYSB0ZW1wbGF0ZQorICAgICAgICBwYXJhbWV0
ZXIgaW5zdGVhZCBvZiBhIG1ldGhvZCBhcmd1bWVudC4gV2UgbmVlZCB0byBrbm93IHRoZQorICAg
ICAgICBDb2xsZWN0aW9uVHlwZSBhdCBidWlsZCB0aW1lIHRvIGNvbnN0cnVjdCB0aGUgR2VuZXJp
Y0NhY2hlZEhUTUxDb2xsZWN0aW9uLgorCisgICAgICAgICogZG9tL0VsZW1lbnRDaGlsZEl0ZXJh
dG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50VHlw
ZT46Om9wZXJhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRDaGlsZENvbnN0SXRlcmF0
b3I8RWxlbWVudFR5cGU+OjpvcGVyYXRvcik6CisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBkZWNy
ZW1lbnRpbmcgYW4gRWxlbWVudENoaWxkSXRlcmF0b3IsIGZvciBjb25zaXN0ZW5jeQorICAgICAg
ICB3aXRoIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IuIFdlIG5lZWQgdGhpcyB0byBzdXBwb3J0
IGJhY2t3YXJkCisgICAgICAgIHRyYXZlcnNhbCBpbiBDYWNoZWRIVE1MQ29sbGVjdGlvbnMgdGhh
dCB1c2UgdGhlICdDaGlsZHJlbk9ubHknIHR5cGUKKyAgICAgICAgb2YgdHJhdmVyc2FsLgorCisg
ICAgICAgICogZG9tL0xpdmVOb2RlTGlzdC5oOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkTGl2
ZU5vZGVMaXN0PE5vZGVMaXN0VHlwZT46OmNvbGxlY3Rpb25CZWdpbik6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZWRMaXZlTm9kZUxpc3Q8Tm9kZUxpc3RUeXBlPjo6Y29sbGVjdGlvbkxhc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkTGl2ZU5vZGVMaXN0PE5vZGVMaXN0VHlwZT46OmNvbGxl
Y3Rpb25UcmF2ZXJzZUZvcndhcmQpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkTGl2ZU5vZGVM
aXN0PE5vZGVMaXN0VHlwZT46OmNvbGxlY3Rpb25UcmF2ZXJzZUJhY2t3YXJkKToKKyAgICAgICAg
TW92ZSB0cmF2ZXJzYWwgaW1wbGVtZW50YXRpb24gdG8gQ29sbGVjdGlvblRyYXZlcnNhbC5oLCBz
byBpdCBjYW4gYmUKKyAgICAgICAgc2hhcmVkIHdpdGggYWNoZWRIVE1MQ29sbGVjdGlvbi5oLgor
CisgICAgICAgICogaHRtbC9DYWNoZWRIVE1MQ29sbGVjdGlvbi5oOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OnRyYXZlcnNhbFR5cGU+OjpDYWNoZWRIVE1MQ29sbGVjdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjp0cmF2ZXJzYWxUeXBlPjo6fkNhY2hlZEhUTUxDb2xsZWN0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OnRyYXZlcnNhbFR5cGU+OjpDYWNoZWRIVE1MQ29sbGVjdGlvbjo6bWVtb3J5
Q29zdCk6CisgICAgICAgIChXZWJDb3JlOjp0cmF2ZXJzYWxUeXBlPjo6Y29sbGVjdGlvbkNhblRy
YXZlcnNlQmFja3dhcmQpOgorICAgICAgICAoV2ViQ29yZTo6dHJhdmVyc2FsVHlwZT46OmNvbGxl
Y3Rpb25UcmF2ZXJzZUZvcndhcmQpOgorICAgICAgICAoV2ViQ29yZTo6dHJhdmVyc2FsVHlwZT46
OmNvbGxlY3Rpb25UcmF2ZXJzZUJhY2t3YXJkKToKKyAgICAgICAgKFdlYkNvcmU6OnRyYXZlcnNh
bFR5cGU+Ojp3aWxsVmFsaWRhdGVJbmRleENhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6OnRyYXZl
cnNhbFR5cGU+OjpsZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6dHJhdmVyc2FsVHlwZT46Oml0
ZW0pOgorICAgICAgICAoV2ViQ29yZTo6dHJhdmVyc2FsVHlwZT46OmludmFsaWRhdGVDYWNoZSk6
CisgICAgICAgIChXZWJDb3JlOjp0cmF2ZXJzYWxUeXBlPjo6ZWxlbWVudE1hdGNoZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6bmFtZVNob3VsZEJlVmlzaWJsZUluRG9jdW1lbnRBbGwpOgorICAgICAg
ICAoV2ViQ29yZTo6dHJhdmVyc2FsVHlwZT46Om5hbWVkSXRlbSk6CisKKyAgICAgICAgKiBodG1s
L0NvbGxlY3Rpb25UcmF2ZXJzYWwuaDogQWRkZWQuCisgICAgICAgIEFkZCBuZXcgdGVtcGxhdGUg
Y2xhc3MgdGhhdCBwcm92aWRlIHRoZSBjb2xsZWN0aW9uIHRyYXZlcnNhbCBjb2RlCisgICAgICAg
IG5lZWRlZCBieSBDb2xsZWN0aW9uSW5kZXhDYWNoZS4gSXQgaGFzIHRlbXBsYXRlIHNwZWNpYWxp
emF0aW9ucyBmb3IKKyAgICAgICAgYWxsIDMgdHlwZXMgb2YgdHJhdmVyc2FsOiBEZXNjZW5kYW50
cywgQ2hpbGRyZW5Pbmx5LCBhbmQKKyAgICAgICAgQ3VzdG9tRm9yd2FyZE9ubHkuCisKKyAgICAg
ICAgKiBodG1sL0NvbGxlY3Rpb25UeXBlLmg6CisgICAgICAgIEFkZCBDb2xsZWN0aW9uVHlwZVRy
YWl0cyB0cmFpdHMgc28gd2UgY2FuIHJlc29sdmUgdGhlCisgICAgICAgIENvbGxlY3Rpb25UcmF2
ZXJzYWxUeXBlIHVzZWQgYnkgYSBzcGVjaWZpYyBDb2xsZWN0aW9uVHlwZSBhdAorICAgICAgICBj
b21waWxlLXRpbWUuIFRoaXMgaXMgbmVlZGVkIGZvciB0aGUgc2Vjb25kIHRlbXBsYXRlIHBhcmFt
ZXRlciBvZgorICAgICAgICBDYWNoZWRIVE1MQ29sbGVjdGlvbi4KKworICAgICAgICAqIGh0bWwv
R2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
OjpHZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb248dHJhdmVyc2FsVHlwZT46OmVsZW1lbnRNYXRj
aGVzKToKKyAgICAgICAgKiBodG1sL0dlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbi5oOiBBZGRl
ZC4KKyAgICAgICAgQWRkIENhY2hlZEhUTUxDb2xsZWN0aW9uIHN1YmNsYXNzIGlzIHRoZSBnZW5l
cmljIG9uZSB1c2VkIGZvciBhbGwKKyAgICAgICAgQ29sbGVjdGlvblR5cGVzIHRoYXQgZG8gbm90
IGhhdmUgdGhlaXIgb3duIHN1YmNsYXNzIChlLmcuIE5vZGVDaGlsZHJlbikuCisgICAgICAgIFRo
aXMgaGFzIGFuIGVsZW1lbnRNYXRjaGVzKCkgbWV0aG9kIHdpdGggYSBzd2l0Y2goKSBzdGF0ZW1l
bnQgaGFuZGxpbmcKKyAgICAgICAgYWxsIHRoZXNlIENvbGxlY3Rpb25UeXBlcy4gVGhvc2UgYXJl
IG5vdCBub3JtYWxseSBub3QgcGVyZm9ybWFuY2UKKyAgICAgICAgc2Vuc2l0aXZlLgorCisgICAg
ICAgICogaHRtbC9IVE1MQWxsQ29sbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
QWxsQ29sbGVjdGlvbjo6SFRNTEFsbENvbGxlY3Rpb24pOgorICAgICAgICAqIGh0bWwvSFRNTEFs
bENvbGxlY3Rpb24uaDoKKyAgICAgICAgU3ViY2xhc3MgQ2FjaGVkSFRNTENvbGxlY3Rpb24gaW5z
dGVhZCBvZiBIVE1MQ29sbGVjdGlvbi4gQWxzbyBwcm92aWRlCisgICAgICAgIGFuIGVsZW1lbnRN
YXRjaGVzKCkgbWV0aG9kIHRoYXQgc2ltcGx5IHJldHVybnMgdHJ1ZSBhcyB3ZSB3YW50IHRvCisg
ICAgICAgIG1hdGNoIGFsbCBlbGVtZW50cy4KKworICAgICAgICAqIGh0bWwvSFRNTENvbGxlY3Rp
b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENvbGxlY3Rpb246OkhUTUxDb2xsZWN0aW9u
KToKKyAgICAgICAgTW92ZSBDb2xsZWN0aW9uSW5kZXhDYWNoZSBtZW1iZXIgdG8gdGhlIHN1YmNs
YXNzIGFuZCBkcm9wIHRoZSAyIG90aGVyCisgICAgICAgIG1lbWJlcnMgYXMgdGhleSBhcmUgcmVw
bGFjZWQgd2l0aCB0aGUgQ29sbGVjdGlvblRyYXZlcnNhbFR5cGUgdGVtcGxhdGUKKyAgICAgICAg
cGFyYW1ldGVyIG9mIENhY2hlZEhUTUxDb2xsZWN0aW9uLgorCisgICAgICAgIChXZWJDb3JlOjpI
VE1MQ29sbGVjdGlvbjo6fkhUTUxDb2xsZWN0aW9uKToKKyAgICAgICAgTW92ZSBEb2N1bWVudDo6
dW5yZWdpc3RlckNvbGxlY3Rpb24oKSBjYWxsIHRvIH5DYWNoZWRIVE1MQ29sbGVjdGlvbigpCisg
ICAgICAgIGFzIHdlIG5lZWRlZCB0byBjaGVjayBpZiB0aGUgQ29sbGVjdGlvbkluZGV4Q2FjaGUg
d2FzIHZhbGlkIGZpcnN0LgorCisgICAgICAgIChXZWJDb3JlOjpIVE1MQ29sbGVjdGlvbjo6dXBk
YXRlTmFtZWRFbGVtZW50Q2FjaGUpOgorICAgICAgICBNb3ZlIHBhcnQgb2YgdGhlIGltcGxlbWVu
dGF0aW9uIHRvIHRoZSBDYWNoZWRIVE1MQ29sbGVjdGlvbiBzdWJjbGFzcworICAgICAgICBhcyBp
dCBuZWVkcyB0byBrbm93IGFib3V0IHRoZSB0eXBlIG9mIHRyYXZlcnNhbCBhbmQgaXQgbmVlZHMg
dG8gYmUKKyAgICAgICAgYWJsZSB0byBjYWxsIGVsZW1lbnRNYXRjaGVzKCkuCisKKyAgICAgICAg
KiBodG1sL0hUTUxDb2xsZWN0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ29sbGVjdGlv
bjo6cm9vdE5vZGUpOgorICAgICAgICBJbmxpbmUgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMgYW5k
IGNvbnNpc3RlbmN5IHdpdGggQ2FjaGVkTGl2ZU5vZGVMaXN0LgorCisgICAgICAgIChXZWJDb3Jl
OjpIVE1MQ29sbGVjdGlvbjo6bWVtb3J5Q29zdCk6CisgICAgICAgIE1ha2UgdmlydHVhbCBhbmQg
bW92ZSBwYXJ0IG9mIHRoZSBpbXBsZW1lbnRhdGlvbiB0byB0aGUKKyAgICAgICAgQ2FjaGVkSFRN
TENvbGxlY3Rpb24gc3ViY2xhc3MgdG8gY29tcHV0ZSB0aGUgY29zdCBvZiB0aGUKKyAgICAgICAg
Q29sbGVjdGlvbkluZGV4Q2FjaGUuCisKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb2xsZWN0aW9u
OjppbnZhbGlkYXRlQ2FjaGUpOgorICAgICAgICBNb3ZlIHBhcnQgb2YgdGhlIGltcGxlbWVudGF0
aW9uIHRvIHRoZSBzdWJjbGFzcyB0byBpbnZhbGlkYXRlIHRoZQorICAgICAgICBDb2xsZWN0aW9u
SW5kZXhDYWNoZS4KKworICAgICAgICAqIGh0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MRmllbGRTZXRFbGVtZW50OjplbGVtZW50cyk6CisKKyAgICAg
ICAgKiBodG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmNwcDoKKyAgICAgICAgKiBodG1s
L0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmg6CisgICAgICAgIFN1YmNsYXNzIENhY2hlZEhU
TUxDb2xsZWN0aW9uIGluc3RlYWQgb2YgSFRNTENvbGxlY3Rpb24uCisgICAgICAgIGN1c3RvbUVs
ZW1lbnRBZnRlcigpIG5vIGxvbmdlciBuZWVkcyB0byBiZSB2aXJ0dWFsIGFzIGl0CisgICAgICAg
IGlzIGNhbGxlZCBkaXJlY3RseSBieSBDYWNoZWRIVE1MQ29sbGVjdGlvbiBvbiB0aGUgc3ViY2xh
c3MuCisKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MRm9ybUVsZW1lbnQ6OmVsZW1lbnRzKToKKyAgICAgICAgKiBodG1sL0hUTUxNYXBF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNYXBFbGVtZW50OjphcmVhcyk6Cisg
ICAgICAgIENhbGwgTm9kZUxpc3RzTm9kZURhdGE6OmFkZENhY2hlZENvbGxlY3Rpb24oKSBkaXJl
Y3RseS4KKworICAgICAgICAqIGh0bWwvSFRNTE5hbWVDb2xsZWN0aW9uLmNwcDoKKyAgICAgICAg
KiBodG1sL0hUTUxOYW1lQ29sbGVjdGlvbi5oOgorICAgICAgICBTdWJjbGFzcyBDYWNoZWRIVE1M
Q29sbGVjdGlvbiBpbnN0ZWFkIG9mIEhUTUxDb2xsZWN0aW9uLgorCisgICAgICAgICogaHRtbC9I
VE1MT3B0aW9uc0NvbGxlY3Rpb24uY3BwOgorICAgICAgICAqIGh0bWwvSFRNTE9wdGlvbnNDb2xs
ZWN0aW9uLmg6CisgICAgICAgIFN1YmNsYXNzIENhY2hlZEhUTUxDb2xsZWN0aW9uIGluc3RlYWQg
b2YgSFRNTENvbGxlY3Rpb24uCisKKyAgICAgICAgKiBodG1sL0hUTUxTZWxlY3RFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50OjpzZWxlY3RlZE9wdGlvbnMp
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6Om9wdGlvbnMpOgorICAgICAg
ICAqIGh0bWwvSFRNTFRhYmxlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGFi
bGVFbGVtZW50Ojpyb3dzKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUYWJsZUVsZW1lbnQ6OnRC
b2RpZXMpOgorICAgICAgICAqIGh0bWwvSFRNTFRhYmxlUm93RWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MVGFibGVSb3dFbGVtZW50OjpjZWxscyk6CisgICAgICAgIENhbGwgTm9k
ZUxpc3RzTm9kZURhdGE6OmFkZENhY2hlZENvbGxlY3Rpb24oKSBkaXJlY3RseS4KKworICAgICAg
ICAqIGh0bWwvSFRNTFRhYmxlUm93c0NvbGxlY3Rpb24uY3BwOgorICAgICAgICAqIGh0bWwvSFRN
TFRhYmxlUm93c0NvbGxlY3Rpb24uaDoKKyAgICAgICAgU3ViY2xhc3MgQ2FjaGVkSFRNTENvbGxl
Y3Rpb24gaW5zdGVhZCBvZiBIVE1MQ29sbGVjdGlvbi4KKyAgICAgICAgY3VzdG9tRWxlbWVudEFm
dGVyKCkgbm8gbG9uZ2VyIG5lZWRzIHRvIGJlIHZpcnR1YWwgYXMgaXQKKyAgICAgICAgaXMgY2Fs
bGVkIGRpcmVjdGx5IGJ5IENhY2hlZEhUTUxDb2xsZWN0aW9uIG9uIHRoZSBzdWJjbGFzcy4KKwor
ICAgICAgICAqIGh0bWwvSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQ6OnJvd3MpOgorICAgICAgICBDYWxsIE5vZGVM
aXN0c05vZGVEYXRhOjphZGRDYWNoZWRDb2xsZWN0aW9uKCkgZGlyZWN0bHkuCisKIDIwMTUtMDgt
MTUgIFRpbW90aHkgSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAg
IFJFR1JFU1NJT04gKHIxNjgzMjcpOiBJbWFnZURvY3VtZW50cyB3aXRoIG1hcmdpbnMgem9vbSB0
byB0aGUgd3JvbmcgcG9zaXRpb24gd2hlbiBjbGlja2VkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4
IGMzZmE4MmFjMGQ0NmVkYTA2MzNmNmE5YTU0YzlmODdiNDkwNjUzMjMuLjQ5MTZjM2Q0OGJkZjQ2
ZWJjZWIwYzk5ZjhhNmQ1MzRjNTg5ZjMxOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0xNjA4
LDYgKzE2MDgsNyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgaHRtbC9Gb3JtQXNzb2NpYXRl
ZEVsZW1lbnQuY3BwCiAgICAgaHRtbC9Gb3JtQ29udHJvbGxlci5jcHAKICAgICBodG1sL0Zvcm1E
YXRhTGlzdC5jcHAKKyAgICBodG1sL0dlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbi5jcHAKICAg
ICBodG1sL0hUTUxBbGxDb2xsZWN0aW9uLmNwcAogICAgIGh0bWwvSFRNTEFuY2hvckVsZW1lbnQu
Y3BwCiAgICAgaHRtbC9IVE1MQXBwbGV0RWxlbWVudC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCmluZGV4IGM0ZTY1MjVhNDgxNDk3NWY4Y2Mz
OTlmOTc0MmFmOWIyZGE2Yjg5MzQuLmRhMTIwNzM3YTdiZDNkNGM0NmNlZWRlOWE5NzkxNDZkOTIw
ZDY0NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3Jl
LnZjeHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4
cHJvagpAQCAtMTYxMjEsNiArMTYxMjEsNyBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
aHRtbFxGb3JtQ29udHJvbGxlci5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxo
dG1sXEZvcm1EYXRhTGlzdC5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxodG1s
XEZUUERpcmVjdG9yeURvY3VtZW50LmNwcCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XGh0bWxcR2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uLmNwcCIgLz4KICAgICA8Q2xDb21waWxl
IEluY2x1ZGU9Ii4uXGh0bWxcSGlkZGVuSW5wdXRUeXBlLmNwcCIgLz4KICAgICA8Q2xDb21waWxl
IEluY2x1ZGU9Ii4uXGh0bWxcSFRNTEFsbENvbGxlY3Rpb24uY3BwIiAvPgogICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5caHRtbFxIVE1MQW5jaG9yRWxlbWVudC5jcHAiPgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDI5NTFhOGVm
ZGU3YThkN2YwNDYzMTczN2JlMDc2OWRiOWMzOWZmYWEuLmU3MTg4ZjgxNzUwZmQyY2U5NTExNzg1
MjZiZWE1NTJhMDVmOWQwNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE2ODksNiArMTY4OSw3IEBACiAJCTQ2QzgzRUZFMUE5
QkJFMjkwMEE3OUE0MSAvKiBHZW9Ob3RpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDZDODNFRkMxQTlCQkUyOTAwQTc5QTQxIC8qIEdlb05vdGlm
aWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
NDZEQjdENTcxQjIwRkU0NjAwNTY1MUIyIC8qIFZOb2RlVHJhY2tlckNvY29hLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2REI3RDU2MUIyMEZFM0Mw
MDU2NTFCMiAvKiBWTm9kZVRyYWNrZXJDb2NvYS5jcHAgKi87IH07CiAJCTQ2REJCNjUwMUFCOEM5
NkYwMEQ5QTgxMyAvKiBQb3dlck9ic2VydmVyTWFjLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkRCQjY0RTFBQjhDOTZGMDBEOUE4MTMgLyogUG93ZXJP
YnNlcnZlck1hYy5oICovOyB9OworCQk0NkVCRUEwMjFCN0Q0RDY1MDBCRTQ5NDEgLyogQ29sbGVj
dGlvblRyYXZlcnNhbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDZFQkVBMDExQjdENEQ1RDAwQkU0OTQxIC8qIENvbGxlY3Rpb25UcmF2ZXJzYWwuaCAq
LzsgfTsKIAkJNDZGM0UzRjkxQjIxMDkwMDAwODdFRDEzIC8qIFZOb2RlVHJhY2tlci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkRCN0Q1ODFCMjBG
RTU4MDA1NjUxQjIgLyogVk5vZGVUcmFja2VyLmNwcCAqLzsgfTsKIAkJNDZGM0UzRkExQjIxMDkx
MDAwODdFRDEzIC8qIFZOb2RlVHJhY2tlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDZEQjdENTkxQjIwRkU1ODAwNTY1MUIyIC8qIFZOb2RlVHJhY2tl
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2
RkNCNjE4MUE3MDgyMEUwMEM1QTIxRSAvKiBEaWFnbm9zdGljTG9nZ2luZ0tleXMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMzdCMzc1MTVDMUE3RTEw
MDZEQzg5OCAvKiBEaWFnbm9zdGljTG9nZ2luZ0tleXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMjY3Myw2ICsyNjc0LDExIEBACiAJCTgyQUIx
Nzc2MTI1QzgyNjcwMEM1MDY5RCAvKiBJbnNwZWN0b3JSZXNvdXJjZUFnZW50LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MkFCMTc3MjEyNUM4MjY3MDBD
NTA2OUQgLyogSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oICovOyB9OwogCQk4MkUzRDhERTEyMkVB
MEQxMDAzQUU1QkMgLyogQ1NTUHJvcGVydHlTb3VyY2VEYXRhLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgyRTNEOERDMTIyRUEwRDEwMDNBRTVCQyAv
KiBDU1NQcm9wZXJ0eVNvdXJjZURhdGEuY3BwICovOyB9OwogCQk4MkUzRDhERjEyMkVBMEQxMDAz
QUU1QkMgLyogQ1NTUHJvcGVydHlTb3VyY2VEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MkUzRDhERDEyMkVBMEQxMDAzQUU1QkMgLyogQ1NTUHJv
cGVydHlTb3VyY2VEYXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJODMwMDMwRjUxQjdEMzNCNTAwRUQzQUFDIC8qIEdlbmVyaWNDYWNoZWRIVE1M
Q29sbGVjdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4MzAwMzBGMzFCN0QzM0E2MDBFRDNBQUMgLyogR2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0
aW9uLmNwcCAqLzsgfTsKKwkJODMwMDMwRjYxQjdEMzNCNTAwRUQzQUFDIC8qIEdlbmVyaWNDYWNo
ZWRIVE1MQ29sbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gODMwMDMwRjQxQjdEMzNBNjAwRUQzQUFDIC8qIEdlbmVyaWNDYWNoZWRIVE1MQ29s
bGVjdGlvbi5oICovOyB9OworCQk4MzAwMzBGODFCN0QzQjc4MDBFRDNBQUMgLyogQ2FjaGVkSFRN
TENvbGxlY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDgzMDAzMEY3MUI3RDM5ODgwMEVEM0FBQyAvKiBDYWNoZWRIVE1MQ29sbGVjdGlvbi5oICov
OyB9OworCQk4MzFENDhDMDFCN0Q5QTUyMDA2REUzOUEgLyogQ2xhc3NOb2RlTGlzdC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzFENDhCRTFCN0Q5
QTQ2MDA2REUzOUEgLyogQ2xhc3NOb2RlTGlzdC5jcHAgKi87IH07CisJCTgzMUQ0OEMxMUI3RDlB
NTIwMDZERTM5QSAvKiBDbGFzc05vZGVMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA4MzFENDhCRjFCN0Q5QTQ2MDA2REUzOUEgLyogQ2xhc3NOb2Rl
TGlzdC5oICovOyB9OwogCQk4MzJCODQzNDE5RDhFNTUxMDBCMjYwNTUgLyogU1ZHQW5pbWF0ZUVs
ZW1lbnRCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4MzJCODQzMzE5RDhFNTUxMDBCMjYwNTUgLyogU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmggKi87
IH07CiAJCTgzMkI4NDM2MTlEOEU1NzQwMEIyNjA1NSAvKiBTVkdBbmltYXRlRWxlbWVudEJhc2Uu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODMyQjg0
MzUxOUQ4RTU3NDAwQjI2MDU1IC8qIFNWR0FuaW1hdGVFbGVtZW50QmFzZS5jcHAgKi87IH07CiAJ
CTgzNTIwQzdFMUE3MUJGQ0MwMDZCRDJBQSAvKiBDU1NGb250RmFtaWx5LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzUyMEM3RDFBNzFCRkNDMDA2QkQy
QUEgLyogQ1NTRm9udEZhbWlseS5oICovOyB9OwpAQCAtNTQxNCw4ICs1NDIwLDYgQEAKIAkJQkM4
QkYxNUExMDU4MTQxODAwQTQwQTA3IC8qIFVzZXJTdHlsZVNoZWV0VHlwZXMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDOEJGMTU5MTA1ODE0MTgwMEE0
MEEwNyAvKiBVc2VyU3R5bGVTaGVldFR5cGVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkM4QzhGQUQwRERDRDMxQjAwQjU5MkY0IC8qIFJlbmRl
clN0eWxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJDOEM4RkFCMEREQ0QzMUIwMEI1OTJGNCAvKiBSZW5kZXJTdHlsZS5jcHAgKi87IH07CiAJCUJD
OEM4RkFFMEREQ0QzMUIwMEI1OTJGNCAvKiBSZW5kZXJTdHlsZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM4QzhGQUMwRERDRDMxQjAwQjU5MkY0IC8q
IFJlbmRlclN0eWxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKLQkJQkM5MDRCNzYwRDEwOTk4RjAwNjgwRDMyIC8qIENsYXNzTm9kZUxpc3QuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM5MDRCNzIwRDEw
OTk4RjAwNjgwRDMyIC8qIENsYXNzTm9kZUxpc3QuY3BwICovOyB9OwotCQlCQzkwNEI3NzBEMTA5
OThGMDA2ODBEMzIgLyogQ2xhc3NOb2RlTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQkM5MDRCNzMwRDEwOTk4RjAwNjgwRDMyIC8qIENsYXNzTm9k
ZUxpc3QuaCAqLzsgfTsKIAkJQkM5MjZGODAwQzA1NTI0NzAwODI3NzZCIC8qIEpTSFRNTEZyYW1l
U2V0RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCQzkyNkY3RTBDMDU1MjQ3MDA4Mjc3NkIgLyogSlNIVE1MRnJhbWVTZXRFbGVtZW50LmNw
cCAqLzsgfTsKIAkJQkM5MjZGODEwQzA1NTI0NzAwODI3NzZCIC8qIEpTSFRNTEZyYW1lU2V0RWxl
bWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM5
MjZGN0YwQzA1NTI0NzAwODI3NzZCIC8qIEpTSFRNTEZyYW1lU2V0RWxlbWVudC5oICovOyB9Owog
CQlCQzk0MzlDMzExNkNGNDk0MDA0OEM3NTAgLyogSlNOb2RlQ3VzdG9tLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzk0MzlDMjExNkNGNDk0MDA0OEM3
NTAgLyogSlNOb2RlQ3VzdG9tLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKQEAgLTg5MzIsNiArODkzNiw3IEBACiAJCTQ2REI3RDU4MUIyMEZFNTgwMDU2
NTFCMiAvKiBWTm9kZVRyYWNrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gVk5vZGVUcmFja2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZE
QjdENTkxQjIwRkU1ODAwNTY1MUIyIC8qIFZOb2RlVHJhY2tlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBWTm9kZVRyYWNrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDZEQkI2NEUxQUI4Qzk2RjAwRDlBODEzIC8qIFBvd2VyT2JzZXJ2ZXJNYWMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUG93ZXJPYnNlcnZlck1hYy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk0NkVCRUEwMTFCN0Q0RDVEMDBCRTQ5NDEgLyogQ29sbGVj
dGlvblRyYXZlcnNhbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb2xsZWN0
aW9uVHJhdmVyc2FsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5MDcwN0U0MTIx
OUMwNDMwMEQ5MEU1MSAvKiBBTkdMRVdlYktpdEJyaWRnZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBBTkdMRVdlYktpdEJyaWRnZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQ5MDcwN0U1MTIxOUMwNDMwMEQ5MEU1MSAvKiBBTkdMRVdlYktpdEJy
aWRnZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBTkdMRVdlYktpdEJyaWRn
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OTI5MUU0QTEzNDE3MkM4MDBFNzUz
REUgLyogSW1hZ2VSZW5kZXJpbmdNb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEltYWdlUmVuZGVyaW5nTW9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MTAwMzIsNiArMTAwMzcsMTEgQEAKIAkJODJBQjE3NzIxMjVDODI2NzAwQzUwNjlEIC8qIEluc3Bl
Y3RvclJlc291cmNlQWdlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5z
cGVjdG9yUmVzb3VyY2VBZ2VudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MkUz
RDhEQzEyMkVBMEQxMDAzQUU1QkMgLyogQ1NTUHJvcGVydHlTb3VyY2VEYXRhLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENTU1Byb3BlcnR5U291cmNlRGF0YS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgyRTNEOEREMTIyRUEwRDEwMDNBRTVCQyAv
KiBDU1NQcm9wZXJ0eVNvdXJjZURhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQ1NTUHJvcGVydHlTb3VyY2VEYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTgzMDAzMEYzMUI3RDMzQTYwMEVEM0FBQyAvKiBHZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb24u
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR2VuZXJpY0NhY2hlZEhU
TUxDb2xsZWN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODMwMDMwRjQx
QjdEMzNBNjAwRUQzQUFDIC8qIEdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbi5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb24uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODMwMDMwRjcxQjdEMzk4ODAwRUQzQUFDIC8q
IENhY2hlZEhUTUxDb2xsZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IENhY2hlZEhUTUxDb2xsZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTgz
MUQ0OEJFMUI3RDlBNDYwMDZERTM5QSAvKiBDbGFzc05vZGVMaXN0LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENsYXNzTm9kZUxpc3QuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk4MzFENDhCRjFCN0Q5QTQ2MDA2REUzOUEgLyogQ2xhc3NOb2RlTGlz
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDbGFzc05vZGVMaXN0Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzMkI4NDMzMTlEOEU1NTEwMEIyNjA1NSAvKiBT
VkdBbmltYXRlRWxlbWVudEJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgz
MkI4NDM1MTlEOEU1NzQwMEIyNjA1NSAvKiBTVkdBbmltYXRlRWxlbWVudEJhc2UuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODM1MjBDN0QxQTcxQkZDQzAwNkJEMkFB
IC8qIENTU0ZvbnRGYW1pbHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1NT
Rm9udEZhbWlseS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTMwMDAsOCArMTMw
MTAsNiBAQAogCQlCQzhCRjE1OTEwNTgxNDE4MDBBNDBBMDcgLyogVXNlclN0eWxlU2hlZXRUeXBl
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVc2VyU3R5bGVTaGVldFR5cGVz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDOEM4RkFCMEREQ0QzMUIwMEI1OTJG
NCAvKiBSZW5kZXJTdHlsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBSZW5kZXJTdHlsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDOEM4RkFD
MEREQ0QzMUIwMEI1OTJGNCAvKiBSZW5kZXJTdHlsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBSZW5kZXJTdHlsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlC
QzkwNEI3MjBEMTA5OThGMDA2ODBEMzIgLyogQ2xhc3NOb2RlTGlzdC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDbGFzc05vZGVMaXN0LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJQkM5MDRCNzMwRDEwOTk4RjAwNjgwRDMyIC8qIENsYXNzTm9kZUxp
c3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2xhc3NOb2RlTGlzdC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzkyNkY3RTBDMDU1MjQ3MDA4Mjc3NkIgLyog
SlNIVE1MRnJhbWVTZXRFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBKU0hUTUxGcmFtZVNldEVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlCQzkyNkY3RjBDMDU1MjQ3MDA4Mjc3NkIgLyogSlNIVE1MRnJhbWVTZXRFbGVtZW50
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0hUTUxGcmFtZVNldEVsZW1l
bnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM5NDM5QzIxMTZDRjQ5NDAwNDhD
NzUwIC8qIEpTTm9kZUN1c3RvbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBK
U05vZGVDdXN0b20uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE4MTcyLDEwICsx
ODE4MCwxMiBAQAogCQkJCUY1NUIzRDdBMTI1MUYxMkQwMDNFRjI2OSAvKiBCYXNlVGV4dElucHV0
VHlwZS5oICovLAogCQkJCUY1NUIzRDdCMTI1MUYxMkQwMDNFRjI2OSAvKiBCdXR0b25JbnB1dFR5
cGUuY3BwICovLAogCQkJCUY1NUIzRDdDMTI1MUYxMkQwMDNFRjI2OSAvKiBCdXR0b25JbnB1dFR5
cGUuaCAqLywKKwkJCQk4MzAwMzBGNzFCN0QzOTg4MDBFRDNBQUMgLyogQ2FjaGVkSFRNTENvbGxl
Y3Rpb24uaCAqLywKIAkJCQlGNTVCM0Q3RDEyNTFGMTJEMDAzRUYyNjkgLyogQ2hlY2tib3hJbnB1
dFR5cGUuY3BwICovLAogCQkJCUY1NUIzRDdFMTI1MUYxMkQwMDNFRjI2OSAvKiBDaGVja2JveElu
cHV0VHlwZS5oICovLAogCQkJCTRBQ0JDMEJDMTI3MTNDQkQwMDk0RjlCMiAvKiBDbGFzc0xpc3Qu
Y3BwICovLAogCQkJCTRBQ0JDMEJEMTI3MTNDQkQwMDk0RjlCMiAvKiBDbGFzc0xpc3QuaCAqLywK
KwkJCQk0NkVCRUEwMTFCN0Q0RDVEMDBCRTQ5NDEgLyogQ29sbGVjdGlvblRyYXZlcnNhbC5oICov
LAogCQkJCTkzQzQ0MUZGMEY4MTNBRTEwMEMxQTYzNCAvKiBDb2xsZWN0aW9uVHlwZS5oICovLAog
CQkJCUJDMjk5MzVDMTdBMURENTgwMEJDRTg4MCAvKiBDb2xvcklucHV0VHlwZS5jcHAgKi8sCiAJ
CQkJRjU1QjNEODAxMjUxRjEyRDAwM0VGMjY5IC8qIENvbG9ySW5wdXRUeXBlLmggKi8sCkBAIC0x
ODIxMCw2ICsxODIyMCw4IEBACiAJCQkJOUI1MEIxREMxN0NENEMwRjAwODdGNjNDIC8qIEZvcm1O
YW1lZEl0ZW0uaCAqLywKIAkJCQk5NzIwNUFBRDEyMzkyOENBMDBCMTczODAgLyogRlRQRGlyZWN0
b3J5RG9jdW1lbnQuY3BwICovLAogCQkJCTk3MjA1QUFFMTIzOTI4Q0EwMEIxNzM4MCAvKiBGVFBE
aXJlY3RvcnlEb2N1bWVudC5oICovLAorCQkJCTgzMDAzMEYzMUI3RDMzQTYwMEVEM0FBQyAvKiBH
ZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb24uY3BwICovLAorCQkJCTgzMDAzMEY0MUI3RDMzQTYw
MEVEM0FBQyAvKiBHZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb24uaCAqLywKIAkJCQlGNTVCM0Q4
QjEyNTFGMTJEMDAzRUYyNjkgLyogSGlkZGVuSW5wdXRUeXBlLmNwcCAqLywKIAkJCQlGNTVCM0Q4
QzEyNTFGMTJEMDAzRUYyNjkgLyogSGlkZGVuSW5wdXRUeXBlLmggKi8sCiAJCQkJQkM5N0UyMzkx
MDkxNDQ5NTAwMTBEMzYxIC8qIEhUTUxBbGxDb2xsZWN0aW9uLmNwcCAqLywKQEAgLTIzMTY1LDgg
KzIzMTc3LDggQEAKIAkJCQk4M0QyNkQzQzFBRkRDQzUwMDAxQjM4NzMgLyogQ2hpbGROb2RlLmlk
bCAqLywKIAkJCQlBODE4NzIxQTA5NzdEM0MwMDA1ODI2RDkgLyogQ2hpbGROb2RlTGlzdC5jcHAg
Ki8sCiAJCQkJQTgxODcyMTUwOTc3RDNDMDAwNTgyNkQ5IC8qIENoaWxkTm9kZUxpc3QuaCAqLywK
LQkJCQlCQzkwNEI3MjBEMTA5OThGMDA2ODBEMzIgLyogQ2xhc3NOb2RlTGlzdC5jcHAgKi8sCi0J
CQkJQkM5MDRCNzMwRDEwOTk4RjAwNjgwRDMyIC8qIENsYXNzTm9kZUxpc3QuaCAqLywKKwkJCQk4
MzFENDhCRTFCN0Q5QTQ2MDA2REUzOUEgLyogQ2xhc3NOb2RlTGlzdC5jcHAgKi8sCisJCQkJODMx
RDQ4QkYxQjdEOUE0NjAwNkRFMzlBIC8qIENsYXNzTm9kZUxpc3QuaCAqLywKIAkJCQlCQ0MwNjU3
NzBGM0NFMUI3MDBDRDJEODcgLyogQ2xpZW50UmVjdC5jcHAgKi8sCiAJCQkJQkNDMDY1NzgwRjND
RTFCNzAwQ0QyRDg3IC8qIENsaWVudFJlY3QuaCAqLywKIAkJCQlCQ0MwNjU3OTBGM0NFMUI3MDBD
RDJEODcgLyogQ2xpZW50UmVjdC5pZGwgKi8sCkBAIC0yNDE4Miw3ICsyNDE5NCw2IEBACiAJCQkJ
MTREODIzNTIwQUY5MkE3OTAwMDRGMDU3IC8qIENocm9tZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MTREODI0MDgwQUY5M0FFQjAwMDRGMDU3IC8qIENocm9tZUNsaWVudC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNEFDQkMwQkYxMjcxM0NCRDAwOTRGOUIyIC8qIENsYXNzTGlzdC5oIGluIEhlYWRlcnMg
Ki8sCi0JCQkJQkM5MDRCNzcwRDEwOTk4RjAwNjgwRDMyIC8qIENsYXNzTm9kZUxpc3QuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUJDQzA2NTdFMEYzQ0UxQjcwMENEMkQ4NyAvKiBDbGllbnRSZWN0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCQ0MwNjU4MTBGM0NFMUI3MDBDRDJEODcgLyogQ2xpZW50UmVj
dExpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1MDMxQjQwMEE0NEVGQzcwMEY5OTJFMCAvKiBD
bGlwYm9hcmRFdmVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNDQ1NCw2ICsyNDQ2NSw3IEBACiAJ
CQkJODM3MkRCMzExQTY3ODBBODAwQzY5N0M1IC8qIERpYWdub3N0aWNMb2dnaW5nUmVzdWx0VHlw
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0VDQURGQzcxNTM3NzhGRjAwRTM3MDY4IC8qIERpY3Rh
dGlvbkFsdGVybmF0aXZlLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRUNBREZDOTE1Mzc3OEZGMDBF
MzcwNjggLyogRGljdGF0aW9uQ29tbWFuZC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDZFQkVBMDIx
QjdENEQ2NTAwQkU0OTQxIC8qIENvbGxlY3Rpb25UcmF2ZXJzYWwuaCBpbiBIZWFkZXJzICovLAog
CQkJCUQwQkQ0RjVEMTQwODg1MEYwMDY4MzlCNiAvKiBEaWN0YXRpb25Db21tYW5kSU9TLmggaW4g
SGVhZGVycyAqLywKIAkJCQkxNTE0NUI5MDFCM0ExQ0UwMDA2NjJCRjcgLyogTWVkaWFEZXZpY2VJ
bmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMTYwMjNGMDE1MzJDNDBDMDBENTBGRjQgLyogRGlj
dGlvbmFyeS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNDU1OSw2ICsyNDU3MSw3IEBACiAJCQkJODVF
NzExOTYwQUM1RDUzNTAwNTMyNzBGIC8qIERPTURvY3VtZW50VHlwZUludGVybmFsLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk4NTE4RENFOTBBOUNDODBEMDA5MUI3QTYgLyogRE9NRE9NSW1wbGVtZW50
YXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTg1RTcxMTk3MEFDNUQ1MzUwMDUzMjcwRiAvKiBE
T01ET01JbXBsZW1lbnRhdGlvbkludGVybmFsLmggaW4gSGVhZGVycyAqLywKKwkJCQk4MzFENDhD
MTFCN0Q5QTUyMDA2REUzOUEgLyogQ2xhc3NOb2RlTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NTJDQ0E5RTgxNUUzRjY0QzAwNTNDNzdGIC8qIERPTURPTU5hbWVkRmxvd0NvbGxlY3Rpb24uaCBp
biBIZWFkZXJzICovLAogCQkJCTUyQ0NBOUVBMTVFM0Y2NEMwMDUzQzc3RiAvKiBET01ET01OYW1l
ZEZsb3dDb2xsZWN0aW9uSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTJEOUEyNDc0MTVC
OUMyRTMwMEQzNDUyNyAvKiBET01ET01TZWN1cml0eVBvbGljeS5oIGluIEhlYWRlcnMgKi8sCkBA
IC0yNTY0Miw2ICsyNTY1NSw3IEBACiAJCQkJRkRBMTVFQjIxMkIwM0VFMTAwM0E1ODNBIC8qIEpT
UGFubmVyTm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOEE5QTU4NzUxMUU4NEM4MTAwOEFDRkQx
IC8qIEpTUGVyZm9ybWFuY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCThBOUE1ODcxMTFFODRDMzYw
MDhBQ0ZEMSAvKiBKU1BlcmZvcm1hbmNlTmF2aWdhdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
ODMwMDMwRjYxQjdEMzNCNTAwRUQzQUFDIC8qIEdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbi5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJOEE5QTU4ODgxMUU4NEYzNzAwOEFDRkQxIC8qIEpTUGVyZm9y
bWFuY2VUaW1pbmcuaCBpbiBIZWFkZXJzICovLAogCQkJCUZERUE2MjQ3MTUyMTAyRkMwMDQ3OURG
MCAvKiBKU1BlcmlvZGljV2F2ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNCNzBENkMwOUVCMEM3
QzAwOUQ4NDY4IC8qIEpTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5oIGluIEhlYWRlcnMgKi8sCkBA
IC0yNjk4Miw2ICsyNjk5Niw3IEBACiAJCQkJQjIyMjdBNTEwRDAwQkYyMjAwNzFCNzgyIC8qIFNW
R051bWJlckxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3QTU0MEQwMEJGMjIwMDcxQjc4
MiAvKiBTVkdQYWludC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjdBNTcwRDAwQkYyMjAwNzFC
NzgyIC8qIFNWR1BhcnNlclV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJODMwMDMwRjgx
QjdEM0I3ODAwRUQzQUFDIC8qIENhY2hlZEhUTUxDb2xsZWN0aW9uLmggaW4gSGVhZGVycyAqLywK
IAkJCQkyRDNBMEUzNjEzQTdENzYxMDBFODVBRjAgLyogU1ZHUGFyc2luZ0Vycm9yLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk4NEM2Nzg0RDEyMTQ4MTQ3MDBBOTI5MDIgLyogU1ZHUGF0aEJsZW5kZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCTg0NzZDOUVCMTFERjZBMjkwMDU1NUIwMiAvKiBTVkdQYXRo
QnVpbGRlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNzk3Nyw3ICsyNzk5Miw2IEBACiAJCQkJMTRE
ODIzOEIwQUY5MkRGNjAwMDRGMDU3IC8qIENocm9tZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlB
QkFGMjIwODBDMDNCMUM3MDBCMEJDRjAgLyogQ2hyb21lTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNEFDQkMwQkUxMjcxM0NCRDAwOTRGOUIyIC8qIENsYXNzTGlzdC5jcHAgaW4gU291cmNlcyAq
LywKLQkJCQlCQzkwNEI3NjBEMTA5OThGMDA2ODBEMzIgLyogQ2xhc3NOb2RlTGlzdC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlCQ0MwNjU3RDBGM0NFMUI3MDBDRDJEODcgLyogQ2xpZW50UmVjdC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0MwNjU4MDBGM0NFMUI3MDBDRDJEODcgLyogQ2xpZW50
UmVjdExpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODUwMzFCM0YwQTQ0RUZDNzAwRjk5MkUw
IC8qIENsaXBib2FyZEV2ZW50LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjg5ODQsNiArMjg5OTgs
NyBAQAogCQkJCUE5QzZFNjRDMEQ3NDY1RTcwMDY0NDJFOSAvKiBKU0RPTVBsdWdpbkFycmF5Q3Vz
dG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE5QzZFNjREMEQ3NDY1RTcwMDY0NDJFOSAvKiBK
U0RPTVBsdWdpbkN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMTcyQUY4RjE4MTFCQzM3
MDBGQkFEQjkgLyogSlNET01Qcm9taXNlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTgzMUQ0OEMw
MUI3RDlBNTIwMDZERTM5QSAvKiBDbGFzc05vZGVMaXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUJDNUE4NkI1MEMzMzY3RTgwMEVFQTY0OSAvKiBKU0RPTVNlbGVjdGlvbi5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk0QUNCQzBDQTEyNzEzRDBBMDA5NEY5QjIgLyogSlNET01TZXR0YWJsZVRva2Vu
TGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDNTEzN0NGMjExQTU4Mzc4MDA0QURCOTkgLyog
SlNET01TdHJpbmdMaXN0LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjkyNzYsNiArMjkyOTEsNyBA
QAogCQkJCTA3OTY5REJEMTdEMTQxNTEwMDdGRjg0MiAvKiBKU1JUQ1Nlc3Npb25EZXNjcmlwdGlv
bkNhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA3RDA3QjE0MTgzNDE1ODgwMEFCREQz
QyAvKiBKU1JUQ1Nlc3Npb25EZXNjcmlwdGlvbkN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkwNzk2OURCRjE3RDE0MTUxMDA3RkY4NDIgLyogSlNSVENTdGF0c0NhbGxiYWNrLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCTgzMDAzMEY1MUI3RDMzQjUwMEVEM0FBQyAvKiBHZW5lcmljQ2FjaGVk
SFRNTENvbGxlY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDc5NjlEQzExN0QxNDE1MTAw
N0ZGODQyIC8qIEpTUlRDU3RhdHNSZXBvcnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDc5NjlE
QzMxN0QxNDE1MTAwN0ZGODQyIC8qIEpTUlRDU3RhdHNSZXNwb25zZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkwN0RDNUZENDE3RDNFRUU5MDA5OUY4OTAgLyogSlNSVENTdGF0c1Jlc3BvbnNlQ3Vz
dG9tLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0Nv
bnRhaW5lck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCmlu
ZGV4IGJlM2EzYzE4N2E4NWMxYzdlOWY4NjRmZDNjZDdiMWE3ZGUyNmRhNjEuLmJlOTY0YmNmYzRh
YmQ5ZTY2OGYzNGYwZDRiMjAzNTExNzA2ZDdlNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Db250YWluZXJOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVy
Tm9kZS5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJFZGl0b3IuaCIKICNpbmNsdWRl
ICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKKyNpbmNsdWRlICJHZW5lcmlj
Q2FjaGVkSFRNTENvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJIVE1MRm9ybUNvbnRyb2xzQ29sbGVj
dGlvbi5oIgogI2luY2x1ZGUgIkhUTUxPcHRpb25zQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkhU
TUxUYWJsZVJvd3NDb2xsZWN0aW9uLmgiCkBAIC05MDIsNyArOTAzLDcgQEAgUmVmUHRyPFJhZGlv
Tm9kZUxpc3Q+IENvbnRhaW5lck5vZGU6OnJhZGlvTm9kZUxpc3QoY29uc3QgQXRvbWljU3RyaW5n
JiBuYW1lKQogCiBSZWY8SFRNTENvbGxlY3Rpb24+IENvbnRhaW5lck5vZGU6OmNoaWxkcmVuKCkK
IHsKLSAgICByZXR1cm4gZW5zdXJlQ2FjaGVkSFRNTENvbGxlY3Rpb24oTm9kZUNoaWxkcmVuKTsK
KyAgICByZXR1cm4gZW5zdXJlUmFyZURhdGEoKS5lbnN1cmVOb2RlTGlzdHMoKS5hZGRDYWNoZWRD
b2xsZWN0aW9uPEdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbjxDb2xsZWN0aW9uVHlwZVRyYWl0
czxOb2RlQ2hpbGRyZW4+Ojp0cmF2ZXJzYWxUeXBlPj4oKnRoaXMsIE5vZGVDaGlsZHJlbik7CiB9
CiAKIEVsZW1lbnQqIENvbnRhaW5lck5vZGU6OmZpcnN0RWxlbWVudENoaWxkKCkgY29uc3QKQEAg
LTkzOSwyMiArOTQwLDYgQEAgdm9pZCBDb250YWluZXJOb2RlOjpwcmVwZW5kKFZlY3RvcjxOb2Rl
T3JTdHJpbmc+JiYgbm9kZU9yU3RyaW5nVmVjdG9yLCBFeGNlcHRpb24KICAgICBpbnNlcnRCZWZv
cmUobm9kZS5yZWxlYXNlKCksIGZpcnN0Q2hpbGQoKSwgZWMpOwogfQogCi1SZWY8SFRNTENvbGxl
Y3Rpb24+IENvbnRhaW5lck5vZGU6OmVuc3VyZUNhY2hlZEhUTUxDb2xsZWN0aW9uKENvbGxlY3Rp
b25UeXBlIHR5cGUpCi17Ci0gICAgaWYgKEhUTUxDb2xsZWN0aW9uKiBjb2xsZWN0aW9uID0gY2Fj
aGVkSFRNTENvbGxlY3Rpb24odHlwZSkpCi0gICAgICAgIHJldHVybiAqY29sbGVjdGlvbjsKLQot
ICAgIGlmICh0eXBlID09IFRhYmxlUm93cykKLSAgICAgICAgcmV0dXJuIGVuc3VyZVJhcmVEYXRh
KCkuZW5zdXJlTm9kZUxpc3RzKCkuYWRkQ2FjaGVkQ29sbGVjdGlvbjxIVE1MVGFibGVSb3dzQ29s
bGVjdGlvbj4oZG93bmNhc3Q8SFRNTFRhYmxlRWxlbWVudD4oKnRoaXMpLCB0eXBlKTsKLSAgICBl
bHNlIGlmICh0eXBlID09IFNlbGVjdE9wdGlvbnMpCi0gICAgICAgIHJldHVybiBlbnN1cmVSYXJl
RGF0YSgpLmVuc3VyZU5vZGVMaXN0cygpLmFkZENhY2hlZENvbGxlY3Rpb248SFRNTE9wdGlvbnND
b2xsZWN0aW9uPihkb3duY2FzdDxIVE1MU2VsZWN0RWxlbWVudD4oKnRoaXMpLCB0eXBlKTsKLSAg
ICBlbHNlIGlmICh0eXBlID09IEZvcm1Db250cm9scykgewotICAgICAgICBBU1NFUlQoaGFzVGFn
TmFtZShIVE1MTmFtZXM6OmZvcm1UYWcpIHx8IGhhc1RhZ05hbWUoSFRNTE5hbWVzOjpmaWVsZHNl
dFRhZykpOwotICAgICAgICByZXR1cm4gZW5zdXJlUmFyZURhdGEoKS5lbnN1cmVOb2RlTGlzdHMo
KS5hZGRDYWNoZWRDb2xsZWN0aW9uPEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uPigqdGhpcywg
dHlwZSk7Ci0gICAgfQotICAgIHJldHVybiBlbnN1cmVSYXJlRGF0YSgpLmVuc3VyZU5vZGVMaXN0
cygpLmFkZENhY2hlZENvbGxlY3Rpb248SFRNTENvbGxlY3Rpb24+KCp0aGlzLCB0eXBlKTsKLX0K
LQogSFRNTENvbGxlY3Rpb24qIENvbnRhaW5lck5vZGU6OmNhY2hlZEhUTUxDb2xsZWN0aW9uKENv
bGxlY3Rpb25UeXBlIHR5cGUpCiB7CiAgICAgcmV0dXJuIGhhc1JhcmVEYXRhKCkgJiYgcmFyZURh
dGEoKS0+bm9kZUxpc3RzKCkgPyByYXJlRGF0YSgpLT5ub2RlTGlzdHMoKS0+Y2FjaGVkQ29sbGVj
dGlvbjxIVE1MQ29sbGVjdGlvbj4odHlwZSkgOiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWlu
ZXJOb2RlLmgKaW5kZXggZGEwNjIxZDdmMDVjNmVhYjgxZjBjNTdhMWRmZjU2MGJmZTY4OTlkZS4u
MDViM2ZjYWVkODQ4ZGRkYjY2NTE3MTg0NzVjYjc2NGVmOTUwMTFiNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
Q29udGFpbmVyTm9kZS5oCkBAIC0xNjksNyArMTY5LDYgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQg
c2V0Rmlyc3RDaGlsZChOb2RlKiBjaGlsZCkgeyBtX2ZpcnN0Q2hpbGQgPSBjaGlsZDsgfQogICAg
IHZvaWQgc2V0TGFzdENoaWxkKE5vZGUqIGNoaWxkKSB7IG1fbGFzdENoaWxkID0gY2hpbGQ7IH0K
IAotICAgIFJlZjxIVE1MQ29sbGVjdGlvbj4gZW5zdXJlQ2FjaGVkSFRNTENvbGxlY3Rpb24oQ29s
bGVjdGlvblR5cGUpOwogICAgIEhUTUxDb2xsZWN0aW9uKiBjYWNoZWRIVE1MQ29sbGVjdGlvbihD
b2xsZWN0aW9uVHlwZSk7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCA5
ZGVjNmM4MDJmMWQ4NTYxMzBhZmM0NWQxM2YyNDRhZmQzZjEzOWNlLi5kMTI4YTIxODI3ZDNjY2Uy
OGJkZmRhOTA3YzM5NzhmMjFhMDkzODc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTYz
LDEyICs2MywxMiBAQAogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWVM
b2FkZXJDbGllbnQuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKKyNpbmNsdWRlICJHZW5lcmlj
Q2FjaGVkSFRNTENvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJIVE1MQWxsQ29sbGVjdGlvbi5oIgog
I2luY2x1ZGUgIkhUTUxBbmNob3JFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEJhc2VFbGVtZW50
LmgiCiAjaW5jbHVkZSAiSFRNTEJvZHlFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTENhbnZhc0Vs
ZW1lbnQuaCIKLSNpbmNsdWRlICJIVE1MQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxEb2N1
bWVudC5oIgogI2luY2x1ZGUgIkhUTUxFbGVtZW50RmFjdG9yeS5oIgogI2luY2x1ZGUgIkhUTUxG
b3JtQ29udHJvbEVsZW1lbnQuaCIKQEAgLTQ3NzIsNTAgKzQ3NzIsNTEgQEAgYm9vbCBEb2N1bWVu
dDo6aGFzU1ZHUm9vdE5vZGUoKSBjb25zdAogICAgIHJldHVybiBkb2N1bWVudEVsZW1lbnQoKSAm
JiBkb2N1bWVudEVsZW1lbnQoKS0+aGFzVGFnTmFtZShTVkdOYW1lczo6c3ZnVGFnKTsKIH0KIAot
UmVmPEhUTUxDb2xsZWN0aW9uPiBEb2N1bWVudDo6ZW5zdXJlQ2FjaGVkQ29sbGVjdGlvbihDb2xs
ZWN0aW9uVHlwZSB0eXBlKQordGVtcGxhdGUgPENvbGxlY3Rpb25UeXBlIGNvbGxlY3Rpb25UeXBl
PgorUmVmPEhUTUxDb2xsZWN0aW9uPiBEb2N1bWVudDo6ZW5zdXJlQ2FjaGVkQ29sbGVjdGlvbigp
CiB7Ci0gICAgcmV0dXJuIGVuc3VyZVJhcmVEYXRhKCkuZW5zdXJlTm9kZUxpc3RzKCkuYWRkQ2Fj
aGVkQ29sbGVjdGlvbjxIVE1MQ29sbGVjdGlvbj4oKnRoaXMsIHR5cGUpOworICAgIHJldHVybiBl
bnN1cmVSYXJlRGF0YSgpLmVuc3VyZU5vZGVMaXN0cygpLmFkZENhY2hlZENvbGxlY3Rpb248R2Vu
ZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uPENvbGxlY3Rpb25UeXBlVHJhaXRzPGNvbGxlY3Rpb25U
eXBlPjo6dHJhdmVyc2FsVHlwZT4+KCp0aGlzLCBjb2xsZWN0aW9uVHlwZSk7CiB9CiAKIFJlZjxI
VE1MQ29sbGVjdGlvbj4gRG9jdW1lbnQ6OmltYWdlcygpCiB7Ci0gICAgcmV0dXJuIGVuc3VyZUNh
Y2hlZENvbGxlY3Rpb24oRG9jSW1hZ2VzKTsKKyAgICByZXR1cm4gZW5zdXJlQ2FjaGVkQ29sbGVj
dGlvbjxEb2NJbWFnZXM+KCk7CiB9CiAKIFJlZjxIVE1MQ29sbGVjdGlvbj4gRG9jdW1lbnQ6OmFw
cGxldHMoKQogewotICAgIHJldHVybiBlbnN1cmVDYWNoZWRDb2xsZWN0aW9uKERvY0FwcGxldHMp
OworICAgIHJldHVybiBlbnN1cmVDYWNoZWRDb2xsZWN0aW9uPERvY0FwcGxldHM+KCk7CiB9CiAK
IFJlZjxIVE1MQ29sbGVjdGlvbj4gRG9jdW1lbnQ6OmVtYmVkcygpCiB7Ci0gICAgcmV0dXJuIGVu
c3VyZUNhY2hlZENvbGxlY3Rpb24oRG9jRW1iZWRzKTsKKyAgICByZXR1cm4gZW5zdXJlQ2FjaGVk
Q29sbGVjdGlvbjxEb2NFbWJlZHM+KCk7CiB9CiAKIFJlZjxIVE1MQ29sbGVjdGlvbj4gRG9jdW1l
bnQ6OnBsdWdpbnMoKQogewogICAgIC8vIFRoaXMgaXMgYW4gYWxpYXMgZm9yIGVtYmVkcygpIHJl
cXVpcmVkIGZvciB0aGUgSlMgRE9NIGJpbmRpbmdzLgotICAgIHJldHVybiBlbnN1cmVDYWNoZWRD
b2xsZWN0aW9uKERvY0VtYmVkcyk7CisgICAgcmV0dXJuIGVuc3VyZUNhY2hlZENvbGxlY3Rpb248
RG9jRW1iZWRzPigpOwogfQogCiBSZWY8SFRNTENvbGxlY3Rpb24+IERvY3VtZW50OjpzY3JpcHRz
KCkKIHsKLSAgICByZXR1cm4gZW5zdXJlQ2FjaGVkQ29sbGVjdGlvbihEb2NTY3JpcHRzKTsKKyAg
ICByZXR1cm4gZW5zdXJlQ2FjaGVkQ29sbGVjdGlvbjxEb2NTY3JpcHRzPigpOwogfQogCiBSZWY8
SFRNTENvbGxlY3Rpb24+IERvY3VtZW50OjpsaW5rcygpCiB7Ci0gICAgcmV0dXJuIGVuc3VyZUNh
Y2hlZENvbGxlY3Rpb24oRG9jTGlua3MpOworICAgIHJldHVybiBlbnN1cmVDYWNoZWRDb2xsZWN0
aW9uPERvY0xpbmtzPigpOwogfQogCiBSZWY8SFRNTENvbGxlY3Rpb24+IERvY3VtZW50Ojpmb3Jt
cygpCiB7Ci0gICAgcmV0dXJuIGVuc3VyZUNhY2hlZENvbGxlY3Rpb24oRG9jRm9ybXMpOworICAg
IHJldHVybiBlbnN1cmVDYWNoZWRDb2xsZWN0aW9uPERvY0Zvcm1zPigpOwogfQogCiBSZWY8SFRN
TENvbGxlY3Rpb24+IERvY3VtZW50OjphbmNob3JzKCkKIHsKLSAgICByZXR1cm4gZW5zdXJlQ2Fj
aGVkQ29sbGVjdGlvbihEb2NBbmNob3JzKTsKKyAgICByZXR1cm4gZW5zdXJlQ2FjaGVkQ29sbGVj
dGlvbjxEb2NBbmNob3JzPigpOwogfQogCiBSZWY8SFRNTENvbGxlY3Rpb24+IERvY3VtZW50Ojph
bGwoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCA4MGZlN2E0OGVlZjIxYjc0MTA1NDI0MjI4YTZm
NzMyNmY2Y2Q0YTI3Li5lNTNiZjNlMWM2YzFlZjIwOWIzMjkzMzZmMzcyZTFmODEwY2U5Zjk3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuaApAQCAtMTEzLDcgKzExMyw2IEBAIGNsYXNzIEhUTUxJRnJhbWVF
bGVtZW50OwogY2xhc3MgSFRNTEltYWdlRWxlbWVudDsKIGNsYXNzIEhUTUxNYXBFbGVtZW50Owog
Y2xhc3MgSFRNTE1lZGlhRWxlbWVudDsKLWNsYXNzIEhUTUxOYW1lQ29sbGVjdGlvbjsKIGNsYXNz
IEhUTUxTY3JpcHRFbGVtZW50OwogY2xhc3MgSGl0VGVzdFJlcXVlc3Q7CiBjbGFzcyBIaXRUZXN0
UmVzdWx0OwpAQCAtMTM0NSw3ICsxMzQ0LDggQEAgcHJpdmF0ZToKIAogICAgIE5vZGUqIG5vZGVG
cm9tUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmIGNsaWVudFBvaW50LCBMYXlvdXRQb2ludCogbG9j
YWxQb2ludCA9IG51bGxwdHIpOwogCi0gICAgUmVmPEhUTUxDb2xsZWN0aW9uPiBlbnN1cmVDYWNo
ZWRDb2xsZWN0aW9uKENvbGxlY3Rpb25UeXBlKTsKKyAgICB0ZW1wbGF0ZSA8Q29sbGVjdGlvblR5
cGUgY29sbGVjdGlvblR5cGU+CisgICAgUmVmPEhUTUxDb2xsZWN0aW9uPiBlbnN1cmVDYWNoZWRD
b2xsZWN0aW9uKCk7CiAKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCiAgICAgdm9pZCBkaXNw
YXRjaEZ1bGxTY3JlZW5DaGFuZ2VPckVycm9yRXZlbnQoRGVxdWU8UmVmUHRyPE5vZGU+PiYsIGNv
bnN0IEF0b21pY1N0cmluZyYgZXZlbnROYW1lLCBib29sIHNob3VsZE5vdGlmeU1lZGlhRWxlbWVu
dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudENoaWxkSXRlcmF0b3Iu
aCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50Q2hpbGRJdGVyYXRvci5oCmluZGV4IDk0Y2Qz
MTMyMjQzNGJkYTA1YzlmNTZlMTdiMGUwNjRjMjI1ZTUxY2YuLjFhOTQ2YmI4ZmIxOTNjNjA0NTIw
OWZmYmQ1MmNkMzVhODljZmVjOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50Q2hpbGRJdGVyYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50Q2hpbGRJ
dGVyYXRvci5oCkBAIC00MSw2ICs0MSw3IEBAIHB1YmxpYzoKIAogICAgIEVsZW1lbnRDaGlsZEl0
ZXJhdG9yKGNvbnN0IENvbnRhaW5lck5vZGUmIHBhcmVudCk7CiAgICAgRWxlbWVudENoaWxkSXRl
cmF0b3IoY29uc3QgQ29udGFpbmVyTm9kZSYgcGFyZW50LCBFbGVtZW50VHlwZSogY3VycmVudCk7
CisgICAgRWxlbWVudENoaWxkSXRlcmF0b3ImIG9wZXJhdG9yLS0oKTsKICAgICBFbGVtZW50Q2hp
bGRJdGVyYXRvciYgb3BlcmF0b3IrKygpOwogfTsKIApAQCAtNTUsNiArNTYsNyBAQCBwdWJsaWM6
CiAKICAgICBFbGVtZW50Q2hpbGRDb25zdEl0ZXJhdG9yKGNvbnN0IENvbnRhaW5lck5vZGUmIHBh
cmVudCk7CiAgICAgRWxlbWVudENoaWxkQ29uc3RJdGVyYXRvcihjb25zdCBDb250YWluZXJOb2Rl
JiBwYXJlbnQsIGNvbnN0IEVsZW1lbnRUeXBlKiBjdXJyZW50KTsKKyAgICBFbGVtZW50Q2hpbGRD
b25zdEl0ZXJhdG9yJiBvcGVyYXRvci0tKCk7CiAgICAgRWxlbWVudENoaWxkQ29uc3RJdGVyYXRv
ciYgb3BlcmF0b3IrKygpOwogfTsKIApAQCAtMTA4LDYgKzExMCwxMiBAQCBpbmxpbmUgRWxlbWVu
dENoaWxkSXRlcmF0b3I8RWxlbWVudFR5cGU+OjpFbGVtZW50Q2hpbGRJdGVyYXRvcihjb25zdCBD
b250YWluZXJObwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+CitpbmxpbmUg
RWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVudFR5cGU+JiBFbGVtZW50Q2hpbGRJdGVyYXRvcjxF
bGVtZW50VHlwZT46Om9wZXJhdG9yLS0oKQoreworICAgIHJldHVybiBzdGF0aWNfY2FzdDxFbGVt
ZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50VHlwZT4mPihFbGVtZW50SXRlcmF0b3I8RWxlbWVudFR5
cGU+Ojp0cmF2ZXJzZVByZXZpb3VzU2libGluZygpKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1l
IEVsZW1lbnRUeXBlPgogaW5saW5lIEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiYg
RWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVudFR5cGU+OjpvcGVyYXRvcisrKCkKIHsKICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8RWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVudFR5cGU+Jj4oRWxl
bWVudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6dHJhdmVyc2VOZXh0U2libGluZygpKTsKQEAgLTEy
OCw2ICsxMzYsMTMgQEAgaW5saW5lIEVsZW1lbnRDaGlsZENvbnN0SXRlcmF0b3I8RWxlbWVudFR5
cGU+OjpFbGVtZW50Q2hpbGRDb25zdEl0ZXJhdG9yKGNvbnN0IEMKIH0KIAogdGVtcGxhdGUgPHR5
cGVuYW1lIEVsZW1lbnRUeXBlPgoraW5saW5lIEVsZW1lbnRDaGlsZENvbnN0SXRlcmF0b3I8RWxl
bWVudFR5cGU+JiBFbGVtZW50Q2hpbGRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6b3BlcmF0
b3ItLSgpCit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEVsZW1lbnRDaGlsZENvbnN0SXRlcmF0
b3I8RWxlbWVudFR5cGU+Jj4oRWxlbWVudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+Ojp0cmF2
ZXJzZVByZXZpb3VzU2libGluZygpKTsKK30KKworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVu
dFR5cGU+CiBpbmxpbmUgRWxlbWVudENoaWxkQ29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT4mIEVs
ZW1lbnRDaGlsZENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+OjpvcGVyYXRvcisrKCkKIHsKICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8RWxlbWVudENoaWxkQ29uc3RJdGVyYXRvcjxFbGVtZW50VHlw
ZT4mPihFbGVtZW50Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT46OnRyYXZlcnNlTmV4dFNpYmxp
bmcoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudERlc2NlbmRhbnRJ
dGVyYXRvci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnREZXNjZW5kYW50SXRlcmF0b3Iu
aAppbmRleCA4NjZiMGI3ZGI2NzMyMWEwODVkMTllMzI4MmNkNmExNDgzMTEzOGEyLi42OGZiN2Nl
MDI5MmYyMmM0ZmVkN2EwZWQ1NTA5YjcxOTg1Mzc3ZmRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmgKQEAgLTQ3LDYgKzQ3LDggQEAgcHVibGlj
OgogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yJiBv
dGhlcikgY29uc3Q7CiAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEVsZW1lbnREZXNjZW5kYW50
SXRlcmF0b3ImIG90aGVyKSBjb25zdDsKIAorICAgIHZvaWQgZHJvcEFzc2VydGlvbnMoKTsKKwog
cHJpdmF0ZToKICAgICBFbGVtZW50KiBtX2N1cnJlbnQ7CiAgICAgVmVjdG9yPEVsZW1lbnQqLCAx
Nj4gbV9hbmNlc3RvclNpYmxpbmdTdGFjazsKQEAgLTY5LDYgKzcxLDggQEAgcHVibGljOgogICAg
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3ImIG90
aGVyKSBjb25zdDsKICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgRWxlbWVudERlc2NlbmRhbnRD
b25zdEl0ZXJhdG9yJiBvdGhlcikgY29uc3Q7CiAKKyAgICB2b2lkIGRyb3BBc3NlcnRpb25zKCk7
CisKIHByaXZhdGU6CiAgICAgY29uc3QgRWxlbWVudCogbV9jdXJyZW50OwogICAgIFZlY3RvcjxF
bGVtZW50KiwgMTYsIFVuc2FmZVZlY3Rvck92ZXJmbG93PiBtX2FuY2VzdG9yU2libGluZ1N0YWNr
OwpAQCAtMTE2LDYgKzEyMCwxMyBAQCBpbmxpbmUgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjo6
RWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcihFbGVtZW50KiBjdXJyZW50KQogICAgIG1fYW5jZXN0
b3JTaWJsaW5nU3RhY2sudW5jaGVja2VkQXBwZW5kKG51bGxwdHIpOwogfQogCitpbmxpbmUgdm9p
ZCBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yOjpkcm9wQXNzZXJ0aW9ucygpCit7CisjaWYgIUFT
U0VSVF9ESVNBQkxFRAorICAgIG1fYXNzZXJ0aW9ucy5jbGVhcigpOworI2VuZGlmCit9CisKIEFM
V0FZU19JTkxJTkUgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciYgRWxlbWVudERlc2NlbmRhbnRJ
dGVyYXRvcjo6b3BlcmF0b3IrKygpCiB7CiAgICAgQVNTRVJUKG1fY3VycmVudCk7CkBAIC0yMTUs
MTAgKzIyNiwyMCBAQCBpbmxpbmUgRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yOjpFbGVt
ZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3IoKQogCiBpbmxpbmUgRWxlbWVudERlc2NlbmRhbnRD
b25zdEl0ZXJhdG9yOjpFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3IoY29uc3QgRWxlbWVu
dCogY3VycmVudCkKICAgICA6IG1fY3VycmVudChjdXJyZW50KQorI2lmICFBU1NFUlRfRElTQUJM
RUQKKyAgICAsIG1fYXNzZXJ0aW9ucyhjdXJyZW50KQorI2VuZGlmCiB7CiAgICAgbV9hbmNlc3Rv
clNpYmxpbmdTdGFjay51bmNoZWNrZWRBcHBlbmQobnVsbHB0cik7CiB9CiAKK2lubGluZSB2b2lk
IEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvcjo6ZHJvcEFzc2VydGlvbnMoKQoreworI2lm
ICFBU1NFUlRfRElTQUJMRUQKKyAgICBtX2Fzc2VydGlvbnMuY2xlYXIoKTsKKyNlbmRpZgorfQor
CiBBTFdBWVNfSU5MSU5FIEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvciYgRWxlbWVudERl
c2NlbmRhbnRDb25zdEl0ZXJhdG9yOjpvcGVyYXRvcisrKCkKIHsKICAgICBBU1NFUlQobV9jdXJy
ZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50SXRlcmF0b3IuaCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50SXRlcmF0b3IuaAppbmRleCA4YmZkMzhiNTQxMmM1
YzE4MWJiNDI0ODYyYmUzY2EzZmVhYzFlY2RjLi44YzY1Mzk2MzlkOGQ1ZDg0YzUwOTQ5ZjZiNzY2
YmVhYWVhZmE3ODgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudEl0ZXJh
dG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRJdGVyYXRvci5oCkBAIC01Myw2
ICs1Myw4IEBAIHB1YmxpYzoKICAgICBFbGVtZW50SXRlcmF0b3ImIHRyYXZlcnNlTmV4dFNraXBw
aW5nQ2hpbGRyZW4oKTsKICAgICBFbGVtZW50SXRlcmF0b3ImIHRyYXZlcnNlQW5jZXN0b3IoKTsK
IAorICAgIHZvaWQgZHJvcEFzc2VydGlvbnMoKTsKKwogcHJpdmF0ZToKICAgICBjb25zdCBDb250
YWluZXJOb2RlKiBtX3Jvb3Q7CiAgICAgRWxlbWVudFR5cGUqIG1fY3VycmVudDsKQEAgLTgxLDYg
KzgzLDggQEAgcHVibGljOgogICAgIEVsZW1lbnRDb25zdEl0ZXJhdG9yJiB0cmF2ZXJzZU5leHRT
a2lwcGluZ0NoaWxkcmVuKCk7CiAgICAgRWxlbWVudENvbnN0SXRlcmF0b3ImIHRyYXZlcnNlQW5j
ZXN0b3IoKTsKIAorICAgIHZvaWQgZHJvcEFzc2VydGlvbnMoKTsKKwogcHJpdmF0ZToKICAgICBj
b25zdCBDb250YWluZXJOb2RlKiBtX3Jvb3Q7CiAgICAgY29uc3QgRWxlbWVudFR5cGUqIG1fY3Vy
cmVudDsKQEAgLTE4MCw2ICsxODQsMTQgQEAgaW5saW5lIEVsZW1lbnRJdGVyYXRvcjxFbGVtZW50
VHlwZT4mIEVsZW1lbnRJdGVyYXRvcjxFbGVtZW50VHlwZT46OnRyYXZlcnNlTmV4dFMKIH0KIAog
dGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgoraW5saW5lIHZvaWQgRWxlbWVudEl0ZXJh
dG9yPEVsZW1lbnRUeXBlPjo6ZHJvcEFzc2VydGlvbnMoKQoreworI2lmICFBU1NFUlRfRElTQUJM
RUQKKyAgICBtX2Fzc2VydGlvbnMuY2xlYXIoKTsKKyNlbmRpZgorfQorCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgRWxlbWVudFR5cGU+CiBpbmxpbmUgRWxlbWVudFR5cGUqIGZpbmRFbGVtZW50QW5jZXN0
b3JPZlR5cGUoY29uc3QgRWxlbWVudCYgY3VycmVudCkKIHsKICAgICBmb3IgKEVsZW1lbnQqIGFu
Y2VzdG9yID0gY3VycmVudC5wYXJlbnRFbGVtZW50KCk7IGFuY2VzdG9yOyBhbmNlc3RvciA9IGFu
Y2VzdG9yLT5wYXJlbnRFbGVtZW50KCkpIHsKQEAgLTM0NSw2ICszNTcsMTQgQEAgaW5saW5lIEVs
ZW1lbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiYgRWxlbWVudENvbnN0SXRlcmF0b3I8RWxl
bWVudFR5cGU+Ojp0cmEKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgoraW5s
aW5lIHZvaWQgRWxlbWVudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+Ojpkcm9wQXNzZXJ0aW9u
cygpCit7CisjaWYgIUFTU0VSVF9ESVNBQkxFRAorICAgIG1fYXNzZXJ0aW9ucy5jbGVhcigpOwor
I2VuZGlmCit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KIGlubGluZSBjb25z
dCBFbGVtZW50VHlwZSYgRWxlbWVudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+OjpvcGVyYXRv
ciooKSBjb25zdAogewogICAgIEFTU0VSVChtX2N1cnJlbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0VsZW1lbnRJdGVyYXRvckFzc2VydGlvbnMuaCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50SXRlcmF0b3JBc3NlcnRpb25zLmgKaW5kZXggMDMwMzU0ZGNjYzMyZTQxNjIy
Zjk4YTA3MGFhODI0MzVjYzg5NzEwMy4uZTEzOGY3NjhhYzMyMTUzNzY1YmFlZjJmZTA0YTk0YmY3
MmQyYmU0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRJdGVyYXRvckFz
c2VydGlvbnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudEl0ZXJhdG9yQXNzZXJ0
aW9ucy5oCkBAIC0zNSw2ICszNSw3IEBAIHB1YmxpYzoKICAgICBFbGVtZW50SXRlcmF0b3JBc3Nl
cnRpb25zKGNvbnN0IEVsZW1lbnQqIGZpcnN0ID0gbnVsbHB0cik7CiAgICAgYm9vbCBkb21UcmVl
SGFzTXV0YXRlZCgpIGNvbnN0OwogICAgIHZvaWQgZHJvcEV2ZW50RGlzcGF0Y2hBc3NlcnRpb24o
KTsKKyAgICB2b2lkIGNsZWFyKCk7CiAKIHByaXZhdGU6CiAgICAgY29uc3QgRG9jdW1lbnQqIG1f
ZG9jdW1lbnQ7CkBAIC02Miw2ICs2MywxNCBAQCBpbmxpbmUgdm9pZCBFbGVtZW50SXRlcmF0b3JB
c3NlcnRpb25zOjpkcm9wRXZlbnREaXNwYXRjaEFzc2VydGlvbigpCiAgICAgbV9ldmVudERpc3Bh
dGNoQXNzZXJ0aW9uID0gTnVsbG9wdDsKIH0KIAoraW5saW5lIHZvaWQgRWxlbWVudEl0ZXJhdG9y
QXNzZXJ0aW9uczo6Y2xlYXIoKQoreworICAgIG1fZG9jdW1lbnQgPSBudWxscHRyOworICAgIG1f
aW5pdGlhbERPTVRyZWVWZXJzaW9uID0gMDsKKyAgICBtX2V2ZW50RGlzcGF0Y2hBc3NlcnRpb24g
PSBOdWxsb3B0OworfQorCisKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vTGl2ZU5vZGVMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTGl2ZU5vZGVMaXN0LmgK
aW5kZXggMTk2ZTUwYmI4MmJlYmNjZjcyNjRiNDYzYTJlZWU2M2VhNmQxMGFiYi4uMDEwNDI2Njk3
MWM1YWMxNjg1ZWJkNmY0MjQ0NTQ0ODFkZDYyYWNiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0xpdmVOb2RlTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9MaXZlTm9kZUxp
c3QuaApAQCAtMjUsNiArMjUsNyBAQAogI2RlZmluZSBMaXZlTm9kZUxpc3RfaAogCiAjaW5jbHVk
ZSAiQ29sbGVjdGlvbkluZGV4Q2FjaGUuaCIKKyNpbmNsdWRlICJDb2xsZWN0aW9uVHJhdmVyc2Fs
LmgiCiAjaW5jbHVkZSAiQ29sbGVjdGlvblR5cGUuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgog
I2luY2x1ZGUgIkVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IuaCIKQEAgLTgwLDI1ICs4MSwyOCBA
QCBjbGFzcyBDYWNoZWRMaXZlTm9kZUxpc3QgOiBwdWJsaWMgTGl2ZU5vZGVMaXN0IHsKIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIH5DYWNoZWRMaXZlTm9kZUxpc3QoKTsKIAotICAgIHZpcnR1YWwgdW5z
aWduZWQgbGVuZ3RoKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7Ci0gICAgdmlydHVhbCBOb2RlKiBp
dGVtKHVuc2lnbmVkIG9mZnNldCkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7CisgICAgdW5zaWduZWQg
bGVuZ3RoKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWwgeyByZXR1cm4gbV9pbmRleENhY2hlLm5vZGVD
b3VudChub2RlTGlzdCgpKTsgfQorICAgIE5vZGUqIGl0ZW0odW5zaWduZWQgb2Zmc2V0KSBjb25z
dCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiBtX2luZGV4Q2FjaGUubm9kZUF0KG5vZGVMaXN0KCks
IG9mZnNldCk7IH0KIAogICAgIC8vIEZvciBDb2xsZWN0aW9uSW5kZXhDYWNoZQotICAgIEVsZW1l
bnREZXNjZW5kYW50SXRlcmF0b3IgY29sbGVjdGlvbkJlZ2luKCkgY29uc3Q7Ci0gICAgRWxlbWVu
dERlc2NlbmRhbnRJdGVyYXRvciBjb2xsZWN0aW9uTGFzdCgpIGNvbnN0OworICAgIEVsZW1lbnRE
ZXNjZW5kYW50SXRlcmF0b3IgY29sbGVjdGlvbkJlZ2luKCkgY29uc3QgeyByZXR1cm4gQ29sbGVj
dGlvblRyYXZlcnNhbDxDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6RGVzY2VuZGFudHM+OjpiZWdp
bihub2RlTGlzdCgpLCByb290Tm9kZSgpKTsgfQorICAgIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0
b3IgY29sbGVjdGlvbkxhc3QoKSBjb25zdCB7IHJldHVybiBDb2xsZWN0aW9uVHJhdmVyc2FsPENv
bGxlY3Rpb25UcmF2ZXJzYWxUeXBlOjpEZXNjZW5kYW50cz46Omxhc3Qobm9kZUxpc3QoKSwgcm9v
dE5vZGUoKSk7IH0KICAgICBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yIGNvbGxlY3Rpb25FbmQo
KSBjb25zdCB7IHJldHVybiBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yKCk7IH0KLSAgICB2b2lk
IGNvbGxlY3Rpb25UcmF2ZXJzZUZvcndhcmQoRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciYsIHVu
c2lnbmVkIGNvdW50LCB1bnNpZ25lZCYgdHJhdmVyc2VkQ291bnQpIGNvbnN0OwotICAgIHZvaWQg
Y29sbGVjdGlvblRyYXZlcnNlQmFja3dhcmQoRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciYsIHVu
c2lnbmVkIGNvdW50KSBjb25zdDsKKyAgICB2b2lkIGNvbGxlY3Rpb25UcmF2ZXJzZUZvcndhcmQo
RWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciYgY3VycmVudCwgdW5zaWduZWQgY291bnQsIHVuc2ln
bmVkJiB0cmF2ZXJzZWRDb3VudCkgY29uc3QgeyBDb2xsZWN0aW9uVHJhdmVyc2FsPENvbGxlY3Rp
b25UcmF2ZXJzYWxUeXBlOjpEZXNjZW5kYW50cz46OnRyYXZlcnNlRm9yd2FyZChub2RlTGlzdCgp
LCBjdXJyZW50LCBjb3VudCwgdHJhdmVyc2VkQ291bnQpOyB9CisgICAgdm9pZCBjb2xsZWN0aW9u
VHJhdmVyc2VCYWNrd2FyZChFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yJiBjdXJyZW50LCB1bnNp
Z25lZCBjb3VudCkgY29uc3QgeyBDb2xsZWN0aW9uVHJhdmVyc2FsPENvbGxlY3Rpb25UcmF2ZXJz
YWxUeXBlOjpEZXNjZW5kYW50cz46OnRyYXZlcnNlQmFja3dhcmQobm9kZUxpc3QoKSwgY3VycmVu
dCwgY291bnQpOyB9CiAgICAgYm9vbCBjb2xsZWN0aW9uQ2FuVHJhdmVyc2VCYWNrd2FyZCgpIGNv
bnN0IHsgcmV0dXJuIHRydWU7IH0KLSAgICB2b2lkIHdpbGxWYWxpZGF0ZUluZGV4Q2FjaGUoKSBj
b25zdDsKKyAgICB2b2lkIHdpbGxWYWxpZGF0ZUluZGV4Q2FjaGUoKSBjb25zdCB7IGRvY3VtZW50
KCkucmVnaXN0ZXJOb2RlTGlzdEZvckludmFsaWRhdGlvbihjb25zdF9jYXN0PENhY2hlZExpdmVO
b2RlTGlzdDxOb2RlTGlzdFR5cGU+Jj4oKnRoaXMpKTsgfQogCiAgICAgdmlydHVhbCB2b2lkIGlu
dmFsaWRhdGVDYWNoZShEb2N1bWVudCYpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOwotICAgIHZpcnR1
YWwgc2l6ZV90IG1lbW9yeUNvc3QoKSBjb25zdCBvdmVycmlkZSBmaW5hbDsKKyAgICB2aXJ0dWFs
IHNpemVfdCBtZW1vcnlDb3N0KCkgY29uc3Qgb3ZlcnJpZGUgZmluYWwgeyByZXR1cm4gbV9pbmRl
eENhY2hlLm1lbW9yeUNvc3QoKTsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgQ2FjaGVkTGl2ZU5vZGVM
aXN0KENvbnRhaW5lck5vZGUmIHJvb3ROb2RlLCBOb2RlTGlzdEludmFsaWRhdGlvblR5cGUpOwog
CiBwcml2YXRlOgorICAgIE5vZGVMaXN0VHlwZSYgbm9kZUxpc3QoKSB7IHJldHVybiBzdGF0aWNf
Y2FzdDxOb2RlTGlzdFR5cGUmPigqdGhpcyk7IH0KKyAgICBjb25zdCBOb2RlTGlzdFR5cGUmIG5v
ZGVMaXN0KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgTm9kZUxpc3RUeXBlJj4o
KnRoaXMpOyB9CisKICAgICBDb250YWluZXJOb2RlJiByb290Tm9kZSgpIGNvbnN0OwogCiAgICAg
bXV0YWJsZSBDb2xsZWN0aW9uSW5kZXhDYWNoZTxOb2RlTGlzdFR5cGUsIEVsZW1lbnREZXNjZW5k
YW50SXRlcmF0b3I+IG1faW5kZXhDYWNoZTsKQEAgLTEzMSwxMTUgKzEzNSwzMyBAQCBBTFdBWVNf
SU5MSU5FIGJvb2wgc2hvdWxkSW52YWxpZGF0ZVR5cGVPbkF0dHJpYnV0ZUNoYW5nZShOb2RlTGlz
dEludmFsaWRhdGlvblR5cAogdGVtcGxhdGUgPGNsYXNzIE5vZGVMaXN0VHlwZT4KIENhY2hlZExp
dmVOb2RlTGlzdDxOb2RlTGlzdFR5cGU+OjpDYWNoZWRMaXZlTm9kZUxpc3QoQ29udGFpbmVyTm9k
ZSYgb3duZXJOb2RlLCBOb2RlTGlzdEludmFsaWRhdGlvblR5cGUgaW52YWxpZGF0aW9uVHlwZSkK
ICAgICA6IExpdmVOb2RlTGlzdChvd25lck5vZGUsIGludmFsaWRhdGlvblR5cGUpCi0gICAgLCBt
X2luZGV4Q2FjaGUoc3RhdGljX2Nhc3Q8Tm9kZUxpc3RUeXBlJj4oKnRoaXMpKQorICAgICwgbV9p
bmRleENhY2hlKG5vZGVMaXN0KCkpCiB7CiB9CiAKIHRlbXBsYXRlIDxjbGFzcyBOb2RlTGlzdFR5
cGU+CiBDYWNoZWRMaXZlTm9kZUxpc3Q8Tm9kZUxpc3RUeXBlPjo6fkNhY2hlZExpdmVOb2RlTGlz
dCgpCiB7Ci0gICAgYXV0byYgbm9kZUxpc3QgPSBzdGF0aWNfY2FzdDxjb25zdCBOb2RlTGlzdFR5
cGUmPigqdGhpcyk7Ci0gICAgaWYgKG1faW5kZXhDYWNoZS5oYXNWYWxpZENhY2hlKG5vZGVMaXN0
KSkKKyAgICBpZiAobV9pbmRleENhY2hlLmhhc1ZhbGlkQ2FjaGUobm9kZUxpc3QoKSkpCiAgICAg
ICAgIGRvY3VtZW50KCkudW5yZWdpc3Rlck5vZGVMaXN0Rm9ySW52YWxpZGF0aW9uKCp0aGlzKTsK
IH0KIAogdGVtcGxhdGUgPGNsYXNzIE5vZGVMaXN0VHlwZT4KIGlubGluZSBDb250YWluZXJOb2Rl
JiBDYWNoZWRMaXZlTm9kZUxpc3Q8Tm9kZUxpc3RUeXBlPjo6cm9vdE5vZGUoKSBjb25zdAogewot
ICAgIGlmIChzdGF0aWNfY2FzdDxjb25zdCBOb2RlTGlzdFR5cGUmPigqdGhpcykuaXNSb290ZWRB
dERvY3VtZW50KCkgJiYgb3duZXJOb2RlKCkuaW5Eb2N1bWVudCgpKQorICAgIGlmIChub2RlTGlz
dCgpLmlzUm9vdGVkQXREb2N1bWVudCgpICYmIG93bmVyTm9kZSgpLmluRG9jdW1lbnQoKSkKICAg
ICAgICAgcmV0dXJuIG93bmVyTm9kZSgpLmRvY3VtZW50KCk7CiAKICAgICByZXR1cm4gb3duZXJO
b2RlKCk7CiB9CiAKIHRlbXBsYXRlIDxjbGFzcyBOb2RlTGlzdFR5cGU+Ci1FbGVtZW50RGVzY2Vu
ZGFudEl0ZXJhdG9yIENhY2hlZExpdmVOb2RlTGlzdDxOb2RlTGlzdFR5cGU+Ojpjb2xsZWN0aW9u
QmVnaW4oKSBjb25zdAotewotICAgIGF1dG8mIG5vZGVMaXN0ID0gc3RhdGljX2Nhc3Q8Y29uc3Qg
Tm9kZUxpc3RUeXBlJj4oKnRoaXMpOwotICAgIGF1dG8gZGVzY2VuZGFudHMgPSBlbGVtZW50RGVz
Y2VuZGFudHMocm9vdE5vZGUoKSk7Ci0gICAgYXV0byBlbmQgPSBkZXNjZW5kYW50cy5lbmQoKTsK
LSAgICBmb3IgKGF1dG8gaXQgPSBkZXNjZW5kYW50cy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQp
IHsKLSAgICAgICAgaWYgKG5vZGVMaXN0LmVsZW1lbnRNYXRjaGVzKCppdCkpCi0gICAgICAgICAg
ICByZXR1cm4gaXQ7Ci0gICAgfQotICAgIHJldHVybiBlbmQ7Ci19Ci0KLXRlbXBsYXRlIDxjbGFz
cyBOb2RlTGlzdFR5cGU+Ci1FbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yIENhY2hlZExpdmVOb2Rl
TGlzdDxOb2RlTGlzdFR5cGU+Ojpjb2xsZWN0aW9uTGFzdCgpIGNvbnN0Ci17Ci0gICAgYXV0byYg
bm9kZUxpc3QgPSBzdGF0aWNfY2FzdDxjb25zdCBOb2RlTGlzdFR5cGUmPigqdGhpcyk7Ci0gICAg
YXV0byBkZXNjZW5kYW50cyA9IGVsZW1lbnREZXNjZW5kYW50cyhyb290Tm9kZSgpKTsKLSAgICBh
dXRvIGVuZCA9IGRlc2NlbmRhbnRzLmVuZCgpOwotICAgIGZvciAoYXV0byBpdCA9IGRlc2NlbmRh
bnRzLmxhc3QoKTsgaXQgIT0gZW5kOyAtLWl0KSB7Ci0gICAgICAgIGlmIChub2RlTGlzdC5lbGVt
ZW50TWF0Y2hlcygqaXQpKQotICAgICAgICAgICAgcmV0dXJuIGl0OwotICAgIH0KLSAgICByZXR1
cm4gZW5kOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgTm9kZUxpc3RUeXBlPgotdm9pZCBDYWNoZWRM
aXZlTm9kZUxpc3Q8Tm9kZUxpc3RUeXBlPjo6Y29sbGVjdGlvblRyYXZlcnNlRm9yd2FyZChFbGVt
ZW50RGVzY2VuZGFudEl0ZXJhdG9yJiBjdXJyZW50LCB1bnNpZ25lZCBjb3VudCwgdW5zaWduZWQm
IHRyYXZlcnNlZENvdW50KSBjb25zdAotewotICAgIGF1dG8mIG5vZGVMaXN0ID0gc3RhdGljX2Nh
c3Q8Y29uc3QgTm9kZUxpc3RUeXBlJj4oKnRoaXMpOwotICAgIEFTU0VSVChub2RlTGlzdC5lbGVt
ZW50TWF0Y2hlcygqY3VycmVudCkpOwotICAgIGF1dG8gZW5kID0gY29sbGVjdGlvbkVuZCgpOwot
ICAgIGZvciAodHJhdmVyc2VkQ291bnQgPSAwOyB0cmF2ZXJzZWRDb3VudCA8IGNvdW50OyArK3Ry
YXZlcnNlZENvdW50KSB7Ci0gICAgICAgIGRvIHsKLSAgICAgICAgICAgICsrY3VycmVudDsKLSAg
ICAgICAgICAgIGlmIChjdXJyZW50ID09IGVuZCkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgIH0gd2hpbGUgKCFub2RlTGlzdC5lbGVtZW50TWF0Y2hlcygqY3VycmVudCkpOwotICAg
IH0KLX0KLQotdGVtcGxhdGUgPGNsYXNzIE5vZGVMaXN0VHlwZT4KLXZvaWQgQ2FjaGVkTGl2ZU5v
ZGVMaXN0PE5vZGVMaXN0VHlwZT46OmNvbGxlY3Rpb25UcmF2ZXJzZUJhY2t3YXJkKEVsZW1lbnRE
ZXNjZW5kYW50SXRlcmF0b3ImIGN1cnJlbnQsIHVuc2lnbmVkIGNvdW50KSBjb25zdAotewotICAg
IGF1dG8mIG5vZGVMaXN0ID0gc3RhdGljX2Nhc3Q8Y29uc3QgTm9kZUxpc3RUeXBlJj4oKnRoaXMp
OwotICAgIEFTU0VSVChub2RlTGlzdC5lbGVtZW50TWF0Y2hlcygqY3VycmVudCkpOwotICAgIGF1
dG8gZW5kID0gY29sbGVjdGlvbkVuZCgpOwotICAgIGZvciAoOyBjb3VudDsgLS1jb3VudCkgewot
ICAgICAgICBkbyB7Ci0gICAgICAgICAgICAtLWN1cnJlbnQ7Ci0gICAgICAgICAgICBpZiAoY3Vy
cmVudCA9PSBlbmQpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9IHdoaWxlICgh
bm9kZUxpc3QuZWxlbWVudE1hdGNoZXMoKmN1cnJlbnQpKTsKLSAgICB9Ci19Ci0KLXRlbXBsYXRl
IDxjbGFzcyBOb2RlTGlzdFR5cGU+Ci12b2lkIENhY2hlZExpdmVOb2RlTGlzdDxOb2RlTGlzdFR5
cGU+Ojp3aWxsVmFsaWRhdGVJbmRleENhY2hlKCkgY29uc3QKLXsKLSAgICBkb2N1bWVudCgpLnJl
Z2lzdGVyTm9kZUxpc3RGb3JJbnZhbGlkYXRpb24oY29uc3RfY2FzdDxOb2RlTGlzdFR5cGUmPihz
dGF0aWNfY2FzdDxjb25zdCBOb2RlTGlzdFR5cGUmPigqdGhpcykpKTsKLX0KLQotdGVtcGxhdGUg
PGNsYXNzIE5vZGVMaXN0VHlwZT4KIHZvaWQgQ2FjaGVkTGl2ZU5vZGVMaXN0PE5vZGVMaXN0VHlw
ZT46OmludmFsaWRhdGVDYWNoZShEb2N1bWVudCYgZG9jdW1lbnQpIGNvbnN0CiB7Ci0gICAgYXV0
byYgbm9kZUxpc3QgPSBzdGF0aWNfY2FzdDxjb25zdCBOb2RlTGlzdFR5cGUmPigqdGhpcyk7Ci0g
ICAgaWYgKCFtX2luZGV4Q2FjaGUuaGFzVmFsaWRDYWNoZShub2RlTGlzdCkpCisgICAgaWYgKCFt
X2luZGV4Q2FjaGUuaGFzVmFsaWRDYWNoZShub2RlTGlzdCgpKSkKICAgICAgICAgcmV0dXJuOwot
ICAgIGRvY3VtZW50LnVucmVnaXN0ZXJOb2RlTGlzdEZvckludmFsaWRhdGlvbihjb25zdF9jYXN0
PE5vZGVMaXN0VHlwZSY+KG5vZGVMaXN0KSk7Ci0gICAgbV9pbmRleENhY2hlLmludmFsaWRhdGUo
bm9kZUxpc3QpOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgTm9kZUxpc3RUeXBlPgotdW5zaWduZWQg
Q2FjaGVkTGl2ZU5vZGVMaXN0PE5vZGVMaXN0VHlwZT46Omxlbmd0aCgpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIG1faW5kZXhDYWNoZS5ub2RlQ291bnQoc3RhdGljX2Nhc3Q8Y29uc3QgTm9kZUxpc3RU
eXBlJj4oKnRoaXMpKTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIE5vZGVMaXN0VHlwZT4KLU5vZGUq
IENhY2hlZExpdmVOb2RlTGlzdDxOb2RlTGlzdFR5cGU+OjppdGVtKHVuc2lnbmVkIG9mZnNldCkg
Y29uc3QKLXsKLSAgICByZXR1cm4gbV9pbmRleENhY2hlLm5vZGVBdChzdGF0aWNfY2FzdDxjb25z
dCBOb2RlTGlzdFR5cGUmPigqdGhpcyksIG9mZnNldCk7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBO
b2RlTGlzdFR5cGU+Ci1zaXplX3QgQ2FjaGVkTGl2ZU5vZGVMaXN0PE5vZGVMaXN0VHlwZT46Om1l
bW9yeUNvc3QoKSBjb25zdAotewotICAgIHJldHVybiBtX2luZGV4Q2FjaGUubWVtb3J5Q29zdCgp
OworICAgIGRvY3VtZW50LnVucmVnaXN0ZXJOb2RlTGlzdEZvckludmFsaWRhdGlvbihjb25zdF9j
YXN0PE5vZGVMaXN0VHlwZSY+KG5vZGVMaXN0KCkpKTsKKyAgICBtX2luZGV4Q2FjaGUuaW52YWxp
ZGF0ZShub2RlTGlzdCgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9DYWNoZWRIVE1MQ29sbGVjdGlvbi5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9DYWNoZWRIVE1MQ29sbGVjdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgxNzYwMjBiMTEx
ZjRlNmM3Y2Y0ZDVlYjQ0NWMzM2RlYTA0N2NiNjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0NhY2hlZEhUTUxDb2xsZWN0aW9uLmgKQEAgLTAsMCArMSwxNTggQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIENhY2hlZEhUTUxDb2xsZWN0aW9uX2gKKyNkZWZpbmUgQ2FjaGVk
SFRNTENvbGxlY3Rpb25faAorCisjaW5jbHVkZSAiQ29sbGVjdGlvblRyYXZlcnNhbC5oIgorI2lu
Y2x1ZGUgIkhUTUxDb2xsZWN0aW9uLmgiCisjaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgSFRNTENvbGxlY3Rpb25DbGFz
cywgQ29sbGVjdGlvblRyYXZlcnNhbFR5cGUgdHJhdmVyc2FsVHlwZT4KK2NsYXNzIENhY2hlZEhU
TUxDb2xsZWN0aW9uIDogcHVibGljIEhUTUxDb2xsZWN0aW9uIHsKK3B1YmxpYzoKKyAgICBDYWNo
ZWRIVE1MQ29sbGVjdGlvbihDb250YWluZXJOb2RlJiBiYXNlLCBDb2xsZWN0aW9uVHlwZSk7CisK
KyAgICB2aXJ0dWFsIH5DYWNoZWRIVE1MQ29sbGVjdGlvbigpOworCisgICAgdmlydHVhbCB1bnNp
Z25lZCBsZW5ndGgoKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiBtX2luZGV4Q2FjaGUu
bm9kZUNvdW50KGNvbGxlY3Rpb24oKSk7IH0KKyAgICB2aXJ0dWFsIEVsZW1lbnQqIGl0ZW0odW5z
aWduZWQgb2Zmc2V0KSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiBtX2luZGV4Q2FjaGUu
bm9kZUF0KGNvbGxlY3Rpb24oKSwgb2Zmc2V0KTsgfQorICAgIHZpcnR1YWwgRWxlbWVudCogbmFt
ZWRJdGVtKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmly
dHVhbCBzaXplX3QgbWVtb3J5Q29zdCgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIG1f
aW5kZXhDYWNoZS5tZW1vcnlDb3N0KCkgKyBIVE1MQ29sbGVjdGlvbjo6bWVtb3J5Q29zdCgpOyB9
CisKKyAgICAvLyBGb3IgQ29sbGVjdGlvbkluZGV4Q2FjaGU7IGRvIG5vdCB1c2UgZWxzZXdoZXJl
LgorICAgIHVzaW5nIENvbGxlY3Rpb25UcmF2ZXJzYWxJdGVyYXRvciA9IHR5cGVuYW1lIENvbGxl
Y3Rpb25UcmF2ZXJzYWw8dHJhdmVyc2FsVHlwZT46Okl0ZXJhdG9yOworICAgIENvbGxlY3Rpb25U
cmF2ZXJzYWxJdGVyYXRvciBjb2xsZWN0aW9uQmVnaW4oKSBjb25zdCB7IHJldHVybiBDb2xsZWN0
aW9uVHJhdmVyc2FsPHRyYXZlcnNhbFR5cGU+OjpiZWdpbihjb2xsZWN0aW9uKCksIHJvb3ROb2Rl
KCkpOyB9CisgICAgQ29sbGVjdGlvblRyYXZlcnNhbEl0ZXJhdG9yIGNvbGxlY3Rpb25MYXN0KCkg
Y29uc3QgeyByZXR1cm4gQ29sbGVjdGlvblRyYXZlcnNhbDx0cmF2ZXJzYWxUeXBlPjo6bGFzdChj
b2xsZWN0aW9uKCksIHJvb3ROb2RlKCkpOyB9CisgICAgQ29sbGVjdGlvblRyYXZlcnNhbEl0ZXJh
dG9yIGNvbGxlY3Rpb25FbmQoKSBjb25zdCB7IHJldHVybiBDb2xsZWN0aW9uVHJhdmVyc2FsPHRy
YXZlcnNhbFR5cGU+OjplbmQocm9vdE5vZGUoKSk7IH0KKyAgICB2b2lkIGNvbGxlY3Rpb25UcmF2
ZXJzZUZvcndhcmQoQ29sbGVjdGlvblRyYXZlcnNhbEl0ZXJhdG9yJiBjdXJyZW50LCB1bnNpZ25l
ZCBjb3VudCwgdW5zaWduZWQmIHRyYXZlcnNlZENvdW50KSBjb25zdCB7IENvbGxlY3Rpb25UcmF2
ZXJzYWw8dHJhdmVyc2FsVHlwZT46OnRyYXZlcnNlRm9yd2FyZChjb2xsZWN0aW9uKCksIGN1cnJl
bnQsIGNvdW50LCB0cmF2ZXJzZWRDb3VudCk7IH0KKyAgICB2b2lkIGNvbGxlY3Rpb25UcmF2ZXJz
ZUJhY2t3YXJkKENvbGxlY3Rpb25UcmF2ZXJzYWxJdGVyYXRvciYgY3VycmVudCwgdW5zaWduZWQg
Y291bnQpIGNvbnN0IHsgQ29sbGVjdGlvblRyYXZlcnNhbDx0cmF2ZXJzYWxUeXBlPjo6dHJhdmVy
c2VCYWNrd2FyZChjb2xsZWN0aW9uKCksIGN1cnJlbnQsIGNvdW50KTsgfQorICAgIGJvb2wgY29s
bGVjdGlvbkNhblRyYXZlcnNlQmFja3dhcmQoKSBjb25zdCB7IHJldHVybiB0cmF2ZXJzYWxUeXBl
ICE9IENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlOjpDdXN0b21Gb3J3YXJkT25seTsgfQorICAgIHZv
aWQgd2lsbFZhbGlkYXRlSW5kZXhDYWNoZSgpIGNvbnN0IHsgZG9jdW1lbnQoKS5yZWdpc3RlckNv
bGxlY3Rpb24oY29uc3RfY2FzdDxDYWNoZWRIVE1MQ29sbGVjdGlvbjxIVE1MQ29sbGVjdGlvbkNs
YXNzLCB0cmF2ZXJzYWxUeXBlPiY+KCp0aGlzKSk7IH0KKworICAgIHZpcnR1YWwgdm9pZCBpbnZh
bGlkYXRlQ2FjaGUoRG9jdW1lbnQmKSBvdmVycmlkZTsKKworICAgIGJvb2wgZWxlbWVudE1hdGNo
ZXMoRWxlbWVudCYpIGNvbnN0OworCitwcml2YXRlOgorICAgIEhUTUxDb2xsZWN0aW9uQ2xhc3Mm
IGNvbGxlY3Rpb24oKSB7IHJldHVybiBzdGF0aWNfY2FzdDxIVE1MQ29sbGVjdGlvbkNsYXNzJj4o
KnRoaXMpOyB9CisgICAgY29uc3QgSFRNTENvbGxlY3Rpb25DbGFzcyYgY29sbGVjdGlvbigpIGNv
bnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEhUTUxDb2xsZWN0aW9uQ2xhc3MmPigqdGhp
cyk7IH0KKworICAgIG11dGFibGUgQ29sbGVjdGlvbkluZGV4Q2FjaGU8SFRNTENvbGxlY3Rpb25D
bGFzcywgQ29sbGVjdGlvblRyYXZlcnNhbEl0ZXJhdG9yPiBtX2luZGV4Q2FjaGU7Cit9OworCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgSFRNTENvbGxlY3Rpb25DbGFzcywgQ29sbGVjdGlvblRyYXZlcnNh
bFR5cGUgdHJhdmVyc2FsVHlwZT4KK0NhY2hlZEhUTUxDb2xsZWN0aW9uPEhUTUxDb2xsZWN0aW9u
Q2xhc3MsIHRyYXZlcnNhbFR5cGU+OjpDYWNoZWRIVE1MQ29sbGVjdGlvbihDb250YWluZXJOb2Rl
JiBiYXNlLCBDb2xsZWN0aW9uVHlwZSBjb2xsZWN0aW9uVHlwZSkKKyAgICA6IEhUTUxDb2xsZWN0
aW9uKGJhc2UsIGNvbGxlY3Rpb25UeXBlKQorICAgICwgbV9pbmRleENhY2hlKGNvbGxlY3Rpb24o
KSkKK3sgfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgSFRNTENvbGxlY3Rpb25DbGFzcywgQ29sbGVj
dGlvblRyYXZlcnNhbFR5cGUgdHJhdmVyc2FsVHlwZT4KK0NhY2hlZEhUTUxDb2xsZWN0aW9uPEhU
TUxDb2xsZWN0aW9uQ2xhc3MsIHRyYXZlcnNhbFR5cGU+Ojp+Q2FjaGVkSFRNTENvbGxlY3Rpb24o
KQoreworICAgIGlmIChtX2luZGV4Q2FjaGUuaGFzVmFsaWRDYWNoZShjb2xsZWN0aW9uKCkpKQor
ICAgICAgICBkb2N1bWVudCgpLnVucmVnaXN0ZXJDb2xsZWN0aW9uKCp0aGlzKTsKK30KKwordGVt
cGxhdGUgPHR5cGVuYW1lIEhUTUxDb2xsZWN0aW9uQ2xhc3MsIENvbGxlY3Rpb25UcmF2ZXJzYWxU
eXBlIHRyYXZlcnNhbFR5cGU+Cit2b2lkIENhY2hlZEhUTUxDb2xsZWN0aW9uPEhUTUxDb2xsZWN0
aW9uQ2xhc3MsIHRyYXZlcnNhbFR5cGU+OjppbnZhbGlkYXRlQ2FjaGUoRG9jdW1lbnQmIGRvY3Vt
ZW50KQoreworICAgIEhUTUxDb2xsZWN0aW9uOjppbnZhbGlkYXRlQ2FjaGUoZG9jdW1lbnQpOwor
ICAgIGlmIChtX2luZGV4Q2FjaGUuaGFzVmFsaWRDYWNoZShjb2xsZWN0aW9uKCkpKSB7CisgICAg
ICAgIGRvY3VtZW50LnVucmVnaXN0ZXJDb2xsZWN0aW9uKCp0aGlzKTsKKyAgICAgICAgbV9pbmRl
eENhY2hlLmludmFsaWRhdGUoY29sbGVjdGlvbigpKTsKKyAgICB9Cit9CisKK3RlbXBsYXRlIDx0
eXBlbmFtZSBIVE1MQ29sbGVjdGlvbkNsYXNzLCBDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZSB0cmF2
ZXJzYWxUeXBlPgorYm9vbCBDYWNoZWRIVE1MQ29sbGVjdGlvbjxIVE1MQ29sbGVjdGlvbkNsYXNz
LCB0cmF2ZXJzYWxUeXBlPjo6ZWxlbWVudE1hdGNoZXMoRWxlbWVudCYpIGNvbnN0Cit7CisgICAg
Ly8gV2UgY2FsbCB0aGUgZWxlbWVudE1hdGNoZXMoKSBtZXRob2QgZGlyZWN0bHkgb24gdGhlIHN1
YmNsYXNzIGluc3RlYWQgZm9yIHBlcmZvcm1hbmNlLgorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgIHJldHVybiBmYWxzZTsKK30KKworc3RhdGljIGlubGluZSBib29sIG5hbWVTaG91bGRC
ZVZpc2libGVJbkRvY3VtZW50QWxsKEhUTUxFbGVtZW50JiBlbGVtZW50KQoreworICAgIC8vIFRo
ZSBkb2N1bWVudC5hbGwgY29sbGVjdGlvbiByZXR1cm5zIG9ubHkgY2VydGFpbiB0eXBlcyBvZiBl
bGVtZW50cyBieSBuYW1lLAorICAgIC8vIGFsdGhvdWdoIGl0IHJldHVybnMgYW55IHR5cGUgb2Yg
ZWxlbWVudCBieSBpZC4KKyAgICByZXR1cm4gZWxlbWVudC5oYXNUYWdOYW1lKEhUTUxOYW1lczo6
YXBwbGV0VGFnKQorICAgICAgICB8fCBlbGVtZW50Lmhhc1RhZ05hbWUoSFRNTE5hbWVzOjplbWJl
ZFRhZykKKyAgICAgICAgfHwgZWxlbWVudC5oYXNUYWdOYW1lKEhUTUxOYW1lczo6Zm9ybVRhZykK
KyAgICAgICAgfHwgZWxlbWVudC5oYXNUYWdOYW1lKEhUTUxOYW1lczo6aW1nVGFnKQorICAgICAg
ICB8fCBlbGVtZW50Lmhhc1RhZ05hbWUoSFRNTE5hbWVzOjppbnB1dFRhZykKKyAgICAgICAgfHwg
ZWxlbWVudC5oYXNUYWdOYW1lKEhUTUxOYW1lczo6b2JqZWN0VGFnKQorICAgICAgICB8fCBlbGVt
ZW50Lmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpzZWxlY3RUYWcpOworfQorCitzdGF0aWMgaW5saW5l
IGJvb2wgbmFtZVNob3VsZEJlVmlzaWJsZUluRG9jdW1lbnRBbGwoRWxlbWVudCYgZWxlbWVudCkK
K3sKKyAgICByZXR1cm4gaXM8SFRNTEVsZW1lbnQ+KGVsZW1lbnQpICYmIG5hbWVTaG91bGRCZVZp
c2libGVJbkRvY3VtZW50QWxsKGRvd25jYXN0PEhUTUxFbGVtZW50PihlbGVtZW50KSk7Cit9CisK
K3RlbXBsYXRlIDx0eXBlbmFtZSBIVE1MQ29sbGVjdGlvbkNsYXNzLCBDb2xsZWN0aW9uVHJhdmVy
c2FsVHlwZSB0cmF2ZXJzYWxUeXBlPgorRWxlbWVudCogQ2FjaGVkSFRNTENvbGxlY3Rpb248SFRN
TENvbGxlY3Rpb25DbGFzcywgdHJhdmVyc2FsVHlwZT46Om5hbWVkSXRlbShjb25zdCBBdG9taWNT
dHJpbmcmIG5hbWUpIGNvbnN0Cit7CisgICAgLy8gaHR0cDovL21zZG4ubWljcm9zb2Z0LmNvbS93
b3Jrc2hvcC9hdXRob3IvZGh0bWwvcmVmZXJlbmNlL21ldGhvZHMvbmFtZWRpdGVtLmFzcAorICAg
IC8vIFRoaXMgbWV0aG9kIGZpcnN0IHNlYXJjaGVzIGZvciBhbiBvYmplY3Qgd2l0aCBhIG1hdGNo
aW5nIGlkCisgICAgLy8gYXR0cmlidXRlLiBJZiBhIG1hdGNoIGlzIG5vdCBmb3VuZCwgdGhlIG1l
dGhvZCB0aGVuIHNlYXJjaGVzIGZvciBhbgorICAgIC8vIG9iamVjdCB3aXRoIGEgbWF0Y2hpbmcg
bmFtZSBhdHRyaWJ1dGUsIGJ1dCBvbmx5IG9uIHRob3NlIGVsZW1lbnRzCisgICAgLy8gdGhhdCBh
cmUgYWxsb3dlZCBhIG5hbWUgYXR0cmlidXRlLgorCisgICAgaWYgKG5hbWUuaXNFbXB0eSgpKQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIENvbnRhaW5lck5vZGUmIHJvb3QgPSByb290
Tm9kZSgpOworICAgIGlmICh0cmF2ZXJzYWxUeXBlICE9IENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBl
OjpDdXN0b21Gb3J3YXJkT25seSAmJiByb290LmlzSW5UcmVlU2NvcGUoKSkgeworICAgICAgICBF
bGVtZW50KiBjYW5kaWRhdGUgPSBudWxscHRyOworCisgICAgICAgIFRyZWVTY29wZSYgdHJlZVNj
b3BlID0gcm9vdC50cmVlU2NvcGUoKTsKKyAgICAgICAgaWYgKHRyZWVTY29wZS5oYXNFbGVtZW50
V2l0aElkKCpuYW1lLmltcGwoKSkpIHsKKyAgICAgICAgICAgIGlmICghdHJlZVNjb3BlLmNvbnRh
aW5zTXVsdGlwbGVFbGVtZW50c1dpdGhJZChuYW1lKSkKKyAgICAgICAgICAgICAgICBjYW5kaWRh
dGUgPSB0cmVlU2NvcGUuZ2V0RWxlbWVudEJ5SWQobmFtZSk7CisgICAgICAgIH0gZWxzZSBpZiAo
dHJlZVNjb3BlLmhhc0VsZW1lbnRXaXRoTmFtZSgqbmFtZS5pbXBsKCkpKSB7CisgICAgICAgICAg
ICBpZiAoIXRyZWVTY29wZS5jb250YWluc011bHRpcGxlRWxlbWVudHNXaXRoTmFtZShuYW1lKSkg
eworICAgICAgICAgICAgICAgIGNhbmRpZGF0ZSA9IHRyZWVTY29wZS5nZXRFbGVtZW50QnlOYW1l
KG5hbWUpOworICAgICAgICAgICAgICAgIGlmIChjYW5kaWRhdGUgJiYgdHlwZSgpID09IERvY0Fs
bCAmJiAhbmFtZVNob3VsZEJlVmlzaWJsZUluRG9jdW1lbnRBbGwoKmNhbmRpZGF0ZSkpCisgICAg
ICAgICAgICAgICAgICAgIGNhbmRpZGF0ZSA9IG51bGxwdHI7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0gZWxzZQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAgICAgaWYgKGNh
bmRpZGF0ZSAmJiBjb2xsZWN0aW9uKCkuZWxlbWVudE1hdGNoZXMoKmNhbmRpZGF0ZSkpIHsKKyAg
ICAgICAgICAgIGlmICh0cmF2ZXJzYWxUeXBlID09IENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlOjpD
aGlsZHJlbk9ubHkgPyBjYW5kaWRhdGUtPnBhcmVudE5vZGUoKSA9PSAmcm9vdCA6IGNhbmRpZGF0
ZS0+aXNEZXNjZW5kYW50T2YoJnJvb3QpKQorICAgICAgICAgICAgICAgIHJldHVybiBjYW5kaWRh
dGU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gbmFtZWRJdGVtU2xvdyhuYW1lKTsK
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gQ2FjaGVkSFRNTENvbGxl
Y3Rpb25faAorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0NvbGxlY3Rpb25UcmF2
ZXJzYWwuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ29sbGVjdGlvblRyYXZlcnNhbC5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjVjNzFhYzc1MzI1Y2MyNzczYTYwMzk1YjA4ZTFkNWY0NWI4ZWFkOWUKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0NvbGxlY3Rpb25UcmF2ZXJzYWwuaApAQCAt
MCwwICsxLDI0OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQ29sbGVjdGlvblRyYXZlcnNhbF9o
CisjZGVmaW5lIENvbGxlY3Rpb25UcmF2ZXJzYWxfaAorCisjaW5jbHVkZSAiQ29sbGVjdGlvblR5
cGUuaCIKKyNpbmNsdWRlICJFbGVtZW50Q2hpbGRJdGVyYXRvci5oIgorI2luY2x1ZGUgIkVsZW1l
bnREZXNjZW5kYW50SXRlcmF0b3IuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit0ZW1wbGF0
ZSA8Q29sbGVjdGlvblRyYXZlcnNhbFR5cGUgdHJhdmVyc2FsVHlwZT4KK3N0cnVjdCBDb2xsZWN0
aW9uVHJhdmVyc2FsIHsgfTsKKwordGVtcGxhdGUgPD4KK3N0cnVjdCBDb2xsZWN0aW9uVHJhdmVy
c2FsPENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlOjpEZXNjZW5kYW50cz4geworICAgIHVzaW5nIEl0
ZXJhdG9yID0gRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjsKKworICAgIHN0YXRpYyBFbGVtZW50
RGVzY2VuZGFudEl0ZXJhdG9yIGVuZChDb250YWluZXJOb2RlJikgeyByZXR1cm4gRWxlbWVudERl
c2NlbmRhbnRJdGVyYXRvcigpOyB9CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ29sbGVjdGlv
bkNsYXNzPgorICAgIHN0YXRpYyBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yIGJlZ2luKGNvbnN0
IENvbGxlY3Rpb25DbGFzcyYsIENvbnRhaW5lck5vZGUmIHJvb3ROb2RlKTsKKworICAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBDb2xsZWN0aW9uQ2xhc3M+CisgICAgc3RhdGljIEVsZW1lbnREZXNjZW5k
YW50SXRlcmF0b3IgbGFzdChjb25zdCBDb2xsZWN0aW9uQ2xhc3MmLCBDb250YWluZXJOb2RlJiBy
b290Tm9kZSk7CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ29sbGVjdGlvbkNsYXNzPgorICAg
IHN0YXRpYyB2b2lkIHRyYXZlcnNlRm9yd2FyZChjb25zdCBDb2xsZWN0aW9uQ2xhc3MmLCBFbGVt
ZW50RGVzY2VuZGFudEl0ZXJhdG9yJiBjdXJyZW50LCB1bnNpZ25lZCBjb3VudCwgdW5zaWduZWQm
IHRyYXZlcnNlZENvdW50KTsKKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDb2xsZWN0aW9uQ2xh
c3M+CisgICAgc3RhdGljIHZvaWQgdHJhdmVyc2VCYWNrd2FyZChjb25zdCBDb2xsZWN0aW9uQ2xh
c3MmLCBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yJiBjdXJyZW50LCB1bnNpZ25lZCBjb3VudCk7
Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ29sbGVjdGlvbkNsYXNzPgoraW5saW5lIEVsZW1l
bnREZXNjZW5kYW50SXRlcmF0b3IgQ29sbGVjdGlvblRyYXZlcnNhbDxDb2xsZWN0aW9uVHJhdmVy
c2FsVHlwZTo6RGVzY2VuZGFudHM+OjpiZWdpbihjb25zdCBDb2xsZWN0aW9uQ2xhc3MmIGNvbGxl
Y3Rpb24sIENvbnRhaW5lck5vZGUmIHJvb3ROb2RlKQoreworICAgIGF1dG8gZGVzY2VuZGFudHMg
PSBlbGVtZW50RGVzY2VuZGFudHMocm9vdE5vZGUpOworICAgIGF1dG8gZW5kID0gZGVzY2VuZGFu
dHMuZW5kKCk7CisgICAgZm9yIChhdXRvIGl0ID0gZGVzY2VuZGFudHMuYmVnaW4oKTsgaXQgIT0g
ZW5kOyArK2l0KSB7CisgICAgICAgIGlmIChjb2xsZWN0aW9uLmVsZW1lbnRNYXRjaGVzKCppdCkp
IHsKKyAgICAgICAgICAgIC8vIERyb3AgaXRlcmF0b3IgYXNzZXJ0aW9ucyBiZWNhdXNlIEhUTUxD
b2xsZWN0aW9ucyAvIE5vZGVMaXN0IHVzZSBhIGZpbmUtZ3JhaW5lZCBpbnZhbGlkYXRpb24gc2No
ZW1lLgorICAgICAgICAgICAgaXQuZHJvcEFzc2VydGlvbnMoKTsKKyAgICAgICAgICAgIHJldHVy
biBpdDsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gZW5kOworfQorCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgQ29sbGVjdGlvbkNsYXNzPgoraW5saW5lIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0
b3IgQ29sbGVjdGlvblRyYXZlcnNhbDxDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6RGVzY2VuZGFu
dHM+OjpsYXN0KGNvbnN0IENvbGxlY3Rpb25DbGFzcyYgY29sbGVjdGlvbiwgQ29udGFpbmVyTm9k
ZSYgcm9vdE5vZGUpCit7CisgICAgYXV0byBkZXNjZW5kYW50cyA9IGVsZW1lbnREZXNjZW5kYW50
cyhyb290Tm9kZSk7CisgICAgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciBpbnZhbGlkOworICAg
IGZvciAoYXV0byBpdCA9IGRlc2NlbmRhbnRzLmxhc3QoKTsgaXQgIT0gaW52YWxpZDsgLS1pdCkg
eworICAgICAgICBpZiAoY29sbGVjdGlvbi5lbGVtZW50TWF0Y2hlcygqaXQpKSB7CisgICAgICAg
ICAgICAvLyBEcm9wIGl0ZXJhdG9yIGFzc2VydGlvbnMgYmVjYXVzZSBIVE1MQ29sbGVjdGlvbnMg
LyBOb2RlTGlzdCB1c2UgYSBmaW5lLWdyYWluZWQgaW52YWxpZGF0aW9uIHNjaGVtZS4KKyAgICAg
ICAgICAgIGl0LmRyb3BBc3NlcnRpb25zKCk7CisgICAgICAgICAgICByZXR1cm4gaXQ7CisgICAg
ICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGludmFsaWQ7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBDb2xsZWN0aW9uQ2xhc3M+CitpbmxpbmUgdm9pZCBDb2xsZWN0aW9uVHJhdmVyc2FsPENvbGxl
Y3Rpb25UcmF2ZXJzYWxUeXBlOjpEZXNjZW5kYW50cz46OnRyYXZlcnNlRm9yd2FyZChjb25zdCBD
b2xsZWN0aW9uQ2xhc3MmIGNvbGxlY3Rpb24sIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3ImIGN1
cnJlbnQsIHVuc2lnbmVkIGNvdW50LCB1bnNpZ25lZCYgdHJhdmVyc2VkQ291bnQpCit7CisgICAg
QVNTRVJUKGNvbGxlY3Rpb24uZWxlbWVudE1hdGNoZXMoKmN1cnJlbnQpKTsKKyAgICBFbGVtZW50
RGVzY2VuZGFudEl0ZXJhdG9yIGludmFsaWQ7CisgICAgZm9yICh0cmF2ZXJzZWRDb3VudCA9IDA7
IHRyYXZlcnNlZENvdW50IDwgY291bnQ7ICsrdHJhdmVyc2VkQ291bnQpIHsKKyAgICAgICAgZG8g
eworICAgICAgICAgICAgKytjdXJyZW50OworICAgICAgICAgICAgaWYgKGN1cnJlbnQgPT0gaW52
YWxpZCkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0gd2hpbGUgKCFjb2xsZWN0
aW9uLmVsZW1lbnRNYXRjaGVzKCpjdXJyZW50KSk7CisgICAgfQorfQorCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgQ29sbGVjdGlvbkNsYXNzPgoraW5saW5lIHZvaWQgQ29sbGVjdGlvblRyYXZlcnNhbDxD
b2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6RGVzY2VuZGFudHM+Ojp0cmF2ZXJzZUJhY2t3YXJkKGNv
bnN0IENvbGxlY3Rpb25DbGFzcyYgY29sbGVjdGlvbiwgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRv
ciYgY3VycmVudCwgdW5zaWduZWQgY291bnQpCit7CisgICAgQVNTRVJUKGNvbGxlY3Rpb24uZWxl
bWVudE1hdGNoZXMoKmN1cnJlbnQpKTsKKyAgICBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yIGlu
dmFsaWQ7CisgICAgZm9yICg7IGNvdW50OyAtLWNvdW50KSB7CisgICAgICAgIGRvIHsKKyAgICAg
ICAgICAgIC0tY3VycmVudDsKKyAgICAgICAgICAgIGlmIChjdXJyZW50ID09IGludmFsaWQpCisg
ICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9IHdoaWxlICghY29sbGVjdGlvbi5lbGVt
ZW50TWF0Y2hlcygqY3VycmVudCkpOworICAgIH0KK30KKwordGVtcGxhdGUgPD4KK3N0cnVjdCBD
b2xsZWN0aW9uVHJhdmVyc2FsPENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlOjpDaGlsZHJlbk9ubHk+
IHsKKyAgICB1c2luZyBJdGVyYXRvciA9IEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnQ+Owor
CisgICAgc3RhdGljIEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnQ+IGVuZChDb250YWluZXJO
b2RlJiByb290Tm9kZSkgeyByZXR1cm4gRWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVudD4ocm9v
dE5vZGUpOyB9CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ29sbGVjdGlvbkNsYXNzPgorICAg
IHN0YXRpYyBFbGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50PiBiZWdpbihjb25zdCBDb2xsZWN0
aW9uQ2xhc3MmLCBDb250YWluZXJOb2RlJiByb290Tm9kZSk7CisKKyAgICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgQ29sbGVjdGlvbkNsYXNzPgorICAgIHN0YXRpYyBFbGVtZW50Q2hpbGRJdGVyYXRvcjxF
bGVtZW50PiBsYXN0KGNvbnN0IENvbGxlY3Rpb25DbGFzcyYsIENvbnRhaW5lck5vZGUmIHJvb3RO
b2RlKTsKKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDb2xsZWN0aW9uQ2xhc3M+CisgICAgc3Rh
dGljIHZvaWQgdHJhdmVyc2VGb3J3YXJkKGNvbnN0IENvbGxlY3Rpb25DbGFzcyYsIEVsZW1lbnRD
aGlsZEl0ZXJhdG9yPEVsZW1lbnQ+JiBjdXJyZW50LCB1bnNpZ25lZCBjb3VudCwgdW5zaWduZWQm
IHRyYXZlcnNlZENvdW50KTsKKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDb2xsZWN0aW9uQ2xh
c3M+CisgICAgc3RhdGljIHZvaWQgdHJhdmVyc2VCYWNrd2FyZChjb25zdCBDb2xsZWN0aW9uQ2xh
c3MmLCBFbGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50PiYgY3VycmVudCwgdW5zaWduZWQgY291
bnQpOworfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIENvbGxlY3Rpb25DbGFzcz4KK2lubGluZSBF
bGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50PiBDb2xsZWN0aW9uVHJhdmVyc2FsPENvbGxlY3Rp
b25UcmF2ZXJzYWxUeXBlOjpDaGlsZHJlbk9ubHk+OjpiZWdpbihjb25zdCBDb2xsZWN0aW9uQ2xh
c3MmIGNvbGxlY3Rpb24sIENvbnRhaW5lck5vZGUmIHJvb3ROb2RlKQoreworICAgIGF1dG8gY2hp
bGRyZW4gPSBjaGlsZHJlbk9mVHlwZTxFbGVtZW50Pihyb290Tm9kZSk7CisgICAgYXV0byBlbmQg
PSBjaGlsZHJlbi5lbmQoKTsKKyAgICBmb3IgKGF1dG8gaXQgPSBjaGlsZHJlbi5iZWdpbigpOyBp
dCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgaWYgKGNvbGxlY3Rpb24uZWxlbWVudE1hdGNoZXMo
Kml0KSkgeworICAgICAgICAgICAgLy8gRHJvcCBpdGVyYXRvciBhc3NlcnRpb25zIGJlY2F1c2Ug
SFRNTENvbGxlY3Rpb25zIC8gTm9kZUxpc3QgdXNlIGEgZmluZS1ncmFpbmVkIGludmFsaWRhdGlv
biBzY2hlbWUuCisgICAgICAgICAgICBpdC5kcm9wQXNzZXJ0aW9ucygpOworICAgICAgICAgICAg
cmV0dXJuIGl0OworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBlbmQ7Cit9CisKK3RlbXBs
YXRlIDx0eXBlbmFtZSBDb2xsZWN0aW9uQ2xhc3M+CitpbmxpbmUgRWxlbWVudENoaWxkSXRlcmF0
b3I8RWxlbWVudD4gQ29sbGVjdGlvblRyYXZlcnNhbDxDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6
Q2hpbGRyZW5Pbmx5Pjo6bGFzdChjb25zdCBDb2xsZWN0aW9uQ2xhc3MmIGNvbGxlY3Rpb24sIENv
bnRhaW5lck5vZGUmIHJvb3ROb2RlKQoreworICAgIGF1dG8gY2hpbGRyZW4gPSBjaGlsZHJlbk9m
VHlwZTxFbGVtZW50Pihyb290Tm9kZSk7CisgICAgRWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVu
dD4gaW52YWxpZChjb2xsZWN0aW9uLnJvb3ROb2RlKCkpOworICAgIEVsZW1lbnRDaGlsZEl0ZXJh
dG9yPEVsZW1lbnQ+IGxhc3Qocm9vdE5vZGUsIGNoaWxkcmVuLmxhc3QoKSk7CisgICAgZm9yIChh
dXRvIGl0ID0gbGFzdDsgaXQgIT0gaW52YWxpZDsgLS1pdCkgeworICAgICAgICBpZiAoY29sbGVj
dGlvbi5lbGVtZW50TWF0Y2hlcygqaXQpKSB7CisgICAgICAgICAgICAvLyBEcm9wIGl0ZXJhdG9y
IGFzc2VydGlvbnMgYmVjYXVzZSBIVE1MQ29sbGVjdGlvbnMgLyBOb2RlTGlzdCB1c2UgYSBmaW5l
LWdyYWluZWQgaW52YWxpZGF0aW9uIHNjaGVtZS4KKyAgICAgICAgICAgIGl0LmRyb3BBc3NlcnRp
b25zKCk7CisgICAgICAgICAgICByZXR1cm4gaXQ7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0
dXJuIGludmFsaWQ7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBDb2xsZWN0aW9uQ2xhc3M+Citp
bmxpbmUgdm9pZCBDb2xsZWN0aW9uVHJhdmVyc2FsPENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlOjpD
aGlsZHJlbk9ubHk+Ojp0cmF2ZXJzZUZvcndhcmQoY29uc3QgQ29sbGVjdGlvbkNsYXNzJiBjb2xs
ZWN0aW9uLCBFbGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50PiYgY3VycmVudCwgdW5zaWduZWQg
Y291bnQsIHVuc2lnbmVkJiB0cmF2ZXJzZWRDb3VudCkKK3sKKyAgICBBU1NFUlQoY29sbGVjdGlv
bi5lbGVtZW50TWF0Y2hlcygqY3VycmVudCkpOworICAgIEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVs
ZW1lbnQ+IGludmFsaWQoY29sbGVjdGlvbi5yb290Tm9kZSgpKTsKKyAgICBmb3IgKHRyYXZlcnNl
ZENvdW50ID0gMDsgdHJhdmVyc2VkQ291bnQgPCBjb3VudDsgKyt0cmF2ZXJzZWRDb3VudCkgewor
ICAgICAgICBkbyB7CisgICAgICAgICAgICArK2N1cnJlbnQ7CisgICAgICAgICAgICBpZiAoY3Vy
cmVudCA9PSBpbnZhbGlkKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfSB3aGls
ZSAoIWNvbGxlY3Rpb24uZWxlbWVudE1hdGNoZXMoKmN1cnJlbnQpKTsKKyAgICB9Cit9CisKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBDb2xsZWN0aW9uQ2xhc3M+CitpbmxpbmUgdm9pZCBDb2xsZWN0aW9u
VHJhdmVyc2FsPENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlOjpDaGlsZHJlbk9ubHk+Ojp0cmF2ZXJz
ZUJhY2t3YXJkKGNvbnN0IENvbGxlY3Rpb25DbGFzcyYgY29sbGVjdGlvbiwgRWxlbWVudENoaWxk
SXRlcmF0b3I8RWxlbWVudD4mIGN1cnJlbnQsIHVuc2lnbmVkIGNvdW50KQoreworICAgIEFTU0VS
VChjb2xsZWN0aW9uLmVsZW1lbnRNYXRjaGVzKCpjdXJyZW50KSk7CisgICAgRWxlbWVudENoaWxk
SXRlcmF0b3I8RWxlbWVudD4gaW52YWxpZChjb2xsZWN0aW9uLnJvb3ROb2RlKCkpOworICAgIGZv
ciAoOyBjb3VudDsgLS1jb3VudCkgeworICAgICAgICBkbyB7CisgICAgICAgICAgICAtLWN1cnJl
bnQ7CisgICAgICAgICAgICBpZiAoY3VycmVudCA9PSBpbnZhbGlkKQorICAgICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfSB3aGlsZSAoIWNvbGxlY3Rpb24uZWxlbWVudE1hdGNoZXMoKmN1
cnJlbnQpKTsKKyAgICB9Cit9CisKK3RlbXBsYXRlIDw+CitzdHJ1Y3QgQ29sbGVjdGlvblRyYXZl
cnNhbDxDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6Q3VzdG9tRm9yd2FyZE9ubHk+IHsKKyAgICB1
c2luZyBJdGVyYXRvciA9IEVsZW1lbnQqOworCisgICAgc3RhdGljIEVsZW1lbnQqIGVuZChDb250
YWluZXJOb2RlJikgeyByZXR1cm4gbnVsbHB0cjsgfQorCisgICAgdGVtcGxhdGUgPHR5cGVuYW1l
IENvbGxlY3Rpb25DbGFzcz4KKyAgICBzdGF0aWMgRWxlbWVudCogYmVnaW4oY29uc3QgQ29sbGVj
dGlvbkNsYXNzJiwgQ29udGFpbmVyTm9kZSYpOworCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIENv
bGxlY3Rpb25DbGFzcz4KKyAgICBzdGF0aWMgRWxlbWVudCogbGFzdChjb25zdCBDb2xsZWN0aW9u
Q2xhc3MmLCBDb250YWluZXJOb2RlJik7CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ29sbGVj
dGlvbkNsYXNzPgorICAgIHN0YXRpYyB2b2lkIHRyYXZlcnNlRm9yd2FyZChjb25zdCBDb2xsZWN0
aW9uQ2xhc3MmLCBFbGVtZW50KiYgY3VycmVudCwgdW5zaWduZWQgY291bnQsIHVuc2lnbmVkJiB0
cmF2ZXJzZWRDb3VudCk7CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ29sbGVjdGlvbkNsYXNz
PgorICAgIHN0YXRpYyB2b2lkIHRyYXZlcnNlQmFja3dhcmQoY29uc3QgQ29sbGVjdGlvbkNsYXNz
JiwgRWxlbWVudComLCB1bnNpZ25lZCBjb3VudCk7Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
Q29sbGVjdGlvbkNsYXNzPgoraW5saW5lIEVsZW1lbnQqIENvbGxlY3Rpb25UcmF2ZXJzYWw8Q29s
bGVjdGlvblRyYXZlcnNhbFR5cGU6OkN1c3RvbUZvcndhcmRPbmx5Pjo6YmVnaW4oY29uc3QgQ29s
bGVjdGlvbkNsYXNzJiBjb2xsZWN0aW9uLCBDb250YWluZXJOb2RlJikKK3sKKyAgICByZXR1cm4g
Y29sbGVjdGlvbi5jdXN0b21FbGVtZW50QWZ0ZXIobnVsbHB0cik7Cit9CisKK3RlbXBsYXRlIDx0
eXBlbmFtZSBDb2xsZWN0aW9uQ2xhc3M+CitpbmxpbmUgRWxlbWVudCogQ29sbGVjdGlvblRyYXZl
cnNhbDxDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6Q3VzdG9tRm9yd2FyZE9ubHk+OjpsYXN0KGNv
bnN0IENvbGxlY3Rpb25DbGFzcyYsIENvbnRhaW5lck5vZGUmKQoreworICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
Q29sbGVjdGlvbkNsYXNzPgoraW5saW5lIHZvaWQgQ29sbGVjdGlvblRyYXZlcnNhbDxDb2xsZWN0
aW9uVHJhdmVyc2FsVHlwZTo6Q3VzdG9tRm9yd2FyZE9ubHk+Ojp0cmF2ZXJzZUZvcndhcmQoY29u
c3QgQ29sbGVjdGlvbkNsYXNzJiBjb2xsZWN0aW9uLCBFbGVtZW50KiYgY3VycmVudCwgdW5zaWdu
ZWQgY291bnQsIHVuc2lnbmVkJiB0cmF2ZXJzZWRDb3VudCkKK3sKKyAgICBFbGVtZW50KiBlbGVt
ZW50ID0gY3VycmVudDsKKyAgICBmb3IgKHRyYXZlcnNlZENvdW50ID0gMDsgdHJhdmVyc2VkQ291
bnQgPCBjb3VudDsgKyt0cmF2ZXJzZWRDb3VudCkgeworICAgICAgICBlbGVtZW50ID0gY29sbGVj
dGlvbi5jdXN0b21FbGVtZW50QWZ0ZXIoZWxlbWVudCk7CisgICAgICAgIGlmICghZWxlbWVudCkg
eworICAgICAgICAgICAgY3VycmVudCA9IG51bGxwdHI7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKyAgICB9CisgICAgY3VycmVudCA9IGVsZW1lbnQ7Cit9CisKK3RlbXBsYXRlIDx0
eXBlbmFtZSBDb2xsZWN0aW9uQ2xhc3M+CitpbmxpbmUgdm9pZCBDb2xsZWN0aW9uVHJhdmVyc2Fs
PENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlOjpDdXN0b21Gb3J3YXJkT25seT46OnRyYXZlcnNlQmFj
a3dhcmQoY29uc3QgQ29sbGVjdGlvbkNsYXNzJiwgRWxlbWVudComLCB1bnNpZ25lZCBjb3VudCkK
K3sKKyAgICBVTlVTRURfUEFSQU0oY291bnQpOworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBDb2xsZWN0aW9uVHJhdmVy
c2FsX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ29sbGVjdGlvblR5cGUuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvQ29sbGVjdGlvblR5cGUuaAppbmRleCA1MTMwYWY5MWRhZTg2
OGE3MTRmNmUwNTUwYmZhYWRmNDAxZjY1YmJjLi4xYTkyMmQwZmY5MDYwODRhZDE3MzRiMDcwZjg1
YTA0Y2ZiODk0YjFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0NvbGxlY3Rpb25U
eXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Db2xsZWN0aW9uVHlwZS5oCkBAIC01Myw2
ICs1Myw0MiBAQCBlbnVtIENvbGxlY3Rpb25UeXBlIHsKICAgICBGb3JtQ29udHJvbHMKIH07CiAK
LX0gLy8gbmFtZXNwYWNlCitlbnVtIGNsYXNzIENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlIHsgRGVz
Y2VuZGFudHMsIENoaWxkcmVuT25seSwgQ3VzdG9tRm9yd2FyZE9ubHkgfTsKK3RlbXBsYXRlPENv
bGxlY3Rpb25UeXBlIGNvbGxlY3Rpb25UeXBlPgorc3RydWN0IENvbGxlY3Rpb25UeXBlVHJhaXRz
IHsKKyAgICBzdGF0aWMgY29uc3QgQ29sbGVjdGlvblRyYXZlcnNhbFR5cGUgdHJhdmVyc2FsVHlw
ZSA9IENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlOjpEZXNjZW5kYW50czsKK307CisKK3RlbXBsYXRl
PD4KK3N0cnVjdCBDb2xsZWN0aW9uVHlwZVRyYWl0czxOb2RlQ2hpbGRyZW4+IHsKKyAgICBzdGF0
aWMgY29uc3QgQ29sbGVjdGlvblRyYXZlcnNhbFR5cGUgdHJhdmVyc2FsVHlwZSA9IENvbGxlY3Rp
b25UcmF2ZXJzYWxUeXBlOjpDaGlsZHJlbk9ubHk7Cit9OworCit0ZW1wbGF0ZTw+CitzdHJ1Y3Qg
Q29sbGVjdGlvblR5cGVUcmFpdHM8VFJDZWxscz4geworICAgIHN0YXRpYyBjb25zdCBDb2xsZWN0
aW9uVHJhdmVyc2FsVHlwZSB0cmF2ZXJzYWxUeXBlID0gQ29sbGVjdGlvblRyYXZlcnNhbFR5cGU6
OkNoaWxkcmVuT25seTsKK307CisKK3RlbXBsYXRlPD4KK3N0cnVjdCBDb2xsZWN0aW9uVHlwZVRy
YWl0czxUU2VjdGlvblJvd3M+IHsKKyAgICBzdGF0aWMgY29uc3QgQ29sbGVjdGlvblRyYXZlcnNh
bFR5cGUgdHJhdmVyc2FsVHlwZSA9IENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlOjpDaGlsZHJlbk9u
bHk7Cit9OworCit0ZW1wbGF0ZTw+CitzdHJ1Y3QgQ29sbGVjdGlvblR5cGVUcmFpdHM8VGFibGVU
Qm9kaWVzPiB7CisgICAgc3RhdGljIGNvbnN0IENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlIHRyYXZl
cnNhbFR5cGUgPSBDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6Q2hpbGRyZW5Pbmx5OworfTsKKwor
dGVtcGxhdGU8Pgorc3RydWN0IENvbGxlY3Rpb25UeXBlVHJhaXRzPFRhYmxlUm93cz4geworICAg
IHN0YXRpYyBjb25zdCBDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZSB0cmF2ZXJzYWxUeXBlID0gQ29s
bGVjdGlvblRyYXZlcnNhbFR5cGU6OkN1c3RvbUZvcndhcmRPbmx5OworfTsKKwordGVtcGxhdGU8
Pgorc3RydWN0IENvbGxlY3Rpb25UeXBlVHJhaXRzPEZvcm1Db250cm9scz4geworICAgIHN0YXRp
YyBjb25zdCBDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZSB0cmF2ZXJzYWxUeXBlID0gQ29sbGVjdGlv
blRyYXZlcnNhbFR5cGU6OkN1c3RvbUZvcndhcmRPbmx5OworfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvR2VuZXJp
Y0NhY2hlZEhUTUxDb2xsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvR2VuZXJpY0Nh
Y2hlZEhUTUxDb2xsZWN0aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNmJjZWRhMDFiYjg1Mzk5ODNlNGM1
N2JmNjMzZTMzZGI5ZTRmZWFkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9HZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb24uY3BwCkBAIC0wLDAgKzEsODkgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR2VuZXJpY0NhY2hlZEhUTUxD
b2xsZWN0aW9uLmgiCisKKyNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJIVE1MT2Jq
ZWN0RWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxPcHRpb25FbGVtZW50LmgiCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKwordXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKKwordGVtcGxhdGUgPENv
bGxlY3Rpb25UcmF2ZXJzYWxUeXBlIHRyYXZlcnNhbFR5cGU+Citib29sIEdlbmVyaWNDYWNoZWRI
VE1MQ29sbGVjdGlvbjx0cmF2ZXJzYWxUeXBlPjo6ZWxlbWVudE1hdGNoZXMoRWxlbWVudCYgZWxl
bWVudCkgY29uc3QKK3sKKyAgICBzd2l0Y2ggKHRoaXMtPnR5cGUoKSkgeworICAgIGNhc2UgTm9k
ZUNoaWxkcmVuOgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBjYXNlIERvY0ltYWdlczoKKyAg
ICAgICAgcmV0dXJuIGVsZW1lbnQuaGFzVGFnTmFtZShpbWdUYWcpOworICAgIGNhc2UgRG9jU2Ny
aXB0czoKKyAgICAgICAgcmV0dXJuIGVsZW1lbnQuaGFzVGFnTmFtZShzY3JpcHRUYWcpOworICAg
IGNhc2UgRG9jRm9ybXM6CisgICAgICAgIHJldHVybiBlbGVtZW50Lmhhc1RhZ05hbWUoZm9ybVRh
Zyk7CisgICAgY2FzZSBUYWJsZVRCb2RpZXM6CisgICAgICAgIHJldHVybiBlbGVtZW50Lmhhc1Rh
Z05hbWUodGJvZHlUYWcpOworICAgIGNhc2UgVFJDZWxsczoKKyAgICAgICAgcmV0dXJuIGVsZW1l
bnQuaGFzVGFnTmFtZSh0ZFRhZykgfHwgZWxlbWVudC5oYXNUYWdOYW1lKHRoVGFnKTsKKyAgICBj
YXNlIFRTZWN0aW9uUm93czoKKyAgICAgICAgcmV0dXJuIGVsZW1lbnQuaGFzVGFnTmFtZSh0clRh
Zyk7CisgICAgY2FzZSBTZWxlY3RlZE9wdGlvbnM6CisgICAgICAgIHJldHVybiBpczxIVE1MT3B0
aW9uRWxlbWVudD4oZWxlbWVudCkgJiYgZG93bmNhc3Q8SFRNTE9wdGlvbkVsZW1lbnQ+KGVsZW1l
bnQpLnNlbGVjdGVkKCk7CisgICAgY2FzZSBEYXRhTGlzdE9wdGlvbnM6CisgICAgICAgIGlmIChp
czxIVE1MT3B0aW9uRWxlbWVudD4oZWxlbWVudCkpIHsKKyAgICAgICAgICAgIEhUTUxPcHRpb25F
bGVtZW50JiBvcHRpb24gPSBkb3duY2FzdDxIVE1MT3B0aW9uRWxlbWVudD4oZWxlbWVudCk7Cisg
ICAgICAgICAgICBpZiAoIW9wdGlvbi5pc0Rpc2FibGVkRm9ybUNvbnRyb2woKSAmJiAhb3B0aW9u
LnZhbHVlKCkuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICB9CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBjYXNlIE1hcEFyZWFzOgorICAgICAgICBy
ZXR1cm4gZWxlbWVudC5oYXNUYWdOYW1lKGFyZWFUYWcpOworICAgIGNhc2UgRG9jQXBwbGV0czoK
KyAgICAgICAgcmV0dXJuIGlzPEhUTUxBcHBsZXRFbGVtZW50PihlbGVtZW50KSB8fCAoaXM8SFRN
TE9iamVjdEVsZW1lbnQ+KGVsZW1lbnQpICYmIGRvd25jYXN0PEhUTUxPYmplY3RFbGVtZW50Pihl
bGVtZW50KS5jb250YWluc0phdmFBcHBsZXQoKSk7CisgICAgY2FzZSBEb2NFbWJlZHM6CisgICAg
ICAgIHJldHVybiBlbGVtZW50Lmhhc1RhZ05hbWUoZW1iZWRUYWcpOworICAgIGNhc2UgRG9jTGlu
a3M6CisgICAgICAgIHJldHVybiAoZWxlbWVudC5oYXNUYWdOYW1lKGFUYWcpIHx8IGVsZW1lbnQu
aGFzVGFnTmFtZShhcmVhVGFnKSkgJiYgZWxlbWVudC5mYXN0SGFzQXR0cmlidXRlKGhyZWZBdHRy
KTsKKyAgICBjYXNlIERvY0FuY2hvcnM6CisgICAgICAgIHJldHVybiBlbGVtZW50Lmhhc1RhZ05h
bWUoYVRhZykgJiYgZWxlbWVudC5mYXN0SGFzQXR0cmlidXRlKG5hbWVBdHRyKTsKKyAgICBjYXNl
IERvY0FsbDoKKyAgICBjYXNlIERvY3VtZW50TmFtZWRJdGVtczoKKyAgICBjYXNlIEZvcm1Db250
cm9sczoKKyAgICBjYXNlIFNlbGVjdE9wdGlvbnM6CisgICAgY2FzZSBUYWJsZVJvd3M6CisgICAg
Y2FzZSBXaW5kb3dOYW1lZEl0ZW1zOgorICAgICAgICBicmVhazsKKyAgICB9CisgICAgLy8gUmVt
YWluaW5nIGNvbGxlY3Rpb24gdHlwZXMgaGF2ZSB0aGVpciBvd24gQ2FjaGVkSFRNTENvbGxlY3Rp
b24gc3ViY2xhc3NlcyBhbmQgYXJlIG5vdCB1c2luZyBHZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rp
b24uCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQordGVt
cGxhdGUgYm9vbCBHZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb248Q29sbGVjdGlvblRyYXZlcnNh
bFR5cGU6OkRlc2NlbmRhbnRzPjo6ZWxlbWVudE1hdGNoZXMoRWxlbWVudCYpIGNvbnN0OwordGVt
cGxhdGUgYm9vbCBHZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb248Q29sbGVjdGlvblRyYXZlcnNh
bFR5cGU6OkNoaWxkcmVuT25seT46OmVsZW1lbnRNYXRjaGVzKEVsZW1lbnQmKSBjb25zdDsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9H
ZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvR2VuZXJp
Y0NhY2hlZEhUTUxDb2xsZWN0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzYzMzEzM2ZkYTBhMmEzZjJiYmNh
M2FlNWVjOTRlMTNjNzZlYjhlMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvR2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uLmgKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZm5kZWYgR2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uX2gKKyNkZWZpbmUgR2Vu
ZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uX2gKKworI2luY2x1ZGUgIkNhY2hlZEhUTUxDb2xsZWN0
aW9uLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordGVtcGxhdGUgPENvbGxlY3Rpb25UcmF2
ZXJzYWxUeXBlIHRyYXZlcnNhbFR5cGU+CitjbGFzcyBHZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rp
b24gZmluYWwgOiBwdWJsaWMgQ2FjaGVkSFRNTENvbGxlY3Rpb248R2VuZXJpY0NhY2hlZEhUTUxD
b2xsZWN0aW9uPHRyYXZlcnNhbFR5cGU+LCB0cmF2ZXJzYWxUeXBlPiB7CitwdWJsaWM6CisgICAg
c3RhdGljIFJlZjxHZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb24+IGNyZWF0ZShDb250YWluZXJO
b2RlJiBiYXNlLCBDb2xsZWN0aW9uVHlwZSBjb2xsZWN0aW9uVHlwZSkKKyAgICB7CisgICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IEdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbihiYXNlLCBj
b2xsZWN0aW9uVHlwZSkpOworICAgIH0KKworICAgIGJvb2wgZWxlbWVudE1hdGNoZXMoRWxlbWVu
dCYpIGNvbnN0OworCitwcml2YXRlOgorICAgIEdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbihD
b250YWluZXJOb2RlJiBiYXNlLCBDb2xsZWN0aW9uVHlwZSBjb2xsZWN0aW9uVHlwZSkKKyAgICAg
ICAgOiBDYWNoZWRIVE1MQ29sbGVjdGlvbjxHZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb248dHJh
dmVyc2FsVHlwZT4sIHRyYXZlcnNhbFR5cGU+KGJhc2UsIGNvbGxlY3Rpb25UeXBlKQorICAgIHsg
fQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gR2VuZXJpY0NhY2hl
ZEhUTUxDb2xsZWN0aW9uX2gKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
QWxsQ29sbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbGxDb2xsZWN0aW9u
LmNwcAppbmRleCAwMTY2ODcxNGVjYmJiZDBmZWJkMWU1MGM0YWJkNGIwOTEzYjQyN2YzLi5kYWIw
NTAwZmFkODhjNjU0YTViOTFjYmU1ZDNkOWE3NDYyNzk4YjFiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxBbGxDb2xsZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxBbGxDb2xsZWN0aW9uLmNwcApAQCAtMzYsNyArMzYsNyBAQCBSZWY8SFRNTEFsbENv
bGxlY3Rpb24+IEhUTUxBbGxDb2xsZWN0aW9uOjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBD
b2xsZWN0aW9uVAogfQogCiBpbmxpbmUgSFRNTEFsbENvbGxlY3Rpb246OkhUTUxBbGxDb2xsZWN0
aW9uKERvY3VtZW50JiBkb2N1bWVudCwgQ29sbGVjdGlvblR5cGUgdHlwZSkKLSAgICA6IEhUTUxD
b2xsZWN0aW9uKGRvY3VtZW50LCB0eXBlKQorICAgIDogQ2FjaGVkSFRNTENvbGxlY3Rpb248SFRN
TEFsbENvbGxlY3Rpb24sIENvbGxlY3Rpb25UeXBlVHJhaXRzPERvY0FsbD46OnRyYXZlcnNhbFR5
cGU+KGRvY3VtZW50LCB0eXBlKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxBbGxDb2xsZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbGxDb2xs
ZWN0aW9uLmgKaW5kZXggNTE0NTExNzRiZDI4M2IyMDFjODkyZTJlYTRhNWFiOWZiNjE1YmYwMS4u
YjYwMTFiNDk2MmRlMGM3NzczY2IzMWJlOTE2NmQzZTk4YjkwNGRjMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MQWxsQ29sbGVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEFsbENvbGxlY3Rpb24uaApAQCAtMjYsMTYgKzI2LDE5IEBACiAjaWZuZGVmIEhU
TUxBbGxDb2xsZWN0aW9uX2gKICNkZWZpbmUgSFRNTEFsbENvbGxlY3Rpb25faAogCi0jaW5jbHVk
ZSAiSFRNTENvbGxlY3Rpb24uaCIKKyNpbmNsdWRlICJDYWNoZWRIVE1MQ29sbGVjdGlvbi5oIgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEhUTUxBbGxDb2xsZWN0aW9uIGZpbmFsIDog
cHVibGljIEhUTUxDb2xsZWN0aW9uIHsKK2NsYXNzIEhUTUxBbGxDb2xsZWN0aW9uIGZpbmFsIDog
cHVibGljIENhY2hlZEhUTUxDb2xsZWN0aW9uPEhUTUxBbGxDb2xsZWN0aW9uLCBDb2xsZWN0aW9u
VHlwZVRyYWl0czxEb2NBbGw+Ojp0cmF2ZXJzYWxUeXBlPiB7CiBwdWJsaWM6CiAgICAgc3RhdGlj
IFJlZjxIVE1MQWxsQ29sbGVjdGlvbj4gY3JlYXRlKERvY3VtZW50JiwgQ29sbGVjdGlvblR5cGUp
OwogCiAgICAgRWxlbWVudCogbmFtZWRJdGVtV2l0aEluZGV4KGNvbnN0IEF0b21pY1N0cmluZyYg
bmFtZSwgdW5zaWduZWQgaW5kZXgpIGNvbnN0OwogCisgICAgLy8gRm9yIENhY2hlZEhUTUxDb2xs
ZWN0aW9uLgorICAgIGJvb2wgZWxlbWVudE1hdGNoZXMoRWxlbWVudCYpIGNvbnN0IHsgcmV0dXJu
IHRydWU7IH0KKwogcHJpdmF0ZToKICAgICBIVE1MQWxsQ29sbGVjdGlvbihEb2N1bWVudCYsIENv
bGxlY3Rpb25UeXBlKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxD
b2xsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uY3BwCmlu
ZGV4IDNiNGI2MmY3MjZiYzQ1MDM4Y2IzOTMxMTYwNGY4NTc1MzBiNjgxZGYuLjExODJjZmJkZmMx
ZmJhMzZkYTZmNTNhMTNjYzU5YzFlYTU4OGY2YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTENvbGxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENv
bGxlY3Rpb24uY3BwCkBAIC0yMyw0OCArMjMsMTQgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJIVE1MQ29sbGVjdGlvbi5oIgogCi0jaW5jbHVkZSAiRWxlbWVudFRyYXZlcnNhbC5o
IgotI2luY2x1ZGUgIkhUTUxEb2N1bWVudC5oIgotI2luY2x1ZGUgIkhUTUxOYW1lQ29sbGVjdGlv
bi5oIgorI2luY2x1ZGUgIkNhY2hlZEhUTUxDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiSFRNTE5h
bWVzLmgiCi0jaW5jbHVkZSAiSFRNTE9iamVjdEVsZW1lbnQuaCIKLSNpbmNsdWRlICJIVE1MT3B0
aW9uRWxlbWVudC5oIgogI2luY2x1ZGUgIk5vZGVSYXJlRGF0YS5oIgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKLXN0YXRpYyBib29sIHNob3Vs
ZE9ubHlJbmNsdWRlRGlyZWN0Q2hpbGRyZW4oQ29sbGVjdGlvblR5cGUgdHlwZSkKLXsKLSAgICBz
d2l0Y2ggKHR5cGUpIHsKLSAgICBjYXNlIERvY0FsbDoKLSAgICBjYXNlIERvY0FuY2hvcnM6Ci0g
ICAgY2FzZSBEb2NBcHBsZXRzOgotICAgIGNhc2UgRG9jRW1iZWRzOgotICAgIGNhc2UgRG9jRm9y
bXM6Ci0gICAgY2FzZSBEb2NJbWFnZXM6Ci0gICAgY2FzZSBEb2NMaW5rczoKLSAgICBjYXNlIERv
Y1NjcmlwdHM6Ci0gICAgY2FzZSBEb2N1bWVudE5hbWVkSXRlbXM6Ci0gICAgY2FzZSBNYXBBcmVh
czoKLSAgICBjYXNlIFRhYmxlUm93czoKLSAgICBjYXNlIFNlbGVjdE9wdGlvbnM6Ci0gICAgY2Fz
ZSBTZWxlY3RlZE9wdGlvbnM6Ci0gICAgY2FzZSBEYXRhTGlzdE9wdGlvbnM6Ci0gICAgY2FzZSBX
aW5kb3dOYW1lZEl0ZW1zOgotICAgIGNhc2UgRm9ybUNvbnRyb2xzOgotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgY2FzZSBOb2RlQ2hpbGRyZW46Ci0gICAgY2FzZSBUUkNlbGxzOgotICAgIGNh
c2UgVFNlY3Rpb25Sb3dzOgotICAgIGNhc2UgVGFibGVUQm9kaWVzOgotICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICB9Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIGZhbHNl
OwotfQotCiBpbmxpbmUgYXV0byBIVE1MQ29sbGVjdGlvbjo6cm9vdFR5cGVGcm9tQ29sbGVjdGlv
blR5cGUoQ29sbGVjdGlvblR5cGUgdHlwZSkgLT4gUm9vdFR5cGUKIHsKICAgICBzd2l0Y2ggKHR5
cGUpIHsKQEAgLTEzMSwyNjIgKzk3LDI5IEBAIHN0YXRpYyBOb2RlTGlzdEludmFsaWRhdGlvblR5
cGUgaW52YWxpZGF0aW9uVHlwZUV4Y2x1ZGluZ0lkQW5kTmFtZUF0dHJpYnV0ZXMoQ29sCiAgICAg
cmV0dXJuIERvTm90SW52YWxpZGF0ZU9uQXR0cmlidXRlQ2hhbmdlczsKIH0KIAotSFRNTENvbGxl
Y3Rpb246OkhUTUxDb2xsZWN0aW9uKENvbnRhaW5lck5vZGUmIG93bmVyTm9kZSwgQ29sbGVjdGlv
blR5cGUgdHlwZSwgRWxlbWVudFRyYXZlcnNhbFR5cGUgdHJhdmVyc2FsVHlwZSkKK0hUTUxDb2xs
ZWN0aW9uOjpIVE1MQ29sbGVjdGlvbihDb250YWluZXJOb2RlJiBvd25lck5vZGUsIENvbGxlY3Rp
b25UeXBlIHR5cGUpCiAgICAgOiBtX293bmVyTm9kZShvd25lck5vZGUpCi0gICAgLCBtX2luZGV4
Q2FjaGUoKnRoaXMpCiAgICAgLCBtX2NvbGxlY3Rpb25UeXBlKHR5cGUpCiAgICAgLCBtX2ludmFs
aWRhdGlvblR5cGUoaW52YWxpZGF0aW9uVHlwZUV4Y2x1ZGluZ0lkQW5kTmFtZUF0dHJpYnV0ZXMo
dHlwZSkpCiAgICAgLCBtX3Jvb3RUeXBlKHJvb3RUeXBlRnJvbUNvbGxlY3Rpb25UeXBlKHR5cGUp
KQotICAgICwgbV9zaG91bGRPbmx5SW5jbHVkZURpcmVjdENoaWxkcmVuKHNob3VsZE9ubHlJbmNs
dWRlRGlyZWN0Q2hpbGRyZW4odHlwZSkpCi0gICAgLCBtX3VzZXNDdXN0b21Gb3J3YXJkT25seVRy
YXZlcnNhbCh0cmF2ZXJzYWxUeXBlID09IEN1c3RvbUZvcndhcmRPbmx5VHJhdmVyc2FsKQogewog
ICAgIEFTU0VSVChtX3Jvb3RUeXBlID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihyb290VHlwZUZy
b21Db2xsZWN0aW9uVHlwZSh0eXBlKSkpOwogICAgIEFTU0VSVChtX2ludmFsaWRhdGlvblR5cGUg
PT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGludmFsaWRhdGlvblR5cGVFeGNsdWRpbmdJZEFuZE5h
bWVBdHRyaWJ1dGVzKHR5cGUpKSk7CiAgICAgQVNTRVJUKG1fY29sbGVjdGlvblR5cGUgPT0gc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KHR5cGUpKTsKIH0KIAotUmVmPEhUTUxDb2xsZWN0aW9uPiBIVE1M
Q29sbGVjdGlvbjo6Y3JlYXRlKENvbnRhaW5lck5vZGUmIGJhc2UsIENvbGxlY3Rpb25UeXBlIHR5
cGUpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSFRNTENvbGxlY3Rpb24oYmFzZSwgdHlw
ZSkpOwotfQotCiBIVE1MQ29sbGVjdGlvbjo6fkhUTUxDb2xsZWN0aW9uKCkKIHsKLSAgICBpZiAo
bV9pbmRleENhY2hlLmhhc1ZhbGlkQ2FjaGUoKnRoaXMpKQotICAgICAgICBkb2N1bWVudCgpLnVu
cmVnaXN0ZXJDb2xsZWN0aW9uKCp0aGlzKTsKICAgICBpZiAoaGFzTmFtZWRFbGVtZW50Q2FjaGUo
KSkKICAgICAgICAgZG9jdW1lbnQoKS5jb2xsZWN0aW9uV2lsbENsZWFySWROYW1lTWFwKCp0aGlz
KTsKKwogICAgIC8vIEhUTUxOYW1lQ29sbGVjdGlvbiByZW1vdmVzIGNhY2hlIGJ5IGl0c2VsZi4K
ICAgICBpZiAodHlwZSgpICE9IFdpbmRvd05hbWVkSXRlbXMgJiYgdHlwZSgpICE9IERvY3VtZW50
TmFtZWRJdGVtcykKICAgICAgICAgb3duZXJOb2RlKCkubm9kZUxpc3RzKCktPnJlbW92ZUNhY2hl
ZENvbGxlY3Rpb24odGhpcyk7CiB9CiAKLUNvbnRhaW5lck5vZGUmIEhUTUxDb2xsZWN0aW9uOjpy
b290Tm9kZSgpIGNvbnN0Ci17Ci0gICAgaWYgKGlzUm9vdGVkQXREb2N1bWVudCgpICYmIG93bmVy
Tm9kZSgpLmluRG9jdW1lbnQoKSkKLSAgICAgICAgcmV0dXJuIG93bmVyTm9kZSgpLmRvY3VtZW50
KCk7Ci0KLSAgICByZXR1cm4gb3duZXJOb2RlKCk7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgYm9vbCBp
c01hdGNoaW5nSFRNTEVsZW1lbnQoY29uc3QgSFRNTENvbGxlY3Rpb24mIGNvbGxlY3Rpb24sIEhU
TUxFbGVtZW50JiBlbGVtZW50KQordm9pZCBIVE1MQ29sbGVjdGlvbjo6aW52YWxpZGF0ZUNhY2hl
KERvY3VtZW50JiBkb2N1bWVudCkKIHsKLSAgICBzd2l0Y2ggKGNvbGxlY3Rpb24udHlwZSgpKSB7
Ci0gICAgY2FzZSBEb2NJbWFnZXM6Ci0gICAgICAgIHJldHVybiBlbGVtZW50Lmhhc1RhZ05hbWUo
aW1nVGFnKTsKLSAgICBjYXNlIERvY1NjcmlwdHM6Ci0gICAgICAgIHJldHVybiBlbGVtZW50Lmhh
c1RhZ05hbWUoc2NyaXB0VGFnKTsKLSAgICBjYXNlIERvY0Zvcm1zOgotICAgICAgICByZXR1cm4g
ZWxlbWVudC5oYXNUYWdOYW1lKGZvcm1UYWcpOwotICAgIGNhc2UgVGFibGVUQm9kaWVzOgotICAg
ICAgICByZXR1cm4gZWxlbWVudC5oYXNUYWdOYW1lKHRib2R5VGFnKTsKLSAgICBjYXNlIFRSQ2Vs
bHM6Ci0gICAgICAgIHJldHVybiBlbGVtZW50Lmhhc1RhZ05hbWUodGRUYWcpIHx8IGVsZW1lbnQu
aGFzVGFnTmFtZSh0aFRhZyk7Ci0gICAgY2FzZSBUU2VjdGlvblJvd3M6Ci0gICAgICAgIHJldHVy
biBlbGVtZW50Lmhhc1RhZ05hbWUodHJUYWcpOwotICAgIGNhc2UgU2VsZWN0T3B0aW9uczoKLSAg
ICAgICAgcmV0dXJuIGVsZW1lbnQuaGFzVGFnTmFtZShvcHRpb25UYWcpOwotICAgIGNhc2UgU2Vs
ZWN0ZWRPcHRpb25zOgotICAgICAgICByZXR1cm4gaXM8SFRNTE9wdGlvbkVsZW1lbnQ+KGVsZW1l
bnQpICYmIGRvd25jYXN0PEhUTUxPcHRpb25FbGVtZW50PihlbGVtZW50KS5zZWxlY3RlZCgpOwot
ICAgIGNhc2UgRGF0YUxpc3RPcHRpb25zOgotICAgICAgICBpZiAoaXM8SFRNTE9wdGlvbkVsZW1l
bnQ+KGVsZW1lbnQpKSB7Ci0gICAgICAgICAgICBIVE1MT3B0aW9uRWxlbWVudCYgb3B0aW9uID0g
ZG93bmNhc3Q8SFRNTE9wdGlvbkVsZW1lbnQ+KGVsZW1lbnQpOwotICAgICAgICAgICAgaWYgKCFv
cHRpb24uaXNEaXNhYmxlZEZvcm1Db250cm9sKCkgJiYgIW9wdGlvbi52YWx1ZSgpLmlzRW1wdHko
KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgY2FzZSBNYXBBcmVhczoKLSAgICAgICAgcmV0dXJuIGVsZW1lbnQuaGFz
VGFnTmFtZShhcmVhVGFnKTsKLSAgICBjYXNlIERvY0FwcGxldHM6Ci0gICAgICAgIHJldHVybiBp
czxIVE1MQXBwbGV0RWxlbWVudD4oZWxlbWVudCkgfHwgKGlzPEhUTUxPYmplY3RFbGVtZW50Pihl
bGVtZW50KSAmJiBkb3duY2FzdDxIVE1MT2JqZWN0RWxlbWVudD4oZWxlbWVudCkuY29udGFpbnNK
YXZhQXBwbGV0KCkpOwotICAgIGNhc2UgRG9jRW1iZWRzOgotICAgICAgICByZXR1cm4gZWxlbWVu
dC5oYXNUYWdOYW1lKGVtYmVkVGFnKTsKLSAgICBjYXNlIERvY0xpbmtzOgotICAgICAgICByZXR1
cm4gKGVsZW1lbnQuaGFzVGFnTmFtZShhVGFnKSB8fCBlbGVtZW50Lmhhc1RhZ05hbWUoYXJlYVRh
ZykpICYmIGVsZW1lbnQuZmFzdEhhc0F0dHJpYnV0ZShocmVmQXR0cik7Ci0gICAgY2FzZSBEb2NB
bmNob3JzOgotICAgICAgICByZXR1cm4gZWxlbWVudC5oYXNUYWdOYW1lKGFUYWcpICYmIGVsZW1l
bnQuZmFzdEhhc0F0dHJpYnV0ZShuYW1lQXR0cik7Ci0gICAgY2FzZSBEb2N1bWVudE5hbWVkSXRl
bXM6Ci0gICAgICAgIHJldHVybiBkb3duY2FzdDxEb2N1bWVudE5hbWVDb2xsZWN0aW9uPihjb2xs
ZWN0aW9uKS5lbGVtZW50TWF0Y2hlcyhlbGVtZW50KTsKLSAgICBjYXNlIERvY0FsbDoKLSAgICBj
YXNlIE5vZGVDaGlsZHJlbjoKLSAgICBjYXNlIFdpbmRvd05hbWVkSXRlbXM6Ci0gICAgY2FzZSBG
b3JtQ29udHJvbHM6Ci0gICAgY2FzZSBUYWJsZVJvd3M6Ci0gICAgICAgIGJyZWFrOwotICAgIH0K
LSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLXN0YXRp
YyBpbmxpbmUgYm9vbCBpc01hdGNoaW5nRWxlbWVudChjb25zdCBIVE1MQ29sbGVjdGlvbiYgY29s
bGVjdGlvbiwgRWxlbWVudCYgZWxlbWVudCkKLXsKLSAgICAvLyBDb2xsZWN0aW9uIHR5cGVzIHRo
YXQgZGVhbCB3aXRoIGFueSB0eXBlIG9mIEVsZW1lbnRzLCBub3QganVzdCBIVE1MRWxlbWVudHMu
Ci0gICAgc3dpdGNoIChjb2xsZWN0aW9uLnR5cGUoKSkgewotICAgIGNhc2UgRG9jQWxsOgotICAg
IGNhc2UgTm9kZUNoaWxkcmVuOgotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBjYXNlIFdpbmRv
d05hbWVkSXRlbXM6Ci0gICAgICAgIHJldHVybiBkb3duY2FzdDxXaW5kb3dOYW1lQ29sbGVjdGlv
bj4oY29sbGVjdGlvbikuZWxlbWVudE1hdGNoZXMoZWxlbWVudCk7Ci0gICAgZGVmYXVsdDoKLSAg
ICAgICAgLy8gQ29sbGVjdGlvbiB0eXBlcyB0aGF0IG9ubHkgZGVhbCB3aXRoIEhUTUxFbGVtZW50
cy4KLSAgICAgICAgcmV0dXJuIGlzPEhUTUxFbGVtZW50PihlbGVtZW50KSAmJiBpc01hdGNoaW5n
SFRNTEVsZW1lbnQoY29sbGVjdGlvbiwgZG93bmNhc3Q8SFRNTEVsZW1lbnQ+KGVsZW1lbnQpKTsK
LSAgICB9Ci19Ci0KLXN0YXRpYyBpbmxpbmUgRWxlbWVudCogcHJldmlvdXNFbGVtZW50KENvbnRh
aW5lck5vZGUmIGJhc2UsIEVsZW1lbnQmIGVsZW1lbnQsIGJvb2wgb25seUluY2x1ZGVEaXJlY3RD
aGlsZHJlbikKLXsKLSAgICByZXR1cm4gb25seUluY2x1ZGVEaXJlY3RDaGlsZHJlbiA/IEVsZW1l
bnRUcmF2ZXJzYWw6OnByZXZpb3VzU2libGluZyhlbGVtZW50KSA6IEVsZW1lbnRUcmF2ZXJzYWw6
OnByZXZpb3VzKGVsZW1lbnQsICZiYXNlKTsKLX0KLQotQUxXQVlTX0lOTElORSBFbGVtZW50KiBI
VE1MQ29sbGVjdGlvbjo6aXRlcmF0ZUZvclByZXZpb3VzRWxlbWVudChFbGVtZW50KiBlbGVtZW50
KSBjb25zdAotewotICAgIGJvb2wgb25seUluY2x1ZGVEaXJlY3RDaGlsZHJlbiA9IG1fc2hvdWxk
T25seUluY2x1ZGVEaXJlY3RDaGlsZHJlbjsKLSAgICBDb250YWluZXJOb2RlJiByb290Tm9kZSA9
IHRoaXMtPnJvb3ROb2RlKCk7Ci0gICAgZm9yICg7IGVsZW1lbnQ7IGVsZW1lbnQgPSBwcmV2aW91
c0VsZW1lbnQocm9vdE5vZGUsICplbGVtZW50LCBvbmx5SW5jbHVkZURpcmVjdENoaWxkcmVuKSkg
ewotICAgICAgICBpZiAoaXNNYXRjaGluZ0VsZW1lbnQoKnRoaXMsICplbGVtZW50KSkKLSAgICAg
ICAgICAgIHJldHVybiBlbGVtZW50OwotICAgIH0KLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLQot
c3RhdGljIGlubGluZSBFbGVtZW50KiBmaXJzdE1hdGNoaW5nRWxlbWVudChjb25zdCBIVE1MQ29s
bGVjdGlvbiYgY29sbGVjdGlvbiwgQ29udGFpbmVyTm9kZSYgcm9vdCkKLXsKLSAgICBFbGVtZW50
KiBlbGVtZW50ID0gRWxlbWVudFRyYXZlcnNhbDo6Zmlyc3RXaXRoaW4ocm9vdCk7Ci0gICAgd2hp
bGUgKGVsZW1lbnQgJiYgIWlzTWF0Y2hpbmdFbGVtZW50KGNvbGxlY3Rpb24sICplbGVtZW50KSkK
LSAgICAgICAgZWxlbWVudCA9IEVsZW1lbnRUcmF2ZXJzYWw6Om5leHQoKmVsZW1lbnQsICZyb290
KTsKLSAgICByZXR1cm4gZWxlbWVudDsKLX0KLQotc3RhdGljIGlubGluZSBFbGVtZW50KiBuZXh0
TWF0Y2hpbmdFbGVtZW50KGNvbnN0IEhUTUxDb2xsZWN0aW9uJiBjb2xsZWN0aW9uLCBFbGVtZW50
JiBlbGVtZW50LCBDb250YWluZXJOb2RlJiByb290KQotewotICAgIEVsZW1lbnQqIG5leHQgPSAm
ZWxlbWVudDsKLSAgICBkbyB7Ci0gICAgICAgIG5leHQgPSBFbGVtZW50VHJhdmVyc2FsOjpuZXh0
KCpuZXh0LCAmcm9vdCk7Ci0gICAgfSB3aGlsZSAobmV4dCAmJiAhaXNNYXRjaGluZ0VsZW1lbnQo
Y29sbGVjdGlvbiwgKm5leHQpKTsKLSAgICByZXR1cm4gbmV4dDsKLX0KLQotdW5zaWduZWQgSFRN
TENvbGxlY3Rpb246Omxlbmd0aCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1faW5kZXhDYWNoZS5u
b2RlQ291bnQoKnRoaXMpOwotfQotCi1FbGVtZW50KiBIVE1MQ29sbGVjdGlvbjo6aXRlbSh1bnNp
Z25lZCBvZmZzZXQpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1faW5kZXhDYWNoZS5ub2RlQXQoKnRo
aXMsIG9mZnNldCk7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgYm9vbCBuYW1lU2hvdWxkQmVWaXNpYmxl
SW5Eb2N1bWVudEFsbChIVE1MRWxlbWVudCYgZWxlbWVudCkKLXsKLSAgICAvLyBUaGUgZG9jdW1l
bnQuYWxsIGNvbGxlY3Rpb24gcmV0dXJucyBvbmx5IGNlcnRhaW4gdHlwZXMgb2YgZWxlbWVudHMg
YnkgbmFtZSwKLSAgICAvLyBhbHRob3VnaCBpdCByZXR1cm5zIGFueSB0eXBlIG9mIGVsZW1lbnQg
YnkgaWQuCi0gICAgcmV0dXJuIGVsZW1lbnQuaGFzVGFnTmFtZShhcHBsZXRUYWcpCi0gICAgICAg
IHx8IGVsZW1lbnQuaGFzVGFnTmFtZShlbWJlZFRhZykKLSAgICAgICAgfHwgZWxlbWVudC5oYXNU
YWdOYW1lKGZvcm1UYWcpCi0gICAgICAgIHx8IGVsZW1lbnQuaGFzVGFnTmFtZShpbWdUYWcpCi0g
ICAgICAgIHx8IGVsZW1lbnQuaGFzVGFnTmFtZShpbnB1dFRhZykKLSAgICAgICAgfHwgZWxlbWVu
dC5oYXNUYWdOYW1lKG9iamVjdFRhZykKLSAgICAgICAgfHwgZWxlbWVudC5oYXNUYWdOYW1lKHNl
bGVjdFRhZyk7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgYm9vbCBuYW1lU2hvdWxkQmVWaXNpYmxlSW5E
b2N1bWVudEFsbChFbGVtZW50JiBlbGVtZW50KQotewotICAgIHJldHVybiBpczxIVE1MRWxlbWVu
dD4oZWxlbWVudCkgJiYgbmFtZVNob3VsZEJlVmlzaWJsZUluRG9jdW1lbnRBbGwoZG93bmNhc3Q8
SFRNTEVsZW1lbnQ+KGVsZW1lbnQpKTsKLX0KLQotc3RhdGljIGlubGluZSBFbGVtZW50KiBmaXJz
dE1hdGNoaW5nQ2hpbGRFbGVtZW50KGNvbnN0IEhUTUxDb2xsZWN0aW9uJiBub2RlTGlzdCwgQ29u
dGFpbmVyTm9kZSYgcm9vdCkKLXsKLSAgICBFbGVtZW50KiBlbGVtZW50ID0gRWxlbWVudFRyYXZl
cnNhbDo6Zmlyc3RXaXRoaW4ocm9vdCk7Ci0gICAgd2hpbGUgKGVsZW1lbnQgJiYgIWlzTWF0Y2hp
bmdFbGVtZW50KG5vZGVMaXN0LCAqZWxlbWVudCkpCi0gICAgICAgIGVsZW1lbnQgPSBFbGVtZW50
VHJhdmVyc2FsOjpuZXh0U2libGluZygqZWxlbWVudCk7Ci0gICAgcmV0dXJuIGVsZW1lbnQ7Ci19
Ci0KLXN0YXRpYyBpbmxpbmUgRWxlbWVudCogbmV4dE1hdGNoaW5nU2libGluZ0VsZW1lbnQoY29u
c3QgSFRNTENvbGxlY3Rpb24mIG5vZGVMaXN0LCBFbGVtZW50JiBlbGVtZW50KQotewotICAgIEVs
ZW1lbnQqIG5leHQgPSAmZWxlbWVudDsKLSAgICBkbyB7Ci0gICAgICAgIG5leHQgPSBFbGVtZW50
VHJhdmVyc2FsOjpuZXh0U2libGluZygqbmV4dCk7Ci0gICAgfSB3aGlsZSAobmV4dCAmJiAhaXNN
YXRjaGluZ0VsZW1lbnQobm9kZUxpc3QsICpuZXh0KSk7Ci0gICAgcmV0dXJuIG5leHQ7Ci19Ci0K
LWlubGluZSBib29sIEhUTUxDb2xsZWN0aW9uOjp1c2VzQ3VzdG9tRm9yd2FyZE9ubHlUcmF2ZXJz
YWwoKSBjb25zdAotewotICAgIHJldHVybiBtX3VzZXNDdXN0b21Gb3J3YXJkT25seVRyYXZlcnNh
bDsKLX0KLQotaW5saW5lIEVsZW1lbnQqIEhUTUxDb2xsZWN0aW9uOjpmaXJzdEVsZW1lbnQoQ29u
dGFpbmVyTm9kZSYgcm9vdCkgY29uc3QKLXsKLSAgICBpZiAodXNlc0N1c3RvbUZvcndhcmRPbmx5
VHJhdmVyc2FsKCkpCi0gICAgICAgIHJldHVybiBjdXN0b21FbGVtZW50QWZ0ZXIobnVsbHB0cik7
Ci0gICAgaWYgKG1fc2hvdWxkT25seUluY2x1ZGVEaXJlY3RDaGlsZHJlbikKLSAgICAgICAgcmV0
dXJuIGZpcnN0TWF0Y2hpbmdDaGlsZEVsZW1lbnQoKnRoaXMsIHJvb3QpOwotICAgIHJldHVybiBm
aXJzdE1hdGNoaW5nRWxlbWVudCgqdGhpcywgcm9vdCk7Ci19Ci0KLWlubGluZSBFbGVtZW50KiBI
VE1MQ29sbGVjdGlvbjo6dHJhdmVyc2VGb3J3YXJkKEVsZW1lbnQmIGN1cnJlbnQsIHVuc2lnbmVk
IGNvdW50LCB1bnNpZ25lZCYgdHJhdmVyc2VkQ291bnQsIENvbnRhaW5lck5vZGUmIHJvb3QpIGNv
bnN0Ci17Ci0gICAgRWxlbWVudCogZWxlbWVudCA9ICZjdXJyZW50OwotICAgIGlmICh1c2VzQ3Vz
dG9tRm9yd2FyZE9ubHlUcmF2ZXJzYWwoKSkgewotICAgICAgICBmb3IgKHRyYXZlcnNlZENvdW50
ID0gMDsgdHJhdmVyc2VkQ291bnQgPCBjb3VudDsgKyt0cmF2ZXJzZWRDb3VudCkgewotICAgICAg
ICAgICAgZWxlbWVudCA9IGN1c3RvbUVsZW1lbnRBZnRlcihlbGVtZW50KTsKLSAgICAgICAgICAg
IGlmICghZWxlbWVudCkKLSAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAg
fQotICAgIH0gZWxzZSBpZiAobV9zaG91bGRPbmx5SW5jbHVkZURpcmVjdENoaWxkcmVuKSB7Ci0g
ICAgICAgIGZvciAodHJhdmVyc2VkQ291bnQgPSAwOyB0cmF2ZXJzZWRDb3VudCA8IGNvdW50OyAr
K3RyYXZlcnNlZENvdW50KSB7Ci0gICAgICAgICAgICBlbGVtZW50ID0gbmV4dE1hdGNoaW5nU2li
bGluZ0VsZW1lbnQoKnRoaXMsICplbGVtZW50KTsKLSAgICAgICAgICAgIGlmICghZWxlbWVudCkK
LSAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgfQotICAgIH0gZWxzZSB7
Ci0gICAgICAgIGZvciAodHJhdmVyc2VkQ291bnQgPSAwOyB0cmF2ZXJzZWRDb3VudCA8IGNvdW50
OyArK3RyYXZlcnNlZENvdW50KSB7Ci0gICAgICAgICAgICBlbGVtZW50ID0gbmV4dE1hdGNoaW5n
RWxlbWVudCgqdGhpcywgKmVsZW1lbnQsIHJvb3QpOwotICAgICAgICAgICAgaWYgKCFlbGVtZW50
KQotICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICB9Ci0gICAgfQotICAg
IHJldHVybiBlbGVtZW50OwotfQotCi1FbGVtZW50KiBIVE1MQ29sbGVjdGlvbjo6Y29sbGVjdGlv
bkJlZ2luKCkgY29uc3QKLXsKLSAgICByZXR1cm4gZmlyc3RFbGVtZW50KHJvb3ROb2RlKCkpOwot
fQotCi1FbGVtZW50KiBIVE1MQ29sbGVjdGlvbjo6Y29sbGVjdGlvbkxhc3QoKSBjb25zdAotewot
ICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBvcHRpbWl6ZWQgc2ltaWxhcmx5IHRvIHRoZSBm
b3J3YXJkIGNhc2UuCi0gICAgYXV0byYgcm9vdCA9IHJvb3ROb2RlKCk7Ci0gICAgRWxlbWVudCog
bGFzdCA9IG1fc2hvdWxkT25seUluY2x1ZGVEaXJlY3RDaGlsZHJlbiA/IEVsZW1lbnRUcmF2ZXJz
YWw6Omxhc3RDaGlsZChyb290KSA6IEVsZW1lbnRUcmF2ZXJzYWw6Omxhc3RXaXRoaW4ocm9vdCk7
Ci0gICAgcmV0dXJuIGl0ZXJhdGVGb3JQcmV2aW91c0VsZW1lbnQobGFzdCk7Ci19Ci0KLXZvaWQg
SFRNTENvbGxlY3Rpb246OmNvbGxlY3Rpb25UcmF2ZXJzZUZvcndhcmQoRWxlbWVudComIGN1cnJl
bnQsIHVuc2lnbmVkIGNvdW50LCB1bnNpZ25lZCYgdHJhdmVyc2VkQ291bnQpIGNvbnN0Ci17Ci0g
ICAgY3VycmVudCA9IHRyYXZlcnNlRm9yd2FyZCgqY3VycmVudCwgY291bnQsIHRyYXZlcnNlZENv
dW50LCByb290Tm9kZSgpKTsKLX0KLQotdm9pZCBIVE1MQ29sbGVjdGlvbjo6Y29sbGVjdGlvblRy
YXZlcnNlQmFja3dhcmQoRWxlbWVudComIGN1cnJlbnQsIHVuc2lnbmVkIGNvdW50KSBjb25zdAot
ewotICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBvcHRpbWl6ZWQgc2ltaWxhcmx5IHRvIHRo
ZSBmb3J3YXJkIGNhc2UuCi0gICAgaWYgKG1fc2hvdWxkT25seUluY2x1ZGVEaXJlY3RDaGlsZHJl
bikgewotICAgICAgICBmb3IgKDsgY291bnQgJiYgY3VycmVudDsgLS1jb3VudCkKLSAgICAgICAg
ICAgIGN1cnJlbnQgPSBpdGVyYXRlRm9yUHJldmlvdXNFbGVtZW50KEVsZW1lbnRUcmF2ZXJzYWw6
OnByZXZpb3VzU2libGluZygqY3VycmVudCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAg
IGF1dG8mIHJvb3QgPSByb290Tm9kZSgpOwotICAgIGZvciAoOyBjb3VudCAmJiBjdXJyZW50OyAt
LWNvdW50KQotICAgICAgICBjdXJyZW50ID0gaXRlcmF0ZUZvclByZXZpb3VzRWxlbWVudChFbGVt
ZW50VHJhdmVyc2FsOjpwcmV2aW91cygqY3VycmVudCwgJnJvb3QpKTsKLX0KLQotdm9pZCBIVE1M
Q29sbGVjdGlvbjo6aW52YWxpZGF0ZUNhY2hlKERvY3VtZW50JiBkb2N1bWVudCkgY29uc3QKLXsK
LSAgICBpZiAobV9pbmRleENhY2hlLmhhc1ZhbGlkQ2FjaGUoKnRoaXMpKSB7Ci0gICAgICAgIGRv
Y3VtZW50LnVucmVnaXN0ZXJDb2xsZWN0aW9uKGNvbnN0X2Nhc3Q8SFRNTENvbGxlY3Rpb24mPigq
dGhpcykpOwotICAgICAgICBtX2luZGV4Q2FjaGUuaW52YWxpZGF0ZSgqdGhpcyk7Ci0gICAgfQog
ICAgIGlmIChoYXNOYW1lZEVsZW1lbnRDYWNoZSgpKQogICAgICAgICBpbnZhbGlkYXRlTmFtZWRF
bGVtZW50Q2FjaGUoZG9jdW1lbnQpOwogfQpAQCAtMzk4LDQwICsxMzEsOCBAQCB2b2lkIEhUTUxD
b2xsZWN0aW9uOjppbnZhbGlkYXRlTmFtZWRFbGVtZW50Q2FjaGUoRG9jdW1lbnQmIGRvY3VtZW50
KSBjb25zdAogICAgIG1fbmFtZWRFbGVtZW50Q2FjaGUgPSBudWxscHRyOwogfQogCi1FbGVtZW50
KiBIVE1MQ29sbGVjdGlvbjo6bmFtZWRJdGVtKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkgY29u
c3QKK0VsZW1lbnQqIEhUTUxDb2xsZWN0aW9uOjpuYW1lZEl0ZW1TbG93KGNvbnN0IEF0b21pY1N0
cmluZyYgbmFtZSkgY29uc3QKIHsKLSAgICAvLyBodHRwOi8vbXNkbi5taWNyb3NvZnQuY29tL3dv
cmtzaG9wL2F1dGhvci9kaHRtbC9yZWZlcmVuY2UvbWV0aG9kcy9uYW1lZGl0ZW0uYXNwCi0gICAg
Ly8gVGhpcyBtZXRob2QgZmlyc3Qgc2VhcmNoZXMgZm9yIGFuIG9iamVjdCB3aXRoIGEgbWF0Y2hp
bmcgaWQKLSAgICAvLyBhdHRyaWJ1dGUuIElmIGEgbWF0Y2ggaXMgbm90IGZvdW5kLCB0aGUgbWV0
aG9kIHRoZW4gc2VhcmNoZXMgZm9yIGFuCi0gICAgLy8gb2JqZWN0IHdpdGggYSBtYXRjaGluZyBu
YW1lIGF0dHJpYnV0ZSwgYnV0IG9ubHkgb24gdGhvc2UgZWxlbWVudHMKLSAgICAvLyB0aGF0IGFy
ZSBhbGxvd2VkIGEgbmFtZSBhdHRyaWJ1dGUuCi0KLSAgICBpZiAobmFtZS5pc0VtcHR5KCkpCi0g
ICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgQ29udGFpbmVyTm9kZSYgcm9vdCA9IHJvb3RO
b2RlKCk7Ci0gICAgaWYgKCF1c2VzQ3VzdG9tRm9yd2FyZE9ubHlUcmF2ZXJzYWwoKSAmJiByb290
LmlzSW5UcmVlU2NvcGUoKSkgewotICAgICAgICBFbGVtZW50KiBjYW5kaWRhdGUgPSBudWxscHRy
OwotCi0gICAgICAgIFRyZWVTY29wZSYgdHJlZVNjb3BlID0gcm9vdC50cmVlU2NvcGUoKTsKLSAg
ICAgICAgaWYgKHRyZWVTY29wZS5oYXNFbGVtZW50V2l0aElkKCpuYW1lLmltcGwoKSkpIHsKLSAg
ICAgICAgICAgIGlmICghdHJlZVNjb3BlLmNvbnRhaW5zTXVsdGlwbGVFbGVtZW50c1dpdGhJZChu
YW1lKSkKLSAgICAgICAgICAgICAgICBjYW5kaWRhdGUgPSB0cmVlU2NvcGUuZ2V0RWxlbWVudEJ5
SWQobmFtZSk7Ci0gICAgICAgIH0gZWxzZSBpZiAodHJlZVNjb3BlLmhhc0VsZW1lbnRXaXRoTmFt
ZSgqbmFtZS5pbXBsKCkpKSB7Ci0gICAgICAgICAgICBpZiAoIXRyZWVTY29wZS5jb250YWluc011
bHRpcGxlRWxlbWVudHNXaXRoTmFtZShuYW1lKSkgewotICAgICAgICAgICAgICAgIGNhbmRpZGF0
ZSA9IHRyZWVTY29wZS5nZXRFbGVtZW50QnlOYW1lKG5hbWUpOwotICAgICAgICAgICAgICAgIGlm
IChjYW5kaWRhdGUgJiYgdHlwZSgpID09IERvY0FsbCAmJiAhbmFtZVNob3VsZEJlVmlzaWJsZUlu
RG9jdW1lbnRBbGwoKmNhbmRpZGF0ZSkpCi0gICAgICAgICAgICAgICAgICAgIGNhbmRpZGF0ZSA9
IG51bGxwdHI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0KLSAgICAgICAgaWYgKGNhbmRpZGF0ZSAmJiBpc01hdGNoaW5nRWxlbWVu
dCgqdGhpcywgKmNhbmRpZGF0ZSkpIHsKLSAgICAgICAgICAgIGlmIChtX3Nob3VsZE9ubHlJbmNs
dWRlRGlyZWN0Q2hpbGRyZW4gPyBjYW5kaWRhdGUtPnBhcmVudE5vZGUoKSA9PSAmcm9vdCA6IGNh
bmRpZGF0ZS0+aXNEZXNjZW5kYW50T2YoJnJvb3QpKQotICAgICAgICAgICAgICAgIHJldHVybiBj
YW5kaWRhdGU7Ci0gICAgICAgIH0KLSAgICB9Ci0KICAgICAvLyBUaGUgcGF0aG9sb2dpY2FsIGNh
c2UuIFdlIG5lZWQgdG8gd2FsayB0aGUgZW50aXJlIHN1YnRyZWUuCiAgICAgdXBkYXRlTmFtZWRF
bGVtZW50Q2FjaGUoKTsKICAgICBBU1NFUlQobV9uYW1lZEVsZW1lbnRDYWNoZSk7CkBAIC00NTYs
OSArMTU3LDkgQEAgdm9pZCBIVE1MQ29sbGVjdGlvbjo6dXBkYXRlTmFtZWRFbGVtZW50Q2FjaGUo
KSBjb25zdAogCiAgICAgYXV0byBjYWNoZSA9IHN0ZDo6bWFrZV91bmlxdWU8Q29sbGVjdGlvbk5h
bWVkRWxlbWVudENhY2hlPigpOwogCi0gICAgdW5zaWduZWQgc2l6ZSA9IG1faW5kZXhDYWNoZS5u
b2RlQ291bnQoKnRoaXMpOworICAgIHVuc2lnbmVkIHNpemUgPSBsZW5ndGgoKTsKICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7Ci0gICAgICAgIEVsZW1lbnQmIGVsZW1l
bnQgPSAqbV9pbmRleENhY2hlLm5vZGVBdCgqdGhpcywgaSk7CisgICAgICAgIEVsZW1lbnQmIGVs
ZW1lbnQgPSAqaXRlbShpKTsKICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBpZCA9IGVsZW1l
bnQuZ2V0SWRBdHRyaWJ1dGUoKTsKICAgICAgICAgaWYgKCFpZC5pc0VtcHR5KCkpCiAgICAgICAg
ICAgICBjYWNoZS0+YXBwZW5kVG9JZENhY2hlKGlkLCBlbGVtZW50KTsKQEAgLTUxMywxMCArMjE0
LDQgQEAgUGFzc1JlZlB0cjxOb2RlTGlzdD4gSFRNTENvbGxlY3Rpb246OnRhZ3MoY29uc3QgU3Ry
aW5nJiBuYW1lKQogICAgIHJldHVybiBvd25lck5vZGUoKS5nZXRFbGVtZW50c0J5VGFnTmFtZShu
YW1lKTsKIH0KIAotRWxlbWVudCogSFRNTENvbGxlY3Rpb246OmN1c3RvbUVsZW1lbnRBZnRlcihF
bGVtZW50KikgY29uc3QKLXsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4g
bnVsbHB0cjsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
Q29sbGVjdGlvbi5oCmluZGV4IDQ3MTRlOTA4ZGRiNWQ5Yjg4OWMzYjZjZTY1N2ExNDBkN2EzYzU5
ZTIuLmI0MjA2MWExMjFkZmY0MDg2NjM0NDJiYzVjMWVkZDY0NzNmNWM4OGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxDb2xsZWN0aW9uLmgKQEAgLTYwLDU3ICs2MCwzOSBAQCBwcml2YXRlOgogCiBj
bGFzcyBIVE1MQ29sbGVjdGlvbiA6IHB1YmxpYyBTY3JpcHRXcmFwcGFibGUsIHB1YmxpYyBSZWZD
b3VudGVkPEhUTUxDb2xsZWN0aW9uPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxIVE1MQ29s
bGVjdGlvbj4gY3JlYXRlKENvbnRhaW5lck5vZGUmIGJhc2UsIENvbGxlY3Rpb25UeXBlKTsKICAg
ICB2aXJ0dWFsIH5IVE1MQ29sbGVjdGlvbigpOwogCiAgICAgLy8gRE9NIEFQSQotICAgIHVuc2ln
bmVkIGxlbmd0aCgpIGNvbnN0OwotICAgIEVsZW1lbnQqIGl0ZW0odW5zaWduZWQgb2Zmc2V0KSBj
b25zdDsKLSAgICB2aXJ0dWFsIEVsZW1lbnQqIG5hbWVkSXRlbShjb25zdCBBdG9taWNTdHJpbmcm
IG5hbWUpIGNvbnN0OworICAgIHZpcnR1YWwgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgRWxlbWVudCogaXRlbSh1bnNpZ25lZCBvZmZzZXQpIGNvbnN0ID0gMDsKKyAg
ICB2aXJ0dWFsIEVsZW1lbnQqIG5hbWVkSXRlbShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpIGNv
bnN0ID0gMDsKICAgICBQYXNzUmVmUHRyPE5vZGVMaXN0PiB0YWdzKGNvbnN0IFN0cmluZyYpOwog
CiAgICAgLy8gTm9uLURPTSBBUEkKICAgICBib29sIGhhc05hbWVkSXRlbShjb25zdCBBdG9taWNT
dHJpbmcmIG5hbWUpIGNvbnN0OwogICAgIFZlY3RvcjxSZWY8RWxlbWVudD4+IG5hbWVkSXRlbXMo
Y29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKSBjb25zdDsKLSAgICBzaXplX3QgbWVtb3J5Q29zdCgp
IGNvbnN0OworICAgIHZpcnR1YWwgc2l6ZV90IG1lbW9yeUNvc3QoKSBjb25zdDsKIAogICAgIGJv
b2wgaXNSb290ZWRBdERvY3VtZW50KCkgY29uc3Q7CiAgICAgTm9kZUxpc3RJbnZhbGlkYXRpb25U
eXBlIGludmFsaWRhdGlvblR5cGUoKSBjb25zdDsKICAgICBDb2xsZWN0aW9uVHlwZSB0eXBlKCkg
Y29uc3Q7CiAgICAgQ29udGFpbmVyTm9kZSYgb3duZXJOb2RlKCkgY29uc3Q7Ci0gICAgdm9pZCBp
bnZhbGlkYXRlQ2FjaGUoY29uc3QgUXVhbGlmaWVkTmFtZSogYXR0cmlidXRlTmFtZSkgY29uc3Q7
Ci0gICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVDYWNoZShEb2N1bWVudCYpIGNvbnN0OwotCi0g
ICAgLy8gRm9yIENvbGxlY3Rpb25JbmRleENhY2hlOyBkbyBub3QgdXNlIGVsc2V3aGVyZS4KLSAg
ICBFbGVtZW50KiBjb2xsZWN0aW9uQmVnaW4oKSBjb25zdDsKLSAgICBFbGVtZW50KiBjb2xsZWN0
aW9uTGFzdCgpIGNvbnN0OwotICAgIEVsZW1lbnQqIGNvbGxlY3Rpb25FbmQoKSBjb25zdDsKLSAg
ICB2b2lkIGNvbGxlY3Rpb25UcmF2ZXJzZUZvcndhcmQoRWxlbWVudComLCB1bnNpZ25lZCBjb3Vu
dCwgdW5zaWduZWQmIHRyYXZlcnNlZENvdW50KSBjb25zdDsKLSAgICB2b2lkIGNvbGxlY3Rpb25U
cmF2ZXJzZUJhY2t3YXJkKEVsZW1lbnQqJiwgdW5zaWduZWQgY291bnQpIGNvbnN0OwotICAgIGJv
b2wgY29sbGVjdGlvbkNhblRyYXZlcnNlQmFja3dhcmQoKSBjb25zdDsKLSAgICB2b2lkIHdpbGxW
YWxpZGF0ZUluZGV4Q2FjaGUoKSBjb25zdDsKKyAgICBDb250YWluZXJOb2RlJiByb290Tm9kZSgp
IGNvbnN0OworICAgIHZvaWQgaW52YWxpZGF0ZUNhY2hlKGNvbnN0IFF1YWxpZmllZE5hbWUqIGF0
dHJpYnV0ZU5hbWUpOworICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlQ2FjaGUoRG9jdW1lbnQm
KTsKIAogICAgIGJvb2wgaGFzTmFtZWRFbGVtZW50Q2FjaGUoKSBjb25zdDsKIAogcHJvdGVjdGVk
OgotICAgIGVudW0gRWxlbWVudFRyYXZlcnNhbFR5cGUgeyBOb3JtYWxUcmF2ZXJzYWwsIEN1c3Rv
bUZvcndhcmRPbmx5VHJhdmVyc2FsIH07Ci0gICAgSFRNTENvbGxlY3Rpb24oQ29udGFpbmVyTm9k
ZSYgYmFzZSwgQ29sbGVjdGlvblR5cGUsIEVsZW1lbnRUcmF2ZXJzYWxUeXBlID0gTm9ybWFsVHJh
dmVyc2FsKTsKKyAgICBIVE1MQ29sbGVjdGlvbihDb250YWluZXJOb2RlJiBiYXNlLCBDb2xsZWN0
aW9uVHlwZSk7CiAKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlTmFtZWRFbGVtZW50Q2FjaGUoKSBj
b25zdDsKKyAgICBFbGVtZW50KiBuYW1lZEl0ZW1TbG93KGNvbnN0IEF0b21pY1N0cmluZyYgbmFt
ZSkgY29uc3Q7CiAKICAgICB2b2lkIHNldE5hbWVkSXRlbUNhY2hlKHN0ZDo6dW5pcXVlX3B0cjxD
b2xsZWN0aW9uTmFtZWRFbGVtZW50Q2FjaGU+KSBjb25zdDsKICAgICBjb25zdCBDb2xsZWN0aW9u
TmFtZWRFbGVtZW50Q2FjaGUmIG5hbWVkSXRlbUNhY2hlcygpIGNvbnN0OwogCi1wcml2YXRlOgog
ICAgIERvY3VtZW50JiBkb2N1bWVudCgpIGNvbnN0OwotICAgIENvbnRhaW5lck5vZGUmIHJvb3RO
b2RlKCkgY29uc3Q7Ci0gICAgYm9vbCB1c2VzQ3VzdG9tRm9yd2FyZE9ubHlUcmF2ZXJzYWwoKSBj
b25zdDsKLQotICAgIEVsZW1lbnQqIGl0ZXJhdGVGb3JQcmV2aW91c0VsZW1lbnQoRWxlbWVudCop
IGNvbnN0OwotICAgIEVsZW1lbnQqIGZpcnN0RWxlbWVudChDb250YWluZXJOb2RlJiByb290KSBj
b25zdDsKLSAgICBFbGVtZW50KiB0cmF2ZXJzZUZvcndhcmQoRWxlbWVudCYsIHVuc2lnbmVkIGNv
dW50LCB1bnNpZ25lZCYgdHJhdmVyc2VkQ291bnQsIENvbnRhaW5lck5vZGUmIHJvb3QpIGNvbnN0
OwotCi0gICAgdmlydHVhbCBFbGVtZW50KiBjdXN0b21FbGVtZW50QWZ0ZXIoRWxlbWVudCopIGNv
bnN0OwogCiAgICAgdm9pZCBpbnZhbGlkYXRlTmFtZWRFbGVtZW50Q2FjaGUoRG9jdW1lbnQmKSBj
b25zdDsKIApAQCAtMTE5LDE2ICsxMDEsMjEgQEAgcHJpdmF0ZToKIAogICAgIFJlZjxDb250YWlu
ZXJOb2RlPiBtX293bmVyTm9kZTsKIAotICAgIG11dGFibGUgQ29sbGVjdGlvbkluZGV4Q2FjaGU8
SFRNTENvbGxlY3Rpb24sIEVsZW1lbnQqPiBtX2luZGV4Q2FjaGU7CiAgICAgbXV0YWJsZSBzdGQ6
OnVuaXF1ZV9wdHI8Q29sbGVjdGlvbk5hbWVkRWxlbWVudENhY2hlPiBtX25hbWVkRWxlbWVudENh
Y2hlOwogCiAgICAgY29uc3QgdW5zaWduZWQgbV9jb2xsZWN0aW9uVHlwZSA6IDU7CiAgICAgY29u
c3QgdW5zaWduZWQgbV9pbnZhbGlkYXRpb25UeXBlIDogNDsKICAgICBjb25zdCB1bnNpZ25lZCBt
X3Jvb3RUeXBlIDogMTsKLSAgICBjb25zdCB1bnNpZ25lZCBtX3Nob3VsZE9ubHlJbmNsdWRlRGly
ZWN0Q2hpbGRyZW4gOiAxOwotICAgIGNvbnN0IHVuc2lnbmVkIG1fdXNlc0N1c3RvbUZvcndhcmRP
bmx5VHJhdmVyc2FsIDogMTsKIH07CiAKK2lubGluZSBDb250YWluZXJOb2RlJiBIVE1MQ29sbGVj
dGlvbjo6cm9vdE5vZGUoKSBjb25zdAoreworICAgIGlmIChpc1Jvb3RlZEF0RG9jdW1lbnQoKSAm
JiBvd25lck5vZGUoKS5pbkRvY3VtZW50KCkpCisgICAgICAgIHJldHVybiBvd25lck5vZGUoKS5k
b2N1bWVudCgpOworCisgICAgcmV0dXJuIG93bmVyTm9kZSgpOworfQorCiBpbmxpbmUgY29uc3Qg
VmVjdG9yPEVsZW1lbnQqPiogQ29sbGVjdGlvbk5hbWVkRWxlbWVudENhY2hlOjpmaW5kRWxlbWVu
dHNXaXRoSWQoY29uc3QgQXRvbWljU3RyaW5nJiBpZCkgY29uc3QKIHsKICAgICByZXR1cm4gZmlu
ZChtX2lkTWFwLCBpZCk7CkBAIC0xNzcsNyArMTY0LDcgQEAgaW5saW5lIHZvaWQgQ29sbGVjdGlv
bk5hbWVkRWxlbWVudENhY2hlOjphcHBlbmQoU3RyaW5nVG9FbGVtZW50c01hcCYgbWFwLCBjb25z
dAogCiBpbmxpbmUgc2l6ZV90IEhUTUxDb2xsZWN0aW9uOjptZW1vcnlDb3N0KCkgY29uc3QKIHsK
LSAgICByZXR1cm4gbV9pbmRleENhY2hlLm1lbW9yeUNvc3QoKSArIChtX25hbWVkRWxlbWVudENh
Y2hlID8gbV9uYW1lZEVsZW1lbnRDYWNoZS0+bWVtb3J5Q29zdCgpIDogMCk7CisgICAgcmV0dXJu
IG1fbmFtZWRFbGVtZW50Q2FjaGUgPyBtX25hbWVkRWxlbWVudENhY2hlLT5tZW1vcnlDb3N0KCkg
OiAwOwogfQogCiBpbmxpbmUgYm9vbCBIVE1MQ29sbGVjdGlvbjo6aXNSb290ZWRBdERvY3VtZW50
KCkgY29uc3QKQEAgLTIwNSw3ICsxOTIsNyBAQCBpbmxpbmUgRG9jdW1lbnQmIEhUTUxDb2xsZWN0
aW9uOjpkb2N1bWVudCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fb3duZXJOb2RlLT5kb2N1bWVudCgp
OwogfQogCi1pbmxpbmUgdm9pZCBIVE1MQ29sbGVjdGlvbjo6aW52YWxpZGF0ZUNhY2hlKGNvbnN0
IFF1YWxpZmllZE5hbWUqIGF0dHJpYnV0ZU5hbWUpIGNvbnN0CitpbmxpbmUgdm9pZCBIVE1MQ29s
bGVjdGlvbjo6aW52YWxpZGF0ZUNhY2hlKGNvbnN0IFF1YWxpZmllZE5hbWUqIGF0dHJpYnV0ZU5h
bWUpCiB7CiAgICAgaWYgKCFhdHRyaWJ1dGVOYW1lIHx8IHNob3VsZEludmFsaWRhdGVUeXBlT25B
dHRyaWJ1dGVDaGFuZ2UoaW52YWxpZGF0aW9uVHlwZSgpLCAqYXR0cmlidXRlTmFtZSkpCiAgICAg
ICAgIGludmFsaWRhdGVDYWNoZShkb2N1bWVudCgpKTsKQEAgLTIxMywyMSArMjAwLDYgQEAgaW5s
aW5lIHZvaWQgSFRNTENvbGxlY3Rpb246OmludmFsaWRhdGVDYWNoZShjb25zdCBRdWFsaWZpZWRO
YW1lKiBhdHRyaWJ1dGVOYW1lKQogICAgICAgICBpbnZhbGlkYXRlTmFtZWRFbGVtZW50Q2FjaGUo
ZG9jdW1lbnQoKSk7CiB9CiAKLWlubGluZSBFbGVtZW50KiBIVE1MQ29sbGVjdGlvbjo6Y29sbGVj
dGlvbkVuZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KLWlubGluZSBib29s
IEhUTUxDb2xsZWN0aW9uOjpjb2xsZWN0aW9uQ2FuVHJhdmVyc2VCYWNrd2FyZCgpIGNvbnN0Ci17
Ci0gICAgcmV0dXJuICFtX3VzZXNDdXN0b21Gb3J3YXJkT25seVRyYXZlcnNhbDsKLX0KLQotaW5s
aW5lIHZvaWQgSFRNTENvbGxlY3Rpb246OndpbGxWYWxpZGF0ZUluZGV4Q2FjaGUoKSBjb25zdAot
ewotICAgIGRvY3VtZW50KCkucmVnaXN0ZXJDb2xsZWN0aW9uKGNvbnN0X2Nhc3Q8SFRNTENvbGxl
Y3Rpb24mPigqdGhpcykpOwotfQotCiBpbmxpbmUgYm9vbCBIVE1MQ29sbGVjdGlvbjo6aGFzTmFt
ZWRFbGVtZW50Q2FjaGUoKSBjb25zdAogewogICAgIHJldHVybiAhIW1fbmFtZWRFbGVtZW50Q2Fj
aGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEYXRhTGlzdEVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGF0YUxpc3RFbGVtZW50LmNwcAppbmRleCBm
ZTVlNzZmYWQ1ZWQ2ZjNhY2FjZWFlZjY0YjA0NTMzMjc3NDY1ZDA2Li4yODQ2NTQ3NmRmZDQ5OTdi
MWIxYWI3MjcxMDlkNzViMzEyMjBlYjAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxEYXRhTGlzdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERh
dGFMaXN0RWxlbWVudC5jcHAKQEAgLTMzLDggKzMzLDEwIEBACiAjaWYgRU5BQkxFKERBVEFMSVNU
X0VMRU1FTlQpCiAjaW5jbHVkZSAiSFRNTERhdGFMaXN0RWxlbWVudC5oIgogCisjaW5jbHVkZSAi
R2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAj
aW5jbHVkZSAiSWRUYXJnZXRPYnNlcnZlclJlZ2lzdHJ5LmgiCisjaW5jbHVkZSAiTm9kZVJhcmVE
YXRhLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTAsNyArNTIsNyBAQCBSZWY8SFRN
TERhdGFMaXN0RWxlbWVudD4gSFRNTERhdGFMaXN0RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIHRhZ05hbQogCiBSZWY8SFRNTENvbGxlY3Rpb24+IEhUTUxEYXRhTGlzdEVsZW1l
bnQ6Om9wdGlvbnMoKQogewotICAgIHJldHVybiBlbnN1cmVDYWNoZWRIVE1MQ29sbGVjdGlvbihE
YXRhTGlzdE9wdGlvbnMpOworICAgIHJldHVybiBlbnN1cmVSYXJlRGF0YSgpLmVuc3VyZU5vZGVM
aXN0cygpLmFkZENhY2hlZENvbGxlY3Rpb248R2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uPENv
bGxlY3Rpb25UeXBlVHJhaXRzPERhdGFMaXN0T3B0aW9ucz46OnRyYXZlcnNhbFR5cGU+PigqdGhp
cywgRGF0YUxpc3RPcHRpb25zKTsKIH0KIAogdm9pZCBIVE1MRGF0YUxpc3RFbGVtZW50OjpvcHRp
b25FbGVtZW50Q2hpbGRyZW5DaGFuZ2VkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGaWVs
ZFNldEVsZW1lbnQuY3BwCmluZGV4IGFjMzMyZTg3MDIyNjE4YzJlNDkzYjY5NzdiMDgzZDU1YWI4
NmFkN2QuLjQwMGEwYmFlMGVkOTRmZTA1M2ZkNjM1NzFiNDBhYWM5OGZiYWM4ZGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmNwcApAQCAtMjYsMTAgKzI2LDEx
IEBACiAjaW5jbHVkZSAiSFRNTEZpZWxkU2V0RWxlbWVudC5oIgogCiAjaW5jbHVkZSAiRWxlbWVu
dEl0ZXJhdG9yLmgiCi0jaW5jbHVkZSAiSFRNTENvbGxlY3Rpb24uaCIKKyNpbmNsdWRlICJIVE1M
Rm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxMZWdlbmRFbGVtZW50Lmgi
CiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSFRNTE9iamVjdEVsZW1lbnQuaCIK
KyNpbmNsdWRlICJOb2RlUmFyZURhdGEuaCIKICNpbmNsdWRlICJSZW5kZXJGaWVsZHNldC5oIgog
I2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIApAQCAtMTYxLDcgKzE2Miw3IEBAIEhUTUxM
ZWdlbmRFbGVtZW50KiBIVE1MRmllbGRTZXRFbGVtZW50OjpsZWdlbmQoKSBjb25zdAogCiBSZWY8
SFRNTENvbGxlY3Rpb24+IEhUTUxGaWVsZFNldEVsZW1lbnQ6OmVsZW1lbnRzKCkKIHsKLSAgICBy
ZXR1cm4gZW5zdXJlQ2FjaGVkSFRNTENvbGxlY3Rpb24oRm9ybUNvbnRyb2xzKTsKKyAgICByZXR1
cm4gZW5zdXJlUmFyZURhdGEoKS5lbnN1cmVOb2RlTGlzdHMoKS5hZGRDYWNoZWRDb2xsZWN0aW9u
PEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uPigqdGhpcywgRm9ybUNvbnRyb2xzKTsKIH0KIAog
dm9pZCBIVE1MRmllbGRTZXRFbGVtZW50OjpyZWZyZXNoRWxlbWVudHNJZk5lZWRlZCgpIGNvbnN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24u
Y3BwCmluZGV4IDBkZWVjYzI0ZWNkOWI1YzM3YjBhYzA5YzMxNzUyNzM0MmI3MTFkODQuLjMwMjUw
YmIyNjRiNDk4Zjg4ODgyMWUwNzg5MThmZWQ3NmQ4MzNlOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uY3BwCkBAIC0zNiw3ICszNiw3
IEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAvLyBjYWxjdWxhdGlvbiBldmVyeSB0aW1l
IGlmIGFueXRoaW5nIGhhcyBjaGFuZ2VkLgogCiBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6
SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24oQ29udGFpbmVyTm9kZSYgb3duZXJOb2RlKQotICAg
IDogSFRNTENvbGxlY3Rpb24ob3duZXJOb2RlLCBGb3JtQ29udHJvbHMsIEN1c3RvbUZvcndhcmRP
bmx5VHJhdmVyc2FsKQorICAgIDogQ2FjaGVkSFRNTENvbGxlY3Rpb248SFRNTEZvcm1Db250cm9s
c0NvbGxlY3Rpb24sIENvbGxlY3Rpb25UeXBlVHJhaXRzPEZvcm1Db250cm9scz46OnRyYXZlcnNh
bFR5cGU+KG93bmVyTm9kZSwgRm9ybUNvbnRyb2xzKQogICAgICwgbV9jYWNoZWRFbGVtZW50KG51
bGxwdHIpCiAgICAgLCBtX2NhY2hlZEVsZW1lbnRPZmZzZXRJbkFycmF5KDApCiB7CkBAIC0xNzcs
OSArMTc3LDkgQEAgdm9pZCBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6dXBkYXRlTmFtZWRF
bGVtZW50Q2FjaGUoKSBjb25zdAogICAgIHNldE5hbWVkSXRlbUNhY2hlKFdURjo6bW92ZShjYWNo
ZSkpOwogfQogCi12b2lkIEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uOjppbnZhbGlkYXRlQ2Fj
aGUoRG9jdW1lbnQmIGRvY3VtZW50KSBjb25zdAordm9pZCBIVE1MRm9ybUNvbnRyb2xzQ29sbGVj
dGlvbjo6aW52YWxpZGF0ZUNhY2hlKERvY3VtZW50JiBkb2N1bWVudCkKIHsKLSAgICBIVE1MQ29s
bGVjdGlvbjo6aW52YWxpZGF0ZUNhY2hlKGRvY3VtZW50KTsKKyAgICBDYWNoZWRIVE1MQ29sbGVj
dGlvbjxIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbiwgQ29sbGVjdGlvblR5cGVUcmFpdHM8Rm9y
bUNvbnRyb2xzPjo6dHJhdmVyc2FsVHlwZT46OmludmFsaWRhdGVDYWNoZShkb2N1bWVudCk7CiAg
ICAgbV9jYWNoZWRFbGVtZW50ID0gbnVsbHB0cjsKICAgICBtX2NhY2hlZEVsZW1lbnRPZmZzZXRJ
bkFycmF5ID0gMDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1D
b250cm9sc0NvbGxlY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9s
c0NvbGxlY3Rpb24uaAppbmRleCBiMTY4YWQ5YzA2MDU0NDhhOTk0OWQ0YThlMTVlNDQ2NWQ3ODVi
YjczLi5jMGQ1MjBmNmFmMjFkYWU0YmQyMWRmYjEyMjAwNzg3MThkNTQ0MmFlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5oCkBAIC0yMyw3
ICsyMyw3IEBACiAjaWZuZGVmIEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uX2gKICNkZWZpbmUg
SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb25faAogCi0jaW5jbHVkZSAiSFRNTENvbGxlY3Rpb24u
aCIKKyNpbmNsdWRlICJDYWNoZWRIVE1MQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxFbGVt
ZW50LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM0LDIxICszNCwyMyBAQCBjbGFzcyBI
VE1MSW1hZ2VFbGVtZW50OwogLy8gVGhpcyBjbGFzcyBpcyBqdXN0IGEgYmlnIGhhY2sgdG8gZmlu
ZCBmb3JtIGVsZW1lbnRzIGV2ZW4gaW4gbWFsZm9ybWVkIEhUTUwgZWxlbWVudHMuCiAvLyBUaGUg
ZmFtb3VzIDx0YWJsZT48dHI+PGZvcm0+PHRkPiBwcm9ibGVtLgogCi1jbGFzcyBIVE1MRm9ybUNv
bnRyb2xzQ29sbGVjdGlvbiBmaW5hbCA6IHB1YmxpYyBIVE1MQ29sbGVjdGlvbiB7CitjbGFzcyBI
VE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbiBmaW5hbCA6IHB1YmxpYyBDYWNoZWRIVE1MQ29sbGVj
dGlvbjxIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbiwgQ29sbGVjdGlvblR5cGVUcmFpdHM8Rm9y
bUNvbnRyb2xzPjo6dHJhdmVyc2FsVHlwZT4gewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8SFRN
TEZvcm1Db250cm9sc0NvbGxlY3Rpb24+IGNyZWF0ZShDb250YWluZXJOb2RlJiwgQ29sbGVjdGlv
blR5cGUpOwogICAgIHZpcnR1YWwgfkhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uKCk7CiAKKyAg
ICAvLyBGb3IgQ2FjaGVkSFRNTENvbGxlY3Rpb24uCisgICAgRWxlbWVudCogY3VzdG9tRWxlbWVu
dEFmdGVyKEVsZW1lbnQqKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBleHBsaWNpdCBIVE1MRm9y
bUNvbnRyb2xzQ29sbGVjdGlvbihDb250YWluZXJOb2RlJik7CiAKICAgICB2aXJ0dWFsIEhUTUxF
bGVtZW50KiBuYW1lZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKSBjb25zdCBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZUNhY2hlKERvY3VtZW50JikgY29uc3Qgb3Zl
cnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVDYWNoZShEb2N1bWVudCYpIG92ZXJy
aWRlOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVOYW1lZEVsZW1lbnRDYWNoZSgpIGNvbnN0IG92
ZXJyaWRlOwogCiAgICAgY29uc3QgVmVjdG9yPEZvcm1Bc3NvY2lhdGVkRWxlbWVudCo+JiBmb3Jt
Q29udHJvbEVsZW1lbnRzKCkgY29uc3Q7CiAgICAgY29uc3QgVmVjdG9yPEhUTUxJbWFnZUVsZW1l
bnQqPiYgZm9ybUltYWdlRWxlbWVudHMoKSBjb25zdDsKLSAgICB2aXJ0dWFsIEVsZW1lbnQqIGN1
c3RvbUVsZW1lbnRBZnRlcihFbGVtZW50KikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBtdXRhYmxl
IEVsZW1lbnQqIG1fY2FjaGVkRWxlbWVudDsKICAgICBtdXRhYmxlIHVuc2lnbmVkIG1fY2FjaGVk
RWxlbWVudE9mZnNldEluQXJyYXk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxGb3JtRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5j
cHAKaW5kZXggNWZmYTNhOGE3MTk5Nzg3ZjdkZjdkZjFmODA5YTY4YWU2NDNkMDFlZC4uMDU0Mjc5
ZmYxZWY1YThjM2IxODBhNGI4MGQyMGZiYzllYmZhZTE4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEZvcm1FbGVtZW50LmNwcApAQCAtMzcsMTEgKzM3LDEyIEBACiAjaW5jbHVkZSAiRnJhbWUu
aCIKICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50
LmgiCi0jaW5jbHVkZSAiSFRNTENvbGxlY3Rpb24uaCIKKyNpbmNsdWRlICJIVE1MRm9ybUNvbnRy
b2xzQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxJbWFnZUVsZW1lbnQuaCIKICNpbmNsdWRl
ICJIVE1MSW5wdXRFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAi
SFRNTFRhYmxlRWxlbWVudC5oIgorI2luY2x1ZGUgIk5vZGVSYXJlRGF0YS5oIgogI2luY2x1ZGUg
IlBhZ2UuaCIKICNpbmNsdWRlICJSZW5kZXJUZXh0Q29udHJvbC5oIgogI2luY2x1ZGUgIlNjcmlw
dENvbnRyb2xsZXIuaCIKQEAgLTYzOCw3ICs2MzksNyBAQCB2b2lkIEhUTUxGb3JtRWxlbWVudDo6
cmVtb3ZlSW1nRWxlbWVudChIVE1MSW1hZ2VFbGVtZW50KiBlKQogCiBSZWY8SFRNTENvbGxlY3Rp
b24+IEhUTUxGb3JtRWxlbWVudDo6ZWxlbWVudHMoKQogewotICAgIHJldHVybiBlbnN1cmVDYWNo
ZWRIVE1MQ29sbGVjdGlvbihGb3JtQ29udHJvbHMpOworICAgIHJldHVybiBlbnN1cmVSYXJlRGF0
YSgpLmVuc3VyZU5vZGVMaXN0cygpLmFkZENhY2hlZENvbGxlY3Rpb248SFRNTEZvcm1Db250cm9s
c0NvbGxlY3Rpb24+KCp0aGlzLCBGb3JtQ29udHJvbHMpOwogfQogCiBTdHJpbmcgSFRNTEZvcm1F
bGVtZW50OjpuYW1lKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1hcEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWFwRWxlbWVudC5jcHAK
aW5kZXggYTNjOWMzMzkyM2E3MGZjOGViOTZkM2UzMGRhMGM0M2JlN2FhMDIwYi4uM2VlNjFiYWEw
MDFlMjM0YTRiMzNmN2QxNThiYzY4Njk5MmM0NmNmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWFwRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWFwRWxlbWVudC5jcHAKQEAgLTI1LDExICsyNSwxMiBAQAogI2luY2x1ZGUgIkF0dHJpYnV0ZS5o
IgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRWxlbWVudEl0ZXJhdG9yLmgiCisj
aW5jbHVkZSAiR2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiSFRNTEFy
ZWFFbGVtZW50LmgiCi0jaW5jbHVkZSAiSFRNTENvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJIVE1M
SW1hZ2VFbGVtZW50LmgiCiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgogI2luY2x1ZGUgIklu
dFNpemUuaCIKKyNpbmNsdWRlICJOb2RlUmFyZURhdGEuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCkBAIC0xMTIsNyArMTEzLDcgQEAgdm9pZCBIVE1MTWFwRWxlbWVudDo6cGFyc2VBdHRyaWJ1
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW4KIAogUmVmPEhU
TUxDb2xsZWN0aW9uPiBIVE1MTWFwRWxlbWVudDo6YXJlYXMoKQogewotICAgIHJldHVybiBlbnN1
cmVDYWNoZWRIVE1MQ29sbGVjdGlvbihNYXBBcmVhcyk7CisgICAgcmV0dXJuIGVuc3VyZVJhcmVE
YXRhKCkuZW5zdXJlTm9kZUxpc3RzKCkuYWRkQ2FjaGVkQ29sbGVjdGlvbjxHZW5lcmljQ2FjaGVk
SFRNTENvbGxlY3Rpb248Q29sbGVjdGlvblR5cGVUcmFpdHM8TWFwQXJlYXM+Ojp0cmF2ZXJzYWxU
eXBlPj4oKnRoaXMsIE1hcEFyZWFzKTsKIH0KIAogTm9kZTo6SW5zZXJ0aW9uTm90aWZpY2F0aW9u
UmVxdWVzdCBIVE1MTWFwRWxlbWVudDo6aW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUmIGluc2Vy
dGlvblBvaW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTmFtZUNvbGxl
Y3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTmFtZUNvbGxlY3Rpb24uY3BwCmlu
ZGV4IDM3ZjU4YzE0ZTFjZGM1ZDYxYzIzNTUyYWZlNjE2NjgwZTlmZjk4NTMuLjMyOTc0OWJiYjBk
MzBmOTBjNzQ1ODc0ZDAxNWEzNzQ1NTIzMzM1ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE5hbWVDb2xsZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxOYW1lQ29sbGVjdGlvbi5jcHAKQEAgLTM2LDE5ICszNiw2IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAotSFRNTE5hbWVDb2xsZWN0aW9uOjpI
VE1MTmFtZUNvbGxlY3Rpb24oRG9jdW1lbnQmIGRvY3VtZW50LCBDb2xsZWN0aW9uVHlwZSB0eXBl
LCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpCi0gICAgOiBIVE1MQ29sbGVjdGlvbihkb2N1bWVu
dCwgdHlwZSkKLSAgICAsIG1fbmFtZShuYW1lKQotewotfQotCi1IVE1MTmFtZUNvbGxlY3Rpb246
On5IVE1MTmFtZUNvbGxlY3Rpb24oKQotewotICAgIEFTU0VSVCh0eXBlKCkgPT0gV2luZG93TmFt
ZWRJdGVtcyB8fCB0eXBlKCkgPT0gRG9jdW1lbnROYW1lZEl0ZW1zKTsKLQotICAgIGRvY3VtZW50
KCkubm9kZUxpc3RzKCktPnJlbW92ZUNhY2hlZENvbGxlY3Rpb24odGhpcywgbV9uYW1lKTsKLX0K
LQogYm9vbCBXaW5kb3dOYW1lQ29sbGVjdGlvbjo6ZWxlbWVudE1hdGNoZXNJZk5hbWVBdHRyaWJ1
dGVNYXRjaChjb25zdCBFbGVtZW50JiBlbGVtZW50KQogewogICAgIHJldHVybiBpczxIVE1MSW1h
Z2VFbGVtZW50PihlbGVtZW50KSB8fCBpczxIVE1MRm9ybUVsZW1lbnQ+KGVsZW1lbnQpIHx8IGlz
PEhUTUxBcHBsZXRFbGVtZW50PihlbGVtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTmFtZUNvbGxlY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE5hbWVD
b2xsZWN0aW9uLmgKaW5kZXggMzIwNzQzZDVhYTljZmJiODIxODQ1NThkODIwMTc4OThjMDhmNzcz
Ny4uNjA0NjZjODViYmQ5MzJmMTMzOWQyODc4MjY5ZDgzZjQ0MDI0ZmI4YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTmFtZUNvbGxlY3Rpb24uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxOYW1lQ29sbGVjdGlvbi5oCkBAIC0yMywxOCArMjMsMjAgQEAKICNpZm5k
ZWYgSFRNTE5hbWVDb2xsZWN0aW9uX2gKICNkZWZpbmUgSFRNTE5hbWVDb2xsZWN0aW9uX2gKIAot
I2luY2x1ZGUgIkhUTUxDb2xsZWN0aW9uLmgiCisjaW5jbHVkZSAiQ2FjaGVkSFRNTENvbGxlY3Rp
b24uaCIKKyNpbmNsdWRlICJOb2RlUmFyZURhdGEuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9t
aWNTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBEb2N1bWVudDsKIAot
Y2xhc3MgSFRNTE5hbWVDb2xsZWN0aW9uIDogcHVibGljIEhUTUxDb2xsZWN0aW9uIHsKK3RlbXBs
YXRlIDx0eXBlbmFtZSBIVE1MQ29sbGVjdGlvbkNsYXNzLCBDb2xsZWN0aW9uVHJhdmVyc2FsVHlw
ZSB0cmF2ZXJzYWxUeXBlPgorY2xhc3MgSFRNTE5hbWVDb2xsZWN0aW9uIDogcHVibGljIENhY2hl
ZEhUTUxDb2xsZWN0aW9uPEhUTUxDb2xsZWN0aW9uQ2xhc3MsIHRyYXZlcnNhbFR5cGU+IHsKIHB1
YmxpYzoKICAgICB2aXJ0dWFsIH5IVE1MTmFtZUNvbGxlY3Rpb24oKTsKIAotICAgIERvY3VtZW50
JiBkb2N1bWVudCgpIHsgcmV0dXJuIGRvd25jYXN0PERvY3VtZW50Pihvd25lck5vZGUoKSk7IH0K
KyAgICBEb2N1bWVudCYgZG9jdW1lbnQoKSB7IHJldHVybiBkb3duY2FzdDxEb2N1bWVudD4odGhp
cy0+b3duZXJOb2RlKCkpOyB9CiAKIHByb3RlY3RlZDoKICAgICBIVE1MTmFtZUNvbGxlY3Rpb24o
RG9jdW1lbnQmLCBDb2xsZWN0aW9uVHlwZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKTsKQEAg
LTQyLDEzICs0NCwyOSBAQCBwcm90ZWN0ZWQ6CiAgICAgQXRvbWljU3RyaW5nIG1fbmFtZTsKIH07
CiAKLWNsYXNzIFdpbmRvd05hbWVDb2xsZWN0aW9uIGZpbmFsIDogcHVibGljIEhUTUxOYW1lQ29s
bGVjdGlvbiB7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgSFRNTENvbGxlY3Rpb25DbGFzcywgQ29sbGVj
dGlvblRyYXZlcnNhbFR5cGUgdHJhdmVyc2FsVHlwZT4KK0hUTUxOYW1lQ29sbGVjdGlvbjxIVE1M
Q29sbGVjdGlvbkNsYXNzLCB0cmF2ZXJzYWxUeXBlPjo6SFRNTE5hbWVDb2xsZWN0aW9uKERvY3Vt
ZW50JiBkb2N1bWVudCwgQ29sbGVjdGlvblR5cGUgdHlwZSwgY29uc3QgQXRvbWljU3RyaW5nJiBu
YW1lKQorICAgIDogQ2FjaGVkSFRNTENvbGxlY3Rpb248SFRNTENvbGxlY3Rpb25DbGFzcywgdHJh
dmVyc2FsVHlwZT4oZG9jdW1lbnQsIHR5cGUpCisgICAgLCBtX25hbWUobmFtZSkKK3sKK30KKwor
dGVtcGxhdGUgPHR5cGVuYW1lIEhUTUxDb2xsZWN0aW9uQ2xhc3MsIENvbGxlY3Rpb25UcmF2ZXJz
YWxUeXBlIHRyYXZlcnNhbFR5cGU+CitIVE1MTmFtZUNvbGxlY3Rpb248SFRNTENvbGxlY3Rpb25D
bGFzcywgdHJhdmVyc2FsVHlwZT46On5IVE1MTmFtZUNvbGxlY3Rpb24oKQoreworICAgIEFTU0VS
VCh0aGlzLT50eXBlKCkgPT0gV2luZG93TmFtZWRJdGVtcyB8fCB0aGlzLT50eXBlKCkgPT0gRG9j
dW1lbnROYW1lZEl0ZW1zKTsKKworICAgIGRvY3VtZW50KCkubm9kZUxpc3RzKCktPnJlbW92ZUNh
Y2hlZENvbGxlY3Rpb24odGhpcywgbV9uYW1lKTsKK30KKworY2xhc3MgV2luZG93TmFtZUNvbGxl
Y3Rpb24gZmluYWwgOiBwdWJsaWMgSFRNTE5hbWVDb2xsZWN0aW9uPFdpbmRvd05hbWVDb2xsZWN0
aW9uLCBDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6RGVzY2VuZGFudHM+IHsKIHB1YmxpYzoKICAg
ICBzdGF0aWMgUmVmPFdpbmRvd05hbWVDb2xsZWN0aW9uPiBjcmVhdGUoRG9jdW1lbnQmIGRvY3Vt
ZW50LCBDb2xsZWN0aW9uVHlwZSB0eXBlLCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpCiAgICAg
ewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXaW5kb3dOYW1lQ29sbGVjdGlvbihkb2N1
bWVudCwgdHlwZSwgbmFtZSkpOwogICAgIH0KIAorICAgIC8vIEZvciBDYWNoZWRIVE1MQ29sbGVj
dGlvbi4KICAgICBib29sIGVsZW1lbnRNYXRjaGVzKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpIGNv
bnN0IHsgcmV0dXJuIGVsZW1lbnRNYXRjaGVzKGVsZW1lbnQsIG1fbmFtZS5pbXBsKCkpOyB9CiAK
ICAgICBzdGF0aWMgYm9vbCBlbGVtZW50TWF0Y2hlc0lmSWRBdHRyaWJ1dGVNYXRjaChjb25zdCBF
bGVtZW50JikgeyByZXR1cm4gdHJ1ZTsgfQpAQCAtNTcsMTMgKzc1LDEzIEBAIHB1YmxpYzoKIAog
cHJpdmF0ZToKICAgICBXaW5kb3dOYW1lQ29sbGVjdGlvbihEb2N1bWVudCYgZG9jdW1lbnQsIENv
bGxlY3Rpb25UeXBlIHR5cGUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkKLSAgICAgICAgOiBI
VE1MTmFtZUNvbGxlY3Rpb24oZG9jdW1lbnQsIHR5cGUsIG5hbWUpCisgICAgICAgIDogSFRNTE5h
bWVDb2xsZWN0aW9uPFdpbmRvd05hbWVDb2xsZWN0aW9uLCBDb2xsZWN0aW9uVHJhdmVyc2FsVHlw
ZTo6RGVzY2VuZGFudHM+KGRvY3VtZW50LCB0eXBlLCBuYW1lKQogICAgIHsKICAgICAgICAgQVNT
RVJUKHR5cGUgPT0gV2luZG93TmFtZWRJdGVtcyk7CiAgICAgfQogfTsKIAotY2xhc3MgRG9jdW1l
bnROYW1lQ29sbGVjdGlvbiBmaW5hbCA6IHB1YmxpYyBIVE1MTmFtZUNvbGxlY3Rpb24geworY2xh
c3MgRG9jdW1lbnROYW1lQ29sbGVjdGlvbiBmaW5hbCA6IHB1YmxpYyBIVE1MTmFtZUNvbGxlY3Rp
b248RG9jdW1lbnROYW1lQ29sbGVjdGlvbiwgQ29sbGVjdGlvblRyYXZlcnNhbFR5cGU6OkRlc2Nl
bmRhbnRzPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxEb2N1bWVudE5hbWVDb2xsZWN0aW9u
PiBjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBDb2xsZWN0aW9uVHlwZSB0eXBlLCBjb25zdCBB
dG9taWNTdHJpbmcmIG5hbWUpCiAgICAgewpAQCAtNzIsMTMgKzkwLDE1IEBAIHB1YmxpYzoKIAog
ICAgIHN0YXRpYyBib29sIGVsZW1lbnRNYXRjaGVzSWZJZEF0dHJpYnV0ZU1hdGNoKGNvbnN0IEVs
ZW1lbnQmKTsKICAgICBzdGF0aWMgYm9vbCBlbGVtZW50TWF0Y2hlc0lmTmFtZUF0dHJpYnV0ZU1h
dGNoKGNvbnN0IEVsZW1lbnQmKTsKKworICAgIC8vIEZvciBDYWNoZWRIVE1MQ29sbGVjdGlvbi4K
ICAgICBib29sIGVsZW1lbnRNYXRjaGVzKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpIGNvbnN0IHsg
cmV0dXJuIGVsZW1lbnRNYXRjaGVzKGVsZW1lbnQsIG1fbmFtZS5pbXBsKCkpOyB9CiAKICAgICBz
dGF0aWMgYm9vbCBlbGVtZW50TWF0Y2hlcyhjb25zdCBFbGVtZW50JiwgY29uc3QgQXRvbWljU3Ry
aW5nSW1wbCopOwogCiBwcml2YXRlOgogICAgIERvY3VtZW50TmFtZUNvbGxlY3Rpb24oRG9jdW1l
bnQmIGRvY3VtZW50LCBDb2xsZWN0aW9uVHlwZSB0eXBlLCBjb25zdCBBdG9taWNTdHJpbmcmIG5h
bWUpCi0gICAgICAgIDogSFRNTE5hbWVDb2xsZWN0aW9uKGRvY3VtZW50LCB0eXBlLCBuYW1lKQor
ICAgICAgICA6IEhUTUxOYW1lQ29sbGVjdGlvbjxEb2N1bWVudE5hbWVDb2xsZWN0aW9uLCBDb2xs
ZWN0aW9uVHJhdmVyc2FsVHlwZTo6RGVzY2VuZGFudHM+KGRvY3VtZW50LCB0eXBlLCBuYW1lKQog
ICAgIHsKICAgICAgICAgQVNTRVJUKHR5cGUgPT0gRG9jdW1lbnROYW1lZEl0ZW1zKTsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25zQ29sbGVjdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25zQ29sbGVjdGlvbi5jcHAKaW5kZXgg
MTUwOGI0MTVjNDJkYWViMTA4MDFjZDg5YzI5MTQ2ZDc3MDkzMTJlOS4uZDlhZGEwNmIzNWEwOGY5
NDYwMGYwMTE4NTQxYWNjMzZhYzIxYzRiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MT3B0aW9uc0NvbGxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE9wdGlvbnNDb2xsZWN0aW9uLmNwcApAQCAtMjcsNyArMjcsNyBAQAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBIVE1MT3B0aW9uc0NvbGxlY3Rpb246OkhUTUxPcHRpb25zQ29sbGVjdGlvbihIVE1M
U2VsZWN0RWxlbWVudCYgc2VsZWN0KQotICAgIDogSFRNTENvbGxlY3Rpb24oc2VsZWN0LCBTZWxl
Y3RPcHRpb25zKQorICAgIDogQ2FjaGVkSFRNTENvbGxlY3Rpb248SFRNTE9wdGlvbnNDb2xsZWN0
aW9uLCBDb2xsZWN0aW9uVHlwZVRyYWl0czxTZWxlY3RPcHRpb25zPjo6dHJhdmVyc2FsVHlwZT4o
c2VsZWN0LCBTZWxlY3RPcHRpb25zKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxPcHRpb25zQ29sbGVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
T3B0aW9uc0NvbGxlY3Rpb24uaAppbmRleCA2MzY2ODY1ZTU1YzFjM2E2Nzc5NDE1MzllMzM3MTEx
ZDNhZjM5ZTE2Li5jNWZkMTdiZjcyNjdmMjViNzQ1ZDQwNDgzMGY4Nzg1YjRiZDFiYmZjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25zQ29sbGVjdGlvbi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmgKQEAgLTI0LDcgKzI0
LDcgQEAKICNpZm5kZWYgSFRNTE9wdGlvbnNDb2xsZWN0aW9uX2gKICNkZWZpbmUgSFRNTE9wdGlv
bnNDb2xsZWN0aW9uX2gKIAotI2luY2x1ZGUgIkhUTUxDb2xsZWN0aW9uLmgiCisjaW5jbHVkZSAi
Q2FjaGVkSFRNTENvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJIVE1MU2VsZWN0RWxlbWVudC5oIgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zMyw3ICszMyw3IEBAIGNsYXNzIEhUTUxPcHRpb25F
bGVtZW50OwogCiB0eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOwogCi1jbGFzcyBIVE1MT3B0aW9u
c0NvbGxlY3Rpb24gZmluYWwgOiBwdWJsaWMgSFRNTENvbGxlY3Rpb24geworY2xhc3MgSFRNTE9w
dGlvbnNDb2xsZWN0aW9uIGZpbmFsIDogcHVibGljIENhY2hlZEhUTUxDb2xsZWN0aW9uPEhUTUxP
cHRpb25zQ29sbGVjdGlvbiwgQ29sbGVjdGlvblR5cGVUcmFpdHM8U2VsZWN0T3B0aW9ucz46OnRy
YXZlcnNhbFR5cGU+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPEhUTUxPcHRpb25zQ29sbGVj
dGlvbj4gY3JlYXRlKEhUTUxTZWxlY3RFbGVtZW50JiwgQ29sbGVjdGlvblR5cGUpOwogCkBAIC01
MCwxMCArNTAsMTggQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRMZW5ndGgodW5zaWduZWQsIEV4
Y2VwdGlvbkNvZGUmKTsKIAorICAgIC8vIEZvciBDYWNoZWRIVE1MQ29sbGVjdGlvbi4KKyAgICBi
b29sIGVsZW1lbnRNYXRjaGVzKEVsZW1lbnQmKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBleHBs
aWNpdCBIVE1MT3B0aW9uc0NvbGxlY3Rpb24oSFRNTFNlbGVjdEVsZW1lbnQmKTsKIH07CiAKK2lu
bGluZSBib29sIEhUTUxPcHRpb25zQ29sbGVjdGlvbjo6ZWxlbWVudE1hdGNoZXMoRWxlbWVudCYg
ZWxlbWVudCkgY29uc3QKK3sKKyAgICByZXR1cm4gZWxlbWVudC5oYXNUYWdOYW1lKEhUTUxOYW1l
czo6b3B0aW9uVGFnKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiBTUEVDSUFMSVpF
X1RZUEVfVFJBSVRTX0hUTUxDT0xMRUNUSU9OKEhUTUxPcHRpb25zQ29sbGVjdGlvbiwgU2VsZWN0
T3B0aW9ucykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHAKaW5kZXgg
ZDUwNWYzZjEwYTBjNDg1MjQ0NThiOTQ1NGQ0ZWViZDRjOTU3ZDc3MC4uYzhiNDI2MzIzMzk3MDQ2
ZDhiNGUzOTEyYmVmN2Y0Mzk5ZTUwM2M4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MU2VsZWN0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2Vs
ZWN0RWxlbWVudC5jcHAKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJGb3JtQ29udHJvbGxl
ci5oIgogI2luY2x1ZGUgIkZvcm1EYXRhTGlzdC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5j
bHVkZSAiR2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiSFRNTEZvcm1F
bGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSFRNTE9wdEdyb3Vw
RWxlbWVudC5oIgpAQCAtNDYsNiArNDcsNyBAQAogI2luY2x1ZGUgIktleWJvYXJkRXZlbnQuaCIK
ICNpbmNsdWRlICJMb2NhbGl6ZWRTdHJpbmdzLmgiCiAjaW5jbHVkZSAiTW91c2VFdmVudC5oIgor
I2luY2x1ZGUgIk5vZGVSYXJlRGF0YS5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQ
bGF0Zm9ybU1vdXNlRXZlbnQuaCIKICNpbmNsdWRlICJSZW5kZXJMaXN0Qm94LmgiCkBAIC0zNzQs
MTIgKzM3NiwxMiBAQCBib29sIEhUTUxTZWxlY3RFbGVtZW50OjpjaGlsZFNob3VsZENyZWF0ZVJl
bmRlcmVyKGNvbnN0IE5vZGUmIGNoaWxkKSBjb25zdAogCiBSZWY8SFRNTENvbGxlY3Rpb24+IEhU
TUxTZWxlY3RFbGVtZW50OjpzZWxlY3RlZE9wdGlvbnMoKQogewotICAgIHJldHVybiBlbnN1cmVD
YWNoZWRIVE1MQ29sbGVjdGlvbihTZWxlY3RlZE9wdGlvbnMpOworICAgIHJldHVybiBlbnN1cmVS
YXJlRGF0YSgpLmVuc3VyZU5vZGVMaXN0cygpLmFkZENhY2hlZENvbGxlY3Rpb248R2VuZXJpY0Nh
Y2hlZEhUTUxDb2xsZWN0aW9uPENvbGxlY3Rpb25UeXBlVHJhaXRzPFNlbGVjdGVkT3B0aW9ucz46
OnRyYXZlcnNhbFR5cGU+PigqdGhpcywgU2VsZWN0ZWRPcHRpb25zKTsKIH0KIAogUmVmPEhUTUxP
cHRpb25zQ29sbGVjdGlvbj4gSFRNTFNlbGVjdEVsZW1lbnQ6Om9wdGlvbnMoKQogewotICAgIHJl
dHVybiBkb3duY2FzdDxIVE1MT3B0aW9uc0NvbGxlY3Rpb24+KGVuc3VyZUNhY2hlZEhUTUxDb2xs
ZWN0aW9uKFNlbGVjdE9wdGlvbnMpLmdldCgpKTsKKyAgICByZXR1cm4gZW5zdXJlUmFyZURhdGEo
KS5lbnN1cmVOb2RlTGlzdHMoKS5hZGRDYWNoZWRDb2xsZWN0aW9uPEhUTUxPcHRpb25zQ29sbGVj
dGlvbj4oKnRoaXMsIFNlbGVjdE9wdGlvbnMpOwogfQogCiB2b2lkIEhUTUxTZWxlY3RFbGVtZW50
Ojp1cGRhdGVMaXN0SXRlbVNlbGVjdGVkU3RhdGVzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxU
YWJsZUVsZW1lbnQuY3BwCmluZGV4IDc0NTczNjFiNmUxMjVlYWVmOTY1YWY1NDUzM2JmMzNmNjg0
NmVhYTcuLjAyODA4NmE2MThkZjZiMzRlZTM0NGFmMWQwMzdhNDA3NGU2NjQ4NWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmNwcApAQCAtMzEsMTIgKzMxLDE0IEBACiAj
aW5jbHVkZSAiQ1NTVmFsdWVQb29sLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2lu
Y2x1ZGUgIkV4Y2VwdGlvbkNvZGVQbGFjZWhvbGRlci5oIgorI2luY2x1ZGUgIkdlbmVyaWNDYWNo
ZWRIVE1MQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhU
TUxQYXJzZXJJZGlvbXMuaCIKICNpbmNsdWRlICJIVE1MVGFibGVDYXB0aW9uRWxlbWVudC5oIgog
I2luY2x1ZGUgIkhUTUxUYWJsZVJvd0VsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MVGFibGVSb3dz
Q29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxUYWJsZVNlY3Rpb25FbGVtZW50LmgiCisjaW5j
bHVkZSAiTm9kZVJhcmVEYXRhLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGFibGUuaCIKICNpbmNsdWRl
ICJTdHlsZVByb3BlcnRpZXMuaCIKICNpbmNsdWRlIDx3dGYvUmVmLmg+CkBAIC01NTEsMTIgKzU1
MywxMiBAQCBib29sIEhUTUxUYWJsZUVsZW1lbnQ6OmlzVVJMQXR0cmlidXRlKGNvbnN0IEF0dHJp
YnV0ZSYgYXR0cmlidXRlKSBjb25zdAogCiBSZWY8SFRNTENvbGxlY3Rpb24+IEhUTUxUYWJsZUVs
ZW1lbnQ6OnJvd3MoKQogewotICAgIHJldHVybiBlbnN1cmVDYWNoZWRIVE1MQ29sbGVjdGlvbihU
YWJsZVJvd3MpOworICAgIHJldHVybiBlbnN1cmVSYXJlRGF0YSgpLmVuc3VyZU5vZGVMaXN0cygp
LmFkZENhY2hlZENvbGxlY3Rpb248SFRNTFRhYmxlUm93c0NvbGxlY3Rpb24+KCp0aGlzLCBUYWJs
ZVJvd3MpOwogfQogCiBSZWY8SFRNTENvbGxlY3Rpb24+IEhUTUxUYWJsZUVsZW1lbnQ6OnRCb2Rp
ZXMoKQogewotICAgIHJldHVybiBlbnN1cmVDYWNoZWRIVE1MQ29sbGVjdGlvbihUYWJsZVRCb2Rp
ZXMpOworICAgIHJldHVybiBlbnN1cmVSYXJlRGF0YSgpLmVuc3VyZU5vZGVMaXN0cygpLmFkZENh
Y2hlZENvbGxlY3Rpb248R2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uPENvbGxlY3Rpb25UeXBl
VHJhaXRzPFRhYmxlVEJvZGllcz46OnRyYXZlcnNhbFR5cGU+PigqdGhpcywgVGFibGVUQm9kaWVz
KTsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBIVE1MVGFibGVFbGVtZW50OjpydWxlcygpIGNv
bnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVJvd0VsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVSb3dFbGVtZW50LmNwcAppbmRleCBk
NDM1MWVhZmNhNWU2Zjc1NTI2Yjk3YTMwNGJhNjdhZmE2ODA3ZWE4Li5jODcyNTlmNWVjYjk2ZDBh
YTYwNDhkNGQxNGFlOGI2MGY5M2I2OGI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxUYWJsZVJvd0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRh
YmxlUm93RWxlbWVudC5jcHAKQEAgLTI2LDEyICsyNiwxMyBAQAogI2luY2x1ZGUgIkhUTUxUYWJs
ZVJvd0VsZW1lbnQuaCIKIAogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKLSNpbmNsdWRlICJI
VE1MQ29sbGVjdGlvbi5oIgorI2luY2x1ZGUgIkdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbi5o
IgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhUTUxUYWJsZUNlbGxFbGVtZW50
LmgiCiAjaW5jbHVkZSAiSFRNTFRhYmxlRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxUYWJsZVNl
Y3Rpb25FbGVtZW50LmgiCiAjaW5jbHVkZSAiTm9kZUxpc3QuaCIKKyNpbmNsdWRlICJOb2RlUmFy
ZURhdGEuaCIKICNpbmNsdWRlICJUZXh0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTE1
Niw3ICsxNTcsNyBAQCB2b2lkIEhUTUxUYWJsZVJvd0VsZW1lbnQ6OmRlbGV0ZUNlbGwoaW50IGlu
ZGV4LCBFeGNlcHRpb25Db2RlJiBlYykKIAogUmVmPEhUTUxDb2xsZWN0aW9uPiBIVE1MVGFibGVS
b3dFbGVtZW50OjpjZWxscygpCiB7Ci0gICAgcmV0dXJuIGVuc3VyZUNhY2hlZEhUTUxDb2xsZWN0
aW9uKFRSQ2VsbHMpOworICAgIHJldHVybiBlbnN1cmVSYXJlRGF0YSgpLmVuc3VyZU5vZGVMaXN0
cygpLmFkZENhY2hlZENvbGxlY3Rpb248R2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uPENvbGxl
Y3Rpb25UeXBlVHJhaXRzPFRSQ2VsbHM+Ojp0cmF2ZXJzYWxUeXBlPj4oKnRoaXMsIFRSQ2VsbHMp
OwogfQogCiB2b2lkIEhUTUxUYWJsZVJvd0VsZW1lbnQ6OnNldENlbGxzKEhUTUxDb2xsZWN0aW9u
KiwgRXhjZXB0aW9uQ29kZSYgZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxUYWJsZVJvd3NDb2xsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxl
Um93c0NvbGxlY3Rpb24uY3BwCmluZGV4IGJmYTVmNmQ3OGQwZmJjYTczYjgzZWJlM2EyZTAxYzJh
NDEzNjBhMjUuLjJkOTFkOWQ0OGY3ODc4NjdmNzc4ZTgwYzY5MjUwZWUzNmQ2ZTBkYTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlUm93c0NvbGxlY3Rpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlUm93c0NvbGxlY3Rpb24uY3BwCkBAIC0x
NDksNyArMTQ5LDcgQEAgSFRNTFRhYmxlUm93RWxlbWVudCogSFRNTFRhYmxlUm93c0NvbGxlY3Rp
b246Omxhc3RSb3coSFRNTFRhYmxlRWxlbWVudCYgdGFibGUpCiB9CiAKIEhUTUxUYWJsZVJvd3ND
b2xsZWN0aW9uOjpIVE1MVGFibGVSb3dzQ29sbGVjdGlvbihIVE1MVGFibGVFbGVtZW50JiB0YWJs
ZSkKLSAgICA6IEhUTUxDb2xsZWN0aW9uKHRhYmxlLCBUYWJsZVJvd3MsIEN1c3RvbUZvcndhcmRP
bmx5VHJhdmVyc2FsKQorICAgIDogQ2FjaGVkSFRNTENvbGxlY3Rpb248SFRNTFRhYmxlUm93c0Nv
bGxlY3Rpb24sIENvbGxlY3Rpb25UeXBlVHJhaXRzPFRhYmxlUm93cz46OnRyYXZlcnNhbFR5cGU+
KHRhYmxlLCBUYWJsZVJvd3MpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFRhYmxlUm93c0NvbGxlY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRh
YmxlUm93c0NvbGxlY3Rpb24uaAppbmRleCA5ZWI1ZmE2YTdhMjk4MTRmMjNlMTRlMzdhYTk5NTM2
ZGRlZGFmOTQ0Li5iZjA3YTMyOWY1ODE1NTk0MTZmNDJkYmQ2N2MxMjA4NmM1ZTEyMTZmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVJvd3NDb2xsZWN0aW9uLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVSb3dzQ29sbGVjdGlvbi5oCkBAIC0yOSwx
NCArMjksMTQgQEAKICNpZm5kZWYgSFRNTFRhYmxlUm93c0NvbGxlY3Rpb25faAogI2RlZmluZSBI
VE1MVGFibGVSb3dzQ29sbGVjdGlvbl9oCiAKLSNpbmNsdWRlICJIVE1MQ29sbGVjdGlvbi5oIgor
I2luY2x1ZGUgIkNhY2hlZEhUTUxDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiSFRNTFRhYmxlRWxl
bWVudC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEhUTUxUYWJsZVJvd0VsZW1l
bnQ7CiAKLWNsYXNzIEhUTUxUYWJsZVJvd3NDb2xsZWN0aW9uIGZpbmFsIDogcHVibGljIEhUTUxD
b2xsZWN0aW9uIHsKK2NsYXNzIEhUTUxUYWJsZVJvd3NDb2xsZWN0aW9uIGZpbmFsIDogcHVibGlj
IENhY2hlZEhUTUxDb2xsZWN0aW9uPEhUTUxUYWJsZVJvd3NDb2xsZWN0aW9uLCBDb2xsZWN0aW9u
VHlwZVRyYWl0czxUYWJsZVJvd3M+Ojp0cmF2ZXJzYWxUeXBlPiB7CiBwdWJsaWM6CiAgICAgc3Rh
dGljIFJlZjxIVE1MVGFibGVSb3dzQ29sbGVjdGlvbj4gY3JlYXRlKEhUTUxUYWJsZUVsZW1lbnQm
LCBDb2xsZWN0aW9uVHlwZSk7CiAKQEAgLTQ2LDEwICs0NiwxMSBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIEhUTUxUYWJsZVJvd0VsZW1lbnQqIHJvd0FmdGVyKEhUTUxUYWJsZUVsZW1lbnQmLCBIVE1M
VGFibGVSb3dFbGVtZW50Kik7CiAgICAgc3RhdGljIEhUTUxUYWJsZVJvd0VsZW1lbnQqIGxhc3RS
b3coSFRNTFRhYmxlRWxlbWVudCYpOwogCisgICAgLy8gRm9yIENhY2hlZEhUTUxDb2xsZWN0aW9u
LgorICAgIEVsZW1lbnQqIGN1c3RvbUVsZW1lbnRBZnRlcihFbGVtZW50KikgY29uc3Q7CisKIHBy
aXZhdGU6CiAgICAgZXhwbGljaXQgSFRNTFRhYmxlUm93c0NvbGxlY3Rpb24oSFRNTFRhYmxlRWxl
bWVudCYpOwotCi0gICAgdmlydHVhbCBFbGVtZW50KiBjdXN0b21FbGVtZW50QWZ0ZXIoRWxlbWVu
dCopIGNvbnN0IG92ZXJyaWRlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVTZWN0aW9uRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVNlY3Rpb25FbGVtZW50LmNwcAppbmRleCBmNzU3
MTdlNTk4MjkyYjc0ZWQ0MjI3NThjNDgwNmRjNWMwMDdiYmRlLi45ZTQ1MzE2ZjhmM2Y0ZmM2ZGE4
ZTNkY2RiMWIzZTRlMmRkOTI3ZDg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxUYWJsZVNlY3Rpb25FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxU
YWJsZVNlY3Rpb25FbGVtZW50LmNwcApAQCAtMjYsMTEgKzI2LDEzIEBACiAjaW5jbHVkZSAiSFRN
TFRhYmxlU2VjdGlvbkVsZW1lbnQuaCIKIAogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNp
bmNsdWRlICJHZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJIVE1MQ29s
bGVjdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhUTUxUYWJsZVJv
d0VsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MVGFibGVFbGVtZW50LmgiCiAjaW5jbHVkZSAiTm9k
ZUxpc3QuaCIKKyNpbmNsdWRlICJOb2RlUmFyZURhdGEuaCIKICNpbmNsdWRlICJUZXh0LmgiCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTE0Nyw3ICsxNDksNyBAQCB2b2lkIEhUTUxUYWJsZVNl
Y3Rpb25FbGVtZW50OjpzZXRWQWxpZ24oY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKIAogUmVm
PEhUTUxDb2xsZWN0aW9uPiBIVE1MVGFibGVTZWN0aW9uRWxlbWVudDo6cm93cygpCiB7Ci0gICAg
cmV0dXJuIGVuc3VyZUNhY2hlZEhUTUxDb2xsZWN0aW9uKFRTZWN0aW9uUm93cyk7CisgICAgcmV0
dXJuIGVuc3VyZVJhcmVEYXRhKCkuZW5zdXJlTm9kZUxpc3RzKCkuYWRkQ2FjaGVkQ29sbGVjdGlv
bjxHZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb248Q29sbGVjdGlvblR5cGVUcmFpdHM8VFNlY3Rp
b25Sb3dzPjo6dHJhdmVyc2FsVHlwZT4+KCp0aGlzLCBUU2VjdGlvblJvd3MpOwogfQogCiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>259126</attachid>
            <date>2015-08-16 11:01:37 -0700</date>
            <delta_ts>2015-08-16 12:00:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-147979-20150816110116.patch</filename>
            <type>text/plain</type>
            <size>114209</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg4NTE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzgyZjZmMTM1MDMyOGVi
ZjE0ZWY3ODczMzk4YzFkZGRlZDdmZTM2OS4uNDgzNzI2ZmIwMjEwYWE0MmNlZDU3ZjgwYTgwYzJk
Mjk0MDBmNTE2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4MCBAQAorMjAxNS0wOC0xNSAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFJlZmFjdG9yIEhUTUxDb2xs
ZWN0aW9uIHRvIGJlIGFzIGZhc3QgYXMgQ2FjaGVkTGl2ZU5vZGVMaXN0CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDc5NzkKKworICAgICAgICBSZXZp
ZXdlZCBieSBSeW9zdWtlIE5pd2EuCisKKyAgICAgICAgUmVmYWN0b3IgSFRNTENvbGxlY3Rpb24g
dG8gYmUgYXMgZmFzdCBhcyBDYWNoZWRMaXZlTm9kZUxpc3QuIFRoaXMgaXMgaW4KKyAgICAgICAg
cHJlcGFyYXRpb24gb2YgaGF2aW5nIGdldEVsZW1lbnRzQnlUYWdOYW1lKigpIC8gZ2V0RWxlbWVu
dHNCeUNsYXNzTmFtZSgpCisgICAgICAgIHJldHVybiBhbiBIVE1MQ29sbGVjdGlvbiBpbnN0ZWFk
IG9mIGEgTm9kZUxpc3QsIGFzIHBlciB0aGUKKyAgICAgICAgc3BlY2lmaWNhdGlvbi4gQ2hyb21l
IGFuZCBGaXJlZm94IGFscmVhZHkgbWF0Y2ggdGhlIHNwZWNpZmljYXRpb24gaW4KKyAgICAgICAg
dGhpcyBjYXNlLgorCisgICAgICAgIFRyYXZlcnNpbmcgYW4gSFRNTENvbGxlY3Rpb24gd2FzIHNs
b3cgYmVjYXVzZSBvZiBhbGwgdGhlIGV4dHJhCisgICAgICAgIGJyYW5jaGluZyBpdCBoYWQgY29t
cGFyZWQgdG8gQ2FjaGVkTGl2ZU5vZGVMaXN0LiBUbyBhZGRyZXNzIHRoZSBpc3N1ZSwKKyAgICAg
ICAgdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IHRlbXBsYXRlZCBDYWNoZWRIVE1MQ29sbGVj
dGlvbiBzdWJjbGFzcywKKyAgICAgICAgd2hpY2ggYmVoYXZlcyBpbiBhIHNpbWlsYXIgd2F5IGFz
IENhY2hlZExpdmVOb2RlTGlzdC4gVGhlIDIgdGVtcGxhdGUKKyAgICAgICAgcGFyYW1ldGVycyBh
cmU6CisgICAgICAgIDEuIFRoZSB0eXBlIG9mIHRoZSBzdWJjbGFzcyBvZiBDYWNoZWRIVE1MQ29s
bGVjdGlvbiwgc28gd2UgY2FuIGNhbGwKKyAgICAgICAgICAgZWxlbWVudE1hdGNoZXMoKSBkaXJl
Y3RseSBvbiB0aGUgc3ViY2xhc3MsIHdpdGhvdXQgbmVlZGVkIGFueQorICAgICAgICAgICB2aXJ0
dWFsIGZ1bmN0aW9uIGNhbGwgb3Igc3dpdGNoIHN0YXRlbWVudC4gVGhpcyBpcyB0aGUgc2FtZSBh
cHByb2FjaAorICAgICAgICAgICBhcyBpbiBDYWNoZWRMaXZlTm9kZUxpc3QuCisgICAgICAgIDIu
IFRoZSB0eXBlIG9mIHRyZWUgdHJhdmVyc2FsIHVzZWQgKERlc2NlbmRhbnRzLCBDaGlsZHJlbk9u
bHksCisgICAgICAgICAgIEN1c3RvbUZvcndhcmRPbmx5KS4gVW5saWtlIExpdmVOb2RlTGlzdCwg
SFRNTENvbGxlY3Rpb24gbmVlZHMgdG8KKyAgICAgICAgICAgc3VwcG9ydCB0aGVzZSAzIHR5cGVz
IG9mIHRyZWUgdHJhdmVyc2FsLiBUaGVzZSB3ZXJlIGNhdXNpbmcgZXh0cmEKKyAgICAgICAgICAg
YnJhbmNoaW5nIGZvciBldmVyeSBpdGVtKCkgY2FsbC4gV2UgYXJlIG5vdyBhYmxlIHRvIGNob29z
ZSB0aGUgcmlnaHQKKyAgICAgICAgICAgdHlwZSBvZiB0cmF2ZXJzYWwgZm9yIHRoZSBDYWNoZWRI
VE1MQ29sbGVjdGlvbiBhdCBjb21waWxlIHRpbWUuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgIEFkZCBuZXcgZmlsZXMgdG8gdGhlIFByb2pl
Y3QuCisKKyAgICAgICAgKiBkb20vQ29udGFpbmVyTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDb250YWluZXJOb2RlOjpjaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpDb250YWluZXJO
b2RlOjpjYWNoZWRIVE1MQ29sbGVjdGlvbik6IERlbGV0ZWQuCisgICAgICAgICogZG9tL0NvbnRh
aW5lck5vZGUuaDoKKyAgICAgICAgRHJvcCBDb250YWluZXJOb2RlOjplbnN1cmVDYWNoZWRIVE1M
Q29sbGVjdGlvbigpIGFuZCB1c2UKKyAgICAgICAgTm9kZUxpc3RzTm9kZURhdGE6OmFkZENhY2hl
ZENvbGxlY3Rpb24oKSBkaXJlY3RseSBhdCBjYWxsIHNpdGVzCisgICAgICAgIGluc3RlYWQuIFdl
IG5lZWQgYWNjZXNzIHRvIHRoZSBDb2xsZWN0aW9uVHlwZSBhdCBidWlsZC10aW1lIHNvCisgICAg
ICAgIHdlIGNhbiByZXNvbHZlIHRoZSBDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZSBwYXJhbWV0ZXIg
Zm9yIHRoZQorICAgICAgICBHZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb24gdXNpbmcgQ29sbGVj
dGlvblR5cGVUcmFpdHMuCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAq
IGRvbS9Eb2N1bWVudC5oOgorICAgICAgICBVcGRhdGUgZW5zdXJlQ2FjaGVkQ29sbGVjdGlvbigp
IHNvIHRoZSBDb2xsZWN0aW9uVHlwZSBpcyBub3cgYSB0ZW1wbGF0ZQorICAgICAgICBwYXJhbWV0
ZXIgaW5zdGVhZCBvZiBhIG1ldGhvZCBhcmd1bWVudC4gV2UgbmVlZCB0byBrbm93IHRoZQorICAg
ICAgICBDb2xsZWN0aW9uVHlwZSBhdCBidWlsZCB0aW1lIHRvIGNvbnN0cnVjdCB0aGUgR2VuZXJp
Y0NhY2hlZEhUTUxDb2xsZWN0aW9uLgorCisgICAgICAgICogZG9tL0VsZW1lbnRDaGlsZEl0ZXJh
dG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50VHlw
ZT46Om9wZXJhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRDaGlsZENvbnN0SXRlcmF0
b3I8RWxlbWVudFR5cGU+OjpvcGVyYXRvcik6CisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBkZWNy
ZW1lbnRpbmcgYW4gRWxlbWVudENoaWxkSXRlcmF0b3IsIGZvciBjb25zaXN0ZW5jeQorICAgICAg
ICB3aXRoIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IuIFdlIG5lZWQgdGhpcyB0byBzdXBwb3J0
IGJhY2t3YXJkCisgICAgICAgIHRyYXZlcnNhbCBpbiBDYWNoZWRIVE1MQ29sbGVjdGlvbnMgdGhh
dCB1c2UgdGhlICdDaGlsZHJlbk9ubHknIHR5cGUKKyAgICAgICAgb2YgdHJhdmVyc2FsLgorCisg
ICAgICAgICogZG9tL0xpdmVOb2RlTGlzdC5oOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkTGl2
ZU5vZGVMaXN0PE5vZGVMaXN0VHlwZT46OmNvbGxlY3Rpb25CZWdpbik6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZWRMaXZlTm9kZUxpc3Q8Tm9kZUxpc3RUeXBlPjo6Y29sbGVjdGlvbkxhc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkTGl2ZU5vZGVMaXN0PE5vZGVMaXN0VHlwZT46OmNvbGxl
Y3Rpb25UcmF2ZXJzZUZvcndhcmQpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkTGl2ZU5vZGVM
aXN0PE5vZGVMaXN0VHlwZT46OmNvbGxlY3Rpb25UcmF2ZXJzZUJhY2t3YXJkKToKKyAgICAgICAg
TW92ZSB0cmF2ZXJzYWwgaW1wbGVtZW50YXRpb24gdG8gQ29sbGVjdGlvblRyYXZlcnNhbC5oLCBz
byBpdCBjYW4gYmUKKyAgICAgICAgc2hhcmVkIHdpdGggYWNoZWRIVE1MQ29sbGVjdGlvbi5oLgor
CisgICAgICAgICogaHRtbC9DYWNoZWRIVE1MQ29sbGVjdGlvbi5oOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OnRyYXZlcnNhbFR5cGU+OjpDYWNoZWRIVE1MQ29sbGVjdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjp0cmF2ZXJzYWxUeXBlPjo6fkNhY2hlZEhUTUxDb2xsZWN0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OnRyYXZlcnNhbFR5cGU+OjpDYWNoZWRIVE1MQ29sbGVjdGlvbjo6bWVtb3J5
Q29zdCk6CisgICAgICAgIChXZWJDb3JlOjp0cmF2ZXJzYWxUeXBlPjo6Y29sbGVjdGlvbkNhblRy
YXZlcnNlQmFja3dhcmQpOgorICAgICAgICAoV2ViQ29yZTo6dHJhdmVyc2FsVHlwZT46OmNvbGxl
Y3Rpb25UcmF2ZXJzZUZvcndhcmQpOgorICAgICAgICAoV2ViQ29yZTo6dHJhdmVyc2FsVHlwZT46
OmNvbGxlY3Rpb25UcmF2ZXJzZUJhY2t3YXJkKToKKyAgICAgICAgKFdlYkNvcmU6OnRyYXZlcnNh
bFR5cGU+Ojp3aWxsVmFsaWRhdGVJbmRleENhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6OnRyYXZl
cnNhbFR5cGU+OjpsZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6dHJhdmVyc2FsVHlwZT46Oml0
ZW0pOgorICAgICAgICAoV2ViQ29yZTo6dHJhdmVyc2FsVHlwZT46OmludmFsaWRhdGVDYWNoZSk6
CisgICAgICAgIChXZWJDb3JlOjp0cmF2ZXJzYWxUeXBlPjo6ZWxlbWVudE1hdGNoZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6bmFtZVNob3VsZEJlVmlzaWJsZUluRG9jdW1lbnRBbGwpOgorICAgICAg
ICAoV2ViQ29yZTo6dHJhdmVyc2FsVHlwZT46Om5hbWVkSXRlbSk6CisKKyAgICAgICAgKiBodG1s
L0NvbGxlY3Rpb25UcmF2ZXJzYWwuaDogQWRkZWQuCisgICAgICAgIEFkZCBuZXcgdGVtcGxhdGUg
Y2xhc3MgdGhhdCBwcm92aWRlIHRoZSBjb2xsZWN0aW9uIHRyYXZlcnNhbCBjb2RlCisgICAgICAg
IG5lZWRlZCBieSBDb2xsZWN0aW9uSW5kZXhDYWNoZS4gSXQgaGFzIHRlbXBsYXRlIHNwZWNpYWxp
emF0aW9ucyBmb3IKKyAgICAgICAgYWxsIDMgdHlwZXMgb2YgdHJhdmVyc2FsOiBEZXNjZW5kYW50
cywgQ2hpbGRyZW5Pbmx5LCBhbmQKKyAgICAgICAgQ3VzdG9tRm9yd2FyZE9ubHkuCisKKyAgICAg
ICAgKiBodG1sL0NvbGxlY3Rpb25UeXBlLmg6CisgICAgICAgIEFkZCBDb2xsZWN0aW9uVHlwZVRy
YWl0cyB0cmFpdHMgc28gd2UgY2FuIHJlc29sdmUgdGhlCisgICAgICAgIENvbGxlY3Rpb25UcmF2
ZXJzYWxUeXBlIHVzZWQgYnkgYSBzcGVjaWZpYyBDb2xsZWN0aW9uVHlwZSBhdAorICAgICAgICBj
b21waWxlLXRpbWUuIFRoaXMgaXMgbmVlZGVkIGZvciB0aGUgc2Vjb25kIHRlbXBsYXRlIHBhcmFt
ZXRlciBvZgorICAgICAgICBDYWNoZWRIVE1MQ29sbGVjdGlvbi4KKworICAgICAgICAqIGh0bWwv
R2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
OjpHZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb248dHJhdmVyc2FsVHlwZT46OmVsZW1lbnRNYXRj
aGVzKToKKyAgICAgICAgKiBodG1sL0dlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbi5oOiBBZGRl
ZC4KKyAgICAgICAgQWRkIENhY2hlZEhUTUxDb2xsZWN0aW9uIHN1YmNsYXNzIGlzIHRoZSBnZW5l
cmljIG9uZSB1c2VkIGZvciBhbGwKKyAgICAgICAgQ29sbGVjdGlvblR5cGVzIHRoYXQgZG8gbm90
IGhhdmUgdGhlaXIgb3duIHN1YmNsYXNzIChlLmcuIE5vZGVDaGlsZHJlbikuCisgICAgICAgIFRo
aXMgaGFzIGFuIGVsZW1lbnRNYXRjaGVzKCkgbWV0aG9kIHdpdGggYSBzd2l0Y2goKSBzdGF0ZW1l
bnQgaGFuZGxpbmcKKyAgICAgICAgYWxsIHRoZXNlIENvbGxlY3Rpb25UeXBlcy4gVGhvc2UgYXJl
IG5vdCBub3JtYWxseSBub3QgcGVyZm9ybWFuY2UKKyAgICAgICAgc2Vuc2l0aXZlLgorCisgICAg
ICAgICogaHRtbC9IVE1MQWxsQ29sbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
QWxsQ29sbGVjdGlvbjo6SFRNTEFsbENvbGxlY3Rpb24pOgorICAgICAgICAqIGh0bWwvSFRNTEFs
bENvbGxlY3Rpb24uaDoKKyAgICAgICAgU3ViY2xhc3MgQ2FjaGVkSFRNTENvbGxlY3Rpb24gaW5z
dGVhZCBvZiBIVE1MQ29sbGVjdGlvbi4gQWxzbyBwcm92aWRlCisgICAgICAgIGFuIGVsZW1lbnRN
YXRjaGVzKCkgbWV0aG9kIHRoYXQgc2ltcGx5IHJldHVybnMgdHJ1ZSBhcyB3ZSB3YW50IHRvCisg
ICAgICAgIG1hdGNoIGFsbCBlbGVtZW50cy4KKworICAgICAgICAqIGh0bWwvSFRNTENvbGxlY3Rp
b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENvbGxlY3Rpb246OkhUTUxDb2xsZWN0aW9u
KToKKyAgICAgICAgTW92ZSBDb2xsZWN0aW9uSW5kZXhDYWNoZSBtZW1iZXIgdG8gdGhlIHN1YmNs
YXNzIGFuZCBkcm9wIHRoZSAyIG90aGVyCisgICAgICAgIG1lbWJlcnMgYXMgdGhleSBhcmUgcmVw
bGFjZWQgd2l0aCB0aGUgQ29sbGVjdGlvblRyYXZlcnNhbFR5cGUgdGVtcGxhdGUKKyAgICAgICAg
cGFyYW1ldGVyIG9mIENhY2hlZEhUTUxDb2xsZWN0aW9uLgorCisgICAgICAgIChXZWJDb3JlOjpI
VE1MQ29sbGVjdGlvbjo6fkhUTUxDb2xsZWN0aW9uKToKKyAgICAgICAgTW92ZSBEb2N1bWVudDo6
dW5yZWdpc3RlckNvbGxlY3Rpb24oKSBjYWxsIHRvIH5DYWNoZWRIVE1MQ29sbGVjdGlvbigpCisg
ICAgICAgIGFzIHdlIG5lZWRlZCB0byBjaGVjayBpZiB0aGUgQ29sbGVjdGlvbkluZGV4Q2FjaGUg
d2FzIHZhbGlkIGZpcnN0LgorCisgICAgICAgIChXZWJDb3JlOjpIVE1MQ29sbGVjdGlvbjo6dXBk
YXRlTmFtZWRFbGVtZW50Q2FjaGUpOgorICAgICAgICBNb3ZlIHBhcnQgb2YgdGhlIGltcGxlbWVu
dGF0aW9uIHRvIHRoZSBDYWNoZWRIVE1MQ29sbGVjdGlvbiBzdWJjbGFzcworICAgICAgICBhcyBp
dCBuZWVkcyB0byBrbm93IGFib3V0IHRoZSB0eXBlIG9mIHRyYXZlcnNhbCBhbmQgaXQgbmVlZHMg
dG8gYmUKKyAgICAgICAgYWJsZSB0byBjYWxsIGVsZW1lbnRNYXRjaGVzKCkuCisKKyAgICAgICAg
KiBodG1sL0hUTUxDb2xsZWN0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ29sbGVjdGlv
bjo6cm9vdE5vZGUpOgorICAgICAgICBJbmxpbmUgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMgYW5k
IGNvbnNpc3RlbmN5IHdpdGggQ2FjaGVkTGl2ZU5vZGVMaXN0LgorCisgICAgICAgIChXZWJDb3Jl
OjpIVE1MQ29sbGVjdGlvbjo6bWVtb3J5Q29zdCk6CisgICAgICAgIE1ha2UgdmlydHVhbCBhbmQg
bW92ZSBwYXJ0IG9mIHRoZSBpbXBsZW1lbnRhdGlvbiB0byB0aGUKKyAgICAgICAgQ2FjaGVkSFRN
TENvbGxlY3Rpb24gc3ViY2xhc3MgdG8gY29tcHV0ZSB0aGUgY29zdCBvZiB0aGUKKyAgICAgICAg
Q29sbGVjdGlvbkluZGV4Q2FjaGUuCisKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb2xsZWN0aW9u
OjppbnZhbGlkYXRlQ2FjaGUpOgorICAgICAgICBNb3ZlIHBhcnQgb2YgdGhlIGltcGxlbWVudGF0
aW9uIHRvIHRoZSBzdWJjbGFzcyB0byBpbnZhbGlkYXRlIHRoZQorICAgICAgICBDb2xsZWN0aW9u
SW5kZXhDYWNoZS4KKworICAgICAgICAqIGh0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MRmllbGRTZXRFbGVtZW50OjplbGVtZW50cyk6CisKKyAgICAg
ICAgKiBodG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmNwcDoKKyAgICAgICAgKiBodG1s
L0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmg6CisgICAgICAgIFN1YmNsYXNzIENhY2hlZEhU
TUxDb2xsZWN0aW9uIGluc3RlYWQgb2YgSFRNTENvbGxlY3Rpb24uCisgICAgICAgIGN1c3RvbUVs
ZW1lbnRBZnRlcigpIG5vIGxvbmdlciBuZWVkcyB0byBiZSB2aXJ0dWFsIGFzIGl0CisgICAgICAg
IGlzIGNhbGxlZCBkaXJlY3RseSBieSBDYWNoZWRIVE1MQ29sbGVjdGlvbiBvbiB0aGUgc3ViY2xh
c3MuCisKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MRm9ybUVsZW1lbnQ6OmVsZW1lbnRzKToKKyAgICAgICAgKiBodG1sL0hUTUxNYXBF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNYXBFbGVtZW50OjphcmVhcyk6Cisg
ICAgICAgIENhbGwgTm9kZUxpc3RzTm9kZURhdGE6OmFkZENhY2hlZENvbGxlY3Rpb24oKSBkaXJl
Y3RseS4KKworICAgICAgICAqIGh0bWwvSFRNTE5hbWVDb2xsZWN0aW9uLmNwcDoKKyAgICAgICAg
KiBodG1sL0hUTUxOYW1lQ29sbGVjdGlvbi5oOgorICAgICAgICBTdWJjbGFzcyBDYWNoZWRIVE1M
Q29sbGVjdGlvbiBpbnN0ZWFkIG9mIEhUTUxDb2xsZWN0aW9uLgorCisgICAgICAgICogaHRtbC9I
VE1MT3B0aW9uc0NvbGxlY3Rpb24uY3BwOgorICAgICAgICAqIGh0bWwvSFRNTE9wdGlvbnNDb2xs
ZWN0aW9uLmg6CisgICAgICAgIFN1YmNsYXNzIENhY2hlZEhUTUxDb2xsZWN0aW9uIGluc3RlYWQg
b2YgSFRNTENvbGxlY3Rpb24uCisKKyAgICAgICAgKiBodG1sL0hUTUxTZWxlY3RFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50OjpzZWxlY3RlZE9wdGlvbnMp
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6Om9wdGlvbnMpOgorICAgICAg
ICAqIGh0bWwvSFRNTFRhYmxlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGFi
bGVFbGVtZW50Ojpyb3dzKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUYWJsZUVsZW1lbnQ6OnRC
b2RpZXMpOgorICAgICAgICAqIGh0bWwvSFRNTFRhYmxlUm93RWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MVGFibGVSb3dFbGVtZW50OjpjZWxscyk6CisgICAgICAgIENhbGwgTm9k
ZUxpc3RzTm9kZURhdGE6OmFkZENhY2hlZENvbGxlY3Rpb24oKSBkaXJlY3RseS4KKworICAgICAg
ICAqIGh0bWwvSFRNTFRhYmxlUm93c0NvbGxlY3Rpb24uY3BwOgorICAgICAgICAqIGh0bWwvSFRN
TFRhYmxlUm93c0NvbGxlY3Rpb24uaDoKKyAgICAgICAgU3ViY2xhc3MgQ2FjaGVkSFRNTENvbGxl
Y3Rpb24gaW5zdGVhZCBvZiBIVE1MQ29sbGVjdGlvbi4KKyAgICAgICAgY3VzdG9tRWxlbWVudEFm
dGVyKCkgbm8gbG9uZ2VyIG5lZWRzIHRvIGJlIHZpcnR1YWwgYXMgaXQKKyAgICAgICAgaXMgY2Fs
bGVkIGRpcmVjdGx5IGJ5IENhY2hlZEhUTUxDb2xsZWN0aW9uIG9uIHRoZSBzdWJjbGFzcy4KKwor
ICAgICAgICAqIGh0bWwvSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQ6OnJvd3MpOgorICAgICAgICBDYWxsIE5vZGVM
aXN0c05vZGVEYXRhOjphZGRDYWNoZWRDb2xsZWN0aW9uKCkgZGlyZWN0bHkuCisKIDIwMTUtMDgt
MTUgIFRpbW90aHkgSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAg
IFJFR1JFU1NJT04gKHIxNjgzMjcpOiBJbWFnZURvY3VtZW50cyB3aXRoIG1hcmdpbnMgem9vbSB0
byB0aGUgd3JvbmcgcG9zaXRpb24gd2hlbiBjbGlja2VkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4
IGMzZmE4MmFjMGQ0NmVkYTA2MzNmNmE5YTU0YzlmODdiNDkwNjUzMjMuLjQ5MTZjM2Q0OGJkZjQ2
ZWJjZWIwYzk5ZjhhNmQ1MzRjNTg5ZjMxOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0xNjA4
LDYgKzE2MDgsNyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgaHRtbC9Gb3JtQXNzb2NpYXRl
ZEVsZW1lbnQuY3BwCiAgICAgaHRtbC9Gb3JtQ29udHJvbGxlci5jcHAKICAgICBodG1sL0Zvcm1E
YXRhTGlzdC5jcHAKKyAgICBodG1sL0dlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbi5jcHAKICAg
ICBodG1sL0hUTUxBbGxDb2xsZWN0aW9uLmNwcAogICAgIGh0bWwvSFRNTEFuY2hvckVsZW1lbnQu
Y3BwCiAgICAgaHRtbC9IVE1MQXBwbGV0RWxlbWVudC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCmluZGV4IGM0ZTY1MjVhNDgxNDk3NWY4Y2Mz
OTlmOTc0MmFmOWIyZGE2Yjg5MzQuLmRhMTIwNzM3YTdiZDNkNGM0NmNlZWRlOWE5NzkxNDZkOTIw
ZDY0NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3Jl
LnZjeHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4
cHJvagpAQCAtMTYxMjEsNiArMTYxMjEsNyBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
aHRtbFxGb3JtQ29udHJvbGxlci5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxo
dG1sXEZvcm1EYXRhTGlzdC5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxodG1s
XEZUUERpcmVjdG9yeURvY3VtZW50LmNwcCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XGh0bWxcR2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uLmNwcCIgLz4KICAgICA8Q2xDb21waWxl
IEluY2x1ZGU9Ii4uXGh0bWxcSGlkZGVuSW5wdXRUeXBlLmNwcCIgLz4KICAgICA8Q2xDb21waWxl
IEluY2x1ZGU9Ii4uXGh0bWxcSFRNTEFsbENvbGxlY3Rpb24uY3BwIiAvPgogICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5caHRtbFxIVE1MQW5jaG9yRWxlbWVudC5jcHAiPgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDI5NTFhOGVm
ZGU3YThkN2YwNDYzMTczN2JlMDc2OWRiOWMzOWZmYWEuLmU3MTg4ZjgxNzUwZmQyY2U5NTExNzg1
MjZiZWE1NTJhMDVmOWQwNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE2ODksNiArMTY4OSw3IEBACiAJCTQ2QzgzRUZFMUE5
QkJFMjkwMEE3OUE0MSAvKiBHZW9Ob3RpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDZDODNFRkMxQTlCQkUyOTAwQTc5QTQxIC8qIEdlb05vdGlm
aWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
NDZEQjdENTcxQjIwRkU0NjAwNTY1MUIyIC8qIFZOb2RlVHJhY2tlckNvY29hLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2REI3RDU2MUIyMEZFM0Mw
MDU2NTFCMiAvKiBWTm9kZVRyYWNrZXJDb2NvYS5jcHAgKi87IH07CiAJCTQ2REJCNjUwMUFCOEM5
NkYwMEQ5QTgxMyAvKiBQb3dlck9ic2VydmVyTWFjLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkRCQjY0RTFBQjhDOTZGMDBEOUE4MTMgLyogUG93ZXJP
YnNlcnZlck1hYy5oICovOyB9OworCQk0NkVCRUEwMjFCN0Q0RDY1MDBCRTQ5NDEgLyogQ29sbGVj
dGlvblRyYXZlcnNhbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDZFQkVBMDExQjdENEQ1RDAwQkU0OTQxIC8qIENvbGxlY3Rpb25UcmF2ZXJzYWwuaCAq
LzsgfTsKIAkJNDZGM0UzRjkxQjIxMDkwMDAwODdFRDEzIC8qIFZOb2RlVHJhY2tlci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkRCN0Q1ODFCMjBG
RTU4MDA1NjUxQjIgLyogVk5vZGVUcmFja2VyLmNwcCAqLzsgfTsKIAkJNDZGM0UzRkExQjIxMDkx
MDAwODdFRDEzIC8qIFZOb2RlVHJhY2tlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDZEQjdENTkxQjIwRkU1ODAwNTY1MUIyIC8qIFZOb2RlVHJhY2tl
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2
RkNCNjE4MUE3MDgyMEUwMEM1QTIxRSAvKiBEaWFnbm9zdGljTG9nZ2luZ0tleXMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMzdCMzc1MTVDMUE3RTEw
MDZEQzg5OCAvKiBEaWFnbm9zdGljTG9nZ2luZ0tleXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMjY3Myw2ICsyNjc0LDExIEBACiAJCTgyQUIx
Nzc2MTI1QzgyNjcwMEM1MDY5RCAvKiBJbnNwZWN0b3JSZXNvdXJjZUFnZW50LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MkFCMTc3MjEyNUM4MjY3MDBD
NTA2OUQgLyogSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oICovOyB9OwogCQk4MkUzRDhERTEyMkVB
MEQxMDAzQUU1QkMgLyogQ1NTUHJvcGVydHlTb3VyY2VEYXRhLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgyRTNEOERDMTIyRUEwRDEwMDNBRTVCQyAv
KiBDU1NQcm9wZXJ0eVNvdXJjZURhdGEuY3BwICovOyB9OwogCQk4MkUzRDhERjEyMkVBMEQxMDAz
QUU1QkMgLyogQ1NTUHJvcGVydHlTb3VyY2VEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MkUzRDhERDEyMkVBMEQxMDAzQUU1QkMgLyogQ1NTUHJv
cGVydHlTb3VyY2VEYXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJODMwMDMwRjUxQjdEMzNCNTAwRUQzQUFDIC8qIEdlbmVyaWNDYWNoZWRIVE1M
Q29sbGVjdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4MzAwMzBGMzFCN0QzM0E2MDBFRDNBQUMgLyogR2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0
aW9uLmNwcCAqLzsgfTsKKwkJODMwMDMwRjYxQjdEMzNCNTAwRUQzQUFDIC8qIEdlbmVyaWNDYWNo
ZWRIVE1MQ29sbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gODMwMDMwRjQxQjdEMzNBNjAwRUQzQUFDIC8qIEdlbmVyaWNDYWNoZWRIVE1MQ29s
bGVjdGlvbi5oICovOyB9OworCQk4MzAwMzBGODFCN0QzQjc4MDBFRDNBQUMgLyogQ2FjaGVkSFRN
TENvbGxlY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDgzMDAzMEY3MUI3RDM5ODgwMEVEM0FBQyAvKiBDYWNoZWRIVE1MQ29sbGVjdGlvbi5oICov
OyB9OworCQk4MzFENDhDMDFCN0Q5QTUyMDA2REUzOUEgLyogQ2xhc3NOb2RlTGlzdC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzFENDhCRTFCN0Q5
QTQ2MDA2REUzOUEgLyogQ2xhc3NOb2RlTGlzdC5jcHAgKi87IH07CisJCTgzMUQ0OEMxMUI3RDlB
NTIwMDZERTM5QSAvKiBDbGFzc05vZGVMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA4MzFENDhCRjFCN0Q5QTQ2MDA2REUzOUEgLyogQ2xhc3NOb2Rl
TGlzdC5oICovOyB9OwogCQk4MzJCODQzNDE5RDhFNTUxMDBCMjYwNTUgLyogU1ZHQW5pbWF0ZUVs
ZW1lbnRCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4MzJCODQzMzE5RDhFNTUxMDBCMjYwNTUgLyogU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmggKi87
IH07CiAJCTgzMkI4NDM2MTlEOEU1NzQwMEIyNjA1NSAvKiBTVkdBbmltYXRlRWxlbWVudEJhc2Uu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODMyQjg0
MzUxOUQ4RTU3NDAwQjI2MDU1IC8qIFNWR0FuaW1hdGVFbGVtZW50QmFzZS5jcHAgKi87IH07CiAJ
CTgzNTIwQzdFMUE3MUJGQ0MwMDZCRDJBQSAvKiBDU1NGb250RmFtaWx5LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzUyMEM3RDFBNzFCRkNDMDA2QkQy
QUEgLyogQ1NTRm9udEZhbWlseS5oICovOyB9OwpAQCAtNTQxNCw4ICs1NDIwLDYgQEAKIAkJQkM4
QkYxNUExMDU4MTQxODAwQTQwQTA3IC8qIFVzZXJTdHlsZVNoZWV0VHlwZXMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDOEJGMTU5MTA1ODE0MTgwMEE0
MEEwNyAvKiBVc2VyU3R5bGVTaGVldFR5cGVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkM4QzhGQUQwRERDRDMxQjAwQjU5MkY0IC8qIFJlbmRl
clN0eWxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJDOEM4RkFCMEREQ0QzMUIwMEI1OTJGNCAvKiBSZW5kZXJTdHlsZS5jcHAgKi87IH07CiAJCUJD
OEM4RkFFMEREQ0QzMUIwMEI1OTJGNCAvKiBSZW5kZXJTdHlsZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM4QzhGQUMwRERDRDMxQjAwQjU5MkY0IC8q
IFJlbmRlclN0eWxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKLQkJQkM5MDRCNzYwRDEwOTk4RjAwNjgwRDMyIC8qIENsYXNzTm9kZUxpc3QuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM5MDRCNzIwRDEw
OTk4RjAwNjgwRDMyIC8qIENsYXNzTm9kZUxpc3QuY3BwICovOyB9OwotCQlCQzkwNEI3NzBEMTA5
OThGMDA2ODBEMzIgLyogQ2xhc3NOb2RlTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQkM5MDRCNzMwRDEwOTk4RjAwNjgwRDMyIC8qIENsYXNzTm9k
ZUxpc3QuaCAqLzsgfTsKIAkJQkM5MjZGODAwQzA1NTI0NzAwODI3NzZCIC8qIEpTSFRNTEZyYW1l
U2V0RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCQzkyNkY3RTBDMDU1MjQ3MDA4Mjc3NkIgLyogSlNIVE1MRnJhbWVTZXRFbGVtZW50LmNw
cCAqLzsgfTsKIAkJQkM5MjZGODEwQzA1NTI0NzAwODI3NzZCIC8qIEpTSFRNTEZyYW1lU2V0RWxl
bWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM5
MjZGN0YwQzA1NTI0NzAwODI3NzZCIC8qIEpTSFRNTEZyYW1lU2V0RWxlbWVudC5oICovOyB9Owog
CQlCQzk0MzlDMzExNkNGNDk0MDA0OEM3NTAgLyogSlNOb2RlQ3VzdG9tLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzk0MzlDMjExNkNGNDk0MDA0OEM3
NTAgLyogSlNOb2RlQ3VzdG9tLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKQEAgLTg5MzIsNiArODkzNiw3IEBACiAJCTQ2REI3RDU4MUIyMEZFNTgwMDU2
NTFCMiAvKiBWTm9kZVRyYWNrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gVk5vZGVUcmFja2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZE
QjdENTkxQjIwRkU1ODAwNTY1MUIyIC8qIFZOb2RlVHJhY2tlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBWTm9kZVRyYWNrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDZEQkI2NEUxQUI4Qzk2RjAwRDlBODEzIC8qIFBvd2VyT2JzZXJ2ZXJNYWMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUG93ZXJPYnNlcnZlck1hYy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk0NkVCRUEwMTFCN0Q0RDVEMDBCRTQ5NDEgLyogQ29sbGVj
dGlvblRyYXZlcnNhbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb2xsZWN0
aW9uVHJhdmVyc2FsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5MDcwN0U0MTIx
OUMwNDMwMEQ5MEU1MSAvKiBBTkdMRVdlYktpdEJyaWRnZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBBTkdMRVdlYktpdEJyaWRnZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQ5MDcwN0U1MTIxOUMwNDMwMEQ5MEU1MSAvKiBBTkdMRVdlYktpdEJy
aWRnZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBTkdMRVdlYktpdEJyaWRn
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OTI5MUU0QTEzNDE3MkM4MDBFNzUz
REUgLyogSW1hZ2VSZW5kZXJpbmdNb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEltYWdlUmVuZGVyaW5nTW9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MTAwMzIsNiArMTAwMzcsMTEgQEAKIAkJODJBQjE3NzIxMjVDODI2NzAwQzUwNjlEIC8qIEluc3Bl
Y3RvclJlc291cmNlQWdlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5z
cGVjdG9yUmVzb3VyY2VBZ2VudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MkUz
RDhEQzEyMkVBMEQxMDAzQUU1QkMgLyogQ1NTUHJvcGVydHlTb3VyY2VEYXRhLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENTU1Byb3BlcnR5U291cmNlRGF0YS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgyRTNEOEREMTIyRUEwRDEwMDNBRTVCQyAv
KiBDU1NQcm9wZXJ0eVNvdXJjZURhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQ1NTUHJvcGVydHlTb3VyY2VEYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTgzMDAzMEYzMUI3RDMzQTYwMEVEM0FBQyAvKiBHZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb24u
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR2VuZXJpY0NhY2hlZEhU
TUxDb2xsZWN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODMwMDMwRjQx
QjdEMzNBNjAwRUQzQUFDIC8qIEdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbi5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb24uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODMwMDMwRjcxQjdEMzk4ODAwRUQzQUFDIC8q
IENhY2hlZEhUTUxDb2xsZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IENhY2hlZEhUTUxDb2xsZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTgz
MUQ0OEJFMUI3RDlBNDYwMDZERTM5QSAvKiBDbGFzc05vZGVMaXN0LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENsYXNzTm9kZUxpc3QuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk4MzFENDhCRjFCN0Q5QTQ2MDA2REUzOUEgLyogQ2xhc3NOb2RlTGlz
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDbGFzc05vZGVMaXN0Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzMkI4NDMzMTlEOEU1NTEwMEIyNjA1NSAvKiBT
VkdBbmltYXRlRWxlbWVudEJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgz
MkI4NDM1MTlEOEU1NzQwMEIyNjA1NSAvKiBTVkdBbmltYXRlRWxlbWVudEJhc2UuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODM1MjBDN0QxQTcxQkZDQzAwNkJEMkFB
IC8qIENTU0ZvbnRGYW1pbHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1NT
Rm9udEZhbWlseS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTMwMDAsOCArMTMw
MTAsNiBAQAogCQlCQzhCRjE1OTEwNTgxNDE4MDBBNDBBMDcgLyogVXNlclN0eWxlU2hlZXRUeXBl
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVc2VyU3R5bGVTaGVldFR5cGVz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDOEM4RkFCMEREQ0QzMUIwMEI1OTJG
NCAvKiBSZW5kZXJTdHlsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBSZW5kZXJTdHlsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDOEM4RkFD
MEREQ0QzMUIwMEI1OTJGNCAvKiBSZW5kZXJTdHlsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBSZW5kZXJTdHlsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlC
QzkwNEI3MjBEMTA5OThGMDA2ODBEMzIgLyogQ2xhc3NOb2RlTGlzdC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDbGFzc05vZGVMaXN0LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJQkM5MDRCNzMwRDEwOTk4RjAwNjgwRDMyIC8qIENsYXNzTm9kZUxp
c3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2xhc3NOb2RlTGlzdC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzkyNkY3RTBDMDU1MjQ3MDA4Mjc3NkIgLyog
SlNIVE1MRnJhbWVTZXRFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBKU0hUTUxGcmFtZVNldEVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlCQzkyNkY3RjBDMDU1MjQ3MDA4Mjc3NkIgLyogSlNIVE1MRnJhbWVTZXRFbGVtZW50
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0hUTUxGcmFtZVNldEVsZW1l
bnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM5NDM5QzIxMTZDRjQ5NDAwNDhD
NzUwIC8qIEpTTm9kZUN1c3RvbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBK
U05vZGVDdXN0b20uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE4MTcyLDEwICsx
ODE4MCwxMiBAQAogCQkJCUY1NUIzRDdBMTI1MUYxMkQwMDNFRjI2OSAvKiBCYXNlVGV4dElucHV0
VHlwZS5oICovLAogCQkJCUY1NUIzRDdCMTI1MUYxMkQwMDNFRjI2OSAvKiBCdXR0b25JbnB1dFR5
cGUuY3BwICovLAogCQkJCUY1NUIzRDdDMTI1MUYxMkQwMDNFRjI2OSAvKiBCdXR0b25JbnB1dFR5
cGUuaCAqLywKKwkJCQk4MzAwMzBGNzFCN0QzOTg4MDBFRDNBQUMgLyogQ2FjaGVkSFRNTENvbGxl
Y3Rpb24uaCAqLywKIAkJCQlGNTVCM0Q3RDEyNTFGMTJEMDAzRUYyNjkgLyogQ2hlY2tib3hJbnB1
dFR5cGUuY3BwICovLAogCQkJCUY1NUIzRDdFMTI1MUYxMkQwMDNFRjI2OSAvKiBDaGVja2JveElu
cHV0VHlwZS5oICovLAogCQkJCTRBQ0JDMEJDMTI3MTNDQkQwMDk0RjlCMiAvKiBDbGFzc0xpc3Qu
Y3BwICovLAogCQkJCTRBQ0JDMEJEMTI3MTNDQkQwMDk0RjlCMiAvKiBDbGFzc0xpc3QuaCAqLywK
KwkJCQk0NkVCRUEwMTFCN0Q0RDVEMDBCRTQ5NDEgLyogQ29sbGVjdGlvblRyYXZlcnNhbC5oICov
LAogCQkJCTkzQzQ0MUZGMEY4MTNBRTEwMEMxQTYzNCAvKiBDb2xsZWN0aW9uVHlwZS5oICovLAog
CQkJCUJDMjk5MzVDMTdBMURENTgwMEJDRTg4MCAvKiBDb2xvcklucHV0VHlwZS5jcHAgKi8sCiAJ
CQkJRjU1QjNEODAxMjUxRjEyRDAwM0VGMjY5IC8qIENvbG9ySW5wdXRUeXBlLmggKi8sCkBAIC0x
ODIxMCw2ICsxODIyMCw4IEBACiAJCQkJOUI1MEIxREMxN0NENEMwRjAwODdGNjNDIC8qIEZvcm1O
YW1lZEl0ZW0uaCAqLywKIAkJCQk5NzIwNUFBRDEyMzkyOENBMDBCMTczODAgLyogRlRQRGlyZWN0
b3J5RG9jdW1lbnQuY3BwICovLAogCQkJCTk3MjA1QUFFMTIzOTI4Q0EwMEIxNzM4MCAvKiBGVFBE
aXJlY3RvcnlEb2N1bWVudC5oICovLAorCQkJCTgzMDAzMEYzMUI3RDMzQTYwMEVEM0FBQyAvKiBH
ZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb24uY3BwICovLAorCQkJCTgzMDAzMEY0MUI3RDMzQTYw
MEVEM0FBQyAvKiBHZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb24uaCAqLywKIAkJCQlGNTVCM0Q4
QjEyNTFGMTJEMDAzRUYyNjkgLyogSGlkZGVuSW5wdXRUeXBlLmNwcCAqLywKIAkJCQlGNTVCM0Q4
QzEyNTFGMTJEMDAzRUYyNjkgLyogSGlkZGVuSW5wdXRUeXBlLmggKi8sCiAJCQkJQkM5N0UyMzkx
MDkxNDQ5NTAwMTBEMzYxIC8qIEhUTUxBbGxDb2xsZWN0aW9uLmNwcCAqLywKQEAgLTIzMTY1LDgg
KzIzMTc3LDggQEAKIAkJCQk4M0QyNkQzQzFBRkRDQzUwMDAxQjM4NzMgLyogQ2hpbGROb2RlLmlk
bCAqLywKIAkJCQlBODE4NzIxQTA5NzdEM0MwMDA1ODI2RDkgLyogQ2hpbGROb2RlTGlzdC5jcHAg
Ki8sCiAJCQkJQTgxODcyMTUwOTc3RDNDMDAwNTgyNkQ5IC8qIENoaWxkTm9kZUxpc3QuaCAqLywK
LQkJCQlCQzkwNEI3MjBEMTA5OThGMDA2ODBEMzIgLyogQ2xhc3NOb2RlTGlzdC5jcHAgKi8sCi0J
CQkJQkM5MDRCNzMwRDEwOTk4RjAwNjgwRDMyIC8qIENsYXNzTm9kZUxpc3QuaCAqLywKKwkJCQk4
MzFENDhCRTFCN0Q5QTQ2MDA2REUzOUEgLyogQ2xhc3NOb2RlTGlzdC5jcHAgKi8sCisJCQkJODMx
RDQ4QkYxQjdEOUE0NjAwNkRFMzlBIC8qIENsYXNzTm9kZUxpc3QuaCAqLywKIAkJCQlCQ0MwNjU3
NzBGM0NFMUI3MDBDRDJEODcgLyogQ2xpZW50UmVjdC5jcHAgKi8sCiAJCQkJQkNDMDY1NzgwRjND
RTFCNzAwQ0QyRDg3IC8qIENsaWVudFJlY3QuaCAqLywKIAkJCQlCQ0MwNjU3OTBGM0NFMUI3MDBD
RDJEODcgLyogQ2xpZW50UmVjdC5pZGwgKi8sCkBAIC0yNDE4Miw3ICsyNDE5NCw2IEBACiAJCQkJ
MTREODIzNTIwQUY5MkE3OTAwMDRGMDU3IC8qIENocm9tZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MTREODI0MDgwQUY5M0FFQjAwMDRGMDU3IC8qIENocm9tZUNsaWVudC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNEFDQkMwQkYxMjcxM0NCRDAwOTRGOUIyIC8qIENsYXNzTGlzdC5oIGluIEhlYWRlcnMg
Ki8sCi0JCQkJQkM5MDRCNzcwRDEwOTk4RjAwNjgwRDMyIC8qIENsYXNzTm9kZUxpc3QuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUJDQzA2NTdFMEYzQ0UxQjcwMENEMkQ4NyAvKiBDbGllbnRSZWN0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCQ0MwNjU4MTBGM0NFMUI3MDBDRDJEODcgLyogQ2xpZW50UmVj
dExpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1MDMxQjQwMEE0NEVGQzcwMEY5OTJFMCAvKiBD
bGlwYm9hcmRFdmVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNDQ1NCw2ICsyNDQ2NSw3IEBACiAJ
CQkJODM3MkRCMzExQTY3ODBBODAwQzY5N0M1IC8qIERpYWdub3N0aWNMb2dnaW5nUmVzdWx0VHlw
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0VDQURGQzcxNTM3NzhGRjAwRTM3MDY4IC8qIERpY3Rh
dGlvbkFsdGVybmF0aXZlLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRUNBREZDOTE1Mzc3OEZGMDBF
MzcwNjggLyogRGljdGF0aW9uQ29tbWFuZC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDZFQkVBMDIx
QjdENEQ2NTAwQkU0OTQxIC8qIENvbGxlY3Rpb25UcmF2ZXJzYWwuaCBpbiBIZWFkZXJzICovLAog
CQkJCUQwQkQ0RjVEMTQwODg1MEYwMDY4MzlCNiAvKiBEaWN0YXRpb25Db21tYW5kSU9TLmggaW4g
SGVhZGVycyAqLywKIAkJCQkxNTE0NUI5MDFCM0ExQ0UwMDA2NjJCRjcgLyogTWVkaWFEZXZpY2VJ
bmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMTYwMjNGMDE1MzJDNDBDMDBENTBGRjQgLyogRGlj
dGlvbmFyeS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNDU1OSw2ICsyNDU3MSw3IEBACiAJCQkJODVF
NzExOTYwQUM1RDUzNTAwNTMyNzBGIC8qIERPTURvY3VtZW50VHlwZUludGVybmFsLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk4NTE4RENFOTBBOUNDODBEMDA5MUI3QTYgLyogRE9NRE9NSW1wbGVtZW50
YXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTg1RTcxMTk3MEFDNUQ1MzUwMDUzMjcwRiAvKiBE
T01ET01JbXBsZW1lbnRhdGlvbkludGVybmFsLmggaW4gSGVhZGVycyAqLywKKwkJCQk4MzFENDhD
MTFCN0Q5QTUyMDA2REUzOUEgLyogQ2xhc3NOb2RlTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NTJDQ0E5RTgxNUUzRjY0QzAwNTNDNzdGIC8qIERPTURPTU5hbWVkRmxvd0NvbGxlY3Rpb24uaCBp
biBIZWFkZXJzICovLAogCQkJCTUyQ0NBOUVBMTVFM0Y2NEMwMDUzQzc3RiAvKiBET01ET01OYW1l
ZEZsb3dDb2xsZWN0aW9uSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTJEOUEyNDc0MTVC
OUMyRTMwMEQzNDUyNyAvKiBET01ET01TZWN1cml0eVBvbGljeS5oIGluIEhlYWRlcnMgKi8sCkBA
IC0yNTY0Miw2ICsyNTY1NSw3IEBACiAJCQkJRkRBMTVFQjIxMkIwM0VFMTAwM0E1ODNBIC8qIEpT
UGFubmVyTm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOEE5QTU4NzUxMUU4NEM4MTAwOEFDRkQx
IC8qIEpTUGVyZm9ybWFuY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCThBOUE1ODcxMTFFODRDMzYw
MDhBQ0ZEMSAvKiBKU1BlcmZvcm1hbmNlTmF2aWdhdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
ODMwMDMwRjYxQjdEMzNCNTAwRUQzQUFDIC8qIEdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbi5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJOEE5QTU4ODgxMUU4NEYzNzAwOEFDRkQxIC8qIEpTUGVyZm9y
bWFuY2VUaW1pbmcuaCBpbiBIZWFkZXJzICovLAogCQkJCUZERUE2MjQ3MTUyMTAyRkMwMDQ3OURG
MCAvKiBKU1BlcmlvZGljV2F2ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNCNzBENkMwOUVCMEM3
QzAwOUQ4NDY4IC8qIEpTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5oIGluIEhlYWRlcnMgKi8sCkBA
IC0yNjk4Miw2ICsyNjk5Niw3IEBACiAJCQkJQjIyMjdBNTEwRDAwQkYyMjAwNzFCNzgyIC8qIFNW
R051bWJlckxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3QTU0MEQwMEJGMjIwMDcxQjc4
MiAvKiBTVkdQYWludC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjdBNTcwRDAwQkYyMjAwNzFC
NzgyIC8qIFNWR1BhcnNlclV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJODMwMDMwRjgx
QjdEM0I3ODAwRUQzQUFDIC8qIENhY2hlZEhUTUxDb2xsZWN0aW9uLmggaW4gSGVhZGVycyAqLywK
IAkJCQkyRDNBMEUzNjEzQTdENzYxMDBFODVBRjAgLyogU1ZHUGFyc2luZ0Vycm9yLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk4NEM2Nzg0RDEyMTQ4MTQ3MDBBOTI5MDIgLyogU1ZHUGF0aEJsZW5kZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCTg0NzZDOUVCMTFERjZBMjkwMDU1NUIwMiAvKiBTVkdQYXRo
QnVpbGRlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNzk3Nyw3ICsyNzk5Miw2IEBACiAJCQkJMTRE
ODIzOEIwQUY5MkRGNjAwMDRGMDU3IC8qIENocm9tZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlB
QkFGMjIwODBDMDNCMUM3MDBCMEJDRjAgLyogQ2hyb21lTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNEFDQkMwQkUxMjcxM0NCRDAwOTRGOUIyIC8qIENsYXNzTGlzdC5jcHAgaW4gU291cmNlcyAq
LywKLQkJCQlCQzkwNEI3NjBEMTA5OThGMDA2ODBEMzIgLyogQ2xhc3NOb2RlTGlzdC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlCQ0MwNjU3RDBGM0NFMUI3MDBDRDJEODcgLyogQ2xpZW50UmVjdC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0MwNjU4MDBGM0NFMUI3MDBDRDJEODcgLyogQ2xpZW50
UmVjdExpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODUwMzFCM0YwQTQ0RUZDNzAwRjk5MkUw
IC8qIENsaXBib2FyZEV2ZW50LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjg5ODQsNiArMjg5OTgs
NyBAQAogCQkJCUE5QzZFNjRDMEQ3NDY1RTcwMDY0NDJFOSAvKiBKU0RPTVBsdWdpbkFycmF5Q3Vz
dG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE5QzZFNjREMEQ3NDY1RTcwMDY0NDJFOSAvKiBK
U0RPTVBsdWdpbkN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMTcyQUY4RjE4MTFCQzM3
MDBGQkFEQjkgLyogSlNET01Qcm9taXNlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTgzMUQ0OEMw
MUI3RDlBNTIwMDZERTM5QSAvKiBDbGFzc05vZGVMaXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUJDNUE4NkI1MEMzMzY3RTgwMEVFQTY0OSAvKiBKU0RPTVNlbGVjdGlvbi5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk0QUNCQzBDQTEyNzEzRDBBMDA5NEY5QjIgLyogSlNET01TZXR0YWJsZVRva2Vu
TGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDNTEzN0NGMjExQTU4Mzc4MDA0QURCOTkgLyog
SlNET01TdHJpbmdMaXN0LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjkyNzYsNiArMjkyOTEsNyBA
QAogCQkJCTA3OTY5REJEMTdEMTQxNTEwMDdGRjg0MiAvKiBKU1JUQ1Nlc3Npb25EZXNjcmlwdGlv
bkNhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA3RDA3QjE0MTgzNDE1ODgwMEFCREQz
QyAvKiBKU1JUQ1Nlc3Npb25EZXNjcmlwdGlvbkN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkwNzk2OURCRjE3RDE0MTUxMDA3RkY4NDIgLyogSlNSVENTdGF0c0NhbGxiYWNrLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCTgzMDAzMEY1MUI3RDMzQjUwMEVEM0FBQyAvKiBHZW5lcmljQ2FjaGVk
SFRNTENvbGxlY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDc5NjlEQzExN0QxNDE1MTAw
N0ZGODQyIC8qIEpTUlRDU3RhdHNSZXBvcnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDc5NjlE
QzMxN0QxNDE1MTAwN0ZGODQyIC8qIEpTUlRDU3RhdHNSZXNwb25zZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkwN0RDNUZENDE3RDNFRUU5MDA5OUY4OTAgLyogSlNSVENTdGF0c1Jlc3BvbnNlQ3Vz
dG9tLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0Nv
bnRhaW5lck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCmlu
ZGV4IGJlM2EzYzE4N2E4NWMxYzdlOWY4NjRmZDNjZDdiMWE3ZGUyNmRhNjEuLmJlOTY0YmNmYzRh
YmQ5ZTY2OGYzNGYwZDRiMjAzNTExNzA2ZDdlNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Db250YWluZXJOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVy
Tm9kZS5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJFZGl0b3IuaCIKICNpbmNsdWRl
ICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKKyNpbmNsdWRlICJHZW5lcmlj
Q2FjaGVkSFRNTENvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJIVE1MRm9ybUNvbnRyb2xzQ29sbGVj
dGlvbi5oIgogI2luY2x1ZGUgIkhUTUxPcHRpb25zQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkhU
TUxUYWJsZVJvd3NDb2xsZWN0aW9uLmgiCkBAIC05MDIsNyArOTAzLDcgQEAgUmVmUHRyPFJhZGlv
Tm9kZUxpc3Q+IENvbnRhaW5lck5vZGU6OnJhZGlvTm9kZUxpc3QoY29uc3QgQXRvbWljU3RyaW5n
JiBuYW1lKQogCiBSZWY8SFRNTENvbGxlY3Rpb24+IENvbnRhaW5lck5vZGU6OmNoaWxkcmVuKCkK
IHsKLSAgICByZXR1cm4gZW5zdXJlQ2FjaGVkSFRNTENvbGxlY3Rpb24oTm9kZUNoaWxkcmVuKTsK
KyAgICByZXR1cm4gZW5zdXJlUmFyZURhdGEoKS5lbnN1cmVOb2RlTGlzdHMoKS5hZGRDYWNoZWRD
b2xsZWN0aW9uPEdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbjxDb2xsZWN0aW9uVHlwZVRyYWl0
czxOb2RlQ2hpbGRyZW4+Ojp0cmF2ZXJzYWxUeXBlPj4oKnRoaXMsIE5vZGVDaGlsZHJlbik7CiB9
CiAKIEVsZW1lbnQqIENvbnRhaW5lck5vZGU6OmZpcnN0RWxlbWVudENoaWxkKCkgY29uc3QKQEAg
LTkzOSwyMiArOTQwLDYgQEAgdm9pZCBDb250YWluZXJOb2RlOjpwcmVwZW5kKFZlY3RvcjxOb2Rl
T3JTdHJpbmc+JiYgbm9kZU9yU3RyaW5nVmVjdG9yLCBFeGNlcHRpb24KICAgICBpbnNlcnRCZWZv
cmUobm9kZS5yZWxlYXNlKCksIGZpcnN0Q2hpbGQoKSwgZWMpOwogfQogCi1SZWY8SFRNTENvbGxl
Y3Rpb24+IENvbnRhaW5lck5vZGU6OmVuc3VyZUNhY2hlZEhUTUxDb2xsZWN0aW9uKENvbGxlY3Rp
b25UeXBlIHR5cGUpCi17Ci0gICAgaWYgKEhUTUxDb2xsZWN0aW9uKiBjb2xsZWN0aW9uID0gY2Fj
aGVkSFRNTENvbGxlY3Rpb24odHlwZSkpCi0gICAgICAgIHJldHVybiAqY29sbGVjdGlvbjsKLQot
ICAgIGlmICh0eXBlID09IFRhYmxlUm93cykKLSAgICAgICAgcmV0dXJuIGVuc3VyZVJhcmVEYXRh
KCkuZW5zdXJlTm9kZUxpc3RzKCkuYWRkQ2FjaGVkQ29sbGVjdGlvbjxIVE1MVGFibGVSb3dzQ29s
bGVjdGlvbj4oZG93bmNhc3Q8SFRNTFRhYmxlRWxlbWVudD4oKnRoaXMpLCB0eXBlKTsKLSAgICBl
bHNlIGlmICh0eXBlID09IFNlbGVjdE9wdGlvbnMpCi0gICAgICAgIHJldHVybiBlbnN1cmVSYXJl
RGF0YSgpLmVuc3VyZU5vZGVMaXN0cygpLmFkZENhY2hlZENvbGxlY3Rpb248SFRNTE9wdGlvbnND
b2xsZWN0aW9uPihkb3duY2FzdDxIVE1MU2VsZWN0RWxlbWVudD4oKnRoaXMpLCB0eXBlKTsKLSAg
ICBlbHNlIGlmICh0eXBlID09IEZvcm1Db250cm9scykgewotICAgICAgICBBU1NFUlQoaGFzVGFn
TmFtZShIVE1MTmFtZXM6OmZvcm1UYWcpIHx8IGhhc1RhZ05hbWUoSFRNTE5hbWVzOjpmaWVsZHNl
dFRhZykpOwotICAgICAgICByZXR1cm4gZW5zdXJlUmFyZURhdGEoKS5lbnN1cmVOb2RlTGlzdHMo
KS5hZGRDYWNoZWRDb2xsZWN0aW9uPEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uPigqdGhpcywg
dHlwZSk7Ci0gICAgfQotICAgIHJldHVybiBlbnN1cmVSYXJlRGF0YSgpLmVuc3VyZU5vZGVMaXN0
cygpLmFkZENhY2hlZENvbGxlY3Rpb248SFRNTENvbGxlY3Rpb24+KCp0aGlzLCB0eXBlKTsKLX0K
LQogSFRNTENvbGxlY3Rpb24qIENvbnRhaW5lck5vZGU6OmNhY2hlZEhUTUxDb2xsZWN0aW9uKENv
bGxlY3Rpb25UeXBlIHR5cGUpCiB7CiAgICAgcmV0dXJuIGhhc1JhcmVEYXRhKCkgJiYgcmFyZURh
dGEoKS0+bm9kZUxpc3RzKCkgPyByYXJlRGF0YSgpLT5ub2RlTGlzdHMoKS0+Y2FjaGVkQ29sbGVj
dGlvbjxIVE1MQ29sbGVjdGlvbj4odHlwZSkgOiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWlu
ZXJOb2RlLmgKaW5kZXggZGEwNjIxZDdmMDVjNmVhYjgxZjBjNTdhMWRmZjU2MGJmZTY4OTlkZS4u
MDViM2ZjYWVkODQ4ZGRkYjY2NTE3MTg0NzVjYjc2NGVmOTUwMTFiNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
Q29udGFpbmVyTm9kZS5oCkBAIC0xNjksNyArMTY5LDYgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQg
c2V0Rmlyc3RDaGlsZChOb2RlKiBjaGlsZCkgeyBtX2ZpcnN0Q2hpbGQgPSBjaGlsZDsgfQogICAg
IHZvaWQgc2V0TGFzdENoaWxkKE5vZGUqIGNoaWxkKSB7IG1fbGFzdENoaWxkID0gY2hpbGQ7IH0K
IAotICAgIFJlZjxIVE1MQ29sbGVjdGlvbj4gZW5zdXJlQ2FjaGVkSFRNTENvbGxlY3Rpb24oQ29s
bGVjdGlvblR5cGUpOwogICAgIEhUTUxDb2xsZWN0aW9uKiBjYWNoZWRIVE1MQ29sbGVjdGlvbihD
b2xsZWN0aW9uVHlwZSk7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCA5
ZGVjNmM4MDJmMWQ4NTYxMzBhZmM0NWQxM2YyNDRhZmQzZjEzOWNlLi5kMTI4YTIxODI3ZDNjY2Uy
OGJkZmRhOTA3YzM5NzhmMjFhMDkzODc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTYz
LDEyICs2MywxMiBAQAogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWVM
b2FkZXJDbGllbnQuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKKyNpbmNsdWRlICJHZW5lcmlj
Q2FjaGVkSFRNTENvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJIVE1MQWxsQ29sbGVjdGlvbi5oIgog
I2luY2x1ZGUgIkhUTUxBbmNob3JFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEJhc2VFbGVtZW50
LmgiCiAjaW5jbHVkZSAiSFRNTEJvZHlFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTENhbnZhc0Vs
ZW1lbnQuaCIKLSNpbmNsdWRlICJIVE1MQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxEb2N1
bWVudC5oIgogI2luY2x1ZGUgIkhUTUxFbGVtZW50RmFjdG9yeS5oIgogI2luY2x1ZGUgIkhUTUxG
b3JtQ29udHJvbEVsZW1lbnQuaCIKQEAgLTQ3NzIsNTAgKzQ3NzIsNTEgQEAgYm9vbCBEb2N1bWVu
dDo6aGFzU1ZHUm9vdE5vZGUoKSBjb25zdAogICAgIHJldHVybiBkb2N1bWVudEVsZW1lbnQoKSAm
JiBkb2N1bWVudEVsZW1lbnQoKS0+aGFzVGFnTmFtZShTVkdOYW1lczo6c3ZnVGFnKTsKIH0KIAot
UmVmPEhUTUxDb2xsZWN0aW9uPiBEb2N1bWVudDo6ZW5zdXJlQ2FjaGVkQ29sbGVjdGlvbihDb2xs
ZWN0aW9uVHlwZSB0eXBlKQordGVtcGxhdGUgPENvbGxlY3Rpb25UeXBlIGNvbGxlY3Rpb25UeXBl
PgorUmVmPEhUTUxDb2xsZWN0aW9uPiBEb2N1bWVudDo6ZW5zdXJlQ2FjaGVkQ29sbGVjdGlvbigp
CiB7Ci0gICAgcmV0dXJuIGVuc3VyZVJhcmVEYXRhKCkuZW5zdXJlTm9kZUxpc3RzKCkuYWRkQ2Fj
aGVkQ29sbGVjdGlvbjxIVE1MQ29sbGVjdGlvbj4oKnRoaXMsIHR5cGUpOworICAgIHJldHVybiBl
bnN1cmVSYXJlRGF0YSgpLmVuc3VyZU5vZGVMaXN0cygpLmFkZENhY2hlZENvbGxlY3Rpb248R2Vu
ZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uPENvbGxlY3Rpb25UeXBlVHJhaXRzPGNvbGxlY3Rpb25U
eXBlPjo6dHJhdmVyc2FsVHlwZT4+KCp0aGlzLCBjb2xsZWN0aW9uVHlwZSk7CiB9CiAKIFJlZjxI
VE1MQ29sbGVjdGlvbj4gRG9jdW1lbnQ6OmltYWdlcygpCiB7Ci0gICAgcmV0dXJuIGVuc3VyZUNh
Y2hlZENvbGxlY3Rpb24oRG9jSW1hZ2VzKTsKKyAgICByZXR1cm4gZW5zdXJlQ2FjaGVkQ29sbGVj
dGlvbjxEb2NJbWFnZXM+KCk7CiB9CiAKIFJlZjxIVE1MQ29sbGVjdGlvbj4gRG9jdW1lbnQ6OmFw
cGxldHMoKQogewotICAgIHJldHVybiBlbnN1cmVDYWNoZWRDb2xsZWN0aW9uKERvY0FwcGxldHMp
OworICAgIHJldHVybiBlbnN1cmVDYWNoZWRDb2xsZWN0aW9uPERvY0FwcGxldHM+KCk7CiB9CiAK
IFJlZjxIVE1MQ29sbGVjdGlvbj4gRG9jdW1lbnQ6OmVtYmVkcygpCiB7Ci0gICAgcmV0dXJuIGVu
c3VyZUNhY2hlZENvbGxlY3Rpb24oRG9jRW1iZWRzKTsKKyAgICByZXR1cm4gZW5zdXJlQ2FjaGVk
Q29sbGVjdGlvbjxEb2NFbWJlZHM+KCk7CiB9CiAKIFJlZjxIVE1MQ29sbGVjdGlvbj4gRG9jdW1l
bnQ6OnBsdWdpbnMoKQogewogICAgIC8vIFRoaXMgaXMgYW4gYWxpYXMgZm9yIGVtYmVkcygpIHJl
cXVpcmVkIGZvciB0aGUgSlMgRE9NIGJpbmRpbmdzLgotICAgIHJldHVybiBlbnN1cmVDYWNoZWRD
b2xsZWN0aW9uKERvY0VtYmVkcyk7CisgICAgcmV0dXJuIGVuc3VyZUNhY2hlZENvbGxlY3Rpb248
RG9jRW1iZWRzPigpOwogfQogCiBSZWY8SFRNTENvbGxlY3Rpb24+IERvY3VtZW50OjpzY3JpcHRz
KCkKIHsKLSAgICByZXR1cm4gZW5zdXJlQ2FjaGVkQ29sbGVjdGlvbihEb2NTY3JpcHRzKTsKKyAg
ICByZXR1cm4gZW5zdXJlQ2FjaGVkQ29sbGVjdGlvbjxEb2NTY3JpcHRzPigpOwogfQogCiBSZWY8
SFRNTENvbGxlY3Rpb24+IERvY3VtZW50OjpsaW5rcygpCiB7Ci0gICAgcmV0dXJuIGVuc3VyZUNh
Y2hlZENvbGxlY3Rpb24oRG9jTGlua3MpOworICAgIHJldHVybiBlbnN1cmVDYWNoZWRDb2xsZWN0
aW9uPERvY0xpbmtzPigpOwogfQogCiBSZWY8SFRNTENvbGxlY3Rpb24+IERvY3VtZW50Ojpmb3Jt
cygpCiB7Ci0gICAgcmV0dXJuIGVuc3VyZUNhY2hlZENvbGxlY3Rpb24oRG9jRm9ybXMpOworICAg
IHJldHVybiBlbnN1cmVDYWNoZWRDb2xsZWN0aW9uPERvY0Zvcm1zPigpOwogfQogCiBSZWY8SFRN
TENvbGxlY3Rpb24+IERvY3VtZW50OjphbmNob3JzKCkKIHsKLSAgICByZXR1cm4gZW5zdXJlQ2Fj
aGVkQ29sbGVjdGlvbihEb2NBbmNob3JzKTsKKyAgICByZXR1cm4gZW5zdXJlQ2FjaGVkQ29sbGVj
dGlvbjxEb2NBbmNob3JzPigpOwogfQogCiBSZWY8SFRNTENvbGxlY3Rpb24+IERvY3VtZW50Ojph
bGwoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCA4MGZlN2E0OGVlZjIxYjc0MTA1NDI0MjI4YTZm
NzMyNmY2Y2Q0YTI3Li5lNTNiZjNlMWM2YzFlZjIwOWIzMjkzMzZmMzcyZTFmODEwY2U5Zjk3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuaApAQCAtMTEzLDcgKzExMyw2IEBAIGNsYXNzIEhUTUxJRnJhbWVF
bGVtZW50OwogY2xhc3MgSFRNTEltYWdlRWxlbWVudDsKIGNsYXNzIEhUTUxNYXBFbGVtZW50Owog
Y2xhc3MgSFRNTE1lZGlhRWxlbWVudDsKLWNsYXNzIEhUTUxOYW1lQ29sbGVjdGlvbjsKIGNsYXNz
IEhUTUxTY3JpcHRFbGVtZW50OwogY2xhc3MgSGl0VGVzdFJlcXVlc3Q7CiBjbGFzcyBIaXRUZXN0
UmVzdWx0OwpAQCAtMTM0NSw3ICsxMzQ0LDggQEAgcHJpdmF0ZToKIAogICAgIE5vZGUqIG5vZGVG
cm9tUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmIGNsaWVudFBvaW50LCBMYXlvdXRQb2ludCogbG9j
YWxQb2ludCA9IG51bGxwdHIpOwogCi0gICAgUmVmPEhUTUxDb2xsZWN0aW9uPiBlbnN1cmVDYWNo
ZWRDb2xsZWN0aW9uKENvbGxlY3Rpb25UeXBlKTsKKyAgICB0ZW1wbGF0ZSA8Q29sbGVjdGlvblR5
cGUgY29sbGVjdGlvblR5cGU+CisgICAgUmVmPEhUTUxDb2xsZWN0aW9uPiBlbnN1cmVDYWNoZWRD
b2xsZWN0aW9uKCk7CiAKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCiAgICAgdm9pZCBkaXNw
YXRjaEZ1bGxTY3JlZW5DaGFuZ2VPckVycm9yRXZlbnQoRGVxdWU8UmVmUHRyPE5vZGU+PiYsIGNv
bnN0IEF0b21pY1N0cmluZyYgZXZlbnROYW1lLCBib29sIHNob3VsZE5vdGlmeU1lZGlhRWxlbWVu
dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudENoaWxkSXRlcmF0b3Iu
aCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50Q2hpbGRJdGVyYXRvci5oCmluZGV4IDk0Y2Qz
MTMyMjQzNGJkYTA1YzlmNTZlMTdiMGUwNjRjMjI1ZTUxY2YuLjFhOTQ2YmI4ZmIxOTNjNjA0NTIw
OWZmYmQ1MmNkMzVhODljZmVjOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50Q2hpbGRJdGVyYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50Q2hpbGRJ
dGVyYXRvci5oCkBAIC00MSw2ICs0MSw3IEBAIHB1YmxpYzoKIAogICAgIEVsZW1lbnRDaGlsZEl0
ZXJhdG9yKGNvbnN0IENvbnRhaW5lck5vZGUmIHBhcmVudCk7CiAgICAgRWxlbWVudENoaWxkSXRl
cmF0b3IoY29uc3QgQ29udGFpbmVyTm9kZSYgcGFyZW50LCBFbGVtZW50VHlwZSogY3VycmVudCk7
CisgICAgRWxlbWVudENoaWxkSXRlcmF0b3ImIG9wZXJhdG9yLS0oKTsKICAgICBFbGVtZW50Q2hp
bGRJdGVyYXRvciYgb3BlcmF0b3IrKygpOwogfTsKIApAQCAtNTUsNiArNTYsNyBAQCBwdWJsaWM6
CiAKICAgICBFbGVtZW50Q2hpbGRDb25zdEl0ZXJhdG9yKGNvbnN0IENvbnRhaW5lck5vZGUmIHBh
cmVudCk7CiAgICAgRWxlbWVudENoaWxkQ29uc3RJdGVyYXRvcihjb25zdCBDb250YWluZXJOb2Rl
JiBwYXJlbnQsIGNvbnN0IEVsZW1lbnRUeXBlKiBjdXJyZW50KTsKKyAgICBFbGVtZW50Q2hpbGRD
b25zdEl0ZXJhdG9yJiBvcGVyYXRvci0tKCk7CiAgICAgRWxlbWVudENoaWxkQ29uc3RJdGVyYXRv
ciYgb3BlcmF0b3IrKygpOwogfTsKIApAQCAtMTA4LDYgKzExMCwxMiBAQCBpbmxpbmUgRWxlbWVu
dENoaWxkSXRlcmF0b3I8RWxlbWVudFR5cGU+OjpFbGVtZW50Q2hpbGRJdGVyYXRvcihjb25zdCBD
b250YWluZXJObwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+CitpbmxpbmUg
RWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVudFR5cGU+JiBFbGVtZW50Q2hpbGRJdGVyYXRvcjxF
bGVtZW50VHlwZT46Om9wZXJhdG9yLS0oKQoreworICAgIHJldHVybiBzdGF0aWNfY2FzdDxFbGVt
ZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50VHlwZT4mPihFbGVtZW50SXRlcmF0b3I8RWxlbWVudFR5
cGU+Ojp0cmF2ZXJzZVByZXZpb3VzU2libGluZygpKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1l
IEVsZW1lbnRUeXBlPgogaW5saW5lIEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiYg
RWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVudFR5cGU+OjpvcGVyYXRvcisrKCkKIHsKICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8RWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVudFR5cGU+Jj4oRWxl
bWVudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6dHJhdmVyc2VOZXh0U2libGluZygpKTsKQEAgLTEy
OCw2ICsxMzYsMTMgQEAgaW5saW5lIEVsZW1lbnRDaGlsZENvbnN0SXRlcmF0b3I8RWxlbWVudFR5
cGU+OjpFbGVtZW50Q2hpbGRDb25zdEl0ZXJhdG9yKGNvbnN0IEMKIH0KIAogdGVtcGxhdGUgPHR5
cGVuYW1lIEVsZW1lbnRUeXBlPgoraW5saW5lIEVsZW1lbnRDaGlsZENvbnN0SXRlcmF0b3I8RWxl
bWVudFR5cGU+JiBFbGVtZW50Q2hpbGRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6b3BlcmF0
b3ItLSgpCit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEVsZW1lbnRDaGlsZENvbnN0SXRlcmF0
b3I8RWxlbWVudFR5cGU+Jj4oRWxlbWVudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+Ojp0cmF2
ZXJzZVByZXZpb3VzU2libGluZygpKTsKK30KKworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVu
dFR5cGU+CiBpbmxpbmUgRWxlbWVudENoaWxkQ29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT4mIEVs
ZW1lbnRDaGlsZENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+OjpvcGVyYXRvcisrKCkKIHsKICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8RWxlbWVudENoaWxkQ29uc3RJdGVyYXRvcjxFbGVtZW50VHlw
ZT4mPihFbGVtZW50Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT46OnRyYXZlcnNlTmV4dFNpYmxp
bmcoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudERlc2NlbmRhbnRJ
dGVyYXRvci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnREZXNjZW5kYW50SXRlcmF0b3Iu
aAppbmRleCA4NjZiMGI3ZGI2NzMyMWEwODVkMTllMzI4MmNkNmExNDgzMTEzOGEyLi5lYjlkYWY5
N2FjMDE1YmI0OWRmN2MyOGRiNmVjYjI2ODVkNzgzNDhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmgKQEAgLTQ3LDYgKzQ3LDggQEAgcHVibGlj
OgogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yJiBv
dGhlcikgY29uc3Q7CiAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEVsZW1lbnREZXNjZW5kYW50
SXRlcmF0b3ImIG90aGVyKSBjb25zdDsKIAorICAgIHZvaWQgZHJvcEFzc2VydGlvbnMoKTsKKwog
cHJpdmF0ZToKICAgICBFbGVtZW50KiBtX2N1cnJlbnQ7CiAgICAgVmVjdG9yPEVsZW1lbnQqLCAx
Nj4gbV9hbmNlc3RvclNpYmxpbmdTdGFjazsKQEAgLTY5LDYgKzcxLDggQEAgcHVibGljOgogICAg
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3ImIG90
aGVyKSBjb25zdDsKICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgRWxlbWVudERlc2NlbmRhbnRD
b25zdEl0ZXJhdG9yJiBvdGhlcikgY29uc3Q7CiAKKyAgICB2b2lkIGRyb3BBc3NlcnRpb25zKCk7
CisKIHByaXZhdGU6CiAgICAgY29uc3QgRWxlbWVudCogbV9jdXJyZW50OwogICAgIFZlY3RvcjxF
bGVtZW50KiwgMTYsIFVuc2FmZVZlY3Rvck92ZXJmbG93PiBtX2FuY2VzdG9yU2libGluZ1N0YWNr
OwpAQCAtMTEyLDEwICsxMTYsMjAgQEAgaW5saW5lIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I6
OkVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IoKQogCiBpbmxpbmUgRWxlbWVudERlc2NlbmRhbnRJ
dGVyYXRvcjo6RWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcihFbGVtZW50KiBjdXJyZW50KQogICAg
IDogbV9jdXJyZW50KGN1cnJlbnQpCisjaWYgIUFTU0VSVF9ESVNBQkxFRAorICAgICwgbV9hc3Nl
cnRpb25zKGN1cnJlbnQpCisjZW5kaWYKIHsKICAgICBtX2FuY2VzdG9yU2libGluZ1N0YWNrLnVu
Y2hlY2tlZEFwcGVuZChudWxscHRyKTsKIH0KIAoraW5saW5lIHZvaWQgRWxlbWVudERlc2NlbmRh
bnRJdGVyYXRvcjo6ZHJvcEFzc2VydGlvbnMoKQoreworI2lmICFBU1NFUlRfRElTQUJMRUQKKyAg
ICBtX2Fzc2VydGlvbnMuY2xlYXIoKTsKKyNlbmRpZgorfQorCiBBTFdBWVNfSU5MSU5FIEVsZW1l
bnREZXNjZW5kYW50SXRlcmF0b3ImIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I6Om9wZXJhdG9y
KysoKQogewogICAgIEFTU0VSVChtX2N1cnJlbnQpOwpAQCAtMjE1LDEwICsyMjksMjAgQEAgaW5s
aW5lIEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvcjo6RWxlbWVudERlc2NlbmRhbnRDb25z
dEl0ZXJhdG9yKCkKIAogaW5saW5lIEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvcjo6RWxl
bWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yKGNvbnN0IEVsZW1lbnQqIGN1cnJlbnQpCiAgICAg
OiBtX2N1cnJlbnQoY3VycmVudCkKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAgLCBtX2Fzc2Vy
dGlvbnMoY3VycmVudCkKKyNlbmRpZgogewogICAgIG1fYW5jZXN0b3JTaWJsaW5nU3RhY2sudW5j
aGVja2VkQXBwZW5kKG51bGxwdHIpOwogfQogCitpbmxpbmUgdm9pZCBFbGVtZW50RGVzY2VuZGFu
dENvbnN0SXRlcmF0b3I6OmRyb3BBc3NlcnRpb25zKCkKK3sKKyNpZiAhQVNTRVJUX0RJU0FCTEVE
CisgICAgbV9hc3NlcnRpb25zLmNsZWFyKCk7CisjZW5kaWYKK30KKwogQUxXQVlTX0lOTElORSBF
bGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3ImIEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVy
YXRvcjo6b3BlcmF0b3IrKygpCiB7CiAgICAgQVNTRVJUKG1fY3VycmVudCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudEl0ZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRWxlbWVudEl0ZXJhdG9yLmgKaW5kZXggOGJmZDM4YjU0MTJjNWMxODFiYjQyNDg2MmJlM2Nh
M2ZlYWMxZWNkYy4uOGM2NTM5NjM5ZDhkNWQ4NGM1MDk0OWY2Yjc2NmJlYWFlYWZhNzg4MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRJdGVyYXRvci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50SXRlcmF0b3IuaApAQCAtNTMsNiArNTMsOCBAQCBwdWJsaWM6
CiAgICAgRWxlbWVudEl0ZXJhdG9yJiB0cmF2ZXJzZU5leHRTa2lwcGluZ0NoaWxkcmVuKCk7CiAg
ICAgRWxlbWVudEl0ZXJhdG9yJiB0cmF2ZXJzZUFuY2VzdG9yKCk7CiAKKyAgICB2b2lkIGRyb3BB
c3NlcnRpb25zKCk7CisKIHByaXZhdGU6CiAgICAgY29uc3QgQ29udGFpbmVyTm9kZSogbV9yb290
OwogICAgIEVsZW1lbnRUeXBlKiBtX2N1cnJlbnQ7CkBAIC04MSw2ICs4Myw4IEBAIHB1YmxpYzoK
ICAgICBFbGVtZW50Q29uc3RJdGVyYXRvciYgdHJhdmVyc2VOZXh0U2tpcHBpbmdDaGlsZHJlbigp
OwogICAgIEVsZW1lbnRDb25zdEl0ZXJhdG9yJiB0cmF2ZXJzZUFuY2VzdG9yKCk7CiAKKyAgICB2
b2lkIGRyb3BBc3NlcnRpb25zKCk7CisKIHByaXZhdGU6CiAgICAgY29uc3QgQ29udGFpbmVyTm9k
ZSogbV9yb290OwogICAgIGNvbnN0IEVsZW1lbnRUeXBlKiBtX2N1cnJlbnQ7CkBAIC0xODAsNiAr
MTg0LDE0IEBAIGlubGluZSBFbGVtZW50SXRlcmF0b3I8RWxlbWVudFR5cGU+JiBFbGVtZW50SXRl
cmF0b3I8RWxlbWVudFR5cGU+Ojp0cmF2ZXJzZU5leHRTCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFt
ZSBFbGVtZW50VHlwZT4KK2lubGluZSB2b2lkIEVsZW1lbnRJdGVyYXRvcjxFbGVtZW50VHlwZT46
OmRyb3BBc3NlcnRpb25zKCkKK3sKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAgbV9hc3NlcnRp
b25zLmNsZWFyKCk7CisjZW5kaWYKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBl
PgogaW5saW5lIEVsZW1lbnRUeXBlKiBmaW5kRWxlbWVudEFuY2VzdG9yT2ZUeXBlKGNvbnN0IEVs
ZW1lbnQmIGN1cnJlbnQpCiB7CiAgICAgZm9yIChFbGVtZW50KiBhbmNlc3RvciA9IGN1cnJlbnQu
cGFyZW50RWxlbWVudCgpOyBhbmNlc3RvcjsgYW5jZXN0b3IgPSBhbmNlc3Rvci0+cGFyZW50RWxl
bWVudCgpKSB7CkBAIC0zNDUsNiArMzU3LDE0IEBAIGlubGluZSBFbGVtZW50Q29uc3RJdGVyYXRv
cjxFbGVtZW50VHlwZT4mIEVsZW1lbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6dHJhCiB9
CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KK2lubGluZSB2b2lkIEVsZW1lbnRD
b25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6ZHJvcEFzc2VydGlvbnMoKQoreworI2lmICFBU1NF
UlRfRElTQUJMRUQKKyAgICBtX2Fzc2VydGlvbnMuY2xlYXIoKTsKKyNlbmRpZgorfQorCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+CiBpbmxpbmUgY29uc3QgRWxlbWVudFR5cGUmIEVs
ZW1lbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPjo6b3BlcmF0b3IqKCkgY29uc3QKIHsKICAg
ICBBU1NFUlQobV9jdXJyZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50SXRlcmF0b3JBc3NlcnRpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudEl0ZXJh
dG9yQXNzZXJ0aW9ucy5oCmluZGV4IDAzMDM1NGRjY2MzMmU0MTYyMmY5OGEwNzBhYTgyNDM1Y2M4
OTcxMDMuLmUxMzhmNzY4YWMzMjE1Mzc2NWJhZWYyZmUwNGE5NGJmNzJkMmJlNDUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50SXRlcmF0b3JBc3NlcnRpb25zLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRJdGVyYXRvckFzc2VydGlvbnMuaApAQCAtMzUsNiAr
MzUsNyBAQCBwdWJsaWM6CiAgICAgRWxlbWVudEl0ZXJhdG9yQXNzZXJ0aW9ucyhjb25zdCBFbGVt
ZW50KiBmaXJzdCA9IG51bGxwdHIpOwogICAgIGJvb2wgZG9tVHJlZUhhc011dGF0ZWQoKSBjb25z
dDsKICAgICB2b2lkIGRyb3BFdmVudERpc3BhdGNoQXNzZXJ0aW9uKCk7CisgICAgdm9pZCBjbGVh
cigpOwogCiBwcml2YXRlOgogICAgIGNvbnN0IERvY3VtZW50KiBtX2RvY3VtZW50OwpAQCAtNjIs
NiArNjMsMTQgQEAgaW5saW5lIHZvaWQgRWxlbWVudEl0ZXJhdG9yQXNzZXJ0aW9uczo6ZHJvcEV2
ZW50RGlzcGF0Y2hBc3NlcnRpb24oKQogICAgIG1fZXZlbnREaXNwYXRjaEFzc2VydGlvbiA9IE51
bGxvcHQ7CiB9CiAKK2lubGluZSB2b2lkIEVsZW1lbnRJdGVyYXRvckFzc2VydGlvbnM6OmNsZWFy
KCkKK3sKKyAgICBtX2RvY3VtZW50ID0gbnVsbHB0cjsKKyAgICBtX2luaXRpYWxET01UcmVlVmVy
c2lvbiA9IDA7CisgICAgbV9ldmVudERpc3BhdGNoQXNzZXJ0aW9uID0gTnVsbG9wdDsKK30KKwor
CiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0xpdmVOb2RlTGlz
dC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0xpdmVOb2RlTGlzdC5oCmluZGV4IDE5NmU1MGJiODJi
ZWJjY2Y3MjY0YjQ2M2EyZWVlNjNlYTZkMTBhYmIuLjAxMDQyNjY5NzFjNWFjMTY4NWViZDZmNDI0
NDU0NDgxZGQ2MmFjYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9MaXZlTm9kZUxp
c3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTGl2ZU5vZGVMaXN0LmgKQEAgLTI1LDYgKzI1
LDcgQEAKICNkZWZpbmUgTGl2ZU5vZGVMaXN0X2gKIAogI2luY2x1ZGUgIkNvbGxlY3Rpb25JbmRl
eENhY2hlLmgiCisjaW5jbHVkZSAiQ29sbGVjdGlvblRyYXZlcnNhbC5oIgogI2luY2x1ZGUgIkNv
bGxlY3Rpb25UeXBlLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFbGVtZW50
RGVzY2VuZGFudEl0ZXJhdG9yLmgiCkBAIC04MCwyNSArODEsMjggQEAgY2xhc3MgQ2FjaGVkTGl2
ZU5vZGVMaXN0IDogcHVibGljIExpdmVOb2RlTGlzdCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+
Q2FjaGVkTGl2ZU5vZGVMaXN0KCk7CiAKLSAgICB2aXJ0dWFsIHVuc2lnbmVkIGxlbmd0aCgpIGNv
bnN0IG92ZXJyaWRlIGZpbmFsOwotICAgIHZpcnR1YWwgTm9kZSogaXRlbSh1bnNpZ25lZCBvZmZz
ZXQpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOworICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0IG92
ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIG1faW5kZXhDYWNoZS5ub2RlQ291bnQobm9kZUxpc3QoKSk7
IH0KKyAgICBOb2RlKiBpdGVtKHVuc2lnbmVkIG9mZnNldCkgY29uc3Qgb3ZlcnJpZGUgZmluYWwg
eyByZXR1cm4gbV9pbmRleENhY2hlLm5vZGVBdChub2RlTGlzdCgpLCBvZmZzZXQpOyB9CiAKICAg
ICAvLyBGb3IgQ29sbGVjdGlvbkluZGV4Q2FjaGUKLSAgICBFbGVtZW50RGVzY2VuZGFudEl0ZXJh
dG9yIGNvbGxlY3Rpb25CZWdpbigpIGNvbnN0OwotICAgIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0
b3IgY29sbGVjdGlvbkxhc3QoKSBjb25zdDsKKyAgICBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9y
IGNvbGxlY3Rpb25CZWdpbigpIGNvbnN0IHsgcmV0dXJuIENvbGxlY3Rpb25UcmF2ZXJzYWw8Q29s
bGVjdGlvblRyYXZlcnNhbFR5cGU6OkRlc2NlbmRhbnRzPjo6YmVnaW4obm9kZUxpc3QoKSwgcm9v
dE5vZGUoKSk7IH0KKyAgICBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yIGNvbGxlY3Rpb25MYXN0
KCkgY29uc3QgeyByZXR1cm4gQ29sbGVjdGlvblRyYXZlcnNhbDxDb2xsZWN0aW9uVHJhdmVyc2Fs
VHlwZTo6RGVzY2VuZGFudHM+OjpsYXN0KG5vZGVMaXN0KCksIHJvb3ROb2RlKCkpOyB9CiAgICAg
RWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciBjb2xsZWN0aW9uRW5kKCkgY29uc3QgeyByZXR1cm4g
RWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcigpOyB9Ci0gICAgdm9pZCBjb2xsZWN0aW9uVHJhdmVy
c2VGb3J3YXJkKEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3ImLCB1bnNpZ25lZCBjb3VudCwgdW5z
aWduZWQmIHRyYXZlcnNlZENvdW50KSBjb25zdDsKLSAgICB2b2lkIGNvbGxlY3Rpb25UcmF2ZXJz
ZUJhY2t3YXJkKEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3ImLCB1bnNpZ25lZCBjb3VudCkgY29u
c3Q7CisgICAgdm9pZCBjb2xsZWN0aW9uVHJhdmVyc2VGb3J3YXJkKEVsZW1lbnREZXNjZW5kYW50
SXRlcmF0b3ImIGN1cnJlbnQsIHVuc2lnbmVkIGNvdW50LCB1bnNpZ25lZCYgdHJhdmVyc2VkQ291
bnQpIGNvbnN0IHsgQ29sbGVjdGlvblRyYXZlcnNhbDxDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6
RGVzY2VuZGFudHM+Ojp0cmF2ZXJzZUZvcndhcmQobm9kZUxpc3QoKSwgY3VycmVudCwgY291bnQs
IHRyYXZlcnNlZENvdW50KTsgfQorICAgIHZvaWQgY29sbGVjdGlvblRyYXZlcnNlQmFja3dhcmQo
RWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciYgY3VycmVudCwgdW5zaWduZWQgY291bnQpIGNvbnN0
IHsgQ29sbGVjdGlvblRyYXZlcnNhbDxDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6RGVzY2VuZGFu
dHM+Ojp0cmF2ZXJzZUJhY2t3YXJkKG5vZGVMaXN0KCksIGN1cnJlbnQsIGNvdW50KTsgfQogICAg
IGJvb2wgY29sbGVjdGlvbkNhblRyYXZlcnNlQmFja3dhcmQoKSBjb25zdCB7IHJldHVybiB0cnVl
OyB9Ci0gICAgdm9pZCB3aWxsVmFsaWRhdGVJbmRleENhY2hlKCkgY29uc3Q7CisgICAgdm9pZCB3
aWxsVmFsaWRhdGVJbmRleENhY2hlKCkgY29uc3QgeyBkb2N1bWVudCgpLnJlZ2lzdGVyTm9kZUxp
c3RGb3JJbnZhbGlkYXRpb24oY29uc3RfY2FzdDxDYWNoZWRMaXZlTm9kZUxpc3Q8Tm9kZUxpc3RU
eXBlPiY+KCp0aGlzKSk7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlQ2FjaGUoRG9j
dW1lbnQmKSBjb25zdCBvdmVycmlkZSBmaW5hbDsKLSAgICB2aXJ0dWFsIHNpemVfdCBtZW1vcnlD
b3N0KCkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7CisgICAgdmlydHVhbCBzaXplX3QgbWVtb3J5Q29z
dCgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIG1faW5kZXhDYWNoZS5tZW1vcnlDb3N0
KCk7IH0KIAogcHJvdGVjdGVkOgogICAgIENhY2hlZExpdmVOb2RlTGlzdChDb250YWluZXJOb2Rl
JiByb290Tm9kZSwgTm9kZUxpc3RJbnZhbGlkYXRpb25UeXBlKTsKIAogcHJpdmF0ZToKKyAgICBO
b2RlTGlzdFR5cGUmIG5vZGVMaXN0KCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Tm9kZUxpc3RUeXBl
Jj4oKnRoaXMpOyB9CisgICAgY29uc3QgTm9kZUxpc3RUeXBlJiBub2RlTGlzdCgpIGNvbnN0IHsg
cmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IE5vZGVMaXN0VHlwZSY+KCp0aGlzKTsgfQorCiAgICAg
Q29udGFpbmVyTm9kZSYgcm9vdE5vZGUoKSBjb25zdDsKIAogICAgIG11dGFibGUgQ29sbGVjdGlv
bkluZGV4Q2FjaGU8Tm9kZUxpc3RUeXBlLCBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPiBtX2lu
ZGV4Q2FjaGU7CkBAIC0xMzEsMTE1ICsxMzUsMzMgQEAgQUxXQVlTX0lOTElORSBib29sIHNob3Vs
ZEludmFsaWRhdGVUeXBlT25BdHRyaWJ1dGVDaGFuZ2UoTm9kZUxpc3RJbnZhbGlkYXRpb25UeXAK
IHRlbXBsYXRlIDxjbGFzcyBOb2RlTGlzdFR5cGU+CiBDYWNoZWRMaXZlTm9kZUxpc3Q8Tm9kZUxp
c3RUeXBlPjo6Q2FjaGVkTGl2ZU5vZGVMaXN0KENvbnRhaW5lck5vZGUmIG93bmVyTm9kZSwgTm9k
ZUxpc3RJbnZhbGlkYXRpb25UeXBlIGludmFsaWRhdGlvblR5cGUpCiAgICAgOiBMaXZlTm9kZUxp
c3Qob3duZXJOb2RlLCBpbnZhbGlkYXRpb25UeXBlKQotICAgICwgbV9pbmRleENhY2hlKHN0YXRp
Y19jYXN0PE5vZGVMaXN0VHlwZSY+KCp0aGlzKSkKKyAgICAsIG1faW5kZXhDYWNoZShub2RlTGlz
dCgpKQogewogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgTm9kZUxpc3RUeXBlPgogQ2FjaGVkTGl2ZU5v
ZGVMaXN0PE5vZGVMaXN0VHlwZT46On5DYWNoZWRMaXZlTm9kZUxpc3QoKQogewotICAgIGF1dG8m
IG5vZGVMaXN0ID0gc3RhdGljX2Nhc3Q8Y29uc3QgTm9kZUxpc3RUeXBlJj4oKnRoaXMpOwotICAg
IGlmIChtX2luZGV4Q2FjaGUuaGFzVmFsaWRDYWNoZShub2RlTGlzdCkpCisgICAgaWYgKG1faW5k
ZXhDYWNoZS5oYXNWYWxpZENhY2hlKG5vZGVMaXN0KCkpKQogICAgICAgICBkb2N1bWVudCgpLnVu
cmVnaXN0ZXJOb2RlTGlzdEZvckludmFsaWRhdGlvbigqdGhpcyk7CiB9CiAKIHRlbXBsYXRlIDxj
bGFzcyBOb2RlTGlzdFR5cGU+CiBpbmxpbmUgQ29udGFpbmVyTm9kZSYgQ2FjaGVkTGl2ZU5vZGVM
aXN0PE5vZGVMaXN0VHlwZT46OnJvb3ROb2RlKCkgY29uc3QKIHsKLSAgICBpZiAoc3RhdGljX2Nh
c3Q8Y29uc3QgTm9kZUxpc3RUeXBlJj4oKnRoaXMpLmlzUm9vdGVkQXREb2N1bWVudCgpICYmIG93
bmVyTm9kZSgpLmluRG9jdW1lbnQoKSkKKyAgICBpZiAobm9kZUxpc3QoKS5pc1Jvb3RlZEF0RG9j
dW1lbnQoKSAmJiBvd25lck5vZGUoKS5pbkRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiBvd25l
ck5vZGUoKS5kb2N1bWVudCgpOwogCiAgICAgcmV0dXJuIG93bmVyTm9kZSgpOwogfQogCiB0ZW1w
bGF0ZSA8Y2xhc3MgTm9kZUxpc3RUeXBlPgotRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciBDYWNo
ZWRMaXZlTm9kZUxpc3Q8Tm9kZUxpc3RUeXBlPjo6Y29sbGVjdGlvbkJlZ2luKCkgY29uc3QKLXsK
LSAgICBhdXRvJiBub2RlTGlzdCA9IHN0YXRpY19jYXN0PGNvbnN0IE5vZGVMaXN0VHlwZSY+KCp0
aGlzKTsKLSAgICBhdXRvIGRlc2NlbmRhbnRzID0gZWxlbWVudERlc2NlbmRhbnRzKHJvb3ROb2Rl
KCkpOwotICAgIGF1dG8gZW5kID0gZGVzY2VuZGFudHMuZW5kKCk7Ci0gICAgZm9yIChhdXRvIGl0
ID0gZGVzY2VuZGFudHMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgIGlmIChu
b2RlTGlzdC5lbGVtZW50TWF0Y2hlcygqaXQpKQotICAgICAgICAgICAgcmV0dXJuIGl0OwotICAg
IH0KLSAgICByZXR1cm4gZW5kOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgTm9kZUxpc3RUeXBlPgot
RWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciBDYWNoZWRMaXZlTm9kZUxpc3Q8Tm9kZUxpc3RUeXBl
Pjo6Y29sbGVjdGlvbkxhc3QoKSBjb25zdAotewotICAgIGF1dG8mIG5vZGVMaXN0ID0gc3RhdGlj
X2Nhc3Q8Y29uc3QgTm9kZUxpc3RUeXBlJj4oKnRoaXMpOwotICAgIGF1dG8gZGVzY2VuZGFudHMg
PSBlbGVtZW50RGVzY2VuZGFudHMocm9vdE5vZGUoKSk7Ci0gICAgYXV0byBlbmQgPSBkZXNjZW5k
YW50cy5lbmQoKTsKLSAgICBmb3IgKGF1dG8gaXQgPSBkZXNjZW5kYW50cy5sYXN0KCk7IGl0ICE9
IGVuZDsgLS1pdCkgewotICAgICAgICBpZiAobm9kZUxpc3QuZWxlbWVudE1hdGNoZXMoKml0KSkK
LSAgICAgICAgICAgIHJldHVybiBpdDsKLSAgICB9Ci0gICAgcmV0dXJuIGVuZDsKLX0KLQotdGVt
cGxhdGUgPGNsYXNzIE5vZGVMaXN0VHlwZT4KLXZvaWQgQ2FjaGVkTGl2ZU5vZGVMaXN0PE5vZGVM
aXN0VHlwZT46OmNvbGxlY3Rpb25UcmF2ZXJzZUZvcndhcmQoRWxlbWVudERlc2NlbmRhbnRJdGVy
YXRvciYgY3VycmVudCwgdW5zaWduZWQgY291bnQsIHVuc2lnbmVkJiB0cmF2ZXJzZWRDb3VudCkg
Y29uc3QKLXsKLSAgICBhdXRvJiBub2RlTGlzdCA9IHN0YXRpY19jYXN0PGNvbnN0IE5vZGVMaXN0
VHlwZSY+KCp0aGlzKTsKLSAgICBBU1NFUlQobm9kZUxpc3QuZWxlbWVudE1hdGNoZXMoKmN1cnJl
bnQpKTsKLSAgICBhdXRvIGVuZCA9IGNvbGxlY3Rpb25FbmQoKTsKLSAgICBmb3IgKHRyYXZlcnNl
ZENvdW50ID0gMDsgdHJhdmVyc2VkQ291bnQgPCBjb3VudDsgKyt0cmF2ZXJzZWRDb3VudCkgewot
ICAgICAgICBkbyB7Ci0gICAgICAgICAgICArK2N1cnJlbnQ7Ci0gICAgICAgICAgICBpZiAoY3Vy
cmVudCA9PSBlbmQpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9IHdoaWxlICgh
bm9kZUxpc3QuZWxlbWVudE1hdGNoZXMoKmN1cnJlbnQpKTsKLSAgICB9Ci19Ci0KLXRlbXBsYXRl
IDxjbGFzcyBOb2RlTGlzdFR5cGU+Ci12b2lkIENhY2hlZExpdmVOb2RlTGlzdDxOb2RlTGlzdFR5
cGU+Ojpjb2xsZWN0aW9uVHJhdmVyc2VCYWNrd2FyZChFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9y
JiBjdXJyZW50LCB1bnNpZ25lZCBjb3VudCkgY29uc3QKLXsKLSAgICBhdXRvJiBub2RlTGlzdCA9
IHN0YXRpY19jYXN0PGNvbnN0IE5vZGVMaXN0VHlwZSY+KCp0aGlzKTsKLSAgICBBU1NFUlQobm9k
ZUxpc3QuZWxlbWVudE1hdGNoZXMoKmN1cnJlbnQpKTsKLSAgICBhdXRvIGVuZCA9IGNvbGxlY3Rp
b25FbmQoKTsKLSAgICBmb3IgKDsgY291bnQ7IC0tY291bnQpIHsKLSAgICAgICAgZG8gewotICAg
ICAgICAgICAgLS1jdXJyZW50OwotICAgICAgICAgICAgaWYgKGN1cnJlbnQgPT0gZW5kKQotICAg
ICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfSB3aGlsZSAoIW5vZGVMaXN0LmVsZW1lbnRN
YXRjaGVzKCpjdXJyZW50KSk7Ci0gICAgfQotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgTm9kZUxpc3RU
eXBlPgotdm9pZCBDYWNoZWRMaXZlTm9kZUxpc3Q8Tm9kZUxpc3RUeXBlPjo6d2lsbFZhbGlkYXRl
SW5kZXhDYWNoZSgpIGNvbnN0Ci17Ci0gICAgZG9jdW1lbnQoKS5yZWdpc3Rlck5vZGVMaXN0Rm9y
SW52YWxpZGF0aW9uKGNvbnN0X2Nhc3Q8Tm9kZUxpc3RUeXBlJj4oc3RhdGljX2Nhc3Q8Y29uc3Qg
Tm9kZUxpc3RUeXBlJj4oKnRoaXMpKSk7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBOb2RlTGlzdFR5
cGU+CiB2b2lkIENhY2hlZExpdmVOb2RlTGlzdDxOb2RlTGlzdFR5cGU+OjppbnZhbGlkYXRlQ2Fj
aGUoRG9jdW1lbnQmIGRvY3VtZW50KSBjb25zdAogewotICAgIGF1dG8mIG5vZGVMaXN0ID0gc3Rh
dGljX2Nhc3Q8Y29uc3QgTm9kZUxpc3RUeXBlJj4oKnRoaXMpOwotICAgIGlmICghbV9pbmRleENh
Y2hlLmhhc1ZhbGlkQ2FjaGUobm9kZUxpc3QpKQorICAgIGlmICghbV9pbmRleENhY2hlLmhhc1Zh
bGlkQ2FjaGUobm9kZUxpc3QoKSkpCiAgICAgICAgIHJldHVybjsKLSAgICBkb2N1bWVudC51bnJl
Z2lzdGVyTm9kZUxpc3RGb3JJbnZhbGlkYXRpb24oY29uc3RfY2FzdDxOb2RlTGlzdFR5cGUmPihu
b2RlTGlzdCkpOwotICAgIG1faW5kZXhDYWNoZS5pbnZhbGlkYXRlKG5vZGVMaXN0KTsKLX0KLQot
dGVtcGxhdGUgPGNsYXNzIE5vZGVMaXN0VHlwZT4KLXVuc2lnbmVkIENhY2hlZExpdmVOb2RlTGlz
dDxOb2RlTGlzdFR5cGU+OjpsZW5ndGgoKSBjb25zdAotewotICAgIHJldHVybiBtX2luZGV4Q2Fj
aGUubm9kZUNvdW50KHN0YXRpY19jYXN0PGNvbnN0IE5vZGVMaXN0VHlwZSY+KCp0aGlzKSk7Ci19
Ci0KLXRlbXBsYXRlIDxjbGFzcyBOb2RlTGlzdFR5cGU+Ci1Ob2RlKiBDYWNoZWRMaXZlTm9kZUxp
c3Q8Tm9kZUxpc3RUeXBlPjo6aXRlbSh1bnNpZ25lZCBvZmZzZXQpIGNvbnN0Ci17Ci0gICAgcmV0
dXJuIG1faW5kZXhDYWNoZS5ub2RlQXQoc3RhdGljX2Nhc3Q8Y29uc3QgTm9kZUxpc3RUeXBlJj4o
KnRoaXMpLCBvZmZzZXQpOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgTm9kZUxpc3RUeXBlPgotc2l6
ZV90IENhY2hlZExpdmVOb2RlTGlzdDxOb2RlTGlzdFR5cGU+OjptZW1vcnlDb3N0KCkgY29uc3QK
LXsKLSAgICByZXR1cm4gbV9pbmRleENhY2hlLm1lbW9yeUNvc3QoKTsKKyAgICBkb2N1bWVudC51
bnJlZ2lzdGVyTm9kZUxpc3RGb3JJbnZhbGlkYXRpb24oY29uc3RfY2FzdDxOb2RlTGlzdFR5cGUm
Pihub2RlTGlzdCgpKSk7CisgICAgbV9pbmRleENhY2hlLmludmFsaWRhdGUobm9kZUxpc3QoKSk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvQ2FjaGVkSFRNTENvbGxlY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ2FjaGVk
SFRNTENvbGxlY3Rpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MTc2MDIwYjExMWY0ZTZjN2NmNGQ1ZWI0NDVj
MzNkZWEwNDdjYjYzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9DYWNo
ZWRIVE1MQ29sbGVjdGlvbi5oCkBAIC0wLDAgKzEsMTU4IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRl
ZiBDYWNoZWRIVE1MQ29sbGVjdGlvbl9oCisjZGVmaW5lIENhY2hlZEhUTUxDb2xsZWN0aW9uX2gK
KworI2luY2x1ZGUgIkNvbGxlY3Rpb25UcmF2ZXJzYWwuaCIKKyNpbmNsdWRlICJIVE1MQ29sbGVj
dGlvbi5oIgorI2luY2x1ZGUgIkhUTUxFbGVtZW50LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KwordGVtcGxhdGUgPHR5cGVuYW1lIEhUTUxDb2xsZWN0aW9uQ2xhc3MsIENvbGxlY3Rpb25UcmF2
ZXJzYWxUeXBlIHRyYXZlcnNhbFR5cGU+CitjbGFzcyBDYWNoZWRIVE1MQ29sbGVjdGlvbiA6IHB1
YmxpYyBIVE1MQ29sbGVjdGlvbiB7CitwdWJsaWM6CisgICAgQ2FjaGVkSFRNTENvbGxlY3Rpb24o
Q29udGFpbmVyTm9kZSYgYmFzZSwgQ29sbGVjdGlvblR5cGUpOworCisgICAgdmlydHVhbCB+Q2Fj
aGVkSFRNTENvbGxlY3Rpb24oKTsKKworICAgIHZpcnR1YWwgdW5zaWduZWQgbGVuZ3RoKCkgY29u
c3Qgb3ZlcnJpZGUgZmluYWwgeyByZXR1cm4gbV9pbmRleENhY2hlLm5vZGVDb3VudChjb2xsZWN0
aW9uKCkpOyB9CisgICAgdmlydHVhbCBFbGVtZW50KiBpdGVtKHVuc2lnbmVkIG9mZnNldCkgY29u
c3Qgb3ZlcnJpZGUgZmluYWwgeyByZXR1cm4gbV9pbmRleENhY2hlLm5vZGVBdChjb2xsZWN0aW9u
KCksIG9mZnNldCk7IH0KKyAgICB2aXJ0dWFsIEVsZW1lbnQqIG5hbWVkSXRlbShjb25zdCBBdG9t
aWNTdHJpbmcmIG5hbWUpIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgc2l6ZV90IG1lbW9y
eUNvc3QoKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiBtX2luZGV4Q2FjaGUubWVtb3J5
Q29zdCgpICsgSFRNTENvbGxlY3Rpb246Om1lbW9yeUNvc3QoKTsgfQorCisgICAgLy8gRm9yIENv
bGxlY3Rpb25JbmRleENhY2hlOyBkbyBub3QgdXNlIGVsc2V3aGVyZS4KKyAgICB1c2luZyBDb2xs
ZWN0aW9uVHJhdmVyc2FsSXRlcmF0b3IgPSB0eXBlbmFtZSBDb2xsZWN0aW9uVHJhdmVyc2FsPHRy
YXZlcnNhbFR5cGU+OjpJdGVyYXRvcjsKKyAgICBDb2xsZWN0aW9uVHJhdmVyc2FsSXRlcmF0b3Ig
Y29sbGVjdGlvbkJlZ2luKCkgY29uc3QgeyByZXR1cm4gQ29sbGVjdGlvblRyYXZlcnNhbDx0cmF2
ZXJzYWxUeXBlPjo6YmVnaW4oY29sbGVjdGlvbigpLCByb290Tm9kZSgpKTsgfQorICAgIENvbGxl
Y3Rpb25UcmF2ZXJzYWxJdGVyYXRvciBjb2xsZWN0aW9uTGFzdCgpIGNvbnN0IHsgcmV0dXJuIENv
bGxlY3Rpb25UcmF2ZXJzYWw8dHJhdmVyc2FsVHlwZT46Omxhc3QoY29sbGVjdGlvbigpLCByb290
Tm9kZSgpKTsgfQorICAgIENvbGxlY3Rpb25UcmF2ZXJzYWxJdGVyYXRvciBjb2xsZWN0aW9uRW5k
KCkgY29uc3QgeyByZXR1cm4gQ29sbGVjdGlvblRyYXZlcnNhbDx0cmF2ZXJzYWxUeXBlPjo6ZW5k
KHJvb3ROb2RlKCkpOyB9CisgICAgdm9pZCBjb2xsZWN0aW9uVHJhdmVyc2VGb3J3YXJkKENvbGxl
Y3Rpb25UcmF2ZXJzYWxJdGVyYXRvciYgY3VycmVudCwgdW5zaWduZWQgY291bnQsIHVuc2lnbmVk
JiB0cmF2ZXJzZWRDb3VudCkgY29uc3QgeyBDb2xsZWN0aW9uVHJhdmVyc2FsPHRyYXZlcnNhbFR5
cGU+Ojp0cmF2ZXJzZUZvcndhcmQoY29sbGVjdGlvbigpLCBjdXJyZW50LCBjb3VudCwgdHJhdmVy
c2VkQ291bnQpOyB9CisgICAgdm9pZCBjb2xsZWN0aW9uVHJhdmVyc2VCYWNrd2FyZChDb2xsZWN0
aW9uVHJhdmVyc2FsSXRlcmF0b3ImIGN1cnJlbnQsIHVuc2lnbmVkIGNvdW50KSBjb25zdCB7IENv
bGxlY3Rpb25UcmF2ZXJzYWw8dHJhdmVyc2FsVHlwZT46OnRyYXZlcnNlQmFja3dhcmQoY29sbGVj
dGlvbigpLCBjdXJyZW50LCBjb3VudCk7IH0KKyAgICBib29sIGNvbGxlY3Rpb25DYW5UcmF2ZXJz
ZUJhY2t3YXJkKCkgY29uc3QgeyByZXR1cm4gdHJhdmVyc2FsVHlwZSAhPSBDb2xsZWN0aW9uVHJh
dmVyc2FsVHlwZTo6Q3VzdG9tRm9yd2FyZE9ubHk7IH0KKyAgICB2b2lkIHdpbGxWYWxpZGF0ZUlu
ZGV4Q2FjaGUoKSBjb25zdCB7IGRvY3VtZW50KCkucmVnaXN0ZXJDb2xsZWN0aW9uKGNvbnN0X2Nh
c3Q8Q2FjaGVkSFRNTENvbGxlY3Rpb248SFRNTENvbGxlY3Rpb25DbGFzcywgdHJhdmVyc2FsVHlw
ZT4mPigqdGhpcykpOyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZUNhY2hlKERvY3Vt
ZW50Jikgb3ZlcnJpZGU7CisKKyAgICBib29sIGVsZW1lbnRNYXRjaGVzKEVsZW1lbnQmKSBjb25z
dDsKKworcHJpdmF0ZToKKyAgICBIVE1MQ29sbGVjdGlvbkNsYXNzJiBjb2xsZWN0aW9uKCkgeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8SFRNTENvbGxlY3Rpb25DbGFzcyY+KCp0aGlzKTsgfQorICAgIGNv
bnN0IEhUTUxDb2xsZWN0aW9uQ2xhc3MmIGNvbGxlY3Rpb24oKSBjb25zdCB7IHJldHVybiBzdGF0
aWNfY2FzdDxjb25zdCBIVE1MQ29sbGVjdGlvbkNsYXNzJj4oKnRoaXMpOyB9CisKKyAgICBtdXRh
YmxlIENvbGxlY3Rpb25JbmRleENhY2hlPEhUTUxDb2xsZWN0aW9uQ2xhc3MsIENvbGxlY3Rpb25U
cmF2ZXJzYWxJdGVyYXRvcj4gbV9pbmRleENhY2hlOworfTsKKwordGVtcGxhdGUgPHR5cGVuYW1l
IEhUTUxDb2xsZWN0aW9uQ2xhc3MsIENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlIHRyYXZlcnNhbFR5
cGU+CitDYWNoZWRIVE1MQ29sbGVjdGlvbjxIVE1MQ29sbGVjdGlvbkNsYXNzLCB0cmF2ZXJzYWxU
eXBlPjo6Q2FjaGVkSFRNTENvbGxlY3Rpb24oQ29udGFpbmVyTm9kZSYgYmFzZSwgQ29sbGVjdGlv
blR5cGUgY29sbGVjdGlvblR5cGUpCisgICAgOiBIVE1MQ29sbGVjdGlvbihiYXNlLCBjb2xsZWN0
aW9uVHlwZSkKKyAgICAsIG1faW5kZXhDYWNoZShjb2xsZWN0aW9uKCkpCit7IH0KKwordGVtcGxh
dGUgPHR5cGVuYW1lIEhUTUxDb2xsZWN0aW9uQ2xhc3MsIENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBl
IHRyYXZlcnNhbFR5cGU+CitDYWNoZWRIVE1MQ29sbGVjdGlvbjxIVE1MQ29sbGVjdGlvbkNsYXNz
LCB0cmF2ZXJzYWxUeXBlPjo6fkNhY2hlZEhUTUxDb2xsZWN0aW9uKCkKK3sKKyAgICBpZiAobV9p
bmRleENhY2hlLmhhc1ZhbGlkQ2FjaGUoY29sbGVjdGlvbigpKSkKKyAgICAgICAgZG9jdW1lbnQo
KS51bnJlZ2lzdGVyQ29sbGVjdGlvbigqdGhpcyk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBI
VE1MQ29sbGVjdGlvbkNsYXNzLCBDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZSB0cmF2ZXJzYWxUeXBl
Pgordm9pZCBDYWNoZWRIVE1MQ29sbGVjdGlvbjxIVE1MQ29sbGVjdGlvbkNsYXNzLCB0cmF2ZXJz
YWxUeXBlPjo6aW52YWxpZGF0ZUNhY2hlKERvY3VtZW50JiBkb2N1bWVudCkKK3sKKyAgICBIVE1M
Q29sbGVjdGlvbjo6aW52YWxpZGF0ZUNhY2hlKGRvY3VtZW50KTsKKyAgICBpZiAobV9pbmRleENh
Y2hlLmhhc1ZhbGlkQ2FjaGUoY29sbGVjdGlvbigpKSkgeworICAgICAgICBkb2N1bWVudC51bnJl
Z2lzdGVyQ29sbGVjdGlvbigqdGhpcyk7CisgICAgICAgIG1faW5kZXhDYWNoZS5pbnZhbGlkYXRl
KGNvbGxlY3Rpb24oKSk7CisgICAgfQorfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgSFRNTENvbGxl
Y3Rpb25DbGFzcywgQ29sbGVjdGlvblRyYXZlcnNhbFR5cGUgdHJhdmVyc2FsVHlwZT4KK2Jvb2wg
Q2FjaGVkSFRNTENvbGxlY3Rpb248SFRNTENvbGxlY3Rpb25DbGFzcywgdHJhdmVyc2FsVHlwZT46
OmVsZW1lbnRNYXRjaGVzKEVsZW1lbnQmKSBjb25zdAoreworICAgIC8vIFdlIGNhbGwgdGhlIGVs
ZW1lbnRNYXRjaGVzKCkgbWV0aG9kIGRpcmVjdGx5IG9uIHRoZSBzdWJjbGFzcyBpbnN0ZWFkIGZv
ciBwZXJmb3JtYW5jZS4KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFs
c2U7Cit9CisKK3N0YXRpYyBpbmxpbmUgYm9vbCBuYW1lU2hvdWxkQmVWaXNpYmxlSW5Eb2N1bWVu
dEFsbChIVE1MRWxlbWVudCYgZWxlbWVudCkKK3sKKyAgICAvLyBUaGUgZG9jdW1lbnQuYWxsIGNv
bGxlY3Rpb24gcmV0dXJucyBvbmx5IGNlcnRhaW4gdHlwZXMgb2YgZWxlbWVudHMgYnkgbmFtZSwK
KyAgICAvLyBhbHRob3VnaCBpdCByZXR1cm5zIGFueSB0eXBlIG9mIGVsZW1lbnQgYnkgaWQuCisg
ICAgcmV0dXJuIGVsZW1lbnQuaGFzVGFnTmFtZShIVE1MTmFtZXM6OmFwcGxldFRhZykKKyAgICAg
ICAgfHwgZWxlbWVudC5oYXNUYWdOYW1lKEhUTUxOYW1lczo6ZW1iZWRUYWcpCisgICAgICAgIHx8
IGVsZW1lbnQuaGFzVGFnTmFtZShIVE1MTmFtZXM6OmZvcm1UYWcpCisgICAgICAgIHx8IGVsZW1l
bnQuaGFzVGFnTmFtZShIVE1MTmFtZXM6OmltZ1RhZykKKyAgICAgICAgfHwgZWxlbWVudC5oYXNU
YWdOYW1lKEhUTUxOYW1lczo6aW5wdXRUYWcpCisgICAgICAgIHx8IGVsZW1lbnQuaGFzVGFnTmFt
ZShIVE1MTmFtZXM6Om9iamVjdFRhZykKKyAgICAgICAgfHwgZWxlbWVudC5oYXNUYWdOYW1lKEhU
TUxOYW1lczo6c2VsZWN0VGFnKTsKK30KKworc3RhdGljIGlubGluZSBib29sIG5hbWVTaG91bGRC
ZVZpc2libGVJbkRvY3VtZW50QWxsKEVsZW1lbnQmIGVsZW1lbnQpCit7CisgICAgcmV0dXJuIGlz
PEhUTUxFbGVtZW50PihlbGVtZW50KSAmJiBuYW1lU2hvdWxkQmVWaXNpYmxlSW5Eb2N1bWVudEFs
bChkb3duY2FzdDxIVE1MRWxlbWVudD4oZWxlbWVudCkpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgSFRNTENvbGxlY3Rpb25DbGFzcywgQ29sbGVjdGlvblRyYXZlcnNhbFR5cGUgdHJhdmVyc2Fs
VHlwZT4KK0VsZW1lbnQqIENhY2hlZEhUTUxDb2xsZWN0aW9uPEhUTUxDb2xsZWN0aW9uQ2xhc3Ms
IHRyYXZlcnNhbFR5cGU+OjpuYW1lZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKSBjb25z
dAoreworICAgIC8vIGh0dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20vd29ya3Nob3AvYXV0aG9yL2Ro
dG1sL3JlZmVyZW5jZS9tZXRob2RzL25hbWVkaXRlbS5hc3AKKyAgICAvLyBUaGlzIG1ldGhvZCBm
aXJzdCBzZWFyY2hlcyBmb3IgYW4gb2JqZWN0IHdpdGggYSBtYXRjaGluZyBpZAorICAgIC8vIGF0
dHJpYnV0ZS4gSWYgYSBtYXRjaCBpcyBub3QgZm91bmQsIHRoZSBtZXRob2QgdGhlbiBzZWFyY2hl
cyBmb3IgYW4KKyAgICAvLyBvYmplY3Qgd2l0aCBhIG1hdGNoaW5nIG5hbWUgYXR0cmlidXRlLCBi
dXQgb25seSBvbiB0aG9zZSBlbGVtZW50cworICAgIC8vIHRoYXQgYXJlIGFsbG93ZWQgYSBuYW1l
IGF0dHJpYnV0ZS4KKworICAgIGlmIChuYW1lLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisKKyAgICBDb250YWluZXJOb2RlJiByb290ID0gcm9vdE5vZGUoKTsKKyAgICBpZiAo
dHJhdmVyc2FsVHlwZSAhPSBDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6Q3VzdG9tRm9yd2FyZE9u
bHkgJiYgcm9vdC5pc0luVHJlZVNjb3BlKCkpIHsKKyAgICAgICAgRWxlbWVudCogY2FuZGlkYXRl
ID0gbnVsbHB0cjsKKworICAgICAgICBUcmVlU2NvcGUmIHRyZWVTY29wZSA9IHJvb3QudHJlZVNj
b3BlKCk7CisgICAgICAgIGlmICh0cmVlU2NvcGUuaGFzRWxlbWVudFdpdGhJZCgqbmFtZS5pbXBs
KCkpKSB7CisgICAgICAgICAgICBpZiAoIXRyZWVTY29wZS5jb250YWluc011bHRpcGxlRWxlbWVu
dHNXaXRoSWQobmFtZSkpCisgICAgICAgICAgICAgICAgY2FuZGlkYXRlID0gdHJlZVNjb3BlLmdl
dEVsZW1lbnRCeUlkKG5hbWUpOworICAgICAgICB9IGVsc2UgaWYgKHRyZWVTY29wZS5oYXNFbGVt
ZW50V2l0aE5hbWUoKm5hbWUuaW1wbCgpKSkgeworICAgICAgICAgICAgaWYgKCF0cmVlU2NvcGUu
Y29udGFpbnNNdWx0aXBsZUVsZW1lbnRzV2l0aE5hbWUobmFtZSkpIHsKKyAgICAgICAgICAgICAg
ICBjYW5kaWRhdGUgPSB0cmVlU2NvcGUuZ2V0RWxlbWVudEJ5TmFtZShuYW1lKTsKKyAgICAgICAg
ICAgICAgICBpZiAoY2FuZGlkYXRlICYmIHR5cGUoKSA9PSBEb2NBbGwgJiYgIW5hbWVTaG91bGRC
ZVZpc2libGVJbkRvY3VtZW50QWxsKCpjYW5kaWRhdGUpKQorICAgICAgICAgICAgICAgICAgICBj
YW5kaWRhdGUgPSBudWxscHRyOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UKKyAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgICAgIGlmIChjYW5kaWRhdGUgJiYgY29sbGVj
dGlvbigpLmVsZW1lbnRNYXRjaGVzKCpjYW5kaWRhdGUpKSB7CisgICAgICAgICAgICBpZiAodHJh
dmVyc2FsVHlwZSA9PSBDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6Q2hpbGRyZW5Pbmx5ID8gY2Fu
ZGlkYXRlLT5wYXJlbnROb2RlKCkgPT0gJnJvb3QgOiBjYW5kaWRhdGUtPmlzRGVzY2VuZGFudE9m
KCZyb290KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gY2FuZGlkYXRlOworICAgICAgICB9Cisg
ICAgfQorCisgICAgcmV0dXJuIG5hbWVkSXRlbVNsb3cobmFtZSk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIENhY2hlZEhUTUxDb2xsZWN0aW9uX2gKKwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9Db2xsZWN0aW9uVHJhdmVyc2FsLmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0NvbGxlY3Rpb25UcmF2ZXJzYWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41YzcxYWM3NTMy
NWNjMjc3M2E2MDM5NWIwOGUxZDVmNDViOGVhZDllCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9Db2xsZWN0aW9uVHJhdmVyc2FsLmgKQEAgLTAsMCArMSwyNDggQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIENvbGxlY3Rpb25UcmF2ZXJzYWxfaAorI2RlZmluZSBDb2xsZWN0
aW9uVHJhdmVyc2FsX2gKKworI2luY2x1ZGUgIkNvbGxlY3Rpb25UeXBlLmgiCisjaW5jbHVkZSAi
RWxlbWVudENoaWxkSXRlcmF0b3IuaCIKKyNpbmNsdWRlICJFbGVtZW50RGVzY2VuZGFudEl0ZXJh
dG9yLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordGVtcGxhdGUgPENvbGxlY3Rpb25UcmF2
ZXJzYWxUeXBlIHRyYXZlcnNhbFR5cGU+CitzdHJ1Y3QgQ29sbGVjdGlvblRyYXZlcnNhbCB7IH07
CisKK3RlbXBsYXRlIDw+CitzdHJ1Y3QgQ29sbGVjdGlvblRyYXZlcnNhbDxDb2xsZWN0aW9uVHJh
dmVyc2FsVHlwZTo6RGVzY2VuZGFudHM+IHsKKyAgICB1c2luZyBJdGVyYXRvciA9IEVsZW1lbnRE
ZXNjZW5kYW50SXRlcmF0b3I7CisKKyAgICBzdGF0aWMgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRv
ciBlbmQoQ29udGFpbmVyTm9kZSYpIHsgcmV0dXJuIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3Io
KTsgfQorCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIENvbGxlY3Rpb25DbGFzcz4KKyAgICBzdGF0
aWMgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciBiZWdpbihjb25zdCBDb2xsZWN0aW9uQ2xhc3Mm
LCBDb250YWluZXJOb2RlJiByb290Tm9kZSk7CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ29s
bGVjdGlvbkNsYXNzPgorICAgIHN0YXRpYyBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yIGxhc3Qo
Y29uc3QgQ29sbGVjdGlvbkNsYXNzJiwgQ29udGFpbmVyTm9kZSYgcm9vdE5vZGUpOworCisgICAg
dGVtcGxhdGUgPHR5cGVuYW1lIENvbGxlY3Rpb25DbGFzcz4KKyAgICBzdGF0aWMgdm9pZCB0cmF2
ZXJzZUZvcndhcmQoY29uc3QgQ29sbGVjdGlvbkNsYXNzJiwgRWxlbWVudERlc2NlbmRhbnRJdGVy
YXRvciYgY3VycmVudCwgdW5zaWduZWQgY291bnQsIHVuc2lnbmVkJiB0cmF2ZXJzZWRDb3VudCk7
CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ29sbGVjdGlvbkNsYXNzPgorICAgIHN0YXRpYyB2
b2lkIHRyYXZlcnNlQmFja3dhcmQoY29uc3QgQ29sbGVjdGlvbkNsYXNzJiwgRWxlbWVudERlc2Nl
bmRhbnRJdGVyYXRvciYgY3VycmVudCwgdW5zaWduZWQgY291bnQpOworfTsKKwordGVtcGxhdGUg
PHR5cGVuYW1lIENvbGxlY3Rpb25DbGFzcz4KK2lubGluZSBFbGVtZW50RGVzY2VuZGFudEl0ZXJh
dG9yIENvbGxlY3Rpb25UcmF2ZXJzYWw8Q29sbGVjdGlvblRyYXZlcnNhbFR5cGU6OkRlc2NlbmRh
bnRzPjo6YmVnaW4oY29uc3QgQ29sbGVjdGlvbkNsYXNzJiBjb2xsZWN0aW9uLCBDb250YWluZXJO
b2RlJiByb290Tm9kZSkKK3sKKyAgICBhdXRvIGRlc2NlbmRhbnRzID0gZWxlbWVudERlc2NlbmRh
bnRzKHJvb3ROb2RlKTsKKyAgICBhdXRvIGVuZCA9IGRlc2NlbmRhbnRzLmVuZCgpOworICAgIGZv
ciAoYXV0byBpdCA9IGRlc2NlbmRhbnRzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAg
ICAgICBpZiAoY29sbGVjdGlvbi5lbGVtZW50TWF0Y2hlcygqaXQpKSB7CisgICAgICAgICAgICAv
LyBEcm9wIGl0ZXJhdG9yIGFzc2VydGlvbnMgYmVjYXVzZSBIVE1MQ29sbGVjdGlvbnMgLyBOb2Rl
TGlzdCB1c2UgYSBmaW5lLWdyYWluZWQgaW52YWxpZGF0aW9uIHNjaGVtZS4KKyAgICAgICAgICAg
IGl0LmRyb3BBc3NlcnRpb25zKCk7CisgICAgICAgICAgICByZXR1cm4gaXQ7CisgICAgICAgIH0K
KyAgICB9CisgICAgcmV0dXJuIGVuZDsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIENvbGxlY3Rp
b25DbGFzcz4KK2lubGluZSBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yIENvbGxlY3Rpb25UcmF2
ZXJzYWw8Q29sbGVjdGlvblRyYXZlcnNhbFR5cGU6OkRlc2NlbmRhbnRzPjo6bGFzdChjb25zdCBD
b2xsZWN0aW9uQ2xhc3MmIGNvbGxlY3Rpb24sIENvbnRhaW5lck5vZGUmIHJvb3ROb2RlKQorewor
ICAgIGF1dG8gZGVzY2VuZGFudHMgPSBlbGVtZW50RGVzY2VuZGFudHMocm9vdE5vZGUpOworICAg
IEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IgaW52YWxpZDsKKyAgICBmb3IgKGF1dG8gaXQgPSBk
ZXNjZW5kYW50cy5sYXN0KCk7IGl0ICE9IGludmFsaWQ7IC0taXQpIHsKKyAgICAgICAgaWYgKGNv
bGxlY3Rpb24uZWxlbWVudE1hdGNoZXMoKml0KSkgeworICAgICAgICAgICAgLy8gRHJvcCBpdGVy
YXRvciBhc3NlcnRpb25zIGJlY2F1c2UgSFRNTENvbGxlY3Rpb25zIC8gTm9kZUxpc3QgdXNlIGEg
ZmluZS1ncmFpbmVkIGludmFsaWRhdGlvbiBzY2hlbWUuCisgICAgICAgICAgICBpdC5kcm9wQXNz
ZXJ0aW9ucygpOworICAgICAgICAgICAgcmV0dXJuIGl0OworICAgICAgICB9CisgICAgfQorICAg
IHJldHVybiBpbnZhbGlkOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ29sbGVjdGlvbkNsYXNz
PgoraW5saW5lIHZvaWQgQ29sbGVjdGlvblRyYXZlcnNhbDxDb2xsZWN0aW9uVHJhdmVyc2FsVHlw
ZTo6RGVzY2VuZGFudHM+Ojp0cmF2ZXJzZUZvcndhcmQoY29uc3QgQ29sbGVjdGlvbkNsYXNzJiBj
b2xsZWN0aW9uLCBFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yJiBjdXJyZW50LCB1bnNpZ25lZCBj
b3VudCwgdW5zaWduZWQmIHRyYXZlcnNlZENvdW50KQoreworICAgIEFTU0VSVChjb2xsZWN0aW9u
LmVsZW1lbnRNYXRjaGVzKCpjdXJyZW50KSk7CisgICAgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRv
ciBpbnZhbGlkOworICAgIGZvciAodHJhdmVyc2VkQ291bnQgPSAwOyB0cmF2ZXJzZWRDb3VudCA8
IGNvdW50OyArK3RyYXZlcnNlZENvdW50KSB7CisgICAgICAgIGRvIHsKKyAgICAgICAgICAgICsr
Y3VycmVudDsKKyAgICAgICAgICAgIGlmIChjdXJyZW50ID09IGludmFsaWQpCisgICAgICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9IHdoaWxlICghY29sbGVjdGlvbi5lbGVtZW50TWF0Y2hl
cygqY3VycmVudCkpOworICAgIH0KK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIENvbGxlY3Rpb25D
bGFzcz4KK2lubGluZSB2b2lkIENvbGxlY3Rpb25UcmF2ZXJzYWw8Q29sbGVjdGlvblRyYXZlcnNh
bFR5cGU6OkRlc2NlbmRhbnRzPjo6dHJhdmVyc2VCYWNrd2FyZChjb25zdCBDb2xsZWN0aW9uQ2xh
c3MmIGNvbGxlY3Rpb24sIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3ImIGN1cnJlbnQsIHVuc2ln
bmVkIGNvdW50KQoreworICAgIEFTU0VSVChjb2xsZWN0aW9uLmVsZW1lbnRNYXRjaGVzKCpjdXJy
ZW50KSk7CisgICAgRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvciBpbnZhbGlkOworICAgIGZvciAo
OyBjb3VudDsgLS1jb3VudCkgeworICAgICAgICBkbyB7CisgICAgICAgICAgICAtLWN1cnJlbnQ7
CisgICAgICAgICAgICBpZiAoY3VycmVudCA9PSBpbnZhbGlkKQorICAgICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfSB3aGlsZSAoIWNvbGxlY3Rpb24uZWxlbWVudE1hdGNoZXMoKmN1cnJl
bnQpKTsKKyAgICB9Cit9CisKK3RlbXBsYXRlIDw+CitzdHJ1Y3QgQ29sbGVjdGlvblRyYXZlcnNh
bDxDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6Q2hpbGRyZW5Pbmx5PiB7CisgICAgdXNpbmcgSXRl
cmF0b3IgPSBFbGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50PjsKKworICAgIHN0YXRpYyBFbGVt
ZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50PiBlbmQoQ29udGFpbmVyTm9kZSYgcm9vdE5vZGUpIHsg
cmV0dXJuIEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnQ+KHJvb3ROb2RlKTsgfQorCisgICAg
dGVtcGxhdGUgPHR5cGVuYW1lIENvbGxlY3Rpb25DbGFzcz4KKyAgICBzdGF0aWMgRWxlbWVudENo
aWxkSXRlcmF0b3I8RWxlbWVudD4gYmVnaW4oY29uc3QgQ29sbGVjdGlvbkNsYXNzJiwgQ29udGFp
bmVyTm9kZSYgcm9vdE5vZGUpOworCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIENvbGxlY3Rpb25D
bGFzcz4KKyAgICBzdGF0aWMgRWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVudD4gbGFzdChjb25z
dCBDb2xsZWN0aW9uQ2xhc3MmLCBDb250YWluZXJOb2RlJiByb290Tm9kZSk7CisKKyAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgQ29sbGVjdGlvbkNsYXNzPgorICAgIHN0YXRpYyB2b2lkIHRyYXZlcnNl
Rm9yd2FyZChjb25zdCBDb2xsZWN0aW9uQ2xhc3MmLCBFbGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVt
ZW50PiYgY3VycmVudCwgdW5zaWduZWQgY291bnQsIHVuc2lnbmVkJiB0cmF2ZXJzZWRDb3VudCk7
CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ29sbGVjdGlvbkNsYXNzPgorICAgIHN0YXRpYyB2
b2lkIHRyYXZlcnNlQmFja3dhcmQoY29uc3QgQ29sbGVjdGlvbkNsYXNzJiwgRWxlbWVudENoaWxk
SXRlcmF0b3I8RWxlbWVudD4mIGN1cnJlbnQsIHVuc2lnbmVkIGNvdW50KTsKK307CisKK3RlbXBs
YXRlIDx0eXBlbmFtZSBDb2xsZWN0aW9uQ2xhc3M+CitpbmxpbmUgRWxlbWVudENoaWxkSXRlcmF0
b3I8RWxlbWVudD4gQ29sbGVjdGlvblRyYXZlcnNhbDxDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6
Q2hpbGRyZW5Pbmx5Pjo6YmVnaW4oY29uc3QgQ29sbGVjdGlvbkNsYXNzJiBjb2xsZWN0aW9uLCBD
b250YWluZXJOb2RlJiByb290Tm9kZSkKK3sKKyAgICBhdXRvIGNoaWxkcmVuID0gY2hpbGRyZW5P
ZlR5cGU8RWxlbWVudD4ocm9vdE5vZGUpOworICAgIGF1dG8gZW5kID0gY2hpbGRyZW4uZW5kKCk7
CisgICAgZm9yIChhdXRvIGl0ID0gY2hpbGRyZW4uYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7
CisgICAgICAgIGlmIChjb2xsZWN0aW9uLmVsZW1lbnRNYXRjaGVzKCppdCkpIHsKKyAgICAgICAg
ICAgIC8vIERyb3AgaXRlcmF0b3IgYXNzZXJ0aW9ucyBiZWNhdXNlIEhUTUxDb2xsZWN0aW9ucyAv
IE5vZGVMaXN0IHVzZSBhIGZpbmUtZ3JhaW5lZCBpbnZhbGlkYXRpb24gc2NoZW1lLgorICAgICAg
ICAgICAgaXQuZHJvcEFzc2VydGlvbnMoKTsKKyAgICAgICAgICAgIHJldHVybiBpdDsKKyAgICAg
ICAgfQorICAgIH0KKyAgICByZXR1cm4gZW5kOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ29s
bGVjdGlvbkNsYXNzPgoraW5saW5lIEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnQ+IENvbGxl
Y3Rpb25UcmF2ZXJzYWw8Q29sbGVjdGlvblRyYXZlcnNhbFR5cGU6OkNoaWxkcmVuT25seT46Omxh
c3QoY29uc3QgQ29sbGVjdGlvbkNsYXNzJiBjb2xsZWN0aW9uLCBDb250YWluZXJOb2RlJiByb290
Tm9kZSkKK3sKKyAgICBhdXRvIGNoaWxkcmVuID0gY2hpbGRyZW5PZlR5cGU8RWxlbWVudD4ocm9v
dE5vZGUpOworICAgIEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnQ+IGludmFsaWQoY29sbGVj
dGlvbi5yb290Tm9kZSgpKTsKKyAgICBFbGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50PiBsYXN0
KHJvb3ROb2RlLCBjaGlsZHJlbi5sYXN0KCkpOworICAgIGZvciAoYXV0byBpdCA9IGxhc3Q7IGl0
ICE9IGludmFsaWQ7IC0taXQpIHsKKyAgICAgICAgaWYgKGNvbGxlY3Rpb24uZWxlbWVudE1hdGNo
ZXMoKml0KSkgeworICAgICAgICAgICAgLy8gRHJvcCBpdGVyYXRvciBhc3NlcnRpb25zIGJlY2F1
c2UgSFRNTENvbGxlY3Rpb25zIC8gTm9kZUxpc3QgdXNlIGEgZmluZS1ncmFpbmVkIGludmFsaWRh
dGlvbiBzY2hlbWUuCisgICAgICAgICAgICBpdC5kcm9wQXNzZXJ0aW9ucygpOworICAgICAgICAg
ICAgcmV0dXJuIGl0OworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBpbnZhbGlkOworfQor
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ29sbGVjdGlvbkNsYXNzPgoraW5saW5lIHZvaWQgQ29sbGVj
dGlvblRyYXZlcnNhbDxDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6Q2hpbGRyZW5Pbmx5Pjo6dHJh
dmVyc2VGb3J3YXJkKGNvbnN0IENvbGxlY3Rpb25DbGFzcyYgY29sbGVjdGlvbiwgRWxlbWVudENo
aWxkSXRlcmF0b3I8RWxlbWVudD4mIGN1cnJlbnQsIHVuc2lnbmVkIGNvdW50LCB1bnNpZ25lZCYg
dHJhdmVyc2VkQ291bnQpCit7CisgICAgQVNTRVJUKGNvbGxlY3Rpb24uZWxlbWVudE1hdGNoZXMo
KmN1cnJlbnQpKTsKKyAgICBFbGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50PiBpbnZhbGlkKGNv
bGxlY3Rpb24ucm9vdE5vZGUoKSk7CisgICAgZm9yICh0cmF2ZXJzZWRDb3VudCA9IDA7IHRyYXZl
cnNlZENvdW50IDwgY291bnQ7ICsrdHJhdmVyc2VkQ291bnQpIHsKKyAgICAgICAgZG8geworICAg
ICAgICAgICAgKytjdXJyZW50OworICAgICAgICAgICAgaWYgKGN1cnJlbnQgPT0gaW52YWxpZCkK
KyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0gd2hpbGUgKCFjb2xsZWN0aW9uLmVs
ZW1lbnRNYXRjaGVzKCpjdXJyZW50KSk7CisgICAgfQorfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
Q29sbGVjdGlvbkNsYXNzPgoraW5saW5lIHZvaWQgQ29sbGVjdGlvblRyYXZlcnNhbDxDb2xsZWN0
aW9uVHJhdmVyc2FsVHlwZTo6Q2hpbGRyZW5Pbmx5Pjo6dHJhdmVyc2VCYWNrd2FyZChjb25zdCBD
b2xsZWN0aW9uQ2xhc3MmIGNvbGxlY3Rpb24sIEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnQ+
JiBjdXJyZW50LCB1bnNpZ25lZCBjb3VudCkKK3sKKyAgICBBU1NFUlQoY29sbGVjdGlvbi5lbGVt
ZW50TWF0Y2hlcygqY3VycmVudCkpOworICAgIEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnQ+
IGludmFsaWQoY29sbGVjdGlvbi5yb290Tm9kZSgpKTsKKyAgICBmb3IgKDsgY291bnQ7IC0tY291
bnQpIHsKKyAgICAgICAgZG8geworICAgICAgICAgICAgLS1jdXJyZW50OworICAgICAgICAgICAg
aWYgKGN1cnJlbnQgPT0gaW52YWxpZCkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0gd2hpbGUgKCFjb2xsZWN0aW9uLmVsZW1lbnRNYXRjaGVzKCpjdXJyZW50KSk7CisgICAgfQor
fQorCit0ZW1wbGF0ZSA8Pgorc3RydWN0IENvbGxlY3Rpb25UcmF2ZXJzYWw8Q29sbGVjdGlvblRy
YXZlcnNhbFR5cGU6OkN1c3RvbUZvcndhcmRPbmx5PiB7CisgICAgdXNpbmcgSXRlcmF0b3IgPSBF
bGVtZW50KjsKKworICAgIHN0YXRpYyBFbGVtZW50KiBlbmQoQ29udGFpbmVyTm9kZSYpIHsgcmV0
dXJuIG51bGxwdHI7IH0KKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDb2xsZWN0aW9uQ2xhc3M+
CisgICAgc3RhdGljIEVsZW1lbnQqIGJlZ2luKGNvbnN0IENvbGxlY3Rpb25DbGFzcyYsIENvbnRh
aW5lck5vZGUmKTsKKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDb2xsZWN0aW9uQ2xhc3M+Cisg
ICAgc3RhdGljIEVsZW1lbnQqIGxhc3QoY29uc3QgQ29sbGVjdGlvbkNsYXNzJiwgQ29udGFpbmVy
Tm9kZSYpOworCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIENvbGxlY3Rpb25DbGFzcz4KKyAgICBz
dGF0aWMgdm9pZCB0cmF2ZXJzZUZvcndhcmQoY29uc3QgQ29sbGVjdGlvbkNsYXNzJiwgRWxlbWVu
dComIGN1cnJlbnQsIHVuc2lnbmVkIGNvdW50LCB1bnNpZ25lZCYgdHJhdmVyc2VkQ291bnQpOwor
CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIENvbGxlY3Rpb25DbGFzcz4KKyAgICBzdGF0aWMgdm9p
ZCB0cmF2ZXJzZUJhY2t3YXJkKGNvbnN0IENvbGxlY3Rpb25DbGFzcyYsIEVsZW1lbnQqJiwgdW5z
aWduZWQgY291bnQpOworfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIENvbGxlY3Rpb25DbGFzcz4K
K2lubGluZSBFbGVtZW50KiBDb2xsZWN0aW9uVHJhdmVyc2FsPENvbGxlY3Rpb25UcmF2ZXJzYWxU
eXBlOjpDdXN0b21Gb3J3YXJkT25seT46OmJlZ2luKGNvbnN0IENvbGxlY3Rpb25DbGFzcyYgY29s
bGVjdGlvbiwgQ29udGFpbmVyTm9kZSYpCit7CisgICAgcmV0dXJuIGNvbGxlY3Rpb24uY3VzdG9t
RWxlbWVudEFmdGVyKG51bGxwdHIpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ29sbGVjdGlv
bkNsYXNzPgoraW5saW5lIEVsZW1lbnQqIENvbGxlY3Rpb25UcmF2ZXJzYWw8Q29sbGVjdGlvblRy
YXZlcnNhbFR5cGU6OkN1c3RvbUZvcndhcmRPbmx5Pjo6bGFzdChjb25zdCBDb2xsZWN0aW9uQ2xh
c3MmLCBDb250YWluZXJOb2RlJikKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBy
ZXR1cm4gbnVsbHB0cjsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIENvbGxlY3Rpb25DbGFzcz4K
K2lubGluZSB2b2lkIENvbGxlY3Rpb25UcmF2ZXJzYWw8Q29sbGVjdGlvblRyYXZlcnNhbFR5cGU6
OkN1c3RvbUZvcndhcmRPbmx5Pjo6dHJhdmVyc2VGb3J3YXJkKGNvbnN0IENvbGxlY3Rpb25DbGFz
cyYgY29sbGVjdGlvbiwgRWxlbWVudComIGN1cnJlbnQsIHVuc2lnbmVkIGNvdW50LCB1bnNpZ25l
ZCYgdHJhdmVyc2VkQ291bnQpCit7CisgICAgRWxlbWVudCogZWxlbWVudCA9IGN1cnJlbnQ7Cisg
ICAgZm9yICh0cmF2ZXJzZWRDb3VudCA9IDA7IHRyYXZlcnNlZENvdW50IDwgY291bnQ7ICsrdHJh
dmVyc2VkQ291bnQpIHsKKyAgICAgICAgZWxlbWVudCA9IGNvbGxlY3Rpb24uY3VzdG9tRWxlbWVu
dEFmdGVyKGVsZW1lbnQpOworICAgICAgICBpZiAoIWVsZW1lbnQpIHsKKyAgICAgICAgICAgIGN1
cnJlbnQgPSBudWxscHRyOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQor
ICAgIGN1cnJlbnQgPSBlbGVtZW50OworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ29sbGVjdGlv
bkNsYXNzPgoraW5saW5lIHZvaWQgQ29sbGVjdGlvblRyYXZlcnNhbDxDb2xsZWN0aW9uVHJhdmVy
c2FsVHlwZTo6Q3VzdG9tRm9yd2FyZE9ubHk+Ojp0cmF2ZXJzZUJhY2t3YXJkKGNvbnN0IENvbGxl
Y3Rpb25DbGFzcyYsIEVsZW1lbnQqJiwgdW5zaWduZWQgY291bnQpCit7CisgICAgVU5VU0VEX1BB
UkFNKGNvdW50KTsKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYgLy8gQ29sbGVjdGlvblRyYXZlcnNhbF9oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0NvbGxlY3Rpb25UeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0NvbGxlY3Rpb25UeXBlLmgKaW5kZXggNTEzMGFmOTFkYWU4NjhhNzE0ZjZlMDU1MGJmYWFk
ZjQwMWY2NWJiYy4uMWE5MjJkMGZmOTA2MDg0YWQxNzM0YjA3MGY4NWEwNGNmYjg5NGIxZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9Db2xsZWN0aW9uVHlwZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvQ29sbGVjdGlvblR5cGUuaApAQCAtNTMsNiArNTMsNDIgQEAgZW51bSBD
b2xsZWN0aW9uVHlwZSB7CiAgICAgRm9ybUNvbnRyb2xzCiB9OwogCi19IC8vIG5hbWVzcGFjZQor
ZW51bSBjbGFzcyBDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZSB7IERlc2NlbmRhbnRzLCBDaGlsZHJl
bk9ubHksIEN1c3RvbUZvcndhcmRPbmx5IH07Cit0ZW1wbGF0ZTxDb2xsZWN0aW9uVHlwZSBjb2xs
ZWN0aW9uVHlwZT4KK3N0cnVjdCBDb2xsZWN0aW9uVHlwZVRyYWl0cyB7CisgICAgc3RhdGljIGNv
bnN0IENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlIHRyYXZlcnNhbFR5cGUgPSBDb2xsZWN0aW9uVHJh
dmVyc2FsVHlwZTo6RGVzY2VuZGFudHM7Cit9OworCit0ZW1wbGF0ZTw+CitzdHJ1Y3QgQ29sbGVj
dGlvblR5cGVUcmFpdHM8Tm9kZUNoaWxkcmVuPiB7CisgICAgc3RhdGljIGNvbnN0IENvbGxlY3Rp
b25UcmF2ZXJzYWxUeXBlIHRyYXZlcnNhbFR5cGUgPSBDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6
Q2hpbGRyZW5Pbmx5OworfTsKKwordGVtcGxhdGU8Pgorc3RydWN0IENvbGxlY3Rpb25UeXBlVHJh
aXRzPFRSQ2VsbHM+IHsKKyAgICBzdGF0aWMgY29uc3QgQ29sbGVjdGlvblRyYXZlcnNhbFR5cGUg
dHJhdmVyc2FsVHlwZSA9IENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlOjpDaGlsZHJlbk9ubHk7Cit9
OworCit0ZW1wbGF0ZTw+CitzdHJ1Y3QgQ29sbGVjdGlvblR5cGVUcmFpdHM8VFNlY3Rpb25Sb3dz
PiB7CisgICAgc3RhdGljIGNvbnN0IENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlIHRyYXZlcnNhbFR5
cGUgPSBDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZTo6Q2hpbGRyZW5Pbmx5OworfTsKKwordGVtcGxh
dGU8Pgorc3RydWN0IENvbGxlY3Rpb25UeXBlVHJhaXRzPFRhYmxlVEJvZGllcz4geworICAgIHN0
YXRpYyBjb25zdCBDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZSB0cmF2ZXJzYWxUeXBlID0gQ29sbGVj
dGlvblRyYXZlcnNhbFR5cGU6OkNoaWxkcmVuT25seTsKK307CisKK3RlbXBsYXRlPD4KK3N0cnVj
dCBDb2xsZWN0aW9uVHlwZVRyYWl0czxUYWJsZVJvd3M+IHsKKyAgICBzdGF0aWMgY29uc3QgQ29s
bGVjdGlvblRyYXZlcnNhbFR5cGUgdHJhdmVyc2FsVHlwZSA9IENvbGxlY3Rpb25UcmF2ZXJzYWxU
eXBlOjpDdXN0b21Gb3J3YXJkT25seTsKK307CisKK3RlbXBsYXRlPD4KK3N0cnVjdCBDb2xsZWN0
aW9uVHlwZVRyYWl0czxGb3JtQ29udHJvbHM+IHsKKyAgICBzdGF0aWMgY29uc3QgQ29sbGVjdGlv
blRyYXZlcnNhbFR5cGUgdHJhdmVyc2FsVHlwZSA9IENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlOjpD
dXN0b21Gb3J3YXJkT25seTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0dlbmVyaWNDYWNoZWRIVE1MQ29sbGVj
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0dlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlv
bi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYjZiY2VkYTAxYmI4NTM5OTgzZTRjNTdiZjYzM2UzM2RiOWU0ZmVh
ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvR2VuZXJpY0NhY2hlZEhU
TUxDb2xsZWN0aW9uLmNwcApAQCAtMCwwICsxLDg5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIkdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbi5oIgorCisj
aW5jbHVkZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVkZSAiSFRNTE9iamVjdEVsZW1lbnQuaCIKKyNp
bmNsdWRlICJIVE1MT3B0aW9uRWxlbWVudC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3Vz
aW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CisKK3RlbXBsYXRlIDxDb2xsZWN0aW9uVHJhdmVyc2Fs
VHlwZSB0cmF2ZXJzYWxUeXBlPgorYm9vbCBHZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb248dHJh
dmVyc2FsVHlwZT46OmVsZW1lbnRNYXRjaGVzKEVsZW1lbnQmIGVsZW1lbnQpIGNvbnN0Cit7Cisg
ICAgc3dpdGNoICh0aGlzLT50eXBlKCkpIHsKKyAgICBjYXNlIE5vZGVDaGlsZHJlbjoKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgY2FzZSBEb2NJbWFnZXM6CisgICAgICAgIHJldHVybiBlbGVt
ZW50Lmhhc1RhZ05hbWUoaW1nVGFnKTsKKyAgICBjYXNlIERvY1NjcmlwdHM6CisgICAgICAgIHJl
dHVybiBlbGVtZW50Lmhhc1RhZ05hbWUoc2NyaXB0VGFnKTsKKyAgICBjYXNlIERvY0Zvcm1zOgor
ICAgICAgICByZXR1cm4gZWxlbWVudC5oYXNUYWdOYW1lKGZvcm1UYWcpOworICAgIGNhc2UgVGFi
bGVUQm9kaWVzOgorICAgICAgICByZXR1cm4gZWxlbWVudC5oYXNUYWdOYW1lKHRib2R5VGFnKTsK
KyAgICBjYXNlIFRSQ2VsbHM6CisgICAgICAgIHJldHVybiBlbGVtZW50Lmhhc1RhZ05hbWUodGRU
YWcpIHx8IGVsZW1lbnQuaGFzVGFnTmFtZSh0aFRhZyk7CisgICAgY2FzZSBUU2VjdGlvblJvd3M6
CisgICAgICAgIHJldHVybiBlbGVtZW50Lmhhc1RhZ05hbWUodHJUYWcpOworICAgIGNhc2UgU2Vs
ZWN0ZWRPcHRpb25zOgorICAgICAgICByZXR1cm4gaXM8SFRNTE9wdGlvbkVsZW1lbnQ+KGVsZW1l
bnQpICYmIGRvd25jYXN0PEhUTUxPcHRpb25FbGVtZW50PihlbGVtZW50KS5zZWxlY3RlZCgpOwor
ICAgIGNhc2UgRGF0YUxpc3RPcHRpb25zOgorICAgICAgICBpZiAoaXM8SFRNTE9wdGlvbkVsZW1l
bnQ+KGVsZW1lbnQpKSB7CisgICAgICAgICAgICBIVE1MT3B0aW9uRWxlbWVudCYgb3B0aW9uID0g
ZG93bmNhc3Q8SFRNTE9wdGlvbkVsZW1lbnQ+KGVsZW1lbnQpOworICAgICAgICAgICAgaWYgKCFv
cHRpb24uaXNEaXNhYmxlZEZvcm1Db250cm9sKCkgJiYgIW9wdGlvbi52YWx1ZSgpLmlzRW1wdHko
KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgY2FzZSBNYXBBcmVhczoKKyAgICAgICAgcmV0dXJuIGVsZW1lbnQuaGFz
VGFnTmFtZShhcmVhVGFnKTsKKyAgICBjYXNlIERvY0FwcGxldHM6CisgICAgICAgIHJldHVybiBp
czxIVE1MQXBwbGV0RWxlbWVudD4oZWxlbWVudCkgfHwgKGlzPEhUTUxPYmplY3RFbGVtZW50Pihl
bGVtZW50KSAmJiBkb3duY2FzdDxIVE1MT2JqZWN0RWxlbWVudD4oZWxlbWVudCkuY29udGFpbnNK
YXZhQXBwbGV0KCkpOworICAgIGNhc2UgRG9jRW1iZWRzOgorICAgICAgICByZXR1cm4gZWxlbWVu
dC5oYXNUYWdOYW1lKGVtYmVkVGFnKTsKKyAgICBjYXNlIERvY0xpbmtzOgorICAgICAgICByZXR1
cm4gKGVsZW1lbnQuaGFzVGFnTmFtZShhVGFnKSB8fCBlbGVtZW50Lmhhc1RhZ05hbWUoYXJlYVRh
ZykpICYmIGVsZW1lbnQuZmFzdEhhc0F0dHJpYnV0ZShocmVmQXR0cik7CisgICAgY2FzZSBEb2NB
bmNob3JzOgorICAgICAgICByZXR1cm4gZWxlbWVudC5oYXNUYWdOYW1lKGFUYWcpICYmIGVsZW1l
bnQuZmFzdEhhc0F0dHJpYnV0ZShuYW1lQXR0cik7CisgICAgY2FzZSBEb2NBbGw6CisgICAgY2Fz
ZSBEb2N1bWVudE5hbWVkSXRlbXM6CisgICAgY2FzZSBGb3JtQ29udHJvbHM6CisgICAgY2FzZSBT
ZWxlY3RPcHRpb25zOgorICAgIGNhc2UgVGFibGVSb3dzOgorICAgIGNhc2UgV2luZG93TmFtZWRJ
dGVtczoKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIC8vIFJlbWFpbmluZyBjb2xsZWN0aW9u
IHR5cGVzIGhhdmUgdGhlaXIgb3duIENhY2hlZEhUTUxDb2xsZWN0aW9uIHN1YmNsYXNzZXMgYW5k
IGFyZSBub3QgdXNpbmcgR2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uLgorICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30KK3RlbXBsYXRlIGJvb2wgR2VuZXJp
Y0NhY2hlZEhUTUxDb2xsZWN0aW9uPENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlOjpEZXNjZW5kYW50
cz46OmVsZW1lbnRNYXRjaGVzKEVsZW1lbnQmKSBjb25zdDsKK3RlbXBsYXRlIGJvb2wgR2VuZXJp
Y0NhY2hlZEhUTUxDb2xsZWN0aW9uPENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlOjpDaGlsZHJlbk9u
bHk+OjplbGVtZW50TWF0Y2hlcyhFbGVtZW50JikgY29uc3Q7CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvR2VuZXJpY0NhY2hlZEhUTUxD
b2xsZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0dlbmVyaWNDYWNoZWRIVE1MQ29sbGVj
dGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmM2MzMxMzNmZGEwYTJhM2YyYmJjYTNhZTVlYzk0ZTEzYzc2ZWI4
ZTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0dlbmVyaWNDYWNoZWRI
VE1MQ29sbGVjdGlvbi5oCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEdl
bmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbl9oCisjZGVmaW5lIEdlbmVyaWNDYWNoZWRIVE1MQ29s
bGVjdGlvbl9oCisKKyNpbmNsdWRlICJDYWNoZWRIVE1MQ29sbGVjdGlvbi5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK3RlbXBsYXRlIDxDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZSB0cmF2ZXJz
YWxUeXBlPgorY2xhc3MgR2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uIGZpbmFsIDogcHVibGlj
IENhY2hlZEhUTUxDb2xsZWN0aW9uPEdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbjx0cmF2ZXJz
YWxUeXBlPiwgdHJhdmVyc2FsVHlwZT4geworcHVibGljOgorICAgIHN0YXRpYyBSZWY8R2VuZXJp
Y0NhY2hlZEhUTUxDb2xsZWN0aW9uPiBjcmVhdGUoQ29udGFpbmVyTm9kZSYgYmFzZSwgQ29sbGVj
dGlvblR5cGUgY29sbGVjdGlvblR5cGUpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBHZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb24oYmFzZSwgY29sbGVjdGlvblR5cGUpKTsK
KyAgICB9CisKKyAgICBib29sIGVsZW1lbnRNYXRjaGVzKEVsZW1lbnQmKSBjb25zdDsKKworcHJp
dmF0ZToKKyAgICBHZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb24oQ29udGFpbmVyTm9kZSYgYmFz
ZSwgQ29sbGVjdGlvblR5cGUgY29sbGVjdGlvblR5cGUpCisgICAgICAgIDogQ2FjaGVkSFRNTENv
bGxlY3Rpb248R2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uPHRyYXZlcnNhbFR5cGU+LCB0cmF2
ZXJzYWxUeXBlPihiYXNlLCBjb2xsZWN0aW9uVHlwZSkKKyAgICB7IH0KK307CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbl9o
CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFsbENvbGxlY3Rpb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQWxsQ29sbGVjdGlvbi5jcHAKaW5kZXggMDE2Njg3
MTRlY2JiYmQwZmViZDFlNTBjNGFiZDRiMDkxM2I0MjdmMy4uZGFiMDUwMGZhZDg4YzY1NGE1Yjkx
Y2JlNWQzZDlhNzQ2Mjc5OGIxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
QWxsQ29sbGVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQWxsQ29sbGVj
dGlvbi5jcHAKQEAgLTM2LDcgKzM2LDcgQEAgUmVmPEhUTUxBbGxDb2xsZWN0aW9uPiBIVE1MQWxs
Q29sbGVjdGlvbjo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgQ29sbGVjdGlvblQKIH0KIAog
aW5saW5lIEhUTUxBbGxDb2xsZWN0aW9uOjpIVE1MQWxsQ29sbGVjdGlvbihEb2N1bWVudCYgZG9j
dW1lbnQsIENvbGxlY3Rpb25UeXBlIHR5cGUpCi0gICAgOiBIVE1MQ29sbGVjdGlvbihkb2N1bWVu
dCwgdHlwZSkKKyAgICA6IENhY2hlZEhUTUxDb2xsZWN0aW9uPEhUTUxBbGxDb2xsZWN0aW9uLCBD
b2xsZWN0aW9uVHlwZVRyYWl0czxEb2NBbGw+Ojp0cmF2ZXJzYWxUeXBlPihkb2N1bWVudCwgdHlw
ZSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQWxsQ29sbGVj
dGlvbi5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQWxsQ29sbGVjdGlvbi5oCmluZGV4IDUx
NDUxMTc0YmQyODNiMjAxYzg5MmUyZWE0YTVhYjlmYjYxNWJmMDEuLmI2MDExYjQ5NjJkZTBjNzc3
M2NiMzFiZTkxNjZkM2U5OGI5MDRkYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEFsbENvbGxlY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbGxDb2xs
ZWN0aW9uLmgKQEAgLTI2LDE2ICsyNiwxOSBAQAogI2lmbmRlZiBIVE1MQWxsQ29sbGVjdGlvbl9o
CiAjZGVmaW5lIEhUTUxBbGxDb2xsZWN0aW9uX2gKIAotI2luY2x1ZGUgIkhUTUxDb2xsZWN0aW9u
LmgiCisjaW5jbHVkZSAiQ2FjaGVkSFRNTENvbGxlY3Rpb24uaCIKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1jbGFzcyBIVE1MQWxsQ29sbGVjdGlvbiBmaW5hbCA6IHB1YmxpYyBIVE1MQ29sbGVj
dGlvbiB7CitjbGFzcyBIVE1MQWxsQ29sbGVjdGlvbiBmaW5hbCA6IHB1YmxpYyBDYWNoZWRIVE1M
Q29sbGVjdGlvbjxIVE1MQWxsQ29sbGVjdGlvbiwgQ29sbGVjdGlvblR5cGVUcmFpdHM8RG9jQWxs
Pjo6dHJhdmVyc2FsVHlwZT4gewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8SFRNTEFsbENvbGxl
Y3Rpb24+IGNyZWF0ZShEb2N1bWVudCYsIENvbGxlY3Rpb25UeXBlKTsKIAogICAgIEVsZW1lbnQq
IG5hbWVkSXRlbVdpdGhJbmRleChjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIHVuc2lnbmVkIGlu
ZGV4KSBjb25zdDsKIAorICAgIC8vIEZvciBDYWNoZWRIVE1MQ29sbGVjdGlvbi4KKyAgICBib29s
IGVsZW1lbnRNYXRjaGVzKEVsZW1lbnQmKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisKIHByaXZh
dGU6CiAgICAgSFRNTEFsbENvbGxlY3Rpb24oRG9jdW1lbnQmLCBDb2xsZWN0aW9uVHlwZSk7CiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmNwcAppbmRleCAzYjRiNjJmNzI2YmM0
NTAzOGNiMzkzMTE2MDRmODU3NTMwYjY4MWRmLi4xMTgyY2ZiZGZjMWZiYTM2ZGE2ZjUzYTEzY2M1
OWMxZWE1ODhmNmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmNwcApAQCAt
MjMsNDggKzIzLDE0IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSFRNTENvbGxl
Y3Rpb24uaCIKIAotI2luY2x1ZGUgIkVsZW1lbnRUcmF2ZXJzYWwuaCIKLSNpbmNsdWRlICJIVE1M
RG9jdW1lbnQuaCIKLSNpbmNsdWRlICJIVE1MTmFtZUNvbGxlY3Rpb24uaCIKKyNpbmNsdWRlICJD
YWNoZWRIVE1MQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgotI2luY2x1ZGUg
IkhUTUxPYmplY3RFbGVtZW50LmgiCi0jaW5jbHVkZSAiSFRNTE9wdGlvbkVsZW1lbnQuaCIKICNp
bmNsdWRlICJOb2RlUmFyZURhdGEuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBu
YW1lc3BhY2UgSFRNTE5hbWVzOwogCi1zdGF0aWMgYm9vbCBzaG91bGRPbmx5SW5jbHVkZURpcmVj
dENoaWxkcmVuKENvbGxlY3Rpb25UeXBlIHR5cGUpCi17Ci0gICAgc3dpdGNoICh0eXBlKSB7Ci0g
ICAgY2FzZSBEb2NBbGw6Ci0gICAgY2FzZSBEb2NBbmNob3JzOgotICAgIGNhc2UgRG9jQXBwbGV0
czoKLSAgICBjYXNlIERvY0VtYmVkczoKLSAgICBjYXNlIERvY0Zvcm1zOgotICAgIGNhc2UgRG9j
SW1hZ2VzOgotICAgIGNhc2UgRG9jTGlua3M6Ci0gICAgY2FzZSBEb2NTY3JpcHRzOgotICAgIGNh
c2UgRG9jdW1lbnROYW1lZEl0ZW1zOgotICAgIGNhc2UgTWFwQXJlYXM6Ci0gICAgY2FzZSBUYWJs
ZVJvd3M6Ci0gICAgY2FzZSBTZWxlY3RPcHRpb25zOgotICAgIGNhc2UgU2VsZWN0ZWRPcHRpb25z
OgotICAgIGNhc2UgRGF0YUxpc3RPcHRpb25zOgotICAgIGNhc2UgV2luZG93TmFtZWRJdGVtczoK
LSAgICBjYXNlIEZvcm1Db250cm9sczoKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGNhc2Ug
Tm9kZUNoaWxkcmVuOgotICAgIGNhc2UgVFJDZWxsczoKLSAgICBjYXNlIFRTZWN0aW9uUm93czoK
LSAgICBjYXNlIFRhYmxlVEJvZGllczoKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBmYWxzZTsKLX0KLQogaW5saW5lIGF1
dG8gSFRNTENvbGxlY3Rpb246OnJvb3RUeXBlRnJvbUNvbGxlY3Rpb25UeXBlKENvbGxlY3Rpb25U
eXBlIHR5cGUpIC0+IFJvb3RUeXBlCiB7CiAgICAgc3dpdGNoICh0eXBlKSB7CkBAIC0xMzEsMjYy
ICs5NywyOSBAQCBzdGF0aWMgTm9kZUxpc3RJbnZhbGlkYXRpb25UeXBlIGludmFsaWRhdGlvblR5
cGVFeGNsdWRpbmdJZEFuZE5hbWVBdHRyaWJ1dGVzKENvbAogICAgIHJldHVybiBEb05vdEludmFs
aWRhdGVPbkF0dHJpYnV0ZUNoYW5nZXM7CiB9CiAKLUhUTUxDb2xsZWN0aW9uOjpIVE1MQ29sbGVj
dGlvbihDb250YWluZXJOb2RlJiBvd25lck5vZGUsIENvbGxlY3Rpb25UeXBlIHR5cGUsIEVsZW1l
bnRUcmF2ZXJzYWxUeXBlIHRyYXZlcnNhbFR5cGUpCitIVE1MQ29sbGVjdGlvbjo6SFRNTENvbGxl
Y3Rpb24oQ29udGFpbmVyTm9kZSYgb3duZXJOb2RlLCBDb2xsZWN0aW9uVHlwZSB0eXBlKQogICAg
IDogbV9vd25lck5vZGUob3duZXJOb2RlKQotICAgICwgbV9pbmRleENhY2hlKCp0aGlzKQogICAg
ICwgbV9jb2xsZWN0aW9uVHlwZSh0eXBlKQogICAgICwgbV9pbnZhbGlkYXRpb25UeXBlKGludmFs
aWRhdGlvblR5cGVFeGNsdWRpbmdJZEFuZE5hbWVBdHRyaWJ1dGVzKHR5cGUpKQogICAgICwgbV9y
b290VHlwZShyb290VHlwZUZyb21Db2xsZWN0aW9uVHlwZSh0eXBlKSkKLSAgICAsIG1fc2hvdWxk
T25seUluY2x1ZGVEaXJlY3RDaGlsZHJlbihzaG91bGRPbmx5SW5jbHVkZURpcmVjdENoaWxkcmVu
KHR5cGUpKQotICAgICwgbV91c2VzQ3VzdG9tRm9yd2FyZE9ubHlUcmF2ZXJzYWwodHJhdmVyc2Fs
VHlwZSA9PSBDdXN0b21Gb3J3YXJkT25seVRyYXZlcnNhbCkKIHsKICAgICBBU1NFUlQobV9yb290
VHlwZSA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocm9vdFR5cGVGcm9tQ29sbGVjdGlvblR5cGUo
dHlwZSkpKTsKICAgICBBU1NFUlQobV9pbnZhbGlkYXRpb25UeXBlID09IHN0YXRpY19jYXN0PHVu
c2lnbmVkPihpbnZhbGlkYXRpb25UeXBlRXhjbHVkaW5nSWRBbmROYW1lQXR0cmlidXRlcyh0eXBl
KSkpOwogICAgIEFTU0VSVChtX2NvbGxlY3Rpb25UeXBlID09IHN0YXRpY19jYXN0PHVuc2lnbmVk
Pih0eXBlKSk7CiB9CiAKLVJlZjxIVE1MQ29sbGVjdGlvbj4gSFRNTENvbGxlY3Rpb246OmNyZWF0
ZShDb250YWluZXJOb2RlJiBiYXNlLCBDb2xsZWN0aW9uVHlwZSB0eXBlKQotewotICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IEhUTUxDb2xsZWN0aW9uKGJhc2UsIHR5cGUpKTsKLX0KLQogSFRNTENv
bGxlY3Rpb246On5IVE1MQ29sbGVjdGlvbigpCiB7Ci0gICAgaWYgKG1faW5kZXhDYWNoZS5oYXNW
YWxpZENhY2hlKCp0aGlzKSkKLSAgICAgICAgZG9jdW1lbnQoKS51bnJlZ2lzdGVyQ29sbGVjdGlv
bigqdGhpcyk7CiAgICAgaWYgKGhhc05hbWVkRWxlbWVudENhY2hlKCkpCiAgICAgICAgIGRvY3Vt
ZW50KCkuY29sbGVjdGlvbldpbGxDbGVhcklkTmFtZU1hcCgqdGhpcyk7CisKICAgICAvLyBIVE1M
TmFtZUNvbGxlY3Rpb24gcmVtb3ZlcyBjYWNoZSBieSBpdHNlbGYuCiAgICAgaWYgKHR5cGUoKSAh
PSBXaW5kb3dOYW1lZEl0ZW1zICYmIHR5cGUoKSAhPSBEb2N1bWVudE5hbWVkSXRlbXMpCiAgICAg
ICAgIG93bmVyTm9kZSgpLm5vZGVMaXN0cygpLT5yZW1vdmVDYWNoZWRDb2xsZWN0aW9uKHRoaXMp
OwogfQogCi1Db250YWluZXJOb2RlJiBIVE1MQ29sbGVjdGlvbjo6cm9vdE5vZGUoKSBjb25zdAot
ewotICAgIGlmIChpc1Jvb3RlZEF0RG9jdW1lbnQoKSAmJiBvd25lck5vZGUoKS5pbkRvY3VtZW50
KCkpCi0gICAgICAgIHJldHVybiBvd25lck5vZGUoKS5kb2N1bWVudCgpOwotCi0gICAgcmV0dXJu
IG93bmVyTm9kZSgpOwotfQotCi1zdGF0aWMgaW5saW5lIGJvb2wgaXNNYXRjaGluZ0hUTUxFbGVt
ZW50KGNvbnN0IEhUTUxDb2xsZWN0aW9uJiBjb2xsZWN0aW9uLCBIVE1MRWxlbWVudCYgZWxlbWVu
dCkKK3ZvaWQgSFRNTENvbGxlY3Rpb246OmludmFsaWRhdGVDYWNoZShEb2N1bWVudCYgZG9jdW1l
bnQpCiB7Ci0gICAgc3dpdGNoIChjb2xsZWN0aW9uLnR5cGUoKSkgewotICAgIGNhc2UgRG9jSW1h
Z2VzOgotICAgICAgICByZXR1cm4gZWxlbWVudC5oYXNUYWdOYW1lKGltZ1RhZyk7Ci0gICAgY2Fz
ZSBEb2NTY3JpcHRzOgotICAgICAgICByZXR1cm4gZWxlbWVudC5oYXNUYWdOYW1lKHNjcmlwdFRh
Zyk7Ci0gICAgY2FzZSBEb2NGb3JtczoKLSAgICAgICAgcmV0dXJuIGVsZW1lbnQuaGFzVGFnTmFt
ZShmb3JtVGFnKTsKLSAgICBjYXNlIFRhYmxlVEJvZGllczoKLSAgICAgICAgcmV0dXJuIGVsZW1l
bnQuaGFzVGFnTmFtZSh0Ym9keVRhZyk7Ci0gICAgY2FzZSBUUkNlbGxzOgotICAgICAgICByZXR1
cm4gZWxlbWVudC5oYXNUYWdOYW1lKHRkVGFnKSB8fCBlbGVtZW50Lmhhc1RhZ05hbWUodGhUYWcp
OwotICAgIGNhc2UgVFNlY3Rpb25Sb3dzOgotICAgICAgICByZXR1cm4gZWxlbWVudC5oYXNUYWdO
YW1lKHRyVGFnKTsKLSAgICBjYXNlIFNlbGVjdE9wdGlvbnM6Ci0gICAgICAgIHJldHVybiBlbGVt
ZW50Lmhhc1RhZ05hbWUob3B0aW9uVGFnKTsKLSAgICBjYXNlIFNlbGVjdGVkT3B0aW9uczoKLSAg
ICAgICAgcmV0dXJuIGlzPEhUTUxPcHRpb25FbGVtZW50PihlbGVtZW50KSAmJiBkb3duY2FzdDxI
VE1MT3B0aW9uRWxlbWVudD4oZWxlbWVudCkuc2VsZWN0ZWQoKTsKLSAgICBjYXNlIERhdGFMaXN0
T3B0aW9uczoKLSAgICAgICAgaWYgKGlzPEhUTUxPcHRpb25FbGVtZW50PihlbGVtZW50KSkgewot
ICAgICAgICAgICAgSFRNTE9wdGlvbkVsZW1lbnQmIG9wdGlvbiA9IGRvd25jYXN0PEhUTUxPcHRp
b25FbGVtZW50PihlbGVtZW50KTsKLSAgICAgICAgICAgIGlmICghb3B0aW9uLmlzRGlzYWJsZWRG
b3JtQ29udHJvbCgpICYmICFvcHRpb24udmFsdWUoKS5pc0VtcHR5KCkpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGNh
c2UgTWFwQXJlYXM6Ci0gICAgICAgIHJldHVybiBlbGVtZW50Lmhhc1RhZ05hbWUoYXJlYVRhZyk7
Ci0gICAgY2FzZSBEb2NBcHBsZXRzOgotICAgICAgICByZXR1cm4gaXM8SFRNTEFwcGxldEVsZW1l
bnQ+KGVsZW1lbnQpIHx8IChpczxIVE1MT2JqZWN0RWxlbWVudD4oZWxlbWVudCkgJiYgZG93bmNh
c3Q8SFRNTE9iamVjdEVsZW1lbnQ+KGVsZW1lbnQpLmNvbnRhaW5zSmF2YUFwcGxldCgpKTsKLSAg
ICBjYXNlIERvY0VtYmVkczoKLSAgICAgICAgcmV0dXJuIGVsZW1lbnQuaGFzVGFnTmFtZShlbWJl
ZFRhZyk7Ci0gICAgY2FzZSBEb2NMaW5rczoKLSAgICAgICAgcmV0dXJuIChlbGVtZW50Lmhhc1Rh
Z05hbWUoYVRhZykgfHwgZWxlbWVudC5oYXNUYWdOYW1lKGFyZWFUYWcpKSAmJiBlbGVtZW50LmZh
c3RIYXNBdHRyaWJ1dGUoaHJlZkF0dHIpOwotICAgIGNhc2UgRG9jQW5jaG9yczoKLSAgICAgICAg
cmV0dXJuIGVsZW1lbnQuaGFzVGFnTmFtZShhVGFnKSAmJiBlbGVtZW50LmZhc3RIYXNBdHRyaWJ1
dGUobmFtZUF0dHIpOwotICAgIGNhc2UgRG9jdW1lbnROYW1lZEl0ZW1zOgotICAgICAgICByZXR1
cm4gZG93bmNhc3Q8RG9jdW1lbnROYW1lQ29sbGVjdGlvbj4oY29sbGVjdGlvbikuZWxlbWVudE1h
dGNoZXMoZWxlbWVudCk7Ci0gICAgY2FzZSBEb2NBbGw6Ci0gICAgY2FzZSBOb2RlQ2hpbGRyZW46
Ci0gICAgY2FzZSBXaW5kb3dOYW1lZEl0ZW1zOgotICAgIGNhc2UgRm9ybUNvbnRyb2xzOgotICAg
IGNhc2UgVGFibGVSb3dzOgotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1zdGF0aWMgaW5saW5lIGJvb2wgaXNN
YXRjaGluZ0VsZW1lbnQoY29uc3QgSFRNTENvbGxlY3Rpb24mIGNvbGxlY3Rpb24sIEVsZW1lbnQm
IGVsZW1lbnQpCi17Ci0gICAgLy8gQ29sbGVjdGlvbiB0eXBlcyB0aGF0IGRlYWwgd2l0aCBhbnkg
dHlwZSBvZiBFbGVtZW50cywgbm90IGp1c3QgSFRNTEVsZW1lbnRzLgotICAgIHN3aXRjaCAoY29s
bGVjdGlvbi50eXBlKCkpIHsKLSAgICBjYXNlIERvY0FsbDoKLSAgICBjYXNlIE5vZGVDaGlsZHJl
bjoKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgY2FzZSBXaW5kb3dOYW1lZEl0ZW1zOgotICAg
ICAgICByZXR1cm4gZG93bmNhc3Q8V2luZG93TmFtZUNvbGxlY3Rpb24+KGNvbGxlY3Rpb24pLmVs
ZW1lbnRNYXRjaGVzKGVsZW1lbnQpOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIC8vIENvbGxlY3Rp
b24gdHlwZXMgdGhhdCBvbmx5IGRlYWwgd2l0aCBIVE1MRWxlbWVudHMuCi0gICAgICAgIHJldHVy
biBpczxIVE1MRWxlbWVudD4oZWxlbWVudCkgJiYgaXNNYXRjaGluZ0hUTUxFbGVtZW50KGNvbGxl
Y3Rpb24sIGRvd25jYXN0PEhUTUxFbGVtZW50PihlbGVtZW50KSk7Ci0gICAgfQotfQotCi1zdGF0
aWMgaW5saW5lIEVsZW1lbnQqIHByZXZpb3VzRWxlbWVudChDb250YWluZXJOb2RlJiBiYXNlLCBF
bGVtZW50JiBlbGVtZW50LCBib29sIG9ubHlJbmNsdWRlRGlyZWN0Q2hpbGRyZW4pCi17Ci0gICAg
cmV0dXJuIG9ubHlJbmNsdWRlRGlyZWN0Q2hpbGRyZW4gPyBFbGVtZW50VHJhdmVyc2FsOjpwcmV2
aW91c1NpYmxpbmcoZWxlbWVudCkgOiBFbGVtZW50VHJhdmVyc2FsOjpwcmV2aW91cyhlbGVtZW50
LCAmYmFzZSk7Ci19Ci0KLUFMV0FZU19JTkxJTkUgRWxlbWVudCogSFRNTENvbGxlY3Rpb246Oml0
ZXJhdGVGb3JQcmV2aW91c0VsZW1lbnQoRWxlbWVudCogZWxlbWVudCkgY29uc3QKLXsKLSAgICBi
b29sIG9ubHlJbmNsdWRlRGlyZWN0Q2hpbGRyZW4gPSBtX3Nob3VsZE9ubHlJbmNsdWRlRGlyZWN0
Q2hpbGRyZW47Ci0gICAgQ29udGFpbmVyTm9kZSYgcm9vdE5vZGUgPSB0aGlzLT5yb290Tm9kZSgp
OwotICAgIGZvciAoOyBlbGVtZW50OyBlbGVtZW50ID0gcHJldmlvdXNFbGVtZW50KHJvb3ROb2Rl
LCAqZWxlbWVudCwgb25seUluY2x1ZGVEaXJlY3RDaGlsZHJlbikpIHsKLSAgICAgICAgaWYgKGlz
TWF0Y2hpbmdFbGVtZW50KCp0aGlzLCAqZWxlbWVudCkpCi0gICAgICAgICAgICByZXR1cm4gZWxl
bWVudDsKLSAgICB9Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgRWxl
bWVudCogZmlyc3RNYXRjaGluZ0VsZW1lbnQoY29uc3QgSFRNTENvbGxlY3Rpb24mIGNvbGxlY3Rp
b24sIENvbnRhaW5lck5vZGUmIHJvb3QpCi17Ci0gICAgRWxlbWVudCogZWxlbWVudCA9IEVsZW1l
bnRUcmF2ZXJzYWw6OmZpcnN0V2l0aGluKHJvb3QpOwotICAgIHdoaWxlIChlbGVtZW50ICYmICFp
c01hdGNoaW5nRWxlbWVudChjb2xsZWN0aW9uLCAqZWxlbWVudCkpCi0gICAgICAgIGVsZW1lbnQg
PSBFbGVtZW50VHJhdmVyc2FsOjpuZXh0KCplbGVtZW50LCAmcm9vdCk7Ci0gICAgcmV0dXJuIGVs
ZW1lbnQ7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgRWxlbWVudCogbmV4dE1hdGNoaW5nRWxlbWVudChj
b25zdCBIVE1MQ29sbGVjdGlvbiYgY29sbGVjdGlvbiwgRWxlbWVudCYgZWxlbWVudCwgQ29udGFp
bmVyTm9kZSYgcm9vdCkKLXsKLSAgICBFbGVtZW50KiBuZXh0ID0gJmVsZW1lbnQ7Ci0gICAgZG8g
ewotICAgICAgICBuZXh0ID0gRWxlbWVudFRyYXZlcnNhbDo6bmV4dCgqbmV4dCwgJnJvb3QpOwot
ICAgIH0gd2hpbGUgKG5leHQgJiYgIWlzTWF0Y2hpbmdFbGVtZW50KGNvbGxlY3Rpb24sICpuZXh0
KSk7Ci0gICAgcmV0dXJuIG5leHQ7Ci19Ci0KLXVuc2lnbmVkIEhUTUxDb2xsZWN0aW9uOjpsZW5n
dGgoKSBjb25zdAotewotICAgIHJldHVybiBtX2luZGV4Q2FjaGUubm9kZUNvdW50KCp0aGlzKTsK
LX0KLQotRWxlbWVudCogSFRNTENvbGxlY3Rpb246Oml0ZW0odW5zaWduZWQgb2Zmc2V0KSBjb25z
dAotewotICAgIHJldHVybiBtX2luZGV4Q2FjaGUubm9kZUF0KCp0aGlzLCBvZmZzZXQpOwotfQot
Ci1zdGF0aWMgaW5saW5lIGJvb2wgbmFtZVNob3VsZEJlVmlzaWJsZUluRG9jdW1lbnRBbGwoSFRN
TEVsZW1lbnQmIGVsZW1lbnQpCi17Ci0gICAgLy8gVGhlIGRvY3VtZW50LmFsbCBjb2xsZWN0aW9u
IHJldHVybnMgb25seSBjZXJ0YWluIHR5cGVzIG9mIGVsZW1lbnRzIGJ5IG5hbWUsCi0gICAgLy8g
YWx0aG91Z2ggaXQgcmV0dXJucyBhbnkgdHlwZSBvZiBlbGVtZW50IGJ5IGlkLgotICAgIHJldHVy
biBlbGVtZW50Lmhhc1RhZ05hbWUoYXBwbGV0VGFnKQotICAgICAgICB8fCBlbGVtZW50Lmhhc1Rh
Z05hbWUoZW1iZWRUYWcpCi0gICAgICAgIHx8IGVsZW1lbnQuaGFzVGFnTmFtZShmb3JtVGFnKQot
ICAgICAgICB8fCBlbGVtZW50Lmhhc1RhZ05hbWUoaW1nVGFnKQotICAgICAgICB8fCBlbGVtZW50
Lmhhc1RhZ05hbWUoaW5wdXRUYWcpCi0gICAgICAgIHx8IGVsZW1lbnQuaGFzVGFnTmFtZShvYmpl
Y3RUYWcpCi0gICAgICAgIHx8IGVsZW1lbnQuaGFzVGFnTmFtZShzZWxlY3RUYWcpOwotfQotCi1z
dGF0aWMgaW5saW5lIGJvb2wgbmFtZVNob3VsZEJlVmlzaWJsZUluRG9jdW1lbnRBbGwoRWxlbWVu
dCYgZWxlbWVudCkKLXsKLSAgICByZXR1cm4gaXM8SFRNTEVsZW1lbnQ+KGVsZW1lbnQpICYmIG5h
bWVTaG91bGRCZVZpc2libGVJbkRvY3VtZW50QWxsKGRvd25jYXN0PEhUTUxFbGVtZW50PihlbGVt
ZW50KSk7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgRWxlbWVudCogZmlyc3RNYXRjaGluZ0NoaWxkRWxl
bWVudChjb25zdCBIVE1MQ29sbGVjdGlvbiYgbm9kZUxpc3QsIENvbnRhaW5lck5vZGUmIHJvb3Qp
Ci17Ci0gICAgRWxlbWVudCogZWxlbWVudCA9IEVsZW1lbnRUcmF2ZXJzYWw6OmZpcnN0V2l0aGlu
KHJvb3QpOwotICAgIHdoaWxlIChlbGVtZW50ICYmICFpc01hdGNoaW5nRWxlbWVudChub2RlTGlz
dCwgKmVsZW1lbnQpKQotICAgICAgICBlbGVtZW50ID0gRWxlbWVudFRyYXZlcnNhbDo6bmV4dFNp
YmxpbmcoKmVsZW1lbnQpOwotICAgIHJldHVybiBlbGVtZW50OwotfQotCi1zdGF0aWMgaW5saW5l
IEVsZW1lbnQqIG5leHRNYXRjaGluZ1NpYmxpbmdFbGVtZW50KGNvbnN0IEhUTUxDb2xsZWN0aW9u
JiBub2RlTGlzdCwgRWxlbWVudCYgZWxlbWVudCkKLXsKLSAgICBFbGVtZW50KiBuZXh0ID0gJmVs
ZW1lbnQ7Ci0gICAgZG8gewotICAgICAgICBuZXh0ID0gRWxlbWVudFRyYXZlcnNhbDo6bmV4dFNp
YmxpbmcoKm5leHQpOwotICAgIH0gd2hpbGUgKG5leHQgJiYgIWlzTWF0Y2hpbmdFbGVtZW50KG5v
ZGVMaXN0LCAqbmV4dCkpOwotICAgIHJldHVybiBuZXh0OwotfQotCi1pbmxpbmUgYm9vbCBIVE1M
Q29sbGVjdGlvbjo6dXNlc0N1c3RvbUZvcndhcmRPbmx5VHJhdmVyc2FsKCkgY29uc3QKLXsKLSAg
ICByZXR1cm4gbV91c2VzQ3VzdG9tRm9yd2FyZE9ubHlUcmF2ZXJzYWw7Ci19Ci0KLWlubGluZSBF
bGVtZW50KiBIVE1MQ29sbGVjdGlvbjo6Zmlyc3RFbGVtZW50KENvbnRhaW5lck5vZGUmIHJvb3Qp
IGNvbnN0Ci17Ci0gICAgaWYgKHVzZXNDdXN0b21Gb3J3YXJkT25seVRyYXZlcnNhbCgpKQotICAg
ICAgICByZXR1cm4gY3VzdG9tRWxlbWVudEFmdGVyKG51bGxwdHIpOwotICAgIGlmIChtX3Nob3Vs
ZE9ubHlJbmNsdWRlRGlyZWN0Q2hpbGRyZW4pCi0gICAgICAgIHJldHVybiBmaXJzdE1hdGNoaW5n
Q2hpbGRFbGVtZW50KCp0aGlzLCByb290KTsKLSAgICByZXR1cm4gZmlyc3RNYXRjaGluZ0VsZW1l
bnQoKnRoaXMsIHJvb3QpOwotfQotCi1pbmxpbmUgRWxlbWVudCogSFRNTENvbGxlY3Rpb246OnRy
YXZlcnNlRm9yd2FyZChFbGVtZW50JiBjdXJyZW50LCB1bnNpZ25lZCBjb3VudCwgdW5zaWduZWQm
IHRyYXZlcnNlZENvdW50LCBDb250YWluZXJOb2RlJiByb290KSBjb25zdAotewotICAgIEVsZW1l
bnQqIGVsZW1lbnQgPSAmY3VycmVudDsKLSAgICBpZiAodXNlc0N1c3RvbUZvcndhcmRPbmx5VHJh
dmVyc2FsKCkpIHsKLSAgICAgICAgZm9yICh0cmF2ZXJzZWRDb3VudCA9IDA7IHRyYXZlcnNlZENv
dW50IDwgY291bnQ7ICsrdHJhdmVyc2VkQ291bnQpIHsKLSAgICAgICAgICAgIGVsZW1lbnQgPSBj
dXN0b21FbGVtZW50QWZ0ZXIoZWxlbWVudCk7Ci0gICAgICAgICAgICBpZiAoIWVsZW1lbnQpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgaWYg
KG1fc2hvdWxkT25seUluY2x1ZGVEaXJlY3RDaGlsZHJlbikgewotICAgICAgICBmb3IgKHRyYXZl
cnNlZENvdW50ID0gMDsgdHJhdmVyc2VkQ291bnQgPCBjb3VudDsgKyt0cmF2ZXJzZWRDb3VudCkg
ewotICAgICAgICAgICAgZWxlbWVudCA9IG5leHRNYXRjaGluZ1NpYmxpbmdFbGVtZW50KCp0aGlz
LCAqZWxlbWVudCk7Ci0gICAgICAgICAgICBpZiAoIWVsZW1lbnQpCi0gICAgICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgewotICAgICAgICBmb3IgKHRy
YXZlcnNlZENvdW50ID0gMDsgdHJhdmVyc2VkQ291bnQgPCBjb3VudDsgKyt0cmF2ZXJzZWRDb3Vu
dCkgewotICAgICAgICAgICAgZWxlbWVudCA9IG5leHRNYXRjaGluZ0VsZW1lbnQoKnRoaXMsICpl
bGVtZW50LCByb290KTsKLSAgICAgICAgICAgIGlmICghZWxlbWVudCkKLSAgICAgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gZWxlbWVudDsK
LX0KLQotRWxlbWVudCogSFRNTENvbGxlY3Rpb246OmNvbGxlY3Rpb25CZWdpbigpIGNvbnN0Ci17
Ci0gICAgcmV0dXJuIGZpcnN0RWxlbWVudChyb290Tm9kZSgpKTsKLX0KLQotRWxlbWVudCogSFRN
TENvbGxlY3Rpb246OmNvbGxlY3Rpb25MYXN0KCkgY29uc3QKLXsKLSAgICAvLyBGSVhNRTogVGhp
cyBzaG91bGQgYmUgb3B0aW1pemVkIHNpbWlsYXJseSB0byB0aGUgZm9yd2FyZCBjYXNlLgotICAg
IGF1dG8mIHJvb3QgPSByb290Tm9kZSgpOwotICAgIEVsZW1lbnQqIGxhc3QgPSBtX3Nob3VsZE9u
bHlJbmNsdWRlRGlyZWN0Q2hpbGRyZW4gPyBFbGVtZW50VHJhdmVyc2FsOjpsYXN0Q2hpbGQocm9v
dCkgOiBFbGVtZW50VHJhdmVyc2FsOjpsYXN0V2l0aGluKHJvb3QpOwotICAgIHJldHVybiBpdGVy
YXRlRm9yUHJldmlvdXNFbGVtZW50KGxhc3QpOwotfQotCi12b2lkIEhUTUxDb2xsZWN0aW9uOjpj
b2xsZWN0aW9uVHJhdmVyc2VGb3J3YXJkKEVsZW1lbnQqJiBjdXJyZW50LCB1bnNpZ25lZCBjb3Vu
dCwgdW5zaWduZWQmIHRyYXZlcnNlZENvdW50KSBjb25zdAotewotICAgIGN1cnJlbnQgPSB0cmF2
ZXJzZUZvcndhcmQoKmN1cnJlbnQsIGNvdW50LCB0cmF2ZXJzZWRDb3VudCwgcm9vdE5vZGUoKSk7
Ci19Ci0KLXZvaWQgSFRNTENvbGxlY3Rpb246OmNvbGxlY3Rpb25UcmF2ZXJzZUJhY2t3YXJkKEVs
ZW1lbnQqJiBjdXJyZW50LCB1bnNpZ25lZCBjb3VudCkgY29uc3QKLXsKLSAgICAvLyBGSVhNRTog
VGhpcyBzaG91bGQgYmUgb3B0aW1pemVkIHNpbWlsYXJseSB0byB0aGUgZm9yd2FyZCBjYXNlLgot
ICAgIGlmIChtX3Nob3VsZE9ubHlJbmNsdWRlRGlyZWN0Q2hpbGRyZW4pIHsKLSAgICAgICAgZm9y
ICg7IGNvdW50ICYmIGN1cnJlbnQ7IC0tY291bnQpCi0gICAgICAgICAgICBjdXJyZW50ID0gaXRl
cmF0ZUZvclByZXZpb3VzRWxlbWVudChFbGVtZW50VHJhdmVyc2FsOjpwcmV2aW91c1NpYmxpbmco
KmN1cnJlbnQpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBhdXRvJiByb290ID0gcm9v
dE5vZGUoKTsKLSAgICBmb3IgKDsgY291bnQgJiYgY3VycmVudDsgLS1jb3VudCkKLSAgICAgICAg
Y3VycmVudCA9IGl0ZXJhdGVGb3JQcmV2aW91c0VsZW1lbnQoRWxlbWVudFRyYXZlcnNhbDo6cHJl
dmlvdXMoKmN1cnJlbnQsICZyb290KSk7Ci19Ci0KLXZvaWQgSFRNTENvbGxlY3Rpb246OmludmFs
aWRhdGVDYWNoZShEb2N1bWVudCYgZG9jdW1lbnQpIGNvbnN0Ci17Ci0gICAgaWYgKG1faW5kZXhD
YWNoZS5oYXNWYWxpZENhY2hlKCp0aGlzKSkgewotICAgICAgICBkb2N1bWVudC51bnJlZ2lzdGVy
Q29sbGVjdGlvbihjb25zdF9jYXN0PEhUTUxDb2xsZWN0aW9uJj4oKnRoaXMpKTsKLSAgICAgICAg
bV9pbmRleENhY2hlLmludmFsaWRhdGUoKnRoaXMpOwotICAgIH0KICAgICBpZiAoaGFzTmFtZWRF
bGVtZW50Q2FjaGUoKSkKICAgICAgICAgaW52YWxpZGF0ZU5hbWVkRWxlbWVudENhY2hlKGRvY3Vt
ZW50KTsKIH0KQEAgLTM5OCw0MCArMTMxLDggQEAgdm9pZCBIVE1MQ29sbGVjdGlvbjo6aW52YWxp
ZGF0ZU5hbWVkRWxlbWVudENhY2hlKERvY3VtZW50JiBkb2N1bWVudCkgY29uc3QKICAgICBtX25h
bWVkRWxlbWVudENhY2hlID0gbnVsbHB0cjsKIH0KIAotRWxlbWVudCogSFRNTENvbGxlY3Rpb246
Om5hbWVkSXRlbShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpIGNvbnN0CitFbGVtZW50KiBIVE1M
Q29sbGVjdGlvbjo6bmFtZWRJdGVtU2xvdyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpIGNvbnN0
CiB7Ci0gICAgLy8gaHR0cDovL21zZG4ubWljcm9zb2Z0LmNvbS93b3Jrc2hvcC9hdXRob3IvZGh0
bWwvcmVmZXJlbmNlL21ldGhvZHMvbmFtZWRpdGVtLmFzcAotICAgIC8vIFRoaXMgbWV0aG9kIGZp
cnN0IHNlYXJjaGVzIGZvciBhbiBvYmplY3Qgd2l0aCBhIG1hdGNoaW5nIGlkCi0gICAgLy8gYXR0
cmlidXRlLiBJZiBhIG1hdGNoIGlzIG5vdCBmb3VuZCwgdGhlIG1ldGhvZCB0aGVuIHNlYXJjaGVz
IGZvciBhbgotICAgIC8vIG9iamVjdCB3aXRoIGEgbWF0Y2hpbmcgbmFtZSBhdHRyaWJ1dGUsIGJ1
dCBvbmx5IG9uIHRob3NlIGVsZW1lbnRzCi0gICAgLy8gdGhhdCBhcmUgYWxsb3dlZCBhIG5hbWUg
YXR0cmlidXRlLgotCi0gICAgaWYgKG5hbWUuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gbnVs
bHB0cjsKLQotICAgIENvbnRhaW5lck5vZGUmIHJvb3QgPSByb290Tm9kZSgpOwotICAgIGlmICgh
dXNlc0N1c3RvbUZvcndhcmRPbmx5VHJhdmVyc2FsKCkgJiYgcm9vdC5pc0luVHJlZVNjb3BlKCkp
IHsKLSAgICAgICAgRWxlbWVudCogY2FuZGlkYXRlID0gbnVsbHB0cjsKLQotICAgICAgICBUcmVl
U2NvcGUmIHRyZWVTY29wZSA9IHJvb3QudHJlZVNjb3BlKCk7Ci0gICAgICAgIGlmICh0cmVlU2Nv
cGUuaGFzRWxlbWVudFdpdGhJZCgqbmFtZS5pbXBsKCkpKSB7Ci0gICAgICAgICAgICBpZiAoIXRy
ZWVTY29wZS5jb250YWluc011bHRpcGxlRWxlbWVudHNXaXRoSWQobmFtZSkpCi0gICAgICAgICAg
ICAgICAgY2FuZGlkYXRlID0gdHJlZVNjb3BlLmdldEVsZW1lbnRCeUlkKG5hbWUpOwotICAgICAg
ICB9IGVsc2UgaWYgKHRyZWVTY29wZS5oYXNFbGVtZW50V2l0aE5hbWUoKm5hbWUuaW1wbCgpKSkg
ewotICAgICAgICAgICAgaWYgKCF0cmVlU2NvcGUuY29udGFpbnNNdWx0aXBsZUVsZW1lbnRzV2l0
aE5hbWUobmFtZSkpIHsKLSAgICAgICAgICAgICAgICBjYW5kaWRhdGUgPSB0cmVlU2NvcGUuZ2V0
RWxlbWVudEJ5TmFtZShuYW1lKTsKLSAgICAgICAgICAgICAgICBpZiAoY2FuZGlkYXRlICYmIHR5
cGUoKSA9PSBEb2NBbGwgJiYgIW5hbWVTaG91bGRCZVZpc2libGVJbkRvY3VtZW50QWxsKCpjYW5k
aWRhdGUpKQotICAgICAgICAgICAgICAgICAgICBjYW5kaWRhdGUgPSBudWxscHRyOwotICAgICAg
ICAgICAgfQotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotCi0g
ICAgICAgIGlmIChjYW5kaWRhdGUgJiYgaXNNYXRjaGluZ0VsZW1lbnQoKnRoaXMsICpjYW5kaWRh
dGUpKSB7Ci0gICAgICAgICAgICBpZiAobV9zaG91bGRPbmx5SW5jbHVkZURpcmVjdENoaWxkcmVu
ID8gY2FuZGlkYXRlLT5wYXJlbnROb2RlKCkgPT0gJnJvb3QgOiBjYW5kaWRhdGUtPmlzRGVzY2Vu
ZGFudE9mKCZyb290KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gY2FuZGlkYXRlOwotICAgICAg
ICB9Ci0gICAgfQotCiAgICAgLy8gVGhlIHBhdGhvbG9naWNhbCBjYXNlLiBXZSBuZWVkIHRvIHdh
bGsgdGhlIGVudGlyZSBzdWJ0cmVlLgogICAgIHVwZGF0ZU5hbWVkRWxlbWVudENhY2hlKCk7CiAg
ICAgQVNTRVJUKG1fbmFtZWRFbGVtZW50Q2FjaGUpOwpAQCAtNDU2LDkgKzE1Nyw5IEBAIHZvaWQg
SFRNTENvbGxlY3Rpb246OnVwZGF0ZU5hbWVkRWxlbWVudENhY2hlKCkgY29uc3QKIAogICAgIGF1
dG8gY2FjaGUgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbGxlY3Rpb25OYW1lZEVsZW1lbnRDYWNoZT4o
KTsKIAotICAgIHVuc2lnbmVkIHNpemUgPSBtX2luZGV4Q2FjaGUubm9kZUNvdW50KCp0aGlzKTsK
KyAgICB1bnNpZ25lZCBzaXplID0gbGVuZ3RoKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IHNpemU7ICsraSkgewotICAgICAgICBFbGVtZW50JiBlbGVtZW50ID0gKm1faW5kZXhDYWNo
ZS5ub2RlQXQoKnRoaXMsIGkpOworICAgICAgICBFbGVtZW50JiBlbGVtZW50ID0gKml0ZW0oaSk7
CiAgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgaWQgPSBlbGVtZW50LmdldElkQXR0cmlidXRl
KCk7CiAgICAgICAgIGlmICghaWQuaXNFbXB0eSgpKQogICAgICAgICAgICAgY2FjaGUtPmFwcGVu
ZFRvSWRDYWNoZShpZCwgZWxlbWVudCk7CkBAIC01MTMsMTAgKzIxNCw0IEBAIFBhc3NSZWZQdHI8
Tm9kZUxpc3Q+IEhUTUxDb2xsZWN0aW9uOjp0YWdzKGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICBy
ZXR1cm4gb3duZXJOb2RlKCkuZ2V0RWxlbWVudHNCeVRhZ05hbWUobmFtZSk7CiB9CiAKLUVsZW1l
bnQqIEhUTUxDb2xsZWN0aW9uOjpjdXN0b21FbGVtZW50QWZ0ZXIoRWxlbWVudCopIGNvbnN0Ci17
Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TENvbGxlY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uaAppbmRl
eCA0NzE0ZTkwOGRkYjVkOWI4ODljM2I2Y2U2NTdhMTQwZDdhM2M1OWUyLi5iNDIwNjFhMTIxZGZm
NDA4NjYzNDQyYmM1YzFlZGQ2NDczZjVjODhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxDb2xsZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVj
dGlvbi5oCkBAIC02MCw1NyArNjAsMzkgQEAgcHJpdmF0ZToKIAogY2xhc3MgSFRNTENvbGxlY3Rp
b24gOiBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlLCBwdWJsaWMgUmVmQ291bnRlZDxIVE1MQ29sbGVj
dGlvbj4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8SFRNTENvbGxlY3Rpb24+IGNyZWF0ZShD
b250YWluZXJOb2RlJiBiYXNlLCBDb2xsZWN0aW9uVHlwZSk7CiAgICAgdmlydHVhbCB+SFRNTENv
bGxlY3Rpb24oKTsKIAogICAgIC8vIERPTSBBUEkKLSAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25z
dDsKLSAgICBFbGVtZW50KiBpdGVtKHVuc2lnbmVkIG9mZnNldCkgY29uc3Q7Ci0gICAgdmlydHVh
bCBFbGVtZW50KiBuYW1lZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKSBjb25zdDsKKyAg
ICB2aXJ0dWFsIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEVsZW1l
bnQqIGl0ZW0odW5zaWduZWQgb2Zmc2V0KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBFbGVtZW50
KiBuYW1lZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKSBjb25zdCA9IDA7CiAgICAgUGFz
c1JlZlB0cjxOb2RlTGlzdD4gdGFncyhjb25zdCBTdHJpbmcmKTsKIAogICAgIC8vIE5vbi1ET00g
QVBJCiAgICAgYm9vbCBoYXNOYW1lZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKSBjb25z
dDsKICAgICBWZWN0b3I8UmVmPEVsZW1lbnQ+PiBuYW1lZEl0ZW1zKGNvbnN0IEF0b21pY1N0cmlu
ZyYgbmFtZSkgY29uc3Q7Ci0gICAgc2l6ZV90IG1lbW9yeUNvc3QoKSBjb25zdDsKKyAgICB2aXJ0
dWFsIHNpemVfdCBtZW1vcnlDb3N0KCkgY29uc3Q7CiAKICAgICBib29sIGlzUm9vdGVkQXREb2N1
bWVudCgpIGNvbnN0OwogICAgIE5vZGVMaXN0SW52YWxpZGF0aW9uVHlwZSBpbnZhbGlkYXRpb25U
eXBlKCkgY29uc3Q7CiAgICAgQ29sbGVjdGlvblR5cGUgdHlwZSgpIGNvbnN0OwogICAgIENvbnRh
aW5lck5vZGUmIG93bmVyTm9kZSgpIGNvbnN0OwotICAgIHZvaWQgaW52YWxpZGF0ZUNhY2hlKGNv
bnN0IFF1YWxpZmllZE5hbWUqIGF0dHJpYnV0ZU5hbWUpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9p
ZCBpbnZhbGlkYXRlQ2FjaGUoRG9jdW1lbnQmKSBjb25zdDsKLQotICAgIC8vIEZvciBDb2xsZWN0
aW9uSW5kZXhDYWNoZTsgZG8gbm90IHVzZSBlbHNld2hlcmUuCi0gICAgRWxlbWVudCogY29sbGVj
dGlvbkJlZ2luKCkgY29uc3Q7Ci0gICAgRWxlbWVudCogY29sbGVjdGlvbkxhc3QoKSBjb25zdDsK
LSAgICBFbGVtZW50KiBjb2xsZWN0aW9uRW5kKCkgY29uc3Q7Ci0gICAgdm9pZCBjb2xsZWN0aW9u
VHJhdmVyc2VGb3J3YXJkKEVsZW1lbnQqJiwgdW5zaWduZWQgY291bnQsIHVuc2lnbmVkJiB0cmF2
ZXJzZWRDb3VudCkgY29uc3Q7Ci0gICAgdm9pZCBjb2xsZWN0aW9uVHJhdmVyc2VCYWNrd2FyZChF
bGVtZW50KiYsIHVuc2lnbmVkIGNvdW50KSBjb25zdDsKLSAgICBib29sIGNvbGxlY3Rpb25DYW5U
cmF2ZXJzZUJhY2t3YXJkKCkgY29uc3Q7Ci0gICAgdm9pZCB3aWxsVmFsaWRhdGVJbmRleENhY2hl
KCkgY29uc3Q7CisgICAgQ29udGFpbmVyTm9kZSYgcm9vdE5vZGUoKSBjb25zdDsKKyAgICB2b2lk
IGludmFsaWRhdGVDYWNoZShjb25zdCBRdWFsaWZpZWROYW1lKiBhdHRyaWJ1dGVOYW1lKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZUNhY2hlKERvY3VtZW50Jik7CiAKICAgICBib29sIGhh
c05hbWVkRWxlbWVudENhY2hlKCkgY29uc3Q7CiAKIHByb3RlY3RlZDoKLSAgICBlbnVtIEVsZW1l
bnRUcmF2ZXJzYWxUeXBlIHsgTm9ybWFsVHJhdmVyc2FsLCBDdXN0b21Gb3J3YXJkT25seVRyYXZl
cnNhbCB9OwotICAgIEhUTUxDb2xsZWN0aW9uKENvbnRhaW5lck5vZGUmIGJhc2UsIENvbGxlY3Rp
b25UeXBlLCBFbGVtZW50VHJhdmVyc2FsVHlwZSA9IE5vcm1hbFRyYXZlcnNhbCk7CisgICAgSFRN
TENvbGxlY3Rpb24oQ29udGFpbmVyTm9kZSYgYmFzZSwgQ29sbGVjdGlvblR5cGUpOwogCiAgICAg
dmlydHVhbCB2b2lkIHVwZGF0ZU5hbWVkRWxlbWVudENhY2hlKCkgY29uc3Q7CisgICAgRWxlbWVu
dCogbmFtZWRJdGVtU2xvdyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpIGNvbnN0OwogCiAgICAg
dm9pZCBzZXROYW1lZEl0ZW1DYWNoZShzdGQ6OnVuaXF1ZV9wdHI8Q29sbGVjdGlvbk5hbWVkRWxl
bWVudENhY2hlPikgY29uc3Q7CiAgICAgY29uc3QgQ29sbGVjdGlvbk5hbWVkRWxlbWVudENhY2hl
JiBuYW1lZEl0ZW1DYWNoZXMoKSBjb25zdDsKIAotcHJpdmF0ZToKICAgICBEb2N1bWVudCYgZG9j
dW1lbnQoKSBjb25zdDsKLSAgICBDb250YWluZXJOb2RlJiByb290Tm9kZSgpIGNvbnN0OwotICAg
IGJvb2wgdXNlc0N1c3RvbUZvcndhcmRPbmx5VHJhdmVyc2FsKCkgY29uc3Q7Ci0KLSAgICBFbGVt
ZW50KiBpdGVyYXRlRm9yUHJldmlvdXNFbGVtZW50KEVsZW1lbnQqKSBjb25zdDsKLSAgICBFbGVt
ZW50KiBmaXJzdEVsZW1lbnQoQ29udGFpbmVyTm9kZSYgcm9vdCkgY29uc3Q7Ci0gICAgRWxlbWVu
dCogdHJhdmVyc2VGb3J3YXJkKEVsZW1lbnQmLCB1bnNpZ25lZCBjb3VudCwgdW5zaWduZWQmIHRy
YXZlcnNlZENvdW50LCBDb250YWluZXJOb2RlJiByb290KSBjb25zdDsKLQotICAgIHZpcnR1YWwg
RWxlbWVudCogY3VzdG9tRWxlbWVudEFmdGVyKEVsZW1lbnQqKSBjb25zdDsKIAogICAgIHZvaWQg
aW52YWxpZGF0ZU5hbWVkRWxlbWVudENhY2hlKERvY3VtZW50JikgY29uc3Q7CiAKQEAgLTExOSwx
NiArMTAxLDIxIEBAIHByaXZhdGU6CiAKICAgICBSZWY8Q29udGFpbmVyTm9kZT4gbV9vd25lck5v
ZGU7CiAKLSAgICBtdXRhYmxlIENvbGxlY3Rpb25JbmRleENhY2hlPEhUTUxDb2xsZWN0aW9uLCBF
bGVtZW50Kj4gbV9pbmRleENhY2hlOwogICAgIG11dGFibGUgc3RkOjp1bmlxdWVfcHRyPENvbGxl
Y3Rpb25OYW1lZEVsZW1lbnRDYWNoZT4gbV9uYW1lZEVsZW1lbnRDYWNoZTsKIAogICAgIGNvbnN0
IHVuc2lnbmVkIG1fY29sbGVjdGlvblR5cGUgOiA1OwogICAgIGNvbnN0IHVuc2lnbmVkIG1faW52
YWxpZGF0aW9uVHlwZSA6IDQ7CiAgICAgY29uc3QgdW5zaWduZWQgbV9yb290VHlwZSA6IDE7Ci0g
ICAgY29uc3QgdW5zaWduZWQgbV9zaG91bGRPbmx5SW5jbHVkZURpcmVjdENoaWxkcmVuIDogMTsK
LSAgICBjb25zdCB1bnNpZ25lZCBtX3VzZXNDdXN0b21Gb3J3YXJkT25seVRyYXZlcnNhbCA6IDE7
CiB9OwogCitpbmxpbmUgQ29udGFpbmVyTm9kZSYgSFRNTENvbGxlY3Rpb246OnJvb3ROb2RlKCkg
Y29uc3QKK3sKKyAgICBpZiAoaXNSb290ZWRBdERvY3VtZW50KCkgJiYgb3duZXJOb2RlKCkuaW5E
b2N1bWVudCgpKQorICAgICAgICByZXR1cm4gb3duZXJOb2RlKCkuZG9jdW1lbnQoKTsKKworICAg
IHJldHVybiBvd25lck5vZGUoKTsKK30KKwogaW5saW5lIGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4q
IENvbGxlY3Rpb25OYW1lZEVsZW1lbnRDYWNoZTo6ZmluZEVsZW1lbnRzV2l0aElkKGNvbnN0IEF0
b21pY1N0cmluZyYgaWQpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGZpbmQobV9pZE1hcCwgaWQpOwpA
QCAtMTc3LDcgKzE2NCw3IEBAIGlubGluZSB2b2lkIENvbGxlY3Rpb25OYW1lZEVsZW1lbnRDYWNo
ZTo6YXBwZW5kKFN0cmluZ1RvRWxlbWVudHNNYXAmIG1hcCwgY29uc3QKIAogaW5saW5lIHNpemVf
dCBIVE1MQ29sbGVjdGlvbjo6bWVtb3J5Q29zdCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1faW5k
ZXhDYWNoZS5tZW1vcnlDb3N0KCkgKyAobV9uYW1lZEVsZW1lbnRDYWNoZSA/IG1fbmFtZWRFbGVt
ZW50Q2FjaGUtPm1lbW9yeUNvc3QoKSA6IDApOworICAgIHJldHVybiBtX25hbWVkRWxlbWVudENh
Y2hlID8gbV9uYW1lZEVsZW1lbnRDYWNoZS0+bWVtb3J5Q29zdCgpIDogMDsKIH0KIAogaW5saW5l
IGJvb2wgSFRNTENvbGxlY3Rpb246OmlzUm9vdGVkQXREb2N1bWVudCgpIGNvbnN0CkBAIC0yMDUs
NyArMTkyLDcgQEAgaW5saW5lIERvY3VtZW50JiBIVE1MQ29sbGVjdGlvbjo6ZG9jdW1lbnQoKSBj
b25zdAogICAgIHJldHVybiBtX293bmVyTm9kZS0+ZG9jdW1lbnQoKTsKIH0KIAotaW5saW5lIHZv
aWQgSFRNTENvbGxlY3Rpb246OmludmFsaWRhdGVDYWNoZShjb25zdCBRdWFsaWZpZWROYW1lKiBh
dHRyaWJ1dGVOYW1lKSBjb25zdAoraW5saW5lIHZvaWQgSFRNTENvbGxlY3Rpb246OmludmFsaWRh
dGVDYWNoZShjb25zdCBRdWFsaWZpZWROYW1lKiBhdHRyaWJ1dGVOYW1lKQogewogICAgIGlmICgh
YXR0cmlidXRlTmFtZSB8fCBzaG91bGRJbnZhbGlkYXRlVHlwZU9uQXR0cmlidXRlQ2hhbmdlKGlu
dmFsaWRhdGlvblR5cGUoKSwgKmF0dHJpYnV0ZU5hbWUpKQogICAgICAgICBpbnZhbGlkYXRlQ2Fj
aGUoZG9jdW1lbnQoKSk7CkBAIC0yMTMsMjEgKzIwMCw2IEBAIGlubGluZSB2b2lkIEhUTUxDb2xs
ZWN0aW9uOjppbnZhbGlkYXRlQ2FjaGUoY29uc3QgUXVhbGlmaWVkTmFtZSogYXR0cmlidXRlTmFt
ZSkKICAgICAgICAgaW52YWxpZGF0ZU5hbWVkRWxlbWVudENhY2hlKGRvY3VtZW50KCkpOwogfQog
Ci1pbmxpbmUgRWxlbWVudCogSFRNTENvbGxlY3Rpb246OmNvbGxlY3Rpb25FbmQoKSBjb25zdAot
ewotICAgIHJldHVybiBudWxscHRyOwotfQotCi1pbmxpbmUgYm9vbCBIVE1MQ29sbGVjdGlvbjo6
Y29sbGVjdGlvbkNhblRyYXZlcnNlQmFja3dhcmQoKSBjb25zdAotewotICAgIHJldHVybiAhbV91
c2VzQ3VzdG9tRm9yd2FyZE9ubHlUcmF2ZXJzYWw7Ci19Ci0KLWlubGluZSB2b2lkIEhUTUxDb2xs
ZWN0aW9uOjp3aWxsVmFsaWRhdGVJbmRleENhY2hlKCkgY29uc3QKLXsKLSAgICBkb2N1bWVudCgp
LnJlZ2lzdGVyQ29sbGVjdGlvbihjb25zdF9jYXN0PEhUTUxDb2xsZWN0aW9uJj4oKnRoaXMpKTsK
LX0KLQogaW5saW5lIGJvb2wgSFRNTENvbGxlY3Rpb246Omhhc05hbWVkRWxlbWVudENhY2hlKCkg
Y29uc3QKIHsKICAgICByZXR1cm4gISFtX25hbWVkRWxlbWVudENhY2hlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGF0YUxpc3RFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTERhdGFMaXN0RWxlbWVudC5jcHAKaW5kZXggZmU1ZTc2ZmFkNWVkNmYzYWNh
Y2VhZWY2NGIwNDUzMzI3NzQ2NWQwNi4uMjg0NjU0NzZkZmQ0OTk3YjFiMWFiNzI3MTA5ZDc1YjMx
MjIwZWIwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGF0YUxpc3RFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEYXRhTGlzdEVsZW1lbnQuY3Bw
CkBAIC0zMyw4ICszMywxMCBAQAogI2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQogI2luY2x1
ZGUgIkhUTUxEYXRhTGlzdEVsZW1lbnQuaCIKIAorI2luY2x1ZGUgIkdlbmVyaWNDYWNoZWRIVE1M
Q29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIklkVGFyZ2V0
T2JzZXJ2ZXJSZWdpc3RyeS5oIgorI2luY2x1ZGUgIk5vZGVSYXJlRGF0YS5oIgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKQEAgLTUwLDcgKzUyLDcgQEAgUmVmPEhUTUxEYXRhTGlzdEVsZW1lbnQ+
IEhUTUxEYXRhTGlzdEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW0K
IAogUmVmPEhUTUxDb2xsZWN0aW9uPiBIVE1MRGF0YUxpc3RFbGVtZW50OjpvcHRpb25zKCkKIHsK
LSAgICByZXR1cm4gZW5zdXJlQ2FjaGVkSFRNTENvbGxlY3Rpb24oRGF0YUxpc3RPcHRpb25zKTsK
KyAgICByZXR1cm4gZW5zdXJlUmFyZURhdGEoKS5lbnN1cmVOb2RlTGlzdHMoKS5hZGRDYWNoZWRD
b2xsZWN0aW9uPEdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbjxDb2xsZWN0aW9uVHlwZVRyYWl0
czxEYXRhTGlzdE9wdGlvbnM+Ojp0cmF2ZXJzYWxUeXBlPj4oKnRoaXMsIERhdGFMaXN0T3B0aW9u
cyk7CiB9CiAKIHZvaWQgSFRNTERhdGFMaXN0RWxlbWVudDo6b3B0aW9uRWxlbWVudENoaWxkcmVu
Q2hhbmdlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGaWVsZFNldEVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmNwcApp
bmRleCBhYzMzMmU4NzAyMjYxOGMyZTQ5M2I2OTc3YjA4M2Q1NWFiODZhZDdkLi40MDBhMGJhZTBl
ZDk0ZmUwNTNmZDYzNTcxYjQwYWFjOThmYmFjOGRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEZpZWxkU2V0RWxlbWVudC5jcHAKQEAgLTI2LDEwICsyNiwxMSBAQAogI2luY2x1ZGUgIkhU
TUxGaWVsZFNldEVsZW1lbnQuaCIKIAogI2luY2x1ZGUgIkVsZW1lbnRJdGVyYXRvci5oIgotI2lu
Y2x1ZGUgIkhUTUxDb2xsZWN0aW9uLmgiCisjaW5jbHVkZSAiSFRNTEZvcm1Db250cm9sc0NvbGxl
Y3Rpb24uaCIKICNpbmNsdWRlICJIVE1MTGVnZW5kRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxO
YW1lcy5oIgogI2luY2x1ZGUgIkhUTUxPYmplY3RFbGVtZW50LmgiCisjaW5jbHVkZSAiTm9kZVJh
cmVEYXRhLmgiCiAjaW5jbHVkZSAiUmVuZGVyRmllbGRzZXQuaCIKICNpbmNsdWRlIDx3dGYvU3Rk
TGliRXh0cmFzLmg+CiAKQEAgLTE2MSw3ICsxNjIsNyBAQCBIVE1MTGVnZW5kRWxlbWVudCogSFRN
TEZpZWxkU2V0RWxlbWVudDo6bGVnZW5kKCkgY29uc3QKIAogUmVmPEhUTUxDb2xsZWN0aW9uPiBI
VE1MRmllbGRTZXRFbGVtZW50OjplbGVtZW50cygpCiB7Ci0gICAgcmV0dXJuIGVuc3VyZUNhY2hl
ZEhUTUxDb2xsZWN0aW9uKEZvcm1Db250cm9scyk7CisgICAgcmV0dXJuIGVuc3VyZVJhcmVEYXRh
KCkuZW5zdXJlTm9kZUxpc3RzKCkuYWRkQ2FjaGVkQ29sbGVjdGlvbjxIVE1MRm9ybUNvbnRyb2xz
Q29sbGVjdGlvbj4oKnRoaXMsIEZvcm1Db250cm9scyk7CiB9CiAKIHZvaWQgSFRNTEZpZWxkU2V0
RWxlbWVudDo6cmVmcmVzaEVsZW1lbnRzSWZOZWVkZWQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmNwcAppbmRleCAwZGVlY2My
NGVjZDliNWMzN2IwYWMwOWMzMTc1MjczNDJiNzExZDg0Li4zMDI1MGJiMjY0YjQ5OGY4ODg4MjFl
MDc4OTE4ZmVkNzZkODMzZTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxG
b3JtQ29udHJvbHNDb2xsZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxG
b3JtQ29udHJvbHNDb2xsZWN0aW9uLmNwcApAQCAtMzYsNyArMzYsNyBAQCB1c2luZyBuYW1lc3Bh
Y2UgSFRNTE5hbWVzOwogLy8gY2FsY3VsYXRpb24gZXZlcnkgdGltZSBpZiBhbnl0aGluZyBoYXMg
Y2hhbmdlZC4KIAogSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246OkhUTUxGb3JtQ29udHJvbHND
b2xsZWN0aW9uKENvbnRhaW5lck5vZGUmIG93bmVyTm9kZSkKLSAgICA6IEhUTUxDb2xsZWN0aW9u
KG93bmVyTm9kZSwgRm9ybUNvbnRyb2xzLCBDdXN0b21Gb3J3YXJkT25seVRyYXZlcnNhbCkKKyAg
ICA6IENhY2hlZEhUTUxDb2xsZWN0aW9uPEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLCBDb2xs
ZWN0aW9uVHlwZVRyYWl0czxGb3JtQ29udHJvbHM+Ojp0cmF2ZXJzYWxUeXBlPihvd25lck5vZGUs
IEZvcm1Db250cm9scykKICAgICAsIG1fY2FjaGVkRWxlbWVudChudWxscHRyKQogICAgICwgbV9j
YWNoZWRFbGVtZW50T2Zmc2V0SW5BcnJheSgwKQogewpAQCAtMTc3LDkgKzE3Nyw5IEBAIHZvaWQg
SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246OnVwZGF0ZU5hbWVkRWxlbWVudENhY2hlKCkgY29u
c3QKICAgICBzZXROYW1lZEl0ZW1DYWNoZShXVEY6Om1vdmUoY2FjaGUpKTsKIH0KIAotdm9pZCBI
VE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6aW52YWxpZGF0ZUNhY2hlKERvY3VtZW50JiBkb2N1
bWVudCkgY29uc3QKK3ZvaWQgSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246OmludmFsaWRhdGVD
YWNoZShEb2N1bWVudCYgZG9jdW1lbnQpCiB7Ci0gICAgSFRNTENvbGxlY3Rpb246OmludmFsaWRh
dGVDYWNoZShkb2N1bWVudCk7CisgICAgQ2FjaGVkSFRNTENvbGxlY3Rpb248SFRNTEZvcm1Db250
cm9sc0NvbGxlY3Rpb24sIENvbGxlY3Rpb25UeXBlVHJhaXRzPEZvcm1Db250cm9scz46OnRyYXZl
cnNhbFR5cGU+OjppbnZhbGlkYXRlQ2FjaGUoZG9jdW1lbnQpOwogICAgIG1fY2FjaGVkRWxlbWVu
dCA9IG51bGxwdHI7CiAgICAgbV9jYWNoZWRFbGVtZW50T2Zmc2V0SW5BcnJheSA9IDA7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9u
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmgKaW5k
ZXggYjE2OGFkOWMwNjA1NDQ4YTk5NDlkNGE4ZTE1ZTQ0NjVkNzg1YmI3My4uYzBkNTIwZjZhZjIx
ZGFlNGJkMjFkZmIxMjIwMDc4NzE4ZDU0NDJhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uaApAQCAtMjMsNyArMjMsNyBAQAogI2lmbmRl
ZiBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbl9oCiAjZGVmaW5lIEhUTUxGb3JtQ29udHJvbHND
b2xsZWN0aW9uX2gKIAotI2luY2x1ZGUgIkhUTUxDb2xsZWN0aW9uLmgiCisjaW5jbHVkZSAiQ2Fj
aGVkSFRNTENvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CkBAIC0zNCwyMSArMzQsMjMgQEAgY2xhc3MgSFRNTEltYWdlRWxlbWVudDsK
IC8vIFRoaXMgY2xhc3MgaXMganVzdCBhIGJpZyBoYWNrIHRvIGZpbmQgZm9ybSBlbGVtZW50cyBl
dmVuIGluIG1hbGZvcm1lZCBIVE1MIGVsZW1lbnRzLgogLy8gVGhlIGZhbW91cyA8dGFibGU+PHRy
Pjxmb3JtPjx0ZD4gcHJvYmxlbS4KIAotY2xhc3MgSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24g
ZmluYWwgOiBwdWJsaWMgSFRNTENvbGxlY3Rpb24geworY2xhc3MgSFRNTEZvcm1Db250cm9sc0Nv
bGxlY3Rpb24gZmluYWwgOiBwdWJsaWMgQ2FjaGVkSFRNTENvbGxlY3Rpb248SFRNTEZvcm1Db250
cm9sc0NvbGxlY3Rpb24sIENvbGxlY3Rpb25UeXBlVHJhaXRzPEZvcm1Db250cm9scz46OnRyYXZl
cnNhbFR5cGU+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPEhUTUxGb3JtQ29udHJvbHNDb2xs
ZWN0aW9uPiBjcmVhdGUoQ29udGFpbmVyTm9kZSYsIENvbGxlY3Rpb25UeXBlKTsKICAgICB2aXJ0
dWFsIH5IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbigpOwogCisgICAgLy8gRm9yIENhY2hlZEhU
TUxDb2xsZWN0aW9uLgorICAgIEVsZW1lbnQqIGN1c3RvbUVsZW1lbnRBZnRlcihFbGVtZW50Kikg
Y29uc3Q7CisKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rp
b24oQ29udGFpbmVyTm9kZSYpOwogCiAgICAgdmlydHVhbCBIVE1MRWxlbWVudCogbmFtZWRJdGVt
KGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2
b2lkIGludmFsaWRhdGVDYWNoZShEb2N1bWVudCYpIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1
YWwgdm9pZCBpbnZhbGlkYXRlQ2FjaGUoRG9jdW1lbnQmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFs
IHZvaWQgdXBkYXRlTmFtZWRFbGVtZW50Q2FjaGUoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIGNv
bnN0IFZlY3RvcjxGb3JtQXNzb2NpYXRlZEVsZW1lbnQqPiYgZm9ybUNvbnRyb2xFbGVtZW50cygp
IGNvbnN0OwogICAgIGNvbnN0IFZlY3RvcjxIVE1MSW1hZ2VFbGVtZW50Kj4mIGZvcm1JbWFnZUVs
ZW1lbnRzKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBFbGVtZW50KiBjdXN0b21FbGVtZW50QWZ0ZXIo
RWxlbWVudCopIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgbXV0YWJsZSBFbGVtZW50KiBtX2NhY2hl
ZEVsZW1lbnQ7CiAgICAgbXV0YWJsZSB1bnNpZ25lZCBtX2NhY2hlZEVsZW1lbnRPZmZzZXRJbkFy
cmF5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCmluZGV4IDVmZmEzYThh
NzE5OTc4N2Y3ZGY3ZGYxZjgwOWE2OGFlNjQzZDAxZWQuLjA1NDI3OWZmMWVmNWE4YzNiMTgwYTRi
ODBkMjBmYmM5ZWJmYWUxODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZv
cm1FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5j
cHAKQEAgLTM3LDExICszNywxMiBAQAogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJh
bWVMb2FkZXIuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudC5oIgotI2luY2x1ZGUgIkhU
TUxDb2xsZWN0aW9uLmgiCisjaW5jbHVkZSAiSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uaCIK
ICNpbmNsdWRlICJIVE1MSW1hZ2VFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTElucHV0RWxlbWVu
dC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhUTUxUYWJsZUVsZW1lbnQu
aCIKKyNpbmNsdWRlICJOb2RlUmFyZURhdGEuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVk
ZSAiUmVuZGVyVGV4dENvbnRyb2wuaCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCkBA
IC02MzgsNyArNjM5LDcgQEAgdm9pZCBIVE1MRm9ybUVsZW1lbnQ6OnJlbW92ZUltZ0VsZW1lbnQo
SFRNTEltYWdlRWxlbWVudCogZSkKIAogUmVmPEhUTUxDb2xsZWN0aW9uPiBIVE1MRm9ybUVsZW1l
bnQ6OmVsZW1lbnRzKCkKIHsKLSAgICByZXR1cm4gZW5zdXJlQ2FjaGVkSFRNTENvbGxlY3Rpb24o
Rm9ybUNvbnRyb2xzKTsKKyAgICByZXR1cm4gZW5zdXJlUmFyZURhdGEoKS5lbnN1cmVOb2RlTGlz
dHMoKS5hZGRDYWNoZWRDb2xsZWN0aW9uPEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uPigqdGhp
cywgRm9ybUNvbnRyb2xzKTsKIH0KIAogU3RyaW5nIEhUTUxGb3JtRWxlbWVudDo6bmFtZSgpIGNv
bnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNYXBFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1hcEVsZW1lbnQuY3BwCmluZGV4IGEzYzljMzM5MjNh
NzBmYzhlYjk2ZDNlMzBkYTBjNDNiZTdhYTAyMGIuLjNlZTYxYmFhMDAxZTIzNGE0YjMzZjdkMTU4
YmM2ODY5OTJjNDZjZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1hcEVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1hcEVsZW1lbnQuY3BwCkBA
IC0yNSwxMSArMjUsMTIgQEAKICNpbmNsdWRlICJBdHRyaWJ1dGUuaCIKICNpbmNsdWRlICJEb2N1
bWVudC5oIgogI2luY2x1ZGUgIkVsZW1lbnRJdGVyYXRvci5oIgorI2luY2x1ZGUgIkdlbmVyaWND
YWNoZWRIVE1MQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxBcmVhRWxlbWVudC5oIgotI2lu
Y2x1ZGUgIkhUTUxDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiSFRNTEltYWdlRWxlbWVudC5oIgog
I2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKICNpbmNsdWRlICJJbnRTaXplLmgiCisjaW5jbHVk
ZSAiTm9kZVJhcmVEYXRhLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTEyLDcgKzEx
Myw3IEBAIHZvaWQgSFRNTE1hcEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluCiAKIFJlZjxIVE1MQ29sbGVjdGlvbj4gSFRN
TE1hcEVsZW1lbnQ6OmFyZWFzKCkKIHsKLSAgICByZXR1cm4gZW5zdXJlQ2FjaGVkSFRNTENvbGxl
Y3Rpb24oTWFwQXJlYXMpOworICAgIHJldHVybiBlbnN1cmVSYXJlRGF0YSgpLmVuc3VyZU5vZGVM
aXN0cygpLmFkZENhY2hlZENvbGxlY3Rpb248R2VuZXJpY0NhY2hlZEhUTUxDb2xsZWN0aW9uPENv
bGxlY3Rpb25UeXBlVHJhaXRzPE1hcEFyZWFzPjo6dHJhdmVyc2FsVHlwZT4+KCp0aGlzLCBNYXBB
cmVhcyk7CiB9CiAKIE5vZGU6Okluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgSFRNTE1hcEVs
ZW1lbnQ6Omluc2VydGVkSW50byhDb250YWluZXJOb2RlJiBpbnNlcnRpb25Qb2ludCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE5hbWVDb2xsZWN0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE5hbWVDb2xsZWN0aW9uLmNwcAppbmRleCAzN2Y1OGMxNGUxY2Rj
NWQ2MWMyMzU1MmFmZTYxNjY4MGU5ZmY5ODUzLi4zMjk3NDliYmIwZDMwZjkwYzc0NTg3NGQwMTVh
Mzc0NTUyMzMzNWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxOYW1lQ29s
bGVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTmFtZUNvbGxlY3Rpb24u
Y3BwCkBAIC0zNiwxOSArMzYsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVz
cGFjZSBIVE1MTmFtZXM7CiAKLUhUTUxOYW1lQ29sbGVjdGlvbjo6SFRNTE5hbWVDb2xsZWN0aW9u
KERvY3VtZW50JiBkb2N1bWVudCwgQ29sbGVjdGlvblR5cGUgdHlwZSwgY29uc3QgQXRvbWljU3Ry
aW5nJiBuYW1lKQotICAgIDogSFRNTENvbGxlY3Rpb24oZG9jdW1lbnQsIHR5cGUpCi0gICAgLCBt
X25hbWUobmFtZSkKLXsKLX0KLQotSFRNTE5hbWVDb2xsZWN0aW9uOjp+SFRNTE5hbWVDb2xsZWN0
aW9uKCkKLXsKLSAgICBBU1NFUlQodHlwZSgpID09IFdpbmRvd05hbWVkSXRlbXMgfHwgdHlwZSgp
ID09IERvY3VtZW50TmFtZWRJdGVtcyk7Ci0KLSAgICBkb2N1bWVudCgpLm5vZGVMaXN0cygpLT5y
ZW1vdmVDYWNoZWRDb2xsZWN0aW9uKHRoaXMsIG1fbmFtZSk7Ci19Ci0KIGJvb2wgV2luZG93TmFt
ZUNvbGxlY3Rpb246OmVsZW1lbnRNYXRjaGVzSWZOYW1lQXR0cmlidXRlTWF0Y2goY29uc3QgRWxl
bWVudCYgZWxlbWVudCkKIHsKICAgICByZXR1cm4gaXM8SFRNTEltYWdlRWxlbWVudD4oZWxlbWVu
dCkgfHwgaXM8SFRNTEZvcm1FbGVtZW50PihlbGVtZW50KSB8fCBpczxIVE1MQXBwbGV0RWxlbWVu
dD4oZWxlbWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE5hbWVDb2xs
ZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxOYW1lQ29sbGVjdGlvbi5oCmluZGV4
IDMyMDc0M2Q1YWE5Y2ZiYjgyMTg0NTU4ZDgyMDE3ODk4YzA4Zjc3MzcuLjYwNDY2Yzg1YmJkOTMy
ZjEzMzlkMjg3ODI2OWQ4M2Y0NDAyNGZiOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE5hbWVDb2xsZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTmFt
ZUNvbGxlY3Rpb24uaApAQCAtMjMsMTggKzIzLDIwIEBACiAjaWZuZGVmIEhUTUxOYW1lQ29sbGVj
dGlvbl9oCiAjZGVmaW5lIEhUTUxOYW1lQ29sbGVjdGlvbl9oCiAKLSNpbmNsdWRlICJIVE1MQ29s
bGVjdGlvbi5oIgorI2luY2x1ZGUgIkNhY2hlZEhUTUxDb2xsZWN0aW9uLmgiCisjaW5jbHVkZSAi
Tm9kZVJhcmVEYXRhLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRG9jdW1lbnQ7CiAKLWNsYXNzIEhUTUxOYW1lQ29s
bGVjdGlvbiA6IHB1YmxpYyBIVE1MQ29sbGVjdGlvbiB7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgSFRN
TENvbGxlY3Rpb25DbGFzcywgQ29sbGVjdGlvblRyYXZlcnNhbFR5cGUgdHJhdmVyc2FsVHlwZT4K
K2NsYXNzIEhUTUxOYW1lQ29sbGVjdGlvbiA6IHB1YmxpYyBDYWNoZWRIVE1MQ29sbGVjdGlvbjxI
VE1MQ29sbGVjdGlvbkNsYXNzLCB0cmF2ZXJzYWxUeXBlPiB7CiBwdWJsaWM6CiAgICAgdmlydHVh
bCB+SFRNTE5hbWVDb2xsZWN0aW9uKCk7CiAKLSAgICBEb2N1bWVudCYgZG9jdW1lbnQoKSB7IHJl
dHVybiBkb3duY2FzdDxEb2N1bWVudD4ob3duZXJOb2RlKCkpOyB9CisgICAgRG9jdW1lbnQmIGRv
Y3VtZW50KCkgeyByZXR1cm4gZG93bmNhc3Q8RG9jdW1lbnQ+KHRoaXMtPm93bmVyTm9kZSgpKTsg
fQogCiBwcm90ZWN0ZWQ6CiAgICAgSFRNTE5hbWVDb2xsZWN0aW9uKERvY3VtZW50JiwgQ29sbGVj
dGlvblR5cGUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSk7CkBAIC00MiwxMyArNDQsMjkgQEAg
cHJvdGVjdGVkOgogICAgIEF0b21pY1N0cmluZyBtX25hbWU7CiB9OwogCi1jbGFzcyBXaW5kb3dO
YW1lQ29sbGVjdGlvbiBmaW5hbCA6IHB1YmxpYyBIVE1MTmFtZUNvbGxlY3Rpb24gewordGVtcGxh
dGUgPHR5cGVuYW1lIEhUTUxDb2xsZWN0aW9uQ2xhc3MsIENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBl
IHRyYXZlcnNhbFR5cGU+CitIVE1MTmFtZUNvbGxlY3Rpb248SFRNTENvbGxlY3Rpb25DbGFzcywg
dHJhdmVyc2FsVHlwZT46OkhUTUxOYW1lQ29sbGVjdGlvbihEb2N1bWVudCYgZG9jdW1lbnQsIENv
bGxlY3Rpb25UeXBlIHR5cGUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkKKyAgICA6IENhY2hl
ZEhUTUxDb2xsZWN0aW9uPEhUTUxDb2xsZWN0aW9uQ2xhc3MsIHRyYXZlcnNhbFR5cGU+KGRvY3Vt
ZW50LCB0eXBlKQorICAgICwgbV9uYW1lKG5hbWUpCit7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBIVE1MQ29sbGVjdGlvbkNsYXNzLCBDb2xsZWN0aW9uVHJhdmVyc2FsVHlwZSB0cmF2ZXJzYWxU
eXBlPgorSFRNTE5hbWVDb2xsZWN0aW9uPEhUTUxDb2xsZWN0aW9uQ2xhc3MsIHRyYXZlcnNhbFR5
cGU+Ojp+SFRNTE5hbWVDb2xsZWN0aW9uKCkKK3sKKyAgICBBU1NFUlQodGhpcy0+dHlwZSgpID09
IFdpbmRvd05hbWVkSXRlbXMgfHwgdGhpcy0+dHlwZSgpID09IERvY3VtZW50TmFtZWRJdGVtcyk7
CisKKyAgICBkb2N1bWVudCgpLm5vZGVMaXN0cygpLT5yZW1vdmVDYWNoZWRDb2xsZWN0aW9uKHRo
aXMsIG1fbmFtZSk7Cit9CisKK2NsYXNzIFdpbmRvd05hbWVDb2xsZWN0aW9uIGZpbmFsIDogcHVi
bGljIEhUTUxOYW1lQ29sbGVjdGlvbjxXaW5kb3dOYW1lQ29sbGVjdGlvbiwgQ29sbGVjdGlvblRy
YXZlcnNhbFR5cGU6OkRlc2NlbmRhbnRzPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxXaW5k
b3dOYW1lQ29sbGVjdGlvbj4gY3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgQ29sbGVjdGlvblR5
cGUgdHlwZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKQogICAgIHsKICAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgV2luZG93TmFtZUNvbGxlY3Rpb24oZG9jdW1lbnQsIHR5cGUsIG5hbWUp
KTsKICAgICB9CiAKKyAgICAvLyBGb3IgQ2FjaGVkSFRNTENvbGxlY3Rpb24uCiAgICAgYm9vbCBl
bGVtZW50TWF0Y2hlcyhjb25zdCBFbGVtZW50JiBlbGVtZW50KSBjb25zdCB7IHJldHVybiBlbGVt
ZW50TWF0Y2hlcyhlbGVtZW50LCBtX25hbWUuaW1wbCgpKTsgfQogCiAgICAgc3RhdGljIGJvb2wg
ZWxlbWVudE1hdGNoZXNJZklkQXR0cmlidXRlTWF0Y2goY29uc3QgRWxlbWVudCYpIHsgcmV0dXJu
IHRydWU7IH0KQEAgLTU3LDEzICs3NSwxMyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgV2lu
ZG93TmFtZUNvbGxlY3Rpb24oRG9jdW1lbnQmIGRvY3VtZW50LCBDb2xsZWN0aW9uVHlwZSB0eXBl
LCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpCi0gICAgICAgIDogSFRNTE5hbWVDb2xsZWN0aW9u
KGRvY3VtZW50LCB0eXBlLCBuYW1lKQorICAgICAgICA6IEhUTUxOYW1lQ29sbGVjdGlvbjxXaW5k
b3dOYW1lQ29sbGVjdGlvbiwgQ29sbGVjdGlvblRyYXZlcnNhbFR5cGU6OkRlc2NlbmRhbnRzPihk
b2N1bWVudCwgdHlwZSwgbmFtZSkKICAgICB7CiAgICAgICAgIEFTU0VSVCh0eXBlID09IFdpbmRv
d05hbWVkSXRlbXMpOwogICAgIH0KIH07CiAKLWNsYXNzIERvY3VtZW50TmFtZUNvbGxlY3Rpb24g
ZmluYWwgOiBwdWJsaWMgSFRNTE5hbWVDb2xsZWN0aW9uIHsKK2NsYXNzIERvY3VtZW50TmFtZUNv
bGxlY3Rpb24gZmluYWwgOiBwdWJsaWMgSFRNTE5hbWVDb2xsZWN0aW9uPERvY3VtZW50TmFtZUNv
bGxlY3Rpb24sIENvbGxlY3Rpb25UcmF2ZXJzYWxUeXBlOjpEZXNjZW5kYW50cz4gewogcHVibGlj
OgogICAgIHN0YXRpYyBSZWY8RG9jdW1lbnROYW1lQ29sbGVjdGlvbj4gY3JlYXRlKERvY3VtZW50
JiBkb2N1bWVudCwgQ29sbGVjdGlvblR5cGUgdHlwZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1l
KQogICAgIHsKQEAgLTcyLDEzICs5MCwxNSBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgYm9vbCBl
bGVtZW50TWF0Y2hlc0lmSWRBdHRyaWJ1dGVNYXRjaChjb25zdCBFbGVtZW50Jik7CiAgICAgc3Rh
dGljIGJvb2wgZWxlbWVudE1hdGNoZXNJZk5hbWVBdHRyaWJ1dGVNYXRjaChjb25zdCBFbGVtZW50
Jik7CisKKyAgICAvLyBGb3IgQ2FjaGVkSFRNTENvbGxlY3Rpb24uCiAgICAgYm9vbCBlbGVtZW50
TWF0Y2hlcyhjb25zdCBFbGVtZW50JiBlbGVtZW50KSBjb25zdCB7IHJldHVybiBlbGVtZW50TWF0
Y2hlcyhlbGVtZW50LCBtX25hbWUuaW1wbCgpKTsgfQogCiAgICAgc3RhdGljIGJvb2wgZWxlbWVu
dE1hdGNoZXMoY29uc3QgRWxlbWVudCYsIGNvbnN0IEF0b21pY1N0cmluZ0ltcGwqKTsKIAogcHJp
dmF0ZToKICAgICBEb2N1bWVudE5hbWVDb2xsZWN0aW9uKERvY3VtZW50JiBkb2N1bWVudCwgQ29s
bGVjdGlvblR5cGUgdHlwZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKQotICAgICAgICA6IEhU
TUxOYW1lQ29sbGVjdGlvbihkb2N1bWVudCwgdHlwZSwgbmFtZSkKKyAgICAgICAgOiBIVE1MTmFt
ZUNvbGxlY3Rpb248RG9jdW1lbnROYW1lQ29sbGVjdGlvbiwgQ29sbGVjdGlvblRyYXZlcnNhbFR5
cGU6OkRlc2NlbmRhbnRzPihkb2N1bWVudCwgdHlwZSwgbmFtZSkKICAgICB7CiAgICAgICAgIEFT
U0VSVCh0eXBlID09IERvY3VtZW50TmFtZWRJdGVtcyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uc0NvbGxlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MT3B0aW9uc0NvbGxlY3Rpb24uY3BwCmluZGV4IDE1MDhiNDE1YzQyZGFlYjEw
ODAxY2Q4OWMyOTE0NmQ3NzA5MzEyZTkuLmQ5YWRhMDZiMzVhMDhmOTQ2MDBmMDExODU0MWFjYzM2
YWMyMWM0YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbnNDb2xs
ZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25zQ29sbGVjdGlv
bi5jcHAKQEAgLTI3LDcgKzI3LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogSFRNTE9wdGlv
bnNDb2xsZWN0aW9uOjpIVE1MT3B0aW9uc0NvbGxlY3Rpb24oSFRNTFNlbGVjdEVsZW1lbnQmIHNl
bGVjdCkKLSAgICA6IEhUTUxDb2xsZWN0aW9uKHNlbGVjdCwgU2VsZWN0T3B0aW9ucykKKyAgICA6
IENhY2hlZEhUTUxDb2xsZWN0aW9uPEhUTUxPcHRpb25zQ29sbGVjdGlvbiwgQ29sbGVjdGlvblR5
cGVUcmFpdHM8U2VsZWN0T3B0aW9ucz46OnRyYXZlcnNhbFR5cGU+KHNlbGVjdCwgU2VsZWN0T3B0
aW9ucykKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9u
c0NvbGxlY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbnNDb2xsZWN0aW9u
LmgKaW5kZXggNjM2Njg2NWU1NWMxYzNhNjc3OTQxNTM5ZTMzNzExMWQzYWYzOWUxNi4uYzVmZDE3
YmY3MjY3ZjI1Yjc0NWQ0MDQ4MzBmODc4NWI0YmQxYmJmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MT3B0aW9uc0NvbGxlY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxPcHRpb25zQ29sbGVjdGlvbi5oCkBAIC0yNCw3ICsyNCw3IEBACiAjaWZuZGVmIEhU
TUxPcHRpb25zQ29sbGVjdGlvbl9oCiAjZGVmaW5lIEhUTUxPcHRpb25zQ29sbGVjdGlvbl9oCiAK
LSNpbmNsdWRlICJIVE1MQ29sbGVjdGlvbi5oIgorI2luY2x1ZGUgIkNhY2hlZEhUTUxDb2xsZWN0
aW9uLmgiCiAjaW5jbHVkZSAiSFRNTFNlbGVjdEVsZW1lbnQuaCIKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpAQCAtMzMsNyArMzMsNyBAQCBjbGFzcyBIVE1MT3B0aW9uRWxlbWVudDsKIAogdHlwZWRl
ZiBpbnQgRXhjZXB0aW9uQ29kZTsKIAotY2xhc3MgSFRNTE9wdGlvbnNDb2xsZWN0aW9uIGZpbmFs
IDogcHVibGljIEhUTUxDb2xsZWN0aW9uIHsKK2NsYXNzIEhUTUxPcHRpb25zQ29sbGVjdGlvbiBm
aW5hbCA6IHB1YmxpYyBDYWNoZWRIVE1MQ29sbGVjdGlvbjxIVE1MT3B0aW9uc0NvbGxlY3Rpb24s
IENvbGxlY3Rpb25UeXBlVHJhaXRzPFNlbGVjdE9wdGlvbnM+Ojp0cmF2ZXJzYWxUeXBlPiB7CiBw
dWJsaWM6CiAgICAgc3RhdGljIFJlZjxIVE1MT3B0aW9uc0NvbGxlY3Rpb24+IGNyZWF0ZShIVE1M
U2VsZWN0RWxlbWVudCYsIENvbGxlY3Rpb25UeXBlKTsKIApAQCAtNTAsMTAgKzUwLDE4IEBAIHB1
YmxpYzoKIAogICAgIHZvaWQgc2V0TGVuZ3RoKHVuc2lnbmVkLCBFeGNlcHRpb25Db2RlJik7CiAK
KyAgICAvLyBGb3IgQ2FjaGVkSFRNTENvbGxlY3Rpb24uCisgICAgYm9vbCBlbGVtZW50TWF0Y2hl
cyhFbGVtZW50JikgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgSFRNTE9wdGlvbnND
b2xsZWN0aW9uKEhUTUxTZWxlY3RFbGVtZW50Jik7CiB9OwogCitpbmxpbmUgYm9vbCBIVE1MT3B0
aW9uc0NvbGxlY3Rpb246OmVsZW1lbnRNYXRjaGVzKEVsZW1lbnQmIGVsZW1lbnQpIGNvbnN0Cit7
CisgICAgcmV0dXJuIGVsZW1lbnQuaGFzVGFnTmFtZShIVE1MTmFtZXM6Om9wdGlvblRhZyk7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19IVE1M
Q09MTEVDVElPTihIVE1MT3B0aW9uc0NvbGxlY3Rpb24sIFNlbGVjdE9wdGlvbnMpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwCmluZGV4IGQ1MDVmM2YxMGEwYzQ4NTI0
NDU4Yjk0NTRkNGVlYmQ0Yzk1N2Q3NzAuLmM4YjQyNjMyMzM5NzA0NmQ4YjRlMzkxMmJlZjdmNDM5
OWU1MDNjODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwCkBA
IC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSAiRm9ybUNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJG
b3JtRGF0YUxpc3QuaCIKICNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIkdlbmVyaWNDYWNo
ZWRIVE1MQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxGb3JtRWxlbWVudC5oIgogI2luY2x1
ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhUTUxPcHRHcm91cEVsZW1lbnQuaCIKQEAgLTQ2
LDYgKzQ3LDcgQEAKICNpbmNsdWRlICJLZXlib2FyZEV2ZW50LmgiCiAjaW5jbHVkZSAiTG9jYWxp
emVkU3RyaW5ncy5oIgogI2luY2x1ZGUgIk1vdXNlRXZlbnQuaCIKKyNpbmNsdWRlICJOb2RlUmFy
ZURhdGEuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1Nb3VzZUV2ZW50
LmgiCiAjaW5jbHVkZSAiUmVuZGVyTGlzdEJveC5oIgpAQCAtMzc0LDEyICszNzYsMTIgQEAgYm9v
bCBIVE1MU2VsZWN0RWxlbWVudDo6Y2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihjb25zdCBOb2Rl
JiBjaGlsZCkgY29uc3QKIAogUmVmPEhUTUxDb2xsZWN0aW9uPiBIVE1MU2VsZWN0RWxlbWVudDo6
c2VsZWN0ZWRPcHRpb25zKCkKIHsKLSAgICByZXR1cm4gZW5zdXJlQ2FjaGVkSFRNTENvbGxlY3Rp
b24oU2VsZWN0ZWRPcHRpb25zKTsKKyAgICByZXR1cm4gZW5zdXJlUmFyZURhdGEoKS5lbnN1cmVO
b2RlTGlzdHMoKS5hZGRDYWNoZWRDb2xsZWN0aW9uPEdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlv
bjxDb2xsZWN0aW9uVHlwZVRyYWl0czxTZWxlY3RlZE9wdGlvbnM+Ojp0cmF2ZXJzYWxUeXBlPj4o
KnRoaXMsIFNlbGVjdGVkT3B0aW9ucyk7CiB9CiAKIFJlZjxIVE1MT3B0aW9uc0NvbGxlY3Rpb24+
IEhUTUxTZWxlY3RFbGVtZW50OjpvcHRpb25zKCkKIHsKLSAgICByZXR1cm4gZG93bmNhc3Q8SFRN
TE9wdGlvbnNDb2xsZWN0aW9uPihlbnN1cmVDYWNoZWRIVE1MQ29sbGVjdGlvbihTZWxlY3RPcHRp
b25zKS5nZXQoKSk7CisgICAgcmV0dXJuIGVuc3VyZVJhcmVEYXRhKCkuZW5zdXJlTm9kZUxpc3Rz
KCkuYWRkQ2FjaGVkQ29sbGVjdGlvbjxIVE1MT3B0aW9uc0NvbGxlY3Rpb24+KCp0aGlzLCBTZWxl
Y3RPcHRpb25zKTsKIH0KIAogdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6dXBkYXRlTGlzdEl0ZW1T
ZWxlY3RlZFN0YXRlcygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJs
ZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmNwcApp
bmRleCA3NDU3MzYxYjZlMTI1ZWFlZjk2NWFmNTQ1MzNiZjMzZjY4NDZlYWE3Li4wMjgwODZhNjE4
ZGY2YjM0ZWUzNDRhZjFkMDM3YTQwNzRlNjY0ODVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFRhYmxlRWxlbWVudC5jcHAKQEAgLTMxLDEyICszMSwxNCBAQAogI2luY2x1ZGUgIkNTU1ZhbHVl
UG9vbC5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJFeGNlcHRpb25D
b2RlUGxhY2Vob2xkZXIuaCIKKyNpbmNsdWRlICJHZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb24u
aCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJIVE1MUGFyc2VySWRpb21zLmgi
CiAjaW5jbHVkZSAiSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MVGFi
bGVSb3dFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFRhYmxlUm93c0NvbGxlY3Rpb24uaCIKICNp
bmNsdWRlICJIVE1MVGFibGVTZWN0aW9uRWxlbWVudC5oIgorI2luY2x1ZGUgIk5vZGVSYXJlRGF0
YS5oIgogI2luY2x1ZGUgIlJlbmRlclRhYmxlLmgiCiAjaW5jbHVkZSAiU3R5bGVQcm9wZXJ0aWVz
LmgiCiAjaW5jbHVkZSA8d3RmL1JlZi5oPgpAQCAtNTUxLDEyICs1NTMsMTIgQEAgYm9vbCBIVE1M
VGFibGVFbGVtZW50Ojppc1VSTEF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUmIGF0dHJpYnV0ZSkg
Y29uc3QKIAogUmVmPEhUTUxDb2xsZWN0aW9uPiBIVE1MVGFibGVFbGVtZW50Ojpyb3dzKCkKIHsK
LSAgICByZXR1cm4gZW5zdXJlQ2FjaGVkSFRNTENvbGxlY3Rpb24oVGFibGVSb3dzKTsKKyAgICBy
ZXR1cm4gZW5zdXJlUmFyZURhdGEoKS5lbnN1cmVOb2RlTGlzdHMoKS5hZGRDYWNoZWRDb2xsZWN0
aW9uPEhUTUxUYWJsZVJvd3NDb2xsZWN0aW9uPigqdGhpcywgVGFibGVSb3dzKTsKIH0KIAogUmVm
PEhUTUxDb2xsZWN0aW9uPiBIVE1MVGFibGVFbGVtZW50Ojp0Qm9kaWVzKCkKIHsKLSAgICByZXR1
cm4gZW5zdXJlQ2FjaGVkSFRNTENvbGxlY3Rpb24oVGFibGVUQm9kaWVzKTsKKyAgICByZXR1cm4g
ZW5zdXJlUmFyZURhdGEoKS5lbnN1cmVOb2RlTGlzdHMoKS5hZGRDYWNoZWRDb2xsZWN0aW9uPEdl
bmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbjxDb2xsZWN0aW9uVHlwZVRyYWl0czxUYWJsZVRCb2Rp
ZXM+Ojp0cmF2ZXJzYWxUeXBlPj4oKnRoaXMsIFRhYmxlVEJvZGllcyk7CiB9CiAKIGNvbnN0IEF0
b21pY1N0cmluZyYgSFRNTFRhYmxlRWxlbWVudDo6cnVsZXMoKSBjb25zdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVSb3dFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFRhYmxlUm93RWxlbWVudC5jcHAKaW5kZXggZDQzNTFlYWZjYTVlNmY3NTUy
NmI5N2EzMDRiYTY3YWZhNjgwN2VhOC4uYzg3MjU5ZjVlY2I5NmQwYWE2MDQ4ZDRkMTRhZThiNjBm
OTNiNjhiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVSb3dFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVJvd0VsZW1lbnQuY3Bw
CkBAIC0yNiwxMiArMjYsMTMgQEAKICNpbmNsdWRlICJIVE1MVGFibGVSb3dFbGVtZW50LmgiCiAK
ICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCi0jaW5jbHVkZSAiSFRNTENvbGxlY3Rpb24uaCIK
KyNpbmNsdWRlICJHZW5lcmljQ2FjaGVkSFRNTENvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJIVE1M
TmFtZXMuaCIKICNpbmNsdWRlICJIVE1MVGFibGVDZWxsRWxlbWVudC5oIgogI2luY2x1ZGUgIkhU
TUxUYWJsZUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MVGFibGVTZWN0aW9uRWxlbWVudC5oIgog
I2luY2x1ZGUgIk5vZGVMaXN0LmgiCisjaW5jbHVkZSAiTm9kZVJhcmVEYXRhLmgiCiAjaW5jbHVk
ZSAiVGV4dC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xNTYsNyArMTU3LDcgQEAgdm9p
ZCBIVE1MVGFibGVSb3dFbGVtZW50OjpkZWxldGVDZWxsKGludCBpbmRleCwgRXhjZXB0aW9uQ29k
ZSYgZWMpCiAKIFJlZjxIVE1MQ29sbGVjdGlvbj4gSFRNTFRhYmxlUm93RWxlbWVudDo6Y2VsbHMo
KQogewotICAgIHJldHVybiBlbnN1cmVDYWNoZWRIVE1MQ29sbGVjdGlvbihUUkNlbGxzKTsKKyAg
ICByZXR1cm4gZW5zdXJlUmFyZURhdGEoKS5lbnN1cmVOb2RlTGlzdHMoKS5hZGRDYWNoZWRDb2xs
ZWN0aW9uPEdlbmVyaWNDYWNoZWRIVE1MQ29sbGVjdGlvbjxDb2xsZWN0aW9uVHlwZVRyYWl0czxU
UkNlbGxzPjo6dHJhdmVyc2FsVHlwZT4+KCp0aGlzLCBUUkNlbGxzKTsKIH0KIAogdm9pZCBIVE1M
VGFibGVSb3dFbGVtZW50OjpzZXRDZWxscyhIVE1MQ29sbGVjdGlvbiosIEV4Y2VwdGlvbkNvZGUm
IGVjKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVSb3dzQ29sbGVj
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVJvd3NDb2xsZWN0aW9uLmNw
cAppbmRleCBiZmE1ZjZkNzhkMGZiY2E3M2I4M2ViZTNhMmUwMWMyYTQxMzYwYTI1Li4yZDkxZDlk
NDhmNzg3ODY3Zjc3OGU4MGM2OTI1MGVlMzZkNmUwZGEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxUYWJsZVJvd3NDb2xsZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxUYWJsZVJvd3NDb2xsZWN0aW9uLmNwcApAQCAtMTQ5LDcgKzE0OSw3IEBAIEhU
TUxUYWJsZVJvd0VsZW1lbnQqIEhUTUxUYWJsZVJvd3NDb2xsZWN0aW9uOjpsYXN0Um93KEhUTUxU
YWJsZUVsZW1lbnQmIHRhYmxlKQogfQogCiBIVE1MVGFibGVSb3dzQ29sbGVjdGlvbjo6SFRNTFRh
YmxlUm93c0NvbGxlY3Rpb24oSFRNTFRhYmxlRWxlbWVudCYgdGFibGUpCi0gICAgOiBIVE1MQ29s
bGVjdGlvbih0YWJsZSwgVGFibGVSb3dzLCBDdXN0b21Gb3J3YXJkT25seVRyYXZlcnNhbCkKKyAg
ICA6IENhY2hlZEhUTUxDb2xsZWN0aW9uPEhUTUxUYWJsZVJvd3NDb2xsZWN0aW9uLCBDb2xsZWN0
aW9uVHlwZVRyYWl0czxUYWJsZVJvd3M+Ojp0cmF2ZXJzYWxUeXBlPih0YWJsZSwgVGFibGVSb3dz
KQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVJvd3ND
b2xsZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVJvd3NDb2xsZWN0aW9u
LmgKaW5kZXggOWViNWZhNmE3YTI5ODE0ZjIzZTE0ZTM3YWE5OTUzNmRkZWRhZjk0NC4uYmYwN2Ez
MjlmNTgxNTU5NDE2ZjQyZGJkNjdjMTIwODZjNWUxMjE2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MVGFibGVSb3dzQ29sbGVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFRhYmxlUm93c0NvbGxlY3Rpb24uaApAQCAtMjksMTQgKzI5LDE0IEBACiAjaWZu
ZGVmIEhUTUxUYWJsZVJvd3NDb2xsZWN0aW9uX2gKICNkZWZpbmUgSFRNTFRhYmxlUm93c0NvbGxl
Y3Rpb25faAogCi0jaW5jbHVkZSAiSFRNTENvbGxlY3Rpb24uaCIKKyNpbmNsdWRlICJDYWNoZWRI
VE1MQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxUYWJsZUVsZW1lbnQuaCIKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBIVE1MVGFibGVSb3dFbGVtZW50OwogCi1jbGFzcyBIVE1M
VGFibGVSb3dzQ29sbGVjdGlvbiBmaW5hbCA6IHB1YmxpYyBIVE1MQ29sbGVjdGlvbiB7CitjbGFz
cyBIVE1MVGFibGVSb3dzQ29sbGVjdGlvbiBmaW5hbCA6IHB1YmxpYyBDYWNoZWRIVE1MQ29sbGVj
dGlvbjxIVE1MVGFibGVSb3dzQ29sbGVjdGlvbiwgQ29sbGVjdGlvblR5cGVUcmFpdHM8VGFibGVS
b3dzPjo6dHJhdmVyc2FsVHlwZT4gewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8SFRNTFRhYmxl
Um93c0NvbGxlY3Rpb24+IGNyZWF0ZShIVE1MVGFibGVFbGVtZW50JiwgQ29sbGVjdGlvblR5cGUp
OwogCkBAIC00NiwxMCArNDYsMTEgQEAgcHVibGljOgogICAgIHN0YXRpYyBIVE1MVGFibGVSb3dF
bGVtZW50KiByb3dBZnRlcihIVE1MVGFibGVFbGVtZW50JiwgSFRNTFRhYmxlUm93RWxlbWVudCop
OwogICAgIHN0YXRpYyBIVE1MVGFibGVSb3dFbGVtZW50KiBsYXN0Um93KEhUTUxUYWJsZUVsZW1l
bnQmKTsKIAorICAgIC8vIEZvciBDYWNoZWRIVE1MQ29sbGVjdGlvbi4KKyAgICBFbGVtZW50KiBj
dXN0b21FbGVtZW50QWZ0ZXIoRWxlbWVudCopIGNvbnN0OworCiBwcml2YXRlOgogICAgIGV4cGxp
Y2l0IEhUTUxUYWJsZVJvd3NDb2xsZWN0aW9uKEhUTUxUYWJsZUVsZW1lbnQmKTsKLQotICAgIHZp
cnR1YWwgRWxlbWVudCogY3VzdG9tRWxlbWVudEFmdGVyKEVsZW1lbnQqKSBjb25zdCBvdmVycmlk
ZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVGFibGVTZWN0aW9uRWxlbWVudC5jcHAKaW5kZXggZjc1NzE3ZTU5ODI5MmI3NGVkNDIy
NzU4YzQ4MDZkYzVjMDA3YmJkZS4uOWU0NTMxNmY4ZjNmNGZjNmRhOGUzZGNkYjFiM2U0ZTJkZDky
N2Q4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVTZWN0aW9uRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVTZWN0aW9uRWxlbWVu
dC5jcHAKQEAgLTI2LDExICsyNiwxMyBAQAogI2luY2x1ZGUgIkhUTUxUYWJsZVNlY3Rpb25FbGVt
ZW50LmgiCiAKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5jbHVkZSAiR2VuZXJpY0Nh
Y2hlZEhUTUxDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiSFRNTENvbGxlY3Rpb24uaCIKICNpbmNs
dWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJIVE1MVGFibGVSb3dFbGVtZW50LmgiCiAjaW5j
bHVkZSAiSFRNTFRhYmxlRWxlbWVudC5oIgogI2luY2x1ZGUgIk5vZGVMaXN0LmgiCisjaW5jbHVk
ZSAiTm9kZVJhcmVEYXRhLmgiCiAjaW5jbHVkZSAiVGV4dC5oIgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CkBAIC0xNDcsNyArMTQ5LDcgQEAgdm9pZCBIVE1MVGFibGVTZWN0aW9uRWxlbWVudDo6c2V0
VkFsaWduKGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCiAKIFJlZjxIVE1MQ29sbGVjdGlvbj4g
SFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQ6OnJvd3MoKQogewotICAgIHJldHVybiBlbnN1cmVDYWNo
ZWRIVE1MQ29sbGVjdGlvbihUU2VjdGlvblJvd3MpOworICAgIHJldHVybiBlbnN1cmVSYXJlRGF0
YSgpLmVuc3VyZU5vZGVMaXN0cygpLmFkZENhY2hlZENvbGxlY3Rpb248R2VuZXJpY0NhY2hlZEhU
TUxDb2xsZWN0aW9uPENvbGxlY3Rpb25UeXBlVHJhaXRzPFRTZWN0aW9uUm93cz46OnRyYXZlcnNh
bFR5cGU+PigqdGhpcywgVFNlY3Rpb25Sb3dzKTsKIH0KIAogfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>