<?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>152601</bug_id>
          
          <creation_ts>2015-12-30 14:36:26 -0800</creation_ts>
          <short_desc>Use of WTF::move prevents clang&apos;s move diagnostics from warning about several classes of mistakes</short_desc>
          <delta_ts>2016-01-04 09:25:02 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Template Framework</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=152557</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=152681</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andy Estes">aestes</reporter>
          <assigned_to name="Andy Estes">aestes</assigned_to>
          <cc>andersca</cc>
    
    <cc>beidson</cc>
    
    <cc>benjamin</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>clopez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>dbates</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>glenn</cc>
    
    <cc>kling</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>ossy</cc>
    
    <cc>rniwa</cc>
    
    <cc>ryanhaddad</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1151628</commentid>
    <comment_count>0</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2015-12-30 14:36:26 -0800</bug_when>
    <thetext>Clang has recently added warnings to catch certain classes of mistakes with the use of std::move(): -Wpessimizing-move (warns if moving prevents copy elision), -Wredundant-move (warns if a move is redundant), and -Wself-move (warns if moving to self). Enabling these warnings manually (by renaming WTF::move to std::move) have caught numerous mistakes in our codebase (see http://trac.webkit.org/changeset/194428).

It would be nice to be able to take advantage of these warnings, but doing so requires that we use std::move, not WTF::move. But since WTF::move does provide useful checks for which clang does not yet have warnings, we should find a way to write a best-of-both-worlds move function. I think we could do this like so:

    namespace WTF {
    enum CheckMoveParameterTag { CheckMoveParameter };
    }

    namespace std {
    template&lt;WTF::CheckMoveParameterTag, typename T&gt;
    ALWAYS_INLINE CONSTEXPR typename remove_reference&lt;T&gt;::type&amp;&amp; move(T&amp;&amp; value)
    {
        // static_asserts from WTF::move
        return std::move(std::forward&lt;T&gt;(value));
    }
    }

    #define WTF_MOVE(value) std::move&lt;WTF::CheckMoveParameter&gt;(value)

This move function satisfies clang&apos;s criteria for a move function (in namespace std, called &quot;move&quot;, takes a single argument), but allows us to add our own compile-time asserts to check for moving from const and moving from rvalue reference. A macro called WTF_MOVE() is added for convenience.

I plan to address this in two stages:

1. Upload a patch that defines std::move&lt;WTF::CheckMoveParameter&gt;() and WTF_MOVE().
2. Upload a patch that removes WTF::move and renames all uses of WTF::move to WTF_MOVE.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151637</commentid>
    <comment_count>1</comment_count>
      <attachid>268014</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2015-12-30 15:21:12 -0800</bug_when>
    <thetext>Created attachment 268014
I. Add std::move&lt;WTF::CheckMoveParameter&gt; and WTF_MOVE</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151642</commentid>
    <comment_count>2</comment_count>
      <attachid>268016</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2015-12-30 15:41:14 -0800</bug_when>
    <thetext>Created attachment 268016
I. Add std::move&lt;WTF::CheckMoveParameter&gt; and WTF_MOVE</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151665</commentid>
    <comment_count>3</comment_count>
      <attachid>268016</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-12-30 21:24:33 -0800</bug_when>
    <thetext>Comment on attachment 268016
I. Add std::move&lt;WTF::CheckMoveParameter&gt; and WTF_MOVE

Clearing flags on attachment: 268016

Committed r194451: &lt;http://trac.webkit.org/changeset/194451&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151666</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-12-30 21:24:39 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151680</commentid>
    <comment_count>5</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2015-12-30 22:35:48 -0800</bug_when>
    <thetext>Reopening to add part 2.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151682</commentid>
    <comment_count>6</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2015-12-30 22:54:06 -0800</bug_when>
    <thetext>(In reply to comment #0)
&gt; [...]
&gt; 1. Upload a patch that defines std::move&lt;WTF::CheckMoveParameter&gt;() and
&gt; WTF_MOVE().

I know that this part was already reviewed and landed. As per &lt;https://webkit.org/code-style-guidelines/#names-define-non-const&gt; we use similar naming and style conventions for macro functions as we do for non-macro functions. According to that style rule we should use camel case and WTFMove() seems to be acceptable. Though, according to &lt;https://webkit.org/code-style-guidelines/#names-basic&gt; wtfMove() would be acceptable :/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151683</commentid>
    <comment_count>7</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2015-12-30 22:59:33 -0800</bug_when>
    <thetext>Additionally we should update the style checker to advise using WTF_MOVE() instead of WTF::move(). See check_wtf_move() in &lt;http://trac.webkit.org/browser/trunk/Tools/Scripts/webkitpy/style/checkers/cpp.py?rev=192274#L2258&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151684</commentid>
    <comment_count>8</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2015-12-30 23:00:16 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #0)
&gt; &gt; [...]
&gt; &gt; 1. Upload a patch that defines std::move&lt;WTF::CheckMoveParameter&gt;() and
&gt; &gt; WTF_MOVE().
&gt; 
&gt; I know that this part was already reviewed and landed. As per
&gt; &lt;https://webkit.org/code-style-guidelines/#names-define-non-const&gt; we use
&gt; similar naming and style conventions for macro functions as we do for
&gt; non-macro functions. According to that style rule we should use camel case
&gt; and WTFMove() seems to be acceptable. Though, according to
&gt; &lt;https://webkit.org/code-style-guidelines/#names-basic&gt; wtfMove() would be
&gt; acceptable :/

It&apos;s not too late to change the name, and I&apos;m not tied to this particular name. Personally, I like being able to distinguish between macros and functions, but you&apos;re right that our style guidelines disagree with me.

I don&apos;t object to WTFMove(), and I think I like that better than wtfMove().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151685</commentid>
    <comment_count>9</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2015-12-30 23:00:59 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; Additionally we should update the style checker to advise using WTF_MOVE()
&gt; instead of WTF::move(). See check_wtf_move() in
&gt; &lt;http://trac.webkit.org/browser/trunk/Tools/Scripts/webkitpy/style/checkers/
&gt; cpp.py?rev=192274#L2258&gt;.

I was aware of this, and plan to address it in the next patch that renames everything.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151761</commentid>
    <comment_count>10</comment_count>
      <attachid>268050</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2015-12-31 12:40:27 -0800</bug_when>
    <thetext>Created attachment 268050
II. Fix warnings uncovered by migrating to WTF_MOVE</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151762</commentid>
    <comment_count>11</comment_count>
      <attachid>268051</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2015-12-31 12:46:08 -0800</bug_when>
    <thetext>Created attachment 268051
III. Rename WTF_MOVE to WTFMove</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151765</commentid>
    <comment_count>12</comment_count>
      <attachid>268052</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2015-12-31 13:22:52 -0800</bug_when>
    <thetext>Created attachment 268052
IV. Update the style checker to advise using WTFMove() instead of WTF::move()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151781</commentid>
    <comment_count>13</comment_count>
      <attachid>268051</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-12-31 14:47:35 -0800</bug_when>
    <thetext>Comment on attachment 268051
III. Rename WTF_MOVE to WTFMove

Clearing flags on attachment: 268051

Committed r194469: &lt;http://trac.webkit.org/changeset/194469&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151782</commentid>
    <comment_count>14</comment_count>
      <attachid>268050</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-12-31 14:49:29 -0800</bug_when>
    <thetext>Comment on attachment 268050
II. Fix warnings uncovered by migrating to WTF_MOVE

Clearing flags on attachment: 268050

Committed r194470: &lt;http://trac.webkit.org/changeset/194470&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151784</commentid>
    <comment_count>15</comment_count>
      <attachid>268052</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-12-31 14:52:00 -0800</bug_when>
    <thetext>Comment on attachment 268052
IV. Update the style checker to advise using WTFMove() instead of WTF::move()

Clearing flags on attachment: 268052

Committed r194471: &lt;http://trac.webkit.org/changeset/194471&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151785</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-12-31 14:52:07 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151788</commentid>
    <comment_count>17</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2015-12-31 14:54:23 -0800</bug_when>
    <thetext>Reopening again to remove WTF::move and do the WTF::move-to-WTFMove rename.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151807</commentid>
    <comment_count>18</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2015-12-31 16:16:41 -0800</bug_when>
    <thetext>(In reply to comment #17)
&gt; Reopening again to remove WTF::move and do the WTF::move-to-WTFMove rename.

Forgive me if this will be addressed by the change you mention here, but it looks like the Yosemite builds are failing with:

/Volumes/Data/slave/yosemite-32bit-release/build/Tools/TestWebKitAPI/Tests/WTF/NakedPtr.cpp:184:34: error: unknown warning group &apos;-Wself-move&apos;, ignored [-Werror,-Wunknown-pragmas]

&lt;https://build.webkit.org/builders/Apple%20Yosemite%20Release%20%2832-bit%20Build%29/builds/8475&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151811</commentid>
    <comment_count>19</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2015-12-31 16:21:28 -0800</bug_when>
    <thetext>(In reply to comment #18)
&gt; (In reply to comment #17)
&gt; &gt; Reopening again to remove WTF::move and do the WTF::move-to-WTFMove rename.
&gt; 
&gt; Forgive me if this will be addressed by the change you mention here, but it
&gt; looks like the Yosemite builds are failing with:
&gt; 
&gt; /Volumes/Data/slave/yosemite-32bit-release/build/Tools/TestWebKitAPI/Tests/
&gt; WTF/NakedPtr.cpp:184:34: error: unknown warning group &apos;-Wself-move&apos;, ignored
&gt; [-Werror,-Wunknown-pragmas]
&gt; 
&gt; &lt;https://build.webkit.org/builders/Apple%20Yosemite%20Release%20%2832-
&gt; bit%20Build%29/builds/8475&gt;

Build fix to address the above failure on Yosemite:

&lt;https://trac.webkit.org/r194473&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151812</commentid>
    <comment_count>20</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2015-12-31 16:22:47 -0800</bug_when>
    <thetext>Oops, Andy had one more step per Comment #17.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151813</commentid>
    <comment_count>21</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2015-12-31 16:24:24 -0800</bug_when>
    <thetext>(In reply to comment #19)
&gt; (In reply to comment #18)
&gt; &gt; (In reply to comment #17)
&gt; &gt; &gt; Reopening again to remove WTF::move and do the WTF::move-to-WTFMove rename.
&gt; &gt; 
&gt; &gt; Forgive me if this will be addressed by the change you mention here, but it
&gt; &gt; looks like the Yosemite builds are failing with:
&gt; &gt; 
&gt; &gt; /Volumes/Data/slave/yosemite-32bit-release/build/Tools/TestWebKitAPI/Tests/
&gt; &gt; WTF/NakedPtr.cpp:184:34: error: unknown warning group &apos;-Wself-move&apos;, ignored
&gt; &gt; [-Werror,-Wunknown-pragmas]
&gt; &gt; 
&gt; &gt; &lt;https://build.webkit.org/builders/Apple%20Yosemite%20Release%20%2832-
&gt; &gt; bit%20Build%29/builds/8475&gt;
&gt; 
&gt; Build fix to address the above failure on Yosemite:
&gt; 
&gt; &lt;https://trac.webkit.org/r194473&gt;

Thanks Dave!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151827</commentid>
    <comment_count>22</comment_count>
      <attachid>268064</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2015-12-31 19:54:35 -0800</bug_when>
    <thetext>Created attachment 268064
V. Replace WTF::move with WTFMove</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151828</commentid>
    <comment_count>23</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-12-31 19:58:40 -0800</bug_when>
    <thetext>Attachment 268064 did not pass style-queue:


ERROR: Source/WTF/wtf/text/AtomicString.h:83:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebCore/css/RuleSet.h:150:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebKit2/Scripts/webkit/LegacyMessageReceiver-expected.cpp:77:  _result is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebKit2/Scripts/webkit/LegacyMessageReceiver-expected.cpp:96:  _result is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/JavaScriptCore/bytecode/GetByIdVariant.cpp:43:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
ERROR: Source/WebCore/accessibility/AccessibilityObject.h:251:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/jit/PolymorphicCallStubRoutine.cpp:75:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
ERROR: Source/WebKit/mac/WebCoreSupport/WebFrameLoaderClient.mm:876:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit/mac/WebCoreSupport/WebFrameLoaderClient.mm:908:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit/mac/WebCoreSupport/WebFrameLoaderClient.mm:920:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/bindings/js/JSDOMPromise.h:73:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebCore/bindings/js/JSDOMPromise.h:74:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebCore/platform/cocoa/ContentFilterUnblockHandlerCocoa.mm:61:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WebCore/rendering/style/DataRef.h:33:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebCore/css/Pair.h:67:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebCore/css/Pair.h:68:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebCore/ChangeLog:8:  You should remove the &apos;No new tests&apos; and either add and list tests, or explain why no new tests were possible.  [changelog/nonewtests] [5]
ERROR: Source/JavaScriptCore/bytecode/StructureStubClearingWatchpoint.h:53:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/WebKit2/Scripts/webkit/MessageReceiver-expected.cpp:77:  _result is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebKit2/Scripts/webkit/MessageReceiver-expected.cpp:96:  _result is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Total errors found: 20 in 1206 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151829</commentid>
    <comment_count>24</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2015-12-31 20:01:55 -0800</bug_when>
    <thetext>(In reply to comment #23)
&gt; Attachment 268064 [details] did not pass style-queue:
&gt; 
&gt; 
&gt; ERROR: Source/WTF/wtf/text/AtomicString.h:83:  Should be indented on a
&gt; separate line, with the colon or comma first on that line. 
&gt; [whitespace/indent] [4]
&gt; ERROR: Source/WebCore/css/RuleSet.h:150:  Should be indented on a separate
&gt; line, with the colon or comma first on that line.  [whitespace/indent] [4]
&gt; ERROR: Source/WebKit2/Scripts/webkit/LegacyMessageReceiver-expected.cpp:77: 
&gt; _result is incorrectly named. Don&apos;t use underscores in your identifier
&gt; names.  [readability/naming/underscores] [4]
&gt; ERROR: Source/WebKit2/Scripts/webkit/LegacyMessageReceiver-expected.cpp:96: 
&gt; _result is incorrectly named. Don&apos;t use underscores in your identifier
&gt; names.  [readability/naming/underscores] [4]
&gt; ERROR: Source/JavaScriptCore/bytecode/GetByIdVariant.cpp:43:  Wrong number
&gt; of spaces before statement. (expected: 8)  [whitespace/indent] [4]
&gt; ERROR: Source/WebCore/accessibility/AccessibilityObject.h:251:  Wrong number
&gt; of spaces before statement. (expected: 8)  [whitespace/indent] [4]
&gt; ERROR: Source/JavaScriptCore/jit/PolymorphicCallStubRoutine.cpp:75:  Wrong
&gt; number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
&gt; ERROR: Source/WebKit/mac/WebCoreSupport/WebFrameLoaderClient.mm:876:  Weird
&gt; number of spaces at line-start.  Are you using a 4-space indent? 
&gt; [whitespace/indent] [3]
&gt; ERROR: Source/WebKit/mac/WebCoreSupport/WebFrameLoaderClient.mm:908:  Weird
&gt; number of spaces at line-start.  Are you using a 4-space indent? 
&gt; [whitespace/indent] [3]
&gt; ERROR: Source/WebKit/mac/WebCoreSupport/WebFrameLoaderClient.mm:920:  Weird
&gt; number of spaces at line-start.  Are you using a 4-space indent? 
&gt; [whitespace/indent] [3]
&gt; ERROR: Source/WebCore/bindings/js/JSDOMPromise.h:73:  Should be indented on
&gt; a separate line, with the colon or comma first on that line. 
&gt; [whitespace/indent] [4]
&gt; ERROR: Source/WebCore/bindings/js/JSDOMPromise.h:74:  Should be indented on
&gt; a separate line, with the colon or comma first on that line. 
&gt; [whitespace/indent] [4]
&gt; ERROR: Source/WebCore/platform/cocoa/ContentFilterUnblockHandlerCocoa.mm:61:
&gt; Code inside a namespace should not be indented.  [whitespace/indent] [4]
&gt; ERROR: Source/WebCore/rendering/style/DataRef.h:33:  Should be indented on a
&gt; separate line, with the colon or comma first on that line. 
&gt; [whitespace/indent] [4]
&gt; ERROR: Source/WebCore/css/Pair.h:67:  Should be indented on a separate line,
&gt; with the colon or comma first on that line.  [whitespace/indent] [4]
&gt; ERROR: Source/WebCore/css/Pair.h:68:  Should be indented on a separate line,
&gt; with the colon or comma first on that line.  [whitespace/indent] [4]
&gt; ERROR: Source/WebCore/ChangeLog:8:  You should remove the &apos;No new tests&apos; and
&gt; either add and list tests, or explain why no new tests were possible. 
&gt; [changelog/nonewtests] [5]
&gt; ERROR: Source/JavaScriptCore/bytecode/StructureStubClearingWatchpoint.h:53: 
&gt; Wrong number of spaces before statement. (expected: 12)  [whitespace/indent]
&gt; [4]
&gt; ERROR: Source/WebKit2/Scripts/webkit/MessageReceiver-expected.cpp:77: 
&gt; _result is incorrectly named. Don&apos;t use underscores in your identifier
&gt; names.  [readability/naming/underscores] [4]
&gt; ERROR: Source/WebKit2/Scripts/webkit/MessageReceiver-expected.cpp:96: 
&gt; _result is incorrectly named. Don&apos;t use underscores in your identifier
&gt; names.  [readability/naming/underscores] [4]
&gt; Total errors found: 20 in 1206 files
&gt; 
&gt; 
&gt; If any of these errors are false positives, please file a bug against
&gt; check-webkit-style.

Fixing most of these errors would require changing lines of code that didn&apos;t have WTF::move in them, obscuring blame information and making this patch harder to review. I plan to leave these as-is for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151902</commentid>
    <comment_count>25</comment_count>
      <attachid>268064</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-01-01 21:36:29 -0800</bug_when>
    <thetext>Comment on attachment 268064
V. Replace WTF::move with WTFMove

I&apos;ll trust that this is really just a global replace - I did not look at every line. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151935</commentid>
    <comment_count>26</comment_count>
      <attachid>268064</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2016-01-02 00:09:13 -0800</bug_when>
    <thetext>Comment on attachment 268064
V. Replace WTF::move with WTFMove

Committed r194496: &lt;http://trac.webkit.org/changeset/194496&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151942</commentid>
    <comment_count>27</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2016-01-02 01:07:13 -0800</bug_when>
    <thetext>(In reply to comment #26)
&gt; Comment on attachment 268064 [details]
&gt; V. Replace WTF::move with WTFMove
&gt; 
&gt; Committed r194496: &lt;http://trac.webkit.org/changeset/194496&gt;

It broke the Apple Windows build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151943</commentid>
    <comment_count>28</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2016-01-02 01:07:59 -0800</bug_when>
    <thetext>(In reply to comment #27)
&gt; (In reply to comment #26)
&gt; &gt; Comment on attachment 268064 [details]
&gt; &gt; V. Replace WTF::move with WTFMove
&gt; &gt; 
&gt; &gt; Committed r194496: &lt;http://trac.webkit.org/changeset/194496&gt;
&gt; 
&gt; It broke the Apple Windows build.

I think it just needs a clean build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151950</commentid>
    <comment_count>29</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2016-01-02 02:18:55 -0800</bug_when>
    <thetext>(In reply to comment #28)
&gt; (In reply to comment #27)
&gt; &gt; (In reply to comment #26)
&gt; &gt; &gt; Comment on attachment 268064 [details]
&gt; &gt; &gt; V. Replace WTF::move with WTFMove
&gt; &gt; &gt; 
&gt; &gt; &gt; Committed r194496: &lt;http://trac.webkit.org/changeset/194496&gt;
&gt; &gt; 
&gt; &gt; It broke the Apple Windows build.
&gt; 
&gt; I think it just needs a clean build.

Windows is building now as of r194497.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1152117</commentid>
    <comment_count>30</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-01-03 09:38:31 -0800</bug_when>
    <thetext>WinCairo build is broken:
https://build.webkit.org/builders/WinCairo%2064-Bit%20Release?numbuilds=100</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1152130</commentid>
    <comment_count>31</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2016-01-03 11:01:36 -0800</bug_when>
    <thetext>(In reply to comment #30)
&gt; WinCairo build is broken:
&gt; https://build.webkit.org/builders/WinCairo%2064-Bit%20Release?numbuilds=100

It&apos;s having the same problem as the Apple Windows build, where a stale copy of StdLibExtras.h is being used. I wonder if this is a bug in a CMake build file shared between these two platforms.

A clean build should work around this, but we should really fix the underlying bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1152253</commentid>
    <comment_count>32</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2016-01-03 22:58:50 -0800</bug_when>
    <thetext>(In reply to comment #31)
&gt; (In reply to comment #30)
&gt; &gt; WinCairo build is broken:
&gt; &gt; https://build.webkit.org/builders/WinCairo%2064-Bit%20Release?numbuilds=100
&gt; 
&gt; It&apos;s having the same problem as the Apple Windows build, where a stale copy
&gt; of StdLibExtras.h is being used. I wonder if this is a bug in a CMake build
&gt; file shared between these two platforms.
&gt; 
&gt; A clean build should work around this, but we should really fix the
&gt; underlying bug.

I filed &lt;https://bugs.webkit.org/show_bug.cgi?id=152681&gt; about this. I don&apos;t know how to access the WinCairo buildbot, so I&apos;m not sure how to force a clean build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1152327</commentid>
    <comment_count>33</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2016-01-04 08:38:11 -0800</bug_when>
    <thetext>You know, you could just have done:

namespace WTF {
using std::move;
}

which seems to trigger the warnings just fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1152330</commentid>
    <comment_count>34</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2016-01-04 08:57:01 -0800</bug_when>
    <thetext>(In reply to comment #33)
&gt; You know, you could just have done:
&gt; 
&gt; namespace WTF {
&gt; using std::move;
&gt; }
&gt; 
&gt; which seems to trigger the warnings just fine.

I don&apos;t think I understand; surely then we lose the static_asserts that this patch attempted to save? What&apos;s the point of having WTF::move at all if it&apos;s the same as std::move?</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>268014</attachid>
            <date>2015-12-30 15:21:12 -0800</date>
            <delta_ts>2015-12-31 12:46:58 -0800</delta_ts>
            <desc>I. Add std::move&lt;WTF::CheckMoveParameter&gt; and WTF_MOVE</desc>
            <filename>bug-152601-20151230152037.patch</filename>
            <type>text/plain</type>
            <size>2992</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk0NDQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGE4Y2ZlNTU2NjQyZjQxOWE2NWJiN2Nm
ZDUzMDNiZjkwYmEzYjU2MjMuLmFhYjZlMWQzNTEzZWVhYzQ4NDhjOThlYjY3NmFmYzVmODQ3ZmE3
ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTUtMTItMzAgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNA
YXBwbGUuY29tPgorCisgICAgICAgIFVzZSBvZiBXVEY6Om1vdmUgcHJldmVudHMgY2xhbmcncyBt
b3ZlIGRpYWdub3N0aWNzIGZyb20gd2FybmluZyBhYm91dCBzZXZlcmFsIGNsYXNzZXMgb2YgbWlz
dGFrZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1
MjYwMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENs
YW5nIGhhcyByZWNlbnRseSBhZGRlZCB3YXJuaW5ncyB0byBjYXRjaCBjZXJ0YWluIGNsYXNzZXMg
b2YgbWlzdGFrZXMgd2l0aCB0aGUgdXNlIG9mIHN0ZDo6bW92ZSgpOgorICAgICAgICAtV3Blc3Np
bWl6aW5nLW1vdmUgKHdhcm5zIGlmIG1vdmluZyBwcmV2ZW50cyBjb3B5IGVsaXNpb24pLCAtV3Jl
ZHVuZGFudC1tb3ZlICh3YXJucyBpZiBhIG1vdmUgaXMgcmVkdW5kYW50KSwKKyAgICAgICAgYW5k
IC1Xc2VsZi1tb3ZlICh3YXJucyBpZiBtb3ZpbmcgdG8gc2VsZikuIEVuYWJsaW5nIHRoZXNlIHdh
cm5pbmdzIG1hbnVhbGx5IChieSByZW5hbWluZyBXVEY6Om1vdmUgdG8gc3RkOjptb3ZlKQorICAg
ICAgICBoYXZlIGNhdWdodCBudW1lcm91cyBtaXN0YWtlcyBpbiBvdXIgY29kZWJhc2UgKHNlZSBo
dHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8xOTQ0MjgpLgorCisgICAgICAgIEl0IHdv
dWxkIGJlIG5pY2UgdG8gYmUgYWJsZSB0byB0YWtlIGFkdmFudGFnZSBvZiB0aGVzZSB3YXJuaW5n
cywgYnV0IGRvaW5nIHNvIHJlcXVpcmVzIHRoYXQgd2UgdXNlIHN0ZDo6bW92ZSwKKyAgICAgICAg
bm90IFdURjo6bW92ZS4gQnV0IHNpbmNlIFdURjo6bW92ZSBkb2VzIHByb3ZpZGUgdXNlZnVsIGNo
ZWNrcyBmb3Igd2hpY2ggY2xhbmcgZG9lcyBub3QgeWV0IGhhdmUgd2FybmluZ3MsCisgICAgICAg
IHdlIHNob3VsZCB3cml0ZSBhIGJlc3Qtb2YtYm90aC13b3JsZHMgbW92ZSBmdW5jdGlvbi4KKwor
ICAgICAgICBUaGlzIHBhdGNoIGFkZHMgYSBmdW5jdGlvbiB0aGF0IHNhdGlzZmllcyBjbGFuZydz
IGNyaXRlcmlhIGZvciBhIG1vdmUgZnVuY3Rpb24gKGluIG5hbWVzcGFjZSBzdGQsIG5hbWVkICJt
b3ZlIiwKKyAgICAgICAgYW5kIHRha2VzIGEgc2luZ2xlIGFyZ3VtZW50KSBidXQgYWxzbyByZXRh
aW5zIFdURjo6bW92ZSdzIGNvbXBpbGUtdGltZSBjaGVja3MuIEl0IGFsc28gYWRkcyBhIGNvbnZl
bmllbmNlIG1hY3JvCisgICAgICAgIGNhbGxlZCBXVEZfTU9WRSBmb3IgdXNlIGJ5IGNhbGxlcnMu
CisKKyAgICAgICAgKiB3dGYvU3RkTGliRXh0cmFzLmg6CisgICAgICAgIChzdGQ6Om1vdmUpOgor
CiAyMDE1LTEyLTI1ICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBT
dG9wIG1vdmluZyBsb2NhbCBvYmplY3RzIGluIHJldHVybiBzdGF0ZW1lbnRzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi9TdGRMaWJFeHRyYXMuaCBiL1NvdXJjZS9XVEYvd3RmL1N0ZExpYkV4
dHJhcy5oCmluZGV4IDkyYmE0MzBhMDk3MjJhNTA0ZTk1ZDQyOWM1MzE1ZTVjOTM1Y2U1YjUuLjM2
NDY4YWE5MzQwOTg4ZTFlM2YxNzJmZmE1ZTAzZjgyNDM1MTkzMTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL1N0ZExpYkV4dHJhcy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1N0ZExpYkV4dHJh
cy5oCkBAIC0xMTEsNiArMTExLDggQEAgaW5saW5lIGJvb2wgaXNQb2ludGVyVHlwZUFsaWdubWVu
dE9rYXkoVHlwZSopCiAKIG5hbWVzcGFjZSBXVEYgewogCitlbnVtIENoZWNrTW92ZVBhcmFtZXRl
clRhZyB7IENoZWNrTW92ZVBhcmFtZXRlciB9OworCiAvLyBGSVhNRTogVXNpbmcgdGhpcyBmdW5j
dGlvbiBwcmV2ZW50cyBDbGFuZydzIG1vdmUgZGlhZ25vc3RpY3MgKC1XcGVzc2ltaXppbmctbW92
ZSwgLVdyZWR1bmRhbnQtbW92ZSwgLVdzZWxmLW1vdmUpIGZyb20KIC8vIGZpbmRpbmcgbWlzdGFr
ZXMsIHNpbmNlIHRoZXNlIGRpYWdub3N0aWNzIG9ubHkgZXZhbHVhdGUgY2FsbHMgdG8gc3RkOjpt
b3ZlKCkuCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpAQCAtMzgxLDggKzM4MywyMiBAQCBuYW1lc3Bh
Y2UgY2hyb25vX2xpdGVyYWxzIHsKIH0KIH0KICNlbmRpZgorCit0ZW1wbGF0ZTxXVEY6OkNoZWNr
TW92ZVBhcmFtZXRlclRhZywgdHlwZW5hbWUgVD4KK0FMV0FZU19JTkxJTkUgQ09OU1RFWFBSIHR5
cGVuYW1lIHJlbW92ZV9yZWZlcmVuY2U8VD46OnR5cGUmJiBtb3ZlKFQmJiB2YWx1ZSkKK3sKKyAg
ICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfbHZhbHVlX3JlZmVyZW5jZTxUPjo6dmFsdWUsICJUIGlz
IG5vdCBhbiBsdmFsdWUgcmVmZXJlbmNlOyBtb3ZlKCkgaXMgdW5uZWNlc3NhcnkuIik7CisKKyAg
ICB1c2luZyBOb25SZWZRdWFsaWZpZWRUeXBlID0gdHlwZW5hbWUgc3RkOjpyZW1vdmVfcmVmZXJl
bmNlPFQ+Ojp0eXBlOworICAgIHN0YXRpY19hc3NlcnQoIXN0ZDo6aXNfY29uc3Q8Tm9uUmVmUXVh
bGlmaWVkVHlwZT46OnZhbHVlLCAiVCBpcyBjb25zdCBxdWFsaWZpZWQuIik7CisKKyAgICByZXR1
cm4gc3RkOjptb3ZlKHN0ZDo6Zm9yd2FyZDxUPih2YWx1ZSkpOwogfQogCit9IC8vIG5hbWVzcGFj
ZSBzdGQKKworI2RlZmluZSBXVEZfTU9WRSh2YWx1ZSkgc3RkOjptb3ZlPFdURjo6Q2hlY2tNb3Zl
UGFyYW1ldGVyPih2YWx1ZSkKKwogdXNpbmcgV1RGOjpLQjsKIHVzaW5nIFdURjo6TUI7CiB1c2lu
ZyBXVEY6OmlzQ29tcGlsYXRpb25UaHJlYWQ7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>268016</attachid>
            <date>2015-12-30 15:41:14 -0800</date>
            <delta_ts>2015-12-31 19:55:57 -0800</delta_ts>
            <desc>I. Add std::move&lt;WTF::CheckMoveParameter&gt; and WTF_MOVE</desc>
            <filename>bug-152601-20151230154039.patch</filename>
            <type>text/plain</type>
            <size>2967</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk0NDQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGE4Y2ZlNTU2NjQyZjQxOWE2NWJiN2Nm
ZDUzMDNiZjkwYmEzYjU2MjMuLmFhYjZlMWQzNTEzZWVhYzQ4NDhjOThlYjY3NmFmYzVmODQ3ZmE3
ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTUtMTItMzAgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNA
YXBwbGUuY29tPgorCisgICAgICAgIFVzZSBvZiBXVEY6Om1vdmUgcHJldmVudHMgY2xhbmcncyBt
b3ZlIGRpYWdub3N0aWNzIGZyb20gd2FybmluZyBhYm91dCBzZXZlcmFsIGNsYXNzZXMgb2YgbWlz
dGFrZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1
MjYwMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENs
YW5nIGhhcyByZWNlbnRseSBhZGRlZCB3YXJuaW5ncyB0byBjYXRjaCBjZXJ0YWluIGNsYXNzZXMg
b2YgbWlzdGFrZXMgd2l0aCB0aGUgdXNlIG9mIHN0ZDo6bW92ZSgpOgorICAgICAgICAtV3Blc3Np
bWl6aW5nLW1vdmUgKHdhcm5zIGlmIG1vdmluZyBwcmV2ZW50cyBjb3B5IGVsaXNpb24pLCAtV3Jl
ZHVuZGFudC1tb3ZlICh3YXJucyBpZiBhIG1vdmUgaXMgcmVkdW5kYW50KSwKKyAgICAgICAgYW5k
IC1Xc2VsZi1tb3ZlICh3YXJucyBpZiBtb3ZpbmcgdG8gc2VsZikuIEVuYWJsaW5nIHRoZXNlIHdh
cm5pbmdzIG1hbnVhbGx5IChieSByZW5hbWluZyBXVEY6Om1vdmUgdG8gc3RkOjptb3ZlKQorICAg
ICAgICBoYXZlIGNhdWdodCBudW1lcm91cyBtaXN0YWtlcyBpbiBvdXIgY29kZWJhc2UgKHNlZSBo
dHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8xOTQ0MjgpLgorCisgICAgICAgIEl0IHdv
dWxkIGJlIG5pY2UgdG8gYmUgYWJsZSB0byB0YWtlIGFkdmFudGFnZSBvZiB0aGVzZSB3YXJuaW5n
cywgYnV0IGRvaW5nIHNvIHJlcXVpcmVzIHRoYXQgd2UgdXNlIHN0ZDo6bW92ZSwKKyAgICAgICAg
bm90IFdURjo6bW92ZS4gQnV0IHNpbmNlIFdURjo6bW92ZSBkb2VzIHByb3ZpZGUgdXNlZnVsIGNo
ZWNrcyBmb3Igd2hpY2ggY2xhbmcgZG9lcyBub3QgeWV0IGhhdmUgd2FybmluZ3MsCisgICAgICAg
IHdlIHNob3VsZCB3cml0ZSBhIGJlc3Qtb2YtYm90aC13b3JsZHMgbW92ZSBmdW5jdGlvbi4KKwor
ICAgICAgICBUaGlzIHBhdGNoIGFkZHMgYSBmdW5jdGlvbiB0aGF0IHNhdGlzZmllcyBjbGFuZydz
IGNyaXRlcmlhIGZvciBhIG1vdmUgZnVuY3Rpb24gKGluIG5hbWVzcGFjZSBzdGQsIG5hbWVkICJt
b3ZlIiwKKyAgICAgICAgYW5kIHRha2VzIGEgc2luZ2xlIGFyZ3VtZW50KSBidXQgYWxzbyByZXRh
aW5zIFdURjo6bW92ZSdzIGNvbXBpbGUtdGltZSBjaGVja3MuIEl0IGFsc28gYWRkcyBhIGNvbnZl
bmllbmNlIG1hY3JvCisgICAgICAgIGNhbGxlZCBXVEZfTU9WRSBmb3IgdXNlIGJ5IGNhbGxlcnMu
CisKKyAgICAgICAgKiB3dGYvU3RkTGliRXh0cmFzLmg6CisgICAgICAgIChzdGQ6Om1vdmUpOgor
CiAyMDE1LTEyLTI1ICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBT
dG9wIG1vdmluZyBsb2NhbCBvYmplY3RzIGluIHJldHVybiBzdGF0ZW1lbnRzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi9TdGRMaWJFeHRyYXMuaCBiL1NvdXJjZS9XVEYvd3RmL1N0ZExpYkV4
dHJhcy5oCmluZGV4IDkyYmE0MzBhMDk3MjJhNTA0ZTk1ZDQyOWM1MzE1ZTVjOTM1Y2U1YjUuLmUw
NjUxM2NkYzNjM2JhYmVmMGUyNWQ0MjRjYzY4MWM4NGE5Y2RjMDAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL1N0ZExpYkV4dHJhcy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1N0ZExpYkV4dHJh
cy5oCkBAIC0xMTEsNiArMTExLDggQEAgaW5saW5lIGJvb2wgaXNQb2ludGVyVHlwZUFsaWdubWVu
dE9rYXkoVHlwZSopCiAKIG5hbWVzcGFjZSBXVEYgewogCitlbnVtIENoZWNrTW92ZVBhcmFtZXRl
clRhZyB7IENoZWNrTW92ZVBhcmFtZXRlciB9OworCiAvLyBGSVhNRTogVXNpbmcgdGhpcyBmdW5j
dGlvbiBwcmV2ZW50cyBDbGFuZydzIG1vdmUgZGlhZ25vc3RpY3MgKC1XcGVzc2ltaXppbmctbW92
ZSwgLVdyZWR1bmRhbnQtbW92ZSwgLVdzZWxmLW1vdmUpIGZyb20KIC8vIGZpbmRpbmcgbWlzdGFr
ZXMsIHNpbmNlIHRoZXNlIGRpYWdub3N0aWNzIG9ubHkgZXZhbHVhdGUgY2FsbHMgdG8gc3RkOjpt
b3ZlKCkuCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpAQCAtMzgxLDggKzM4MywyMiBAQCBuYW1lc3Bh
Y2UgY2hyb25vX2xpdGVyYWxzIHsKIH0KIH0KICNlbmRpZgorCit0ZW1wbGF0ZTxXVEY6OkNoZWNr
TW92ZVBhcmFtZXRlclRhZywgdHlwZW5hbWUgVD4KK0FMV0FZU19JTkxJTkUgQ09OU1RFWFBSIHR5
cGVuYW1lIHJlbW92ZV9yZWZlcmVuY2U8VD46OnR5cGUmJiBtb3ZlKFQmJiB2YWx1ZSkKK3sKKyAg
ICBzdGF0aWNfYXNzZXJ0KGlzX2x2YWx1ZV9yZWZlcmVuY2U8VD46OnZhbHVlLCAiVCBpcyBub3Qg
YW4gbHZhbHVlIHJlZmVyZW5jZTsgbW92ZSgpIGlzIHVubmVjZXNzYXJ5LiIpOworCisgICAgdXNp
bmcgTm9uUmVmUXVhbGlmaWVkVHlwZSA9IHR5cGVuYW1lIHJlbW92ZV9yZWZlcmVuY2U8VD46OnR5
cGU7CisgICAgc3RhdGljX2Fzc2VydCghaXNfY29uc3Q8Tm9uUmVmUXVhbGlmaWVkVHlwZT46OnZh
bHVlLCAiVCBpcyBjb25zdCBxdWFsaWZpZWQuIik7CisKKyAgICByZXR1cm4gbW92ZShmb3J3YXJk
PFQ+KHZhbHVlKSk7CiB9CiAKK30gLy8gbmFtZXNwYWNlIHN0ZAorCisjZGVmaW5lIFdURl9NT1ZF
KHZhbHVlKSBzdGQ6Om1vdmU8V1RGOjpDaGVja01vdmVQYXJhbWV0ZXI+KHZhbHVlKQorCiB1c2lu
ZyBXVEY6OktCOwogdXNpbmcgV1RGOjpNQjsKIHVzaW5nIFdURjo6aXNDb21waWxhdGlvblRocmVh
ZDsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>268050</attachid>
            <date>2015-12-31 12:40:27 -0800</date>
            <delta_ts>2015-12-31 19:55:42 -0800</delta_ts>
            <desc>II. Fix warnings uncovered by migrating to WTF_MOVE</desc>
            <filename>bug-152601-20151231123953.patch</filename>
            <type>text/plain</type>
            <size>8997</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk0NDUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
YjM4ZDlmODcwZTU2YjQwZTM2ZTI5ZWZhZjI3NTU0Y2ZlZDQ0MDRhLi5jNjE4ZmQ5YmI5NjczMDRm
ZjdjZDY4Y2VkNzEyNWM1NzdhZjRjYWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNSBAQAorMjAxNS0xMi0zMSAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CisK
KyAgICAgICAgRml4IHdhcm5pbmdzIHVuY292ZXJlZCBieSBtaWdyYXRpbmcgdG8gV1RGX01PVkUK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MjYwMQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogY3JlYXRl
X3JlZ2V4X3RhYmxlczogTW92aW5nIGEgcmV0dXJuIHZhbHVlIHByZXZlbnRlZCBjb3B5IGVsaXNp
b24uCisgICAgICAgICogZnRsL0ZUTFVud2luZEluZm8uY3BwOgorICAgICAgICAoSlNDOjpGVEw6
OnBhcnNlVW53aW5kSW5mbyk6IERpdHRvLgorICAgICAgICAqIHJlcGxheS9FbmNvZGVkVmFsdWUu
aDogRGl0dG8uCisKIDIwMTUtMTItMzAgIEFsZWtzYW5kciBTa2FjaGtvdiAgPGdza2FjaGtvdkBn
bWFpbC5jb20+CiAKICAgICAgICAgW0VTNl0gQXJyb3cgZnVuY3Rpb24gc3ludGF4LiBBcnJvdyBm
dW5jdGlvbiBzcGVjaWZpYyBmZWF0dXJlcy4gTGV4aWNhbCBiaW5kICJzdXBlciIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpp
bmRleCAwYjU2MDc2N2FhZjlmNjA2NTA1OWJiZTI4ZDE4NWMzMTNjOGU0ZmI0Li5mNzVmZTEwNTdh
NzJkNDM2YjI0MDJjZWVjNDVhYjkyMDNmMmM3MDAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMg
QEAKKzIwMTUtMTItMzEgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgorCisgICAgICAg
IEZpeCB3YXJuaW5ncyB1bmNvdmVyZWQgYnkgbWlncmF0aW5nIHRvIFdURl9NT1ZFCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTI2MDEKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvTWVkaWFLZXlzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5czo6Y3Jl
YXRlU2Vzc2lvbik6IE1vdmluZyBhIHJldHVybiB2YWx1ZSBwcmV2ZW50ZWQgY29weSBlbGlzaW9u
LgorCiAyMDE1LTEyLTMwICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAg
ICAgICBNb2Rlcm4gSURCOiBPbmx5IGZpcmUgYmxvY2tlZCBldmVudHMgYWZ0ZXIgYWxsIG9wZW4g
Y29ubmVjdGlvbnMgaGF2ZSBoYW5kbGVkIHRoZWlyIHZlcnNpb25jaGFuZ2UgZXZlbnRzLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCmluZGV4IDE3M2E1NTExODIzYzNhOThiYTUyM2M3YmQwN2RjNDNiNDZlMjY5ZGEuLmFmZDhi
ZTNhMzA1MWNlOTdjNmU0YzU4NjRmZTM3NDY1ZTZkOWM0MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNiBAQAorMjAxNS0xMi0zMSAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CisKKyAg
ICAgICAgRml4IHdhcm5pbmdzIHVuY292ZXJlZCBieSBtaWdyYXRpbmcgdG8gV1RGX01PVkUKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MjYwMQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9BUElVSUNsaWVudC5oOgorICAgICAgICAoQVBJOjpVSUNsaWVudDo6YWN0aW9uc0ZvckVs
ZW1lbnQpOiBNb3ZpbmcgYSByZXR1cm4gdmFsdWUgcGFzc2VkIHRvIHRoZSBmdW5jdGlvbiBieSB2
YWx1ZSBpcyByZWR1bmRhbnQsIHNpbmNlIGl0CisgICAgICAgIHdpbGwgYmUgaW1wbGljaXRseSBt
b3ZlZCBpbiB0aGlzIGNhc2UuCisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUu
bW06CisgICAgICAgIChXZWJLaXQ6OlVJRGVsZWdhdGU6OlVJQ2xpZW50OjphY3Rpb25zRm9yRWxl
bWVudCk6IERpdHRvLgorCiAyMDE1LTEyLTMwICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJA
YXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBleHBsaWNpdCBjb252ZXJzaW9ucyBiZXR3ZWVuIHNj
cm9sbE9mZnNldCBhbmQgc2Nyb2xsUG9zdGlvbiwgYW5kIHVzZSB0aGVtIGluIGEgZmV3IHBsYWNl
cwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2NyZWF0ZV9yZWdleF90YWJsZXMg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvY3JlYXRlX3JlZ2V4X3RhYmxlcwppbmRleCBjNmZkNmVi
N2YzZTM0ODVhM2M4MjNjZGIwMWNiMjIxMDgzMjQ3ZTczLi5jMzc1OGZlMzliMmNjNjMzYTYxZjE0
MzYwNjkwOWVkMDkzY2RhNjlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvY3Jl
YXRlX3JlZ2V4X3RhYmxlcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvY3JlYXRlX3JlZ2V4
X3RhYmxlcwpAQCAtMTA2LDcgKzEwNiw3IEBAIGZvciBuYW1lLCBjbGFzc2VzIGluIHR5cGVzLml0
ZW1zKCk6CiAgICAgICAgICAgICBmdW5jdGlvbiArPSAoIiAgICBjaGFyYWN0ZXJDbGFzcy0+bV9y
YW5nZXNVbmljb2RlLmFwcGVuZChDaGFyYWN0ZXJSYW5nZSgweCUwNHgsIDB4JTA0eCkpO1xuIiAl
IChtaW4sIG1heCkpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBmdW5jdGlvbiArPSAoIiAg
ICBjaGFyYWN0ZXJDbGFzcy0+bV9yYW5nZXMuYXBwZW5kKENoYXJhY3RlclJhbmdlKDB4JTAyeCwg
MHglMDJ4KSk7XG4iICUgKG1pbiwgbWF4KSkKLSAgICBmdW5jdGlvbiArPSAoIiAgICByZXR1cm4g
V1RGOjptb3ZlKGNoYXJhY3RlckNsYXNzKTtcbiIpCisgICAgZnVuY3Rpb24gKz0gKCIgICAgcmV0
dXJuIGNoYXJhY3RlckNsYXNzO1xuIikKICAgICBmdW5jdGlvbiArPSAoIn1cblxuIikKICAgICBm
dW5jdGlvbnMgKz0gZnVuY3Rpb24KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExVbndpbmRJbmZvLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMVW53
aW5kSW5mby5jcHAKaW5kZXggOTkxZjBkZjRhZTA4OTkwZTk5ZTFiNDkwYjc0YzI0MTFjNDIxMzBj
NS4uNDIzYTk5ZDFjNDZlZGEyOWE2ZmY3ZWUzMjYyODQ4ODg0N2ViMmFiNSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExVbndpbmRJbmZvLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTFVud2luZEluZm8uY3BwCkBAIC0xMDE2LDcgKzEwMTYsNyBA
QCBzdGQ6OnVuaXF1ZV9wdHI8UmVnaXN0ZXJBdE9mZnNldExpc3Q+IHBhcnNlVW53aW5kSW5mbyh2
b2lkKiBzZWN0aW9uLCBzaXplX3Qgc2l6ZQogCiAjZW5kaWYKICAgICByZWdpc3Rlck9mZnNldHMt
PnNvcnQoKTsKLSAgICByZXR1cm4gV1RGOjptb3ZlKHJlZ2lzdGVyT2Zmc2V0cyk7CisgICAgcmV0
dXJuIHJlZ2lzdGVyT2Zmc2V0czsKIH0KIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkZUTApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3JlcGxheS9FbmNvZGVkVmFsdWUuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9yZXBsYXkvRW5jb2RlZFZhbHVlLmgKaW5kZXggODY1OWI0ZjUw
YjE1YmYzNTU0NDE0NGJmYWYyNWQwODRiMDQ0MGNhNi4uMGQxNWJhYmM3NjJlZWZjMjU0OWI5ZWQw
NGM2NDc3NTQ0MTQ4MjVlZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3JlcGxh
eS9FbmNvZGVkVmFsdWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L0VuY29k
ZWRWYWx1ZS5oCkBAIC0xMTQsNyArMTE0LDcgQEAgc3RydWN0IEVuY29kaW5nVHJhaXRzPFZlY3Rv
cjxULCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyPj4gewogICAgICAgICBmb3IgKGNv
bnN0IHR5cGVuYW1lIEVuY29kaW5nVHJhaXRzPFQ+OjpEZWNvZGVkVHlwZSYgdmFsdWUgOiB2ZWN0
b3JPZlZhbHVlcykKICAgICAgICAgICAgIGVuY29kZWRWZWN0b3IuYXBwZW5kPFQ+KHZhbHVlKTsK
IAotICAgICAgICByZXR1cm4gV1RGOjptb3ZlKGVuY29kZWRWZWN0b3IpOworICAgICAgICByZXR1
cm4gZW5jb2RlZFZlY3RvcjsKICAgICB9CiAKICAgICBzdGF0aWMgYm9vbCBkZWNvZGVWYWx1ZShF
bmNvZGVkVmFsdWUmIGVuY29kZWRWZWN0b3IsIERlY29kZWRUeXBlJiBkZWNvZGVkVmFsdWUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5j
cHAKaW5kZXggOGIzNGUxMWE5Y2Q0NWI1MTBlYzQyN2NiZTk2NjM5OGYyNWQzZGZmYS4uNTk1YWIx
YjRjZjQ1ZTgxMDFiZjVmNzlhNzYyMmMyZGY2ZGEyNjQ3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmNwcApAQCAtMTE5LDcgKzEx
OSw3IEBAIFJlZlB0cjxNZWRpYUtleVNlc3Npb24+IE1lZGlhS2V5czo6Y3JlYXRlU2Vzc2lvbihT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0CiAgICAgc2Vzc2lvbi0+Z2VuZXJhdGVLZXlS
ZXF1ZXN0KHR5cGUsIGluaXREYXRhKTsKIAogICAgIC8vIDYuIFJldHVybiB0aGUgbmV3IG9iamVj
dCB0byB0aGUgY2FsbGVyLgotICAgIHJldHVybiBXVEY6Om1vdmUoc2Vzc2lvbik7CisgICAgcmV0
dXJuIHNlc3Npb247CiB9CiAKIGJvb2wgTWVkaWFLZXlzOjppc1R5cGVTdXBwb3J0ZWQoY29uc3Qg
U3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50LmgKaW5kZXggNWJiOTFhZDhiNmU5ZTJjYThhMTE2
MDFhMDE0ZDFmMzQzNDBhNDI4My4uNTE4ZjYzOGRiNGUyMzJjOTBiYmRlMzJhOTIzMmQ4Zjc0YTlm
MWJjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaApAQCAt
MTU5LDcgKzE1OSw3IEBAIHB1YmxpYzoKICNpZiBIQVZFKEFQUF9MSU5LUykKICAgICB2aXJ0dWFs
IGJvb2wgc2hvdWxkSW5jbHVkZUFwcExpbmtBY3Rpb25zRm9yRWxlbWVudChfV0tBY3RpdmF0ZWRF
bGVtZW50SW5mbyAqKSB7IHJldHVybiB0cnVlOyB9CiAjZW5kaWYKLSAgICB2aXJ0dWFsIFJldGFp
blB0cjxOU0FycmF5PiBhY3Rpb25zRm9yRWxlbWVudChfV0tBY3RpdmF0ZWRFbGVtZW50SW5mbyAq
LCBSZXRhaW5QdHI8TlNBcnJheT4gZGVmYXVsdEFjdGlvbnMpIHsgcmV0dXJuIFdURjo6bW92ZShk
ZWZhdWx0QWN0aW9ucyk7IH0KKyAgICB2aXJ0dWFsIFJldGFpblB0cjxOU0FycmF5PiBhY3Rpb25z
Rm9yRWxlbWVudChfV0tBY3RpdmF0ZWRFbGVtZW50SW5mbyAqLCBSZXRhaW5QdHI8TlNBcnJheT4g
ZGVmYXVsdEFjdGlvbnMpIHsgcmV0dXJuIGRlZmF1bHRBY3Rpb25zOyB9CiAgICAgdmlydHVhbCB2
b2lkIGRpZE5vdEhhbmRsZVRhcEFzQ2xpY2soY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKSB7IH0K
ICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvVUlE
ZWxlZ2F0ZS5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1t
CmluZGV4IGYzODJjNDgyM2FjNjRhYzlkNzgwYjcyMzc4MzUzNTBlNTViODM1NjAuLmE5ZTRmYjg5
MWU5NTVlZjQzN2FkYjE5ZDRkNzA2MmZiM2VmYmNiMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tCkBAIC0zNjAsNyArMzYwLDcgQEAgYm9vbCBVSURl
bGVnYXRlOjpVSUNsaWVudDo6c2hvdWxkSW5jbHVkZUFwcExpbmtBY3Rpb25zRm9yRWxlbWVudChf
V0tBY3RpdmF0ZWRFbGUKIFJldGFpblB0cjxOU0FycmF5PiBVSURlbGVnYXRlOjpVSUNsaWVudDo6
YWN0aW9uc0ZvckVsZW1lbnQoX1dLQWN0aXZhdGVkRWxlbWVudEluZm8gKmVsZW1lbnRJbmZvLCBS
ZXRhaW5QdHI8TlNBcnJheT4gZGVmYXVsdEFjdGlvbnMpCiB7CiAgICAgaWYgKCFtX3VpRGVsZWdh
dGUubV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0FjdGlvbnNGb3JFbGVtZW50RGVmYXVsdEFjdGlv
bnMpCi0gICAgICAgIHJldHVybiBXVEY6Om1vdmUoZGVmYXVsdEFjdGlvbnMpOworICAgICAgICBy
ZXR1cm4gZGVmYXVsdEFjdGlvbnM7CiAKICAgICBhdXRvIGRlbGVnYXRlID0gbV91aURlbGVnYXRl
Lm1fZGVsZWdhdGUuZ2V0KCk7CiAgICAgaWYgKCFkZWxlZ2F0ZSkKZGlmZiAtLWdpdCBhL1Rvb2xz
L0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBjZWM3ZjlkNmViOWIwNTA5NjY0YWE3
ZGMzMjlmYjI4YjM2ZmNmZDMyLi5kZWU1M2QyOTAzMzc5NzUzMjU0NTlmZGM2ZWQxZjRiOThmMzMz
MzI3IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTggQEAKKzIwMTUtMTItMzEgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29t
PgorCisgICAgICAgIEZpeCB3YXJuaW5ncyB1bmNvdmVyZWQgYnkgbWlncmF0aW5nIHRvIFdURl9N
T1ZFCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTI2
MDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJZ25v
cmVkIC1Xc2VsZi1tb3ZlIHdhcm5pbmdzIGluIHRoZXNlIHR3byBBUEkgdGVzdHMuIEl0J3MgdXNl
ZnVsIHRvIHRlc3QgdGhhdCB0aGVzZSBjbGFzc2VzIHByb3Blcmx5IGhhbmRsZQorICAgICAgICBz
ZWxmLW1vdmUsIGV2ZW4gaWYgZG9pbmcgc28gd291bGQgdHJpZ2dlciBhIHdhcm5pbmcuCisKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9OYWtlZFB0ci5jcHA6CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9S
ZWZQdHIuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisKIDIwMTUtMTItMzAg
IFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtNYWNd
W0dUS10gSmhidWlsZCBzdXBwb3J0IGZvciBPU1gKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV1RGL05ha2VkUHRyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V1RGL05ha2VkUHRyLmNwcAppbmRleCA0MTQ1MDdmMTU4NDljZmJiZDc0NDViNTk0MTcyM2NjNDc5
ODUxYmRjLi5jZDIzMmU3NzBiOWMzMGE4M2YwODcwY2VlNTdiM2FmYjQ0ZTI4NmE1IDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9OYWtlZFB0ci5jcHAKKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvTmFrZWRQdHIuY3BwCkBAIC0xNzksNyArMTc5LDE0
IEBAIFRFU1QoV1RGX05ha2VkUHRyLCBBc3NpZ25tZW50KQogICAgIHsKICAgICAgICAgTmFrZWRQ
dHI8UmVmTG9nZ2VyPiBwdHIoJmEpOwogICAgICAgICBBU1NFUlRfRVEoJmEsIHB0ci5nZXQoKSk7
CisjaWYgQ09NUElMRVIoQ0xBTkcpCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAorI3By
YWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1Xc2VsZi1tb3ZlIgorI2VuZGlmCiAgICAg
ICAgIHB0ciA9IFdURjo6bW92ZShwdHIpOworI2lmIENPTVBJTEVSKENMQU5HKQorI3ByYWdtYSBj
bGFuZyBkaWFnbm9zdGljIHBvcAorI2VuZGlmCiAgICAgICAgIEFTU0VSVF9FUSgmYSwgcHRyLmdl
dCgpKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dU
Ri9SZWZQdHIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUmVmUHRyLmNwcApp
bmRleCBiNzI2ZDdkZGYwM2NjMmZkNmEyMGUxNGQ5YjQwMjNjZjI2YTdkNDM4Li4zNmE4ZTZjOTgw
ZjM3MzM5M2JjYzdjMDQ3MjZkOTA1ZGQ1MTFkOGM3IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dURi9SZWZQdHIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV1RGL1JlZlB0ci5jcHAKQEAgLTI3MCw3ICsyNzAsMTQgQEAgVEVTVChXVEZfUmVmUHRyLCBB
c3NpZ25tZW50KQogICAgIHsKICAgICAgICAgUmVmUHRyPFJlZkxvZ2dlcj4gcHRyKCZhKTsKICAg
ICAgICAgQVNTRVJUX0VRKCZhLCBwdHIuZ2V0KCkpOworI2lmIENPTVBJTEVSKENMQU5HKQorI3By
YWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25v
cmVkICItV3NlbGYtbW92ZSIKKyNlbmRpZgogICAgICAgICBwdHIgPSBXVEY6Om1vdmUocHRyKTsK
KyNpZiBDT01QSUxFUihDTEFORykKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKKyNlbmRp
ZgogICAgICAgICBBU1NFUlRfRVEoJmEsIHB0ci5nZXQoKSk7CiAgICAgfQogICAgIEFTU0VSVF9T
VFJFUSgicmVmKGEpIGRlcmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>268051</attachid>
            <date>2015-12-31 12:46:08 -0800</date>
            <delta_ts>2015-12-31 19:55:30 -0800</delta_ts>
            <desc>III. Rename WTF_MOVE to WTFMove</desc>
            <filename>bug-152601-20151231124534.patch</filename>
            <type>text/plain</type>
            <size>1315</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk0NDUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDVkNTc4MzIwZjg4ZjFhMDkyM2RmYmMz
YTgyYzVhMDA0ODRkNGUzYTUuLmE1ZGI3NTM4M2JiNGE4ZDE1ZTJhNzEzMWViNTk3ZmQ4Yjg5MmNk
MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTUtMTItMzEgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNA
YXBwbGUuY29tPgorCisgICAgICAgIFJlbmFtZSBXVEZfTU9WRSB0byBXVEZNb3ZlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTI2MDEKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBPdXIgY29kaW5nIHN0eWxl
IGd1aWRlbGluZXMgc2F5IHRoYXQgbWFjcm9zIHRoYXQgZXhwYW5kIHRvIGZ1bmN0aW9uIGNhbGxz
IHNob3VsZCBiZSBuYW1lZCBsaWtlIGZ1bmN0aW9ucywKKyAgICAgICAgc28gV1RGTW92ZSgpIGlz
IGEgbW9yZSBhcHByb3ByaWF0ZSBuYW1lLgorCisgICAgICAgICogd3RmL1N0ZExpYkV4dHJhcy5o
OgorCiAyMDE1LTEyLTMwICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAogICAgICAg
ICBVc2Ugb2YgV1RGOjptb3ZlIHByZXZlbnRzIGNsYW5nJ3MgbW92ZSBkaWFnbm9zdGljcyBmcm9t
IHdhcm5pbmcgYWJvdXQgc2V2ZXJhbCBjbGFzc2VzIG9mIG1pc3Rha2VzCmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi9TdGRMaWJFeHRyYXMuaCBiL1NvdXJjZS9XVEYvd3RmL1N0ZExpYkV4dHJh
cy5oCmluZGV4IGUwNjUxM2NkYzNjM2JhYmVmMGUyNWQ0MjRjYzY4MWM4NGE5Y2RjMDAuLjU5YTNm
YWZjMzEwYzg1MmUwODY0NGE3ZjkwOGJhMmNhMTJiNDBiZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL1N0ZExpYkV4dHJhcy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1N0ZExpYkV4dHJhcy5o
CkBAIC0zOTcsNyArMzk3LDcgQEAgQUxXQVlTX0lOTElORSBDT05TVEVYUFIgdHlwZW5hbWUgcmVt
b3ZlX3JlZmVyZW5jZTxUPjo6dHlwZSYmIG1vdmUoVCYmIHZhbHVlKQogCiB9IC8vIG5hbWVzcGFj
ZSBzdGQKIAotI2RlZmluZSBXVEZfTU9WRSh2YWx1ZSkgc3RkOjptb3ZlPFdURjo6Q2hlY2tNb3Zl
UGFyYW1ldGVyPih2YWx1ZSkKKyNkZWZpbmUgV1RGTW92ZSh2YWx1ZSkgc3RkOjptb3ZlPFdURjo6
Q2hlY2tNb3ZlUGFyYW1ldGVyPih2YWx1ZSkKIAogdXNpbmcgV1RGOjpLQjsKIHVzaW5nIFdURjo6
TUI7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>268052</attachid>
            <date>2015-12-31 13:22:52 -0800</date>
            <delta_ts>2015-12-31 19:55:17 -0800</delta_ts>
            <desc>IV. Update the style checker to advise using WTFMove() instead of WTF::move()</desc>
            <filename>bug-152601-20151231132218.patch</filename>
            <type>text/plain</type>
            <size>2917</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk0NDUyCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggY2VjN2Y5ZDZlYjliMDUwOTY2NGFhN2RjMzI5ZmIyOGIz
NmZjZmQzMi4uNmM4OTBmNzIxY2U2OTc1OWNlNTU0NGQ4MzJjZGJlYjhmNzg5ZTlhZiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1
IEBACisyMDE1LTEyLTMxICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKworICAgICAg
ICBVcGRhdGUgdGhlIHN0eWxlIGNoZWNrZXIgdG8gYWR2aXNlIHVzaW5nIFdURk1vdmUoKSBpbnN0
ZWFkIG9mIFdURjo6bW92ZSgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNTI2MDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY3BwLnB5OgorICAg
ICAgICAoY2hlY2tfd3RmX21vdmUpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvc3R5bGUv
Y2hlY2tlcnMvY3BwX3VuaXR0ZXN0LnB5OgorICAgICAgICAoV2ViS2l0U3R5bGVUZXN0LnRlc3Rf
d3RmX21vdmUpOgorCiAyMDE1LTEyLTMwICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdh
bGlhLmNvbT4KIAogICAgICAgICBbTWFjXVtHVEtdIEpoYnVpbGQgc3VwcG9ydCBmb3IgT1NYCmRp
ZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2NwcC5weSBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY3BwLnB5CmluZGV4IDIyZGRj
NDQ3OWVlZTA3Y2U5ZjMwYzg1ZWQ2YTM4NTVmOGY4YzUwNTYuLjQ3NTg2ZGM4NTNjOTkwOTZlNGNj
ZmIxNDM5MjRiNGMwMDk1YTQwNzUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
c3R5bGUvY2hlY2tlcnMvY3BwLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUv
Y2hlY2tlcnMvY3BwLnB5CkBAIC0yMjU2LDcgKzIyNTYsNyBAQCBkZWYgY2hlY2tfbWF4X21pbl9t
YWNyb3MoY2xlYW5fbGluZXMsIGxpbmVfbnVtYmVyLCBmaWxlX3N0YXRlLCBlcnJvcik6CiAKIAog
ZGVmIGNoZWNrX3d0Zl9tb3ZlKGNsZWFuX2xpbmVzLCBsaW5lX251bWJlciwgZmlsZV9zdGF0ZSwg
ZXJyb3IpOgotICAgICIiIkxvb2tzIGZvciB1c2Ugb2YgJ3N0ZDo6bW92ZSgpJyB3aGljaCBzaG91
bGQgYmUgcmVwbGFjZWQgd2l0aCAnV1RGOjptb3ZlKCknLgorICAgICIiIkxvb2tzIGZvciB1c2Ug
b2YgJ3N0ZDo6bW92ZSgpJyB3aGljaCBzaG91bGQgYmUgcmVwbGFjZWQgd2l0aCAnV1RGTW92ZSgp
Jy4KIAogICAgIEFyZ3M6CiAgICAgICBjbGVhbl9saW5lczogQSBDbGVhbnNlZExpbmVzIGluc3Rh
bmNlIGNvbnRhaW5pbmcgdGhlIGZpbGUuCkBAIC0yMjc2LDcgKzIyNzYsNyBAQCBkZWYgY2hlY2tf
d3RmX21vdmUoY2xlYW5fbGluZXMsIGxpbmVfbnVtYmVyLCBmaWxlX3N0YXRlLCBlcnJvcik6CiAg
ICAgaWYgbm90IHVzaW5nX3N0ZF9tb3ZlOgogICAgICAgICByZXR1cm4KIAotICAgIGVycm9yKGxp
bmVfbnVtYmVyLCAncnVudGltZS93dGZfbW92ZScsIDQsICJVc2UgJ1dURjo6bW92ZSgpJyBpbnN0
ZWFkIG9mICdzdGQ6Om1vdmUoKScuIikKKyAgICBlcnJvcihsaW5lX251bWJlciwgJ3J1bnRpbWUv
d3RmX21vdmUnLCA0LCAiVXNlICdXVEZNb3ZlKCknIGluc3RlYWQgb2YgJ3N0ZDo6bW92ZSgpJy4i
KQogCiAKIGRlZiBjaGVja19jdHlwZV9mdW5jdGlvbnMoY2xlYW5fbGluZXMsIGxpbmVfbnVtYmVy
LCBmaWxlX3N0YXRlLCBlcnJvcik6CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L3N0eWxlL2NoZWNrZXJzL2NwcF91bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
c3R5bGUvY2hlY2tlcnMvY3BwX3VuaXR0ZXN0LnB5CmluZGV4IDhjNTk4NzY0YmQ2YjU5NGMxOGIy
ZWY4MDdmNWNjY2Q4NTJmYmJmOTQuLjViODM3Y2EwYTQ0M2MwMzk0Mjc0NGMxYmI2NDg4ZTk0NzA5
YjU3YWMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMv
Y3BwX3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tl
cnMvY3BwX3VuaXR0ZXN0LnB5CkBAIC00ODAxLDE5ICs0ODAxLDE5IEBAIGNsYXNzIFdlYktpdFN0
eWxlVGVzdChDcHBTdHlsZVRlc3RCYXNlKToKIAogICAgIGRlZiB0ZXN0X3d0Zl9tb3ZlKHNlbGYp
OgogICAgICAgICBzZWxmLmFzc2VydF9saW50KAotICAgICAgICAgICAgICdBIGEgPSBXVEY6Om1v
dmUoYik7JywKKyAgICAgICAgICAgICAnQSBhID0gV1RGTW92ZShiKTsnLAogICAgICAgICAgICAg
ICcnLAogICAgICAgICAgICAgICdmb28uY3BwJykKIAogICAgICAgICBzZWxmLmFzc2VydF9saW50
KAogICAgICAgICAgICAgJ0EgYSA9IHN0ZDo6bW92ZShiKTsnLAotICAgICAgICAgICAgIlVzZSAn
V1RGOjptb3ZlKCknIGluc3RlYWQgb2YgJ3N0ZDo6bW92ZSgpJy4iCisgICAgICAgICAgICAiVXNl
ICdXVEZNb3ZlKCknIGluc3RlYWQgb2YgJ3N0ZDo6bW92ZSgpJy4iCiAgICAgICAgICAgICAiICBb
cnVudGltZS93dGZfbW92ZV0gWzRdIiwKICAgICAgICAgICAgICdmb28uY3BwJykKIAogICAgICAg
ICBzZWxmLmFzc2VydF9saW50KAogICAgICAgICAgICAgJ0EgYSA9IHN0ZDo6bW92ZShiKTsnLAot
ICAgICAgICAgICAgIlVzZSAnV1RGOjptb3ZlKCknIGluc3RlYWQgb2YgJ3N0ZDo6bW92ZSgpJy4i
CisgICAgICAgICAgICAiVXNlICdXVEZNb3ZlKCknIGluc3RlYWQgb2YgJ3N0ZDo6bW92ZSgpJy4i
CiAgICAgICAgICAgICAiICBbcnVudGltZS93dGZfbW92ZV0gWzRdIiwKICAgICAgICAgICAgICdm
b28ubW0nKQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>268064</attachid>
            <date>2015-12-31 19:54:35 -0800</date>
            <delta_ts>2016-01-02 00:09:13 -0800</delta_ts>
            <desc>V. Replace WTF::move with WTFMove</desc>
            <filename>bug-152601-20151231195400.patch</filename>
            <type>text/plain</type>
            <size>1837185</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk0NDc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
Njg0MTYwMGZiMGRiYTE4ZGMzM2FiMDFkMmVhNThjOTNhOTExZDA2Li43Mjg0NWI4YmJlYjc0NmU4
NzcwYzBmNzUxODM5Y2E4ZjE3MjMxOGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSwyOTUgQEAKIDIwMTUtMTItMzEgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgog
CisgICAgICAgIFJlcGxhY2UgV1RGOjptb3ZlIHdpdGggV1RGTW92ZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUyNjAxCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBBUEkvT2JqQ0NhbGxiYWNrRnVuY3Rp
b24ubW06CisgICAgICAgIChKU0M6Ok9iakNDYWxsYmFja0Z1bmN0aW9uSW1wbDo6T2JqQ0NhbGxi
YWNrRnVuY3Rpb25JbXBsKToKKyAgICAgICAgKEpTQzo6T2JqQ0NhbGxiYWNrRnVuY3Rpb246Ok9i
akNDYWxsYmFja0Z1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6T2JqQ0NhbGxiYWNrRnVuY3Rpb246
OmNyZWF0ZSk6CisgICAgICAgIChvYmpDQ2FsbGJhY2tGdW5jdGlvbkZvckludm9jYXRpb24pOgor
ICAgICAgICAqIGFzc2VtYmxlci9Bc3NlbWJsZXJCdWZmZXIuaDoKKyAgICAgICAgKEpTQzo6QXNz
ZW1ibGVyQnVmZmVyOjpyZWxlYXNlQXNzZW1ibGVyRGF0YSk6CisgICAgICAgICogYXNzZW1ibGVy
L0xpbmtCdWZmZXIuY3BwOgorICAgICAgICAoSlNDOjpMaW5rQnVmZmVyOjpsaW5rQ29kZSk6Cisg
ICAgICAgICogYjMvQjNCbG9ja0luc2VydGlvblNldC5jcHA6CisgICAgICAgIChKU0M6OkIzOjpC
bG9ja0luc2VydGlvblNldDo6aW5zZXJ0KToKKyAgICAgICAgKEpTQzo6QjM6OkJsb2NrSW5zZXJ0
aW9uU2V0OjpzcGxpdEZvcndhcmQpOgorICAgICAgICAqIGIzL0IzTG93ZXJUb0Fpci5jcHA6Cisg
ICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OnJ1bik6CisgICAgICAgIChKU0M6OkIz
OjpBaXI6Okxvd2VyVG9BaXI6Omxvd2VyKToKKyAgICAgICAgKiBiMy9CM09wYXF1ZUJ5cHJvZHVj
dHMuY3BwOgorICAgICAgICAoSlNDOjpCMzo6T3BhcXVlQnlwcm9kdWN0czo6YWRkKToKKyAgICAg
ICAgKiBiMy9CM1Byb2NlZHVyZS5jcHA6CisgICAgICAgIChKU0M6OkIzOjpQcm9jZWR1cmU6OmFk
ZEJsb2NrKToKKyAgICAgICAgKEpTQzo6QjM6OlByb2NlZHVyZTo6YWRkRGF0YVNlY3Rpb24pOgor
ICAgICAgICAqIGIzL0IzUHJvY2VkdXJlLmg6CisgICAgICAgIChKU0M6OkIzOjpQcm9jZWR1cmU6
OnJlbGVhc2VCeXByb2R1Y3RzKToKKyAgICAgICAgKiBiMy9CM1Byb2NlZHVyZUlubGluZXMuaDoK
KyAgICAgICAgKEpTQzo6QjM6OlByb2NlZHVyZTo6YWRkKToKKyAgICAgICAgKiBiMy9CM1ZhbHVl
Lmg6CisgICAgICAgICogYjMvYWlyL0FpckNvZGUuY3BwOgorICAgICAgICAoSlNDOjpCMzo6QWly
OjpDb2RlOjphZGRCbG9jayk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OkNvZGU6OmFkZFN0YWNr
U2xvdCk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OkNvZGU6OmFkZFNwZWNpYWwpOgorICAgICAg
ICAqIGIzL2Fpci9BaXJJbnN0Lmg6CisgICAgICAgIChKU0M6OkIzOjpBaXI6Okluc3Q6Okluc3Qp
OgorICAgICAgICAqIGIzL2Fpci9BaXJJdGVyYXRlZFJlZ2lzdGVyQ29hbGVzY2luZy5jcHA6Cisg
ICAgICAgICogYjMvYWlyL0FpclNpbXBsaWZ5Q0ZHLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkFp
cjo6c2ltcGxpZnlDRkcpOgorICAgICAgICAqIGJpbmRpbmdzL1NjcmlwdFZhbHVlLmNwcDoKKyAg
ICAgICAgKERlcHJlY2F0ZWQ6OmpzVG9JbnNwZWN0b3JWYWx1ZSk6CisgICAgICAgICogYnVpbHRp
bnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcDoKKyAgICAgICAgKEpTQzo6Y3JlYXRlRXhlY3V0YWJs
ZUludGVybmFsKToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suY3BwOgor
ICAgICAgICAoSlNDOjpjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2Nrcyk6CisgICAgICAgICogYnl0
ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpmaW5pc2hDcmVh
dGlvbik6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6c2V0Q2FsbGVlU2F2ZVJlZ2lzdGVycyk6
CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6OkNvZGVCbG9j
azo6c2V0SklUQ29kZU1hcCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bGl2ZW5lc3NBbmFs
eXNpcyk6CisgICAgICAgICogYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHA6CisgICAgICAgIChK
U0M6OkdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3JTdHViSW5mb1dpdGhvdXRFeGl0U2l0ZUZlZWRi
YWNrKToKKyAgICAgICAgKiBieXRlY29kZS9HZXRCeUlkVmFyaWFudC5jcHA6CisgICAgICAgIChK
U0M6OkdldEJ5SWRWYXJpYW50OjpHZXRCeUlkVmFyaWFudCk6CisgICAgICAgICogYnl0ZWNvZGUv
UG9seW1vcnBoaWNBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpQb2x5bW9ycGhpY0FjY2Vzczo6
cmVnZW5lcmF0ZVdpdGhDYXNlcyk6CisgICAgICAgIChKU0M6OlBvbHltb3JwaGljQWNjZXNzOjpy
ZWdlbmVyYXRlV2l0aENhc2UpOgorICAgICAgICAoSlNDOjpQb2x5bW9ycGhpY0FjY2Vzczo6cmVn
ZW5lcmF0ZSk6CisgICAgICAgICogYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHA6CisgICAgICAg
IChKU0M6OlB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3JTdHViSW5mbyk6CisgICAgICAgICogYnl0
ZWNvZGUvUHV0QnlJZFZhcmlhbnQuY3BwOgorICAgICAgICAoSlNDOjpQdXRCeUlkVmFyaWFudDo6
c2V0dGVyKToKKyAgICAgICAgKiBieXRlY29kZS9TdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBv
aW50LmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hwb2ludDo6
cHVzaCk6CisgICAgICAgICogYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hwb2lu
dC5oOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50OjpTdHJ1
Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50KToKKyAgICAgICAgKiBieXRlY29kZS9TdHJ1Y3R1
cmVTdHViSW5mby5jcHA6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVN0dWJJbmZvOjphZGRBY2Nl
c3NDYXNlKToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHA6CisgICAg
ICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjpzZXRJbnN0cnVjdGlvbnMpOgorICAgICAgICAq
IGJ5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKToK
KyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oOgorICAgICAg
ICAqIGJ5dGVjb21waWxlci9TZXRGb3JTY29wZS5oOgorICAgICAgICAoSlNDOjpTZXRGb3JTY29w
ZTo6U2V0Rm9yU2NvcGUpOgorICAgICAgICAqIGRmZy9ERkdHcmFwaC5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6R3JhcGg6OmxpdmVuZXNzRm9yKToKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6
a2lsbHNGb3IpOgorICAgICAgICAqIGRmZy9ERkdKSVRDb21waWxlci5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6SklUQ29tcGlsZXI6OmxpbmspOgorICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBp
bGVyOjpjb21waWxlKToKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6Y29tcGlsZUZ1
bmN0aW9uKToKKyAgICAgICAgKiBkZmcvREZHSklURmluYWxpemVyLmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpKSVRGaW5hbGl6ZXI6OkpJVEZpbmFsaXplcik6CisgICAgICAgICogZGZnL0RGR0xp
dmVuZXNzQW5hbHlzaXNQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6TGl2ZW5lc3NBbmFs
eXNpc1BoYXNlOjpwcm9jZXNzKToKKyAgICAgICAgKiBkZmcvREZHT2JqZWN0QWxsb2NhdGlvblNp
bmtpbmdQaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6YWRkU2xvd1BhdGhHZW5lcmF0b3IpOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlSW4pOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3JlYXRlRGlyZWN0QXJndW1lbnRzKToK
KyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpjYWNoZWRQdXRCeUlkKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3Vs
YXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNhY2hl
ZEdldEJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjYWNoZWRQdXRC
eUlkKToKKyAgICAgICAgKiBkZmcvREZHV29ya2xpc3QuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OldvcmtsaXN0OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogZGlzYXNzZW1ibGVyL0Rpc2Fz
c2VtYmxlci5jcHA6CisgICAgICAgIChKU0M6OmRpc2Fzc2VtYmxlQXN5bmNocm9ub3VzbHkpOgor
ICAgICAgICAqIGZ0bC9GVExCM0NvbXBpbGUuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmNvbXBp
bGUpOgorICAgICAgICAqIGZ0bC9GVExDb21waWxlLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpt
bUFsbG9jYXRlRGF0YVNlY3Rpb24pOgorICAgICAgICAqIGZ0bC9GVExKSVRDb2RlLmNwcDoKKyAg
ICAgICAgKEpTQzo6RlRMOjpKSVRDb2RlOjppbml0aWFsaXplQjNCeXByb2R1Y3RzKToKKyAgICAg
ICAgKiBmdGwvRlRMSklURmluYWxpemVyLmg6CisgICAgICAgIChKU0M6OkZUTDo6T3V0T2ZMaW5l
Q29kZUluZm86Ok91dE9mTGluZUNvZGVJbmZvKToKKyAgICAgICAgKiBmdGwvRlRMTGluay5jcHA6
CisgICAgICAgIChKU0M6OkZUTDo6bGluayk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9M
TFZNLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9MTFZNOjpjb21waWxl
VGFpbENhbGwpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0xMVk06OmxhenlT
bG93UGF0aCk6CisgICAgICAgICogaGVhcC9IZWFwLmNwcDoKKyAgICAgICAgKEpTQzo6SGVhcDo6
cmVsZWFzZURlbGF5ZWRSZWxlYXNlZE9iamVjdHMpOgorICAgICAgICAoSlNDOjpIZWFwOjptYXJr
Um9vdHMpOgorICAgICAgICAoSlNDOjpIZWFwOjpzZXRJbmNyZW1lbnRhbFN3ZWVwZXIpOgorICAg
ICAgICAqIGhlYXAvSGVhcElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6SGVhcDo6cmVsZWFzZVNv
b24pOgorICAgICAgICAoSlNDOjpIZWFwOjpyZWdpc3RlcldlYWtHQ01hcCk6CisgICAgICAgICog
aGVhcC9XZWFrSW5saW5lcy5oOgorICAgICAgICAqIGluc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5j
cHA6CisgICAgICAgIChJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlOjphZGRUb0Zyb250ZW5kKToK
KyAgICAgICAgKiBpbnNwZWN0b3IvQ29udGVudFNlYXJjaFV0aWxpdGllcy5jcHA6CisgICAgICAg
IChJbnNwZWN0b3I6OkNvbnRlbnRTZWFyY2hVdGlsaXRpZXM6OnNlYXJjaEluVGV4dEJ5TGluZXMp
OgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5jcHA6CisgICAgICAgIChJbnNw
ZWN0b3I6OkluamVjdGVkU2NyaXB0OjpnZXRGdW5jdGlvbkRldGFpbHMpOgorICAgICAgICAoSW5z
cGVjdG9yOjpJbmplY3RlZFNjcmlwdDo6Z2V0UHJvcGVydGllcyk6CisgICAgICAgIChJbnNwZWN0
b3I6OkluamVjdGVkU2NyaXB0OjpnZXREaXNwbGF5YWJsZVByb3BlcnRpZXMpOgorICAgICAgICAo
SW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdDo6Z2V0SW50ZXJuYWxQcm9wZXJ0aWVzKToKKyAgICAg
ICAgKEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHQ6OmdldENvbGxlY3Rpb25FbnRyaWVzKToKKyAg
ICAgICAgKEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHQ6OndyYXBDYWxsRnJhbWVzKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5jcHA6CisgICAgICAgIChJbnNw
ZWN0b3I6OkFnZW50UmVnaXN0cnk6OmFwcGVuZCk6CisgICAgICAgIChJbnNwZWN0b3I6OkFnZW50
UmVnaXN0cnk6OmFwcGVuZEV4dHJhQWdlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OkJhY2tlbmREaXNw
YXRjaGVyOjpDYWxsYmFja0Jhc2U6OkNhbGxiYWNrQmFzZSk6CisgICAgICAgIChJbnNwZWN0b3I6
OkJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2U6OnNlbmRTdWNjZXNzKToKKyAgICAgICAg
KEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXI6OkJhY2tlbmREaXNwYXRjaGVyKToKKyAgICAg
ICAgKEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZSk6CisgICAgICAgIChJbnNw
ZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyOjpzZW5kUGVuZGluZ0Vycm9ycyk6CisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3RvclByb3RvY29sVHlwZXMuaDoKKyAgICAgICAgKEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkFycmF5OjphZGRJdGVtKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
VmFsdWVzLmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg6CisgICAg
ICAgIChJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdEJhc2U6OnNldFZhbHVlKToKKyAgICAgICAg
KEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0QmFzZTo6c2V0T2JqZWN0KToKKyAgICAgICAgKElu
c3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0QmFzZTo6c2V0QXJyYXkpOgorICAgICAgICAoSW5zcGVj
dG9yOjpJbnNwZWN0b3JBcnJheUJhc2U6OnB1c2hWYWx1ZSk6CisgICAgICAgIChJbnNwZWN0b3I6
Okluc3BlY3RvckFycmF5QmFzZTo6cHVzaE9iamVjdCk6CisgICAgICAgIChJbnNwZWN0b3I6Oklu
c3BlY3RvckFycmF5QmFzZTo6cHVzaEFycmF5KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSlNHbG9i
YWxPYmplY3RDb25zb2xlQ2xpZW50LmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNHbG9iYWxP
YmplY3RDb25zb2xlQ2xpZW50OjptZXNzYWdlV2l0aFR5cGVBbmRMZXZlbCk6CisgICAgICAgIChJ
bnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0Q29uc29sZUNsaWVudDo6dGltZUVuZCk6CisgICAgICAg
ICogaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlci5jcHA6CisgICAg
ICAgIChJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcjo6SlNHbG9i
YWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNHbG9i
YWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyOjphcHBlbmRFeHRyYUFnZW50KToKKyAgICAgICAg
KiBpbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3QuY3BwOgorICAgICAgICAoSW5zcGVjdG9y
OjpKU0luamVjdGVkU2NyaXB0SG9zdDo6SlNJbmplY3RlZFNjcmlwdEhvc3QpOgorICAgICAgICAq
IGluc3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdC5oOgorICAgICAgICAoSW5zcGVjdG9yOjpK
U0luamVjdGVkU2NyaXB0SG9zdDo6Y3JlYXRlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvckFnZW50LmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yQWdlbnQ6
OmFjdGl2YXRlRXh0cmFEb21haW4pOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yQ29uc29sZUFnZW50LmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yQ29uc29s
ZUFnZW50OjphZGRNZXNzYWdlVG9Db25zb2xlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVj
dG9yQ29uc29sZUFnZW50OjphZGRDb25zb2xlTWVzc2FnZSk6CisgICAgICAgICogaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6
SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2V0QnJlYWtwb2ludEJ5VXJsKToKKyAgICAgICAgKElu
c3BlY3Rvcjo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6cmVzb2x2ZUJyZWFrcG9pbnQpOgorICAg
ICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzY2hlZHVsZVBhdXNlT25O
ZXh0U3RhdGVtZW50KToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dDo6YnJlYWtwb2ludEFjdGlvblByb2JlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9y
RGVidWdnZXJBZ2VudDo6YnJlYWtQcm9ncmFtKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvckhlYXBBZ2VudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3Rvckhl
YXBBZ2VudDo6ZGlkR2FyYmFnZUNvbGxlY3QpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yUnVudGltZUFnZW50LmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9y
UnVudGltZUFnZW50OjpnZXRSdW50aW1lVHlwZXNGb3JWYXJpYWJsZXNBdE9mZnNldHMpOgorICAg
ICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmdldEJhc2ljQmxvY2tzKToK
KyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQu
Y3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50Ojph
ZGRFdmVudCk6CisgICAgICAgIChJbnNwZWN0b3I6OmJ1aWxkSW5zcGVjdG9yT2JqZWN0KToKKyAg
ICAgICAgKEluc3BlY3Rvcjo6YnVpbGRQcm9maWxlSW5zcGVjdG9yT2JqZWN0KToKKyAgICAgICAg
KEluc3BlY3Rvcjo6SW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudDo6dHJhY2tpbmdDb21wbGV0
ZSk6CisgICAgICAgICogaW5zcGVjdG9yL2F1Z21lbnRhYmxlL0FsdGVybmF0ZURpc3BhdGNoYWJs
ZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9jcHBfZ2VuZXJh
dG9yX3RlbXBsYXRlcy5weToKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dl
bmVyYXRlX2NwcF9iYWNrZW5kX2Rpc3BhdGNoZXJfaW1wbGVtZW50YXRpb24ucHk6CisgICAgICAg
IChDcHBCYWNrZW5kRGlzcGF0Y2hlckltcGxlbWVudGF0aW9uR2VuZXJhdG9yLl9nZW5lcmF0ZV9z
bWFsbF9kaXNwYXRjaGVyX3N3aXRjaF9pbXBsZW1lbnRhdGlvbl9mb3JfZG9tYWluKToKKyAgICAg
ICAgKENwcEJhY2tlbmREaXNwYXRjaGVySW1wbGVtZW50YXRpb25HZW5lcmF0b3IuX2dlbmVyYXRl
X2Rpc3BhdGNoZXJfaW1wbGVtZW50YXRpb25fZm9yX2NvbW1hbmQpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfY3BwX2Zyb250ZW5kX2Rpc3BhdGNoZXJfaW1w
bGVtZW50YXRpb24ucHk6CisgICAgICAgIChDcHBGcm9udGVuZERpc3BhdGNoZXJJbXBsZW1lbnRh
dGlvbkdlbmVyYXRvci5fZ2VuZXJhdGVfZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlvbl9mb3JfZXZl
bnQpOgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfY3BwX3By
b3RvY29sX3R5cGVzX2hlYWRlci5weToKKyAgICAgICAgKF9nZW5lcmF0ZV91bmNoZWNrZWRfc2V0
dGVyX2Zvcl9tZW1iZXIpOgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2Vu
ZXJhdGVfb2JqY19iYWNrZW5kX2Rpc3BhdGNoZXJfaW1wbGVtZW50YXRpb24ucHk6CisgICAgICAg
IChPYmpDQ29uZmlndXJhdGlvbkltcGxlbWVudGF0aW9uR2VuZXJhdG9yLl9nZW5lcmF0ZV9zdWNj
ZXNzX2Jsb2NrX2Zvcl9jb21tYW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy9jb2Rl
Z2VuL2dlbmVyYXRlX29iamNfZnJvbnRlbmRfZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlvbi5weToK
KyAgICAgICAgKE9iakNGcm9udGVuZERpc3BhdGNoZXJJbXBsZW1lbnRhdGlvbkdlbmVyYXRvci5f
Z2VuZXJhdGVfZXZlbnRfb3V0X3BhcmFtZXRlcnMpOgorICAgICAgICAqIGluc3BlY3Rvci9zY3Jp
cHRzL2NvZGVnZW4vb2JqY19nZW5lcmF0b3JfdGVtcGxhdGVzLnB5OgorICAgICAgICAqIGluc3Bl
Y3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtYXN5bmMtYXR0cmlidXRl
Lmpzb24tcmVzdWx0OgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVk
L2NvbW1hbmRzLXdpdGgtb3B0aW9uYWwtY2FsbC1yZXR1cm4tcGFyYW1ldGVycy5qc29uLXJlc3Vs
dDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9kb21haW5zLXdp
dGgtdmFyeWluZy1jb21tYW5kLXNpemVzLmpzb24tcmVzdWx0OgorICAgICAgICAqIGluc3BlY3Rv
ci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2VudW0tdmFsdWVzLmpzb24tcmVzdWx0OgorICAgICAg
ICAqIGluc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2V2ZW50cy13aXRoLW9wdGlvbmFs
LXBhcmFtZXRlcnMuanNvbi1yZXN1bHQ6CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVz
dHMvZXhwZWN0ZWQvZ2VuZXJhdGUtZG9tYWlucy13aXRoLWZlYXR1cmUtZ3VhcmRzLmpzb24tcmVz
dWx0OgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3NhbWUtdHlw
ZS1pZC1kaWZmZXJlbnQtZG9tYWluLmpzb24tcmVzdWx0OgorICAgICAgICAqIGluc3BlY3Rvci9z
Y3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3NoYWRvd2VkLW9wdGlvbmFsLXR5cGUtc2V0dGVycy5qc29u
LXJlc3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBl
LWRlY2xhcmF0aW9uLWFsaWFzZWQtcHJpbWl0aXZlLXR5cGUuanNvbi1yZXN1bHQ6CisgICAgICAg
ICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1hcnJh
eS10eXBlLmpzb24tcmVzdWx0OgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4
cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tZW51bS10eXBlLmpzb24tcmVzdWx0OgorICAgICAgICAq
IGluc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tb2JqZWN0
LXR5cGUuanNvbi1yZXN1bHQ6CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhw
ZWN0ZWQvdHlwZS1yZXF1aXJpbmctcnVudGltZS1jYXN0cy5qc29uLXJlc3VsdDoKKyAgICAgICAg
KiBqaXQvQ2FsbEZyYW1lU2h1ZmZsZXIuY3BwOgorICAgICAgICAoSlNDOjpDYWxsRnJhbWVTaHVm
Zmxlcjo6cGVyZm9ybVNhZmVXcml0ZXMpOgorICAgICAgICAqIGppdC9Qb2x5bW9ycGhpY0NhbGxT
dHViUm91dGluZS5jcHA6CisgICAgICAgIChKU0M6OlBvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5l
OjpQb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZSk6CisgICAgICAgICogaml0L1JlcGF0Y2guY3Bw
OgorICAgICAgICAoSlNDOjp0cnlDYWNoZUdldEJ5SUQpOgorICAgICAgICAoSlNDOjp0cnlDYWNo
ZVB1dEJ5SUQpOgorICAgICAgICAoSlNDOjp0cnlSZXBhdGNoSW4pOgorICAgICAgICAoSlNDOjps
aW5rUG9seW1vcnBoaWNDYWxsKToKKyAgICAgICAgKiBwYXJzZXIvTm9kZXMuY3BwOgorICAgICAg
ICAoSlNDOjpQcm9ncmFtTm9kZTo6c2V0Q2xvc2VkVmFyaWFibGVzKToKKyAgICAgICAgKiBwYXJz
ZXIvUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlSW5u
ZXIpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkluZm8p
OgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuaDoKKyAgICAgICAgKEpTQzo6UGFyc2VyOjpjbG9z
ZWRWYXJpYWJsZXMpOgorICAgICAgICAqIHBhcnNlci9Tb3VyY2VQcm92aWRlckNhY2hlLmNwcDoK
KyAgICAgICAgKEpTQzo6U291cmNlUHJvdmlkZXJDYWNoZTo6YWRkKToKKyAgICAgICAgKiBwcm9m
aWxlci9Qcm9maWxlTm9kZS5oOgorICAgICAgICAoSlNDOjpDYWxjdWxhdGVQcm9maWxlU3VidHJl
ZURhdGFGdW5jdG9yOjpyZXR1cm5WYWx1ZSk6CisgICAgICAgICogcmVwbGF5L0VuY29kZWRWYWx1
ZS5jcHA6CisgICAgICAgIChKU0M6OkVuY29kZWRWYWx1ZTo6Z2V0PEVuY29kZWRWYWx1ZT4pOgor
ICAgICAgICAqIHJlcGxheS9zY3JpcHRzL0NvZGVHZW5lcmF0b3JSZXBsYXlJbnB1dHMucHk6Cisg
ICAgICAgIChHZW5lcmF0b3IuZ2VuZXJhdGVfbWVtYmVyX21vdmVfZXhwcmVzc2lvbik6CisgICAg
ICAgICogcmVwbGF5L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZ2VuZXJhdGUtZW51bS13aXRoLWd1
YXJkLmpzb24tVGVzdFJlcGxheUlucHV0cy5jcHA6CisgICAgICAgIChUZXN0OjpIYW5kbGVXaGVl
bEV2ZW50OjpIYW5kbGVXaGVlbEV2ZW50KToKKyAgICAgICAgKEpTQzo6SW5wdXRUcmFpdHM8VGVz
dDo6SGFuZGxlV2hlZWxFdmVudD46OmRlY29kZSk6CisgICAgICAgICogcmVwbGF5L3NjcmlwdHMv
dGVzdHMvZXhwZWN0ZWQvZ2VuZXJhdGUtbWVtb2l6ZWQtdHlwZS1tb2Rlcy5qc29uLVRlc3RSZXBs
YXlJbnB1dHMuY3BwOgorICAgICAgICAoVGVzdDo6TWFwSW5wdXQ6Ok1hcElucHV0KToKKyAgICAg
ICAgKEpTQzo6SW5wdXRUcmFpdHM8VGVzdDo6TWFwSW5wdXQ+OjpkZWNvZGUpOgorICAgICAgICAq
IHJ1bnRpbWUvQ29uc29sZUNsaWVudC5jcHA6CisgICAgICAgIChKU0M6OkNvbnNvbGVDbGllbnQ6
OmludGVybmFsTWVzc2FnZVdpdGhUeXBlQW5kTGV2ZWwpOgorICAgICAgICAoSlNDOjpDb25zb2xl
Q2xpZW50Ojpsb2dXaXRoTGV2ZWwpOgorICAgICAgICAoSlNDOjpDb25zb2xlQ2xpZW50OjpjbGVh
cik6CisgICAgICAgIChKU0M6OkNvbnNvbGVDbGllbnQ6OmRpcik6CisgICAgICAgIChKU0M6OkNv
bnNvbGVDbGllbnQ6OmRpclhNTCk6CisgICAgICAgIChKU0M6OkNvbnNvbGVDbGllbnQ6OnRhYmxl
KToKKyAgICAgICAgKEpTQzo6Q29uc29sZUNsaWVudDo6dHJhY2UpOgorICAgICAgICAoSlNDOjpD
b25zb2xlQ2xpZW50Ojphc3NlcnRDb25kaXRpb24pOgorICAgICAgICAoSlNDOjpDb25zb2xlQ2xp
ZW50Ojpncm91cCk6CisgICAgICAgIChKU0M6OkNvbnNvbGVDbGllbnQ6Omdyb3VwQ29sbGFwc2Vk
KToKKyAgICAgICAgKEpTQzo6Q29uc29sZUNsaWVudDo6Z3JvdXBFbmQpOgorICAgICAgICAqIHJ1
bnRpbWUvSlNOYXRpdmVTdGRGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpTTmF0aXZlU3Rk
RnVuY3Rpb246OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9KU1N0cmluZy5oOgorICAgICAg
ICAoSlNDOjpqc05vbnRyaXZpYWxTdHJpbmcpOgorICAgICAgICAqIHJ1bnRpbWUvSlNTdHJpbmdK
b2luZXIuY3BwOgorICAgICAgICAoSlNDOjpKU1N0cmluZ0pvaW5lcjo6am9pbik6CisgICAgICAg
ICogcnVudGltZS9KU1N0cmluZ0pvaW5lci5oOgorICAgICAgICAoSlNDOjpKU1N0cmluZ0pvaW5l
cjo6YXBwZW5kKToKKyAgICAgICAgKiBydW50aW1lL05hdGl2ZVN0ZEZ1bmN0aW9uQ2VsbC5jcHA6
CisgICAgICAgIChKU0M6Ok5hdGl2ZVN0ZEZ1bmN0aW9uQ2VsbDo6Y3JlYXRlKToKKyAgICAgICAg
KEpTQzo6TmF0aXZlU3RkRnVuY3Rpb25DZWxsOjpOYXRpdmVTdGRGdW5jdGlvbkNlbGwpOgorICAg
ICAgICAqIHJ1bnRpbWUvU2NvcGVkQXJndW1lbnRzVGFibGUuY3BwOgorICAgICAgICAoSlNDOjpT
Y29wZWRBcmd1bWVudHNUYWJsZTo6c2V0TGVuZ3RoKToKKyAgICAgICAgKiBydW50aW1lL1N0cnVj
dHVyZUlEVGFibGUuY3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVJRFRhYmxlOjpyZXNpemUp
OgorICAgICAgICAqIHJ1bnRpbWUvVHlwZVNldC5jcHA6CisgICAgICAgIChKU0M6OlN0cnVjdHVy
ZVNoYXBlOjppbnNwZWN0b3JSZXByZXNlbnRhdGlvbik6CisgICAgICAgICogcnVudGltZS9XZWFr
R0NNYXAuaDoKKyAgICAgICAgKEpTQzo6V2Vha0dDTWFwOjpzZXQpOgorICAgICAgICAqIHRvb2xz
L0NvZGVQcm9maWxlLmg6CisgICAgICAgIChKU0M6OkNvZGVQcm9maWxlOjphZGRDaGlsZCk6Cisg
ICAgICAgICogeWFyci9ZYXJySW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSlNDOjpZYXJyOjpC
eXRlQ29tcGlsZXI6OmNvbXBpbGUpOgorICAgICAgICAoSlNDOjpZYXJyOjpCeXRlQ29tcGlsZXI6
OmF0b21QYXJlbnRoZXNlc1N1YnBhdHRlcm5FbmQpOgorICAgICAgICAqIHlhcnIvWWFyckludGVy
cHJldGVyLmg6CisgICAgICAgIChKU0M6OllhcnI6OkJ5dGVjb2RlUGF0dGVybjo6Qnl0ZWNvZGVQ
YXR0ZXJuKToKKyAgICAgICAgKiB5YXJyL1lhcnJQYXR0ZXJuLmNwcDoKKyAgICAgICAgKEpTQzo6
WWFycjo6WWFyclBhdHRlcm5Db25zdHJ1Y3Rvcjo6WWFyclBhdHRlcm5Db25zdHJ1Y3Rvcik6Cisg
ICAgICAgIChKU0M6OllhcnI6OllhcnJQYXR0ZXJuQ29uc3RydWN0b3I6OnJlc2V0KToKKyAgICAg
ICAgKEpTQzo6WWFycjo6WWFyclBhdHRlcm5Db25zdHJ1Y3Rvcjo6YXRvbVBhdHRlcm5DaGFyYWN0
ZXIpOgorICAgICAgICAoSlNDOjpZYXJyOjpZYXJyUGF0dGVybkNvbnN0cnVjdG9yOjphdG9tQ2hh
cmFjdGVyQ2xhc3NFbmQpOgorICAgICAgICAoSlNDOjpZYXJyOjpZYXJyUGF0dGVybkNvbnN0cnVj
dG9yOjphdG9tUGFyZW50aGVzZXNTdWJwYXR0ZXJuQmVnaW4pOgorICAgICAgICAoSlNDOjpZYXJy
OjpZYXJyUGF0dGVybkNvbnN0cnVjdG9yOjphdG9tUGFyZW50aGV0aWNhbEFzc2VydGlvbkJlZ2lu
KToKKyAgICAgICAgKEpTQzo6WWFycjo6WWFyclBhdHRlcm5Db25zdHJ1Y3Rvcjo6Y29weURpc2p1
bmN0aW9uKToKKworMjAxNS0xMi0zMSAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CisK
ICAgICAgICAgRml4IHdhcm5pbmdzIHVuY292ZXJlZCBieSBtaWdyYXRpbmcgdG8gV1RGX01PVkUK
ICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MjYwMQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9n
CmluZGV4IGE0OTRhYmQ4MDA5ZDk2ZTBjMTM4MGRjZjEwOWQyMGJiZGYxZTAyMmQuLmE1NTU3NGRl
ZDUzYTcyYjQ0YTM0MmI5YjlhMzk0NDgxMzQ5NTUxOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTEgQEAKKzIw
MTUtMTItMzEgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIFJlcGxh
Y2UgV1RGOjptb3ZlIHdpdGggV1RGTW92ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTUyNjAxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGhpcyBhbHNvIHJlbW92ZXMgdGhlIGRlZmluaXRpb24gb2YgV1RG
Ojptb3ZlLgorCisgICAgICAgICogd3RmL0RlcXVlLmg6CisgICAgICAgICogd3RmL0hhc2hNYXAu
aDoKKyAgICAgICAgKiB3dGYvSGFzaFNldC5oOgorICAgICAgICAqIHd0Zi9IYXNoVGFibGUuaDoK
KyAgICAgICAgKFdURjo6SGFzaFRhYmxlOjphZGQpOgorICAgICAgICAoV1RGOjpLZXlUcmFpdHM+
OjpIYXNoVGFibGUpOgorICAgICAgICAqIHd0Zi9JbnNlcnRpb24uaDoKKyAgICAgICAgKFdURjo6
ZXhlY3V0ZUluc2VydGlvbnMpOgorICAgICAgICAqIHd0Zi9JdGVyYXRvckFkYXB0b3JzLmg6Cisg
ICAgICAgIChXVEY6OkZpbHRlckl0ZXJhdG9yOjpGaWx0ZXJJdGVyYXRvcik6CisgICAgICAgIChX
VEY6OlRyYW5zZm9ybUl0ZXJhdG9yOjpUcmFuc2Zvcm1JdGVyYXRvcik6CisgICAgICAgIChXVEY6
Om1ha2VUcmFuc2Zvcm1JdGVyYXRvcik6CisgICAgICAgICogd3RmL0l0ZXJhdG9yUmFuZ2UuaDoK
KyAgICAgICAgKFdURjo6SXRlcmF0b3JSYW5nZTo6SXRlcmF0b3JSYW5nZSk6CisgICAgICAgICog
d3RmL0xpc3RIYXNoU2V0Lmg6CisgICAgICAgIChXVEY6OlU+Ojp0YWtlRmlyc3QpOgorICAgICAg
ICAoV1RGOjpVPjo6dGFrZUxhc3QpOgorICAgICAgICAqIHd0Zi9NYWluVGhyZWFkLmNwcDoKKyAg
ICAgICAgKFdURjo6Y2FsbE9uTWFpblRocmVhZCk6CisgICAgICAgICogd3RmL01hbGxvY1B0ci5o
OgorICAgICAgICAoV1RGOjpNYWxsb2NQdHI6Om9wZXJhdG9yPSk6CisgICAgICAgICogd3RmL01l
c3NhZ2VRdWV1ZS5oOgorICAgICAgICAoV1RGOjpNZXNzYWdlUXVldWU8RGF0YVR5cGU+OjphcHBl
bmQpOgorICAgICAgICAoV1RGOjpNZXNzYWdlUXVldWU8RGF0YVR5cGU+OjphcHBlbmRBbmRLaWxs
KToKKyAgICAgICAgKFdURjo6TWVzc2FnZVF1ZXVlPERhdGFUeXBlPjo6YXBwZW5kQW5kQ2hlY2tF
bXB0eSk6CisgICAgICAgIChXVEY6Ok1lc3NhZ2VRdWV1ZTxEYXRhVHlwZT46OnByZXBlbmQpOgor
ICAgICAgICAqIHd0Zi9OYWtlZFB0ci5oOgorICAgICAgICAoV1RGOjo9KToKKyAgICAgICAgKiB3
dGYvT1NPYmplY3RQdHIuaDoKKyAgICAgICAgKFdURjo6T1NPYmplY3RQdHI6Om9wZXJhdG9yPSk6
CisgICAgICAgICogd3RmL09wdGlvbmFsLmg6CisgICAgICAgIChXVEY6Ok9wdGlvbmFsOjpPcHRp
b25hbCk6CisgICAgICAgIChXVEY6Ok9wdGlvbmFsOjpvcGVyYXRvcj0pOgorICAgICAgICAqIHd0
Zi9SZWZQdHIuaDoKKyAgICAgICAgKFdURjo6PSk6CisgICAgICAgICogd3RmL1JldGFpblB0ci5o
OgorICAgICAgICAoV1RGOjo9KToKKyAgICAgICAgKiB3dGYvUnVuTG9vcC5jcHA6CisgICAgICAg
IChXVEY6OlJ1bkxvb3A6OmRpc3BhdGNoKToKKyAgICAgICAgKiB3dGYvU2hhcmVkVGFzay5oOgor
ICAgICAgICAoV1RGOjpjcmVhdGVTaGFyZWRUYXNrKToKKyAgICAgICAgKiB3dGYvU3RkTGliRXh0
cmFzLmg6CisgICAgICAgIChXVEY6Om1vdmUpOiBEZWxldGVkLgorICAgICAgICAqIHd0Zi9UaHJl
YWRpbmcuY3BwOgorICAgICAgICAoV1RGOjp0aHJlYWRFbnRyeVBvaW50KToKKyAgICAgICAgKFdU
Rjo6Y3JlYXRlVGhyZWFkKToKKyAgICAgICAgKiB3dGYvVmVjdG9yLmg6CisgICAgICAgIChXVEY6
OlZlY3Rvcjo6dGFrZUxhc3QpOgorICAgICAgICAqIHd0Zi9lZmwvRGlzcGF0Y2hRdWV1ZUVmbC5j
cHA6CisgICAgICAgIChEaXNwYXRjaFF1ZXVlOjpkaXNwYXRjaCk6CisgICAgICAgIChEaXNwYXRj
aFF1ZXVlOjpzZXRTb2NrZXRFdmVudEhhbmRsZXIpOgorICAgICAgICAoRGlzcGF0Y2hRdWV1ZTo6
cGVyZm9ybVRpbWVyV29yayk6CisgICAgICAgIChEaXNwYXRjaFF1ZXVlOjppbnNlcnRUaW1lcldv
cmtJdGVtKToKKyAgICAgICAgKiB3dGYvZWZsL0Rpc3BhdGNoUXVldWVXb3JrSXRlbUVmbC5oOgor
ICAgICAgICAoV29ya0l0ZW06OldvcmtJdGVtKToKKyAgICAgICAgKFRpbWVyV29ya0l0ZW06OmNy
ZWF0ZSk6CisgICAgICAgIChUaW1lcldvcmtJdGVtOjpUaW1lcldvcmtJdGVtKToKKyAgICAgICAg
KiB3dGYvZWZsL1dvcmtRdWV1ZUVmbC5jcHA6CisgICAgICAgIChXb3JrUXVldWU6OnJlZ2lzdGVy
U29ja2V0RXZlbnRIYW5kbGVyKToKKyAgICAgICAgKFdvcmtRdWV1ZTo6ZGlzcGF0Y2gpOgorICAg
ICAgICAoV29ya1F1ZXVlOjpkaXNwYXRjaEFmdGVyKToKKyAgICAgICAgKiB3dGYvZ2xpYi9HUmVm
UHRyLmg6CisgICAgICAgIChXVEY6Oj0pOgorICAgICAgICAqIHd0Zi9nbGliL1dvcmtRdWV1ZUdM
aWIuY3BwOgorICAgICAgICAoV1RGOjpEaXNwYXRjaEFmdGVyQ29udGV4dDo6RGlzcGF0Y2hBZnRl
ckNvbnRleHQpOgorICAgICAgICAoV1RGOjpXb3JrUXVldWU6OmRpc3BhdGNoQWZ0ZXIpOgorICAg
ICAgICAqIHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oOgorICAgICAgICAoV1RGOjpBdG9taWNTdHJp
bmc6OkF0b21pY1N0cmluZyk6CisgICAgICAgIChXVEY6OkF0b21pY1N0cmluZzo6b3BlcmF0b3I9
KToKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oOgorICAgICAgICAoV1RG
Ojp0cnlNYWtlU3RyaW5nKToKKyAgICAgICAgKiB3dGYvdGV4dC9XVEZTdHJpbmcuY3BwOgorICAg
ICAgICAoV1RGOjpTdHJpbmc6Omlzb2xhdGVkQ29weSk6CisgICAgICAgICogd3RmL3RleHQvV1RG
U3RyaW5nLmg6CisgICAgICAgIChXVEY6OlN0cmluZzo6U3RyaW5nKToKKyAgICAgICAgKFdURjo6
U3RyaW5nQ2FwdHVyZTo6cmVsZWFzZVN0cmluZyk6CisgICAgICAgICogd3RmL3dpbi9HRElPYmpl
Y3QuaDoKKyAgICAgICAgKFdURjo6PSk6CisKIDIwMTUtMTItMzEgIERhdmlkIEtpbHplciAgPGRk
a2lsemVyQGFwcGxlLmNvbT4KIAogICAgICAgICBTdG9wIHVzaW5nIFVTRShDRk5FVFdPUkspIHBh
dGggb24gaU9TCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDQwZDRmOTNkNjhmM2M4Y2IyMjM1OGUwNjZiMDFmZGIw
ODhiM2JhZC4uZGIyYzg1YzQ3ODVlNTlmOTFiZDAxNDFkMjM5ZmY4ZTk4ZmY1MmI0NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDIyMzUgQEAKKzIwMTUtMTItMzEgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNA
YXBwbGUuY29tPgorCisgICAgICAgIFJlcGxhY2UgV1RGOjptb3ZlIHdpdGggV1RGTW92ZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUyNjAxCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3Rz
IChPT1BTISkuCisKKyAgICAgICAgKiBNb2R1bGVzL2JhdHRlcnkvTmF2aWdhdG9yQmF0dGVyeS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3JCYXR0ZXJ5Ojpmcm9tKToKKyAgICAgICAg
KiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETVNlc3Npb25DbGVhcktleS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDRE1TZXNzaW9uQ2xlYXJLZXk6OnVwZGF0ZSk6CisgICAgICAgICogTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFL
ZXlzOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlzOjpNZWRpYUtleXMpOgor
ICAgICAgICAqIE1vZHVsZXMvZ2FtZXBhZC9OYXZpZ2F0b3JHYW1lcGFkLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok5hdmlnYXRvckdhbWVwYWQ6OmZyb20pOgorICAgICAgICAqIE1vZHVsZXMvZ2Ft
ZXBhZC9kZXByZWNhdGVkL05hdmlnYXRvckdhbWVwYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TmF2aWdhdG9yR2FtZXBhZDo6ZnJvbSk6CisgICAgICAgICogTW9kdWxlcy9nZW9sb2NhdGlvbi9H
ZW9Ob3RpZmllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHZW9Ob3RpZmllcjo6R2VvTm90aWZp
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6R2VvTm90aWZpZXI6OnNldEZhdGFsRXJyb3IpOgorICAg
ICAgICAqIE1vZHVsZXMvZ2VvbG9jYXRpb24vR2VvTm90aWZpZXIuaDoKKyAgICAgICAgKFdlYkNv
cmU6Okdlb05vdGlmaWVyOjpjcmVhdGUpOgorICAgICAgICAqIE1vZHVsZXMvZ2VvbG9jYXRpb24v
R2VvbG9jYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb246OldhdGNoZXJz
OjphZGQpOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb246OmdldEN1cnJlbnRQb3NpdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbjo6d2F0Y2hQb3NpdGlvbik6CisgICAg
ICAgICogTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNvbnRyb2xsZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb25Db250cm9sbGVyOjp2aWV3U3RhdGVEaWRDaGFuZ2Up
OgorICAgICAgICAqIE1vZHVsZXMvZ2VvbG9jYXRpb24vR2VvcG9zaXRpb24uaDoKKyAgICAgICAg
KFdlYkNvcmU6Okdlb3Bvc2l0aW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R2VvcG9z
aXRpb246Okdlb3Bvc2l0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2dlb2xvY2F0aW9uL05hdmln
YXRvckdlb2xvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRvckdlb2xvY2F0
aW9uOjpmcm9tKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9ET01XaW5kb3dJbmRleGVk
RGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93SW5kZXhlZERhdGFiYXNl
Ojpmcm9tKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9Xb3JrZXJHbG9iYWxTY29wZUlu
ZGV4ZWREYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJHbG9iYWxTY29wZUlu
ZGV4ZWREYXRhYmFzZTo6ZnJvbSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50
L0lEQkFueUltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpJREJBbnk6OklE
QkFueSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkFueUltcGwuaDoK
KyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCQW55OjpjcmVhdGUpOgorICAgICAgICAq
IE1vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJEYXRhYmFzZUltcGwuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SURCQ2xpZW50OjpJREJEYXRhYmFzZTo6d2lsbENvbW1pdFRyYW5zYWN0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCRGF0YWJhc2U6OndpbGxBYm9ydFRyYW5z
YWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCRGF0YWJhc2U6OmZpcmVW
ZXJzaW9uQ2hhbmdlRXZlbnQpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9J
REJJbmRleEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpJREJJbmRleDo6
b3BlbkN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklEQkluZGV4OjpvcGVu
S2V5Q3Vyc29yKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCT2JqZWN0
U3RvcmVJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCT2JqZWN0U3Rv
cmU6Om9wZW5DdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpJREJPYmplY3RT
dG9yZTo6Z2V0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCT2JqZWN0U3RvcmU6
OmRlbGV0ZUZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCT2JqZWN0
U3RvcmU6OmNyZWF0ZUluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCT2Jq
ZWN0U3RvcmU6OmluZGV4KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURC
T3BlbkRCUmVxdWVzdEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpJREJP
cGVuREJSZXF1ZXN0OjpvblN1Y2Nlc3MpOgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpJ
REJPcGVuREJSZXF1ZXN0OjpvblVwZ3JhZGVOZWVkZWQpOgorICAgICAgICAqIE1vZHVsZXMvaW5k
ZXhlZGRiL2NsaWVudC9JREJSZXF1ZXN0SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJD
bGllbnQ6OklEQlJlcXVlc3Q6OmVucXVldWVFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpJREJD
bGllbnQ6OklEQlJlcXVlc3Q6OnNldFJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpJREJDbGll
bnQ6OklEQlJlcXVlc3Q6OnNldFJlc3VsdFRvU3RydWN0dXJlZENsb25lKToKKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCVHJhbnNhY3Rpb25JbXBsLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OklEQkNsaWVudDo6SURCVHJhbnNhY3Rpb246OmFib3J0KToKKyAgICAgICAgKFdl
YkNvcmU6OklEQkNsaWVudDo6SURCVHJhbnNhY3Rpb246OnNjaGVkdWxlT3BlcmF0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCVHJhbnNhY3Rpb246OmNvbW1pdCk6CisgICAg
ICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklEQlRyYW5zYWN0aW9uOjplbnF1ZXVlRXZlbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpJREJUcmFuc2FjdGlvbjo6Y3JlYXRlT2JqZWN0
U3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpJREJUcmFuc2FjdGlvbjo6Y3Jl
YXRlSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpJREJUcmFuc2FjdGlvbjo6
ZG9SZXF1ZXN0T3BlbkN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklEQlRy
YW5zYWN0aW9uOjppdGVyYXRlQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6
SURCVHJhbnNhY3Rpb246OnJlcXVlc3RHZXRSZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6SURC
Q2xpZW50OjpJREJUcmFuc2FjdGlvbjo6cmVxdWVzdEluZGV4UmVjb3JkKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQkNsaWVudDo6SURCVHJhbnNhY3Rpb246OnJlcXVlc3RDbGVhck9iamVjdFN0b3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCVHJhbnNhY3Rpb246OnJlcXVlc3RQ
dXRPckFkZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklEQlRyYW5zYWN0aW9uOjpk
ZWxldGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklEQlRyYW5z
YWN0aW9uOjpkZWxldGVJbmRleCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvbGVnYWN5
L0lEQkRhdGFiYXNlQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJh
Y2tlbmQ6OnByb2Nlc3NQZW5kaW5nT3BlbkNhbGxzKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4
ZWRkYi9sZWdhY3kvSURCRGF0YWJhc2VCYWNrZW5kLmg6CisgICAgICAgIChXZWJDb3JlOjpJREJE
YXRhYmFzZUJhY2tlbmQ6OnNldFBlbmRpbmdTZWNvbmRIYWxmT3Blbik6CisgICAgICAgICogTW9k
dWxlcy9pbmRleGVkZGIvbGVnYWN5L0xlZ2FjeUFueS5oOgorICAgICAgICAoV2ViQ29yZTo6TGVn
YWN5QW55OjpjcmVhdGUpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL2xlZ2FjeS9MZWdh
Y3lEYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lEYXRhYmFzZTo6ZW5xdWV1
ZUV2ZW50KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9sZWdhY3kvTGVnYWN5UmVxdWVz
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lSZXF1ZXN0OjplbnF1ZXVlRXZlbnQpOgor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL2xlZ2FjeS9MZWdhY3lUcmFuc2FjdGlvbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lUcmFuc2FjdGlvbjo6ZW5xdWV1ZUV2ZW50KToKKyAg
ICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OklEQlNlcnZlcjo6SURCU2VydmVyOjpwb3N0RGF0YWJhc2VUYXNrKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6SURCU2VydmVyOjpwb3N0RGF0YWJhc2VUYXNrUmVwbHkp
OgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlCYWNraW5nU3RvcmVU
cmFuc2FjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6Ok1lbW9yeUJhY2tp
bmdTdG9yZVRyYW5zYWN0aW9uOjppbmRleERlbGV0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6SURC
U2VydmVyOjpNZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbjo6b2JqZWN0U3RvcmVEZWxldGVk
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5QmFja2luZ1N0b3JlVHJhbnNh
Y3Rpb246Om9iamVjdFN0b3JlQ2xlYXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6
Ok1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uOjppbmRleENsZWFyZWQpOgorICAgICAgICAo
V2ViQ29yZTo6SURCU2VydmVyOjpNZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbjo6YWJvcnQp
OgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3Rv
cmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1vcnlJREJCYWNraW5nU3Rv
cmU6OmJlZ2luVHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1v
cnlJREJCYWNraW5nU3RvcmU6OmNyZWF0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQlNlcnZlcjo6TWVtb3J5SURCQmFja2luZ1N0b3JlOjpkZWxldGVPYmplY3RTdG9yZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6Ok1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6cmVzdG9y
ZU9iamVjdFN0b3JlRm9yVmVyc2lvbkNoYW5nZUFib3J0KToKKyAgICAgICAgKFdlYkNvcmU6OklE
QlNlcnZlcjo6TWVtb3J5SURCQmFja2luZ1N0b3JlOjpyZWdpc3Rlck9iamVjdFN0b3JlKToKKyAg
ICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SW5kZXguY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1vcnlJbmRleDo6b2JqZWN0U3RvcmVDbGVhcmVkKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5SW5kZXg6OnJlcGxhY2VJbmRleFZh
bHVlU3RvcmUpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlPYmpl
Y3RTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6Ok1lbW9yeU9iamVjdFN0
b3JlOjpjcmVhdGVJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6Ok1lbW9yeU9i
amVjdFN0b3JlOjptYXliZVJlc3RvcmVEZWxldGVkSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6
SURCU2VydmVyOjpNZW1vcnlPYmplY3RTdG9yZTo6ZGVsZXRlSW5kZXgpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCU2VydmVyOjpNZW1vcnlPYmplY3RTdG9yZTo6Y2xlYXIpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCU2VydmVyOjpNZW1vcnlPYmplY3RTdG9yZTo6cmVwbGFjZUtleVZhbHVlU3RvcmUp
OgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1vcnlPYmplY3RTdG9yZTo6cmVnaXN0
ZXJJbmRleCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NlcnZlck9wZW5E
QlJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTZXJ2ZXJPcGVuREJS
ZXF1ZXN0Ojpub3RpZmllZENvbm5lY3Rpb25zT2ZWZXJzaW9uQ2hhbmdlKToKKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6b3BlbkRhdGFiYXNlQ29ubmVj
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpw
ZXJmb3JtQ3VycmVudE9wZW5PcGVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVy
OjpVbmlxdWVJREJEYXRhYmFzZTo6c3RhcnRWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6bWF5YmVOb3RpZnlD
b25uZWN0aW9uc09mVmVyc2lvbkNoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6
OlVuaXF1ZUlEQkRhdGFiYXNlOjpjb25uZWN0aW9uQ2xvc2VkRnJvbUNsaWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjplbnF1ZXVlVHJhbnNhY3Rp
b24pOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6dGFr
ZU5leHRSdW5uYWJsZVRyYW5zYWN0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uOjplc3RhYmxpc2hUcmFuc2Fj
dGlvbik6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luZGV4S2V5LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkluZGV4S2V5Ojppc29sYXRlZENvcHkpOgorICAgICAgICAqIE1v
ZHVsZXMvbWVkaWFzZXNzaW9uL1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V2ViTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2V0UGxheWJhY2tUYXJnZXQpOgorICAg
ICAgICAqIE1vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFTb3VyY2U6OnNldFByaXZhdGVBbmRPcGVuKToKKyAgICAgICAgKiBNb2R1bGVz
L21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VC
dWZmZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXI6OlNvdXJjZUJ1
ZmZlcik6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFEZXZpY2VzOjpnZXRVc2VyTWVkaWEpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFEZXZpY2VzOjplbnVtZXJhdGVEZXZpY2VzKToKKyAgICAgICAgKiBNb2R1
bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlc1JlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFEZXZpY2VzUmVxdWVzdDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
RGV2aWNlc1JlcXVlc3Q6Ok1lZGlhRGV2aWNlc1JlcXVlc3QpOgorICAgICAgICAqIE1vZHVsZXMv
bWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJl
YW06OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbTo6TWVkaWFTdHJlYW0p
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW06OmFkZFRyYWNrKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhU3RyZWFtOjpkaWRSZW1vdmVUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVN0cmVhbTo6aW50ZXJuYWxBZGRUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0
cmVhbTo6aW50ZXJuYWxSZW1vdmVUcmFjayk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVh
bS9OYXZpZ2F0b3JNZWRpYURldmljZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9y
TWVkaWFEZXZpY2VzOjpmcm9tKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0Nv
bmZpZ3VyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UlRDQ29uZmlndXJhdGlvbjo6aW5p
dGlhbGl6ZSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEVE1GU2VuZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RUTUZTZW5kZXI6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpSVENEVE1GU2VuZGVyOjpSVENEVE1GU2VuZGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlJUQ0RUTUZTZW5kZXI6OnNjaGVkdWxlRGlzcGF0Y2hFdmVudCk6CisgICAgICAgICogTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSVENE
YXRhQ2hhbm5lbDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsOjpS
VENEYXRhQ2hhbm5lbCk6CisgICAgICAgIChXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbDo6c2NoZWR1
bGVEaXNwYXRjaEV2ZW50KToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0ljZUNh
bmRpZGF0ZUV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0ljZUNhbmRpZGF0ZUV2ZW50
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UlRDSWNlQ2FuZGlkYXRlRXZlbnQ6OlJUQ0lj
ZUNhbmRpZGF0ZUV2ZW50KToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJD
b25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1BlZXJDb25uZWN0aW9uOjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUGVlckNvbm5lY3Rpb246OlJUQ1BlZXJDb25uZWN0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1BlZXJDb25uZWN0aW9uOjphZGRUcmFjayk6Cisg
ICAgICAgIChXZWJDb3JlOjpSVENQZWVyQ29ubmVjdGlvbjo6cXVldWVkQ3JlYXRlT2ZmZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6UlRDUGVlckNvbm5lY3Rpb246OnF1ZXVlZENyZWF0ZUFuc3dlcik6
CisgICAgICAgIChXZWJDb3JlOjpSVENQZWVyQ29ubmVjdGlvbjo6cXVldWVkU2V0TG9jYWxEZXNj
cmlwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSVENQZWVyQ29ubmVjdGlvbjo6cXVldWVkU2V0
UmVtb3RlRGVzY3JpcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UlRDUGVlckNvbm5lY3Rpb246
OnF1ZXVlZEFkZEljZUNhbmRpZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpSVENQZWVyQ29ubmVj
dGlvbjo6c2V0Q29uZmlndXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSVENQZWVyQ29ubmVj
dGlvbjo6cHJpdmF0ZUdldFN0YXRzKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q1J0cFJlY2VpdmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFJlY2VpdmVyOjpSVENS
dHBSZWNlaXZlcik6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZl
ci5oOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwUmVjZWl2ZXI6OmNyZWF0ZSk6CisgICAgICAg
ICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UlRDUnRwU2VuZGVyOjpSVENSdHBTZW5kZXIpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDUnRwU2VuZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBTZW5kZXI6OmNy
ZWF0ZSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENUcmFja0V2ZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJUQ1RyYWNrRXZlbnQ6OmNyZWF0ZSk6CisgICAgICAgICogTW9k
dWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlVzZXJNZWRpYVJlcXVlc3Q6OnN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJNZWRpYVJl
cXVlc3Q6OlVzZXJNZWRpYVJlcXVlc3QpOgorICAgICAgICAqIE1vZHVsZXMvbmF2aWdhdG9yY29u
dGVudHV0aWxzL05hdmlnYXRvckNvbnRlbnRVdGlscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpw
cm92aWRlTmF2aWdhdG9yQ29udGVudFV0aWxzVG8pOgorICAgICAgICAqIE1vZHVsZXMvbmF2aWdh
dG9yY29udGVudHV0aWxzL05hdmlnYXRvckNvbnRlbnRVdGlscy5oOgorICAgICAgICAqIE1vZHVs
ZXMvbm90aWZpY2F0aW9ucy9ET01XaW5kb3dOb3RpZmljYXRpb25zLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRPTVdpbmRvd05vdGlmaWNhdGlvbnM6OmZyb20pOgorICAgICAgICAqIE1vZHVsZXMv
bm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Tm90aWZpY2F0aW9uQ2VudGVyOjp0aW1lckZpcmVkKToKKyAgICAgICAgKiBNb2R1bGVzL25vdGlm
aWNhdGlvbnMvV29ya2VyR2xvYmFsU2NvcGVOb3RpZmljYXRpb25zLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Oldvcmtlckdsb2JhbFNjb3BlTm90aWZpY2F0aW9uczo6ZnJvbSk6CisgICAgICAgICog
TW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50Lm1tOgorICAgICAgICAo
V2ViQ29yZTo6UXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJl
cik6CisgICAgICAgICogTW9kdWxlcy9wbHVnaW5zL1lvdVR1YmVQbHVnaW5SZXBsYWNlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpZb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQ6OmNyZWF0ZUVs
ZW1lbnRSZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpZb3VUdWJlUGx1Z2luUmVwbGFjZW1l
bnQ6Omluc3RhbGxSZXBsYWNlbWVudCk6CisgICAgICAgICogTW9kdWxlcy9xdW90YS9ET01XaW5k
b3dRdW90YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3dRdW90YTo6ZnJvbSk6Cisg
ICAgICAgICogTW9kdWxlcy9xdW90YS9OYXZpZ2F0b3JTdG9yYWdlUXVvdGEuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TmF2aWdhdG9yU3RvcmFnZVF1b3RhOjpmcm9tKToKKyAgICAgICAgKiBNb2R1
bGVzL3F1b3RhL1dvcmtlck5hdmlnYXRvclN0b3JhZ2VRdW90YS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXb3JrZXJOYXZpZ2F0b3JTdG9yYWdlUXVvdGE6OmZyb20pOgorICAgICAgICAqIE1vZHVs
ZXMvc3BlZWNoL0RPTVdpbmRvd1NwZWVjaFN5bnRoZXNpcy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpET01XaW5kb3dTcGVlY2hTeW50aGVzaXM6OmZyb20pOgorICAgICAgICAqIE1vZHVsZXMvc3Bl
ZWNoL1NwZWVjaFN5bnRoZXNpcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTcGVlY2hTeW50aGVz
aXM6OnNldFBsYXRmb3JtU3ludGhlc2l6ZXIpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8v
QXN5bmNBdWRpb0RlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNBdWRpb0RlY29k
ZXI6OmRlY29kZUFzeW5jKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OmFkZFJlYWN0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dDo6c3VzcGVuZCk6CisgICAgICAgIChXZWJDb3Jl
OjpBdWRpb0NvbnRleHQ6OnJlc3VtZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6
OmNsb3NlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpBdWRpb05vZGU6OmFkZElucHV0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1
ZGlvTm9kZTo6YWRkT3V0cHV0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU2No
ZWR1bGVkU291cmNlTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1NjaGVkdWxlZFNv
dXJjZU5vZGU6OmFkZEV2ZW50TGlzdGVuZXIpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8v
Q29udm9sdmVyTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb252b2x2ZXJOb2RlOjpzZXRC
dWZmZXIpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb0Rlc3Rp
bmF0aW9uTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUF1ZGlvRGVzdGlu
YXRpb25Ob2RlOjpNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlKToKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0UHJvY2Vzc29yTm9kZTo6YWRkRXZlbnRMaXN0ZW5lcik6CisgICAgICAgICogTW9k
dWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFz
ZTo6b3BlbkFuZFZlcmlmeVZlcnNpb24pOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6OnNj
aGVkdWxlVHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6OnNjaGVkdWxl
VHJhbnNhY3Rpb25TdGVwKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjptYXJrQXNEZWxl
dGVkQW5kQ2xvc2UpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6OnJ1blRyYW5zYWN0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjp0YWJsZU5hbWVzKToKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVGhyZWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRhdGFiYXNlVGhyZWFkOjpzY2hlZHVsZVRhc2spOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJh
c2VUaHJlYWQ6OnNjaGVkdWxlSW1tZWRpYXRlVGFzayk6CisgICAgICAgICogTW9kdWxlcy93ZWJk
YXRhYmFzZS9TUUxUcmFuc2FjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTUUxUcmFuc2Fj
dGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uOjpTUUxUcmFu
c2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTUUxUcmFuc2FjdGlvbjo6ZXhlY3V0ZVNRTCk6
CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbkJhY2tlbmQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rpb25CYWNrZW5kOjplbnF1ZXVlU3RhdGVt
ZW50QmFja2VuZCk6CisgICAgICAgIChXZWJDb3JlOjpTUUxUcmFuc2FjdGlvbkJhY2tlbmQ6OmV4
ZWN1dGVTUUwpOgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29j
a2V0Q2hhbm5lbENsaWVudFdyYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJs
ZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpkaWRSZWNlaXZlQmluYXJ5RGF0YSk6Cisg
ICAgICAgIChXZWJDb3JlOjpUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6
OnByb2Nlc3NQZW5kaW5nVGFza3MpOgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJT
b2NrZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0OjpkaWRSZWNlaXZlQmluYXJ5
RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OmRpc3BhdGNoT3JRdWV1ZUV2ZW50
KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjpwcm9jZXNzRnJhbWUpOgorICAgICAg
ICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXI6OmFkZFByb2Nl
c3Nvcik6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRIYW5kc2hha2U6OmFkZEV4dGVuc2lvblBy
b2Nlc3Nvcik6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsOjpQZWVyOjpkaWRSZWNlaXZlQmluYXJ5RGF0YSk6CisgICAgICAgICog
YWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFYT2Jq
ZWN0Q2FjaGU6Om5vdGlmaWNhdGlvblBvc3RUaW1lckZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6
OkFYT2JqZWN0Q2FjaGU6OnBhc3N3b3JkTm90aWZpY2F0aW9uUG9zdFRpbWVyRmlyZWQpOgorICAg
ICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmFyaWFMYWJlbGVkQnlUZXh0KToK
KyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6c2VsZWN0VGV4dCk6CisgICAgICAgICog
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5VGV4dDo6QWNjZXNzaWJpbGl0eVRleHQpOgorICAgICAgICAqIGJpbmRpbmdz
L2dvYmplY3QvRE9NT2JqZWN0Q2FjaGUuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0lEQkJp
bmRpbmdVdGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bWF5YmVDcmVhdGVJREJLZXlG
cm9tU2NyaXB0VmFsdWVBbmRLZXlQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OmdlbmVyYXRlSW5k
ZXhLZXlGb3JWYWx1ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNDcnlwdG9BbGdvcml0aG1E
aWN0aW9uYXJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUFlc0NiY1BhcmFtcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpjcmVhdGVBZXNLZXlHZW5QYXJhbXMpOgorICAgICAgICAoV2ViQ29y
ZTo6Y3JlYXRlSG1hY1BhcmFtcyk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVIbWFjS2V5UGFy
YW1zKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVJzYUtleUdlblBhcmFtcyk6CisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVSc2FPYWVwUGFyYW1zKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0
ZVJzYVNzYVBhcmFtcyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNDcnlwdG9LZXlTZXJpYWxp
emF0aW9uSldLLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUhNQUNQYXJhbWV0ZXJzKToK
KyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVJTQUtleVBhcmFtZXRlcnNXaXRoSGFzaCk6CisgICAg
ICAgIChXZWJDb3JlOjpKU0NyeXB0b0tleVNlcmlhbGl6YXRpb25KV0s6OnJlY29uY2lsZUFsZ29y
aXRobSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01Qcm9taXNlLmg6CisgICAgICAgIChX
ZWJDb3JlOjpET01Qcm9taXNlOjpET01Qcm9taXNlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U0RPTVdpbmRvd0Jhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3dCYXNlOjpx
dWV1ZVRhc2tUb0V2ZW50TG9vcCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dD
dXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3c6OnNldFRpbWVvdXQpOgor
ICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3c6OnNldEludGVydmFsKToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU0RPTVdyYXBwZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV3JhcHBl
cjo6SlNET01XcmFwcGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU01lc3NhZ2VFdmVudEN1
c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpoYW5kbGVJbml0TWVzc2FnZUV2ZW50KToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU1N1YnRsZUNyeXB0b0N1c3RvbS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpKU1N1YnRsZUNyeXB0bzo6ZW5jcnlwdCk6CisgICAgICAgIChXZWJDb3JlOjpKU1N1
YnRsZUNyeXB0bzo6ZGVjcnlwdCk6CisgICAgICAgIChXZWJDb3JlOjpKU1N1YnRsZUNyeXB0bzo6
c2lnbik6CisgICAgICAgIChXZWJDb3JlOjpKU1N1YnRsZUNyeXB0bzo6dmVyaWZ5KToKKyAgICAg
ICAgKFdlYkNvcmU6OkpTU3VidGxlQ3J5cHRvOjpkaWdlc3QpOgorICAgICAgICAoV2ViQ29yZTo6
SlNTdWJ0bGVDcnlwdG86OmdlbmVyYXRlS2V5KToKKyAgICAgICAgKFdlYkNvcmU6OmltcG9ydEtl
eSk6CisgICAgICAgIChXZWJDb3JlOjpKU1N1YnRsZUNyeXB0bzo6aW1wb3J0S2V5KToKKyAgICAg
ICAgKFdlYkNvcmU6OkpTU3VidGxlQ3J5cHRvOjpleHBvcnRLZXkpOgorICAgICAgICAoV2ViQ29y
ZTo6SlNTdWJ0bGVDcnlwdG86OndyYXBLZXkpOgorICAgICAgICAoV2ViQ29yZTo6SlNTdWJ0bGVD
cnlwdG86OnVud3JhcEtleSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNXb3JrZXJHbG9iYWxT
Y29wZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1dvcmtlckdsb2JhbFNjb3BlOjpz
ZXRUaW1lb3V0KToKKyAgICAgICAgKFdlYkNvcmU6OkpTV29ya2VyR2xvYmFsU2NvcGU6OnNldElu
dGVydmFsKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q2xvbmVEZXNlcmlhbGl6ZXI6OnJlYWRSU0FLZXkpOgorICAg
ICAgICAoV2ViQ29yZTo6Q2xvbmVEZXNlcmlhbGl6ZXI6OnJlYWRUZXJtaW5hbCk6CisgICAgICAg
IChXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSk6
CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZSk6CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgIChHZW5l
cmF0ZUhlYWRlcik6CisgICAgICAgIChHZW5lcmF0ZUltcGxlbWVudGF0aW9uKToKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkpTVGVzdEFjdGl2ZURPTU9iamVjdDo6SlNUZXN0QWN0aXZlRE9NT2Jq
ZWN0KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0aXZlRE9N
T2JqZWN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RBY3RpdmVET01PYmplY3Q6OmNyZWF0
ZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENsYXNzV2l0aEpT
QnVpbHRpbkNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdENsYXNzV2l0
aEpTQnVpbHRpbkNvbnN0cnVjdG9yOjpKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rv
cik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENsYXNzV2l0aEpT
QnVpbHRpbkNvbnN0cnVjdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RDbGFzc1dpdGhK
U0J1aWx0aW5Db25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZh
Y2VPYmplY3Q6OkpTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0KToK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tQ29uc3RydWN0
b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEN1c3Rv
bUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0OjpjcmVhdGUpOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21OYW1lZEdldHRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpKU1Rlc3RDdXN0b21OYW1lZEdldHRlcjo6SlNUZXN0Q3VzdG9tTmFtZWRH
ZXR0ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21O
YW1lZEdldHRlci5oOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXI6
OmNyZWF0ZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50
Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RXZlbnRDb25zdHJ1Y3Rv
cjo6SlNUZXN0RXZlbnRDb25zdHJ1Y3Rvcik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVz
dEV2ZW50Q29uc3RydWN0b3I6OmNyZWF0ZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEV2
ZW50VGFyZ2V0OjpKU1Rlc3RFdmVudFRhcmdldCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0Lmg6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RF
dmVudFRhcmdldDo6Y3JlYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0RXhjZXB0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEV4Y2VwdGlvbjo6
SlNUZXN0RXhjZXB0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0RXhjZXB0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RFeGNlcHRpb246OmNyZWF0
ZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRlSXNS
ZWFjaGFibGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJs
ZTo6SlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGU6OmNyZWF0ZSk6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
U1Rlc3RJbnRlcmZhY2U6OkpTVGVzdEludGVyZmFjZSk6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5oOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI6OkpTVGVzdE1lZGlhUXVlcnlMaXN0
TGlzdGVuZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNZWRp
YVF1ZXJ5TGlzdExpc3RlbmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RNZWRpYVF1ZXJ5
TGlzdExpc3RlbmVyOjpjcmVhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROYW1lZENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5h
bWVkQ29uc3RydWN0b3I6OkpTVGVzdE5hbWVkQ29uc3RydWN0b3IpOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZENvbnN0cnVjdG9yLmg6CisgICAgICAgIChX
ZWJDb3JlOjpKU1Rlc3ROYW1lZENvbnN0cnVjdG9yOjpjcmVhdGUpOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpT
VGVzdE5vZGU6OkpTVGVzdE5vZGUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROb2RlLmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5vbmRldGVybWluaXN0aWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Tm9uZGV0ZXJt
aW5pc3RpYzo6SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYyk6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5vbmRldGVybWluaXN0aWMuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkpTVGVzdE5vbmRldGVybWluaXN0aWM6OmNyZWF0ZSk6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPYmo6
OkpTVGVzdE9iaik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9i
ai5oOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0T2JqOjpjcmVhdGUpOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OkpTVGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnMpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmg6CisgICAgICAgIChXZWJDb3JlOjpKU1Rl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpjcmVhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkpTVGVzdE92ZXJyaWRlQnVpbHRpbnM6OkpTVGVzdE92ZXJyaWRlQnVpbHRpbnMpOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmg6
CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zOjpjcmVhdGUpOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFs
dWVJbnRlcmZhY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0U2VyaWFsaXplZFNjcmlw
dFZhbHVlSW50ZXJmYWNlOjpKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UpOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0
VmFsdWVJbnRlcmZhY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZUludGVyZmFjZTo6Y3JlYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0VHlwZWRl
ZnM6OkpTVGVzdFR5cGVkZWZzKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0VHlwZWRlZnMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdFR5cGVkZWZzOjpjcmVh
dGUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU2F0dHJpYnV0ZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpKU2F0dHJpYnV0ZTo6SlNhdHRyaWJ1dGUpOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU2F0dHJpYnV0ZS5oOgorICAgICAgICAoV2ViQ29y
ZTo6SlNhdHRyaWJ1dGU6OmNyZWF0ZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTcmVhZG9ubHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNyZWFkb25seTo6SlNyZWFk
b25seSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTcmVhZG9ubHkuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkpTcmVhZG9ubHk6OmNyZWF0ZSk6CisgICAgICAgICogYnJpZGdl
L2MvQ1J1bnRpbWVPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6Q1J1bnRpbWVP
YmplY3Q6OkNSdW50aW1lT2JqZWN0KToKKyAgICAgICAgKiBicmlkZ2UvYy9DUnVudGltZU9iamVj
dC5oOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6Q1J1bnRpbWVPYmplY3Q6OmNyZWF0ZSk6Cisg
ICAgICAgICogYnJpZGdlL2MvY19jbGFzcy5jcHA6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpD
Q2xhc3M6Om1ldGhvZE5hbWVkKToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OkNDbGFzczo6Zmll
bGROYW1lZCk6CisgICAgICAgICogYnJpZGdlL2MvY19pbnN0YW5jZS5jcHA6CisgICAgICAgIChK
U0M6OkJpbmRpbmdzOjpDSW5zdGFuY2U6OkNJbnN0YW5jZSk6CisgICAgICAgICogYnJpZGdlL2Mv
Y19pbnN0YW5jZS5oOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6Q0luc3RhbmNlOjpjcmVhdGUp
OgorICAgICAgICAqIGJyaWRnZS9qc2MvQnJpZGdlSlNDLmNwcDoKKyAgICAgICAgKEpTQzo6Qmlu
ZGluZ3M6OkFycmF5OjpBcnJheSk6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpJbnN0YW5jZTo6
SW5zdGFuY2UpOgorICAgICAgICAqIGJyaWRnZS9vYmpjL09iakNSdW50aW1lT2JqZWN0Lmg6Cisg
ICAgICAgIChKU0M6OkJpbmRpbmdzOjpPYmpDUnVudGltZU9iamVjdDo6Y3JlYXRlKToKKyAgICAg
ICAgKiBicmlkZ2Uvb2JqYy9vYmpjX2NsYXNzLm1tOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6
T2JqY0NsYXNzOjptZXRob2ROYW1lZCk6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpPYmpjQ2xh
c3M6OmZpZWxkTmFtZWQpOgorICAgICAgICAqIGJyaWRnZS9vYmpjL29iamNfaW5zdGFuY2UubW06
CisgICAgICAgIChPYmpjSW5zdGFuY2U6Ok9iamNJbnN0YW5jZSk6CisgICAgICAgIChPYmpjSW5z
dGFuY2U6OmNyZWF0ZSk6CisgICAgICAgICogYnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1tOgor
ICAgICAgICAoSlNDOjpCaW5kaW5nczo6T2JqY0FycmF5OjpPYmpjQXJyYXkpOgorICAgICAgICAq
IGJyaWRnZS9ydW50aW1lX29iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpSdW50
aW1lT2JqZWN0OjpSdW50aW1lT2JqZWN0KToKKyAgICAgICAgKiBicmlkZ2UvcnVudGltZV9vYmpl
Y3QuaDoKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9Db21iaW5lZEZpbHRlcnNBbHBoYWJl
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6VGVybUNyZWF0b3JU
cmFuc2xhdG9yOjp0cmFuc2xhdGUpOgorICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL0NvbWJp
bmVkVVJMRmlsdGVycy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6
QWN0aXZlU3VidHJlZTo6QWN0aXZlU3VidHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50
RXh0ZW5zaW9uczo6Z2VuZXJhdGVTdWZmaXhXaXRoUmV2ZXJzZVN1ZmZpeFRyZWUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OmdlbmVyYXRlTkZBRm9yU3VidHJlZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6Q29tYmluZWRVUkxGaWx0ZXJzOjpw
cm9jZXNzTkZBcyk6CisgICAgICAgICogY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lv
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6Q29udGVudEV4dGVu
c2lvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpDb250
ZW50RXh0ZW5zaW9uOjpDb250ZW50RXh0ZW5zaW9uKToKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5z
aW9ucy9Db250ZW50RXh0ZW5zaW9uQ29tcGlsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGVudEV4dGVuc2lvbnM6OmNvbXBpbGVSdWxlTGlzdCk6CisgICAgICAgICogY29udGVudGV4dGVu
c2lvbnMvQ29udGVudEV4dGVuc2lvblBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250
ZW50RXh0ZW5zaW9uczo6bG9hZEVuY29kZWRSdWxlcyk6CisgICAgICAgICogY29udGVudGV4dGVu
c2lvbnMvQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRlbnRFeHRlbnNpb25zOjpDb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQ6OmFkZENvbnRlbnRFeHRl
bnNpb24pOgorICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL0RGQUNvbWJpbmVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpERkFDb21iaW5lcjo6Y29tYmluZURG
QXMpOgorICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL0RGQUNvbWJpbmVyLmg6CisgICAgICAg
IChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6REZBQ29tYmluZXI6OmFkZERGQSk6CisgICAg
ICAgICogY29udGVudGV4dGVuc2lvbnMvSW1tdXRhYmxlTkZBTm9kZUJ1aWxkZXIuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpJbW11dGFibGVORkFOb2RlQnVpbGRlcjo6
SW1tdXRhYmxlTkZBTm9kZUJ1aWxkZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVu
c2lvbnM6OkltbXV0YWJsZU5GQU5vZGVCdWlsZGVyOjpvcGVyYXRvcj0pOgorICAgICAgICAqIGNv
bnRlbnRleHRlbnNpb25zL011dGFibGVSYW5nZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVu
dEV4dGVuc2lvbnM6Ok11dGFibGVSYW5nZTo6TXV0YWJsZVJhbmdlKToKKyAgICAgICAgKFdlYkNv
cmU6OkNvbnRlbnRFeHRlbnNpb25zOjpNdXRhYmxlUmFuZ2U6Om9wZXJhdG9yPSk6CisgICAgICAg
ICogY29udGVudGV4dGVuc2lvbnMvTXV0YWJsZVJhbmdlTGlzdC5oOgorICAgICAgICAoV2ViQ29y
ZTo6Q29udGVudEV4dGVuc2lvbnM6Ok11dGFibGVSYW5nZUxpc3Q6OmV4dGVuZCk6CisgICAgICAg
IChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6TXV0YWJsZVJhbmdlTGlzdDo6aW5zZXJ0QmV0
d2Vlbik6CisgICAgICAgICogY29udGVudGV4dGVuc2lvbnMvVGVybS5oOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGVudEV4dGVuc2lvbnM6OlRlcm06OlRlcm0pOgorICAgICAgICAoV2ViQ29yZTo6
Q29udGVudEV4dGVuc2lvbnM6OlRlcm06Om9wZXJhdG9yPSk6CisgICAgICAgIChXZWJDb3JlOjpD
b250ZW50RXh0ZW5zaW9uczo6VGVybTo6Z2VuZXJhdGVTdWJncmFwaEZvckF0b20pOgorICAgICAg
ICAqIGNyeXB0by9DcnlwdG9BbGdvcml0aG0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRv
QWxnb3JpdGhtOjplbmNyeXB0Rm9yV3JhcEtleSk6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9B
bGdvcml0aG06OmRlY3J5cHRGb3JVbndyYXBLZXkpOgorICAgICAgICAqIGNyeXB0by9DcnlwdG9L
ZXlQYWlyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0tleVBhaXI6OkNyeXB0b0tleVBh
aXIpOgorICAgICAgICAqIGNyeXB0by9DcnlwdG9LZXlQYWlyLmg6CisgICAgICAgIChXZWJDb3Jl
OjpDcnlwdG9LZXlQYWlyOjpjcmVhdGUpOgorICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0Ny
eXB0b0FsZ29yaXRobUFFU19DQkMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3Jp
dGhtQUVTX0NCQzo6ZW5jcnlwdCk6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1B
RVNfQ0JDOjpkZWNyeXB0KToKKyAgICAgICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdv
cml0aG1BRVNfS1cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtQUVTX0tX
OjplbmNyeXB0Rm9yV3JhcEtleSk6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1B
RVNfS1c6OmRlY3J5cHRGb3JVbndyYXBLZXkpOgorICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1z
L0NyeXB0b0FsZ29yaXRobUhNQUMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3Jp
dGhtSE1BQzo6c2lnbik6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1ITUFDOjp2
ZXJpZnkpOgorICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQUVT
X1BLQ1MxX3YxXzUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtUlNBRVNf
UEtDUzFfdjFfNTo6ZW5jcnlwdCk6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1S
U0FFU19QS0NTMV92MV81OjpkZWNyeXB0KToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29y
aXRobVJTQUVTX1BLQ1MxX3YxXzU6OmdlbmVyYXRlS2V5KToKKyAgICAgICAgKiBjcnlwdG8vYWxn
b3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNTo6c2lnbik6CisgICAgICAg
IChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNTo6dmVyaWZ5KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81OjpnZW5lcmF0
ZUtleSk6CisgICAgICAgICogY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBX09B
RVAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtUlNBX09BRVA6OmVuY3J5
cHQpOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtUlNBX09BRVA6OmRlY3J5cHQp
OgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtUlNBX09BRVA6OmdlbmVyYXRlS2V5
KToKKyAgICAgICAgKiBjcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobUFFU19DQkNNYWMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtQUVTX0NCQzo6cGxhdGZvcm1FbmNyeXB0
KToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobUFFU19DQkM6OnBsYXRmb3JtRGVj
cnlwdCk6CisgICAgICAgICogY3J5cHRvL21hYy9DcnlwdG9LZXlSU0FNYWMuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q3J5cHRvS2V5UlNBOjpnZW5lcmF0ZVBhaXIpOgorICAgICAgICAqIGNzcy9C
YXNpY1NoYXBlRnVuY3Rpb25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnZhbHVlRm9yQmFzaWNT
aGFwZSk6CisgICAgICAgIChXZWJDb3JlOjpiYXNpY1NoYXBlRm9yVmFsdWUpOgorICAgICAgICAq
IGNzcy9DU1NCYXNpY1NoYXBlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NCYXNpY1NoYXBl
UGF0aDo6Q1NTQmFzaWNTaGFwZVBhdGgpOgorICAgICAgICAqIGNzcy9DU1NCYXNpY1NoYXBlcy5o
OgorICAgICAgICAqIGNzcy9DU1NCb3JkZXJJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpj
cmVhdGVCb3JkZXJJbWFnZVZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NTQ2FsY3VsYXRpb25WYWx1
ZS5jcHA6CisgICAgICAgICogY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkNTU0NhbGNWYWx1ZTo6Q1NTQ2FsY1ZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NTQ29t
cHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnZhbHVlRm9yTmlu
ZVBpZWNlSW1hZ2VTbGljZSk6CisgICAgICAgIChXZWJDb3JlOjp2YWx1ZUZvck5pbmVQaWVjZUlt
YWdlUXVhZCk6CisgICAgICAgIChXZWJDb3JlOjpjb21wdXRlZFRyYW5zZm9ybSk6CisgICAgICAg
IChXZWJDb3JlOjpDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjp2YWx1ZUZvclNoYWRvdyk6CisgICAg
ICAgIChXZWJDb3JlOjpDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjp2YWx1ZUZvckZpbHRlcik6Cisg
ICAgICAgIChXZWJDb3JlOjp2YWx1ZUZvckdyaWRUcmFja0xpc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6dmFsdWVGb3JHcmlkUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6c2Nyb2xsU25hcFBv
aW50cyk6CisgICAgICAgIChXZWJDb3JlOjpzY3JvbGxTbmFwQ29vcmRpbmF0ZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6Z2V0V2lsbENoYW5nZVByb3BlcnR5VmFsdWUpOgorICAgICAgICAoV2ViQ29y
ZTo6Zm9udFZhcmlhbnRMaWdhdHVyZXNQcm9wZXJ0eVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6
OmZvbnRWYXJpYW50TnVtZXJpY1Byb3BlcnR5VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Zm9u
dFZhcmlhbnRFYXN0QXNpYW5Qcm9wZXJ0eVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OmZpbGxS
ZXBlYXRUb0NTU1ZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OmZpbGxTaXplVG9DU1NWYWx1ZSk6
CisgICAgICAgIChXZWJDb3JlOjpmb250VmFyaWFudEZyb21TdHlsZSk6CisgICAgICAgIChXZWJD
b3JlOjpDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKToKKyAgICAgICAgKiBj
c3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ3Jvc3NmYWRl
VmFsdWU6OmJsZW5kKToKKyAgICAgICAgKiBjc3MvQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NDdXJzb3JJbWFnZVZhbHVlOjpDU1NDdXJzb3JJbWFnZVZhbHVl
KToKKyAgICAgICAgKiBjc3MvQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5oOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTQ3Vyc29ySW1hZ2VWYWx1ZTo6Y3JlYXRlKToKKyAgICAgICAgKiBjc3MvQ1NTRmlsdGVy
SW1hZ2VWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NGaWx0ZXJJbWFnZVZhbHVlOjpp
bWFnZSk6CisgICAgICAgICogY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkNTU0ZpbHRlckltYWdlVmFsdWU6OmNyZWF0ZSk6CisgICAgICAgICogY3NzL0NTU0Zv
bnRGYWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlOjphZGRTb3VyY2UpOgor
ICAgICAgICAqIGNzcy9DU1NGb250RmFjZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZh
Y2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZTo6aW5zZXJ0RmVhdHVy
ZSk6CisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNTU0ZvbnRGYWNlU291cmNlOjpmb250KToKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZlYXR1
cmVWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmVhdHVyZVZhbHVlOjpDU1NG
b250RmVhdHVyZVZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZlYXR1cmVWYWx1ZS5oOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZlYXR1cmVWYWx1ZTo6Y3JlYXRlKToKKyAgICAgICAg
KiBjc3MvQ1NTRm9udFNlbGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZvbnRG
YWNlKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN0cnVjdEZhbWlseUZvbnRGYWNlcyk6CisgICAg
ICAgICogY3NzL0NTU0dyYW1tYXIueS5pbjoKKyAgICAgICAgKiBjc3MvQ1NTSW1hZ2VWYWx1ZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NJbWFnZVZhbHVlOjpjbG9uZUZvckNTU09NKToKKyAg
ICAgICAgKiBjc3MvQ1NTS2V5ZnJhbWVSdWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
S2V5ZnJhbWU6OlN0eWxlS2V5ZnJhbWUpOgorICAgICAgICAqIGNzcy9DU1NLZXlmcmFtZVJ1bGUu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlS2V5ZnJhbWU6OmNyZWF0ZSk6CisgICAgICAgICog
Y3NzL0NTU1BhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlRm9u
dEZhY2VWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlTWVkaWFRdWVy
eSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlU2l6ZXNBdHRyaWJ1dGUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpTb3VyY2VTaXplOjpTb3VyY2VTaXplKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6c291cmNlU2l6ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NQYXJzZXI6OmFkZEZpbGxWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6
OmFkZEFuaW1hdGlvblZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2U0
VmFsdWVzRmlsbFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2Uz
VmFsdWVzRmlsbFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VG
aWxsUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUZpbGxTaXpl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VEYXNoYm9hcmRSZWdpb25zKToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VDbGlwU2hhcGUpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUJhc2ljU2hhcGVQYXRoKToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1BhcnNlcjo6cGFyc2VTeXN0ZW1Gb250KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Bh
cnNlcjo6cGFyc2VCb3JkZXJJbWFnZVJlcGVhdCk6CisgICAgICAgIChXZWJDb3JlOjpCb3JkZXJJ
bWFnZVNsaWNlUGFyc2VDb250ZXh0Ojpjb21taXRCb3JkZXJJbWFnZVNsaWNlKToKKyAgICAgICAg
KFdlYkNvcmU6OkJvcmRlckltYWdlUXVhZFBhcnNlQ29udGV4dDo6Y29tbWl0Qm9yZGVySW1hZ2VR
dWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VCdWlsdGluRmlsdGVyQXJn
dW1lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VGb250RmVhdHVyZVRh
Zyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlRm9udFZhcmlhbnRMaWdhdHVy
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUZvbnRWYXJpYW50TnVtZXJp
Yyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlRm9udFZhcmlhbnRFYXN0QXNp
YW4pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpjcmVhdGVLZXlmcmFtZXNSdWxlKToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cmV3cml0ZVNwZWNpZmllcnMpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpjcmVhdGVQYWdlUnVsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NQYXJzZXI6OmNyZWF0ZVNlbGVjdG9yVmVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNT
U1BhcnNlcjo6cmVjeWNsZVNlbGVjdG9yVmVjdG9yKToKKyAgICAgICAgKiBjc3MvQ1NTUGFyc2Vy
VmFsdWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlclNlbGVjdG9yOjp+Q1NTUGFy
c2VyU2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyU2VsZWN0b3I6OmFkb3B0
U2VsZWN0b3JWZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyU2VsZWN0b3I6OnNl
dExhbmdBcmd1bWVudExpc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyU2VsZWN0b3I6
Omluc2VydFRhZ0hpc3RvcnkpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyU2VsZWN0b3I6
OmFwcGVuZFRhZ0hpc3RvcnkpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyU2VsZWN0b3I6
OnByZXBlbmRUYWdTZWxlY3Rvcik6CisgICAgICAgICogY3NzL0NTU1BhcnNlclZhbHVlcy5oOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyU2VsZWN0b3I6OnJlbGVhc2VTZWxlY3Rvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJTZWxlY3Rvcjo6c2V0VGFnSGlzdG9yeSk6CisgICAg
ICAgICogY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmg6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmlt
aXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NQcmltaXRp
dmVWYWx1ZU1hcHBpbmdzLmg6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTUHJpbWl0aXZlVmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NQcm9wZXJ0eS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eTo6d3JhcFZhbHVlSW5Db21tYVNlcGFyYXRlZExpc3Qp
OgorICAgICAgICAqIGNzcy9DU1NTZWdtZW50ZWRGb250RmFjZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDU1NTZWdtZW50ZWRGb250RmFjZTo6YXBwZW5kRm9udEZhY2UpOgorICAgICAgICAoV2Vi
Q29yZTo6YXBwZW5kRm9udFdpdGhJbnZhbGlkVW5pY29kZVJhbmdlSWZMb2FkaW5nKToKKyAgICAg
ICAgKiBjc3MvQ1NTU2VsZWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0b3I6
OnNldExhbmdBcmd1bWVudExpc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0b3I6OnNl
dFNlbGVjdG9yTGlzdCk6CisgICAgICAgICogY3NzL0NTU1N0eWxlU2hlZXQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTU3R5bGVTaGVldDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNT
U1N0eWxlU2hlZXQ6OkNTU1N0eWxlU2hlZXQpOgorICAgICAgICAqIGNzcy9DU1NWYWx1ZUxpc3Qu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhbHVlTGlzdDo6YXBwZW5kKToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1ZhbHVlTGlzdDo6cHJlcGVuZCk6CisgICAgICAgICogY3NzL0RvY3VtZW50UnVs
ZVNldHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRSdWxlU2V0czo6aW5pdFVzZXJT
dHlsZSk6CisgICAgICAgICogY3NzL0ZvbnRMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Rm9udExvYWRlcjo6c2NoZWR1bGVFdmVudCk6CisgICAgICAgICogY3NzL01lZGlhTGlzdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVF1ZXJ5U2V0OjpwYXJzZSk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVF1ZXJ5U2V0OjphZGQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFRdWVyeVNl
dDo6YWRkTWVkaWFRdWVyeSk6CisgICAgICAgICogY3NzL01lZGlhUXVlcnkuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFRdWVyeTo6TWVkaWFRdWVyeSk6CisgICAgICAgICogY3NzL1BhaXIu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlBhaXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQ
YWlyOjpQYWlyKToKKyAgICAgICAgKiBjc3MvUnVsZVNldC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSdWxlU2V0OjphZGRSZWdpb25SdWxlKToKKyAgICAgICAgKiBjc3MvUnVsZVNldC5oOgorICAg
ICAgICAoV2ViQ29yZTo6UnVsZVNldDo6UnVsZVNldFNlbGVjdG9yUGFpcjo6UnVsZVNldFNlbGVj
dG9yUGFpcik6CisgICAgICAgICogY3NzL1NWR0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpwYWludE9yZGVyKToKKyAgICAgICAgKiBjc3MvU291cmNl
U2l6ZUxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bWF0Y2gpOgorICAgICAgICAoV2ViQ29y
ZTo6cGFyc2VTaXplc0F0dHJpYnV0ZSk6CisgICAgICAgICogY3NzL1N0eWxlQnVpbGRlckN1c3Rv
bS5oOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVRleHRPckJv
eFNoYWRvd1ZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckN1c3RvbTo6YXBw
bHlWYWx1ZUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVCdWlsZGVyQ3VzdG9tOjph
cHBseVZhbHVlV2lsbENoYW5nZSk6CisgICAgICAgICogY3NzL1N0eWxlUmVzb2x2ZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6U3RhdGU6OnNldFN0eWxlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmFkZFRvTWF0Y2hlZFByb3BlcnRpZXNDYWNoZSk6
CisgICAgICAgICogY3NzL1N0eWxlUmVzb2x2ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
UmVzb2x2ZXI6OlN0YXRlOjpzZXRQYXJlbnRTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHls
ZVJlc29sdmVyOjpTdGF0ZTo6c2V0QXV0aG9yUm9sbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGVSZXNvbHZlcjo6U3RhdGU6OnNldFVzZXJSb2xsYmFjayk6CisgICAgICAgICogY3NzL1N0
eWxlUnVsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJ1bGU6OlN0eWxlUnVsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZVJ1bGU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZVJ1bGVQYWdlOjpTdHlsZVJ1bGVQYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUnVs
ZUZvbnRGYWNlOjpTdHlsZVJ1bGVGb250RmFjZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJ1
bGVHcm91cDo6d3JhcHBlckluc2VydFJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSdWxl
Vmlld3BvcnQ6OlN0eWxlUnVsZVZpZXdwb3J0KToKKyAgICAgICAgKiBjc3MvU3R5bGVSdWxlLmg6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJ1bGU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZVJ1bGU6OndyYXBwZXJBZG9wdFNlbGVjdG9yTGlzdCk6CisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZVJ1bGVGb250RmFjZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUnVs
ZVBhZ2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJ1bGVQYWdlOjp3cmFwcGVy
QWRvcHRTZWxlY3Rvckxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSdWxlVmlld3BvcnQ6
OmNyZWF0ZSk6CisgICAgICAgICogY3Nzaml0L1NlbGVjdG9yQ29tcGlsZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U2VsZWN0b3JDb21waWxlcjo6U2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpnZW5l
cmF0ZVNlbGVjdG9yQ2hlY2tlcik6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNvbXBpbGVy
OjpTZWxlY3RvckNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlRWxlbWVudE1hdGNoZXNTZWxlY3Rvckxp
c3QpOgorICAgICAgICAqIGRvbS9BY3RpdmVET01DYWxsYmFja01pY3JvdGFzay5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpBY3RpdmVET01DYWxsYmFja01pY3JvdGFzazo6QWN0aXZlRE9NQ2FsbGJh
Y2tNaWNyb3Rhc2spOgorICAgICAgICAqIGRvbS9BdHRyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkF0dHI6OmNsb25lTm9kZUludGVybmFsKToKKyAgICAgICAgKiBkb20vQ2hpbGRMaXN0TXV0YXRp
b25TY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDaGlsZExpc3RNdXRhdGlvbkFjY3VtdWxh
dG9yOjpDaGlsZExpc3RNdXRhdGlvbkFjY3VtdWxhdG9yKToKKyAgICAgICAgKiBkb20vQ29udGFp
bmVyTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250YWluZXJOb2RlOjppbnNlcnRCZWZv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6YXBwZW5kKToKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRhaW5lck5vZGU6OnByZXBlbmQpOgorICAgICAgICAqIGRvbS9EYXRhVHJh
bnNmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpEYXRhVHJhbnNmZXIp
OgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dDo6Y3JlYXRlTm9kZUl0ZXJhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpjcmVh
dGVUcmVlV2Fsa2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpsb2dFeGNlcHRpb25U
b0NvbnNvbGUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmNsb25lTm9kZUludGVybmFs
KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjplbnF1ZXVlV2luZG93RXZlbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmVucXVldWVEb2N1bWVudEV2ZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50OjplbnF1ZXVlT3ZlcmZsb3dFdmVudCk6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudDo6c2V0VHJhbnNmb3JtU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50OjphZGRNZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpwb3N0VGFz
ayk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cGVuZGluZ1Rhc2tzVGltZXJGaXJlZCk6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2VuZFdpbGxSZXZlYWxFZGdlRXZlbnRzSWZO
ZWVkZWQpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudEV2ZW50UXVldWUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnRFdmVudFF1ZXVlOjplbnF1ZXVlT3JEaXNwYXRjaFNjcm9sbEV2ZW50
KToKKyAgICAgICAgKiBkb20vRG9jdW1lbnRGcmFnbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudEZyYWdtZW50OjpjbG9uZU5vZGVJbnRlcm5hbCk6CisgICAgICAgICogZG9tL0Vs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRl
cmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmFkZFNoYWRvd1Jvb3QpOgorICAgICAg
ICAoV2ViQ29yZTo6RWxlbWVudDo6ZGlzcGF0Y2hGb2N1c0luRXZlbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6RWxlbWVudDo6ZGlzcGF0Y2hGb2N1c091dEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OkVsZW1lbnQ6OmRpc3BhdGNoRm9jdXNFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50
OjpkaXNwYXRjaEJsdXJFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpyZXNvbHZl
Q29tcHV0ZWRTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpzZXRCZWZvcmVQc2V1
ZG9FbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNldEFmdGVyUHNldWRvRWxl
bWVudCk6CisgICAgICAgICogZG9tL0VsZW1lbnRSYXJlRGF0YS5oOgorICAgICAgICAoV2ViQ29y
ZTo6RWxlbWVudFJhcmVEYXRhOjpzZXRTaGFkb3dSb290KToKKyAgICAgICAgKFdlYkNvcmU6OkVs
ZW1lbnRSYXJlRGF0YTo6c2V0QXR0cmlidXRlTWFwKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1l
bnRSYXJlRGF0YTo6c2V0Q29tcHV0ZWRTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50
UmFyZURhdGE6OnNldENsYXNzTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50UmFyZURh
dGE6OnNldERhdGFzZXQpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFJhcmVEYXRhOjpzZXRC
ZWZvcmVQc2V1ZG9FbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRSYXJlRGF0YTo6
c2V0QWZ0ZXJQc2V1ZG9FbGVtZW50KToKKyAgICAgICAgKiBkb20vRXZlbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RXZlbnQ6OnNldFRhcmdldCk6CisgICAgICAgICogZG9tL0V2ZW50VGFyZ2V0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50VGFyZ2V0OjphZGRFdmVudExpc3RlbmVyKToK
KyAgICAgICAgKiBkb20vRXh0ZW5zaW9uU3R5bGVTaGVldHMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RXh0ZW5zaW9uU3R5bGVTaGVldHM6OmFkZFVzZXJTdHlsZVNoZWV0KToKKyAgICAgICAgKFdl
YkNvcmU6OkV4dGVuc2lvblN0eWxlU2hlZXRzOjphZGRBdXRob3JTdHlsZVNoZWV0Rm9yVGVzdGlu
Zyk6CisgICAgICAgICogZG9tL0ZvY3VzRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9j
dXNFdmVudDo6Rm9jdXNFdmVudCk6CisgICAgICAgICogZG9tL0ZvY3VzRXZlbnQuaDoKKyAgICAg
ICAgKiBkb20vTWVzc2FnZUV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VFdmVu
dDo6TWVzc2FnZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VFdmVudDo6aW5pdE1l
c3NhZ2VFdmVudCk6CisgICAgICAgICogZG9tL01lc3NhZ2VFdmVudC5oOgorICAgICAgICAqIGRv
bS9NZXNzYWdlUG9ydC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlUG9ydDo6cG9zdE1l
c3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZVBvcnQ6OmRpc2VudGFuZ2xlKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VQb3J0OjplbnRhbmdsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpNZXNzYWdlUG9ydDo6ZGlzcGF0Y2hNZXNzYWdlcyk6CisgICAgICAgIChXZWJDb3JlOjpNZXNz
YWdlUG9ydDo6ZGlzZW50YW5nbGVQb3J0cyk6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlUG9y
dDo6ZW50YW5nbGVQb3J0cyk6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlUG9ydDo6YWRkRXZl
bnRMaXN0ZW5lcik6CisgICAgICAgICogZG9tL01pY3JvdGFza3MuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TWljcm90YXNrUXVldWU6OmFwcGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpNaWNyb3Rh
c2tRdWV1ZTo6cGVyZm9ybU1pY3JvdGFza0NoZWNrcG9pbnQpOgorICAgICAgICAqIGRvbS9NdXRh
dGlvbk9ic2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnF1ZXVlTXV0YXRpb25PYnNlcnZl
ckNvbXBvdW5kTWljcm90YXNrKToKKyAgICAgICAgKiBkb20vTmF0aXZlTm9kZUZpbHRlci5oOgor
ICAgICAgICAqIGRvbS9Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmJlZm9yZSk6
CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjphZnRlcik6CisgICAgICAgIChXZWJDb3JlOjpOb2Rl
OjpyZXBsYWNlV2l0aCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6aW52YWxpZGF0ZU5v
ZGVMaXN0QW5kQ29sbGVjdGlvbkNhY2hlcyk6CisgICAgICAgIChXZWJDb3JlOjp0cnlBZGRFdmVu
dExpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmFkZEV2ZW50TGlzdGVuZXIpOgor
ICAgICAgICAqIGRvbS9Ob2RlSXRlcmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZUl0
ZXJhdG9yOjpOb2RlSXRlcmF0b3IpOgorICAgICAgICAqIGRvbS9Ob2RlSXRlcmF0b3IuaDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok5vZGVJdGVyYXRvcjo6Y3JlYXRlKToKKyAgICAgICAgKiBkb20vUHJv
Y2Vzc2luZ0luc3RydWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlByb2Nlc3NpbmdJbnN0
cnVjdGlvbjo6c2V0Q1NTU3R5bGVTaGVldCk6CisgICAgICAgICogZG9tL1BzZXVkb0VsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UHNldWRvRWxlbWVudDo6ZGlkUmVjYWxjU3R5bGUpOgor
ICAgICAgICAqIGRvbS9TY29wZWRFdmVudFF1ZXVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNj
b3BlZEV2ZW50UXVldWU6OmVucXVldWVFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpTY29wZWRF
dmVudFF1ZXVlOjpkaXNwYXRjaEFsbEV2ZW50cyk6CisgICAgICAgICogZG9tL1NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4
dDo6cmVwb3J0RXhjZXB0aW9uKToKKyAgICAgICAgKiBkb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5oOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzazo6VGFz
ayk6CisgICAgICAgICogZG9tL1NlY3VyaXR5Q29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTZWN1cml0eUNvbnRleHQ6OnNldFNlY3VyaXR5T3JpZ2luUG9saWN5KToKKyAgICAgICAgKFdl
YkNvcmU6OlNlY3VyaXR5Q29udGV4dDo6c2V0Q29udGVudFNlY3VyaXR5UG9saWN5KToKKyAgICAg
ICAgKiBkb20vU2VjdXJpdHlPcmlnaW5Qb2xpY3kuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW5Qb2xpY3k6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9y
aWdpblBvbGljeTo6U2VjdXJpdHlPcmlnaW5Qb2xpY3kpOgorICAgICAgICAqIGRvbS9TZWxlY3Rv
clF1ZXJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yUXVlcnk6OlNlbGVjdG9yUXVl
cnkpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JRdWVyeUNhY2hlOjphZGQpOgorICAgICAg
ICAqIGRvbS9TaGFkb3dSb290LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1Jvb3Q6OlNo
YWRvd1Jvb3QpOgorICAgICAgICAqIGRvbS9TaGFkb3dSb290Lmg6CisgICAgICAgICogZG9tL1Ns
b3RBc3NpZ25tZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNsb3RBc3NpZ25tZW50OjpTbG90
QXNzaWdubWVudCk6CisgICAgICAgICogZG9tL1N0eWxlZEVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGVkRWxlbWVudDo6cmVidWlsZFByZXNlbnRhdGlvbkF0dHJpYnV0ZVN0eWxl
KToKKyAgICAgICAgKiBkb20vVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0OjpzcGxp
dFRleHQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dDo6cmVwbGFjZVdob2xlVGV4dCk6CisgICAg
ICAgICogZG9tL1RyYXZlcnNhbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb2RlSXRlcmF0b3JC
YXNlOjpOb2RlSXRlcmF0b3JCYXNlKToKKyAgICAgICAgKiBkb20vVHJlZVdhbGtlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpUcmVlV2Fsa2VyOjpUcmVlV2Fsa2VyKToKKyAgICAgICAgKFdlYkNv
cmU6OlRyZWVXYWxrZXI6OnRyYXZlcnNlU2libGluZ3MpOgorICAgICAgICAqIGRvbS9UcmVlV2Fs
a2VyLmg6CisgICAgICAgIChXZWJDb3JlOjpUcmVlV2Fsa2VyOjpjcmVhdGUpOgorICAgICAgICAq
IGRvbS9UeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkRvdWJsZVR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+
OjpEb3VibGVUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkRvdWJsZVR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50VHlw
ZT46OkRvdWJsZVR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcik6CisgICAgICAgICogZG9t
L2RlZmF1bHQvUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWw6OkV2ZW50RGF0YTo6RXZlbnREYXRhKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Q2hhbm5lbDo6Y3JlYXRlQ2hhbm5lbCk6CisgICAg
ICAgIChXZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5uZWw6OnBvc3RNZXNzYWdlVG9SZW1vdGUpOgor
ICAgICAgICAqIGRvbS9kZWZhdWx0L1BsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsLmg6CisgICAg
ICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbDo6RXZlbnREYXRhOjpjaGFu
bmVscyk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbDo6TWVz
c2FnZVBvcnRRdWV1ZTo6YXBwZW5kQW5kQ2hlY2tFbXB0eSk6CisgICAgICAgICogZWRpdGluZy9B
cHBlbmROb2RlQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBlbmROb2RlQ29tbWFu
ZDo6QXBwZW5kTm9kZUNvbW1hbmQpOgorICAgICAgICAqIGVkaXRpbmcvQXBwZW5kTm9kZUNvbW1h
bmQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGVuZE5vZGVDb21tYW5kOjpjcmVhdGUpOgorICAg
ICAgICAqIGVkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q29tcG9zaXRlRWRpdENvbW1hbmQ6OnJlcGxhY2VUZXh0SW5Ob2RlKToKKyAgICAgICAgKFdl
YkNvcmU6OkNvbXBvc2l0ZUVkaXRDb21tYW5kOjptb3ZlUGFyYWdyYXBocyk6CisgICAgICAgICog
ZWRpdGluZy9EZWxldGVGcm9tVGV4dE5vZGVDb21tYW5kLmg6CisgICAgICAgIChXZWJDb3JlOjpE
ZWxldGVGcm9tVGV4dE5vZGVDb21tYW5kOjpjcmVhdGUpOgorICAgICAgICAqIGVkaXRpbmcvRWRp
dGluZ1N0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFwcGx5VGV4dERlY29yYXRpb25DaGFu
Z2VUb1ZhbHVlTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0aW5nU3R5bGU6Om92ZXJyaWRl
VHlwaW5nU3R5bGVBdCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0aW5nU3R5bGU6OmNvbmZsaWN0
c1dpdGhJbmxpbmVTdHlsZU9mRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjptZXJnZVRleHRE
ZWNvcmF0aW9uVmFsdWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQ2hhbmdlOjpTdHlsZUNo
YW5nZSk6CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RWRpdG9yOjppbnNlcnREaWN0YXRpb25QaHJhc2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRv
cjo6c2V0VGV4dEFzQ2hpbGRPZkVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjph
cHBseVN0eWxlVG9TZWxlY3Rpb24pOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yQ29tbWFuZC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjphcHBseUNvbW1hbmRUb0ZyYW1lKToKKyAgICAgICAgKFdl
YkNvcmU6OmV4ZWN1dGVJbnNlcnROb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVJbnNl
cnRIb3Jpem9udGFsUnVsZSk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlSW5zZXJ0SW1hZ2Up
OgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZVN0cmlrZXRocm91Z2gpOgorICAgICAgICAoV2Vi
Q29yZTo6ZXhlY3V0ZVVuZGVybGluZSk6CisgICAgICAgICogZWRpdGluZy9JbnNlcnRJbnRvVGV4
dE5vZGVDb21tYW5kLmg6CisgICAgICAgIChXZWJDb3JlOjpJbnNlcnRJbnRvVGV4dE5vZGVDb21t
YW5kOjpjcmVhdGUpOgorICAgICAgICAqIGVkaXRpbmcvSW5zZXJ0Tm9kZUJlZm9yZUNvbW1hbmQu
aDoKKyAgICAgICAgKFdlYkNvcmU6Okluc2VydE5vZGVCZWZvcmVDb21tYW5kOjpjcmVhdGUpOgor
ICAgICAgICAqIGVkaXRpbmcvTWVyZ2VJZGVudGljYWxFbGVtZW50c0NvbW1hbmQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TWVyZ2VJZGVudGljYWxFbGVtZW50c0NvbW1hbmQ6OmRvQXBwbHkpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVyZ2VJZGVudGljYWxFbGVtZW50c0NvbW1hbmQ6OmRvVW5hcHBs
eSk6CisgICAgICAgICogZWRpdGluZy9Nb3ZlU2VsZWN0aW9uQ29tbWFuZC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNb3ZlU2VsZWN0aW9uQ29tbWFuZDo6ZG9BcHBseSk6CisgICAgICAgICogZWRp
dGluZy9SZW1vdmVOb2RlQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW1vdmVOb2Rl
Q29tbWFuZDo6UmVtb3ZlTm9kZUNvbW1hbmQpOgorICAgICAgICAqIGVkaXRpbmcvUmVtb3ZlTm9k
ZUNvbW1hbmQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbW92ZU5vZGVDb21tYW5kOjpjcmVhdGUp
OgorICAgICAgICAqIGVkaXRpbmcvUmVwbGFjZURlbGV0ZUZyb21UZXh0Tm9kZUNvbW1hbmQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVwbGFjZURlbGV0ZUZyb21UZXh0Tm9kZUNvbW1hbmQ6OlJl
cGxhY2VEZWxldGVGcm9tVGV4dE5vZGVDb21tYW5kKToKKyAgICAgICAgKiBlZGl0aW5nL1JlcGxh
Y2VEZWxldGVGcm9tVGV4dE5vZGVDb21tYW5kLmg6CisgICAgICAgICogZWRpdGluZy9SZXBsYWNl
SW5zZXJ0SW50b1RleHROb2RlQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXBsYWNl
SW5zZXJ0SW50b1RleHROb2RlQ29tbWFuZDo6UmVwbGFjZUluc2VydEludG9UZXh0Tm9kZUNvbW1h
bmQpOgorICAgICAgICAqIGVkaXRpbmcvUmVwbGFjZUluc2VydEludG9UZXh0Tm9kZUNvbW1hbmQu
aDoKKyAgICAgICAgKiBlZGl0aW5nL1JlcGxhY2VOb2RlV2l0aFNwYW5Db21tYW5kLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnN3YXBJbk5vZGVQcmVzZXJ2aW5nQXR0cmlidXRlc0FuZENoaWxkcmVu
KToKKyAgICAgICAgKiBlZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmg6CisgICAgICAg
IChXZWJDb3JlOjpSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6Y3JlYXRlKToKKyAgICAgICAgKiBl
ZGl0aW5nL1NwbGl0RWxlbWVudENvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3BsaXRF
bGVtZW50Q29tbWFuZDo6ZXhlY3V0ZUFwcGx5KToKKyAgICAgICAgKFdlYkNvcmU6OlNwbGl0RWxl
bWVudENvbW1hbmQ6OmRvVW5hcHBseSk6CisgICAgICAgICogZWRpdGluZy9UZXh0Q2hlY2tpbmdI
ZWxwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZmluZEdyYW1tYXRpY2FsRXJyb3JzKToKKyAg
ICAgICAgKFdlYkNvcmU6OmNoZWNrVGV4dE9mUGFyYWdyYXBoKToKKyAgICAgICAgKiBlZGl0aW5n
L1RleHRJdGVyYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0SXRlcmF0b3JDb3B5YWJs
ZVRleHQ6OnNldCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0SXRlcmF0b3I6OmhhbmRsZVJlcGxh
Y2VkRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0SXRlcmF0b3I6OmVtaXRUZXh0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNpbXBsaWZpZWRCYWNrd2FyZHNUZXh0SXRlcmF0b3I6OmhhbmRs
ZVRleHROb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9j
YXRpb25BbmRMZW5ndGgpOgorICAgICAgICAqIGVkaXRpbmcvV3JhcENvbnRlbnRzSW5EdW1teVNw
YW5Db21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldyYXBDb250ZW50c0luRHVtbXlTcGFu
Q29tbWFuZDo6ZXhlY3V0ZUFwcGx5KToKKyAgICAgICAgKFdlYkNvcmU6OldyYXBDb250ZW50c0lu
RHVtbXlTcGFuQ29tbWFuZDo6ZG9VbmFwcGx5KToKKyAgICAgICAgKiBlZGl0aW5nL2lvcy9EaWN0
YXRpb25Db21tYW5kSU9TLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpY3RhdGlvbkNvbW1hbmRJ
T1M6OkRpY3RhdGlvbkNvbW1hbmRJT1MpOgorICAgICAgICAqIGVkaXRpbmcvaW9zL0RpY3RhdGlv
bkNvbW1hbmRJT1MuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpY3RhdGlvbkNvbW1hbmRJT1M6OmNy
ZWF0ZSk6CisgICAgICAgICogZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6RWRpdG9yOjpXZWJDb250ZW50UmVhZGVyOjpyZWFkVVJMKToKKyAgICAgICAgKFdlYkNv
cmU6OkVkaXRvcjo6Y3JlYXRlRnJhZ21lbnRGb3JJbWFnZVJlc291cmNlQW5kQWRkUmVzb3VyY2Up
OgorICAgICAgICAqIGVkaXRpbmcvbWFjL0VkaXRvck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6
OkVkaXRvcjo6V2ViQ29udGVudFJlYWRlcjo6cmVhZEZpbGVuYW1lcyk6CisgICAgICAgIChXZWJD
b3JlOjpFZGl0b3I6OldlYkNvbnRlbnRSZWFkZXI6OnJlYWRVUkwpOgorICAgICAgICAoV2ViQ29y
ZTo6RWRpdG9yOjpjcmVhdGVGcmFnbWVudEZvckltYWdlUmVzb3VyY2VBbmRBZGRSZXNvdXJjZSk6
CisgICAgICAgICogZWRpdGluZy9tYXJrdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZmlsbENv
bnRhaW5lckZyb21TdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRnJhZ21lbnRGcm9t
VGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpyZXBsYWNlQ2hpbGRyZW5XaXRoRnJhZ21lbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6cmVwbGFjZUNoaWxkcmVuV2l0aFRleHQpOgorICAgICAgICAqIGZp
bGVhcGkvQXN5bmNGaWxlU3RyZWFtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNhbGxPbkZpbGVU
aHJlYWQpOgorICAgICAgICAqIGZpbGVhcGkvQmxvYi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpC
bG9iOjpCbG9iKToKKyAgICAgICAgKiBmaWxlYXBpL0Jsb2IuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkJsb2I6OmNyZWF0ZSk6CisgICAgICAgICogZmlsZWFwaS9GaWxlTGlzdC5oOgorICAgICAgICAo
V2ViQ29yZTo6RmlsZUxpc3Q6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlTGlzdDo6
RmlsZUxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZUxpc3Q6OmFwcGVuZCk6CisgICAgICAg
ICogZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkJsb2JSZWdpc3RyeUNvbnRleHQ6OkJsb2JSZWdpc3RyeUNvbnRleHQpOgorICAgICAgICAoV2Vi
Q29yZTo6VGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKToKKyAgICAgICAg
KiBmaWxlYXBpL1dlYktpdEJsb2JCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJsb2JC
dWlsZGVyOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6QmxvYkJ1aWxkZXI6OmZpbmFsaXpl
KToKKyAgICAgICAgKiBoaXN0b3J5L0JhY2tGb3J3YXJkQ29udHJvbGxlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpCYWNrRm9yd2FyZENvbnRyb2xsZXI6OkJhY2tGb3J3YXJkQ29udHJvbGxlcik6
CisgICAgICAgIChXZWJDb3JlOjpCYWNrRm9yd2FyZENvbnRyb2xsZXI6OmFkZEl0ZW0pOgorICAg
ICAgICAqIGhpc3RvcnkvQmFja0ZvcndhcmRMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJh
Y2tGb3J3YXJkTGlzdDo6YWRkSXRlbSk6CisgICAgICAgICogaGlzdG9yeS9DYWNoZWRGcmFtZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRGcmFtZTo6c2V0Q2FjaGVkRnJhbWVQbGF0Zm9y
bURhdGEpOgorICAgICAgICAqIGhpc3RvcnkvSGlzdG9yeUl0ZW0uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SGlzdG9yeUl0ZW06OnNldFN0YXRlT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Okhp
c3RvcnlJdGVtOjphZGRDaGlsZEl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6SGlzdG9yeUl0ZW06
OnNldENoaWxkSXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpIaXN0b3J5SXRlbTo6c2V0Rm9ybURh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6SGlzdG9yeUl0ZW06OnNldFJlZGlyZWN0VVJMcyk6Cisg
ICAgICAgICogaGlzdG9yeS9QYWdlQ2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZUNh
Y2hlOjp0YWtlKToKKyAgICAgICAgKiBodG1sL0Jhc2VCdXR0b25JbnB1dFR5cGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6QmFzZUJ1dHRvbklucHV0VHlwZTo6Y3JlYXRlSW5wdXRSZW5kZXJlcik6
CisgICAgICAgICogaHRtbC9CYXNlQ2hvb3Nlck9ubHlEYXRlQW5kVGltZUlucHV0VHlwZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpCYXNlQ2hvb3Nlck9ubHlEYXRlQW5kVGltZUlucHV0VHlwZTo6
Y3JlYXRlU2hhZG93U3VidHJlZSk6CisgICAgICAgICogaHRtbC9Db2xvcklucHV0VHlwZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDb2xvcklucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZSk6
CisgICAgICAgICogaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGVFBEaXJlY3RvcnlEb2N1bWVudFBhcnNlcjo6YXBwZW5kRW50cnkpOgorICAgICAgICAo
V2ViQ29yZTo6RlRQRGlyZWN0b3J5RG9jdW1lbnRQYXJzZXI6OmNyZWF0ZVRERm9yRmlsZW5hbWUp
OgorICAgICAgICAoV2ViQ29yZTo6RlRQRGlyZWN0b3J5RG9jdW1lbnRQYXJzZXI6OmNyZWF0ZUJh
c2ljRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RlRQRGlyZWN0b3J5RG9jdW1lbnRQYXJz
ZXI6OmFwcGVuZCk6CisgICAgICAgICogaHRtbC9GaWxlSW5wdXRUeXBlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZpbGVJbnB1dFR5cGU6OmNyZWF0ZUlucHV0UmVuZGVyZXIpOgorICAgICAgICAo
V2ViQ29yZTo6RmlsZUlucHV0VHlwZTo6Y3JlYXRlRmlsZUxpc3QpOgorICAgICAgICAqIGh0bWwv
Rm9ybUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybUNvbnRyb2xsZXI6OmZv
cm1TdGF0ZXNGcm9tU3RhdGVWZWN0b3IpOgorICAgICAgICAqIGh0bWwvSFRNTEFwcGxldEVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEFwcGxldEVsZW1lbnQ6OmNyZWF0ZUVsZW1l
bnRSZW5kZXJlcik6CisgICAgICAgICogaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTEF0dGFjaG1lbnRFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVu
ZGVyZXIpOgorICAgICAgICAqIGh0bWwvSFRNTEJSRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MQlJFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAqIGh0
bWwvSFRNTEJvZHlFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxCb2R5RWxlbWVu
dDo6Y29sbGVjdFN0eWxlRm9yUHJlc2VudGF0aW9uQXR0cmlidXRlKToKKyAgICAgICAgKiBodG1s
L0hUTUxCdXR0b25FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxCdXR0b25FbGVt
ZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAqIGh0bWwvSFRNTENhbnZhc0Vs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6OmNyZWF0ZUVs
ZW1lbnRSZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVudDo6c2V0
SW1hZ2VCdWZmZXIpOgorICAgICAgICAqIGh0bWwvSFRNTENvbGxlY3Rpb24uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTENvbGxlY3Rpb246OnVwZGF0ZU5hbWVkRWxlbWVudENhY2hlKToKKyAg
ICAgICAgKiBodG1sL0hUTUxDb2xsZWN0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ29s
bGVjdGlvbjo6c2V0TmFtZWRJdGVtQ2FjaGUpOgorICAgICAgICAqIGh0bWwvSFRNTERldGFpbHNF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxEZXRhaWxzRWxlbWVudDo6Y3JlYXRl
RWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxEZXRhaWxzRWxlbWVudDo6
ZGlkQWRkVXNlckFnZW50U2hhZG93Um9vdCk6CisgICAgICAgICogaHRtbC9IVE1MRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudDo6cG9wdWxhdGVFdmVudEhhbmRsZXJO
YW1lTWFwKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50OjpzZXRJbm5lclRleHQpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6Cisg
ICAgICAgICogaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxGaWVsZFNldEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAgICog
aHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxG
b3JtQ29udHJvbEVsZW1lbnQ6OmRpc3BhdGNoQmx1ckV2ZW50KToKKyAgICAgICAgKiBodG1sL0hU
TUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3Jt
Q29udHJvbHNDb2xsZWN0aW9uOjp1cGRhdGVOYW1lZEVsZW1lbnRDYWNoZSk6CisgICAgICAgICog
aHRtbC9IVE1MRnJhbWVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGcmFtZUVs
ZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAgICogaHRtbC9IVE1MRnJhbWVT
ZXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGcmFtZVNldEVsZW1lbnQ6OmNy
ZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAgICogaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSUZyYW1lRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJl
bmRlcmVyKToKKyAgICAgICAgKiBodG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTEltYWdlRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKToKKyAgICAg
ICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElu
cHV0RWxlbWVudDo6dXBkYXRlVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVt
ZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAqIGh0bWwvSFRNTEtleWdlbkVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEtleWdlbkVsZW1lbnQ6OkhUTUxLZXln
ZW5FbGVtZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxMaW5rRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MTGlua0VsZW1lbnQ6OnNldENTU1N0eWxlU2hlZXQpOgorICAgICAgICAq
IGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFF
bGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudDo6YWRkRXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVk
aWFFbGVtZW50OjpzZXRXaXJlbGVzc1BsYXliYWNrVGFyZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyQ3JlYXRlUmVzb3VyY2VMb2FkZXIpOgorICAg
ICAgICAqIGh0bWwvSFRNTE1ldGVyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
TWV0ZXJFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE1ldGVyRWxlbWVudDo6ZGlkQWRkVXNlckFnZW50U2hhZG93Um9vdCk6CisgICAgICAgICog
aHRtbC9IVE1MT3B0aW9uRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MT3B0aW9u
RWxlbWVudDo6Y3JlYXRlRm9ySlNDb25zdHJ1Y3Rvcik6CisgICAgICAgICogaHRtbC9IVE1MUGx1
Z0luRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MUGx1Z0luRWxlbWVudDo6Y3Jl
YXRlRWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAgKiBodG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFBsdWdJbkltYWdlRWxlbWVudDo6Y3JlYXRl
RWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAgKiBodG1sL0hUTUxQcm9ncmVzc0VsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTFByb2dyZXNzRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJl
bmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQcm9ncmVzc0VsZW1lbnQ6OmRpZEFkZFVz
ZXJBZ2VudFNoYWRvd1Jvb3QpOgorICAgICAgICAqIGh0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5k
ZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6ZGlzcGF0Y2hGb2N1
c0V2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50OjpkaXNwYXRjaEJs
dXJFdmVudCk6CisgICAgICAgICogaHRtbC9IVE1MU3VtbWFyeUVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTFN1bW1hcnlFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIpOgor
ICAgICAgICAqIGh0bWwvSFRNTFRhYmxlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MVGFibGVFbGVtZW50OjppbnNlcnRSb3cpOgorICAgICAgICAqIGh0bWwvSFRNTFRhYmxlUm93
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGFibGVSb3dFbGVtZW50OjppbnNl
cnRDZWxsKToKKyAgICAgICAgKiBodG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTFRleHRBcmVhRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKToK
KyAgICAgICAgKiBodG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjpkaXNwYXRjaEZvY3VzRXZlbnQp
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OmRpc3BhdGNo
Qmx1ckV2ZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKToKKyAg
ICAgICAgKiBodG1sL0hUTUxXQlJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxX
QlJFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAqIGh0bWwvSW1hZ2VE
b2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURvY3VtZW50OjpjcmVhdGVEb2N1
bWVudFN0cnVjdHVyZSk6CisgICAgICAgICogaHRtbC9JbWFnZUlucHV0VHlwZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZUlucHV0VHlwZTo6Y3JlYXRlSW5wdXRSZW5kZXJlcik6CisgICAg
ICAgICogaHRtbC9JbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlOjpj
cmVhdGVJbnB1dFJlbmRlcmVyKToKKyAgICAgICAgKiBodG1sL01lZGlhRG9jdW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFEb2N1bWVudFBhcnNlcjo6Y3JlYXRlRG9jdW1lbnRTdHJ1
Y3R1cmUpOgorICAgICAgICAqIGh0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYUVsZW1lbnRTZXNzaW9uOjpzZXRQbGF5YmFja1RhcmdldCk6CisgICAg
ICAgICogaHRtbC9QbHVnaW5Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5E
b2N1bWVudFBhcnNlcjo6Y3JlYXRlRG9jdW1lbnRTdHJ1Y3R1cmUpOgorICAgICAgICAqIGh0bWwv
UmFuZ2VJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2VJbnB1dFR5cGU6OmNy
ZWF0ZVNoYWRvd1N1YnRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2VJbnB1dFR5cGU6OmNy
ZWF0ZUlucHV0UmVuZGVyZXIpOgorICAgICAgICAqIGh0bWwvUnVieUVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UnVieUVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAg
ICAgICogaHRtbC9SdWJ5VGV4dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UnVieVRl
eHRFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAqIGh0bWwvU2VhcmNo
SW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlYXJjaElucHV0VHlwZTo6Y3JlYXRl
SW5wdXRSZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpTZWFyY2hJbnB1dFR5cGU6OmNyZWF0
ZVNoYWRvd1N1YnRyZWUpOgorICAgICAgICAqIGh0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVsZElucHV0VHlwZTo6Y3JlYXRlSW5wdXRSZW5kZXJl
cik6CisgICAgICAgICogaHRtbC9WYWxpZGF0aW9uTWVzc2FnZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpWYWxpZGF0aW9uTWVzc2FnZTo6YnVpbGRCdWJibGVUcmVlKToKKyAgICAgICAgKiBodG1s
L2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpjcmVhdGVMaW5lYXJHcmFkaWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmNyZWF0ZVJhZGlhbEdyYWRpZW50
KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OkxSVUltYWdlQnVm
ZmVyQ2FjaGU6OmltYWdlQnVmZmVyKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9BdG9taWNIVE1M
VG9rZW4uaDoKKyAgICAgICAgKFdlYkNvcmU6OkF0b21pY0hUTUxUb2tlbjo6QXRvbWljSFRNTFRv
a2VuKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9uU2l0ZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MQ29uc3RydWN0aW9uU2l0ZTo6ZXhlY3V0ZVF1ZXVlZFRhc2tz
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb25zdHJ1Y3Rpb25TaXRlOjppbnNlcnRUZXh0Tm9k
ZSk6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxEb2N1bWVudFBhcnNlcjo6YXBwZW5kKToKKyAgICAgICAgKiBodG1s
L3BhcnNlci9IVE1MRWxlbWVudFN0YWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVt
ZW50U3RhY2s6OkVsZW1lbnRSZWNvcmQ6OkVsZW1lbnRSZWNvcmQpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTEVsZW1lbnRTdGFjazo6cHVzaENvbW1vbik6CisgICAgICAgICogaHRtbC9wYXJzZXIv
SFRNTEVsZW1lbnRTdGFjay5oOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1lbnRTdGFjazo6
RWxlbWVudFJlY29yZDo6cmVsZWFzZU5leHQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1l
bnRTdGFjazo6RWxlbWVudFJlY29yZDo6c2V0TmV4dCk6CisgICAgICAgICogaHRtbC9wYXJzZXIv
SFRNTFByZWxvYWRTY2FubmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRva2VuUHJlbG9hZFNj
YW5uZXI6OnNjYW4pOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFByZWxvYWRTY2FubmVyOjpzY2Fu
KToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MUmVzb3VyY2VQcmVsb2FkZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTFJlc291cmNlUHJlbG9hZGVyOjpwcmVsb2FkKToKKyAgICAgICAg
KiBodG1sL3BhcnNlci9IVE1MU3RhY2tJdGVtLmg6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU3Rh
Y2tJdGVtOjpIVE1MU3RhY2tJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTdGFja0l0ZW06
OmNyZWF0ZSk6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFRva2VuLmg6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MVG9rZW46OnJlbGVhc2VEb2N0eXBlRGF0YSk6CisgICAgICAgICogaHRtbC9w
YXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVp
bGRlcjo6dGFrZVNjcmlwdFRvUHJvY2Vzcyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1
aWxkZXI6OnByb2Nlc3NGYWtlU3RhcnRUYWcpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVC
dWlsZGVyOjppbnNlcnRQaG9uZU51bWJlckxpbmspOgorICAgICAgICAqIGh0bWwvcGFyc2VyL1Rl
eHREb2N1bWVudFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RG9jdW1lbnRQYXJz
ZXI6OmFwcGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RG9jdW1lbnRQYXJzZXI6Omluc2Vy
dEZha2VQcmVFbGVtZW50KToKKyAgICAgICAgKiBodG1sL3BhcnNlci9YU1NBdWRpdG9yRGVsZWdh
dGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WFNTQXVkaXRvckRlbGVnYXRlOjpnZW5lcmF0ZVZp
b2xhdGlvblJlcG9ydCk6CisgICAgICAgICogaHRtbC9zaGFkb3cvRGV0YWlsc01hcmtlckNvbnRy
b2wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGV0YWlsc01hcmtlckNvbnRyb2w6OmNyZWF0ZUVs
ZW1lbnRSZW5kZXJlcik6CisgICAgICAgICogaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVu
dHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sVGltZWxpbmVDb250YWluZXJF
bGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFD
b250cm9sVm9sdW1lU2xpZGVyQ29udGFpbmVyRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVy
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbENsb3NlZENhcHRpb25zVHJhY2tMaXN0
RWxlbWVudDo6cmVidWlsZFRyYWNrTGlzdE1lbnUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFD
b250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6
OmNyZWF0ZVRleHRUcmFja1JlcHJlc2VudGF0aW9uSW1hZ2UpOgorICAgICAgICAqIGh0bWwvc2hh
ZG93L01lZGlhQ29udHJvbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sczo6
Y3JlYXRlVGV4dFRyYWNrRGlzcGxheSk6CisgICAgICAgICogaHRtbC9zaGFkb3cvTWVkaWFDb250
cm9sc0FwcGxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHNBcHBsZTo6Y3Jl
YXRlQ29udHJvbHMpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sc0FwcGxlOjpzaG93
Q2xvc2VkQ2FwdGlvblRyYWNrTGlzdCk6CisgICAgICAgICogaHRtbC9zaGFkb3cvTWV0ZXJTaGFk
b3dFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1ldGVySW5uZXJFbGVtZW50OjpjcmVh
dGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAqIGh0bWwvc2hhZG93L1Byb2dyZXNzU2hhZG93
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQcm9ncmVzc0lubmVyRWxlbWVudDo6Y3Jl
YXRlRWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2xpZGVyVGh1bWI6OlJlbmRlclNs
aWRlclRodW1iKToKKyAgICAgICAgKFdlYkNvcmU6OlNsaWRlclRodW1iRWxlbWVudDo6Y3JlYXRl
RWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNsaWRlckNvbnRhaW5lckVsZW1l
bnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAgICogaHRtbC9zaGFkb3cvVGV4dENv
bnRyb2xJbm5lckVsZW1lbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDb250cm9sSW5u
ZXJDb250YWluZXI6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpU
ZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAg
ICAgICogaHRtbC9zaGFkb3cvbWFjL0ltYWdlQ29udHJvbHNCdXR0b25FbGVtZW50TWFjLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlQ29udHJvbHNCdXR0b246OlJlbmRlckltYWdl
Q29udHJvbHNCdXR0b24pOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VDb250cm9sc0J1dHRvbkVs
ZW1lbnRNYWM6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAgICogaHRtbC9zaGFkb3cv
bWFjL0ltYWdlQ29udHJvbHNSb290RWxlbWVudE1hYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJJbWFnZUNvbnRyb2xzOjpSZW5kZXJJbWFnZUNvbnRyb2xzKToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlQ29udHJvbHNSb290RWxlbWVudDo6bWF5YmVDcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VDb250cm9sc1Jvb3RFbGVtZW50TWFjOjpjcmVhdGVFbGVtZW50UmVuZGVyZXIp
OgorICAgICAgICAqIGh0bWwvdHJhY2svVlRUQ3VlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlZU
VEN1ZUJveDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAgKiBodG1sL3RyYWNrL1dl
YlZUVEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViVlRURWxlbWVudDo6Y2xvbmVF
bGVtZW50V2l0aG91dEF0dHJpYnV0ZXNBbmRDaGlsZHJlbik6CisgICAgICAgICogaHRtbC90cmFj
ay9XZWJWVFRQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViVlRUVHJlZUJ1aWxkZXI6
OmNvbnN0cnVjdFRyZWVGcm9tVG9rZW4pOgorICAgICAgICAqIGluc3BlY3Rvci9Db21tYW5kTGlu
ZUFQSUhvc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29tbWFuZExpbmVBUElIb3N0OjppbnNw
ZWN0SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpDb21tYW5kTGluZUFQSUhvc3Q6OmFkZEluc3Bl
Y3RlZE9iamVjdCk6CisgICAgICAgICogaW5zcGVjdG9yL0RPTUVkaXRvci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpET01FZGl0b3I6Okluc2VydEJlZm9yZUFjdGlvbjo6SW5zZXJ0QmVmb3JlQWN0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUVkaXRvcjo6UmVwbGFjZUNoaWxkTm9kZUFjdGlv
bjo6UmVwbGFjZUNoaWxkTm9kZUFjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpET01FZGl0b3I6
Omluc2VydEJlZm9yZSk6CisgICAgICAgIChXZWJDb3JlOjpET01FZGl0b3I6OnNldE91dGVySFRN
TCk6CisgICAgICAgIChXZWJDb3JlOjpET01FZGl0b3I6OnJlcGxhY2VDaGlsZCk6CisgICAgICAg
ICogaW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01Q
YXRjaFN1cHBvcnQ6OmNyZWF0ZURpZ2VzdCk6CisgICAgICAgIChXZWJDb3JlOjpET01QYXRjaFN1
cHBvcnQ6OnJlbW92ZUNoaWxkQW5kTW92ZVRvTmV3KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6Z2V0RnJhbWVzV2l0aE1hbmlmZXN0cyk6CisgICAg
ICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckNTU0FnZW50OjpnZXRNYXRjaGVkU3R5bGVzRm9yTm9kZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6YWRkUnVsZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JDU1NBZ2VudDo6Z2V0U3VwcG9ydGVkQ1NTUHJvcGVydGllcyk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0U3VwcG9ydGVkU3lzdGVtRm9udEZhbWlseU5h
bWVzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpnZXROYW1lZEZsb3dD
b2xsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpidWlsZEFy
cmF5Rm9yTWF0Y2hlZFJ1bGVMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0Fn
ZW50OjpidWlsZEFycmF5Rm9yUmVnaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JD
U1NBZ2VudDo6YnVpbGRPYmplY3RGb3JOYW1lZEZsb3cpOgorICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JDb25zb2xlSW5zdHJ1bWVudGF0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmFkZE1lc3NhZ2VUb0NvbnNvbGUpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjb25zb2xlQ291bnQpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzdG9wQ29uc29sZVRpbWluZyk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNvbnNvbGVUaW1lU3Rh
bXApOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6Okluc3BlY3RvckNvbnRyb2xsZXIpOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JET01BZ2VudDo6cHVzaE5vZGVQYXRoVG9Gcm9udGVuZCk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6aGlnaGxpZ2h0UmVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6aGlnaGxpZ2h0UXVhZCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JET01BZ2VudDo6aW5uZXJIaWdobGlnaHRRdWFkKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpoaWdobGlnaHRTZWxlY3Rvcik6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRPYmplY3RGb3JOb2RlKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpidWlsZEFycmF5Rm9yUHNldWRvRWxlbWVudHMp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yRXZl
bnRMaXN0ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRP
YmplY3RGb3JBY2Nlc3NpYmlsaXR5UHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JET01BZ2VudDo6ZGlkQ29tbWl0TG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JET01BZ2VudDo6ZGlkSW5zZXJ0RE9NTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JET01BZ2VudDo6c3R5bGVBdHRyaWJ1dGVJbnZhbGlkYXRlZCk6CisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6ZGlkSW52YWxpZGF0ZVN0eWxlQXR0cik6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50Ojp3aWxsSW5zZXJ0RE9NTm9kZSk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50Ojp3aWxsUmVtb3Zl
RE9NTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50Ojp3
aWxsTW9kaWZ5RE9NQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01EZWJ1Z2dl
ckFnZW50OjpwYXVzZU9uTmF0aXZlRXZlbnRJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JET01EZWJ1Z2dlckFnZW50Ojp3aWxsU2VuZFhNTEh0dHBSZXF1ZXN0KToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6Z2V0RE9NU3RvcmFnZUl0ZW1zKToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JEYXRhYmFzZUFnZW50OjpkaWRPcGVuRGF0YWJhc2UpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6ZXhlY3V0ZVNRTCk6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckRhdGFiYXNlUmVzb3VyY2U6OmJpbmQpOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JEYXRhYmFzZVJlc291cmNlOjpzZXREYXRhYmFzZSk6CisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbCk6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckhpc3RvcnkuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9ySGlzdG9yeTo6cGVyZm9ybSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3RvckluZGV4ZWREQkFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckluZGV4
ZWREQkFnZW50OjpyZXF1ZXN0RGF0YWJhc2VOYW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JJbmRleGVkREJBZ2VudDo6cmVxdWVzdERhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckluZGV4ZWREQkFnZW50OjpyZXF1ZXN0RGF0YSk6CisgICAgICAgIChXZWJDb3Jl
OjpDbGVhck9iamVjdFN0b3JlTGlzdGVuZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpD
bGVhck9iamVjdFN0b3JlTGlzdGVuZXI6OkNsZWFyT2JqZWN0U3RvcmVMaXN0ZW5lcik6CisgICAg
ICAgIChXZWJDb3JlOjpDbGVhck9iamVjdFN0b3JlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2xlYXJPYmplY3RTdG9yZTo6Q2xlYXJPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JJbmRleGVkREJBZ2VudDo6Y2xlYXJPYmplY3RTdG9yZSk6CisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmFkZE1lc3NhZ2VUb0NvbnNvbGVJbXBsKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkT3BlbkRhdGFiYXNl
SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNlc3Np
b25DcmVhdGVkSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OnNlc3Npb25Mb2FkZWRJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6c2Vzc2lvbk1vZGlmaWVkSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OnNlZ21lbnRDcmVhdGVkSW1wbCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnNlZ21lbnRDb21wbGV0ZWRJbXBsKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2VnbWVudExvYWRlZElt
cGwpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaDoKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkT3BlbkRhdGFiYXNl
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2Vzc2lvbkNy
ZWF0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzZXNz
aW9uTG9hZGVkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
c2Vzc2lvbk1vZGlmaWVkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6c2VnbWVudENyZWF0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpzZWdtZW50Q29tcGxldGVkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6c2VnbWVudExvYWRlZCk6CisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3RvckxheWVyVHJlZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckxh
eWVyVHJlZUFnZW50OjpyZWFzb25zRm9yQ29tcG9zaXRpbmdMYXllcik6CisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpidWls
ZE9iamVjdEZvclJlc291cmNlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRPYmpl
Y3RGb3JDYWNoZWRSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3Jr
QWdlbnQ6OmJ1aWxkSW5pdGlhdG9yT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ck5ldHdvcmtBZ2VudDo6d2lsbFNlbmRXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0KToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6ZGlkUmVjZWl2ZVdlYlNvY2tldEhh
bmRzaGFrZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2Vu
dDo6ZGlkUmVjZWl2ZVdlYlNvY2tldEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ck5ldHdvcmtBZ2VudDo6ZGlkU2VuZFdlYlNvY2tldEZyYW1lKToKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JPdmVy
bGF5OjpoaWdobGlnaHROb2RlTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JPdmVy
bGF5OjpoaWdobGlnaHRRdWFkKToKKyAgICAgICAgKFdlYkNvcmU6OmJ1aWxkT2JqZWN0Rm9ySGln
aGxpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OmJ1aWxkT2JqZWN0Rm9yRmxvd1JlZ2lvbnMpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yT3ZlcmxheTo6ZHJhd1BhaW50UmVjdHMpOgorICAg
ICAgICAoV2ViQ29yZTo6YnVpbGRBcnJheUZvclJlbmRlcmVyRnJhZ21lbnRzKToKKyAgICAgICAg
KFdlYkNvcmU6OmJ1aWxkT2JqZWN0Rm9yU2hhcGVPdXRzaWRlKToKKyAgICAgICAgKFdlYkNvcmU6
OmJ1aWxkT2JqZWN0Rm9yRWxlbWVudERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
T3ZlcmxheTo6YnVpbGRIaWdobGlnaHRPYmplY3RGb3JOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3Rvck92ZXJsYXk6OmJ1aWxkT2JqZWN0Rm9ySGlnaGxpZ2h0ZWROb2Rlcyk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JPdmVybGF5OjpyZXNldCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JPdmVybGF5OjpldmFsdWF0ZUluT3ZlcmxheSk6CisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQ
YWdlQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yRnJhbWVUcmVlKToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5zcGVjdG9yUmVwbGF5QWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRJbnNwZWN0
b3JPYmplY3RGb3JTZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6ZUlucHV0VG9K
U09ORnVuY3Rvcjo6b3BlcmF0b3IoKSk6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVJbnB1
dFRvSlNPTkZ1bmN0b3I6OnJldHVyblZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OmJ1aWxkSW5z
cGVjdG9yT2JqZWN0Rm9yU2VnbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXBs
YXlBZ2VudDo6c3dpdGNoU2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXBs
YXlBZ2VudDo6aW5zZXJ0U2Vzc2lvblNlZ21lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yUmVwbGF5QWdlbnQ6OnJlbW92ZVNlc3Npb25TZWdtZW50KToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvclJlcGxheUFnZW50OjpnZXRTZXNzaW9uRGF0YSk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JSZXBsYXlBZ2VudDo6Z2V0U2VnbWVudERhdGEpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFzQ1NTUnVs
ZUxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGU6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZTo6YnVpbGRPYmplY3RGb3JTdHlsZSk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZTo6YnVpbGRBcnJheUZvckNvbXB1dGVkU3R5bGUp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGU6OnN0eWxlV2l0aFByb3BlcnRpZXMp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGVTaGVldDo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvclN0eWxlU2hlZXQ6Okluc3BlY3RvclN0eWxlU2hlZXQpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGVTaGVldDo6YnVpbGRPYmplY3RGb3JTdHls
ZVNoZWV0KToKKyAgICAgICAgKFdlYkNvcmU6OmJ1aWxkT2JqZWN0Rm9yU2VsZWN0b3JIZWxwZXIp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGVTaGVldDo6YnVpbGRPYmplY3RGb3JS
dWxlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclN0eWxlU2hlZXQ6OmVuc3VyZVNvdXJj
ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGVTaGVldDo6YnVpbGRBcnJh
eUZvclJ1bGVMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclN0eWxlU2hlZXQ6OmNv
bGxlY3RGbGF0UnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGVTaGVldEZv
cklubGluZVN0eWxlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGVT
aGVldEZvcklubGluZVN0eWxlOjpJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGUpOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnN0YXJ0UHJvZmlsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRp
bWVsaW5lQWdlbnQ6OmFkZFJlY29yZFRvVGltZWxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yVGltZWxpbmVBZ2VudDo6YXBwZW5kUmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvclRpbWVsaW5lQWdlbnQ6OnNlbmRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JUaW1lbGluZUFnZW50OjpjcmVhdGVSZWNvcmRFbnRyeSk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpwdXNoQ3VycmVudFJlY29yZCk6CisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
TmV0d29ya1Jlc291cmNlc0RhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291
cmNlc0RhdGE6OmFkZFJlc291cmNlU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
TmV0d29ya1Jlc291cmNlc0RhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJj
ZXNEYXRhOjpSZXNvdXJjZURhdGE6OnNldERlY29kZXIpOgorICAgICAgICAoV2ViQ29yZTo6TmV0
d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6c2V0QnVmZmVyKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvVGltZWxpbmVSZWNvcmRGYWN0b3J5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmJ1
aWxkSW5zcGVjdG9yT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OmJ1aWxkUHJvZmlsZUluc3Bl
Y3Rvck9iamVjdCk6CisgICAgICAgICogaW5zcGVjdG9yL1dlYkluamVjdGVkU2NyaXB0TWFuYWdl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJJbmplY3RlZFNjcmlwdE1hbmFnZXI6OldlYklu
amVjdGVkU2NyaXB0TWFuYWdlcik6CisgICAgICAgICogbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEZpbHRlcjo6Y3JlYXRlSWZFbmFibGVkKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXI6OkNvbnRlbnRGaWx0ZXIpOgorICAgICAgICAq
IGxvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGU6OmFwcGVuZEVudHJ5KToKKyAg
ICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnRMb2FkZXI6OnN1YnJlc291cmNlcyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExv
YWRlcjo6aW5zdGFsbENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcik6CisgICAgICAgICogbG9h
ZGVyL0RvY3VtZW50TG9hZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6
c2V0UXVpY2tMb29rSGFuZGxlKToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6
bWFrZUNyb3NzT3JpZ2luQWNjZXNzUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dFRocmVhZGFibGVMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgICogbG9hZGVy
L0hpc3RvcnlDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okhpc3RvcnlDb250cm9s
bGVyOjp1cGRhdGVCYWNrRm9yd2FyZExpc3RDbGlwcGVkQXRUYXJnZXQpOgorICAgICAgICAoV2Vi
Q29yZTo6SGlzdG9yeUNvbnRyb2xsZXI6OnB1c2hTdGF0ZSk6CisgICAgICAgICogbG9hZGVyL01l
ZGlhUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZXNvdXJjZUxv
YWRlcjo6TWVkaWFSZXNvdXJjZUxvYWRlcik6CisgICAgICAgICogbG9hZGVyL05hdmlnYXRpb25T
Y2hlZHVsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdGlvblNjaGVkdWxlcjo6dGlt
ZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0aW9uU2NoZWR1bGVyOjpzY2hlZHVs
ZSk6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0aW9uU2NoZWR1bGVyOjpjYW5jZWwpOgorICAg
ICAgICAqIGxvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KToKKyAg
ICAgICAgKiBsb2FkZXIvUG9saWN5Q2FsbGJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6UG9s
aWN5Q2FsbGJhY2s6OnNldCk6CisgICAgICAgICogbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UG9saWN5Q2hlY2tlcjo6Y2hlY2tOYXZpZ2F0aW9uUG9saWN5KToK
KyAgICAgICAgKFdlYkNvcmU6OlBvbGljeUNoZWNrZXI6OmNoZWNrTmV3V2luZG93UG9saWN5KToK
KyAgICAgICAgKFdlYkNvcmU6OlBvbGljeUNoZWNrZXI6OmNoZWNrQ29udGVudFBvbGljeSk6Cisg
ICAgICAgICogbG9hZGVyL1BvbGljeUNoZWNrZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBvbGlj
eUNoZWNrZXI6OnNldENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcik6CisgICAgICAgICogbG9h
ZGVyL1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVy
Ojp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAqIGxvYWRlci9UaHJlYWRhYmxlTG9hZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGFibGVMb2FkZXJPcHRpb25zOjpUaHJlYWRhYmxl
TG9hZGVyT3B0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRhYmxlTG9hZGVyT3B0aW9u
czo6aXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZUdyb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6
QXBwbGljYXRpb25DYWNoZUdyb3VwKToKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9jZi9MZWdh
Y3lXZWJBcmNoaXZlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVdlYkFyY2hpdmU6OmNy
ZWF0ZSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkQ1NTU3R5bGVTaGVldDo6c2F2ZVBhcnNlZFN0eWxlU2hl
ZXQpOgorICAgICAgICAqIGxvYWRlci9pY29uL0ljb25EYXRhYmFzZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJY29uRGF0YWJhc2U6OnN5bmNUaHJlYWRNYWluTG9vcCk6CisgICAgICAgICogbWF0
aG1sL01hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKToKKyAg
ICAgICAgKiBtYXRobWwvTWF0aE1MTWF0aEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TWF0aE1MTWF0aEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAgICogbWF0
aG1sL01hdGhNTE1lbmNsb3NlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNYXRoTUxN
ZW5jbG9zZUVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAgICogbWF0aG1s
L01hdGhNTFNlbGVjdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWF0aE1MU2VsZWN0
RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAgKiBtYXRobWwvTWF0aE1M
VGV4dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWF0aE1MVGV4dEVsZW1lbnQ6OmNy
ZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAgICogcGFnZS9DYXB0aW9uVXNlclByZWZlcmVu
Y2VzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OnVwZGF0
ZUNhcHRpb25TdHlsZVNoZWV0T3ZlcmlkZSk6CisgICAgICAgICogcGFnZS9ET01UaW1lci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpET01UaW1lcjo6RE9NVGltZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6RE9NVGltZXI6Omluc3RhbGwpOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBvc3RNZXNzYWdlVGltZXI6OlBvc3RNZXNzYWdlVGltZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6UG9zdE1lc3NhZ2VUaW1lcjo6ZXZlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6RE9NV2luZG93Ojpwb3N0TWVzc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6
OnNldFRpbWVvdXQpOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93OjpzZXRJbnRlcnZhbCk6
CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OmFkZEV2ZW50TGlzdGVuZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6RE9NV2luZG93OjpzaG93TW9kYWxEaWFsb2cpOgorICAgICAgICAqIHBhZ2Uv
RGVidWdQYWdlT3ZlcmxheXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW91c2VXaGVlbFJlZ2lv
bk92ZXJsYXk6OnVwZGF0ZVJlZ2lvbik6CisgICAgICAgIChXZWJDb3JlOjpOb25GYXN0U2Nyb2xs
YWJsZVJlZ2lvbk92ZXJsYXk6OnVwZGF0ZVJlZ2lvbik6CisgICAgICAgIChXZWJDb3JlOjpEZWJ1
Z1BhZ2VPdmVybGF5czo6ZW5zdXJlUmVnaW9uT3ZlcmxheUZvckZyYW1lKToKKyAgICAgICAgKiBw
YWdlL0RyYWdDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRvY3VtZW50RnJhZ21l
bnRGcm9tRHJhZ0RhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OmNvbmNs
dWRlRWRpdERyYWcpOgorICAgICAgICAqIHBhZ2UvRnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWU6OnNldFZpZXcpOgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6c2VuZFJlc2l6ZUV2ZW50SWZOZWVkZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVWaWV3Ojp1cGRhdGVPdmVyZmxvd1N0YXR1cyk6CisgICAgICAgICog
cGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OlBhZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6UGFnZTo6c2V0U2Vzc2lvblN0b3JhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UGFn
ZTo6c2V0U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6
OnNldFZpc2l0ZWRMaW5rU3RvcmUpOgorICAgICAgICAqIHBhZ2UvUGFnZUNvbnNvbGVDbGllbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZUNvbnNvbGVDbGllbnQ6OmFkZE1lc3NhZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6UGFnZUNvbnNvbGVDbGllbnQ6Om1lc3NhZ2VXaXRoVHlwZUFuZExl
dmVsKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VDb25zb2xlQ2xpZW50Ojpjb3VudCk6CisgICAg
ICAgIChXZWJDb3JlOjpQYWdlQ29uc29sZUNsaWVudDo6cHJvZmlsZUVuZCk6CisgICAgICAgIChX
ZWJDb3JlOjpQYWdlQ29uc29sZUNsaWVudDo6dGltZUVuZCk6CisgICAgICAgIChXZWJDb3JlOjpQ
YWdlQ29uc29sZUNsaWVudDo6dGltZVN0YW1wKToKKyAgICAgICAgKiBwYWdlL1BhZ2VPdmVybGF5
Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlT3ZlcmxheUNvbnRyb2xsZXI6
Omluc3RhbGxQYWdlT3ZlcmxheSk6CisgICAgICAgICogcGFnZS9UZXh0SW5kaWNhdG9yLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OnRha2VTbmFwc2hvdCk6CisgICAgICAgICogcGFnZS9Vc2VyQ29u
dGVudENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VXNlckNvbnRlbnRDb250cm9s
bGVyOjphZGRVc2VyU2NyaXB0KToKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJDb250ZW50Q29udHJv
bGxlcjo6YWRkVXNlclN0eWxlU2hlZXQpOgorICAgICAgICAqIHBhZ2UvVXNlclNjcmlwdC5oOgor
ICAgICAgICAoV2ViQ29yZTo6VXNlclNjcmlwdDo6VXNlclNjcmlwdCk6CisgICAgICAgICogcGFn
ZS9Vc2VyU3R5bGVTaGVldC5oOgorICAgICAgICAoV2ViQ29yZTo6VXNlclN0eWxlU2hlZXQ6OlVz
ZXJTdHlsZVNoZWV0KToKKyAgICAgICAgKiBwYWdlL1doZWVsRXZlbnRUZXN0VHJpZ2dlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXaGVlbEV2ZW50VGVzdFRyaWdnZXI6OnNldFRlc3RDYWxsYmFj
a0FuZFN0YXJ0Tm90aWZpY2F0aW9uVGltZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2hlZWxFdmVu
dFRlc3RUcmlnZ2VyOjp0cmlnZ2VyVGVzdFRpbWVyRmlyZWQpOgorICAgICAgICAqIHBhZ2UvYW5p
bWF0aW9uL0FuaW1hdGlvbkNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0
aW9uQ29udHJvbGxlclByaXZhdGU6OmZpcmVFdmVudHNBbmRVcGRhdGVTdHlsZSk6CisgICAgICAg
IChXZWJDb3JlOjpBbmltYXRpb25Db250cm9sbGVyUHJpdmF0ZTo6YWRkRWxlbWVudENoYW5nZVRv
RGlzcGF0Y2gpOgorICAgICAgICAqIHBhZ2UvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmJsZW5kRmlsdGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OmNyb3NzZmFkZUJsZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlByb3BlcnR5V3JhcHBlclNoYWRv
dzo6YmxlbmRTaW1wbGVPck1hdGNoZWRTaGFkb3dMaXN0cyk6CisgICAgICAgIChXZWJDb3JlOjpQ
cm9wZXJ0eVdyYXBwZXJTaGFkb3c6OmJsZW5kTWlzbWF0Y2hlZFNoYWRvd0xpc3RzKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNob3J0aGFuZFByb3BlcnR5V3JhcHBlcjo6U2hvcnRoYW5kUHJvcGVydHlX
cmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5QW5pbWF0aW9uV3JhcHBlck1h
cDo6Q1NTUHJvcGVydHlBbmltYXRpb25XcmFwcGVyTWFwKToKKyAgICAgICAgKiBwYWdlL2NvY29h
L1Jlc291cmNlVXNhZ2VPdmVybGF5Q29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpSaW5nQnVm
ZmVyOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5Q2F0ZWdvcnlJbmZvOjpNZW1v
cnlDYXRlZ29yeUluZm8pOgorICAgICAgICAqIHBhZ2UvbWFjL1RleHRJbmRpY2F0b3JXaW5kb3cu
bW06CisgICAgICAgIChXZWJDb3JlOjpUZXh0SW5kaWNhdG9yV2luZG93OjpjbGVhclRleHRJbmRp
Y2F0b3IpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL0F4aXNTY3JvbGxTbmFwT2Zmc2V0cy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjp1cGRhdGVTbmFwT2Zmc2V0c0ZvclNjcm9sbGFibGVBcmVh
KToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVRyZWUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVUcmVlOjpzZXRSZW1vdmVkTm9kZXMpOgorICAg
ICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RocmVhZC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxpbmdUaHJlYWQ6OmRpc3BhdGNoQmFycmllcik6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxpbmdUaHJlYWQ6OmRpc3BhdGNoRnVuY3Rpb25zRnJvbVNjcm9sbGluZ1RocmVhZCk6
CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvVGhyZWFkZWRTY3JvbGxpbmdUcmVlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlRocmVhZGVkU2Nyb2xsaW5nVHJlZTo6Y29tbWl0TmV3VHJlZVN0YXRl
KToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9pb3MvU2Nyb2xsaW5nVHJlZUlPUy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlSU9TOjpjb21taXROZXdUcmVlU3RhdGUpOgor
ICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdDb29yZGluYXRvck1hYy5tbToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yTWFjOjpjb21taXRUcmVlU3Rh
dGUpOgorICAgICAgICAqIHBsYXRmb3JtL0NhbGN1bGF0aW9uVmFsdWUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q2FsY3VsYXRpb25WYWx1ZTo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9D
YWxjdWxhdGlvblZhbHVlLmg6CisgICAgICAgIChXZWJDb3JlOjpDYWxjdWxhdGlvblZhbHVlOjpD
YWxjdWxhdGlvblZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbGNFeHByZXNzaW9uQmluYXJ5
T3BlcmF0aW9uOjpDYWxjRXhwcmVzc2lvbkJpbmFyeU9wZXJhdGlvbik6CisgICAgICAgICogcGxh
dGZvcm0vRHJhZ0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZURyYWdJbWFnZUZy
b21TbmFwc2hvdCk6CisgICAgICAgICogcGxhdGZvcm0vS2V5ZWRDb2RpbmcuaDoKKyAgICAgICAg
KFdlYkNvcmU6OktleWVkRGVjb2Rlcjo6ZGVjb2RlT2JqZWN0cyk6CisgICAgICAgICogcGxhdGZv
cm0vTGVuZ3RoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aDo6TGVuZ3RoKToKKyAgICAg
ICAgKFdlYkNvcmU6Okxlbmd0aDo6YmxlbmRNaXhlZFR5cGVzKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9MZW5ndGhTaXplLmg6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGhTaXplOjpMZW5ndGhTaXpl
KToKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aFNpemU6OnNldFdpZHRoKToKKyAgICAgICAgKFdl
YkNvcmU6Okxlbmd0aFNpemU6OnNldEhlaWdodCk6CisgICAgICAgICogcGxhdGZvcm0vTWFpblRo
cmVhZFNoYXJlZFRpbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1haW5UaHJlYWRTaGFyZWRU
aW1lcjo6c2V0RmlyZWRGdW5jdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsYWJsZUFy
ZWEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYWJsZUFyZWE6OnNldEhvcml6b250YWxT
bmFwT2Zmc2V0cyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxhYmxlQXJlYTo6c2V0VmVydGlj
YWxTbmFwT2Zmc2V0cyk6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxlKToKKyAgICAgICAg
KFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6bWF5YmVUcmFuc2Zlck1hcHBlZEZpbGVEYXRhKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9TdXBwbGVtZW50YWJsZS5oOgorICAgICAgICAoV2ViQ29yZTo6U3Vw
cGxlbWVudDo6cHJvdmlkZVRvKToKKyAgICAgICAgKFdlYkNvcmU6OlN1cHBsZW1lbnRhYmxlOjpw
cm92aWRlU3VwcGxlbWVudCk6CisgICAgICAgICogcGxhdGZvcm0vVGltZXIuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlRpbWVyOjpUaW1lcik6CisgICAgICAgIChXZWJDb3JlOjpEZWZlcnJhYmxlT25l
U2hvdFRpbWVyOjpEZWZlcnJhYmxlT25lU2hvdFRpbWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9V
UkwuaDoKKyAgICAgICAgKFdlYkNvcmU6OlVSTENhcHR1cmU6OnJlbGVhc2VVUkwpOgorICAgICAg
ICAqIHBsYXRmb3JtL2F1ZGlvL0F1ZGlvQnVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
QnVzOjpBdWRpb0J1cyk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vSFJURkRhdGFiYXNlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhSVEZEYXRhYmFzZTo6SFJURkRhdGFiYXNlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9hdWRpby9IUlRGRWxldmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkhSVEZFbGV2YXRpb246OmNyZWF0ZUZvclN1YmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6SFJU
RkVsZXZhdGlvbjo6Y3JlYXRlQnlJbnRlcnBvbGF0aW5nU2xpY2VzKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9hdWRpby9IUlRGRWxldmF0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpIUlRGRWxldmF0
aW9uOjpIUlRGRWxldmF0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9IUlRGS2VybmVs
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhSVEZLZXJuZWw6OmNyZWF0ZUludGVycG9sYXRlZEtl
cm5lbCk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vSFJURktlcm5lbC5oOgorICAgICAgICAo
V2ViQ29yZTo6SFJURktlcm5lbDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkhSVEZLZXJu
ZWw6OkhSVEZLZXJuZWwpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXZlcmJDb252b2x2ZXI6OlJldmVyYkNvbnZvbHZl
cik6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbk1hbmFnZXJJT1Mu
bW06CisgICAgICAgICgtW1dlYk1lZGlhU2Vzc2lvbkhlbHBlciBkZWFsbG9jXSk6CisgICAgICAg
ICogcGxhdGZvcm0vY2YvS2V5ZWREZWNvZGVyQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5
ZWREZWNvZGVyQ0Y6OktleWVkRGVjb2RlckNGKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9D
b250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcjo6Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9nbGliL0tleWVkRGVjb2RlckdsaWIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6S2V5ZWREZWNvZGVyR2xpYjo6ZGljdGlvbmFyeUZyb21HVmFyaWFudCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRQb2x5Z29uLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZsb2F0UG9seWdvbjo6RmxvYXRQb2x5Z29uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9Gb250LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnQ6OkZvbnQpOgorICAgICAgICAo
V2ViQ29yZTo6Y3JlYXRlQW5kRmlsbEdseXBoUGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpGb250
OjpzeXN0ZW1GYWxsYmFja0ZvbnRGb3JDaGFyYWN0ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0ZvbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnQ6OmNyZWF0ZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZv
bnRDYWNoZTo6cHVyZ2VJbmFjdGl2ZUZvbnREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9Gb250Q2FzY2FkZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZUNhY2hl
RW50cnk6OkZvbnRDYXNjYWRlQ2FjaGVFbnRyeSk6CisgICAgICAgIChXZWJDb3JlOjpyZXRyaWV2
ZU9yQWRkQ2FjaGVkRm9udHMpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2NhZGU6OnVwZGF0
ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGVGb250cy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpyZWFsaXplTmV4dEZhbGxiYWNrKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9Gb250Q2FzY2FkZUZvbnRzLmg6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2Fz
Y2FkZUZvbnRzOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnREZXNj
cmlwdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6Rm9udERlc2NyaXB0aW9uOjpzZXRGZWF0dXJl
U2V0dGluZ3MpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRGZWF0dXJlU2V0dGlu
Z3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udEZlYXR1cmU6OkZvbnRGZWF0dXJlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZvbnRGZWF0dXJlU2V0dGluZ3M6Omluc2VydCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvRm9udFJhbmdlcy5oOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFJh
bmdlczo6UmFuZ2U6OlJhbmdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HTENvbnRl
eHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0OjpjcmVhdGVDb250ZXh0Rm9yV2lu
ZG93KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRTdHJva2VQYXR0ZXJuKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0RmlsbFBhdHRlcm4pOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRTdHJva2VHcmFkaWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldEZpbGxHcmFkaWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdDb25zdW1pbmdJbWFnZUJ1ZmZlcik6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpLZXlmcmFtZVZhbHVlTGlzdDo6aW5zZXJ0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVBsYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6c2V0
V2lyZWxlc3NQbGF5YmFja1RhcmdldCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6
Y3JlYXRlUmVzb3VyY2VMb2FkZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRm
b3JtTWVkaWFSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRp
YVJlc291cmNlTG9hZGVyOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZP
YmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6Q0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6
Y3JlYXRlU2Vzc2lvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNldFdpcmVsZXNzUGxh
eWJhY2tUYXJnZXQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c2V0V2lyZWxlc3NQ
bGF5YmFja1RhcmdldCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvbnRy
b2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGlsZUNvbnRyb2xsZXI6OnNldENvbnRlbnRz
U2NhbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0lPU3VyZmFjZVBvb2wuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SU9TdXJmYWNlUG9vbDo6dGFrZVN1cmZhY2UpOgorICAgICAg
ICAoV2ViQ29yZTo6SU9TdXJmYWNlUG9vbDo6YWRkU3VyZmFjZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJT1N1cmZhY2VQb29sOjppbnNlcnRTdXJmYWNlSW50b1Bvb2wpOgorICAgICAgICAoV2ViQ29y
ZTo6SU9TdXJmYWNlUG9vbDo6Y29sbGVjdEluVXNlU3VyZmFjZXMpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VCdWZmZXI6OmNvcHlJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6c2lu
a0ludG9JbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6c2lua0ludG9OYXRp
dmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6ZHJhd0NvbnN1bWluZyk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLm1tOgorICAgICAg
ICAoSU9TdXJmYWNlOjptb3ZlVG9Qb29sKToKKyAgICAgICAgKElPU3VyZmFjZTo6Y3JlYXRlRnJv
bUltYWdlQnVmZmVyKToKKyAgICAgICAgKElPU3VyZmFjZTo6Y29udmVydFRvRm9ybWF0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9lZmwvQ2Fpcm9VdGlsaXRpZXNFZmwuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6ZXZhc09iamVjdEZyb21DYWlyb0ltYWdlU3VyZmFjZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNzQ29udGV4dDNERWZsLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpzZXRDb250ZXh0TG9zdENhbGxiYWNrKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6c2V0Q29u
dGV4dExvc3RDYWxsYmFjayk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29u
dGV4dEVHTC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHTENvbnRleHRFR0w6OmNyZWF0ZVdpbmRv
d0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0RUdMOjpjcmVhdGVQaXhtYXBD
b250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVHTDo6Y3JlYXRlQ29udGV4dCk6
CisgICAgICAgIChXZWJDb3JlOjpHTENvbnRleHRFR0w6OkdMQ29udGV4dEVHTCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RkVUaWxlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRmlsdGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXI6OnNldFNv
dXJjZUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9w
ZXJhdGlvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dseC9HTENvbnRleHRHTFgu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0R0xYOjpjcmVhdGVXaW5kb3dDb250ZXh0
KToKKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEdMWDo6Y3JlYXRlUGJ1ZmZlckNvbnRleHQp
OgorICAgICAgICAoV2ViQ29yZTo6R0xDb250ZXh0R0xYOjpjcmVhdGVQaXhtYXBDb250ZXh0KToK
KyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEdMWDo6Y3JlYXRlQ29udGV4dCk6CisgICAgICAg
IChXZWJDb3JlOjpHTENvbnRleHRHTFg6OkdMQ29udGV4dEdMWCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L1RleHR1cmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZTo6
VGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlOjpjcmVhdGUpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJC
YXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJh
c2U6OnB1c2hUZXh0dXJlVG9Db21wb3NpdG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJSZXF1ZXN0SW5zdGFsbE1pc3NpbmdQbHVnaW5zQ2FsbGJh
Y2suaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUmVxdWVzdEluc3RhbGxNaXNzaW5n
UGx1Z2luc0NhbGxiYWNrOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJS
ZXF1ZXN0SW5zdGFsbE1pc3NpbmdQbHVnaW5zQ2FsbGJhY2s6Ok1lZGlhUGxheWVyUmVxdWVzdElu
c3RhbGxNaXNzaW5nUGx1Z2luc0NhbGxiYWNrKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvVmlkZW9TaW5rR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFZpZGVvUmVuZGVy
UmVxdWVzdFNjaGVkdWxlcjo6cmVuZGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9t
YWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllclByaXZhdGVRVEtpdDo6c2V0V2lyZWxlc3NQbGF5YmFja1RhcmdldCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnMzRE9wZW5HTEVTLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkV4dGVuc2lvbnMzRE9wZW5HTEVTOjpzZXRFWFRDb250ZXh0TG9zdENhbGxi
YWNrKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9HTFRyYW5zcG9ydFN1
cmZhY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R0xUcmFuc3BvcnRTdXJmYWNlOjpjcmVhdGVU
cmFuc3BvcnRTdXJmYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkdMVHJhbnNwb3J0U3VyZmFjZUNs
aWVudDo6Y3JlYXRlVHJhbnNwb3J0U3VyZmFjZUNsaWVudCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3Mvc3VyZmFjZXMvZWdsL0VHTFN1cmZhY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RUdMVHJhbnNwb3J0U3VyZmFjZTo6Y3JlYXRlVHJhbnNwb3J0U3VyZmFjZSk6CisgICAgICAgIChX
ZWJDb3JlOjpFR0xUcmFuc3BvcnRTdXJmYWNlOjpjcmVhdGVUcmFuc3BvcnRTdXJmYWNlQ2xpZW50
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZVBvb2wu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwVGV4dHVyZVBvb2w6OkJpdG1hcFRleHR1cmVQ
b29sKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZVBv
b2wuaDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFRleHR1cmVQb29sOjpFbnRyeTo6RW50cnkp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpyZW1vdmVBbGxDaGls
ZHJlbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQ
bGF0Zm9ybUxheWVyQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJQ
bGF0Zm9ybUxheWVyQnVmZmVyOjpUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcik6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxh
eWVyQnVmZmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXll
ckJ1ZmZlcjo6c2V0VW5tYW5hZ2VkQnVmZmVyRGF0YUhvbGRlcik6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eTo6cHVzaE5l
eHRCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQ
cm94eTo6Z2V0QXZhaWxhYmxlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBw
ZXJQbGF0Zm9ybUxheWVyUHJveHk6OnJlbGVhc2VVbnVzZWRCdWZmZXJzVGltZXJGaXJlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5Ojpzd2FwQnVm
ZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk6
OnNjaGVkdWxlVXBkYXRlT25Db21wb3NpdG9yVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk6OmNvbXBvc2l0b3JUaHJlYWRVcGRhdGVUaW1l
ckZpcmVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQv
Q29tcG9zaXRpbmdDb29yZGluYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGlu
Z0Nvb3JkaW5hdG9yOjpyZWxlYXNlSW5hY3RpdmVBdGxhc2VzVGltZXJGaXJlZCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhp
Y3NMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6
OmFkanVzdENvbnRlbnRzU2NhbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dheWxh
bmQvUGxhdGZvcm1EaXNwbGF5V2F5bGFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9y
bURpc3BsYXlXYXlsYW5kOjpjcmVhdGVTaGFyaW5nR0xDb250ZXh0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy93aW4vRm9udENhY2hlV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZv
bnRDYWNoZTo6Y3JlYXRlRm9udFBsYXRmb3JtRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YTo6Zm9udFBsYXRmb3JtRGF0YSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFDYWlyby5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpGb250Q3VzdG9tUGxhdGZvcm1EYXRhOjpmb250UGxhdGZvcm1EYXRhKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YUNHV2luLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6OkZvbnRQbGF0Zm9ybURhdGEp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhQ2Fpcm9X
aW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6Rm9udFBsYXRmb3Jt
RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFX
aW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6Rm9udFBsYXRmb3Jt
RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1NoYXJlZEdESU9iamVjdC5o
OgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkR0RJT2JqZWN0OjpjcmVhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6U2hhcmVkR0RJT2JqZWN0OjpTaGFyZWRHRElPYmplY3QpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3dpbi9TaW1wbGVGb250RGF0YVdpbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGb250OjpwbGF0Zm9ybUNyZWF0ZVNjYWxlZEZvbnQpOgorICAgICAgICAqIHBsYXRmb3Jt
L2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbToKKyAgICAgICAgKFdlYlZp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpwcmVwYXJlZFRvUmV0dXJuVG9JbmxpbmUpOgor
ICAgICAgICAqIHBsYXRmb3JtL21hYy9ISURHYW1lcGFkUHJvdmlkZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SElER2FtZXBhZFByb3ZpZGVyOjpkZXZpY2VBZGRlZCk6CisgICAgICAgICogcGxh
dGZvcm0vbWFjL1RoZW1lTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6VGhlbWVNYWM6OmRyYXdD
ZWxsT3JGb2N1c1JpbmdXaXRoVmlld0ludG9Db250ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVByaXZhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFTdHJlYW1Qcml2YXRlOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFt
L01lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3Ry
ZWFtVHJhY2tQcml2YXRlOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFt
L21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkFWVmlkZW9D
YXB0dXJlU291cmNlOjpjdXJyZW50RnJhbWVJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9CbG9iRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6UmF3RGF0YTo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJhd0RhdGE6OlJhd0RhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvQmxvYlBhcnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkJsb2JQYXJ0OjpCbG9iUGFydCk6
CisgICAgICAgIChXZWJDb3JlOjpCbG9iUGFydDo6bW92ZURhdGEpOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVVS
TERlY29kZXI6OkRlY29kaW5nUmVzdWx0RGlzcGF0Y2hlcjo6ZGlzcGF0Y2gpOgorICAgICAgICAo
V2ViQ29yZTo6RGF0YVVSTERlY29kZXI6OkRlY29kaW5nUmVzdWx0RGlzcGF0Y2hlcjo6RGVjb2Rp
bmdSZXN1bHREaXNwYXRjaGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFVUkxEZWNvZGVyOjpE
ZWNvZGluZ1Jlc3VsdERpc3BhdGNoZXI6OnRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6
RGF0YVVSTERlY29kZXI6OmNyZWF0ZURlY29kZVRhc2spOgorICAgICAgICAoV2ViQ29yZTo6RGF0
YVVSTERlY29kZXI6OmRlY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9IVFRQSGVh
ZGVyTWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUVFBIZWFkZXJNYXA6OmFkb3B0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdGF0ZU5vdGlmaWVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok5ldHdvcmtTdGF0ZU5vdGlmaWVyOjphZGROZXR3b3JrU3RhdGVDaGFuZ2VM
aXN0ZW5lcik6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oOgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OnNldFF1aWNrTG9va0hhbmRsZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdEJhc2U6OmFkb3B0KToKKyAgICAgICAgKFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdEJhc2U6OmNvcHlEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdEJhc2U6OnNldEhUVFBIZWFkZXJGaWVsZHMpOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZUJhc2U6OmFkb3B0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2VCYXNlOjpjb3B5RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9G
b3JtRGF0YVN0cmVhbUNGTmV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFkdmFuY2VDdXJyZW50
U3RyZWFtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZO
ZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OnJlbGVhc2VDb25uZWN0
aW9uRm9yRG93bmxvYWQpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2Fj
aGVNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxDYWNoZU1hbmFnZXI6OmxvYWRJ
bmRleCk6CisgICAgICAgIChXZWJDb3JlOjpDdXJsQ2FjaGVNYW5hZ2VyOjpkaWRSZWNlaXZlUmVz
cG9uc2UpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5k
bGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZTo6U29ja2V0RGF0YTo6
U29ja2V0RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVh
bUhhbmRsZUN1cmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlOjpw
bGF0Zm9ybVNlbmQpOgorICAgICAgICAoV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlOjpyZWFk
RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGU6OnNlbmREYXRhKToK
KyAgICAgICAgKFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZTo6ZGlkUmVjZWl2ZURhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlOjpjcmVhdGVDb3B5KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0b3JhZ2VTZXNzaW9uU291cC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246Ok5ldHdvcmtTdG9yYWdl
U2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldFNv
dXBOZXR3b3JrU2Vzc2lvbik6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9Mb2NhbGVJQ1UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TG9jYWxlSUNVOjpjcmVhdGVMYWJlbFZlY3Rvcik6CisgICAg
ICAgIChXZWJDb3JlOjpjcmVhdGVGYWxsYmFja01vbnRoTGFiZWxzKToKKyAgICAgICAgKFdlYkNv
cmU6OmNyZWF0ZUZhbGxiYWNrQU1QTUxhYmVscyk6CisgICAgICAgICogcGxhdGZvcm0vd2luL1dD
RGF0YU9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXQ0RhdGFPYmplY3Q6OlNldERhdGEp
OgorICAgICAgICAqIHBsdWdpbnMvRE9NTWltZVR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RE9NTWltZVR5cGU6OkRPTU1pbWVUeXBlKToKKyAgICAgICAgKiBwbHVnaW5zL0RPTU1pbWVUeXBl
Lmg6CisgICAgICAgIChXZWJDb3JlOjpET01NaW1lVHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKiBw
bHVnaW5zL0RPTVBsdWdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01QbHVnaW46OkRPTVBs
dWdpbik6CisgICAgICAgICogcGx1Z2lucy9ET01QbHVnaW4uaDoKKyAgICAgICAgKFdlYkNvcmU6
OkRPTVBsdWdpbjo6Y3JlYXRlKToKKyAgICAgICAgKiBwbHVnaW5zL1BsdWdpbkRhdGEuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UGx1Z2luRGF0YTo6cHVibGljbHlWaXNpYmxlUGx1Z2lucyk6Cisg
ICAgICAgICogcmVuZGVyaW5nL0NsaXBQYXRoT3BlcmF0aW9uLmg6CisgICAgICAgICogcmVuZGVy
aW5nL0Zsb2F0aW5nT2JqZWN0cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGbG9hdGluZ09iamVj
dHM6Om1vdmVBbGxUb0Zsb2F0SW5mb01hcCk6CisgICAgICAgIChXZWJDb3JlOjpGbG9hdGluZ09i
amVjdHM6OmFkZCk6CisgICAgICAgICogcmVuZGVyaW5nL0xheW91dFN0YXRlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dFN0YXRlOjpMYXlvdXRTdGF0ZSk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckF0dGFjaG1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQXR0YWNo
bWVudDo6UmVuZGVyQXR0YWNobWVudCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2Nr
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok92ZXJmbG93RXZlbnREaXNwYXRjaGVyOjp+T3ZlcmZs
b3dFdmVudERpc3BhdGNoZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OlJlbmRl
ckJsb2NrKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6UmVuZGVyQmxvY2tGbG93KToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6bGF5b3V0TGluZUdyaWRCb3gpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93OjppbnNlcnRGbG9hdGluZ09iamVjdCk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
QmxvY2tGbG93OjpzZXRMaW5lR3JpZEJveCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJs
b2NrTGluZUxheW91dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmNy
ZWF0ZUFuZEFwcGVuZFJvb3RJbmxpbmVCb3gpOgorICAgICAgICAoV2ViQ29yZTo6Y29uc3RydWN0
QmlkaVJ1bnNGb3JTZWdtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6
bGlua1RvRW5kTGluZUlmTmVlZGVkKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6UmVuZGVyQm94KToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyQm94TW9kZWxPYmplY3Q6OlJlbmRlckJveE1vZGVsT2JqZWN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEZpbGxMYXllckV4dGVuZGVkKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyQnV0dG9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckJ1dHRvbjo6UmVuZGVyQnV0dG9uKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRGVwcmVj
YXRlZEZsZXhpYmxlQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckRlcHJlY2F0ZWRG
bGV4aWJsZUJveDo6UmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94KToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyRGV0YWlsc01hcmtlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJE
ZXRhaWxzTWFya2VyOjpSZW5kZXJEZXRhaWxzTWFya2VyKToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbGVtZW50OjpSZW5k
ZXJFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6OmNyZWF0ZUZvcik6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbGVtZW50OjpzZXRTdHlsZSk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJFbGVtZW50Ojpwcm9wYWdhdGVTdHlsZVRvQW5vbnltb3VzQ2hpbGRyZW4p
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJFbGVtZW50OjpzZXRTdHlsZUludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckVsZW1lbnQ6OnNldEFuaW1hdGFibGVTdHlsZSk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckVtYmVkZGVkT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVtYmVkZGVk
T2JqZWN0OjpSZW5kZXJFbWJlZGRlZE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJF
bWJlZGRlZE9iamVjdDo6Y3JlYXRlRm9yQXBwbGV0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyRmllbGRzZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmllbGRzZXQ6OlJlbmRl
ckZpZWxkc2V0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmlsZVVwbG9hZENvbnRyb2w6OlJlbmRlckZp
bGVVcGxvYWRDb250cm9sKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3gu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxleGlibGVCb3g6OlJlbmRlckZsZXhpYmxl
Qm94KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJGbG93VGhyZWFkOjpSZW5kZXJGbG93VGhyZWFkKToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyRnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRnJh
bWU6OlJlbmRlckZyYW1lKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRnJhbWVCYXNlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZyYW1lQmFzZTo6UmVuZGVyRnJhbWVCYXNlKToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRnJhbWVTZXQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyRnJhbWVTZXQ6OlJlbmRlckZyYW1lU2V0KToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyRnVsbFNjcmVlbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGdWxsU2NyZWVu
OjpSZW5kZXJGdWxsU2NyZWVuKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZ1bGxTY3JlZW46
OmNyZWF0ZVBsYWNlaG9sZGVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjpSZW5kZXJHcmlkKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckdyaWQ6OmNvbXB1dGVGbGV4RmFjdG9yVW5pdFNpemUpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJIVE1MQ2FudmFzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckhUTUxDYW52YXM6OlJlbmRlckhUTUxDYW52YXMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJJRnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySUZyYW1lOjpSZW5kZXJJRnJh
bWUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJJbWFnZTo6UmVuZGVySW1hZ2UpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJJbmxpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW5saW5lOjpSZW5kZXJJbmxp
bmUpOgorICAgICAgICAoV2ViQ29yZTo6dXBkYXRlU3R5bGVPZkFub255bW91c0Jsb2NrQ29udGlu
dWF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbmxpbmU6OmFkZENoaWxkSWdub3Jp
bmdDb250aW51YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW5saW5lOjpzcGxpdElu
bGluZXMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW5saW5lOjpjcmVhdGVBbmRBcHBlbmRJ
bmxpbmVGbG93Qm94KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmNhbGN1bGF0ZUNsaXBSZWN0cyk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlZ2lzdGVyQWxsVmlld3BvcnRDb25zdHJhaW5lZExh
eWVycyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3QuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJNb2RlbE9iamVjdDo6UmVuZGVyTGF5ZXJNb2Rl
bE9iamVjdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJMaW5lQnJlYWs6OlJlbmRlckxpbmVCcmVhayk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TGlzdEJveDo6UmVuZGVyTGlzdEJveCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxpc3RJ
dGVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RJdGVtOjpSZW5kZXJMaXN0SXRl
bSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0SXRlbTo6c3R5bGVEaWRDaGFuZ2UpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckxpc3RNYXJrZXI6OlJlbmRlckxpc3RNYXJrZXIpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJNZWRpYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNZWRpYTo6UmVu
ZGVyTWVkaWEpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJNZWRpYUNvbnRyb2xFbGVtZW50
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNZWRpYVZvbHVtZVNsaWRlckNvbnRhaW5l
cjo6UmVuZGVyTWVkaWFWb2x1bWVTbGlkZXJDb250YWluZXIpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTWVkaWFDb250cm9sVGltZWxpbmVDb250YWluZXI6OlJlbmRlck1lZGlhQ29udHJvbFRp
bWVsaW5lQ29udGFpbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHRUcmFja0NvbnRh
aW5lckVsZW1lbnQ6OlJlbmRlclRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJN
ZW51TGlzdDo6UmVuZGVyTWVudUxpc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJNZXRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNZXRlcjo6UmVuZGVyTWV0ZXIpOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkOjpSZW5kZXJNdWx0aUNvbHVt
bkZsb3dUaHJlYWQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNldC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNdWx0aUNvbHVtblNldDo6UmVuZGVyTXVsdGlD
b2x1bW5TZXQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNwYW5uZXJQ
bGFjZWhvbGRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNdWx0aUNvbHVtblNwYW5u
ZXJQbGFjZWhvbGRlcjo6UmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vob2xkZXIpOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dGcmFnbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJOYW1lZEZsb3dGcmFnbWVudDo6UmVuZGVyTmFtZWRGbG93RnJhZ21lbnQp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dUaHJlYWQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTmFtZWRGbG93VGhyZWFkOjpSZW5kZXJOYW1lZEZsb3dUaHJlYWQp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTmFtZWRGbG93VGhyZWFkOjp1cGRhdGVXcml0aW5n
TW9kZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclByb2dyZXNzLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclByb2dyZXNzOjpSZW5kZXJQcm9ncmVzcyk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlclB0ci5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJRdW90ZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJRdW90ZTo6UmVuZGVyUXVvdGUpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJSZWdpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyUmVn
aW9uOjpSZW5kZXJSZWdpb24pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJSZWdpb25TZXQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyUmVnaW9uU2V0OjpSZW5kZXJSZWdpb25TZXQp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJSZXBsYWNlZDo6UmVuZGVyUmVwbGFjZWQpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJSZXBsaWNhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclJlcGxpY2E6OlJl
bmRlclJlcGxpY2EpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJSdWJ5LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclJ1YnlBc0lubGluZTo6UmVuZGVyUnVieUFzSW5saW5lKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclJ1YnlBc0Jsb2NrOjpSZW5kZXJSdWJ5QXNCbG9jayk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlclJ1YnlCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclJ1YnlCYXNlOjpSZW5kZXJSdWJ5QmFzZSk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlclJ1YnlSdW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyUnVieVJ1bjo6UmVuZGVy
UnVieVJ1bik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJSdWJ5UnVuOjpjcmVhdGVSdWJ5QmFz
ZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclJ1YnlUZXh0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclJ1YnlUZXh0OjpSZW5kZXJSdWJ5VGV4dCk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlclNjcm9sbGJhclBhcnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Ny
b2xsYmFyUGFydDo6UmVuZGVyU2Nyb2xsYmFyUGFydCk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlclNlYXJjaEZpZWxkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNlYXJjaEZpZWxk
OjpSZW5kZXJTZWFyY2hGaWVsZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTZWFyY2hGaWVs
ZDo6dXBkYXRlQ2FuY2VsQnV0dG9uVmlzaWJpbGl0eSk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlclNsaWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTbGlkZXI6OlJlbmRlclNs
aWRlcik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNuYXBzaG90dGVkUGx1Z0luOjpSZW5kZXJTbmFwc2hv
dHRlZFBsdWdJbik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlOjpSZW5kZXJUYWJsZSk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlclRhYmxlQ2FwdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJs
ZUNhcHRpb246OlJlbmRlclRhYmxlQ2FwdGlvbik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clRhYmxlQ2VsbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZUNlbGw6OlJlbmRl
clRhYmxlQ2VsbCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlQ29sLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlQ29sOjpSZW5kZXJUYWJsZUNvbCk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlclRhYmxlUm93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clRhYmxlUm93OjpSZW5kZXJUYWJsZVJvdyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRh
YmxlU2VjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZVNlY3Rpb246OlJl
bmRlclRhYmxlU2VjdGlvbik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9s
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHRDb250cm9sOjpSZW5kZXJUZXh0Q29u
dHJvbCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmg6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sTXVsdGlMaW5lLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclRleHRDb250cm9sTXVsdGlMaW5lOjpSZW5kZXJUZXh0Q29udHJvbE11bHRp
TGluZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OlJlbmRl
clRleHRDb250cm9sU2luZ2xlTGluZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHRD
b250cm9sU2luZ2xlTGluZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZUVmbC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUVmbDo6Z2V0VGhlbWVQYXJ0RnJvbUNh
Y2hlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lRWZsOjpsb2FkVGhlbWUpOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRoZW1lTWFjOjpwYWludFByb2dyZXNzQmFyKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyVlRUQ3VlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZUVEN1ZTo6UmVuZGVyVlRU
Q3VlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVmlkZW8uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVmlkZW86OlJlbmRlclZpZGVvKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3OjpSZW5kZXJWaWV3KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OnVwZGF0ZVNlbGVjdGlvbkZvclN1YnRyZWVz
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OmFwcGx5U3VidHJlZVNlbGVjdGlvbik6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclZpZXcuaDoKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyV2lkZ2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcldpZGdldDo6UmVuZGVy
V2lkZ2V0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUm9vdElubGluZUJveC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSb290SW5saW5lQm94OjpwbGFjZUVsbGlwc2lzKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlck1hdGhNTEJsb2NrOjpSZW5kZXJNYXRoTUxCbG9jayk6CisgICAgICAgICogcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5oOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwv
UmVuZGVyTWF0aE1MRmVuY2VkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTEZl
bmNlZDo6UmVuZGVyTWF0aE1MRmVuY2VkKToKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1Jl
bmRlck1hdGhNTEZyYWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTEZy
YWN0aW9uOjpSZW5kZXJNYXRoTUxGcmFjdGlvbik6CisgICAgICAgICogcmVuZGVyaW5nL21hdGht
bC9SZW5kZXJNYXRoTUxNYXRoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTE1h
dGg6OlJlbmRlck1hdGhNTE1hdGgpOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVy
TWF0aE1MTWVuY2xvc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MTWVuY2xv
c2U6OlJlbmRlck1hdGhNTE1lbmNsb3NlKToKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1Jl
bmRlck1hdGhNTE9wZXJhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTE9w
ZXJhdG9yOjpSZW5kZXJNYXRoTUxPcGVyYXRvcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJN
YXRoTUxPcGVyYXRvcjo6dXBkYXRlU3R5bGUpOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwv
UmVuZGVyTWF0aE1MUmFkaWNhbE9wZXJhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ck1hdGhNTFJhZGljYWxPcGVyYXRvcjo6UmVuZGVyTWF0aE1MUmFkaWNhbE9wZXJhdG9yKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvb3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyTWF0aE1MUm9vdDo6UmVuZGVyTWF0aE1MUm9vdCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJNYXRoTUxSb290Ojp1cGRhdGVTdHlsZSk6CisgICAgICAgICogcmVuZGVy
aW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb290Lmg6CisgICAgICAgICogcmVuZGVyaW5nL21hdGht
bC9SZW5kZXJNYXRoTUxSb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MUm93
OjpSZW5kZXJNYXRoTUxSb3cpOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0
aE1MU2NyaXB0cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxTY3JpcHRzOjpS
ZW5kZXJNYXRoTUxTY3JpcHRzKToKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1h
dGhNTFNjcmlwdHMuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNw
YWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTFNwYWNlOjpSZW5kZXJNYXRo
TUxTcGFjZSk6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTcXVhcmVS
b290LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTFNxdWFyZVJvb3Q6OlJlbmRl
ck1hdGhNTFNxdWFyZVJvb3QpOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0
aE1MVG9rZW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MVG9rZW46OlJlbmRl
ck1hdGhNTFRva2VuKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTFRva2VuOjp1cGRh
dGVTdHlsZSk6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxVbmRlck92
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MVW5kZXJPdmVyOjpSZW5kZXJN
YXRoTUxVbmRlck92ZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9zaGFwZXMvUG9seWdvblNoYXBl
Lmg6CisgICAgICAgIChXZWJDb3JlOjpQb2x5Z29uU2hhcGU6OlBvbHlnb25TaGFwZSk6CisgICAg
ICAgICogcmVuZGVyaW5nL3NoYXBlcy9SYXN0ZXJTaGFwZS5oOgorICAgICAgICAqIHJlbmRlcmlu
Zy9zaGFwZXMvU2hhcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlUG9seWdvblNoYXBl
KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXBlOjpjcmVhdGVTaGFwZSk6CisgICAgICAgIChXZWJD
b3JlOjpTaGFwZTo6Y3JlYXRlUmFzdGVyU2hhcGUpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcGU6
OmNyZWF0ZUJveFNoYXBlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZXMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QmFzaWNTaGFwZUNlbnRlckNvb3JkaW5hdGU6OnVwZGF0
ZUNvbXB1dGVkTGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OkJhc2ljU2hhcGVDaXJjbGU6OmJs
ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkJhc2ljU2hhcGVFbGxpcHNlOjpibGVuZCk6CisgICAg
ICAgIChXZWJDb3JlOjpCYXNpY1NoYXBlUG9seWdvbjo6YmxlbmQpOgorICAgICAgICAoV2ViQ29y
ZTo6QmFzaWNTaGFwZVBhdGg6OkJhc2ljU2hhcGVQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OkJh
c2ljU2hhcGVQYXRoOjpibGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpCYXNpY1NoYXBlSW5zZXQ6
OmJsZW5kKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZXMuaDoKKyAgICAg
ICAgKiByZW5kZXJpbmcvc3R5bGUvQ29udGVudERhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q29udGVudERhdGE6OmNsb25lKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQ29udGVudERhdGE6
OmNyZWF0ZUNvbnRlbnRSZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q29udGVudERh
dGE6OmNyZWF0ZUNvbnRlbnRSZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpRdW90ZUNvbnRl
bnREYXRhOjpjcmVhdGVDb250ZW50UmVuZGVyZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHls
ZS9Db250ZW50RGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudERhdGE6OnNldE5leHQp
OgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9EYXRhUmVmLmg6CisgICAgICAgIChXZWJDb3Jl
OjpEYXRhUmVmOjpEYXRhUmVmKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvRmlsbExheWVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGxMYXllcjo6fkZpbGxMYXllcik6CisgICAgICAg
ICogcmVuZGVyaW5nL3N0eWxlL0ZpbGxMYXllci5oOgorICAgICAgICAoV2ViQ29yZTo6RmlsbExh
eWVyOjpzZXRYUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6RmlsbExheWVyOjpzZXRZUG9z
aXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6RmlsbExheWVyOjpzZXROZXh0KToKKyAgICAgICAg
KiByZW5kZXJpbmcvc3R5bGUvTmluZVBpZWNlSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TmluZVBpZWNlSW1hZ2U6Ok5pbmVQaWVjZUltYWdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5
bGUvTmluZVBpZWNlSW1hZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5pbmVQaWVjZUltYWdlOjpz
ZXRJbWFnZVNsaWNlcyk6CisgICAgICAgIChXZWJDb3JlOjpOaW5lUGllY2VJbWFnZTo6c2V0Qm9y
ZGVyU2xpY2VzKToKKyAgICAgICAgKFdlYkNvcmU6Ok5pbmVQaWVjZUltYWdlOjpzZXRPdXRzZXQp
OgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0V2lsbENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJTdHlsZTo6YXBwZW5kQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHls
ZTo6c2V0Q29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0VGV4dFNo
YWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0Qm94U2hhZG93KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpzZXRXb3JkU3BhY2luZyk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0U2Nyb2xsU25hcFBvaW50c1gpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU3R5bGU6OnNldFNjcm9sbFNuYXBQb2ludHNZKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclN0eWxlOjpzZXRTY3JvbGxTbmFwRGVzdGluYXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU3R5bGU6OnNldFNjcm9sbFNuYXBDb29yZGluYXRlcyk6CisgICAgICAgICog
cmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxl
L1NWR1JlbmRlclN0eWxlLmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJTdHlsZTo6c2V0
U2hhZG93KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU2hhZG93RGF0YS5oOgorICAgICAg
ICAoV2ViQ29yZTo6U2hhZG93RGF0YTo6c2V0TmV4dCk6CisgICAgICAgICogcmVuZGVyaW5nL3N0
eWxlL1N0eWxlR2VuZXJhdGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVHZW5l
cmF0ZWRJbWFnZTo6U3R5bGVHZW5lcmF0ZWRJbWFnZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N0
eWxlL1N0eWxlR2VuZXJhdGVkSW1hZ2UuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5
bGVSZWZsZWN0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlZmxlY3Rpb246OnNldE9m
ZnNldCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdCbG9jay5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJTVkdCbG9jazo6UmVuZGVyU1ZHQmxvY2spOgorICAgICAgICAq
IHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQ29udGFpbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclNWR0NvbnRhaW5lcjo6UmVuZGVyU1ZHQ29udGFpbmVyKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR0VsbGlwc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U1ZHRWxsaXBzZTo6UmVuZGVyU1ZHRWxsaXBzZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdGb3JlaWduT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0Zv
cmVpZ25PYmplY3Q6OlJlbmRlclNWR0ZvcmVpZ25PYmplY3QpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHR3JhZGllbnRTdG9wLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clNWR0dyYWRpZW50U3RvcDo6UmVuZGVyU1ZHR3JhZGllbnRTdG9wKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR0hpZGRlbkNvbnRhaW5lci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJTVkdIaWRkZW5Db250YWluZXI6OlJlbmRlclNWR0hpZGRlbkNvbnRhaW5lcik6Cisg
ICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTVkdJbWFnZTo6UmVuZGVyU1ZHSW1hZ2UpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHSW5saW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0lu
bGluZTo6UmVuZGVyU1ZHSW5saW5lKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0lubGlu
ZTo6Y3JlYXRlSW5saW5lRmxvd0JveCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdJbmxpbmVUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0lubGluZVRleHQ6
OmNyZWF0ZVRleHRCb3gpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxP
YmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHTW9kZWxPYmplY3Q6OlJlbmRl
clNWR01vZGVsT2JqZWN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1BhdGgu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUGF0aDo6UmVuZGVyU1ZHUGF0aCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZWN0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclNWR1JlY3Q6OlJlbmRlclNWR1JlY3QpOgorICAgICAgICAqIHJlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clNWR1Jlc291cmNlQ2xpcHBlcjo6UmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyKToKKyAgICAgICAg
KiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyOjpSZW5kZXJTVkdSZXNvdXJjZUNv
bnRhaW5lcik6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6UmVuZGVy
U1ZHUmVzb3VyY2VGaWx0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VG
aWx0ZXI6OmJ1aWxkUHJpbWl0aXZlcyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNv
dXJjZUZpbHRlcjo6YXBwbHlSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdS
ZXNvdXJjZUZpbHRlcjo6cG9zdEFwcGx5UmVzb3VyY2UpOgorICAgICAgICAqIHJlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmU6OlJlbmRlclNWR1Jlc291cmNlRmls
dGVyUHJpbWl0aXZlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNl
R3JhZGllbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVu
dDo6UmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVN
YXNrQW5kU3dhcENvbnRleHRGb3JUZXh0R3JhZGllbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUmVzb3VyY2VMaW5lYXJHcmFkaWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJTVkdSZXNvdXJjZUxpbmVhckdyYWRpZW50OjpSZW5kZXJTVkdSZXNvdXJjZUxpbmVh
ckdyYWRpZW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFy
a2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlTWFya2VyOjpSZW5k
ZXJTVkdSZXNvdXJjZU1hcmtlcik6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdS
ZXNvdXJjZU1hc2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZU1h
c2tlcjo6UmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNW
R1Jlc291cmNlUGF0dGVybjo6UmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclNWR1Jlc291cmNlUGF0dGVybjo6YnVpbGRQYXR0ZXJuKToKKyAgICAgICAg
KiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUmFkaWFsR3JhZGllbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VSYWRpYWxHcmFkaWVudDo6UmVuZGVyU1ZH
UmVzb3VyY2VSYWRpYWxHcmFkaWVudCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSb290LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jvb3Q6OlJlbmRlclNWR1Jv
b3QpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU1ZHU2hhcGU6OlJlbmRlclNWR1NoYXBlKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RTcGFuLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1RleHQ6OlJlbmRl
clNWR1RleHQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHVGV4dDo6Y3JlYXRlUm9vdElu
bGluZUJveCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0UGF0aC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdUZXh0UGF0aDo6UmVuZGVyU1ZHVGV4dFBhdGgp
OgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5l
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVy
OjpSZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyKToKKyAgICAgICAgKiByZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyOjpSZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lcik6Cisg
ICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJjZXNDYWNoZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdSZXNvdXJjZXNDYWNoZTo6YWRkUmVzb3VyY2VzRnJvbVJlbmRlcmVyKToKKyAg
ICAgICAgKiByZXBsYXkvQ2FwdHVyaW5nSW5wdXRDdXJzb3IuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FwdHVyaW5nSW5wdXRDdXJzb3I6OkNhcHR1cmluZ0lucHV0Q3Vyc29yKToKKyAgICAgICAg
KFdlYkNvcmU6OkNhcHR1cmluZ0lucHV0Q3Vyc29yOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FwdHVyaW5nSW5wdXRDdXJzb3I6OnN0b3JlSW5wdXQpOgorICAgICAgICAqIHJlcGxheS9G
dW5jdG9ySW5wdXRDdXJzb3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZ1bmN0b3JJbnB1dEN1cnNv
cjo6RnVuY3RvcklucHV0Q3Vyc29yKToKKyAgICAgICAgKiByZXBsYXkvTWVtb2l6ZWRET01SZXN1
bHQuY3BwOgorICAgICAgICAoSlNDOjpJbnB1dFRyYWl0czxNZW1vaXplZERPTVJlc3VsdEJhc2U+
OjpkZWNvZGUpOgorICAgICAgICAqIHJlcGxheS9SZXBsYXlDb250cm9sbGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlcGxheUNvbnRyb2xsZXI6OmNyZWF0ZVNlZ21lbnQpOgorICAgICAgICAq
IHJlcGxheS9SZXBsYXlJbnB1dENyZWF0aW9uTWV0aG9kcy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbml0aWFsTmF2aWdhdGlvbjo6Y3JlYXRlRnJvbVBhZ2UpOgorICAgICAgICAqIHJlcGxheS9S
ZXBsYXlTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlcGxheVNlc3Npb246OmFwcGVu
ZFNlZ21lbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVwbGF5U2Vzc2lvbjo6aW5zZXJ0U2VnbWVu
dCk6CisgICAgICAgICogcmVwbGF5L1JlcGxheWluZ0lucHV0Q3Vyc29yLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlcGxheWluZ0lucHV0Q3Vyc29yOjpSZXBsYXlpbmdJbnB1dEN1cnNvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpSZXBsYXlpbmdJbnB1dEN1cnNvcjo6Y3JlYXRlKToKKyAgICAgICAg
KiByZXBsYXkvU2VnbWVudGVkSW5wdXRTdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNl
Z21lbnRlZElucHV0U3RvcmFnZTo6c3RvcmUpOgorICAgICAgICAqIHJlcGxheS9TZXJpYWxpemF0
aW9uTWV0aG9kcy5jcHA6CisgICAgICAgIChKU0M6OkVuY29kaW5nVHJhaXRzPE5vbmRldGVybWlu
aXN0aWNJbnB1dEJhc2U+OjpkZWNvZGVWYWx1ZSk6CisgICAgICAgICogcmVwbGF5L1VzZXJJbnB1
dEJyaWRnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpVc2VySW5wdXRCcmlkZ2U6OmhhbmRsZU1v
dXNlUHJlc3NFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpVc2VySW5wdXRCcmlkZ2U6OmhhbmRs
ZU1vdXNlUmVsZWFzZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJJbnB1dEJyaWRnZTo6
aGFuZGxlTW91c2VNb3ZlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6VXNlcklucHV0QnJpZGdl
OjpoYW5kbGVNb3VzZU1vdmVPblNjcm9sbGJhckV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlVz
ZXJJbnB1dEJyaWRnZTo6aGFuZGxlS2V5RXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6VXNlcklu
cHV0QnJpZGdlOjpoYW5kbGVXaGVlbEV2ZW50KToKKyAgICAgICAgKiBzdG9yYWdlL1N0b3JhZ2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U3RvcmFnZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OlN0b3JhZ2U6OlN0b3JhZ2UpOgorICAgICAgICAqIHN0eWxlL1N0eWxlUmVzb2x2ZUZvckRv
Y3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpyZXNvbHZlRm9yRG9jdW1lbnQp
OgorICAgICAgICAqIHN0eWxlL1N0eWxlUmVzb2x2ZVRyZWUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGU6OmNyZWF0ZVJlbmRlcmVySWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6U3R5
bGU6OnNldEJlZm9yZU9yQWZ0ZXJQc2V1ZG9FbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlOjpyZXNvbHZlVHJlZSk6CisgICAgICAgICogc3ZnL1NWR0FFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0FFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAg
ICAqIHN2Zy9TVkdBbHRHbHlwaEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQWx0
R2x5cGhFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAqIHN2Zy9TVkdB
bmltYXRlZFBhdGguY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRQYXRoQW5pbWF0
b3I6OmNvbnN0cnVjdEZyb21TdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRQ
YXRoQW5pbWF0b3I6OnN0YXJ0QW5pbVZhbEFuaW1hdGlvbik6CisgICAgICAgICogc3ZnL1NWR0Fu
aW1hdGVkVHlwZUFuaW1hdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkVHlw
ZUFuaW1hdG9yOjpmaW5kQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yQXR0cmlidXRlTmFtZSk6CisgICAg
ICAgICogc3ZnL1NWR0NpcmNsZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQ2ly
Y2xlRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAgKiBzdmcvU1ZHQ2xp
cFBhdGhFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0NsaXBQYXRoRWxlbWVudDo6
Y3JlYXRlRWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAgKiBzdmcvU1ZHRGVmc0VsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHRGVmc0VsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJl
cik6CisgICAgICAgICogc3ZnL1NWR0RvY3VtZW50RXh0ZW5zaW9ucy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdEb2N1bWVudEV4dGVuc2lvbnM6Om1hcmtQZW5kaW5nUmVzb3VyY2VzRm9yUmVt
b3ZhbCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdEb2N1bWVudEV4dGVuc2lvbnM6OmFkZEVsZW1l
bnRSZWZlcmVuY2luZ1RhcmdldCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdEb2N1bWVudEV4dGVu
c2lvbnM6OnJlYnVpbGRFbGVtZW50cyk6CisgICAgICAgICogc3ZnL1NWR0VsbGlwc2VFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsbGlwc2VFbGVtZW50OjpjcmVhdGVFbGVtZW50
UmVuZGVyZXIpOgorICAgICAgICAqIHN2Zy9TVkdGaWx0ZXJFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0ZpbHRlckVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAg
ICAgICogc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OmNyZWF0
ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAgICogc3ZnL1NWR0ZvbnRFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0tlcm5pbmdNYXA6Omluc2VydCk6CisgICAgICAgICogc3ZnL1NW
R0ZvcmVpZ25PYmplY3RFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZvcmVpZ25P
YmplY3RFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAqIHN2Zy9TVkdH
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdHRWxlbWVudDo6Y3JlYXRlRWxlbWVu
dFJlbmRlcmVyKToKKyAgICAgICAgKiBzdmcvU1ZHR3JhcGhpY3NFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0dyYXBoaWNzRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKToK
KyAgICAgICAgKiBzdmcvU1ZHSW1hZ2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0ltYWdlRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAgKiBzdmcvU1ZH
TGluZWFyR3JhZGllbnRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xpbmVhckdy
YWRpZW50RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAgKiBzdmcvU1ZH
TWFya2VyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdNYXJrZXJFbGVtZW50Ojpj
cmVhdGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAqIHN2Zy9TVkdNYXNrRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdNYXNrRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVy
KToKKyAgICAgICAgKiBzdmcvU1ZHUGF0aEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHUGF0aEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAgICogc3ZnL1NW
R1BhdGhVdGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YXBwZW5kU1ZHUGF0aEJ5dGVT
dHJlYW1Gcm9tU1ZHUGF0aFNlZyk6CisgICAgICAgICogc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdHRlcm5FbGVtZW50OjpjcmVhdGVFbGVtZW50UmVu
ZGVyZXIpOgorICAgICAgICAqIHN2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVu
ZGVyZXIpOgorICAgICAgICAqIHN2Zy9TVkdSZWN0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTVkdSZWN0RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKToKKyAgICAgICAgKiBz
dmcvU1ZHU1ZHRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdTVkdFbGVtZW50Ojpj
cmVhdGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAqIHN2Zy9TVkdTdG9wRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdTdG9wRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVy
KToKKyAgICAgICAgKiBzdmcvU1ZHU3dpdGNoRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdTd2l0Y2hFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAqIHN2
Zy9TVkdTeW1ib2xFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1N5bWJvbEVsZW1l
bnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAgICogc3ZnL1NWR1RSZWZFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RSZWZUYXJnZXRFdmVudExpc3RlbmVyOjphdHRh
Y2gpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVFJlZkVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5k
ZXJlcik6CisgICAgICAgICogc3ZnL1NWR1RTcGFuRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTVkdUU3BhbkVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAgICog
c3ZnL1NWR1RleHRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RleHRFbGVtZW50
OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIpOgorICAgICAgICAqIHN2Zy9TVkdUZXh0UGF0aEVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dFBhdGhFbGVtZW50OjpjcmVhdGVFbGVt
ZW50UmVuZGVyZXIpOgorICAgICAgICAqIHN2Zy9TVkdUb09URkZvbnRDb252ZXJzaW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR1RvT1RGRm9udENvbnZlcnRlcjo6cmVsZWFzZVJlc3VsdCk6
CisgICAgICAgIChXZWJDb3JlOjpTVkdUb09URkZvbnRDb252ZXJ0ZXI6OmFwcGVuZEtFUk5TdWJ0
YWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdUb09URkZvbnRDb252ZXJ0ZXI6OnByb2Nlc3NH
bHlwaEVsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdVc2VFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR1VzZUVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6CisgICAgICAg
IChXZWJDb3JlOjpTVkdVc2VFbGVtZW50OjpjbG9uZVRhcmdldCk6CisgICAgICAgICogc3ZnL2dy
YXBoaWNzL1NWR0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlOjp+U1ZHSW1h
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2U6OmRyYXdQYXR0ZXJuRm9yQ29udGFpbmVy
KToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bnRlcm5hbHM6Omluc2VydEF1dGhvckNTUyk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6
Omluc2VydFVzZXJDU1MpOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpxdWV1ZU1pY3Jv
VGFzayk6CisgICAgICAgICogd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZTo6cG9zdE1lc3Nh
Z2UpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldv
cmtlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlcjo6cG9zdE1lc3NhZ2UpOgor
ICAgICAgICAqIHdvcmtlcnMvV29ya2VyRXZlbnRRdWV1ZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpXb3JrZXJFdmVudFF1ZXVlOjpFdmVudERpc3BhdGNoZXI6OkV2ZW50RGlzcGF0Y2hlcik6Cisg
ICAgICAgICogd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpXb3JrZXJHbG9iYWxTY29wZTo6cG9zdFRhc2spOgorICAgICAgICAoV2ViQ29yZTo6V29ya2Vy
R2xvYmFsU2NvcGU6OnNldFRpbWVvdXQpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyR2xvYmFs
U2NvcGU6OnNldEludGVydmFsKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlckdsb2JhbFNjb3Bl
OjppbXBvcnRTY3JpcHRzKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlckdsb2JhbFNjb3BlOjph
ZGRNZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlckdsb2JhbFNjb3BlOjphZGRNZXNz
YWdlVG9Xb3JrZXJDb25zb2xlKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1By
b3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck1lc3NhZ2luZ1Byb3h5Ojpwb3N0TWVz
c2FnZVRvV29ya2VyT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck1lc3NhZ2luZ1By
b3h5Ojpwb3N0TWVzc2FnZVRvV29ya2VyR2xvYmFsU2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyTWVzc2FnaW5nUHJveHk6OnBvc3RUYXNrVG9Mb2FkZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6V29ya2VyTWVzc2FnaW5nUHJveHk6OnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2Nv
cGUpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyTWVzc2FnaW5nUHJveHk6OndvcmtlclRocmVh
ZENyZWF0ZWQpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyUnVuTG9vcC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpXb3JrZXJSdW5Mb29wOjpwb3N0VGFzayk6CisgICAgICAgIChXZWJDb3JlOjpX
b3JrZXJSdW5Mb29wOjpwb3N0VGFza0FuZFRlcm1pbmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpX
b3JrZXJSdW5Mb29wOjpwb3N0VGFza0Zvck1vZGUpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2Vy
UnVuTG9vcDo6VGFzazo6VGFzayk6CisgICAgICAgICogeG1sL0RPTVBhcnNlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpET01QYXJzZXI6OnBhcnNlRnJvbVN0cmluZyk6CisgICAgICAgICogeG1s
L05hdGl2ZVhQYXRoTlNSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVYUGF0
aE5TUmVzb2x2ZXI6Ok5hdGl2ZVhQYXRoTlNSZXNvbHZlcik6CisgICAgICAgICogeG1sL05hdGl2
ZVhQYXRoTlNSZXNvbHZlci5oOgorICAgICAgICAoV2ViQ29yZTo6TmF0aXZlWFBhdGhOU1Jlc29s
dmVyOjpjcmVhdGUpOgorICAgICAgICAqIHhtbC9YTUxFcnJvcnMuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6WE1MRXJyb3JzOjppbnNlcnRFcnJvck1lc3NhZ2VCbG9jayk6CisgICAgICAgICogeG1s
L1hNTEh0dHBSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0Ojpy
ZXNwb25zZUJsb2IpOgorICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnRU
aHJvdHRsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZl
bnRUaHJvdHRsZTo6Zmx1c2hQcm9ncmVzc0V2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0
dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudFRocm90dGxlOjpkaXNwYXRjaERlZmVycmVkRXZlbnRzKToK
KyAgICAgICAgKiB4bWwvWE1MVHJlZVZpZXdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxU
cmVlVmlld2VyOjp0cmFuc2Zvcm1Eb2N1bWVudFRvVHJlZVZpZXcpOgorICAgICAgICAqIHhtbC9Y
UGF0aEV4cHJlc3Npb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6WFBhdGhFeHByZXNzaW9uOjpY
UGF0aEV4cHJlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6WFBhdGhFeHByZXNzaW9uOjpjcmVh
dGVFeHByZXNzaW9uKToKKyAgICAgICAgKiB4bWwvWFBhdGhFeHByZXNzaW9uTm9kZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpYUGF0aDo6RXhwcmVzc2lvbjo6c2V0U3ViZXhwcmVzc2lvbnMpOgor
ICAgICAgICAqIHhtbC9YUGF0aEV4cHJlc3Npb25Ob2RlLmg6CisgICAgICAgIChXZWJDb3JlOjpY
UGF0aDo6RXhwcmVzc2lvbjo6YWRkU3ViZXhwcmVzc2lvbik6CisgICAgICAgICogeG1sL1hQYXRo
RnVuY3Rpb25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhQYXRoOjpGdW5jdGlvbjo6c2V0QXJn
dW1lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlhQYXRoOjpGdW5JZDo6ZXZhbHVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6WFBhdGg6OkZ1bmN0aW9uOjpjcmVhdGUpOgorICAgICAgICAqIHhtbC9Y
UGF0aEdyYW1tYXIueToKKyAgICAgICAgKiB4bWwvWFBhdGhOb2RlU2V0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlhQYXRoOjpOb2RlU2V0Ojpzb3J0KToKKyAgICAgICAgKFdlYkNvcmU6OlhQYXRo
OjpOb2RlU2V0Ojp0cmF2ZXJzYWxTb3J0KToKKyAgICAgICAgKiB4bWwvWFBhdGhOb2RlU2V0Lmg6
CisgICAgICAgIChXZWJDb3JlOjpYUGF0aDo6Tm9kZVNldDo6Tm9kZVNldCk6CisgICAgICAgIChX
ZWJDb3JlOjpYUGF0aDo6Tm9kZVNldDo6YXBwZW5kKToKKyAgICAgICAgKiB4bWwvWFBhdGhQYXJz
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WFBhdGg6OlBhcnNlcjo6cGFyc2VTdGF0ZW1lbnQp
OgorICAgICAgICAqIHhtbC9YUGF0aFBhcnNlci5oOgorICAgICAgICAoV2ViQ29yZTo6WFBhdGg6
OlBhcnNlcjo6c2V0UGFyc2VSZXN1bHQpOgorICAgICAgICAqIHhtbC9YUGF0aFBhdGguY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6WFBhdGg6OkZpbHRlcjo6RmlsdGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OlhQYXRoOjpGaWx0ZXI6OmV2YWx1YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlhQYXRoOjpM
b2NhdGlvblBhdGg6OmV2YWx1YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlhQYXRoOjpMb2NhdGlv
blBhdGg6OmFwcGVuZFN0ZXApOgorICAgICAgICAoV2ViQ29yZTo6WFBhdGg6OkxvY2F0aW9uUGF0
aDo6cHJlcGVuZFN0ZXApOgorICAgICAgICAoV2ViQ29yZTo6WFBhdGg6OlBhdGg6OlBhdGgpOgor
ICAgICAgICAqIHhtbC9YUGF0aFByZWRpY2F0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYUGF0
aDo6U3RyaW5nRXhwcmVzc2lvbjo6U3RyaW5nRXhwcmVzc2lvbik6CisgICAgICAgIChXZWJDb3Jl
OjpYUGF0aDo6TmVnYXRpdmU6Ok5lZ2F0aXZlKToKKyAgICAgICAgKFdlYkNvcmU6OlhQYXRoOjpO
dW1lcmljT3A6Ok51bWVyaWNPcCk6CisgICAgICAgIChXZWJDb3JlOjpYUGF0aDo6RXFUZXN0T3A6
OkVxVGVzdE9wKToKKyAgICAgICAgKFdlYkNvcmU6OlhQYXRoOjpMb2dpY2FsT3A6OkxvZ2ljYWxP
cCk6CisgICAgICAgIChXZWJDb3JlOjpYUGF0aDo6VW5pb246OlVuaW9uKToKKyAgICAgICAgKiB4
bWwvWFBhdGhTdGVwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhQYXRoOjpTdGVwOjpTdGVwKToK
KyAgICAgICAgKFdlYkNvcmU6OlhQYXRoOjpTdGVwOjpvcHRpbWl6ZSk6CisgICAgICAgIChXZWJD
b3JlOjpYUGF0aDo6b3B0aW1pemVTdGVwUGFpcik6CisgICAgICAgIChXZWJDb3JlOjpYUGF0aDo6
U3RlcDo6ZXZhbHVhdGUpOgorICAgICAgICAqIHhtbC9YUGF0aFN0ZXAuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlhQYXRoOjpTdGVwOjpOb2RlVGVzdDo6Tm9kZVRlc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6WFBhdGg6OlN0ZXA6Ok5vZGVUZXN0OjpvcGVyYXRvcj0pOgorICAgICAgICAqIHhtbC9YUGF0
aFZhbHVlLmg6CisgICAgICAgIChXZWJDb3JlOjpYUGF0aDo6VmFsdWU6OlZhbHVlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlhQYXRoOjpWYWx1ZTo6RGF0YTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OlhQYXRoOjpWYWx1ZTo6RGF0YTo6RGF0YSk6CisgICAgICAgICogeG1sL1hTTFRQcm9jZXNz
b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OlhTTFRQcm9jZXNzb3I6OnNldFhTTFN0eWxlU2hlZXQp
OgorICAgICAgICAoV2ViQ29yZTo6WFNMVFByb2Nlc3Nvcjo6aW1wb3J0U3R5bGVzaGVldCk6Cisg
ICAgICAgICogeG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpYTUxEb2N1bWVudFBhcnNlcjo6YXBwZW5kKToKKyAgICAgICAgKiB4bWwvcGFyc2VyL1hN
TERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQZW5kaW5nQ2Fs
bGJhY2tzOjphcHBlbmRTdGFydEVsZW1lbnROU0NhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6
OlBlbmRpbmdDYWxsYmFja3M6OmFwcGVuZENoYXJhY3RlcnNDYWxsYmFjayk6CisgICAgICAgIChX
ZWJDb3JlOjpQZW5kaW5nQ2FsbGJhY2tzOjphcHBlbmRQcm9jZXNzaW5nSW5zdHJ1Y3Rpb25DYWxs
YmFjayk6CisgICAgICAgIChXZWJDb3JlOjpQZW5kaW5nQ2FsbGJhY2tzOjphcHBlbmRDREFUQUJs
b2NrQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6UGVuZGluZ0NhbGxiYWNrczo6YXBwZW5k
Q29tbWVudENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlBlbmRpbmdDYWxsYmFja3M6OmFw
cGVuZEludGVybmFsU3Vic2V0Q2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6UGVuZGluZ0Nh
bGxiYWNrczo6YXBwZW5kRXJyb3JDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpPZmZzZXRC
dWZmZXI6Ok9mZnNldEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpvcGVuRnVuYyk6CisgICAg
ICAgIChXZWJDb3JlOjpYTUxEb2N1bWVudFBhcnNlcjo6Y2RhdGFCbG9jayk6CisgICAgICAgIChX
ZWJDb3JlOjpYTUxEb2N1bWVudFBhcnNlcjo6Y29tbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpw
YXJzZUF0dHJpYnV0ZXMpOgorCiAyMDE1LTEyLTMxICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBh
cHBsZS5jb20+CiAKICAgICAgICAgU3RvcCB1c2luZyBVU0UoQ0ZORVRXT1JLKSBwYXRoIG9uIGlP
UwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwppbmRleCA1MmQwNjQ4NjJiMjkyNzk3NjM4OGYxMDg3ZmI3ZWEwNGZmZjNhZjVmLi42
ZThmYTkyODllZDBlZWYyNmRkYzA3NWM5YmRiMjhiNWQ2MDBjOTBmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDEzIEBACisyMDE1LTEyLTMxICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKwor
ICAgICAgICBSZXBsYWNlIFdURjo6bW92ZSB3aXRoIFdURk1vdmUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MjYwMQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNl
SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlSW1wbDo6c3RvcmFn
ZUFyZWEpOgorCiAyMDE1LTEyLTE2ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgRml4IGludGVybmFsIFdpbmRvd3MgYnVpbGQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvaW9zL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvaW9zL0NoYW5n
ZUxvZwppbmRleCA4ZTJjNGNhMzZiMzYzZjVlOWQ1ZTVkNWZhOTQ0NGY0MTcyNDdhN2U4Li5lYmNj
NTc2ODA5MDdhOTJmNjM4MzE3NTNiNGZlOGQxZTE0NWJiNzVkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2lvcy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9pb3MvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTUgQEAKKzIwMTUtMTItMzEgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29t
PgorCisgICAgICAgIFJlcGxhY2UgV1RGOjptb3ZlIHdpdGggV1RGTW92ZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUyNjAxCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJG
aXhlZFBvc2l0aW9uQ29udGVudC5tbToKKyAgICAgICAgKC1bV2ViRml4ZWRQb3NpdGlvbkNvbnRl
bnQgc2V0Vmlld3BvcnRDb25zdHJhaW5lZExheWVyczpzdGlja3lDb250YWluZXJNYXA6XSk6Cisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50SU9TLm1tOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OldlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50
KToKKwogMjAxNS0xMi0yMCAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAg
ICAgIFJlbW92ZSB1bnVzZWQgc2V0VG9vbGJhckhlaWdodApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IDg3
MzRhZjA1MGZhNjhlYjlmZjBlOGRlNDY1OGU2MjdlYTFmNTgxNTguLjY3MzNjMmFmOGU1OGM2M2Rj
NWJkNzA4ZGEzODgwMDUyNDBjMTg2ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MyBA
QAorMjAxNS0xMi0zMSAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CisKKyAgICAgICAg
UmVwbGFjZSBXVEY6Om1vdmUgd2l0aCBXVEZNb3ZlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTI2MDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIEhpc3RvcnkvV2ViSGlzdG9yeUl0ZW0ubW06CisgICAg
ICAgICgtW1dlYkhpc3RvcnlJdGVtIGluaXRGcm9tRGljdGlvbmFyeVJlcHJlc2VudGF0aW9uOl0p
OgorICAgICAgICAqIFBsdWdpbnMvSG9zdGVkL0hvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFtLm1t
OgorICAgICAgICAoV2ViS2l0OjpIb3N0ZWROZXRzY2FwZVBsdWdpblN0cmVhbTo6d2lsbFNlbmRS
ZXF1ZXN0KToKKyAgICAgICAgKiBQbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNl
UHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Ojpz
ZXRDdXJyZW50UmVwbHkpOgorICAgICAgICAqIFBsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5TdHJl
YW0ubW06CisgICAgICAgIChXZWJOZXRzY2FwZVBsdWdpblN0cmVhbTo6d2lsbFNlbmRSZXF1ZXN0
KToKKyAgICAgICAgKiBQbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmlldy5tbToKKyAgICAgICAg
KC1bV2ViTmV0c2NhcGVQbHVnaW5WaWV3IHNjaGVkdWxlVGltZXJXaXRoSW50ZXJ2YWw6cmVwZWF0
OnRpbWVyRnVuYzpdKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNs
aWVudC5tbToKKyAgICAgICAgKFdlYkNvbnRleHRNZW51Q2xpZW50OjppbWFnZUZvckN1cnJlbnRT
aGFyaW5nU2VydmljZVBpY2tlckl0ZW0pOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50Lm1tOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3Bh
dGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UpOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKToKKyAgICAgICAgKFdl
YkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rp
b24pOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoV2lsbFN1Ym1pdEZv
cm0pOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZURvY3VtZW50TG9hZGVy
KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW06CisgICAg
ICAgIChXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6V2ViSW5zcGVjdG9yRnJvbnRlbmRDbGll
bnQpOgorICAgICAgICAqIFdlYlZpZXcvV2ViQXJjaGl2ZS5tbToKKyAgICAgICAgKC1bV2ViQXJj
aGl2ZSBpbml0V2l0aE1haW5SZXNvdXJjZTpzdWJyZXNvdXJjZXM6c3ViZnJhbWVBcmNoaXZlczpd
KToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkZyYW1lLm1tOgorICAgICAgICAoLVtXZWJGcmFtZSBf
ZG9jdW1lbnRGcmFnbWVudFdpdGhOb2Rlc0FzUGFyYWdyYXBoczpdKToKKyAgICAgICAgKiBXZWJW
aWV3L1dlYkhUTUxWaWV3Lm1tOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBfYXBwbHlFZGl0aW5n
U3R5bGVUb1NlbGVjdGlvbjp3aXRoVW5kb0FjdGlvbjpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dl
Yk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIubW06CisgICAgICAgIChXZWJNZWRpYVBsYXliYWNr
VGFyZ2V0UGlja2VyOjpzZXRQbGF5YmFja1RhcmdldCk6CisgICAgICAgICogV2ViVmlldy9XZWJW
aWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3IF9sb2FkQmFja0ZvcndhcmRMaXN0RnJvbU90aGVy
VmlldzpdKToKKyAgICAgICAgKCtbV2ViVmlldyBfYWRkVXNlclNjcmlwdFRvR3JvdXA6d29ybGQ6
c291cmNlOnVybDp3aGl0ZWxpc3Q6YmxhY2tsaXN0OmluamVjdGlvblRpbWU6aW5qZWN0ZWRGcmFt
ZXM6XSk6CisgICAgICAgICgrW1dlYlZpZXcgX2FkZFVzZXJTdHlsZVNoZWV0VG9Hcm91cDp3b3Js
ZDpzb3VyY2U6dXJsOndoaXRlbGlzdDpibGFja2xpc3Q6aW5qZWN0ZWRGcmFtZXM6XSk6CisKIDIw
MTUtMTItMzEgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KIAogICAgICAgICBT
dG9wIHVzaW5nIFVTRShDRk5FVFdPUkspIHBhdGggb24gaU9TCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKaW5kZXgg
ZDkzODg5MWNkMWZiMzYwZTJmNmQyZGY2ODNjNjRlM2E4NDg4OGQwZi4uMzBkY2Q2NzNjYTI2YzNi
YWEyODUyMzRkYzY4M2M4M2U3NmU5NjUxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4v
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMx
IEBACisyMDE1LTEyLTMxICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKworICAgICAg
ICBSZXBsYWNlIFdURjo6bW92ZSB3aXRoIFdURk1vdmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MjYwMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogUGx1Z2lucy9QbHVnaW5TdHJlYW0uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UGx1Z2luU3RyZWFtOjp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAq
IFBsdWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5WaWV3Ojpy
ZXF1ZXN0VGltZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5WaWV3OjpzY2hlZHVs
ZVJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6aGFuZGxlUG9zdCk6Cisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAg
ICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZURvY3VtZW50TG9hZGVyKToKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViSW5z
cGVjdG9yRnJvbnRlbmRDbGllbnQ6OldlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50KToKKyAgICAg
ICAgKiBXZWJIaXN0b3J5LmNwcDoKKyAgICAgICAgKGNyZWF0ZVVzZXJJbmZvRnJvbUFycmF5KToK
KyAgICAgICAgKiBXZWJIaXN0b3J5SXRlbS5jcHA6CisgICAgICAgIChXZWJIaXN0b3J5SXRlbTo6
aW5pdEZyb21EaWN0aW9uYXJ5UmVwcmVzZW50YXRpb24pOgorICAgICAgICAqIFdlYlZpZXcuY3Bw
OgorICAgICAgICAoV2ViVmlldzo6YWRkVG9EaXJ0eVJlZ2lvbik6CisgICAgICAgIChXZWJWaWV3
OjpzY3JvbGxCYWNraW5nU3RvcmUpOgorICAgICAgICAoV2ViVmlldzo6bG9hZEJhY2tGb3J3YXJk
TGlzdEZyb21PdGhlclZpZXcpOgorICAgICAgICAoV2ViVmlldzo6YWRkVXNlclNjcmlwdFRvR3Jv
dXApOgorICAgICAgICAoV2ViVmlldzo6YWRkVXNlclN0eWxlU2hlZXRUb0dyb3VwKToKKwogMjAx
NS0xMi0yOSAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAg
ICBGaXggV2luZG93cyBidWlsZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA0YzZjMzJjNzA2YmViZmZhMTI3MzBh
NjY0NmRlZWZlODlmNzVhNzg0Li4wNzNjZWM1NWQyNDgwOTFjODA2MTZiZjM4NjAwZmNjMTQzZDli
ZDRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzQzIEBACisyMDE1LTEyLTMxICBBbmR5IEVzdGVz
ICA8YWVzdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBSZXBsYWNlIFdURjo6bW92ZSB3aXRoIFdU
Rk1vdmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1
MjYwMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
RGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRh
dGFiYXNlUHJvY2Vzczo6cG9zdERhdGFiYXNlVGFzayk6CisgICAgICAgIChXZWJLaXQ6OkRhdGFi
YXNlUHJvY2Vzczo6ZmV0Y2hXZWJzaXRlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OkRhdGFiYXNl
UHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpEYXRhYmFzZVBy
b2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyk6CisgICAgICAgIChXZWJLaXQ6OkRh
dGFiYXNlUHJvY2Vzczo6aW5kZXhlZERhdGFiYXNlT3JpZ2lucyk6CisgICAgICAgICogRGF0YWJh
c2VQcm9jZXNzL0luZGV4ZWREQi9VbmlxdWVJREJEYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlVuaXF1ZUlEQkRhdGFiYXNlOjpwb3N0VHJhbnNhY3Rpb25PcGVyYXRpb24pOgorICAgICAg
ICAoV2ViS2l0OjpVbmlxdWVJREJEYXRhYmFzZTo6cG9zdE1haW5UaHJlYWRUYXNrKToKKyAgICAg
ICAgKFdlYktpdDo6VW5pcXVlSURCRGF0YWJhc2U6OnBvc3REYXRhYmFzZVRhc2spOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpEb3dubG9hZE1hbmFnZXI6OnN0YXJ0RG93bmxvYWQpOgorICAgICAgICAoV2Vi
S2l0OjpEb3dubG9hZE1hbmFnZXI6OmNvbnZlcnRIYW5kbGVUb0Rvd25sb2FkKToKKyAgICAgICAg
KFdlYktpdDo6RG93bmxvYWRNYW5hZ2VyOjpyZXN1bWVEb3dubG9hZCk6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvRW50cnlQb2ludC9tYWMvWFBDU2VydmljZS9OZXR3b3JrU2VydmljZUVudHJ5
UG9pbnQubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXJ2aWNlSW5pdGlhbGl6ZXJEZWxl
Z2F0ZTo6TmV0d29ya1NlcnZpY2VJbml0aWFsaXplckRlbGVnYXRlKToKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdvcmtCbG9iUmVnaXN0cnkuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwpOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnBlcmZvcm1TeW5jaHJvbm91
c0xvYWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
cmVnaXN0ZXJCbG9iVVJMKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5j
cHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkOjpkaWRSZWNlaXZlRGF0YSk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkOjpkaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya0xvYWQ6OmNvbnRpbnVlQ2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rp
b25TcGFjZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpmZXRjaERpc2tDYWNoZUVudHJpZXMpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUHJvY2Vzczo6ZmV0Y2hXZWJzaXRlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OmNsZWFy
RGlza0NhY2hlRW50cmllcyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpkZWxl
dGVXZWJzaXRlRGF0YUZvck9yaWdpbnMpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdv
cmtSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxv
YWRlcjo6U3luY2hyb25vdXNMb2FkRGF0YTo6U3luY2hyb25vdXNMb2FkRGF0YSk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6TmV0d29ya1Jlc291cmNlTG9hZGVyKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpyZXRyaWV2ZUNhY2hlRW50
cnkpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaExv
YWRpbmcpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnRyeVN0b3Jl
QXNDYWNoZUVudHJ5KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjp2
YWxpZGF0ZUNhY2hlRW50cnkpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNv
dXJjZUxvYWRlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6Q2FjaGU6OnJldHJpZXZlKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpDYWNoZTo6c3RvcmUpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkNhY2hlOjpjbGVhcik6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlQ29kZXJzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YVNvdXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrQ2FjaGU6OkRhdGE6OmVtcHR5KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpE
YXRhOjpzdWJyYW5nZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6Y29uY2F0ZW5h
dGUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkRhdGE6OmFkb3B0TWFwKToKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6RW50cnk6OkVudHJ5KToKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxTb3VwLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya0NhY2hlOjpydW5UYXNrSW5RdWV1ZSk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtDYWNoZTo6ZmlsbERhdGFGcm9tUmVhZEJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtDYWNoZTo6SU9DaGFubmVsOjpyZWFkU3luY0luVGhyZWFkKToKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZDo6U3BlY3VsYXRpdmVM
b2FkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWQ6OmRp
ZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0
aXZlTG9hZDo6ZGlkQ29tcGxldGUpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZE1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OkV4cGlyaW5nRW50cnk6OkV4cGly
aW5nRW50cnkpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9h
ZE1hbmFnZXI6OlByZWxvYWRlZEVudHJ5OjpQcmVsb2FkZWRFbnRyeSk6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6UHJlbG9hZGVkRW50cnk6
OnRha2VDYWNoZUVudHJ5KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTcGVjdWxh
dGl2ZUxvYWRNYW5hZ2VyOjpQZW5kaW5nRnJhbWVMb2FkOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OlBlbmRpbmdGcmFtZUxv
YWQ6OnNldEV4aXN0aW5nU3VicmVzb3VyY2VzRW50cnkpOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OlBlbmRpbmdGcmFtZUxvYWQ6OlBlbmRp
bmdGcmFtZUxvYWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZl
TG9hZE1hbmFnZXI6OnJlZ2lzdGVyTG9hZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNo
ZTo6U3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6YWRkUHJlbG9hZGVkRW50cnkpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OnJldHJpZXZlRW50
cnlGcm9tU3RvcmFnZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRp
dmVMb2FkTWFuYWdlcjo6cmV2YWxpZGF0ZUVudHJ5KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpwcmVsb2FkRW50cnkpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OnJldHJpZXZlU3Vi
cmVzb3VyY2VzRW50cnkpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZVN0YXRpc3RpY3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlN0YXRp
c3RpY3M6OnF1ZXJ5V2FzRXZlclJlcXVlc3RlZCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtD
YWNoZTo6U3RvcmFnZTo6UmVhZE9wZXJhdGlvbjo6ZmluaXNoKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0NhY2hlOjpTdG9yYWdlOjpzeW5jaHJvbml6ZSk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtDYWNoZTo6U3RvcmFnZTo6ZGlzcGF0Y2hSZWFkT3BlcmF0aW9uKToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya0NhY2hlOjpTdG9yYWdlOjpkaXNwYXRjaFdyaXRlT3BlcmF0aW9uKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTdG9yYWdlOjpyZXRyaWV2ZSk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3RvcmFnZTo6c3RvcmUpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrQ2FjaGU6OlN0b3JhZ2U6OnRyYXZlcnNlKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0NhY2hlOjpTdG9yYWdlOjpjbGVhcik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlU3VicmVzb3VyY2VzRW50cnkuY3BwOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrQ2FjaGU6OlN1YnJlc291cmNlc0VudHJ5OjpTdWJyZXNvdXJjZXNFbnRyeSk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3VicmVzb3VyY2VzRW50cnk6OnVwZGF0ZVN1YnJl
c291cmNlS2V5cyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Np
b25Db2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrOjpOZXR3b3JrRGF0
YVRhc2spOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3Vw
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNsZWFyRGlza0NhY2hlKToK
KyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaDoKKyAgICAgICAgKElQQzo6
QXJndW1lbnRDb2RlcjxXVEY6Ok9wdGlvbmFsPFQ+Pjo6ZGVjb2RlKToKKyAgICAgICAgKiBQbGF0
Zm9ybS9JUEMvQXJndW1lbnREZWNvZGVyLmNwcDoKKyAgICAgICAgKElQQzo6QXJndW1lbnREZWNv
ZGVyOjpBcmd1bWVudERlY29kZXIpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9Bcmd1bWVudEVu
Y29kZXIuY3BwOgorICAgICAgICAoSVBDOjpBcmd1bWVudEVuY29kZXI6OmFkZEF0dGFjaG1lbnQp
OgorICAgICAgICAoSVBDOjpBcmd1bWVudEVuY29kZXI6OnJlbGVhc2VBdHRhY2htZW50cyk6Cisg
ICAgICAgICogUGxhdGZvcm0vSVBDL0F0dGFjaG1lbnQuY3BwOgorICAgICAgICAoSVBDOjpBdHRh
Y2htZW50OjplbmNvZGUpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcDoK
KyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6U3luY01lc3NhZ2VTdGF0ZTo6cHJvY2Vzc0luY29t
aW5nTWVzc2FnZSk6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OlN5bmNNZXNzYWdlU3RhdGU6
OmRpc3BhdGNoTWVzc2FnZXMpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpkaXNwYXRjaFdv
cmtRdWV1ZU1lc3NhZ2VSZWNlaXZlck1lc3NhZ2UpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9u
OjpzZW5kTWVzc2FnZSk6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnNlbmRTeW5jUmVwbHkp
OgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjp3YWl0Rm9yTWVzc2FnZSk6CisgICAgICAgIChJ
UEM6OkNvbm5lY3Rpb246OnNlbmRTeW5jTWVzc2FnZSk6CisgICAgICAgIChJUEM6OkNvbm5lY3Rp
b246OnNlbmRTeW5jTWVzc2FnZUZyb21TZWNvbmRhcnlUaHJlYWQpOgorICAgICAgICAoSVBDOjpD
b25uZWN0aW9uOjp3YWl0Rm9yU3luY1JlcGx5KToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6
cHJvY2Vzc0luY29taW5nU3luY1JlcGx5KToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6cHJv
Y2Vzc0luY29taW5nTWVzc2FnZSk6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OnNlbmRPdXRn
b2luZ01lc3NhZ2VzKToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6ZGlzcGF0Y2hTeW5jTWVz
c2FnZSk6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OmVucXVldWVJbmNvbWluZ01lc3NhZ2Up
OgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpkaXNwYXRjaE9uZU1lc3NhZ2UpOgorICAgICAg
ICAqIFBsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmg6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246
OklkZW50aWZpZXI6OklkZW50aWZpZXIpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpzZW5k
KToKKyAgICAgICAgKElQQzo6Q29ubmVjdGlvbjo6c2VuZFN5bmMpOgorICAgICAgICAqIFBsYXRm
b3JtL0lQQy9IYW5kbGVNZXNzYWdlLmg6CisgICAgICAgIChJUEM6OmhhbmRsZU1lc3NhZ2UpOgor
ICAgICAgICAoSVBDOjpoYW5kbGVNZXNzYWdlRGVsYXllZCk6CisgICAgICAgICogUGxhdGZvcm0v
SVBDL01lc3NhZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKElQQzo6TWVzc2FnZURlY29kZXI6Ok1l
c3NhZ2VEZWNvZGVyKToKKyAgICAgICAgKElQQzo6TWVzc2FnZURlY29kZXI6OnNldEltcG9ydGFu
Y2VBc3NlcnRpb24pOgorICAgICAgICAoSVBDOjpNZXNzYWdlRGVjb2Rlcjo6dW53cmFwRm9yVGVz
dGluZyk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL01lc3NhZ2VEZWNvZGVyLmg6CisgICAgICAg
IChJUEM6Ok1lc3NhZ2VEZWNvZGVyOjpzZXRNZXNzYWdlUHJvY2Vzc2luZ1Rva2VuKToKKyAgICAg
ICAgKiBQbGF0Zm9ybS9JUEMvTWVzc2FnZUVuY29kZXIuY3BwOgorICAgICAgICAoSVBDOjpNZXNz
YWdlRW5jb2Rlcjo6d3JhcEZvclRlc3RpbmcpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9NZXNz
YWdlUmVjb3JkZXIuY3BwOgorICAgICAgICAoSVBDOjpNZXNzYWdlUmVjb3JkZXI6OnJlY29yZE91
dGdvaW5nTWVzc2FnZSk6CisgICAgICAgIChJUEM6Ok1lc3NhZ2VSZWNvcmRlcjo6cmVjb3JkSW5j
b21pbmdNZXNzYWdlKToKKyAgICAgICAgKElQQzo6TWVzc2FnZVJlY29yZGVyOjpNZXNzYWdlUHJv
Y2Vzc2luZ1Rva2VuOjpNZXNzYWdlUHJvY2Vzc2luZ1Rva2VuKToKKyAgICAgICAgKiBQbGF0Zm9y
bS9JUEMvTWVzc2FnZVNlbmRlci5jcHA6CisgICAgICAgIChJUEM6Ok1lc3NhZ2VTZW5kZXI6OnNl
bmRNZXNzYWdlKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvTWVzc2FnZVNlbmRlci5oOgorICAg
ICAgICAoSVBDOjpNZXNzYWdlU2VuZGVyOjpzZW5kKToKKyAgICAgICAgKElQQzo6TWVzc2FnZVNl
bmRlcjo6c2VuZFN5bmMpOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9nbGliL0dTb2NrZXRNb25p
dG9yLmNwcDoKKyAgICAgICAgKElQQzo6R1NvY2tldE1vbml0b3I6OnN0YXJ0KToKKyAgICAgICAg
KiBQbGF0Zm9ybS9JUEMvbWFjL0Nvbm5lY3Rpb25NYWMubW06CisgICAgICAgIChJUEM6OkNvbm5l
Y3Rpb246Om9wZW4pOgorICAgICAgICAoSVBDOjpjcmVhdGVNZXNzYWdlRGVjb2Rlcik6CisgICAg
ICAgIChJUEM6OkNvbm5lY3Rpb246OnJlY2VpdmVTb3VyY2VFdmVudEhhbmRsZXIpOgorICAgICAg
ICAqIFBsYXRmb3JtL0lQQy91bml4L0Nvbm5lY3Rpb25Vbml4LmNwcDoKKyAgICAgICAgKElQQzo6
Q29ubmVjdGlvbjo6cHJvY2Vzc01lc3NhZ2UpOgorICAgICAgICAqIFBsYXRmb3JtL3VuaXgvU2hh
cmVkTWVtb3J5VW5peC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SGFuZGxl
OjpkZWNvZGUpOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWRNZW1vcnk6OkhhbmRsZTo6cmVsZWFz
ZUF0dGFjaG1lbnQpOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWRNZW1vcnk6OkhhbmRsZTo6YWRv
cHRBdHRhY2htZW50KToKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL0VudHJ5UG9pbnQvbWFjL1hQ
Q1NlcnZpY2UvUGx1Z2luU2VydmljZUVudHJ5UG9pbnQubW06CisgICAgICAgIChXZWJLaXQ6OlBs
dWdpblNlcnZpY2VJbml0aWFsaXplckRlbGVnYXRlOjpQbHVnaW5TZXJ2aWNlSW5pdGlhbGl6ZXJE
ZWxlZ2F0ZSk6CisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9QbHVnaW5Qcm9jZXNzLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzczo6aW5pdGlhbGl6ZVBsdWdpblByb2Nlc3MpOgor
ICAgICAgICAqIFBsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzQ29ubmVjdGlvbjo6YWRkUGx1Z2luQ29udHJvbGxlclByb3h5
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZVBsdWdpbklu
dGVybmFsKToKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL21hYy9QbHVnaW5Qcm9jZXNzTWFjLm1t
OgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVQbHVn
aW5Qcm9jZXNzKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9MZWdhY3lNZXNzYWdlUmVjZWl2
ZXItZXhwZWN0ZWQuY3BwOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFBsdWdpblBy
b2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk6OkRlbGF5ZWRSZXBseSk6CisgICAgICAgIChN
ZXNzYWdlczo6V2ViUGFnZTo6R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBs
eTo6c2VuZCk6CisgICAgICAgIChNZXNzYWdlczo6V2ViUGFnZTo6VGVzdE11bHRpcGxlQXR0cmli
dXRlczo6RGVsYXllZFJlcGx5OjpEZWxheWVkUmVwbHkpOgorICAgICAgICAoTWVzc2FnZXM6Oldl
YlBhZ2U6OlRlc3RNdWx0aXBsZUF0dHJpYnV0ZXM6OkRlbGF5ZWRSZXBseTo6c2VuZCk6CisgICAg
ICAgICogU2NyaXB0cy93ZWJraXQvTWVzc2FnZVJlY2VpdmVyLWV4cGVjdGVkLmNwcDoKKyAgICAg
ICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXll
ZFJlcGx5OjpEZWxheWVkUmVwbHkpOgorICAgICAgICAoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFBs
dWdpblByb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk6OnNlbmQpOgorICAgICAgICAoTWVz
c2FnZXM6OldlYlBhZ2U6OlRlc3RNdWx0aXBsZUF0dHJpYnV0ZXM6OkRlbGF5ZWRSZXBseTo6RGVs
YXllZFJlcGx5KToKKyAgICAgICAgKE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXN0TXVsdGlwbGVBdHRy
aWJ1dGVzOjpEZWxheWVkUmVwbHk6OnNlbmQpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L21l
c3NhZ2VzLnB5OgorICAgICAgICAoZ2VuZXJhdGVfbWVzc2FnZV9oYW5kbGVyKToKKyAgICAgICAg
KiBTaGFyZWQvQVBJL0FQSUFycmF5LmNwcDoKKyAgICAgICAgKEFQSTo6QXJyYXk6OmNyZWF0ZSk6
CisgICAgICAgIChBUEk6OkFycmF5OjpjcmVhdGVTdHJpbmdBcnJheSk6CisgICAgICAgIChBUEk6
OkFycmF5Ojpjb3B5KToKKyAgICAgICAgKiBTaGFyZWQvQVBJL0FQSUFycmF5Lmg6CisgICAgICAg
ICogU2hhcmVkL0FQSS9BUElEaWN0aW9uYXJ5LmNwcDoKKyAgICAgICAgKEFQSTo6RGljdGlvbmFy
eTo6Y3JlYXRlKToKKyAgICAgICAgKEFQSTo6RGljdGlvbmFyeTo6RGljdGlvbmFyeSk6CisgICAg
ICAgIChBUEk6OkRpY3Rpb25hcnk6OmtleXMpOgorICAgICAgICAqIFNoYXJlZC9BUEkvQVBJUGFn
ZUdyb3VwSGFuZGxlLmNwcDoKKyAgICAgICAgKEFQSTo6UGFnZUdyb3VwSGFuZGxlOjpjcmVhdGUp
OgorICAgICAgICAoQVBJOjpQYWdlR3JvdXBIYW5kbGU6OlBhZ2VHcm91cEhhbmRsZSk6CisgICAg
ICAgIChBUEk6OlBhZ2VHcm91cEhhbmRsZTo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvQVBJ
L0FQSVN0cmluZy5oOgorICAgICAgICAqIFNoYXJlZC9BUEkvQVBJVVJMLmg6CisgICAgICAgIChB
UEk6OlVSTDo6Y3JlYXRlKToKKyAgICAgICAgKEFQSTo6VVJMOjpVUkwpOgorICAgICAgICAqIFNo
YXJlZC9BUEkvQ29jb2EvUmVtb3RlT2JqZWN0SW52b2NhdGlvbi5oOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVPYmplY3RJbnZvY2F0aW9uOjpSZXBseUluZm86OlJlcGx5SW5mbyk6CisgICAgICAg
ICogU2hhcmVkL0FQSS9Db2NvYS9SZW1vdGVPYmplY3RJbnZvY2F0aW9uLm1tOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVPYmplY3RJbnZvY2F0aW9uOjpSZW1vdGVPYmplY3RJbnZvY2F0aW9uKToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlT2JqZWN0SW52b2NhdGlvbjo6ZGVjb2RlKToKKyAgICAg
ICAgKiBTaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29kZXIubW06CisgICAgICAgIChl
bnN1cmVPYmplY3RTdHJlYW0pOgorICAgICAgICAoY3JlYXRlRW5jb2RlZE9iamVjdCk6CisgICAg
ICAgICogU2hhcmVkL0FQSS9Db2NvYS9fV0tSZW1vdGVPYmplY3RJbnRlcmZhY2UubW06CisgICAg
ICAgIChpbml0aWFsaXplTWV0aG9kKToKKyAgICAgICAgKC1bX1dLUmVtb3RlT2JqZWN0SW50ZXJm
YWNlIHNldENsYXNzZXM6Zm9yU2VsZWN0b3I6YXJndW1lbnRJbmRleDpvZlJlcGx5Ol0pOgorICAg
ICAgICAqIFNoYXJlZC9BUEkvQ29jb2EvX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkubW06CisgICAg
ICAgICgtW19XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5IF9zZW5kSW52b2NhdGlvbjppbnRlcmZhY2U6
XSk6CisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLQXJyYXkuY3BwOgorICAgICAgICAoV0tBcnJh
eUNyZWF0ZSk6CisgICAgICAgIChXS0FycmF5Q3JlYXRlQWRvcHRpbmdWYWx1ZXMpOgorICAgICAg
ICAqIFNoYXJlZC9BUEkvYy9XS0RpY3Rpb25hcnkuY3BwOgorICAgICAgICAoV0tEaWN0aW9uYXJ5
Q3JlYXRlKToKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvV0tTaGFyZWRBUElDYXN0Lmg6CisgICAg
ICAgIChXZWJLaXQ6OlByb3h5aW5nUmVmUHRyOjpQcm94eWluZ1JlZlB0cik6CisgICAgICAgICog
U2hhcmVkL0FQSVdlYkFyY2hpdmUubW06CisgICAgICAgIChBUEk6OldlYkFyY2hpdmU6OldlYkFy
Y2hpdmUpOgorICAgICAgICAoQVBJOjpXZWJBcmNoaXZlOjpzdWJyZXNvdXJjZXMpOgorICAgICAg
ICAoQVBJOjpXZWJBcmNoaXZlOjpzdWJmcmFtZUFyY2hpdmVzKToKKyAgICAgICAgKiBTaGFyZWQv
QXN5bmNSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6QXN5bmNSZXF1ZXN0OjpBc3luY1Jl
cXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpBc3luY1JlcXVlc3Q6OnNldEFib3J0SGFuZGxlcik6
CisgICAgICAgICogU2hhcmVkL0FzeW5jUmVxdWVzdC5oOgorICAgICAgICAqIFNoYXJlZC9CbG9j
a2luZ1Jlc3BvbnNlTWFwLmg6CisgICAgICAgIChCbG9ja2luZ1Jlc3BvbnNlTWFwOjpkaWRSZWNl
aXZlUmVzcG9uc2UpOgorICAgICAgICAqIFNoYXJlZC9DaGlsZFByb2Nlc3NQcm94eS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OkNoaWxkUHJvY2Vzc1Byb3h5OjpzZW5kTWVzc2FnZSk6CisgICAgICAg
IChXZWJLaXQ6OkNoaWxkUHJvY2Vzc1Byb3h5OjpkaWRGaW5pc2hMYXVuY2hpbmcpOgorICAgICAg
ICAqIFNoYXJlZC9DaGlsZFByb2Nlc3NQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpDaGlsZFBy
b2Nlc3NQcm94eTo6c2VuZCk6CisgICAgICAgIChXZWJLaXQ6OkNoaWxkUHJvY2Vzc1Byb3h5Ojpz
ZW5kU3luYyk6CisgICAgICAgICogU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0
ZWRHcmFwaGljc1NjZW5lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRHcmFwaGlj
c1NjZW5lOjpkaXNwYXRjaE9uTWFpblRocmVhZCk6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5h
dGVkR3JhcGhpY3NTY2VuZTo6ZGlzcGF0Y2hPbkNsaWVudFJ1bkxvb3ApOgorICAgICAgICAoV2Vi
S2l0OjpDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OmNyZWF0ZUxheWVyKToKKyAgICAgICAgKFdl
YktpdDo6Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpzeW5jUmVtb3RlQ29udGVudCk6CisgICAg
ICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6YXBwZW5kVXBkYXRlKToKKyAg
ICAgICAgKiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhy
ZWFkU2FmZUNvb3JkaW5hdGVkU3VyZmFjZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlRocmVhZFNh
ZmVDb29yZGluYXRlZFN1cmZhY2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlRocmVhZFNh
ZmVDb29yZGluYXRlZFN1cmZhY2U6OlRocmVhZFNhZmVDb29yZGluYXRlZFN1cmZhY2UpOgorICAg
ICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJl
YWRlZENvbXBvc2l0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpDb21wb3NpdGluZ1J1bkxvb3A6
OkNvbXBvc2l0aW5nUnVuTG9vcCk6CisgICAgICAgIChXZWJLaXQ6OkNvbXBvc2l0aW5nUnVuTG9v
cDo6Y2FsbE9uQ29tcG9zaXRpbmdSdW5Mb29wKToKKyAgICAgICAgKFdlYktpdDo6VGhyZWFkZWRD
b21wb3NpdG9yOjpjYWxsT25Db21wb3NpdGluZ1RocmVhZCk6CisgICAgICAgICogU2hhcmVkL0Vu
dHJ5UG9pbnRVdGlsaXRpZXMvbWFjL1hQQ1NlcnZpY2UvWFBDU2VydmljZUVudHJ5UG9pbnQuaDoK
KyAgICAgICAgKFdlYktpdDo6WFBDU2VydmljZUluaXRpYWxpemVyRGVsZWdhdGU6OlhQQ1NlcnZp
Y2VJbml0aWFsaXplckRlbGVnYXRlKToKKyAgICAgICAgKFdlYktpdDo6WFBDU2VydmljZUluaXRp
YWxpemVyKToKKyAgICAgICAgKiBTaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9QbHVnaW5JbmZvcm1h
dGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OmNyZWF0ZVBsdWdpbkluZm9ybWF0aW9uRGljdGlv
bmFyeSk6CisgICAgICAgICogU2hhcmVkL1Njcm9sbGluZy9SZW1vdGVTY3JvbGxpbmdDb29yZGlu
YXRvclRyYW5zYWN0aW9uLmg6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVNjcm9sbGluZ0Nvb3Jk
aW5hdG9yVHJhbnNhY3Rpb246OnNldFN0YXRlVHJlZVRvRW5jb2RlKToKKyAgICAgICAgKiBTaGFy
ZWQvU2Vzc2lvblRyYWNrZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpTZXNzaW9uVHJhY2tlcjo6
c2V0U2Vzc2lvbik6CisgICAgICAgICogU2hhcmVkL1VzZXJEYXRhLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6VXNlckRhdGE6OlVzZXJEYXRhKToKKyAgICAgICAgKFdlYktpdDo6dHJhbnNmb3JtR3Jh
cGgpOgorICAgICAgICAoV2ViS2l0OjpVc2VyRGF0YTo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFy
ZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tG
b3J3YXJkTGlzdEl0ZW06OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJk
TGlzdEl0ZW06OldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0pOgorICAgICAgICAqIFNoYXJlZC9XZWJC
YWNrRm9yd2FyZExpc3RJdGVtLmg6CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlz
dEl0ZW06OnNldFBhZ2VTdGF0ZSk6CisgICAgICAgICogU2hhcmVkL1dlYkNvbXBpbGVkQ29udGVu
dEV4dGVuc2lvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbXBpbGVkQ29udGVudEV4dGVu
c2lvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29tcGlsZWRDb250ZW50RXh0ZW5z
aW9uOjpXZWJDb21waWxlZENvbnRlbnRFeHRlbnNpb24pOgorICAgICAgICAqIFNoYXJlZC9XZWJD
b21waWxlZENvbnRlbnRFeHRlbnNpb25EYXRhLmg6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbXBp
bGVkQ29udGVudEV4dGVuc2lvbkRhdGE6OldlYkNvbXBpbGVkQ29udGVudEV4dGVuc2lvbkRhdGEp
OgorICAgICAgICAqIFNoYXJlZC9XZWJDb250ZXh0TWVudUl0ZW0uY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJDb250ZXh0TWVudUl0ZW06OnN1Ym1lbnVJdGVtc0FzQVBJQXJyYXkpOgorICAgICAg
ICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAoSVBDOjpBcmd1
bWVudENvZGVyPFVzZXJTdHlsZVNoZWV0Pjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1l
bnRDb2RlcjxVc2VyU2NyaXB0Pjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2Rl
cjxGaWx0ZXJPcGVyYXRpb25zPjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2Rl
cjxCbG9iUGFydD46OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1dlYktleWJvYXJkRXZlbnQu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJLZXlib2FyZEV2ZW50OjpXZWJLZXlib2FyZEV2ZW50
KToKKyAgICAgICAgKiBTaGFyZWQvV2ViUHJlZmVyZW5jZXNTdG9yZS5oOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1ZTo6VmFsdWUpOgorICAgICAgICAqIFNoYXJl
ZC9XZWJSZW5kZXJMYXllci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlbmRlckxheWVyOjpj
cmVhdGVBcnJheUZyb21MYXllckxpc3QpOgorICAgICAgICAqIFNoYXJlZC9XZWJSZW5kZXJPYmpl
Y3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZW5kZXJPYmplY3Q6OldlYlJlbmRlck9iamVj
dCk6CisgICAgICAgICogU2hhcmVkL1dlYlRvdWNoRXZlbnQuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJUb3VjaEV2ZW50OjpXZWJUb3VjaEV2ZW50KToKKyAgICAgICAgKiBTaGFyZWQvZWZsL1dl
YkV2ZW50RmFjdG9yeS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkV2ZW50RmFjdG9yeTo6Y3Jl
YXRlV2ViVG91Y2hFdmVudCk6CisgICAgICAgICogU2hhcmVkL2d0ay9OYXRpdmVXZWJLZXlib2Fy
ZEV2ZW50R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmF0aXZlV2ViS2V5Ym9hcmRFdmVudDo6
TmF0aXZlV2ViS2V5Ym9hcmRFdmVudCk6CisgICAgICAgICogU2hhcmVkL2d0ay9OYXRpdmVXZWJU
b3VjaEV2ZW50R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmF0aXZlV2ViVG91Y2hFdmVudDo6
TmF0aXZlV2ViVG91Y2hFdmVudCk6CisgICAgICAgICogU2hhcmVkL2d0ay9XZWJDb250ZXh0TWVu
dUl0ZW1HdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0TWVudUl0ZW1HdGs6Oldl
YkNvbnRleHRNZW51SXRlbUd0ayk6CisgICAgICAgICogU2hhcmVkL2d0ay9XZWJFdmVudEZhY3Rv
cnkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYktleWJv
YXJkRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYlRv
dWNoRXZlbnQpOgorICAgICAgICAqIFNoYXJlZC9saW51eC9TZWNjb21wRmlsdGVycy9PcGVuU3lz
Y2FsbC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok9wZW5TeXNjYWxsOjpjcmVhdGVGcm9tT3BlbmF0
Q29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6Ok9wZW5TeXNjYWxsOjpjcmVhdGVGcm9tQ3JlYXRD
b250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6T3BlblN5c2NhbGxSZXN1bHQ6OmVuY29kZSk6Cisg
ICAgICAgICogU2hhcmVkL21hYy9PYmpDT2JqZWN0R3JhcGgubW06CisgICAgICAgIChXZWJLaXQ6
Ok9iakNPYmplY3RHcmFwaDo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvbWFjL1JlbW90ZUxh
eWVyQmFja2luZ1N0b3JlLm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllckJhY2tpbmdT
dG9yZTo6dGFrZUZyb250Q29udGV4dFBlbmRpbmdGbHVzaCk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUxheWVyQmFja2luZ1N0b3JlOjpCdWZmZXI6OmRpc2NhcmQpOgorICAgICAgICAqIFNoYXJl
ZC9tYWMvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24uaDoKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OnNldENhbGxiYWNrSURzKToKKyAgICAgICAgKiBTaGFy
ZWQvbWFjL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1tOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6TGF5ZXJQcm9wZXJ0aWVzOjpkZWNvZGUpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6ZGVjb2RlKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OnNldENyZWF0ZWRMYXllcnMp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6c2V0RGVzdHJv
eWVkTGF5ZXJJRHMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlv
bjo6c2V0TGF5ZXJJRHNXaXRoTmV3bHlVbnJlYWNoYWJsZUJhY2tpbmdTdG9yZSk6CisgICAgICAg
ICogU2hhcmVkL3NvdXAvV2ViQ29yZUFyZ3VtZW50Q29kZXJzU291cC5jcHA6CisgICAgICAgIChJ
UEM6OkFyZ3VtZW50Q29kZXI8UmVzb3VyY2VSZXF1ZXN0Pjo6ZGVjb2RlUGxhdGZvcm1EYXRhKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJU2Vzc2lvblN0YXRlLmNwcDoKKyAgICAgICAgKEFQ
STo6U2Vzc2lvblN0YXRlOjpjcmVhdGUpOgorICAgICAgICAoQVBJOjpTZXNzaW9uU3RhdGU6OlNl
c3Npb25TdGF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElVc2VyQ29udGVudEV4dGVu
c2lvbi5jcHA6CisgICAgICAgIChBUEk6OlVzZXJDb250ZW50RXh0ZW5zaW9uOjpVc2VyQ29udGVu
dEV4dGVuc2lvbik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElVc2VyQ29udGVudEV4dGVu
c2lvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJVXNlckNvbnRlbnRFeHRlbnNpb25T
dG9yZS5jcHA6CisgICAgICAgIChBUEk6OmNvbXBpbGVkVG9GaWxlKToKKyAgICAgICAgKEFQSTo6
Y3JlYXRlRXh0ZW5zaW9uKToKKyAgICAgICAgKEFQSTo6VXNlckNvbnRlbnRFeHRlbnNpb25TdG9y
ZTo6Y29tcGlsZUNvbnRlbnRFeHRlbnNpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJ
VXNlclNjcmlwdC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFSZWNv
cmQuY3BwOgorICAgICAgICAoQVBJOjpXZWJzaXRlRGF0YVJlY29yZDo6Y3JlYXRlKToKKyAgICAg
ICAgKEFQSTo6V2Vic2l0ZURhdGFSZWNvcmQ6OldlYnNpdGVEYXRhUmVjb3JkKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUuY3BwOgorICAgICAgICAoQVBJOjpX
ZWJzaXRlRGF0YVN0b3JlOjpjcmVhdGUpOgorICAgICAgICAoQVBJOjpXZWJzaXRlRGF0YVN0b3Jl
OjpXZWJzaXRlRGF0YVN0b3JlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tBcHBsaWNh
dGlvbkNhY2hlTWFuYWdlci5jcHA6CisgICAgICAgIChXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2Vy
R2V0QXBwbGljYXRpb25DYWNoZU9yaWdpbnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9X
S0tleVZhbHVlU3RvcmFnZU1hbmFnZXIuY3BwOgorICAgICAgICAoV0tLZXlWYWx1ZVN0b3JhZ2VN
YW5hZ2VyR2V0S2V5VmFsdWVTdG9yYWdlT3JpZ2lucyk6CisgICAgICAgIChXS0tleVZhbHVlU3Rv
cmFnZU1hbmFnZXJHZXRTdG9yYWdlRGV0YWlsc0J5T3JpZ2luKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0MvV0tQYWdlLmNwcDoKKyAgICAgICAgKFdLUGFnZUNvcHlTZXNzaW9uU3RhdGUpOgor
ICAgICAgICAoV0tQYWdlUmVzdG9yZUZyb21TZXNzaW9uU3RhdGUpOgorICAgICAgICAoV0tQYWdl
U2V0UGFnZUNvbnRleHRNZW51Q2xpZW50KToKKyAgICAgICAgKFdLUGFnZVNldFBhZ2VGaW5kTWF0
Y2hlc0NsaWVudCk6CisgICAgICAgIChXS1BhZ2VTZXRQYWdlTG9hZGVyQ2xpZW50KToKKyAgICAg
ICAgKFdlYktpdDo6UnVuSmF2YVNjcmlwdEFsZXJ0UmVzdWx0TGlzdGVuZXI6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJ1bkphdmFTY3JpcHRBbGVydFJlc3VsdExpc3RlbmVyOjpSdW5KYXZh
U2NyaXB0QWxlcnRSZXN1bHRMaXN0ZW5lcik6CisgICAgICAgIChXZWJLaXQ6OlJ1bkphdmFTY3Jp
cHRDb25maXJtUmVzdWx0TGlzdGVuZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJ1bkph
dmFTY3JpcHRDb25maXJtUmVzdWx0TGlzdGVuZXI6OlJ1bkphdmFTY3JpcHRDb25maXJtUmVzdWx0
TGlzdGVuZXIpOgorICAgICAgICAoV2ViS2l0OjpSdW5KYXZhU2NyaXB0UHJvbXB0UmVzdWx0TGlz
dGVuZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJ1bkphdmFTY3JpcHRQcm9tcHRSZXN1
bHRMaXN0ZW5lcjo6UnVuSmF2YVNjcmlwdFByb21wdFJlc3VsdExpc3RlbmVyKToKKyAgICAgICAg
KFdLUGFnZVNldFBhZ2VVSUNsaWVudCk6CisgICAgICAgIChXS1BhZ2VTZXRQYWdlTmF2aWdhdGlv
bkNsaWVudCk6CisgICAgICAgIChXS1BhZ2VDb3B5UmVsYXRlZFBhZ2VzKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0MvV0tSZXNvdXJjZUNhY2hlTWFuYWdlci5jcHA6CisgICAgICAgIChXS1Jl
c291cmNlQ2FjaGVNYW5hZ2VyR2V0Q2FjaGVPcmlnaW5zKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0MvV0tTZXNzaW9uU3RhdGVSZWYuY3BwOgorICAgICAgICAoV0tTZXNzaW9uU3RhdGVDcmVh
dGVGcm9tRGF0YSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL21hYy9XS0NvbnRleHRQcml2
YXRlTWFjLm1tOgorICAgICAgICAoV0tDb250ZXh0R2V0SW5mb0Zvckluc3RhbGxlZFBsdWdJbnMp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9tYWMvV0tQYWdlUHJpdmF0ZU1hYy5tbToKKyAg
ICAgICAgKC1bV0tPYnNlcnZhYmxlUGFnZVN0YXRlIGluaXRXaXRoUGFnZTpdKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLQnJvd3NpbmdDb250ZXh0R3JvdXAubW06CisgICAgICAg
IChjcmVhdGVXS0FycmF5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
dy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IGluaXRXaXRoRnJhbWU6Y29uZmlndXJhdGlvbjpd
KToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF90YWtlVmlld1NuYXBzaG90XSk6CisgICAgICAgICgt
W1dLV2ViVmlldyBfcmVzdG9yZUZyb21TZXNzaW9uU3RhdGVEYXRhOl0pOgorICAgICAgICAoLVtX
S1dlYlZpZXcgX3NldElucHV0RGVsZWdhdGU6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1tOgorICAgICAgICAoTGF6eUluaXRpYWxpemVk
OjpzZXQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3Jl
Lm1tOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgZmV0Y2hEYXRhUmVjb3Jkc09mVHlw
ZXM6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24ubW06CisgICAgICAgICgtW19XS1Byb2Nlc3NQb29s
Q29uZmlndXJhdGlvbiBzZXRDYWNoZVBhcnRpdGlvbmVkVVJMU2NoZW1lczpdKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1Nlc3Npb25TdGF0ZS5tbToKKyAgICAgICAgKC1bX1dL
U2Vzc2lvblN0YXRlIF9pbml0V2l0aFNlc3Npb25TdGF0ZTpdKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0NvY29hL19XS1VzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmUubW06CisgICAgICAgICgt
W19XS1VzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmUgY29tcGlsZUNvbnRlbnRFeHRlbnNpb25Gb3JJ
ZGVudGlmaWVyOmVuY29kZWRDb250ZW50RXh0ZW5zaW9uOmNvbXBsZXRpb25IYW5kbGVyOl0pOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19kYXRhYmFzZV9tYW5hZ2VyLmNwcDoKKyAg
ICAgICAgKEV3a0RhdGFiYXNlTWFuYWdlcjo6Z2V0RGF0YWJhc2VPcmlnaW5zKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb250ZXh0TWVudUl0ZW0uY3BwOgorICAgICAgICAo
d2Via2l0Q29udGV4dE1lbnVJdGVtVG9XZWJDb250ZXh0TWVudUl0ZW1HdGspOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEZpbGVDaG9vc2VyUmVxdWVzdC5jcHA6CisgICAgICAg
ICh3ZWJraXRfZmlsZV9jaG9vc2VyX3JlcXVlc3Rfc2VsZWN0X2ZpbGVzKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXROb3RpZmljYXRpb25Qcm92aWRlci5jcHA6CisgICAgICAg
IChXZWJLaXROb3RpZmljYXRpb25Qcm92aWRlcjo6bm90aWZpY2F0aW9uQ2xvc2VDYWxsYmFjayk6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5jcHA6CisgICAg
ICAgICh3ZWJraXRfd2ViX2NvbnRleHRfcHJlZmV0Y2hfZG5zKToKKyAgICAgICAgKHdlYmtpdFdl
YkNvbnRleHRDcmVhdGVQYWdlRm9yV2ViVmlldyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0V2ViVmlldy5jcHA6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NuYXBz
aG90KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHA6
CisgICAgICAgICh3ZWJraXRXZWJWaWV3QmFzZVRvdWNoRXZlbnQpOgorICAgICAgICAod2Via2l0
V2ViVmlld0Jhc2VDcmVhdGVXZWJQYWdlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIuY3BwOgorICAgICAgICAod2Via2l0V2Vic2l0ZURhdGFN
YW5hZ2VyQ3JlYXRlKToKKyAgICAgICAgKHdlYmtpdFdlYnNpdGVEYXRhTWFuYWdlckdldERhdGFT
dG9yZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tOgorICAgICAgICAo
LVtXS1ZpZXcgaW5pdFdpdGhGcmFtZTpwcm9jZXNzUG9vbDpjb25maWd1cmF0aW9uOndlYlZpZXc6
XSk6CisgICAgICAgICgtW1dLVmlldyBpbml0V2l0aEZyYW1lOmNvbnRleHRSZWY6cGFnZUdyb3Vw
UmVmOnJlbGF0ZWRUb1BhZ2U6XSk6CisgICAgICAgICgtW1dLVmlldyBpbml0V2l0aEZyYW1lOmNv
bmZpZ3VyYXRpb25SZWY6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25T
dGF0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6dHJ5QXBwTGluayk6CisgICAgICAgIChXZWJLaXQ6
Ok5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdh
dGlvbkFjdGlvbik6CisgICAgICAgIChXZWJLaXQ6Ok5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlv
bkNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW06CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJ
bXBsOjpXZWJWaWV3SW1wbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjp0YWtlVmll
d1NuYXBzaG90KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29y
ZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5h
dGVkTGF5ZXJUcmVlSG9zdFByb3h5OjpkaXNwYXRjaFVwZGF0ZSk6CisgICAgICAgICogVUlQcm9j
ZXNzL0RhdGFiYXNlcy9EYXRhYmFzZVByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OkRhdGFiYXNlUHJvY2Vzc1Byb3h5OjpmZXRjaFdlYnNpdGVEYXRhKToKKyAgICAgICAgKFdlYktp
dDo6RGF0YWJhc2VQcm9jZXNzUHJveHk6OmRlbGV0ZVdlYnNpdGVEYXRhKToKKyAgICAgICAgKFdl
YktpdDo6RGF0YWJhc2VQcm9jZXNzUHJveHk6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyk6
CisgICAgICAgICogVUlQcm9jZXNzL0dlbmVyaWNDYWxsYmFjay5oOgorICAgICAgICAoV2ViS2l0
OjpDYWxsYmFja01hcDo6cHV0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvSW5zcGVjdG9yU2VydmVy
L1dlYlNvY2tldFNlcnZlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNvY2tldFNlcnZlcjo6
ZGlkQWNjZXB0Q29ubmVjdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL0luc3BlY3RvclNlcnZl
ci9zb3VwL1dlYlNvY2tldFNlcnZlclNvdXAuY3BwOgorICAgICAgICAoV2ViS2l0Ojpjb25uZWN0
aW9uQ2FsbGJhY2spOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpmZXRjaFdl
YnNpdGVEYXRhKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmlj
YXRpb25NYW5hZ2VyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJOb3RpZmljYXRpb25N
YW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlkQ2xvc2VOb3RpZmljYXRpb25zKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25Qcm92aWRlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYk5vdGlmaWNhdGlvblByb3ZpZGVyOjpjbGVhck5vdGlmaWNhdGlvbnMp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9QYWdlTG9hZFN0YXRlLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6UGFnZUxvYWRTdGF0ZTo6VHJhbnNhY3Rpb246OlRyYW5zYWN0aW9uKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvUGx1Z2lucy9QbHVnSW5BdXRvU3RhcnRQcm92aWRlci5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OlBsdWdJbkF1dG9TdGFydFByb3ZpZGVyOjphdXRvU3RhcnRPcmlnaW5zVGFibGVDb3B5
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzTWFuYWdlci5jcHA6
CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NNYW5hZ2VyOjpwbHVnaW5Qcm9jZXNzVG9r
ZW4pOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzTWFuYWdlcjo6ZmV0Y2hXZWJzaXRl
RGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NNYW5hZ2VyOjpkZWxldGVXZWJz
aXRlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NNYW5hZ2VyOjpkZWxldGVX
ZWJzaXRlRGF0YUZvckhvc3ROYW1lcyk6CisgICAgICAgICogVUlQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzc1Byb3h5
OjpmZXRjaFdlYnNpdGVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzc1Byb3h5
OjpkZWxldGVXZWJzaXRlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NQcm94
eTo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JIb3N0TmFtZXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9T
Y3JvbGxpbmcvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHk6OnVwZGF0ZVNjcm9sbGluZ1Ry
ZWUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9TdGF0aXN0aWNzUmVxdWVzdC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlN0YXRpc3RpY3NSZXF1ZXN0Ojpjb21wbGV0ZWRSZXF1ZXN0KToKKyAgICAgICAg
KiBVSVByb2Nlc3MvU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OkxvY2FsU3RvcmFnZURhdGFiYXNlOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpM
b2NhbFN0b3JhZ2VEYXRhYmFzZTo6TG9jYWxTdG9yYWdlRGF0YWJhc2UpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U3Rv
cmFnZU1hbmFnZXI6OlRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZTo6Z2V0T3JDcmVhdGVT
dG9yYWdlQXJlYSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQXJl
YTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VBcmVh
OjpTdG9yYWdlQXJlYSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2VyOjpMb2NhbFN0
b3JhZ2VOYW1lc3BhY2U6OmdldE9yQ3JlYXRlU3RvcmFnZUFyZWEpOgorICAgICAgICAoV2ViS2l0
OjpTdG9yYWdlTWFuYWdlcjo6U2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2U6OmdldE9yQ3JlYXRlU3Rv
cmFnZUFyZWEpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6Z2V0U2Vzc2lvblN0
b3JhZ2VPcmlnaW5zKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZU1hbmFnZXI6OmdldExvY2Fs
U3RvcmFnZU9yaWdpbnMpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTWFuYWdlcjo6Z2V0TG9j
YWxTdG9yYWdlT3JpZ2luRGV0YWlscyk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VNYW5hZ2Vy
OjpjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VNYXApOgorICAgICAgICAoV2ViS2l0OjpTdG9y
YWdlTWFuYWdlcjo6Y3JlYXRlU2Vzc2lvblN0b3JhZ2VNYXApOgorICAgICAgICAqIFVJUHJvY2Vz
cy9Vc2VyQ29udGVudC9XZWJTY3JpcHRNZXNzYWdlSGFuZGxlci5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJTY3JpcHRNZXNzYWdlSGFuZGxlcjo6V2ViU2NyaXB0TWVzc2FnZUhhbmRsZXIpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjphZGRV
c2VyU3R5bGVTaGVldCk6CisgICAgICAgICogVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxl
ci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6U25hcHNob3RS
ZW1vdmFsVHJhY2tlcjo6c3RhcnQpOgorICAgICAgICAoV2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRy
b2xsZXI6OlNuYXBzaG90UmVtb3ZhbFRyYWNrZXI6OmZpcmVSZW1vdmFsQ2FsbGJhY2tJbW1lZGlh
dGVseSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkTGlzdC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdDo6YWRkSXRlbSk6CisgICAgICAgIChXZWJL
aXQ6OldlYkJhY2tGb3J3YXJkTGlzdDo6YmFja0xpc3RBc0FQSUFycmF5V2l0aExpbWl0KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0Ojpmb3J3YXJkTGlzdEFzQVBJQXJyYXlX
aXRoTGltaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3Q6OnJlbW92ZUFs
bEl0ZW1zKToKKyAgICAgICAgKFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0OjpjbGVhcik6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdDo6cmVzdG9yZUZyb21TdGF0ZSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6Z2V0SG9zdG5hbWVzV2l0aENvb2tpZXMpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OmdldEhUVFBDb29raWVBY2Nl
cHRQb2xpY3kpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJGb3JtQ2xpZW50LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViRm9ybUNsaWVudDo6d2lsbFN1Ym1pdEZvcm0pOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJGcmFtZUxpc3RlbmVyUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJh
bWVMaXN0ZW5lclByb3h5OjpzZXROYXZpZ2F0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
RnJhbWVQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZVByb3h5Ojpjb250ZW50Rmls
dGVyRGlkQmxvY2tMb2FkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViR3JhbW1hckRldGFpbC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkdyYW1tYXJEZXRhaWw6Omd1ZXNzZXMpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
Ykluc3BlY3RvclByb3h5OjpjcmVhdGVJbnNwZWN0b3JQYWdlKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViTWVkaWFDYWNoZU1hbmFnZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYk1l
ZGlhQ2FjaGVNYW5hZ2VyUHJveHk6OmdldEhvc3RuYW1lc1dpdGhNZWRpYUNhY2hlKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6RXhjZWVk
ZWREYXRhYmFzZVF1b3RhUmVjb3Jkczo6YWRkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94
eSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0SGlzdG9yeUNsaWVudCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0TmF2aWdhdGlvbkNsaWVudCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0TG9hZGVyQ2xpZW50KToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5OjpzZXRQb2xpY3lDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OnNldEZvcm1DbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OnNldFVJQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRGaW5k
Q2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRGaW5kTWF0Y2hlc0Ns
aWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0RGlhZ25vc3RpY0xvZ2dp
bmdDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldENvbnRleHRNZW51
Q2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZWF0dGFjaFRvV2ViUHJv
Y2Vzc0ZvclJlbG9hZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVhdHRhY2hU
b1dlYlByb2Nlc3NXaXRoSXRlbSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bG9h
ZFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmxvYWRGaWxlKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpsb2FkRGF0YSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6bG9hZEhUTUxTdHJpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OnJlbG9hZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkQ2hhbmdl
QmFja0ZvcndhcmRMaXN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRJbml0
aWFsRm9jdXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnZhbGlkYXRlQ29tbWFu
ZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aGFuZGxlV2hlZWxFdmVudCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cHJvY2Vzc05leHRRdWV1ZWRXaGVlbEV2ZW50
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXN0b3JlRnJvbVNlc3Npb25TdGF0
ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEluTWFpbkZy
YW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpnZXRSZW5kZXJUcmVlRXh0ZXJu
YWxSZXByZXNlbnRhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0U291
cmNlRm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmdldENvbnRlbnRz
QXNTdHJpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmdldEJ5dGVjb2RlUHJv
ZmlsZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0Q29udGVudHNBc01IVE1M
RGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0U2VsZWN0aW9uT3JDb250
ZW50c0FzU3RyaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpnZXRTZWxlY3Rp
b25Bc1dlYkFyY2hpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpnZXRN
YWluUmVzb3VyY2VEYXRhT2ZGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
Z2V0UmVzb3VyY2VEYXRhRnJvbUZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpnZXRXZWJBcmNoaXZlT2ZGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JSZXNwb25zZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6c2VuZE1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OmV4Y2VlZGVkRGF0YWJhc2VRdW90YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6Z2V0TWFya2VkUmFuZ2VBc3luYyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6Z2V0U2VsZWN0ZWRSYW5nZUFzeW5jKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpjaGFyYWN0ZXJJbmRleEZvclBvaW50QXN5bmMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlQXN5bmMpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OnRha2VTbmFwc2hvdCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNldEhpc3Rv
cnlDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6c2V0RG93bmxvYWRD
bGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlV2ViUGFnZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpnZXRTdGF0aXN0aWNzKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnBsdWdpbkluZm9TdG9yZURpZExvYWRQbHVnaW5z
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVXZWJQYWdlKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzc1Byb3h5OjphZGRCYWNrRm9yd2FyZEl0ZW0pOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzUHJveHk6OmZldGNoV2Vic2l0ZURhdGEpOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVJlY29yZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNp
dGVEYXRhUmVjb3JkOjphZGQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJz
aXRlRGF0YVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6V2Vic2l0ZURhdGFTdG9y
ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmZldGNoRGF0YSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnJlbW92ZURhdGEpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJzaXRlRGF0YVN0b3JlOjptZWRpYUtleU9yaWdpbnMpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9lZmwvSW5wdXRNZXRob2RDb250ZXh0RWZsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5w
dXRNZXRob2RDb250ZXh0RWZsOjpJbnB1dE1ldGhvZENvbnRleHRFZmwpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9lZmwvSW5wdXRNZXRob2RDb250ZXh0RWZsLmg6CisgICAgICAgIChXZWJLaXQ6Oklu
cHV0TWV0aG9kQ29udGV4dEVmbDo6Y3JlYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1dl
YkNvbnRleHRNZW51UHJveHlFZmwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0TWVu
dVByb3h5RWZsOjpzaG93Q29udGV4dE1lbnUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvV2Vi
VUlQb3B1cE1lbnVDbGllbnQuY3BwOgorICAgICAgICAoV2ViVUlQb3B1cE1lbnVDbGllbnQ6OnNo
b3dQb3B1cE1lbnUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvSW5wdXRNZXRob2RGaWx0ZXIu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpJbnB1dE1ldGhvZEZpbHRlcjo6ZmlsdGVyS2V5RXZlbnQp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvS2V5QmluZGluZ1RyYW5zbGF0b3IuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpLZXlCaW5kaW5nVHJhbnNsYXRvcjo6Y29tbWFuZHNGb3JLZXlFdmVudCk6
CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9SZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdy5jcHA6
CisgICAgICAgIChXZWJLaXQ6OlhEYW1hZ2VOb3RpZmllcjo6YWRkKToKKyAgICAgICAgKFdlYktp
dDo6UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c6OlJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93
KToKKyAgICAgICAgKFdlYktpdDo6UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c6OnN1cmZhY2Up
OgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tBY3Rpb25TaGVldEFzc2lzdGFudC5tbToKKyAg
ICAgICAgKC1bV0tBY3Rpb25TaGVldEFzc2lzdGFudCBzaG93SW1hZ2VTaGVldF0pOgorICAgICAg
ICAoLVtXS0FjdGlvblNoZWV0QXNzaXN0YW50IHNob3dMaW5rU2hlZXRdKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW06CisgICAgICAgICgtW1dLQ29udGVudFZpZXcg
X2NvbW1vbkluaXRpYWxpemF0aW9uV2l0aFByb2Nlc3NQb29sOmNvbmZpZ3VyYXRpb246XSk6Cisg
ICAgICAgICgtW1dLQ29udGVudFZpZXcgaW5pdFdpdGhGcmFtZTpwcm9jZXNzUG9vbDpjb25maWd1
cmF0aW9uOndlYlZpZXc6XSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3
SW50ZXJhY3Rpb24ubW06CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgYWN0aW9uU2hlZXRBc3Np
c3RhbnQ6ZGVjaWRlQWN0aW9uc0ZvckVsZW1lbnQ6ZGVmYXVsdEFjdGlvbnM6XSk6CisgICAgICAg
ICogVUlQcm9jZXNzL2lvcy9XS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MubW06CisgICAgICAgICgt
W1dLR2VvbG9jYXRpb25Qcm92aWRlcklPUyBnZW9sb2NhdGlvbkF1dGhvcml6YXRpb25HcmFudGVk
XSk6CisgICAgICAgICgtW1dLR2VvbG9jYXRpb25Qcm92aWRlcklPUyBnZW9sb2NhdGlvbkF1dGhv
cml6YXRpb25EZW5pZWRdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLUERGVmlldy5tbToK
KyAgICAgICAgKC1bV0tQREZWaWV3IGFjdGlvblNoZWV0QXNzaXN0YW50OmRlY2lkZUFjdGlvbnNG
b3JFbGVtZW50OmRlZmF1bHRBY3Rpb25zOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV2Vi
UGFnZVByb3h5SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNlbGVjdFdp
dGhHZXN0dXJlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp1cGRhdGVTZWxlY3Rp
b25XaXRoVG91Y2hlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVxdWVzdEF1
dG9jb3JyZWN0aW9uRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6YXBwbHlB
dXRvY29ycmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZXhlY3V0ZUVk
aXRDb21tYW5kKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZWxlY3RUZXh0V2l0
aEdyYW51bGFyaXR5QXRQb2ludCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2Vs
ZWN0UG9zaXRpb25BdEJvdW5kYXJ5V2l0aERpcmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6bW92ZVNlbGVjdGlvbkF0Qm91bmRhcnlXaXRoRGlyZWN0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZWxlY3RQb3NpdGlvbkF0UG9pbnQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmJlZ2luU2VsZWN0aW9uSW5EaXJlY3Rpb24pOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnVwZGF0ZVNlbGVjdGlvbldpdGhFeHRlbnRQb2lu
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6dXBkYXRlU2VsZWN0aW9uV2l0aEV4
dGVudFBvaW50QW5kQm91bmRhcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJl
cXVlc3REaWN0YXRpb25Db250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpy
ZXF1ZXN0QXV0b2NvcnJlY3Rpb25Db250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpnZXRMb29rdXBDb250ZXh0QXRQb2ludCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6c2VsZWN0V2l0aFR3b1RvdWNoZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6Om1vdmVTZWxlY3Rpb25CeU9mZnNldCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6Zm9jdXNOZXh0QXNzaXN0ZWROb2RlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dlYlZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV2Vi
VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmNyZWF0ZU1vZGVsQW5kSW50ZXJmYWNlKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRmlsZVVwbG9hZFBhbmVsLm1tOgorICAgICAgICAo
LVtXS0ZpbGVVcGxvYWRQYW5lbCBfY2hvb3NlRmlsZXM6ZGlzcGxheVN0cmluZzppY29uSW1hZ2U6
XSk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9MZWdhY3lTZXNzaW9uU3RhdGVDb2RpbmcuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpIaXN0b3J5RW50cnlEYXRhRW5jb2Rlcjo6ZmluaXNoRW5jb2Rp
bmcpOgorICAgICAgICAoV2ViS2l0OjpkZWNvZGVGb3JtRGF0YSk6CisgICAgICAgIChXZWJLaXQ6
OmRlY29kZUJhY2tGb3J3YXJkVHJlZU5vZGUpOgorICAgICAgICAoV2ViS2l0OjpkZWNvZGVTZXNz
aW9uSGlzdG9yeUVudHJpZXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvUmVtb3RlTGF5ZXJU
cmVlRHJhd2luZ0FyZWFQcm94eS5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVl
RHJhd2luZ0FyZWFQcm94eTo6ZGlzcGF0Y2hBZnRlckVuc3VyaW5nRHJhd2luZyk6CisgICAgICAg
ICogVUlQcm9jZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuaDoKKyAgICAgICAgKFdlYktp
dDo6Vmlld0dlc3R1cmVDb250cm9sbGVyOjpzZXRDdXN0b21Td2lwZVZpZXdzKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvbWFjL1ZpZXdHZXN0dXJlQ29udHJvbGxlck1hYy5tbToKKyAgICAgICAgKFdl
YktpdDo6Vmlld0dlc3R1cmVDb250cm9sbGVyOjpQZW5kaW5nU3dpcGVUcmFja2VyOjpQZW5kaW5n
U3dpcGVUcmFja2VyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1ZpZXdTbmFwc2hvdFN0b3Jl
Lm1tOgorICAgICAgICAoV2ViS2l0OjpWaWV3U25hcHNob3Q6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJLaXQ6OlZpZXdTbmFwc2hvdDo6Vmlld1NuYXBzaG90KToKKyAgICAgICAgKFdlYktpdDo6Vmll
d1NuYXBzaG90OjpzZXRTdXJmYWNlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dlYlBhZ2VQ
cm94eU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjphdHRyaWJ1dGVkU3Vi
c3RyaW5nRm9yQ2hhcmFjdGVyUmFuZ2VBc3luYyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6Zm9udEF0U2VsZWN0aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHA6CisgICAgICAgIChjb250ZXh0TWVudUl0ZW1zKToK
KyAgICAgICAgKFdLQnVuZGxlUGFnZUNvcHlPcmlnaW5zV2l0aEFwcGxpY2F0aW9uQ2FjaGUpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlT3Zl
cmxheS5jcHA6CisgICAgICAgIChXS0J1bmRsZVBhZ2VPdmVybGF5Q3JlYXRlKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9lZmwvZXdrX2V4dGVuc2lvbi5jcHA6Cisg
ICAgICAgIChFd2tFeHRlbnNpb246OmRpZENyZWF0ZVBhZ2UpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJQYWdlLmNwcDoKKyAgICAgICAgKHdl
YmtpdEZyYW1lR2V0T3JDcmVhdGUpOgorICAgICAgICAoZGlkSW5pdGlhdGVMb2FkRm9yUmVzb3Vy
Y2UpOgorICAgICAgICAod2lsbFNlbmRSZXF1ZXN0Rm9yRnJhbWUpOgorICAgICAgICAoZGlkUmVj
ZWl2ZVJlc3BvbnNlRm9yUmVzb3VyY2UpOgorICAgICAgICAoZGlkUmVjZWl2ZUNvbnRlbnRMZW5n
dGhGb3JSZXNvdXJjZSk6CisgICAgICAgIChkaWRGaW5pc2hMb2FkRm9yUmVzb3VyY2UpOgorICAg
ICAgICAoZGlkRmFpbExvYWRGb3JSZXNvdXJjZSk6CisgICAgICAgICh3ZWJraXRXZWJQYWdlRGlk
UmVjZWl2ZU1lc3NhZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW06CisgICAg
ICAgICgtW1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlciBfc2V0Rm9y
bURlbGVnYXRlOl0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZTo6YWRkVXNlclNj
cmlwdCk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlOjphZGRVc2VyU3R5bGVTaGVl
dCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUJh
Y2tGb3J3YXJkTGlzdEl0ZW0uY3BwOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZUJh
Y2tGb3J3YXJkTGlzdEl0ZW06OmNoaWxkcmVuKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQ6OmdldEN1c3Rv
bU1lbnVGcm9tRGVmYXVsdEl0ZW1zKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlUGFnZUZvcm1DbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpJ
bmplY3RlZEJ1bmRsZVBhZ2VGb3JtQ2xpZW50Ojp3aWxsU2VuZFN1Ym1pdEV2ZW50KToKKyAgICAg
ICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQYWdlRm9ybUNsaWVudDo6d2lsbFN1Ym1pdEZvcm0p
OgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VGb3JtQ2xpZW50OjpkaWRBc3Nv
Y2lhdGVGb3JtQ29udHJvbHMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGVQYWdlUmVzb3VyY2VMb2FkQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6SW5qZWN0ZWRCdW5kbGVQYWdlUmVzb3VyY2VMb2FkQ2xpZW50Ojp3aWxsU2VuZFJlcXVlc3RG
b3JGcmFtZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVy
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVxdWVz
dCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlQnJvd3Nl
ckZ1bmNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TlBOX1Bvc3RVUkwpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHA6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjpzY2hlZHVsZVRpbWVyKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1BsdWdpbnMvTmV0c2NhcGUvbWFjL05ldHNjYXBlUGx1Z2luTWFjLm1tOgorICAgICAgICAo
V2ViS2l0Ojpjb252ZXJ0U3RyaW5nVG9LZXlDb2Rlcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BERi9EZXByZWNhdGVkUERGUGx1Z2luLm1tOgorICAgICAgICAoV2ViS2l0OjpQREZQ
bHVnaW46OlBERlBsdWdpbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQ
bHVnaW4ubW06CisgICAgICAgICgtW1dLUERGSFVEQW5pbWF0aW9uRGVsZWdhdGUgaW5pdFdpdGhB
bmltYXRpb25Db21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdp
bnMvUERGL1BERlBsdWdpbkNob2ljZUFubm90YXRpb24ubW06CisgICAgICAgIChXZWJLaXQ6OlBE
RlBsdWdpbkNob2ljZUFubm90YXRpb246OmNyZWF0ZUFubm90YXRpb25FbGVtZW50KToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZUFyZWFNYXAuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpTdG9yYWdlQXJlYU1hcDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFy
ZWFNYXA6OlN0b3JhZ2VBcmVhTWFwKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvU3Rv
cmFnZU5hbWVzcGFjZUltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlTmFtZXNwYWNl
SW1wbDo6c3RvcmFnZUFyZWEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlckNvbnRl
bnRDb250cm9sbGVyOjphZGRVc2VyQ29udGVudEV4dGVuc2lvbnMpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2Vzc2lvblN0YXRlQ29udmVyc2lvbi5jcHA6CisgICAgICAg
IChXZWJLaXQ6OnRvSFRUUEJvZHkpOgorICAgICAgICAoV2ViS2l0Ojp0b0ZyYW1lU3RhdGUpOgor
ICAgICAgICAoV2ViS2l0OjphcHBseUZyYW1lU3RhdGUpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25zZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBv
bGljeUZvck5ld1dpbmRvd0FjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVy
Q2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pOgorICAgICAg
ICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hXaWxsU3VibWl0Rm9ybSk6
CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50Ojpjb250ZW50RmlsdGVyRGlk
QmxvY2tMb2FkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBhc3Rl
Ym9hcmRPdmVycmlkZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkT3ZlcnJp
ZGVzOjphZGRPdmVycmlkZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9n
dGsvV2ViRWRpdG9yQ2xpZW50R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRWRpdG9yQ2xp
ZW50OjpleGVjdXRlUGVuZGluZ0VkaXRvckNvbW1hbmRzKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpGaW5kQ29udHJv
bGxlcjo6ZmluZFN0cmluZ01hdGNoZXMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9W
aWV3VXBkYXRlRGlzcGF0Y2hlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlZpZXdVcGRhdGVEaXNw
YXRjaGVyOjpkaXNwYXRjaFZpc2libGVDb250ZW50UmVjdFVwZGF0ZSk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6
OmNyZWF0ZVN1YmZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkZyYW1lOjpXZWJGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YkZyYW1lOjpkaWRSZWNlaXZlUG9saWN5RGVjaXNpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJG
cmFtZTo6Y2hpbGRGcmFtZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6Y3JlYXRlU2Vs
ZWN0aW9uU25hcHNob3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0SW5qZWN0ZWRCdW5kbGVDb250ZXh0TWVu
dUNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNldEluamVjdGVkQnVuZGxlRm9y
bUNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNldEluamVjdGVkQnVuZGxlVUlD
bGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp0cmFja2VkUmVwYWludFJlY3RzKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Y3JlYXRlRG9jdW1lbnRMb2FkZXIpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlR3JvdXBQcm94eS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VHcm91cFByb3h5OjphZGRVc2VyQ29udGVudEV4dGVuc2lvbik6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2VPdmVybGF5LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZU92ZXJsYXk6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VP
dmVybGF5OjpXZWJQYWdlT3ZlcmxheSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2d0
ay9MYXllclRyZWVIb3N0R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlSG9zdEd0
azo6UmVuZGVyRnJhbWVTY2hlZHVsZXI6OlJlbmRlckZyYW1lU2NoZWR1bGVyKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW06CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OmNvbXB1dGVQYWdlc0ZvclByaW50aW5nQW5kU3RhcnREcmF3aW5nVG9QREYpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1DQUFuaW1hdGlvblJlbW90
ZS5tbToKKyAgICAgICAgKFdlYktpdDo6UGxhdGZvcm1DQUFuaW1hdGlvblJlbW90ZTo6c2V0VGlt
aW5nRnVuY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3Rl
OjpzZXRWYWx1ZXMpOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3Rl
OjpzZXRUaW1pbmdGdW5jdGlvbnMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMv
UmVtb3RlTGF5ZXJUcmVlQ29udGV4dC5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJU
cmVlQ29udGV4dDo6bGF5ZXJXYXNDcmVhdGVkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5
ZXJUcmVlQ29udGV4dDo6YnVpbGRUcmFuc2FjdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OmZsdXNoTGF5ZXJzKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OkJhY2tpbmdTdG9yZUZsdXNoZXI6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjpCYWNr
aW5nU3RvcmVGbHVzaGVyOjpCYWNraW5nU3RvcmVGbHVzaGVyKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OkJhY2tpbmdTdG9yZUZsdXNoZXI6OmZsdXNoKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzOjppbml0aWFsaXplV2ViUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBy
b2Nlc3M6OnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXMpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
Y29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpw
bGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL2lvcy9X
ZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0OjpzZXRMYXllckhvc3RpbmdDb250ZXh0KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6Y3JlYXRlTW9kZWxBbmRJbnRl
cmZhY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpzZXRT
ZWVrYWJsZVJhbmdlcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9zb3VwL1dlYktpdFNvdXBSZXF1
ZXN0SW5wdXRTdHJlYW0uY3BwOgorICAgICAgICAod2Via2l0U291cFJlcXVlc3RJbnB1dFN0cmVh
bURpZEZhaWxXaXRoRXJyb3IpOgorCiAyMDE1LTEyLTMxICBNaWNoYWVsIENhdGFuemFybyAgPG1j
YXRhbnphcm9AaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBmaXggYSBsb2cgbWVz
c2FnZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9PYmpDQ2FsbGJhY2tG
dW5jdGlvbi5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvT2JqQ0NhbGxiYWNrRnVuY3Rp
b24ubW0KaW5kZXggMWU1ZGRjZDlkYzMwMDdkMDhkNzQ1MTEwMDUwOWZmMDc0NmY2N2Q1OC4uY2Fh
NTI5NGYyMGQ1NWI2ZTZhYzFkMmE3MjA3NWMwYTljOTMyZDE4NiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9PYmpDQ2FsbGJhY2tGdW5jdGlvbi5tbQorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL09iakNDYWxsYmFja0Z1bmN0aW9uLm1tCkBAIC0zOTQsOCArMzk0
LDggQEAgcHVibGljOgogICAgICAgICA6IG1fdHlwZSh0eXBlKQogICAgICAgICAsIG1faW5zdGFu
Y2VDbGFzcyhpbnN0YW5jZUNsYXNzKQogICAgICAgICAsIG1faW52b2NhdGlvbihpbnZvY2F0aW9u
KQotICAgICAgICAsIG1fYXJndW1lbnRzKFdURjo6bW92ZShhcmd1bWVudHMpKQotICAgICAgICAs
IG1fcmVzdWx0KFdURjo6bW92ZShyZXN1bHQpKQorICAgICAgICAsIG1fYXJndW1lbnRzKFdURk1v
dmUoYXJndW1lbnRzKSkKKyAgICAgICAgLCBtX3Jlc3VsdChXVEZNb3ZlKHJlc3VsdCkpCiAgICAg
ewogICAgICAgICBBU1NFUlQoKHR5cGUgIT0gQ2FsbGJhY2tJbnN0YW5jZU1ldGhvZCAmJiB0eXBl
ICE9IENhbGxiYWNrSW5pdE1ldGhvZCkgfHwgaW5zdGFuY2VDbGFzcyk7CiAgICAgfQpAQCAtNTAy
LDEzICs1MDIsMTMgQEAgT2JqQ0NhbGxiYWNrRnVuY3Rpb246Ok9iakNDYWxsYmFja0Z1bmN0aW9u
KEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG8KICAgICA6IEJhc2Uodm0sIGds
b2JhbE9iamVjdC0+b2JqY0NhbGxiYWNrRnVuY3Rpb25TdHJ1Y3R1cmUoKSkKICAgICAsIG1fZnVu
Y3Rpb25DYWxsYmFjayhmdW5jdGlvbkNhbGxiYWNrKQogICAgICwgbV9jb25zdHJ1Y3RDYWxsYmFj
ayhjb25zdHJ1Y3RDYWxsYmFjaykKLSAgICAsIG1faW1wbChXVEY6Om1vdmUoaW1wbCkpCisgICAg
LCBtX2ltcGwoV1RGTW92ZShpbXBsKSkKIHsKIH0KIAogT2JqQ0NhbGxiYWNrRnVuY3Rpb24qIE9i
akNDYWxsYmFja0Z1bmN0aW9uOjpjcmVhdGUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU3RyaW5nJiBuYW1lLCBzdGQ6OnVuaXF1ZV9wdHI8T2Jq
Q0NhbGxiYWNrRnVuY3Rpb25JbXBsPiBpbXBsKQogewotICAgIE9iakNDYWxsYmFja0Z1bmN0aW9u
KiBmdW5jdGlvbiA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPE9iakNDYWxsYmFja0Z1bmN0
aW9uPih2bS5oZWFwKSkgT2JqQ0NhbGxiYWNrRnVuY3Rpb24odm0sIGdsb2JhbE9iamVjdCwgb2Jq
Q0NhbGxiYWNrRnVuY3Rpb25DYWxsQXNGdW5jdGlvbiwgb2JqQ0NhbGxiYWNrRnVuY3Rpb25DYWxs
QXNDb25zdHJ1Y3RvciwgV1RGOjptb3ZlKGltcGwpKTsKKyAgICBPYmpDQ2FsbGJhY2tGdW5jdGlv
biogZnVuY3Rpb24gPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxPYmpDQ2FsbGJhY2tGdW5j
dGlvbj4odm0uaGVhcCkpIE9iakNDYWxsYmFja0Z1bmN0aW9uKHZtLCBnbG9iYWxPYmplY3QsIG9i
akNDYWxsYmFja0Z1bmN0aW9uQ2FsbEFzRnVuY3Rpb24sIG9iakNDYWxsYmFja0Z1bmN0aW9uQ2Fs
bEFzQ29uc3RydWN0b3IsIFdURk1vdmUoaW1wbCkpOwogICAgIGZ1bmN0aW9uLT5maW5pc2hDcmVh
dGlvbih2bSwgbmFtZSk7CiAgICAgcmV0dXJuIGZ1bmN0aW9uOwogfQpAQCAtNjYxLDE2ICs2NjEs
MTYgQEAgc3RhdGljIEpTT2JqZWN0UmVmIG9iakNDYWxsYmFja0Z1bmN0aW9uRm9ySW52b2NhdGlv
bihKU0NvbnRleHQgKmNvbnRleHQsIE5TSW52b2MKICAgICAgICAgaWYgKCFhcmd1bWVudCB8fCAh
c2tpcE51bWJlcihwb3NpdGlvbikpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAg
ICAgICAqbmV4dEFyZ3VtZW50ID0gV1RGOjptb3ZlKGFyZ3VtZW50KTsKKyAgICAgICAgKm5leHRB
cmd1bWVudCA9IFdURk1vdmUoYXJndW1lbnQpOwogICAgICAgICBuZXh0QXJndW1lbnQgPSAmKCpu
ZXh0QXJndW1lbnQpLT5tX25leHQ7CiAgICAgICAgICsrYXJndW1lbnRDb3VudDsKICAgICB9CiAK
ICAgICBKU0M6OkV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoW2NvbnRleHQgSlNHbG9iYWxDb250ZXh0
UmVmXSk7CiAgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9ja2VyKGV4ZWMpOwotICAgIGF1dG8gaW1w
bCA9IHN0ZDo6bWFrZV91bmlxdWU8SlNDOjpPYmpDQ2FsbGJhY2tGdW5jdGlvbkltcGw+KGludm9j
YXRpb24sIHR5cGUsIGluc3RhbmNlQ2xhc3MsIFdURjo6bW92ZShhcmd1bWVudHMpLCBXVEY6Om1v
dmUocmVzdWx0KSk7CisgICAgYXV0byBpbXBsID0gc3RkOjptYWtlX3VuaXF1ZTxKU0M6Ok9iakND
YWxsYmFja0Z1bmN0aW9uSW1wbD4oaW52b2NhdGlvbiwgdHlwZSwgaW5zdGFuY2VDbGFzcywgV1RG
TW92ZShhcmd1bWVudHMpLCBXVEZNb3ZlKHJlc3VsdCkpOwogICAgIGNvbnN0IFN0cmluZyYgbmFt
ZSA9IGltcGwtPm5hbWUoKTsKLSAgICByZXR1cm4gdG9SZWYoSlNDOjpPYmpDQ2FsbGJhY2tGdW5j
dGlvbjo6Y3JlYXRlKGV4ZWMtPnZtKCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgbmFt
ZSwgV1RGOjptb3ZlKGltcGwpKSk7CisgICAgcmV0dXJuIHRvUmVmKEpTQzo6T2JqQ0NhbGxiYWNr
RnVuY3Rpb246OmNyZWF0ZShleGVjLT52bSgpLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCks
IG5hbWUsIFdURk1vdmUoaW1wbCkpKTsKIH0KIAogSlNPYmplY3RSZWYgb2JqQ0NhbGxiYWNrRnVu
Y3Rpb25Gb3JJbml0KEpTQ29udGV4dCAqY29udGV4dCwgQ2xhc3MgY2xzLCBQcm90b2NvbCAqcHJv
dG9jb2wsIFNFTCBzZWwsIGNvbnN0IGNoYXIqIHR5cGVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Bc3NlbWJsZXJCdWZmZXIuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvQXNzZW1ibGVyQnVmZmVyLmgKaW5kZXggMzYzMmE1YjZlZjNjZjhm
ZDEwMGUyOTU5Mzc1Njk0NTM5NGEzMjI3Zi4uYWU0NjdiYjU0NDllNTZmYWU4Y2RkNDVmNDlmZjhj
MDE4ZWZiZmJhZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9B
c3NlbWJsZXJCdWZmZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fz
c2VtYmxlckJ1ZmZlci5oCkBAIC0xNjEsNyArMTYxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAg
ICAgICAgdW5zaWduZWQgZGVidWdPZmZzZXQoKSB7IHJldHVybiBtX2luZGV4OyB9CiAKLSAgICAg
ICAgQXNzZW1ibGVyRGF0YSByZWxlYXNlQXNzZW1ibGVyRGF0YSgpIHsgcmV0dXJuIFdURjo6bW92
ZShtX3N0b3JhZ2UpOyB9CisgICAgICAgIEFzc2VtYmxlckRhdGEgcmVsZWFzZUFzc2VtYmxlckRh
dGEoKSB7IHJldHVybiBXVEZNb3ZlKG1fc3RvcmFnZSk7IH0KIAogICAgIHByb3RlY3RlZDoKICAg
ICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgSW50ZWdyYWxUeXBlPgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5jcHAKaW5kZXggZDc3MDI0NGE4ZGM4ZTY0MjI0
N2VjNzA1ZWVhZmRkMTkwZDQwYmNmMS4uODJmYjJlZDM5Nzg1MjQwYzkxNjhmNTNmZWM0M2EzMWMz
NjI1MmQxZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5r
QnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZm
ZXIuY3BwCkBAIC0xOTQsNyArMTk0LDcgQEAgdm9pZCBMaW5rQnVmZmVyOjpsaW5rQ29kZShNYWNy
b0Fzc2VtYmxlciYgbWFjcm9Bc3NlbWJsZXIsIHZvaWQqIG93bmVyVUlELCBKSVRDb20KICAgICBj
b3B5Q29tcGFjdEFuZExpbmtDb2RlPHVpbnQzMl90PihtYWNyb0Fzc2VtYmxlciwgb3duZXJVSUQs
IGVmZm9ydCk7CiAjZW5kaWYKIAotICAgIG1fbGlua1Rhc2tzID0gV1RGOjptb3ZlKG1hY3JvQXNz
ZW1ibGVyLm1fbGlua1Rhc2tzKTsKKyAgICBtX2xpbmtUYXNrcyA9IFdURk1vdmUobWFjcm9Bc3Nl
bWJsZXIubV9saW5rVGFza3MpOwogfQogCiB2b2lkIExpbmtCdWZmZXI6OmFsbG9jYXRlKHNpemVf
dCBpbml0aWFsU2l6ZSwgdm9pZCogb3duZXJVSUQsIEpJVENvbXBpbGF0aW9uRWZmb3J0IGVmZm9y
dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0Jsb2NrSW5zZXJ0aW9u
U2V0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0Jsb2NrSW5zZXJ0aW9uU2V0LmNw
cAppbmRleCA5MDJiMWRkM2NlYmMwZmVmNzc4Y2IzZDBkYjZmMjk5ZjEzZTFhMTc2Li40YjA5NmQ4
YzQwY2ZkODU0NmYxNzIzODFjOTg3YTJhNzMyNWZkYTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNCbG9ja0luc2VydGlvblNldC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzQmxvY2tJbnNlcnRpb25TZXQuY3BwCkBAIC00NCwxNCArNDQsMTQgQEAg
QmxvY2tJbnNlcnRpb25TZXQ6On5CbG9ja0luc2VydGlvblNldCgpIHsgfQogCiB2b2lkIEJsb2Nr
SW5zZXJ0aW9uU2V0OjppbnNlcnQoQmxvY2tJbnNlcnRpb24mJiBpbnNlcnRpb24pCiB7Ci0gICAg
bV9pbnNlcnRpb25zLmFwcGVuZChXVEY6Om1vdmUoaW5zZXJ0aW9uKSk7CisgICAgbV9pbnNlcnRp
b25zLmFwcGVuZChXVEZNb3ZlKGluc2VydGlvbikpOwogfQogCiBCYXNpY0Jsb2NrKiBCbG9ja0lu
c2VydGlvblNldDo6aW5zZXJ0KHVuc2lnbmVkIGluZGV4LCBkb3VibGUgZnJlcXVlbmN5KQogewog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxCYXNpY0Jsb2NrPiBibG9jayhuZXcgQmFzaWNCbG9jayhVSU5U
X01BWCwgZnJlcXVlbmN5KSk7CiAgICAgQmFzaWNCbG9jayogcmVzdWx0ID0gYmxvY2suZ2V0KCk7
Ci0gICAgaW5zZXJ0KEJsb2NrSW5zZXJ0aW9uKGluZGV4LCBXVEY6Om1vdmUoYmxvY2spKSk7Cisg
ICAgaW5zZXJ0KEJsb2NrSW5zZXJ0aW9uKGluZGV4LCBXVEZNb3ZlKGJsb2NrKSkpOwogICAgIHJl
dHVybiByZXN1bHQ7CiB9CiAKQEAgLTk0LDcgKzk0LDcgQEAgQmFzaWNCbG9jayogQmxvY2tJbnNl
cnRpb25TZXQ6OnNwbGl0Rm9yd2FyZCgKICAgICB2YWx1ZUluZGV4ID0gMDsKIAogICAgIC8vIEZp
eHVwIHRoZSBwcmVkZWNlc3NvcnMgb2YgJ2Jsb2NrJy4gVGhleSBub3cgbXVzdCBqdW1wIHRvIHRo
ZSBuZXcgYmxvY2suCi0gICAgcmVzdWx0LT5wcmVkZWNlc3NvcnMoKSA9IFdURjo6bW92ZShibG9j
ay0+cHJlZGVjZXNzb3JzKCkpOworICAgIHJlc3VsdC0+cHJlZGVjZXNzb3JzKCkgPSBXVEZNb3Zl
KGJsb2NrLT5wcmVkZWNlc3NvcnMoKSk7CiAgICAgYmxvY2stPmFkZFByZWRlY2Vzc29yKHJlc3Vs
dCk7CiAgICAgZm9yIChCYXNpY0Jsb2NrKiBwcmVkZWNlc3NvciA6IHJlc3VsdC0+cHJlZGVjZXNz
b3JzKCkpCiAgICAgICAgIHByZWRlY2Vzc29yLT5yZXBsYWNlU3VjY2Vzc29yKGJsb2NrLCByZXN1
bHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcAppbmRleCBhOGY3
MTI5NzNiMDVhZGZiZGMwM2RjNDk1NmFhNTU1MzQwYzViNzhlLi5hZWI3MzRiODllMmQ0ODJmNTBh
YjA1MTZhOTExNzc4YjY4OWJmNjBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNMb3dlclRvQWlyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dl
clRvQWlyLmNwcApAQCAtMTI3LDcgKzEyNyw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIC8vIGl0
IGluIHJldmVyc2UuCiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2luc3RzLnNpemUo
KTsgaS0tOykgewogICAgICAgICAgICAgICAgIGZvciAoSW5zdCYgaW5zdCA6IG1faW5zdHNbaV0p
Ci0gICAgICAgICAgICAgICAgICAgIG1fYmxvY2tUb0Jsb2NrW2Jsb2NrXS0+YXBwZW5kSW5zdChX
VEY6Om1vdmUoaW5zdCkpOworICAgICAgICAgICAgICAgICAgICBtX2Jsb2NrVG9CbG9ja1tibG9j
a10tPmFwcGVuZEluc3QoV1RGTW92ZShpbnN0KSk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAg
ICAgIC8vIE1ha2Ugc3VyZSB0aGF0IHRoZSBzdWNjZXNzb3JzIGFyZSBzZXQgdXAgY29ycmVjdGx5
LgpAQCAtMTQwLDcgKzE0MCw3IEBAIHB1YmxpYzoKIAogICAgICAgICBBaXI6Okluc2VydGlvblNl
dCBpbnNlcnRpb25TZXQobV9jb2RlKTsKICAgICAgICAgZm9yIChJbnN0JiBpbnN0IDogbV9wcm9s
b2d1ZSkKLSAgICAgICAgICAgIGluc2VydGlvblNldC5pbnNlcnRJbnN0KDAsIFdURjo6bW92ZShp
bnN0KSk7CisgICAgICAgICAgICBpbnNlcnRpb25TZXQuaW5zZXJ0SW5zdCgwLCBXVEZNb3ZlKGlu
c3QpKTsKICAgICAgICAgaW5zZXJ0aW9uU2V0LmV4ZWN1dGUobV9jb2RlWzBdKTsKICAgICB9CiAK
QEAgLTE5NTQsNyArMTk1NCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIGluc3Qu
YXJncy5hcHBlbmQoYXJnKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAotICAgICAgICAg
ICAgbV9pbnN0cy5sYXN0KCkuYXBwZW5kKFdURjo6bW92ZShpbnN0KSk7CisgICAgICAgICAgICBt
X2luc3RzLmxhc3QoKS5hcHBlbmQoV1RGTW92ZShpbnN0KSk7CiAKICAgICAgICAgICAgIHN3aXRj
aCAoY0NhbGwtPnR5cGUoKSkgewogICAgICAgICAgICAgY2FzZSBWb2lkOgpAQCAtMjAwOCw3ICsy
MDA4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIAogICAgICAgICAgICAgZmlsbFN0YWNrbWFw
KGluc3QsIHBhdGNocG9pbnRWYWx1ZSwgMCk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIG1f
aW5zdHMubGFzdCgpLmFwcGVuZChXVEY6Om1vdmUoaW5zdCkpOworICAgICAgICAgICAgbV9pbnN0
cy5sYXN0KCkuYXBwZW5kKFdURk1vdmUoaW5zdCkpOwogICAgICAgICAgICAgbV9pbnN0cy5sYXN0
KCkuYXBwZW5kVmVjdG9yKGFmdGVyKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpA
QCAtMjAzNyw3ICsyMDM3LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICAgICAgICAgIGZpbGxTdGFj
a21hcChpbnN0LCBjaGVja1ZhbHVlLCAyKTsKIAotICAgICAgICAgICAgICAgIG1faW5zdHMubGFz
dCgpLmFwcGVuZChXVEY6Om1vdmUoaW5zdCkpOworICAgICAgICAgICAgICAgIG1faW5zdHMubGFz
dCgpLmFwcGVuZChXVEZNb3ZlKGluc3QpKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgICAgICB9CiAKQEAgLTIxMTUsNyArMjExNSw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgICAg
IGZpbGxTdGFja21hcChpbnN0LCBjaGVja1ZhbHVlLCAyKTsKIAotICAgICAgICAgICAgbV9pbnN0
cy5sYXN0KCkuYXBwZW5kKFdURjo6bW92ZShpbnN0KSk7CisgICAgICAgICAgICBtX2luc3RzLmxh
c3QoKS5hcHBlbmQoV1RGTW92ZShpbnN0KSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KIApAQCAtMjEzMSw3ICsyMTMxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIAogICAgICAg
ICAgICAgZmlsbFN0YWNrbWFwKGluc3QsIGNoZWNrVmFsdWUsIDEpOwogICAgICAgICAgICAgCi0g
ICAgICAgICAgICBtX2luc3RzLmxhc3QoKS5hcHBlbmQoV1RGOjptb3ZlKGluc3QpKTsKKyAgICAg
ICAgICAgIG1faW5zdHMubGFzdCgpLmFwcGVuZChXVEZNb3ZlKGluc3QpKTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNPcGFxdWVCeXByb2R1Y3RzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM09w
YXF1ZUJ5cHJvZHVjdHMuY3BwCmluZGV4IDAyNjdjZWU5ZTg0ZDA4M2I1YjJlZDU5MDk4ZjhmZGVm
ODMxNjVkNDAuLmY4OWY4YmZlZDZkMTNiNTU5ZGU3NDQ0ZmZjNTA4MGY3MmYwMTA5NWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM09wYXF1ZUJ5cHJvZHVjdHMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM09wYXF1ZUJ5cHJvZHVjdHMuY3BwCkBAIC00
MCw3ICs0MCw3IEBAIE9wYXF1ZUJ5cHJvZHVjdHM6On5PcGFxdWVCeXByb2R1Y3RzKCkKIAogdm9p
ZCBPcGFxdWVCeXByb2R1Y3RzOjphZGQoc3RkOjp1bmlxdWVfcHRyPE9wYXF1ZUJ5cHJvZHVjdD4g
Ynlwcm9kdWN0KQogewotICAgIG1fYnlwcm9kdWN0cy5hcHBlbmQoV1RGOjptb3ZlKGJ5cHJvZHVj
dCkpOworICAgIG1fYnlwcm9kdWN0cy5hcHBlbmQoV1RGTW92ZShieXByb2R1Y3QpKTsKIH0KIAog
dm9pZCBPcGFxdWVCeXByb2R1Y3RzOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJlLmNwcAppbmRleCBjNjkzYzE0OGYyNDMxYTcy
Y2I4MDkxMWUyOGQ3YmM3MDU1NmI3MDZmLi5iOWZhYjY4YmE2MmMwZTU1ZGJhMjkyNTY0NGNmNzIy
MjVlYTFiNzYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1
cmUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Byb2NlZHVyZS5jcHAKQEAg
LTY0LDcgKzY0LDcgQEAgQmFzaWNCbG9jayogUHJvY2VkdXJlOjphZGRCbG9jayhkb3VibGUgZnJl
cXVlbmN5KQogewogICAgIHN0ZDo6dW5pcXVlX3B0cjxCYXNpY0Jsb2NrPiBibG9jayhuZXcgQmFz
aWNCbG9jayhtX2Jsb2Nrcy5zaXplKCksIGZyZXF1ZW5jeSkpOwogICAgIEJhc2ljQmxvY2sqIHJl
c3VsdCA9IGJsb2NrLmdldCgpOwotICAgIG1fYmxvY2tzLmFwcGVuZChXVEY6Om1vdmUoYmxvY2sp
KTsKKyAgICBtX2Jsb2Nrcy5hcHBlbmQoV1RGTW92ZShibG9jaykpOwogICAgIHJldHVybiByZXN1
bHQ7CiB9CiAKQEAgLTE4Miw3ICsxODIsNyBAQCB2b2lkKiBQcm9jZWR1cmU6OmFkZERhdGFTZWN0
aW9uKHNpemVfdCBzaXplKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8RGF0YVNlY3Rpb24+IGRhdGFTZWN0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxEYXRhU2Vj
dGlvbj4oc2l6ZSk7CiAgICAgdm9pZCogcmVzdWx0ID0gZGF0YVNlY3Rpb24tPmRhdGEoKTsKLSAg
ICBtX2J5cHJvZHVjdHMtPmFkZChXVEY6Om1vdmUoZGF0YVNlY3Rpb24pKTsKKyAgICBtX2J5cHJv
ZHVjdHMtPmFkZChXVEZNb3ZlKGRhdGFTZWN0aW9uKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJlLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUuaAppbmRleCA3MGU0MGYwNWQxMzlh
MzU5NjQxMmFkMTVlNWFjYjExODYzZTZmY2U5Li41MGE2Nzc4NjBiNmQxOTU3NTlhZjNkMjk2MzQ1
ZjdlNTE5NmYyOTM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9j
ZWR1cmUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUuaApAQCAt
MjQ1LDcgKzI0NSw3IEBAIHB1YmxpYzoKICAgICAvLyBqdXN0IGtlZXBzIGFsaXZlIHRoaW5ncyBs
aWtlIHRoZSBkb3VibGUgY29uc3RhbnQgcG9vbCBhbmQgc3dpdGNoIGxvb2t1cCB0YWJsZXMuIElm
IHRoaXMgc291bmRzCiAgICAgLy8gY29uZnVzaW5nLCB5b3Ugc2hvdWxkIHByb2JhYmx5IGJlIHVz
aW5nIHRoZSBCMzo6Q29tcGlsYXRpb24gQVBJIHRvIGNvbXBpbGUgY29kZS4gSWYgeW91IHVzZQog
ICAgIC8vIHRoYXQgQVBJLCB0aGVuIHlvdSBkb24ndCBoYXZlIHRvIHdvcnJ5IGFib3V0IHRoaXMu
Ci0gICAgc3RkOjp1bmlxdWVfcHRyPE9wYXF1ZUJ5cHJvZHVjdHM+IHJlbGVhc2VCeXByb2R1Y3Rz
KCkgeyByZXR1cm4gV1RGOjptb3ZlKG1fYnlwcm9kdWN0cyk7IH0KKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8T3BhcXVlQnlwcm9kdWN0cz4gcmVsZWFzZUJ5cHJvZHVjdHMoKSB7IHJldHVybiBXVEZNb3Zl
KG1fYnlwcm9kdWN0cyk7IH0KIAogICAgIC8vIFRoaXMgZ2l2ZXMgeW91IGRpcmVjdCBhY2Nlc3Mg
dG8gQ29kZS4gSG93ZXZlciwgdGhlIGlkZWEgaXMgdGhhdCBjbGllbnRzIG9mIEIzIHNob3VsZG4n
dCBoYXZlIHRvCiAgICAgLy8gY2FsbCB0aGlzLiBTbywgUHJvY2VkdXJlIGhhcyBzb21lIG1ldGhv
ZHMgKGJlbG93KSB0aGF0IGV4cG9zZSBzb21lIEFpcjo6Q29kZSBmdW5jdGlvbmFsaXR5LgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJlSW5saW5lcy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJlSW5saW5lcy5oCmluZGV4IDY0NGVi
NDUwYmFmZTI0ZDFiM2M5MmI0YTY5MjAzYWVkOTlmYWUzOGIuLjJlYTVjMzA2MTU2MmY2ODM4ZWFk
NzkxMWZjMDg1Y2I3NTQwNWM3NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM1Byb2NlZHVyZUlubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQ
cm9jZWR1cmVJbmxpbmVzLmgKQEAgLTM5LDcgKzM5LDcgQEAgVmFsdWVUeXBlKiBQcm9jZWR1cmU6
OmFkZChBcmd1bWVudHMuLi4gYXJndW1lbnRzKQogICAgIHNpemVfdCBpbmRleCA9IGFkZFZhbHVl
SW5kZXgoKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VmFsdWVUeXBlPiB2YWx1ZShuZXcgVmFsdWVU
eXBlKGluZGV4LCBhcmd1bWVudHMuLi4pKTsKICAgICBWYWx1ZVR5cGUqIHJlc3VsdCA9IHZhbHVl
LmdldCgpOwotICAgIG1fdmFsdWVzW2luZGV4XSA9IFdURjo6bW92ZSh2YWx1ZSk7CisgICAgbV92
YWx1ZXNbaW5kZXhdID0gV1RGTW92ZSh2YWx1ZSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmgKaW5kZXggM2VkYjJmNzk4NmNlZmU0MTlkOWQzMDcx
NGY3ZTM0MDI5YzdmNGEwZi4uOTE3ZDQ1MGM1ZDMwY2VkNDRiMmJiZDE1Nzk1OGU3YmFkY2M0OTVk
ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5oCkBAIC0yODIsNyArMjgyLDcgQEAgcHJv
dGVjdGVkOgogICAgICAgICAsIG1fb3Bjb2RlKG9wY29kZSkKICAgICAgICAgLCBtX3R5cGUodHlw
ZSkKICAgICAgICAgLCBtX29yaWdpbihvcmlnaW4pCi0gICAgICAgICwgbV9jaGlsZHJlbihXVEY6
Om1vdmUoY2hpbGRyZW4pKQorICAgICAgICAsIG1fY2hpbGRyZW4oV1RGTW92ZShjaGlsZHJlbikp
CiAgICAgewogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fp
ci9BaXJDb2RlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQ29kZS5jcHAK
aW5kZXggM2RjMWViZDkwYjQ1ZjNlYmMwMmZlNzNjZmE3NDBjODYzODk1MjFmMy4uODViNjNhZTI4
OTRkZjYzYzVkOTUzMGE3ZTk2NjZjZGUyZTcxMjI3NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL2Fpci9BaXJDb2RlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvYWlyL0FpckNvZGUuY3BwCkBAIC00OCw3ICs0OCw3IEBAIEJhc2ljQmxvY2sqIENvZGU6OmFk
ZEJsb2NrKGRvdWJsZSBmcmVxdWVuY3kpCiB7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEJhc2ljQmxv
Y2s+IGJsb2NrKG5ldyBCYXNpY0Jsb2NrKG1fYmxvY2tzLnNpemUoKSwgZnJlcXVlbmN5KSk7CiAg
ICAgQmFzaWNCbG9jayogcmVzdWx0ID0gYmxvY2suZ2V0KCk7Ci0gICAgbV9ibG9ja3MuYXBwZW5k
KFdURjo6bW92ZShibG9jaykpOworICAgIG1fYmxvY2tzLmFwcGVuZChXVEZNb3ZlKGJsb2NrKSk7
CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtNTYsNyArNTYsNyBAQCBTdGFja1Nsb3QqIENv
ZGU6OmFkZFN0YWNrU2xvdCh1bnNpZ25lZCBieXRlU2l6ZSwgU3RhY2tTbG90S2luZCBraW5kLCBT
dGFja1Nsb3RWYQogewogICAgIHN0ZDo6dW5pcXVlX3B0cjxTdGFja1Nsb3Q+IHNsb3QobmV3IFN0
YWNrU2xvdChieXRlU2l6ZSwgbV9zdGFja1Nsb3RzLnNpemUoKSwga2luZCwgdmFsdWUpKTsKICAg
ICBTdGFja1Nsb3QqIHJlc3VsdCA9IHNsb3QuZ2V0KCk7Ci0gICAgbV9zdGFja1Nsb3RzLmFwcGVu
ZChXVEY6Om1vdmUoc2xvdCkpOworICAgIG1fc3RhY2tTbG90cy5hcHBlbmQoV1RGTW92ZShzbG90
KSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtNjksNyArNjksNyBAQCBTcGVjaWFsKiBD
b2RlOjphZGRTcGVjaWFsKHN0ZDo6dW5pcXVlX3B0cjxTcGVjaWFsPiBzcGVjaWFsKQogewogICAg
IFNwZWNpYWwqIHJlc3VsdCA9IHNwZWNpYWwuZ2V0KCk7CiAgICAgcmVzdWx0LT5tX2NvZGUgPSB0
aGlzOwotICAgIG1fc3BlY2lhbHMuYXBwZW5kKFdURjo6bW92ZShzcGVjaWFsKSk7CisgICAgbV9z
cGVjaWFscy5hcHBlbmQoV1RGTW92ZShzcGVjaWFsKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJJbnN0LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpckluc3QuaAppbmRleCAyOWRlMjQ4MWQyNjll
YTk3MzYzNzE4YmUzNTc3OWRlYmMyYTk3Y2UxLi43ZmYwMjVmZGZjNTI1MjRlNTc5MjA0NmI0Nzk2
MzYxODM1NzI5MzVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fp
ckluc3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpckluc3QuaApAQCAt
NzcsNyArNzcsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgSW5zdChPcGNvZGUgb3Bjb2RlLCBW
YWx1ZSogb3JpZ2luLCBBcmdMaXN0JiYgYXJndW1lbnRzKQotICAgICAgICA6IGFyZ3MoV1RGOjpt
b3ZlKGFyZ3VtZW50cykpCisgICAgICAgIDogYXJncyhXVEZNb3ZlKGFyZ3VtZW50cykpCiAgICAg
ICAgICwgb3JpZ2luKG9yaWdpbikKICAgICAgICAgLCBvcGNvZGUob3Bjb2RlKQogICAgIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlySXRlcmF0ZWRSZWdpc3Rl
ckNvYWxlc2NpbmcuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJJdGVyYXRl
ZFJlZ2lzdGVyQ29hbGVzY2luZy5jcHAKaW5kZXggYmI5MzdiYTkyZWU0ZDJhNjg5ZWIwMzU1ODhh
YTY5OWJkZDFmZmNiZS4uZWZiNzBhNzM2NTgyZmY3NjVmMjlmZGI4YThjY2Y3NGNmY2RkYzE2MyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJJdGVyYXRlZFJlZ2lz
dGVyQ29hbGVzY2luZy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJJ
dGVyYXRlZFJlZ2lzdGVyQ29hbGVzY2luZy5jcHAKQEAgLTY4NCw3ICs2ODQsNyBAQCBwdWJsaWM6
CiAgICAgY2xhc3MgSW5kZXhUb1RtcEl0ZXJhdG9yQWRhcHRvciB7CiAgICAgcHVibGljOgogICAg
ICAgICBJbmRleFRvVG1wSXRlcmF0b3JBZGFwdG9yKEluZGV4SXRlcmF0b3ImJiBpbmRleEl0ZXJh
dG9yKQotICAgICAgICAgICAgOiBtX2luZGV4SXRlcmF0b3IoV1RGOjptb3ZlKGluZGV4SXRlcmF0
b3IpKQorICAgICAgICAgICAgOiBtX2luZGV4SXRlcmF0b3IoV1RGTW92ZShpbmRleEl0ZXJhdG9y
KSkKICAgICAgICAgewogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9haXIvQWlyU2ltcGxpZnlDRkcuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L2Fpci9BaXJTaW1wbGlmeUNGRy5jcHAKaW5kZXggMWVlZDk4MjhkMTg1YzZkNzA5ZjQ4NzA4YzM4
NGRkN2U3MTdhMTBjOC4uNjVlODY4MGZkZjdiNTljYTBmNDM2ZTNiYmYyMTRkOWM5YjBkYjY1YyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJTaW1wbGlmeUNGRy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJTaW1wbGlmeUNGRy5jcHAK
QEAgLTEzNSwxMCArMTM1LDEwIEBAIGJvb2wgc2ltcGxpZnlDRkcoQ29kZSYgY29kZSkKICAgICAg
ICAgICAgICAgICAgICAgLy8gQXBwZW5kIHRoZSBmdWxsIGNvbnRlbnRzIG9mIHRoZSBzdWNjZXNz
b3IgdG8gdGhlIHByZWRlY2Vzc29yLgogICAgICAgICAgICAgICAgICAgICBibG9jay0+aW5zdHMo
KS5yZXNlcnZlQ2FwYWNpdHkoYmxvY2stPnNpemUoKSArIHN1Y2Nlc3Nvci0+c2l6ZSgpKTsKICAg
ICAgICAgICAgICAgICAgICAgZm9yIChJbnN0JiBpbnN0IDogKnN1Y2Nlc3NvcikKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGJsb2NrLT5hcHBlbmRJbnN0KFdURjo6bW92ZShpbnN0KSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBibG9jay0+YXBwZW5kSW5zdChXVEZNb3ZlKGluc3QpKTsKIAog
ICAgICAgICAgICAgICAgICAgICAvLyBNYWtlIHN1cmUgdGhhdCBvdXIgc3VjY2Vzc29ycyBhcmUg
dGhlIHN1Y2Nlc3NvcidzIHN1Y2Nlc3NvcnMuCi0gICAgICAgICAgICAgICAgICAgIGJsb2NrLT5z
dWNjZXNzb3JzKCkgPSBXVEY6Om1vdmUoc3VjY2Vzc29yLT5zdWNjZXNzb3JzKCkpOworICAgICAg
ICAgICAgICAgICAgICBibG9jay0+c3VjY2Vzc29ycygpID0gV1RGTW92ZShzdWNjZXNzb3ItPnN1
Y2Nlc3NvcnMoKSk7CiAKICAgICAgICAgICAgICAgICAgICAgLy8gTWFrZSBzdXJlIHRoYXQgdGhl
IHN1Y2Nlc3NvciBoYXMgbm90aGluZyBsZWZ0IGluIGl0IGV4Y2VwdCBhbiBvb3BzLgogICAgICAg
ICAgICAgICAgICAgICBzdWNjZXNzb3ItPnJlc2l6ZSgxKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYmluZGluZ3MvU2NyaXB0VmFsdWUuY3BwCmluZGV4IDAyZWYzNmUyZDU3OGM0MDI2MTZj
NGU5ZWJjMjQ3NGI0YjhhZmNiZTkuLjNlNTYwZGNjMzgxZjIwZjM4OGQyYmI1NjVlMjY0ZGMxZGNh
NTM1YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRW
YWx1ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdFZhbHVl
LmNwcApAQCAtMTMwLDkgKzEzMCw5IEBAIHN0YXRpYyBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IGpz
VG9JbnNwZWN0b3JWYWx1ZShFeGVjU3RhdGUqIHNjcmlwdFN0YXRlLCBKU1ZhbHVlCiAgICAgICAg
ICAgICAgICAgUmVmUHRyPEluc3BlY3RvclZhbHVlPiBlbGVtZW50VmFsdWUgPSBqc1RvSW5zcGVj
dG9yVmFsdWUoc2NyaXB0U3RhdGUsIGVsZW1lbnQsIG1heERlcHRoKTsKICAgICAgICAgICAgICAg
ICBpZiAoIWVsZW1lbnRWYWx1ZSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0gICAgICAgICAgICAgICAgaW5zcGVjdG9yQXJyYXktPnB1c2hWYWx1ZShXVEY6Om1vdmUoZWxl
bWVudFZhbHVlKSk7CisgICAgICAgICAgICAgICAgaW5zcGVjdG9yQXJyYXktPnB1c2hWYWx1ZShX
VEZNb3ZlKGVsZW1lbnRWYWx1ZSkpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJu
IFdURjo6bW92ZShpbnNwZWN0b3JBcnJheSk7CisgICAgICAgICAgICByZXR1cm4gV1RGTW92ZShp
bnNwZWN0b3JBcnJheSk7CiAgICAgICAgIH0KICAgICAgICAgUmVmPEluc3BlY3Rvck9iamVjdD4g
aW5zcGVjdG9yT2JqZWN0ID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKICAgICAgICAgSlNP
YmplY3QqIG9iamVjdCA9IHZhbHVlLmdldE9iamVjdCgpOwpAQCAtMTQ0LDkgKzE0NCw5IEBAIHN0
YXRpYyBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IGpzVG9JbnNwZWN0b3JWYWx1ZShFeGVjU3RhdGUq
IHNjcmlwdFN0YXRlLCBKU1ZhbHVlCiAgICAgICAgICAgICBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+
IGluc3BlY3RvclZhbHVlID0ganNUb0luc3BlY3RvclZhbHVlKHNjcmlwdFN0YXRlLCBwcm9wZXJ0
eVZhbHVlLCBtYXhEZXB0aCk7CiAgICAgICAgICAgICBpZiAoIWluc3BlY3RvclZhbHVlKQogICAg
ICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICAgICAgaW5zcGVjdG9yT2JqZWN0
LT5zZXRWYWx1ZShuYW1lLnN0cmluZygpLCBXVEY6Om1vdmUoaW5zcGVjdG9yVmFsdWUpKTsKKyAg
ICAgICAgICAgIGluc3BlY3Rvck9iamVjdC0+c2V0VmFsdWUobmFtZS5zdHJpbmcoKSwgV1RGTW92
ZShpbnNwZWN0b3JWYWx1ZSkpOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiBXVEY6Om1vdmUo
aW5zcGVjdG9yT2JqZWN0KTsKKyAgICAgICAgcmV0dXJuIFdURk1vdmUoaW5zcGVjdG9yT2JqZWN0
KTsKICAgICB9CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAKaW5kZXggODIy
YjM1ZjI1YTA0ZjEwZmRlMmY0YTU0Njg4MDdlNGIwZWI2NTYxNC4uNDJjYjFkYTRlM2FmNjY2Zjc1
MWFmN2QyMTcyMWVkYWY5NGZhYjZlNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAKQEAgLTExNSw3ICsxMTUsNyBAQCBV
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogY3JlYXRlRXhlY3V0YWJsZUludGVybmFsKFZNJiB2
bSwgY29uc3QgU291cmNlQ29kZSYgcwogICAgIH0KICAgICBtZXRhZGF0YS0+b3ZlcnJpZGVOYW1l
KG5hbWUpOwogICAgIFZhcmlhYmxlRW52aXJvbm1lbnQgZHVtbXlURFpWYXJpYWJsZXM7Ci0gICAg
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUoJnZtLCBzb3VyY2UsIG1ldGFkYXRhLCBraW5kLCBj
b25zdHJ1Y3RBYmlsaXR5LCBkdW1teVREWlZhcmlhYmxlcywgRGVyaXZlZENvbnRleHRUeXBlOjpO
b25lLCBXVEY6Om1vdmUoc291cmNlT3ZlcnJpZGUpKTsKKyAgICBVbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6
OmNyZWF0ZSgmdm0sIHNvdXJjZSwgbWV0YWRhdGEsIGtpbmQsIGNvbnN0cnVjdEFiaWxpdHksIGR1
bW15VERaVmFyaWFibGVzLCBEZXJpdmVkQ29udGV4dFR5cGU6Ok5vbmUsIFdURk1vdmUoc291cmNl
T3ZlcnJpZGUpKTsKICAgICBmdW5jdGlvbkV4ZWN1dGFibGUtPnNldE5hbWVWYWx1ZSh2bSwganNT
dHJpbmcoJnZtLCBuYW1lLnN0cmluZygpKSk7CiAgICAgcmV0dXJuIGZ1bmN0aW9uRXhlY3V0YWJs
ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZUJhc2ljQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
QmFzaWNCbG9jay5jcHAKaW5kZXggZjMyOWQwYjBmODkyZGNlMGIwMzhlZjFlM2VjOWIwM2Y0MmNl
ZWM3Mi4uN2YxN2MwZWYxMGI0MzNmYWM4ZjU4Y2IzYjljYTVkNGQwMTViYmEwOCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5j
cHAKQEAgLTEyMiw5ICsxMjIsOSBAQCB2b2lkIGNvbXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzKENv
ZGVCbG9jayogY29kZUJsb2NrLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dAogICAgIGF1dG8g
Zmlyc3RCbG9jayA9IHN0ZDo6bWFrZV91bmlxdWU8Qnl0ZWNvZGVCYXNpY0Jsb2NrPigwLCAwKTsK
ICAgICBsaW5rQmxvY2tzKGVudHJ5LmdldCgpLCBmaXJzdEJsb2NrLmdldCgpKTsKIAotICAgIGJh
c2ljQmxvY2tzLmFwcGVuZChXVEY6Om1vdmUoZW50cnkpKTsKKyAgICBiYXNpY0Jsb2Nrcy5hcHBl
bmQoV1RGTW92ZShlbnRyeSkpOwogICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogY3VycmVudCA9IGZp
cnN0QmxvY2suZ2V0KCk7Ci0gICAgYmFzaWNCbG9ja3MuYXBwZW5kKFdURjo6bW92ZShmaXJzdEJs
b2NrKSk7CisgICAgYmFzaWNCbG9ja3MuYXBwZW5kKFdURk1vdmUoZmlyc3RCbG9jaykpOwogCiAg
ICAgYXV0byBleGl0ID0gc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZUJhc2ljQmxvY2s+KEJ5dGVj
b2RlQmFzaWNCbG9jazo6RXhpdEJsb2NrKTsKIApAQCAtMTQyLDcgKzE0Miw3IEBAIHZvaWQgY29t
cHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFZlY3RvcjxzdGQ6
OnVuaXF1ZV9wdHI8Qnl0CiAgICAgICAgIGlmIChpc0p1bXBUYXJnZXQob3Bjb2RlSUQsIGp1bXBU
YXJnZXRzLCBieXRlY29kZU9mZnNldCkgfHwgbmV4dEluc3RydWN0aW9uSXNMZWFkZXIpIHsKICAg
ICAgICAgICAgIGF1dG8gbmV3QmxvY2sgPSBzdGQ6Om1ha2VfdW5pcXVlPEJ5dGVjb2RlQmFzaWNC
bG9jaz4oYnl0ZWNvZGVPZmZzZXQsIG9wY29kZUxlbmd0aCk7CiAgICAgICAgICAgICBjdXJyZW50
ID0gbmV3QmxvY2suZ2V0KCk7Ci0gICAgICAgICAgICBiYXNpY0Jsb2Nrcy5hcHBlbmQoV1RGOjpt
b3ZlKG5ld0Jsb2NrKSk7CisgICAgICAgICAgICBiYXNpY0Jsb2Nrcy5hcHBlbmQoV1RGTW92ZShu
ZXdCbG9jaykpOwogICAgICAgICAgICAgY3JlYXRlZEJsb2NrID0gdHJ1ZTsKICAgICAgICAgICAg
IG5leHRJbnN0cnVjdGlvbklzTGVhZGVyID0gZmFsc2U7CiAgICAgICAgICAgICBieXRlY29kZU9m
ZnNldCArPSBvcGNvZGVMZW5ndGg7CkBAIC0yMjksNyArMjI5LDcgQEAgdm9pZCBjb21wdXRlQnl0
ZWNvZGVCYXNpY0Jsb2NrcyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgVmVjdG9yPHN0ZDo6dW5pcXVl
X3B0cjxCeXQKICAgICAgICAgfQogICAgIH0KIAotICAgIGJhc2ljQmxvY2tzLmFwcGVuZChXVEY6
Om1vdmUoZXhpdCkpOworICAgIGJhc2ljQmxvY2tzLmFwcGVuZChXVEZNb3ZlKGV4aXQpKTsKICAg
ICAKICAgICBmb3IgKGF1dG8mIGJhc2ljQmxvY2sgOiBiYXNpY0Jsb2NrcykKICAgICAgICAgYmFz
aWNCbG9jay0+c2hyaW5rVG9GaXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvZGVCbG9jay5jcHAKaW5kZXggYzA5NzlmMzlmMzYwNDEwODBlYTA0MzM5Njc5ZmFhNTE2ZTA2
NTdkYi4uZDEzY2Y2YWZmNjg0YWIxYmEyYjUxNzQxOWNjZGExN2I3YWRkZDA2MSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTIyODMsNyArMjI4
Myw3IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1
dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAgaWYgKHZtLmNvbnRyb2xGbG93UHJv
ZmlsZXIoKSkKICAgICAgICAgaW5zZXJ0QmFzaWNCbG9ja0JvdW5kYXJpZXNGb3JDb250cm9sRmxv
d1Byb2ZpbGVyKGluc3RydWN0aW9ucyk7CiAKLSAgICBtX2luc3RydWN0aW9ucyA9IFdURjo6bW92
ZShpbnN0cnVjdGlvbnMpOworICAgIG1faW5zdHJ1Y3Rpb25zID0gV1RGTW92ZShpbnN0cnVjdGlv
bnMpOwogCiAgICAgLy8gUGVyZm9ybSBieXRlY29kZSBsaXZlbmVzcyBhbmFseXNpcyB0byBkZXRl
cm1pbmUgd2hpY2ggbG9jYWxzIGFyZSBsaXZlIGFuZCBzaG91bGQgYmUgcmVzdW1lZCB3aGVuIGV4
ZWN1dGluZyBvcF9yZXN1bWUuCiAgICAgaWYgKHVubGlua2VkQ29kZUJsb2NrLT5wYXJzZU1vZGUo
KSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckJvZHlNb2RlKSB7CkBAIC0zNDk4LDcgKzM0
OTgsNyBAQCB2b2lkIENvZGVCbG9jazo6c2V0Q2FsbGVlU2F2ZVJlZ2lzdGVycyhSZWdpc3RlclNl
dCBjYWxsZWVTYXZlUmVnaXN0ZXJzKQogCiB2b2lkIENvZGVCbG9jazo6c2V0Q2FsbGVlU2F2ZVJl
Z2lzdGVycyhzdGQ6OnVuaXF1ZV9wdHI8UmVnaXN0ZXJBdE9mZnNldExpc3Q+IHJlZ2lzdGVyQXRP
ZmZzZXRMaXN0KQogewotICAgIG1fY2FsbGVlU2F2ZVJlZ2lzdGVycyA9IFdURjo6bW92ZShyZWdp
c3RlckF0T2Zmc2V0TGlzdCk7CisgICAgbV9jYWxsZWVTYXZlUmVnaXN0ZXJzID0gV1RGTW92ZShy
ZWdpc3RlckF0T2Zmc2V0TGlzdCk7CiB9CiAgICAgCiBzdGF0aWMgc2l6ZV90IHJvdW5kQ2FsbGVl
U2F2ZVNwYWNlQXNWaXJ0dWFsUmVnaXN0ZXJzKHNpemVfdCBjYWxsZWVTYXZlUmVnaXN0ZXJzKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCmluZGV4IDU3NTk4NmVk
M2U4MGNkZTcwYzdhZWM0OWM1YTRmMDY3NmU1ZTJkZWYuLmRiYjk3NGI1NzM2ZmEyNTg1ZTE4ZmM0
MDRkYmI5OTg3ZjRkODRkOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmgKQEAgLTI2Nyw3ICsyNjcsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldEpJVENv
ZGVNYXAoc3RkOjp1bmlxdWVfcHRyPENvbXBhY3RKSVRDb2RlTWFwPiBqaXRDb2RlTWFwKQogICAg
IHsKLSAgICAgICAgbV9qaXRDb2RlTWFwID0gV1RGOjptb3ZlKGppdENvZGVNYXApOworICAgICAg
ICBtX2ppdENvZGVNYXAgPSBXVEZNb3ZlKGppdENvZGVNYXApOwogICAgIH0KICAgICBDb21wYWN0
SklUQ29kZU1hcCogaml0Q29kZU1hcCgpCiAgICAgewpAQCAtNjMyLDcgKzYzMiw3IEBAIHB1Ymxp
YzoKICAgICAgICAgewogICAgICAgICAgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIobV9s
b2NrKTsKICAgICAgICAgICAgIGlmICghbV9saXZlbmVzc0FuYWx5c2lzKQotICAgICAgICAgICAg
ICAgIG1fbGl2ZW5lc3NBbmFseXNpcyA9IFdURjo6bW92ZShhbmFseXNpcyk7CisgICAgICAgICAg
ICAgICAgbV9saXZlbmVzc0FuYWx5c2lzID0gV1RGTW92ZShhbmFseXNpcyk7CiAgICAgICAgICAg
ICByZXR1cm4gKm1fbGl2ZW5lc3NBbmFseXNpczsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcAppbmRleCAxMmMz
MWVmYjE1YWY5ODg0ZmM5MjZiZTI0NDY5NTRhMzMxYTQ2Y2EzLi42NmE0ZGQ4MWQ4YzZjODdjMjBh
MGE2NzQ3MTFlMDY4N2ViMDdjMWRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwCkBAIC0yMzMsNyArMjMzLDcgQEAgR2V0QnlJZFN0YXR1
cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yU3R1YkluZm9XaXRob3V0RXhpdFNpdGVGZWVkYmFj
aygKICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgR2V0QnlJZFZhcmlhbnQgdmFy
aWFudCgKICAgICAgICAgICAgICAgICAgICAgU3RydWN0dXJlU2V0KHN0cnVjdHVyZSksIGNvbXBs
ZXhHZXRTdGF0dXMub2Zmc2V0KCksCi0gICAgICAgICAgICAgICAgICAgIGNvbXBsZXhHZXRTdGF0
dXMuY29uZGl0aW9uU2V0KCksIFdURjo6bW92ZShjYWxsTGlua1N0YXR1cyksCisgICAgICAgICAg
ICAgICAgICAgIGNvbXBsZXhHZXRTdGF0dXMuY29uZGl0aW9uU2V0KCksIFdURk1vdmUoY2FsbExp
bmtTdGF0dXMpLAogICAgICAgICAgICAgICAgICAgICBpbnRyaW5zaWNGdW5jdGlvbik7CiAKICAg
ICAgICAgICAgICAgICBpZiAoIXJlc3VsdC5hcHBlbmRWYXJpYW50KHZhcmlhbnQpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRWYXJpYW50LmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkVmFyaWFudC5jcHAKaW5kZXgg
NWY1MzBkYzFmY2E1OTEwYTI5MzYzNTIxMjgxNmEyNzlkYjg4M2M1Yy4uYTg2OWQ0YTFjOTRlN2U0
NzU3MzE3NDRjN2IzMDNkNTA2NWUwZjQzMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0dldEJ5SWRWYXJpYW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvR2V0QnlJZFZhcmlhbnQuY3BwCkBAIC00MCw3ICs0MCw3IEBAIEdldEJ5SWRW
YXJpYW50OjpHZXRCeUlkVmFyaWFudCgKICAgICA6IG1fc3RydWN0dXJlU2V0KHN0cnVjdHVyZVNl
dCkKICAgICAsIG1fY29uZGl0aW9uU2V0KGNvbmRpdGlvblNldCkKICAgICAsIG1fb2Zmc2V0KG9m
ZnNldCkKLSAgICAsIG1fY2FsbExpbmtTdGF0dXMoV1RGOjptb3ZlKGNhbGxMaW5rU3RhdHVzKSkK
KyAgICAsIG1fY2FsbExpbmtTdGF0dXMoV1RGTW92ZShjYWxsTGlua1N0YXR1cykpCiAgICAgLCBt
X2ludHJpbnNpY0Z1bmN0aW9uKGludHJpbnNpY0Z1bmN0aW9uKQogewogICAgIGlmICghc3RydWN0
dXJlU2V0LnNpemUoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1BvbHltb3JwaGljQWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Qb2x5bW9ycGhpY0FjY2Vzcy5jcHAKaW5kZXggYTQ4OTk4Y2IwZmY1Nzc3MWU0YzJmOWI0Nzk5
ODUxMGZlMDEwNGM3MS4uOGFkZTczOWZlZWE3ZWJmYTVmMTAyOTlkNjM0ZDE0ZTFmN2FlZDE2NSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHltb3JwaGljQWNj
ZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seW1vcnBoaWNB
Y2Nlc3MuY3BwCkBAIC0xMTEyLDcgKzExMTIsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgUG9s
eW1vcnBoaWNBY2Nlc3M6OnJlZ2VuZXJhdGVXaXRoQ2FzZXMoCiAgICAgLy8gbmV3IGNhc2VzIHRo
YXQgcmVwbGFjZSBlYWNoIG90aGVyLgogICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNz
Q2FzZT4+IGNhc2VzVG9BZGQ7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG9yaWdpbmFs
Q2FzZXNUb0FkZC5zaXplKCk7ICsraSkgewotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNz
Q2FzZT4gbXlDYXNlID0gV1RGOjptb3ZlKG9yaWdpbmFsQ2FzZXNUb0FkZFtpXSk7CisgICAgICAg
IHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBteUNhc2UgPSBXVEZNb3ZlKG9yaWdpbmFsQ2Fz
ZXNUb0FkZFtpXSk7CiAKICAgICAgICAgLy8gQWRkIGl0IG9ubHkgaWYgaXQgaXMgbm90IHJlcGxh
Y2VkIGJ5IHRoZSBzdWJzZXF1ZW50IGNhc2VzIGluIHRoZSBsaXN0LgogICAgICAgICBib29sIGZv
dW5kID0gZmFsc2U7CkBAIC0xMTI2LDcgKzExMjYsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIg
UG9seW1vcnBoaWNBY2Nlc3M6OnJlZ2VuZXJhdGVXaXRoQ2FzZXMoCiAgICAgICAgIGlmIChmb3Vu
ZCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAKLSAgICAgICAgY2FzZXNUb0FkZC5h
cHBlbmQoV1RGOjptb3ZlKG15Q2FzZSkpOworICAgICAgICBjYXNlc1RvQWRkLmFwcGVuZChXVEZN
b3ZlKG15Q2FzZSkpOwogICAgIH0KIAogICAgIGlmICh2ZXJib3NlKQpAQCAtMTE2MSw3ICsxMTYx
LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIFBvbHltb3JwaGljQWNjZXNzOjpyZWdlbmVyYXRl
V2l0aENhc2VzKAogICAgICAgICBuZXdDYXNlcy5hcHBlbmQob2xkQ2FzZS0+Y2xvbmUoKSk7CiAg
ICAgfQogICAgIGZvciAoYXV0byYgY2FzZVRvQWRkIDogY2FzZXNUb0FkZCkKLSAgICAgICAgbmV3
Q2FzZXMuYXBwZW5kKFdURjo6bW92ZShjYXNlVG9BZGQpKTsKKyAgICAgICAgbmV3Q2FzZXMuYXBw
ZW5kKFdURk1vdmUoY2FzZVRvQWRkKSk7CiAKICAgICBpZiAodmVyYm9zZSkKICAgICAgICAgZGF0
YUxvZygibmV3Q2FzZXM6ICIsIGxpc3REdW1wKG5ld0Nhc2VzKSwgIlxuIik7CkBAIC0xMTc2LDcg
KzExNzYsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgUG9seW1vcnBoaWNBY2Nlc3M6OnJlZ2Vu
ZXJhdGVXaXRoQ2FzZXMoCiAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIHJldHVybiBNYWNyb0Fz
c2VtYmxlckNvZGVQdHIoKTsKIAotICAgIG1fbGlzdCA9IFdURjo6bW92ZShuZXdDYXNlcyk7Cisg
ICAgbV9saXN0ID0gV1RGTW92ZShuZXdDYXNlcyk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApA
QCAtMTE4NSw4ICsxMTg1LDggQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIFBvbHltb3JwaGljQWNj
ZXNzOjpyZWdlbmVyYXRlV2l0aENhc2UoCiAgICAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+
IG5ld0FjY2VzcykKIHsKICAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+PiBu
ZXdBY2Nlc3NlczsKLSAgICBuZXdBY2Nlc3Nlcy5hcHBlbmQoV1RGOjptb3ZlKG5ld0FjY2Vzcykp
OwotICAgIHJldHVybiByZWdlbmVyYXRlV2l0aENhc2VzKHZtLCBjb2RlQmxvY2ssIHN0dWJJbmZv
LCBpZGVudCwgV1RGOjptb3ZlKG5ld0FjY2Vzc2VzKSk7CisgICAgbmV3QWNjZXNzZXMuYXBwZW5k
KFdURk1vdmUobmV3QWNjZXNzKSk7CisgICAgcmV0dXJuIHJlZ2VuZXJhdGVXaXRoQ2FzZXModm0s
IGNvZGVCbG9jaywgc3R1YkluZm8sIGlkZW50LCBXVEZNb3ZlKG5ld0FjY2Vzc2VzKSk7CiB9CiAK
IGJvb2wgUG9seW1vcnBoaWNBY2Nlc3M6OnZpc2l0V2VhayhWTSYgdm0pIGNvbnN0CkBAIC0xMzc4
LDkgKzEzNzgsOSBAQCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgUG9seW1vcnBoaWNBY2Nlc3M6OnJl
Z2VuZXJhdGUoCiAgICAgICAgIGRvZXNDYWxscyB8PSBlbnRyeS0+ZG9lc0NhbGxzKCk7CiAgICAg
CiAgICAgbV9zdHViUm91dGluZSA9IGNyZWF0ZUpJVFN0dWJSb3V0aW5lKGNvZGUsIHZtLCBjb2Rl
QmxvY2ssIGRvZXNDYWxscywgbnVsbHB0ciwgY29kZUJsb2NrVGhhdE93bnNFeGNlcHRpb25IYW5k
bGVycywgY2FsbFNpdGVJbmRleEZvckV4Y2VwdGlvbkhhbmRsaW5nKTsKLSAgICBtX3dhdGNocG9p
bnRzID0gV1RGOjptb3ZlKHN0YXRlLndhdGNocG9pbnRzKTsKKyAgICBtX3dhdGNocG9pbnRzID0g
V1RGTW92ZShzdGF0ZS53YXRjaHBvaW50cyk7CiAgICAgaWYgKCFzdGF0ZS53ZWFrUmVmZXJlbmNl
cy5pc0VtcHR5KCkpCi0gICAgICAgIG1fd2Vha1JlZmVyZW5jZXMgPSBzdGQ6Om1ha2VfdW5pcXVl
PFZlY3RvcjxXcml0ZUJhcnJpZXI8SlNDZWxsPj4+KFdURjo6bW92ZShzdGF0ZS53ZWFrUmVmZXJl
bmNlcykpOworICAgICAgICBtX3dlYWtSZWZlcmVuY2VzID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0
b3I8V3JpdGVCYXJyaWVyPEpTQ2VsbD4+PihXVEZNb3ZlKHN0YXRlLndlYWtSZWZlcmVuY2VzKSk7
CiAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coIlJldHVybmluZzogIiwgY29kZS5j
b2RlKCksICJcbiIpOwogICAgIHJldHVybiBjb2RlLmNvZGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcAppbmRleCAyYmIzZmU4NGE4ZGI3
NjE1MWRiMTRjYjdmYmQ5ODFiMDQwNWUxYTgwLi40MzMyYmEwMzViMjBiOTJmNTcxMGJiMTk1ZGE3
ZGY4YzljOTVkNjZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
UHV0QnlJZFN0YXR1cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1
dEJ5SWRTdGF0dXMuY3BwCkBAIC0yMzMsNyArMjMzLDcgQEAgUHV0QnlJZFN0YXR1cyBQdXRCeUlk
U3RhdHVzOjpjb21wdXRlRm9yU3R1YkluZm8oCiAgICAgICAgICAgICAgICAgICAgIAogICAgICAg
ICAgICAgICAgICAgICB2YXJpYW50ID0gUHV0QnlJZFZhcmlhbnQ6OnNldHRlcigKICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0cnVjdHVyZSwgY29tcGxleEdldFN0YXR1cy5vZmZzZXQoKSwgY29t
cGxleEdldFN0YXR1cy5jb25kaXRpb25TZXQoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIFdU
Rjo6bW92ZShjYWxsTGlua1N0YXR1cykpOworICAgICAgICAgICAgICAgICAgICAgICAgV1RGTW92
ZShjYWxsTGlua1N0YXR1cykpOwogICAgICAgICAgICAgICAgIH0gfQogICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1B1dEJ5SWRWYXJpYW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9QdXRCeUlkVmFyaWFudC5jcHAKaW5kZXggYzI5MGZiNjE3MjVmZDM1NzY4ZDU5YzFjNmRi
Mjk2YTgwOTRmOTE3Ni4uOTkwNGM2MjViZWY1Mzg2MmE2MTBlYTg4YjRlMDZmYTAyNDMyYTM1NiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRWYXJpYW50
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFZhcmlhbnQu
Y3BwCkBAIC04OSw3ICs4OSw3IEBAIFB1dEJ5SWRWYXJpYW50IFB1dEJ5SWRWYXJpYW50OjpzZXR0
ZXIoCiAgICAgcmVzdWx0Lm1fb2xkU3RydWN0dXJlID0gc3RydWN0dXJlOwogICAgIHJlc3VsdC5t
X2NvbmRpdGlvblNldCA9IGNvbmRpdGlvblNldDsKICAgICByZXN1bHQubV9vZmZzZXQgPSBvZmZz
ZXQ7Ci0gICAgcmVzdWx0Lm1fY2FsbExpbmtTdGF0dXMgPSBXVEY6Om1vdmUoY2FsbExpbmtTdGF0
dXMpOworICAgIHJlc3VsdC5tX2NhbGxMaW5rU3RhdHVzID0gV1RGTW92ZShjYWxsTGlua1N0YXR1
cyk7CiAgICAgcmVzdWx0Lm1fcmVxdWlyZWRUeXBlID0gSW5mZXJyZWRUeXBlOjpUb3A7CiAgICAg
cmV0dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9TdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50LmNwcAppbmRl
eCBhOWRhODBiY2Y1OTEyZGZlZDFlYTBhMGNmOTI0YzcyNWJjNDIwYTNjLi5kMmJkZDZhNWE4YWY4
MjkxNTFlNGRmMjNiOTE0ZTdhNTNlMDc5Nzk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hwb2ludC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNo
cG9pbnQuY3BwCkBAIC00MSw3ICs0MSw3IEBAIFN0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9p
bnQqIFN0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQ6OnB1c2goCiAgICAgV2F0Y2hwb2lu
dHNPblN0cnVjdHVyZVN0dWJJbmZvJiBob2xkZXIsCiAgICAgc3RkOjp1bmlxdWVfcHRyPFN0cnVj
dHVyZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQ+JiBoZWFkKQogewotICAgIGhlYWQgPSBzdGQ6Om1h
a2VfdW5pcXVlPFN0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQ+KGtleSwgaG9sZGVyLCBX
VEY6Om1vdmUoaGVhZCkpOworICAgIGhlYWQgPSBzdGQ6Om1ha2VfdW5pcXVlPFN0cnVjdHVyZVN0
dWJDbGVhcmluZ1dhdGNocG9pbnQ+KGtleSwgaG9sZGVyLCBXVEZNb3ZlKGhlYWQpKTsKICAgICBy
ZXR1cm4gaGVhZC5nZXQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50LmgKaW5k
ZXggYjI0ODFiM2NhZWNlNGE3NTEyMjliNTIyNDZhODQ5NDhlY2JkNjM5Ni4uMzc2NjhjM2I5ODg4
NTZhNmU0OTlkYWQwNzJiYjIyYTA2ZGUyMjYwNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hw
b2ludC5oCkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKICAgICAgICAgc3RkOjp1bmlxdWVfcHRy
PFN0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQ+IG5leHQpCiAgICAgICAgIDogbV9rZXko
a2V5KQogICAgICAgICAsIG1faG9sZGVyKGhvbGRlcikKLSAgICAgICAgLCBtX25leHQoV1RGOjpt
b3ZlKG5leHQpKQorICAgICAgICAsIG1fbmV4dChXVEZNb3ZlKG5leHQpKQogICAgIHsKICAgICB9
CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0
dXJlU3R1YkluZm8uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVy
ZVN0dWJJbmZvLmNwcAppbmRleCA0YWZmYTQ2MGY3MjA0MWY5NjgwYjUxMTFhNDAzZGQwYWMzODFk
NGNmLi4xZTRiNGY1NTQ4ZjgzOWNjMThiNzNiNTFlMTFkNjRlYTNjNWM0ODdkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAK
QEAgLTExMyw3ICsxMTMsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgU3RydWN0dXJlU3R1Yklu
Zm86OmFkZEFjY2Vzc0Nhc2UoCiAgICAgICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlckNvZGVQdHIo
KTsKICAgICAKICAgICBpZiAoY2FjaGVUeXBlID09IENhY2hlVHlwZTo6U3R1YikKLSAgICAgICAg
cmV0dXJuIHUuc3R1Yi0+cmVnZW5lcmF0ZVdpdGhDYXNlKHZtLCBjb2RlQmxvY2ssICp0aGlzLCBp
ZGVudCwgV1RGOjptb3ZlKGFjY2Vzc0Nhc2UpKTsKKyAgICAgICAgcmV0dXJuIHUuc3R1Yi0+cmVn
ZW5lcmF0ZVdpdGhDYXNlKHZtLCBjb2RlQmxvY2ssICp0aGlzLCBpZGVudCwgV1RGTW92ZShhY2Nl
c3NDYXNlKSk7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UG9seW1vcnBoaWNBY2Nlc3M+IGFjY2Vz
cyA9IHN0ZDo6bWFrZV91bmlxdWU8UG9seW1vcnBoaWNBY2Nlc3M+KCk7CiAgICAgCkBAIC0xMjIs
MTcgKzEyMiwxNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgU3RydWN0dXJlU3R1YkluZm86OmFk
ZEFjY2Vzc0Nhc2UoCiAgICAgc3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IHByZXZpb3VzQ2Fz
ZSA9CiAgICAgICAgIEFjY2Vzc0Nhc2U6OmZyb21TdHJ1Y3R1cmVTdHViSW5mbyh2bSwgY29kZUJs
b2NrLCAqdGhpcyk7CiAgICAgaWYgKHByZXZpb3VzQ2FzZSkKLSAgICAgICAgYWNjZXNzQ2FzZXMu
YXBwZW5kKFdURjo6bW92ZShwcmV2aW91c0Nhc2UpKTsKKyAgICAgICAgYWNjZXNzQ2FzZXMuYXBw
ZW5kKFdURk1vdmUocHJldmlvdXNDYXNlKSk7CiAKLSAgICBhY2Nlc3NDYXNlcy5hcHBlbmQoV1RG
Ojptb3ZlKGFjY2Vzc0Nhc2UpKTsKKyAgICBhY2Nlc3NDYXNlcy5hcHBlbmQoV1RGTW92ZShhY2Nl
c3NDYXNlKSk7CiAKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgcmVzdWx0ID0KLSAgICAgICAg
YWNjZXNzLT5yZWdlbmVyYXRlV2l0aENhc2VzKHZtLCBjb2RlQmxvY2ssICp0aGlzLCBpZGVudCwg
V1RGOjptb3ZlKGFjY2Vzc0Nhc2VzKSk7CisgICAgICAgIGFjY2Vzcy0+cmVnZW5lcmF0ZVdpdGhD
YXNlcyh2bSwgY29kZUJsb2NrLCAqdGhpcywgaWRlbnQsIFdURk1vdmUoYWNjZXNzQ2FzZXMpKTsK
IAogICAgIGlmICghcmVzdWx0KQogICAgICAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXJDb2RlUHRy
KCk7CiAKLSAgICBpbml0U3R1Yihjb2RlQmxvY2ssIFdURjo6bW92ZShhY2Nlc3MpKTsKKyAgICBp
bml0U3R1Yihjb2RlQmxvY2ssIFdURk1vdmUoYWNjZXNzKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2Vk
Q29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENv
ZGVCbG9jay5jcHAKaW5kZXggMmNhNGIwMDg1NmMwNjNhNzY4MTBhNWEwZGVjYTYwZWM1MDlmM2Rk
MC4uZDU2MDQyNWUyZWVhMGNjZDdlNmJjNGUzY2EzODhlOTExYTk4ZjMwMCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCkBA
IC0zMzQsNyArMzM0LDcgQEAgdm9pZCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6ZGVzdHJv
eShKU0NlbGwqIGNlbGwpCiAKIHZvaWQgVW5saW5rZWRDb2RlQmxvY2s6OnNldEluc3RydWN0aW9u
cyhzdGQ6OnVuaXF1ZV9wdHI8VW5saW5rZWRJbnN0cnVjdGlvblN0cmVhbT4gaW5zdHJ1Y3Rpb25z
KQogewotICAgIG1fdW5saW5rZWRJbnN0cnVjdGlvbnMgPSBXVEY6Om1vdmUoaW5zdHJ1Y3Rpb25z
KTsKKyAgICBtX3VubGlua2VkSW5zdHJ1Y3Rpb25zID0gV1RGTW92ZShpbnN0cnVjdGlvbnMpOwog
fQogCiBjb25zdCBVbmxpbmtlZEluc3RydWN0aW9uU3RyZWFtJiBVbmxpbmtlZENvZGVCbG9jazo6
aW5zdHJ1Y3Rpb25zKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCmluZGV4IDUwNjcy
MjAwZjU3N2EzMDNhYjc3YjZkZDcyMTA2Zjc3MjI2OWY3YTEuLmRmMzA0ZmE5ZGE2N2ZjODkwNmNl
ODZkNzM2MTA3NjcxOWMxOWM2NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcApAQCAtODIs
NyArODIsNyBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGUoVk0qIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdAogICAgIDogQmFzZSgqdm0sIHN0cnVj
dHVyZSkKICAgICAsIG1fbmFtZShub2RlLT5pZGVudCgpKQogICAgICwgbV9pbmZlcnJlZE5hbWUo
bm9kZS0+aW5mZXJyZWROYW1lKCkpCi0gICAgLCBtX3NvdXJjZU92ZXJyaWRlKFdURjo6bW92ZShz
b3VyY2VPdmVycmlkZSkpCisgICAgLCBtX3NvdXJjZU92ZXJyaWRlKFdURk1vdmUoc291cmNlT3Zl
cnJpZGUpKQogICAgICwgbV9maXJzdExpbmVPZmZzZXQobm9kZS0+Zmlyc3RMaW5lKCkgLSBzb3Vy
Y2UuZmlyc3RMaW5lKCkpCiAgICAgLCBtX2xpbmVDb3VudChub2RlLT5sYXN0TGluZSgpIC0gbm9k
ZS0+Zmlyc3RMaW5lKCkpCiAgICAgLCBtX3VubGlua2VkRnVuY3Rpb25OYW1lU3RhcnQobm9kZS0+
ZnVuY3Rpb25OYW1lU3RhcnQoKSAtIHNvdXJjZS5zdGFydE9mZnNldCgpKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGUuaAppbmRleCA1OWUyMjgzOWE0MWY5MzA3NzM0ZGRhODcwNTZlZjA5MTY0NjgyZGQzLi45
ZTJmYTY3NDM3MTc2NTkxZjQyYzE4MDM3NzZkMjM2ZDAwNjliZTZmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGUuaApAQCAtNjksNyArNjksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlKiBjcmVhdGUoVk0qIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2Us
IEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiBub2RlLCBVbmxpbmtlZEZ1bmN0aW9uS2luZCB1bmxpbmtl
ZEZ1bmN0aW9uS2luZCwgQ29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5LCBWYXJpYWJs
ZUVudmlyb25tZW50JiBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgRGVyaXZlZENvbnRleHRUeXBl
IGRlcml2ZWRDb250ZXh0VHlwZSwgUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiYmIHNvdXJjZU92ZXJy
aWRlID0gbnVsbHB0cikKICAgICB7CiAgICAgICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
KiBpbnN0YW5jZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlPih2bS0+aGVhcCkpCi0gICAgICAgICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZSh2bSwgdm0tPnVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3RydWN0dXJlLmdldCgpLCBz
b3VyY2UsIFdURjo6bW92ZShzb3VyY2VPdmVycmlkZSksIG5vZGUsIHVubGlua2VkRnVuY3Rpb25L
aW5kLCBjb25zdHJ1Y3RBYmlsaXR5LCBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgZGVyaXZlZENv
bnRleHRUeXBlKTsKKyAgICAgICAgICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKHZtLCB2
bS0+dW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTdHJ1Y3R1cmUuZ2V0KCksIHNvdXJjZSwgV1RG
TW92ZShzb3VyY2VPdmVycmlkZSksIG5vZGUsIHVubGlua2VkRnVuY3Rpb25LaW5kLCBjb25zdHJ1
Y3RBYmlsaXR5LCBwYXJlbnRTY29wZVREWlZhcmlhYmxlcywgZGVyaXZlZENvbnRleHRUeXBlKTsK
ICAgICAgICAgaW5zdGFuY2UtPmZpbmlzaENyZWF0aW9uKCp2bSk7CiAgICAgICAgIHJldHVybiBp
bnN0YW5jZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL1NldEZvclNjb3BlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L1NldEZvclNjb3BlLmgKaW5kZXggNTZlN2QyYTAxYmViNzBmNmZjNzNjMDA1ODgyZDk3NTk2ZGQ5
YjMzZi4uZWVmNzZhZWY0ZGE2YWM5Mjk4MTUyZDI5MmU1OWYyZTljNDgxNmZmMCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9TZXRGb3JTY29wZS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvU2V0Rm9yU2NvcGUuaApAQCAtNDQs
NyArNDQsNyBAQCBwdWJsaWM6CiAgICAgICAgIDogbV9yZWYoY3VycmVudFZhbHVlKQogICAgICAg
ICAsIG1fb2xkVmFsdWUoY3VycmVudFZhbHVlKQogICAgIHsKLSAgICAgICAgY3VycmVudFZhbHVl
ID0gV1RGOjptb3ZlKG5ld1ZhbHVlKTsKKyAgICAgICAgY3VycmVudFZhbHVlID0gV1RGTW92ZShu
ZXdWYWx1ZSk7CiAgICAgfQogCiAgICAgflNldEZvclNjb3BlKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdHcmFwaC5jcHAKaW5kZXggZjUyZGQ4MTFiYzhjM2IxZDcxMTE4YTgxOTAwMzJiNjk1
OGZjZTdhZi4uNDIzNGVjNTZiYzczNGI3YzA0OThiMjgwYWNkNDNkZmVkZWEwMGM2MyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAKQEAgLTkzNyw3ICs5MzcsNyBAQCBGdWxs
Qnl0ZWNvZGVMaXZlbmVzcyYgR3JhcGg6OmxpdmVuZXNzRm9yKENvZGVCbG9jayogY29kZUJsb2Nr
KQogICAgIHN0ZDo6dW5pcXVlX3B0cjxGdWxsQnl0ZWNvZGVMaXZlbmVzcz4gbGl2ZW5lc3MgPSBz
dGQ6Om1ha2VfdW5pcXVlPEZ1bGxCeXRlY29kZUxpdmVuZXNzPigpOwogICAgIGNvZGVCbG9jay0+
bGl2ZW5lc3NBbmFseXNpcygpLmNvbXB1dGVGdWxsTGl2ZW5lc3MoKmxpdmVuZXNzKTsKICAgICBG
dWxsQnl0ZWNvZGVMaXZlbmVzcyYgcmVzdWx0ID0gKmxpdmVuZXNzOwotICAgIG1fYnl0ZWNvZGVM
aXZlbmVzcy5hZGQoY29kZUJsb2NrLCBXVEY6Om1vdmUobGl2ZW5lc3MpKTsKKyAgICBtX2J5dGVj
b2RlTGl2ZW5lc3MuYWRkKGNvZGVCbG9jaywgV1RGTW92ZShsaXZlbmVzcykpOwogICAgIHJldHVy
biByZXN1bHQ7CiB9CiAKQEAgLTk1NSw3ICs5NTUsNyBAQCBCeXRlY29kZUtpbGxzJiBHcmFwaDo6
a2lsbHNGb3IoQ29kZUJsb2NrKiBjb2RlQmxvY2spCiAgICAgc3RkOjp1bmlxdWVfcHRyPEJ5dGVj
b2RlS2lsbHM+IGtpbGxzID0gc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZUtpbGxzPigpOwogICAg
IGNvZGVCbG9jay0+bGl2ZW5lc3NBbmFseXNpcygpLmNvbXB1dGVLaWxscygqa2lsbHMpOwogICAg
IEJ5dGVjb2RlS2lsbHMmIHJlc3VsdCA9ICpraWxsczsKLSAgICBtX2J5dGVjb2RlS2lsbHMuYWRk
KGNvZGVCbG9jaywgV1RGOjptb3ZlKGtpbGxzKSk7CisgICAgbV9ieXRlY29kZUtpbGxzLmFkZChj
b2RlQmxvY2ssIFdURk1vdmUoa2lsbHMpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCmluZGV4IDY4MTk4YzU0
NTdkOTczYjZhMzJiN2MwNjVlNmZiZWYyYjk5Mzc3ZTcuLmZmMzk5ZTg2ZTk0MzE4ZmNmOTJhZWNh
MDMzN2FiYmEwOTllZWEzMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHSklUQ29tcGlsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklU
Q29tcGlsZXIuY3BwCkBAIC0xNzEsNyArMTcxLDcgQEAgdm9pZCBKSVRDb21waWxlcjo6bGluayhM
aW5rQnVmZmVyJiBsaW5rQnVmZmVyKQogICAgICAgICBtX2ppdENvZGUtPmNvbW1vbi5pbmxpbmVD
YWxsRnJhbWVzID0gbV9ncmFwaC5tX3BsYW4uaW5saW5lQ2FsbEZyYW1lczsKICAgICAKICNpZiBV
U0UoSlNWQUxVRTMyXzY0KQotICAgIG1faml0Q29kZS0+Y29tbW9uLmRvdWJsZUNvbnN0YW50cyA9
IFdURjo6bW92ZShtX2dyYXBoLm1fZG91YmxlQ29uc3RhbnRzKTsKKyAgICBtX2ppdENvZGUtPmNv
bW1vbi5kb3VibGVDb25zdGFudHMgPSBXVEZNb3ZlKG1fZ3JhcGgubV9kb3VibGVDb25zdGFudHMp
OwogI2VuZGlmCiAgICAgCiAgICAgbV9ncmFwaC5yZWdpc3RlckZyb3plblZhbHVlcygpOwpAQCAt
MzYzLDcgKzM2Myw3IEBAIHZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGUoKQogICAgIGRpc2Fzc2Vt
YmxlKCpsaW5rQnVmZmVyKTsKICAgICAKICAgICBtX2dyYXBoLm1fcGxhbi5maW5hbGl6ZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPEpJVEZpbmFsaXplcj4oCi0gICAgICAgIG1fZ3JhcGgubV9wbGFuLCBt
X2ppdENvZGUucmVsZWFzZSgpLCBXVEY6Om1vdmUobGlua0J1ZmZlcikpOworICAgICAgICBtX2dy
YXBoLm1fcGxhbiwgbV9qaXRDb2RlLnJlbGVhc2UoKSwgV1RGTW92ZShsaW5rQnVmZmVyKSk7CiB9
CiAKIHZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGVGdW5jdGlvbigpCkBAIC00NjAsNyArNDYwLDcg
QEAgdm9pZCBKSVRDb21waWxlcjo6Y29tcGlsZUZ1bmN0aW9uKCkKICAgICBNYWNyb0Fzc2VtYmxl
ckNvZGVQdHIgd2l0aEFyaXR5Q2hlY2sgPSBsaW5rQnVmZmVyLT5sb2NhdGlvbk9mKG1fYXJpdHlD
aGVjayk7CiAKICAgICBtX2dyYXBoLm1fcGxhbi5maW5hbGl6ZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PEpJVEZpbmFsaXplcj4oCi0gICAgICAgIG1fZ3JhcGgubV9wbGFuLCBtX2ppdENvZGUucmVsZWFz
ZSgpLCBXVEY6Om1vdmUobGlua0J1ZmZlciksIHdpdGhBcml0eUNoZWNrKTsKKyAgICAgICAgbV9n
cmFwaC5tX3BsYW4sIG1faml0Q29kZS5yZWxlYXNlKCksIFdURk1vdmUobGlua0J1ZmZlciksIHdp
dGhBcml0eUNoZWNrKTsKIH0KIAogdm9pZCBKSVRDb21waWxlcjo6ZGlzYXNzZW1ibGUoTGlua0J1
ZmZlciYgbGlua0J1ZmZlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHSklURmluYWxpemVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklURmlu
YWxpemVyLmNwcAppbmRleCAyZDEzMWMzYzg4YmY1ZDZkYjIwMDk3OWNkMTA2YWE3YjNhOGY4ZDRj
Li4xMTMyZmM5Yjc5MjdjNzgzNzkxYjA5MGExMzE3MmRkNDk3NzkwMTJhIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVEZpbmFsaXplci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRGaW5hbGl6ZXIuY3BwCkBAIC00MCw3ICs0MCw3IEBA
IG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIEpJVEZpbmFsaXplcjo6SklURmluYWxp
emVyKFBsYW4mIHBsYW4sIFBhc3NSZWZQdHI8SklUQ29kZT4gaml0Q29kZSwgc3RkOjp1bmlxdWVf
cHRyPExpbmtCdWZmZXI+IGxpbmtCdWZmZXIsIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciB3aXRoQXJp
dHlDaGVjaykKICAgICA6IEZpbmFsaXplcihwbGFuKQogICAgICwgbV9qaXRDb2RlKGppdENvZGUp
Ci0gICAgLCBtX2xpbmtCdWZmZXIoV1RGOjptb3ZlKGxpbmtCdWZmZXIpKQorICAgICwgbV9saW5r
QnVmZmVyKFdURk1vdmUobGlua0J1ZmZlcikpCiAgICAgLCBtX3dpdGhBcml0eUNoZWNrKHdpdGhB
cml0eUNoZWNrKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdMaXZlbmVzc0FuYWx5c2lzUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdMaXZlbmVzc0FuYWx5c2lzUGhhc2UuY3BwCmluZGV4IDVlN2Q1YmI3MWQ1ODFkMDNkYzM1YzA1
MWIyOTQ1ZGZkNzhhNWIwNGUuLjk0YzM5OGRhMTFiYmIxZWQ4YTIxNTIyY2QwZTE3OTFlMDNiOTlh
YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTGl2ZW5lc3NBbmFs
eXNpc1BoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xpdmVuZXNz
QW5hbHlzaXNQaGFzZS5jcHAKQEAgLTE0Miw3ICsxNDIsNyBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBibG9jay0+c3NhLT5s
aXZlQXRIZWFkID0gV1RGOjptb3ZlKG1fbGl2ZSk7CisgICAgICAgIGJsb2NrLT5zc2EtPmxpdmVB
dEhlYWQgPSBXVEZNb3ZlKG1fbGl2ZSk7CiAgICAgfQogICAgIAogICAgIHZvaWQgYWRkQ2hpbGRV
c2UoTm9kZSosIEVkZ2UmIGVkZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcAppbmRleCBmNjcx
OWY1NzJiNjJjZGE5N2M4MGExNzgwZTFlM2RiOGQ2MTZhYzRmLi45ZTBhMTMwMDhmMTVkZmNmNjI4
MzljMTFiNjk2OTE5YjYwZGJhZjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAKQEAgLTQx
Nyw3ICs0MTcsNyBAQCBwdWJsaWM6CiAKICAgICBIYXNoTWFwPE5vZGUqLCBBbGxvY2F0aW9uPiB0
YWtlRXNjYXBlZXMoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIFdURjo6bW92ZShtX2VzY2FwZWVz
KTsKKyAgICAgICAgcmV0dXJuIFdURk1vdmUobV9lc2NhcGVlcyk7CiAgICAgfQogCiAgICAgdm9p
ZCBlc2NhcGUoTm9kZSogbm9kZSkKQEAgLTY0MywxNCArNjQzLDE0IEBAIHByaXZhdGU6CiAgICAg
ICAgIGlmIChhbGxvY2F0aW9uLmlzRXNjYXBlZEFsbG9jYXRpb24oKSkKICAgICAgICAgICAgIHJl
dHVybjsKIAotICAgICAgICBBbGxvY2F0aW9uIHVuZXNjYXBlZCA9IFdURjo6bW92ZShhbGxvY2F0
aW9uKTsKKyAgICAgICAgQWxsb2NhdGlvbiB1bmVzY2FwZWQgPSBXVEZNb3ZlKGFsbG9jYXRpb24p
OwogICAgICAgICBhbGxvY2F0aW9uID0gQWxsb2NhdGlvbih1bmVzY2FwZWQuaWRlbnRpZmllcigp
LCBBbGxvY2F0aW9uOjpLaW5kOjpFc2NhcGVkKTsKIAogICAgICAgICBmb3IgKGNvbnN0IGF1dG8m
IGVudHJ5IDogdW5lc2NhcGVkLmZpZWxkcygpKQogICAgICAgICAgICAgZXNjYXBlQWxsb2NhdGlv
bihlbnRyeS52YWx1ZSk7CiAKICAgICAgICAgaWYgKG1fd2FudEVzY2FwZWVzKQotICAgICAgICAg
ICAgbV9lc2NhcGVlcy5hZGQodW5lc2NhcGVkLmlkZW50aWZpZXIoKSwgV1RGOjptb3ZlKHVuZXNj
YXBlZCkpOworICAgICAgICAgICAgbV9lc2NhcGVlcy5hZGQodW5lc2NhcGVkLmlkZW50aWZpZXIo
KSwgV1RGTW92ZSh1bmVzY2FwZWQpKTsKICAgICB9CiAKICAgICB2b2lkIHBydW5lKCkKQEAgLTEy
MTgsNyArMTIxOCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIGlmIChtdXN0RXNj
YXBlKQogICAgICAgICAgICAgICAgICAgICAgICAgZXNjYXBpbmdPbkVkZ2UuYWRkKGVudHJ5Lmtl
eSwgZW50cnkudmFsdWUpOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBwbGFj
ZU1hdGVyaWFsaXphdGlvbnMoV1RGOjptb3ZlKGVzY2FwaW5nT25FZGdlKSwgYmxvY2stPnRlcm1p
bmFsKCkpOworICAgICAgICAgICAgICAgIHBsYWNlTWF0ZXJpYWxpemF0aW9ucyhXVEZNb3ZlKGVz
Y2FwaW5nT25FZGdlKSwgYmxvY2stPnRlcm1pbmFsKCkpOwogICAgICAgICAgICAgfQogICAgICAg
ICB9CiAKQEAgLTEzMzIsNyArMTMzMiw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAvLyBXZSBu
ZWVkIHRvIGluc2VydCAqYWZ0ZXIqIHRoZSBjdXJyZW50IHBvc2l0aW9uCiAgICAgICAgICAgICBp
ZiAoZmlyc3RQb3MgIT0gdG9NYXRlcmlhbGl6ZS5lbmQoKSkKICAgICAgICAgICAgICAgICArK2Zp
cnN0UG9zOwotICAgICAgICAgICAgZmlyc3RQb3MgPSB0b01hdGVyaWFsaXplLmluc2VydChmaXJz
dFBvcywgV1RGOjptb3ZlKGFsbG9jYXRpb24pKTsKKyAgICAgICAgICAgIGZpcnN0UG9zID0gdG9N
YXRlcmlhbGl6ZS5pbnNlcnQoZmlyc3RQb3MsIFdURk1vdmUoYWxsb2NhdGlvbikpOwogICAgICAg
ICB9OwogCiAgICAgICAgIC8vIE5vZGVzIHRoYXQgbm8gb3RoZXIgdW5tYXRlcmlhbGl6ZWQgbm9k
ZSBwb2ludHMgdG8gd2lsbCBiZQpAQCAtMTM0MSw3ICsxMzQxLDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgYXV0byBsYXN0UG9zID0gdG9NYXRlcmlhbGl6ZS5lbmQoKTsKICAgICAgICAgYXV0byBtYXRl
cmlhbGl6ZUxhc3QgPSBbJl0gKEFsbG9jYXRpb24mJiBhbGxvY2F0aW9uKSB7CiAgICAgICAgICAg
ICBtYXRlcmlhbGl6ZShhbGxvY2F0aW9uLmlkZW50aWZpZXIoKSk7Ci0gICAgICAgICAgICBsYXN0
UG9zID0gdG9NYXRlcmlhbGl6ZS5pbnNlcnQobGFzdFBvcywgV1RGOjptb3ZlKGFsbG9jYXRpb24p
KTsKKyAgICAgICAgICAgIGxhc3RQb3MgPSB0b01hdGVyaWFsaXplLmluc2VydChsYXN0UG9zLCBX
VEZNb3ZlKGFsbG9jYXRpb24pKTsKICAgICAgICAgfTsKIAogICAgICAgICAvLyBUaGVzZSBhcmUg
dGhlIHByb21vdGVkIGxvY2F0aW9ucyB0aGF0IGNvbnRhaW5zIHNvbWUgb2YgdGhlCkBAIC0xMzYy
LDEyICsxMzYyLDEyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwog
CiAgICAgICAgICAgICAgICAgaWYgKGRlcGVuZGVuY2llcy5maW5kKGVudHJ5LmtleSktPnZhbHVl
LmlzRW1wdHkoKSkgewotICAgICAgICAgICAgICAgICAgICBtYXRlcmlhbGl6ZUZpcnN0KFdURjo6
bW92ZShlbnRyeS52YWx1ZSkpOworICAgICAgICAgICAgICAgICAgICBtYXRlcmlhbGl6ZUZpcnN0
KFdURk1vdmUoZW50cnkudmFsdWUpKTsKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAg
ICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgaWYgKHJldmVyc2VEZXBlbmRlbmNp
ZXMuZmluZChlbnRyeS5rZXkpLT52YWx1ZS5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgICAgICAg
ICAgbWF0ZXJpYWxpemVMYXN0KFdURjo6bW92ZShlbnRyeS52YWx1ZSkpOworICAgICAgICAgICAg
ICAgICAgICBtYXRlcmlhbGl6ZUxhc3QoV1RGTW92ZShlbnRyeS52YWx1ZSkpOwogICAgICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CkBA
IC0xMzkyLDcgKzEzOTIsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVChtYXhFdmFsdWF0aW9uID4gMCk7CiAKLSAgICAgICAgICAg
ICAgICBtYXRlcmlhbGl6ZUZpcnN0KFdURjo6bW92ZSgqYmVzdEFsbG9jYXRpb24pKTsKKyAgICAg
ICAgICAgICAgICBtYXRlcmlhbGl6ZUZpcnN0KFdURk1vdmUoKmJlc3RBbGxvY2F0aW9uKSk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCghbWF0ZXJpYWxpemVkLmlz
RW1wdHkoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5jcHAKaW5kZXggMzE5NTIxY2ZiNzdjYjdiNmYxZTM0OThjODI2NmVmNjFlZTA1NDVmNi4u
NGNmNGZkNDBkMTI3YTM1ZDA1ZGExYTZiZGU0NzE3OGJlNTk0MTY2YSAxMDA3NTUKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTMyOCw3ICszMjgs
NyBAQCBSZWdpc3RlclNldCBTcGVjdWxhdGl2ZUpJVDo6dXNlZFJlZ2lzdGVycygpCiAKIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmFkZFNsb3dQYXRoR2VuZXJhdG9yKHN0ZDo6dW5pcXVlX3B0cjxTbG93
UGF0aEdlbmVyYXRvcj4gc2xvd1BhdGhHZW5lcmF0b3IpCiB7Ci0gICAgbV9zbG93UGF0aEdlbmVy
YXRvcnMuYXBwZW5kKFdURjo6bW92ZShzbG93UGF0aEdlbmVyYXRvcikpOworICAgIG1fc2xvd1Bh
dGhHZW5lcmF0b3JzLmFwcGVuZChXVEZNb3ZlKHNsb3dQYXRoR2VuZXJhdG9yKSk7CiB9CiAKIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OnJ1blNsb3dQYXRoR2VuZXJhdG9ycygpCkBAIC05NzQsNyArOTc0
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluKE5vZGUqIG5vZGUpCiAgICAgICAg
ICAgICBzdHViSW5mby0+cGF0Y2gudXNlZFJlZ2lzdGVycyA9IHVzZWRSZWdpc3RlcnMoKTsKIAog
ICAgICAgICAgICAgbV9qaXQuYWRkSW4oSW5SZWNvcmQoanVtcCwgZG9uZSwgc2xvd1BhdGguZ2V0
KCksIHN0dWJJbmZvKSk7Ci0gICAgICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihXVEY6Om1v
dmUoc2xvd1BhdGgpKTsKKyAgICAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKFdURk1vdmUo
c2xvd1BhdGgpKTsKIAogICAgICAgICAgICAgYmFzZS51c2UoKTsKIApAQCAtNTcyMCw3ICs1NzIw
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNyZWF0ZURpcmVjdEFyZ3VtZW50cyhO
b2RlKiBub2RlKQogICAgIH0gZWxzZSB7CiAgICAgICAgIGF1dG8gZ2VuZXJhdG9yID0gc3RkOjpt
YWtlX3VuaXF1ZTxDYWxsQ3JlYXRlRGlyZWN0QXJndW1lbnRzU2xvd1BhdGhHZW5lcmF0b3I+KAog
ICAgICAgICAgICAgc2xvd1BhdGgsIHRoaXMsIHJlc3VsdEdQUiwgc3RydWN0dXJlLCBsZW5ndGhH
UFIsIG1pbkNhcGFjaXR5KTsKLSAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoV1RGOjptb3Zl
KGdlbmVyYXRvcikpOworICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihXVEZNb3ZlKGdlbmVy
YXRvcikpOwogICAgIH0KICAgICAgICAgCiAgICAgaWYgKG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5p
bmxpbmVDYWxsRnJhbWUpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCmluZGV4IDg5YTBkYzMwMzJiY2M0ZmI1MDE3ZWVlMWNh
Y2Y2NDA0N2UyYWQwYjMuLjU0N2FhMGJjNGQzMzZmNGI3ZjhiZTRkODNkNTczZWZiNzViMjczNTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQz
Ml82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDMyXzY0LmNwcApAQCAtMjE4LDcgKzIxOCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hl
ZEdldEJ5SWQoCiAgICAgfQogCiAgICAgbV9qaXQuYWRkR2V0QnlJZChnZW4sIHNsb3dQYXRoLmdl
dCgpKTsKLSAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihXVEY6Om1vdmUoc2xvd1BhdGgpKTsKKyAg
ICBhZGRTbG93UGF0aEdlbmVyYXRvcihXVEZNb3ZlKHNsb3dQYXRoKSk7CiB9CiAKIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNhY2hlZFB1dEJ5SWQoQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBHUFJSZWcg
YmFzZVBheWxvYWRHUFIsIEdQUlJlZyB2YWx1ZVRhZ0dQUiwgR1BSUmVnIHZhbHVlUGF5bG9hZEdQ
UiwgR1BSUmVnIHNjcmF0Y2hHUFIsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIFB1dEtpbmQg
cHV0S2luZCwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGhUYXJnZXQsIFNwaWxsUmVnaXN0ZXJz
TW9kZSBzcGlsbE1vZGUpCkBAIC0yNDcsNyArMjQ3LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y2FjaGVkUHV0QnlJZChDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIEdQUlJlZyBiYXNlUGF5bG9hZEdQ
UiwKICAgICAgICAgdmFsdWVQYXlsb2FkR1BSLCBiYXNlUGF5bG9hZEdQUiwgaWRlbnRpZmllclVJ
RChpZGVudGlmaWVyTnVtYmVyKSk7CiAKICAgICBtX2ppdC5hZGRQdXRCeUlkKGdlbiwgc2xvd1Bh
dGguZ2V0KCkpOwotICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKFdURjo6bW92ZShzbG93UGF0aCkp
OworICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKFdURk1vdmUoc2xvd1BhdGgpKTsKIH0KIAogdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVOb25QZWVwaG9sZUNvbXBhcmVOdWxsT3JV
bmRlZmluZWQoRWRnZSBvcGVyYW5kKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKaW5kZXggNzBlOGVhOGUzNTEwNjRjOWU0YTNiMWU1Y2Jk
YzZiMDVkNTU0ZDcyNS4uODliNzk5MTY0M2RlYWY1YWU4YjdkNGVkOGEzMGU4ODVkZmYyNGZlMiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQu
Y3BwCkBAIC0xNzYsNyArMTc2LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJ
ZChDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcKICAgICAgICAg
aWRlbnRpZmllclVJRChpZGVudGlmaWVyTnVtYmVyKSwgc3BpbGxNb2RlKTsKICAgICAKICAgICBt
X2ppdC5hZGRHZXRCeUlkKGdlbiwgc2xvd1BhdGguZ2V0KCkpOwotICAgIGFkZFNsb3dQYXRoR2Vu
ZXJhdG9yKFdURjo6bW92ZShzbG93UGF0aCkpOworICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKFdU
Rk1vdmUoc2xvd1BhdGgpKTsKIH0KIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkUHV0QnlJ
ZChDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgdmFsdWVHUFIs
IEdQUlJlZyBzY3JhdGNoR1BSLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBQdXRLaW5kIHB1
dEtpbmQsIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0LCBTcGlsbFJlZ2lzdGVyc01v
ZGUgc3BpbGxNb2RlKQpAQCAtMjA1LDcgKzIwNSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNh
Y2hlZFB1dEJ5SWQoQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBHUFJSZWcgYmFzZUdQUiwgR1BSUmVn
CiAgICAgICAgIGlkZW50aWZpZXJVSUQoaWRlbnRpZmllck51bWJlcikpOwogCiAgICAgbV9qaXQu
YWRkUHV0QnlJZChnZW4sIHNsb3dQYXRoLmdldCgpKTsKLSAgICBhZGRTbG93UGF0aEdlbmVyYXRv
cihXVEY6Om1vdmUoc2xvd1BhdGgpKTsKKyAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihXVEZNb3Zl
KHNsb3dQYXRoKSk7CiB9CiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlTm9u
UGVlcGhvbGVDb21wYXJlTnVsbE9yVW5kZWZpbmVkKEVkZ2Ugb3BlcmFuZCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHV29ya2xpc3QuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdXb3JrbGlzdC5jcHAKaW5kZXggYWM4MjNjM2ExZmFhZjkzOTJhNTM2
ZGZkMDYyMGE2NTBjNmIyMDU3NC4uMzE4YTlmMGUzNTE2MmQ3NzUwZDcxNWY3Mzc0MjZjYWQ0ZWZk
N2VlMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdXb3JrbGlzdC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdXb3JrbGlzdC5jcHAKQEAgLTY0
LDcgKzY0LDcgQEAgdm9pZCBXb3JrbGlzdDo6ZmluaXNoQ3JlYXRpb24odW5zaWduZWQgbnVtYmVy
T2ZUaHJlYWRzLCBpbnQgcmVsYXRpdmVQcmlvcml0eSkKICAgICAgICAgZGF0YS0+bV9pZGVudGlm
aWVyID0gY3JlYXRlVGhyZWFkKHRocmVhZEZ1bmN0aW9uLCBkYXRhLmdldCgpLCBtX3RocmVhZE5h
bWUuZGF0YSgpKTsKICAgICAgICAgaWYgKHJlbGF0aXZlUHJpb3JpdHkpCiAgICAgICAgICAgICBj
aGFuZ2VUaHJlYWRQcmlvcml0eShkYXRhLT5tX2lkZW50aWZpZXIsIHJlbGF0aXZlUHJpb3JpdHkp
OwotICAgICAgICBtX3RocmVhZHMuYXBwZW5kKFdURjo6bW92ZShkYXRhKSk7CisgICAgICAgIG1f
dGhyZWFkcy5hcHBlbmQoV1RGTW92ZShkYXRhKSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVyL0Rpc2Fzc2VtYmxlci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVyL0Rpc2Fzc2VtYmxlci5jcHAKaW5kZXggYzYx
NjY4MjI1ZDMwYjRiNzdkNmY4N2EwNjM4ZTc1ZGY5OWRkMmE4MS4uNzJmODdiNjEyNDAwOGUxYTdl
ZDYxNWYyYzUyOGQyOGY2ZmJjMjI1YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Rpc2Fzc2VtYmxlci9EaXNhc3NlbWJsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kaXNhc3NlbWJsZXIvRGlzYXNzZW1ibGVyLmNwcApAQCAtODAsNyArODAsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBlbnF1ZXVlKHN0ZDo6dW5pcXVlX3B0cjxEaXNhc3NlbWJseVRhc2s+IHRhc2sp
CiAgICAgewogICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2xvY2spOwotICAgICAgICBtX3F1
ZXVlLmFwcGVuZChXVEY6Om1vdmUodGFzaykpOworICAgICAgICBtX3F1ZXVlLmFwcGVuZChXVEZN
b3ZlKHRhc2spKTsKICAgICAgICAgbV9jb25kaXRpb24ubm90aWZ5QWxsKCk7CiAgICAgfQogICAg
IApAQCAtMTQxLDcgKzE0MSw3IEBAIHZvaWQgZGlzYXNzZW1ibGVBc3luY2hyb25vdXNseSgKICAg
ICB0YXNrLT5wcmVmaXggPSBwcmVmaXg7CiAgICAgdGFzay0+c3Vic2V0SGludCA9IHN1YnNldEhp
bnQ7CiAgICAgCi0gICAgYXN5bmNocm9ub3VzRGlzYXNzZW1ibGVyKCkuZW5xdWV1ZShXVEY6Om1v
dmUodGFzaykpOworICAgIGFzeW5jaHJvbm91c0Rpc2Fzc2VtYmxlcigpLmVucXVldWUoV1RGTW92
ZSh0YXNrKSk7CiB9CiAKIHZvaWQgd2FpdEZvckFzeW5jaHJvbm91c0Rpc2Fzc2VtYmx5KCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQjNDb21waWxlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQjNDb21waWxlLmNwcAppbmRleCAzM2IzZjNiZjQ4
ZjE4YjBkMmNlODAyNTk2MjkzMzZlZWZkNmIyZjA4Li5kYjlkOWEzYjJiZTg2ZmJjMjBlMjY1OThi
Zjg4NmMwOTQ2YzY5YjNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TEIzQ29tcGlsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExCM0NvbXBp
bGUuY3BwCkBAIC03Nyw3ICs3Nyw3IEBAIHZvaWQgY29tcGlsZShTdGF0ZSYgc3RhdGUsIFNhZmVw
b2ludDo6UmVzdWx0JiBzYWZlcG9pbnRSZXN1bHQpCiAgICAgICAgIGRhdGFMb2coIlVud2luZCBp
bmZvIGZvciAiLCBDb2RlQmxvY2tXaXRoSklUVHlwZShzdGF0ZS5ncmFwaC5tX2NvZGVCbG9jaywg
SklUQ29kZTo6RlRMSklUKSwgIjpcbiIpOwogICAgICAgICBkYXRhTG9nKCIgICAgIiwgKnJlZ2lz
dGVyT2Zmc2V0cywgIlxuIik7CiAgICAgfQotICAgIHN0YXRlLmdyYXBoLm1fY29kZUJsb2NrLT5z
ZXRDYWxsZWVTYXZlUmVnaXN0ZXJzKFdURjo6bW92ZShyZWdpc3Rlck9mZnNldHMpKTsKKyAgICBz
dGF0ZS5ncmFwaC5tX2NvZGVCbG9jay0+c2V0Q2FsbGVlU2F2ZVJlZ2lzdGVycyhXVEZNb3ZlKHJl
Z2lzdGVyT2Zmc2V0cykpOwogICAgIEFTU0VSVCghKHN0YXRlLnByb2MtPmZyYW1lU2l6ZSgpICUg
c2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSkpOwogICAgIHN0YXRlLmppdENvZGUtPmNvbW1vbi5mcmFt
ZVJlZ2lzdGVyQ291bnQgPSBzdGF0ZS5wcm9jLT5mcmFtZVNpemUoKSAvIHNpemVvZihFbmNvZGVk
SlNWYWx1ZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29t
cGlsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbXBpbGUuY3BwCmluZGV4
IGM3MWNiZWRkZWQyNDk2MjVhNzA4ZmVlODljMjZhYjJmYTUxNjNhYmMuLjhmYzMyZDgzZWJmYTFl
ZTU4NTMwYmZjZjgwM2E3MDExODBlZjAzZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMQ29tcGlsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExDb21waWxlLmNwcApAQCAtMjA5LDcgKzIwOSw3IEBAIHN0YXRpYyB2b2lkIGdlbmVyYXRlSW5s
aW5lSWZQb3NzaWJsZU91dE9mTGluZUlmTm90KFN0YXRlJiBzdGF0ZSwgVk0mIHZtLCBDb2RlQmxv
CiAKICAgICBjYWxsYmFjaygqY29kZUxpbmtCdWZmZXIuZ2V0KCksIGNvZGUsIGZhbHNlKTsKIAot
ICAgIHN0YXRlLmZpbmFsaXplci0+b3V0T2ZMaW5lQ29kZUluZm9zLmFwcGVuZChPdXRPZkxpbmVD
b2RlSW5mbyhXVEY6Om1vdmUoY29kZUxpbmtCdWZmZXIpLCBjb2RlRGVzY3JpcHRpb24pKTsKKyAg
ICBzdGF0ZS5maW5hbGl6ZXItPm91dE9mTGluZUNvZGVJbmZvcy5hcHBlbmQoT3V0T2ZMaW5lQ29k
ZUluZm8oV1RGTW92ZShjb2RlTGlua0J1ZmZlciksIGNvZGVEZXNjcmlwdGlvbikpOwogfQogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBEZXNjcmlwdG9yVHlwZT4KQEAgLTQ3OCw3ICs0NzgsNyBAQCBzdGF0
aWMgdm9pZCBmaXhGdW5jdGlvbkJhc2VkT25TdGFja01hcHMoCiAgICAgICAgIGxpbmtCdWZmZXIt
PmxpbmsoY2FsbExvb2t1cEV4Y2VwdGlvbkhhbmRsZXIsIEZ1bmN0aW9uUHRyKGxvb2t1cEV4Y2Vw
dGlvbkhhbmRsZXIpKTsKICAgICAgICAgbGlua0J1ZmZlci0+bGluayhjYWxsTG9va3VwRXhjZXB0
aW9uSGFuZGxlckZyb21DYWxsZXJGcmFtZSwgRnVuY3Rpb25QdHIobG9va3VwRXhjZXB0aW9uSGFu
ZGxlckZyb21DYWxsZXJGcmFtZSkpOwogCi0gICAgICAgIHN0YXRlLmZpbmFsaXplci0+aGFuZGxl
RXhjZXB0aW9uc0xpbmtCdWZmZXIgPSBXVEY6Om1vdmUobGlua0J1ZmZlcik7CisgICAgICAgIHN0
YXRlLmZpbmFsaXplci0+aGFuZGxlRXhjZXB0aW9uc0xpbmtCdWZmZXIgPSBXVEZNb3ZlKGxpbmtC
dWZmZXIpOwogICAgIH0KIAogICAgIFJFTEVBU0VfQVNTRVJUKHN0YXRlLmppdENvZGUtPm9zckV4
aXQuc2l6ZSgpID09IDApOwpAQCAtNjE1LDcgKzYxNSw3IEBAIHN0YXRpYyB2b2lkIGZpeEZ1bmN0
aW9uQmFzZWRPblN0YWNrTWFwcygKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICAK
LSAgICAgICAgc3RhdGUuZmluYWxpemVyLT5leGl0VGh1bmtzTGlua0J1ZmZlciA9IFdURjo6bW92
ZShsaW5rQnVmZmVyKTsKKyAgICAgICAgc3RhdGUuZmluYWxpemVyLT5leGl0VGh1bmtzTGlua0J1
ZmZlciA9IFdURk1vdmUobGlua0J1ZmZlcik7CiAgICAgfQogCiAgICAgaWYgKCFzdGF0ZS5nZXRC
eUlkcy5pc0VtcHR5KCkKQEAgLTg1Nyw3ICs4NTcsNyBAQCBzdGF0aWMgdm9pZCBmaXhGdW5jdGlv
bkJhc2VkT25TdGFja01hcHMoCiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgZGVz
Y3JpcHRvci5tX2dlbmVyYXRvcnMuYXBwZW5kKHN0ZDo6bWFrZV90dXBsZShsYXp5U2xvd1BhdGgu
Z2V0KCksIGJlZ2luKSk7CiAKLSAgICAgICAgICAgICAgICBzdGF0ZS5qaXRDb2RlLT5sYXp5U2xv
d1BhdGhzLmFwcGVuZChXVEY6Om1vdmUobGF6eVNsb3dQYXRoKSk7CisgICAgICAgICAgICAgICAg
c3RhdGUuaml0Q29kZS0+bGF6eVNsb3dQYXRocy5hcHBlbmQoV1RGTW92ZShsYXp5U2xvd1BhdGgp
KTsKICAgICAgICAgICAgICAgICBzdGF0ZS5maW5hbGl6ZXItPmxhenlTbG93UGF0aEdlbmVyYXRv
ckp1bXBzLmFwcGVuZChnZW5lcmF0b3JKdW1wKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpA
QCAtMTE1Nyw3ICsxMTU3LDcgQEAgdm9pZCBjb21waWxlKFN0YXRlJiBzdGF0ZSwgU2FmZXBvaW50
OjpSZXN1bHQmIHNhZmVwb2ludFJlc3VsdCkKICAgICAgICAgZGF0YUxvZygiVW53aW5kIGluZm8g
Zm9yICIsIENvZGVCbG9ja1dpdGhKSVRUeXBlKHN0YXRlLmdyYXBoLm1fY29kZUJsb2NrLCBKSVRD
b2RlOjpGVExKSVQpLCAiOlxuIik7CiAgICAgICAgIGRhdGFMb2coIiAgICAiLCAqcmVnaXN0ZXJP
ZmZzZXRzLCAiXG4iKTsKICAgICB9Ci0gICAgc3RhdGUuZ3JhcGgubV9jb2RlQmxvY2stPnNldENh
bGxlZVNhdmVSZWdpc3RlcnMoV1RGOjptb3ZlKHJlZ2lzdGVyT2Zmc2V0cykpOworICAgIHN0YXRl
LmdyYXBoLm1fY29kZUJsb2NrLT5zZXRDYWxsZWVTYXZlUmVnaXN0ZXJzKFdURk1vdmUocmVnaXN0
ZXJPZmZzZXRzKSk7CiAgICAgCiAgICAgaWYgKHN0YXRlLnN0YWNrbWFwc1NlY3Rpb24gJiYgc3Rh
dGUuc3RhY2ttYXBzU2VjdGlvbi0+c2l6ZSgpKSB7CiAgICAgICAgIGlmIChzaG91bGREdW1wRGlz
YXNzZW1ibHkoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExK
SVRDb2RlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMSklUQ29kZS5jcHAKaW5k
ZXggNDhkY2QzNGU0N2EzNmY5Yzg0NDk4NjliZTQ0NzczOTI5ZThjMTgwZC4uOWFmMjM4ZTczNmIy
Nzc4ZTAyYmMyMTBkMmJjOWZjNmYwMjAwNWUzZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExKSVRDb2RlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTEpJVENvZGUuY3BwCkBAIC02NSw3ICs2NSw3IEBAIHZvaWQgSklUQ29kZTo6aW5pdGlhbGl6
ZUIzQ29kZShDb2RlUmVmIGIzQ29kZSkKIAogdm9pZCBKSVRDb2RlOjppbml0aWFsaXplQjNCeXBy
b2R1Y3RzKHN0ZDo6dW5pcXVlX3B0cjxPcGFxdWVCeXByb2R1Y3RzPiBieXByb2R1Y3RzKQogewot
ICAgIG1fYjNCeXByb2R1Y3RzID0gV1RGOjptb3ZlKGJ5cHJvZHVjdHMpOworICAgIG1fYjNCeXBy
b2R1Y3RzID0gV1RGTW92ZShieXByb2R1Y3RzKTsKIH0KICNlbHNlIC8vIEZUTF9VU0VTX0IzCiB2
b2lkIEpJVENvZGU6OmluaXRpYWxpemVFeGl0VGh1bmtzKENvZGVSZWYgZXhpdFRodW5rcykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMSklURmluYWxpemVyLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEpJVEZpbmFsaXplci5oCmluZGV4IGZkMmE3YTEz
ZGIxNDU0NjU4MTRhOGFiZTQxM2IwYjBiOTQzNzc2NzguLjhmZDQ5MDkxZjY1ZTlhMzEwMzk0ZTI1
OWQ3ZmUxMjRkN2YyYjg3NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMSklURmluYWxpemVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExKSVRG
aW5hbGl6ZXIuaApAQCAtNDIsNyArNDIsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEZU
TCB7CiBjbGFzcyBPdXRPZkxpbmVDb2RlSW5mbyB7CiBwdWJsaWM6CiAgICAgT3V0T2ZMaW5lQ29k
ZUluZm8oc3RkOjp1bmlxdWVfcHRyPExpbmtCdWZmZXI+IGxpbmtCdWZmZXIsIGNvbnN0IGNoYXIq
IGNvZGVEZXNjcmlwdGlvbikKLSAgICAgICAgOiBtX2xpbmtCdWZmZXIoV1RGOjptb3ZlKGxpbmtC
dWZmZXIpKQorICAgICAgICA6IG1fbGlua0J1ZmZlcihXVEZNb3ZlKGxpbmtCdWZmZXIpKQogICAg
ICAgICAsIG1fY29kZURlc2NyaXB0aW9uKGNvZGVEZXNjcmlwdGlvbikKICAgICB7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTGluay5jcHAKaW5kZXggODFiNmQ1NzA3MzhhY2U4MmUx
NWY3MTM5YzUxYTkxOWJmYjBhMjNiNS4uMzc0OGRmN2EyZTQ4NGVjMzFlNjkzODEwZWU2Y2Q5NTNm
NTBjZWQwYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwCkBAIC0yMzcsNyAr
MjM3LDcgQEAgdm9pZCBsaW5rKFN0YXRlJiBzdGF0ZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQog
ICAgIAotICAgIHN0YXRlLmZpbmFsaXplci0+ZW50cnlwb2ludExpbmtCdWZmZXIgPSBXVEY6Om1v
dmUobGlua0J1ZmZlcik7CisgICAgc3RhdGUuZmluYWxpemVyLT5lbnRyeXBvaW50TGlua0J1ZmZl
ciA9IFdURk1vdmUobGlua0J1ZmZlcik7CiAgICAgc3RhdGUuZmluYWxpemVyLT5mdW5jdGlvbiA9
IHN0YXRlLmdlbmVyYXRlZEZ1bmN0aW9uOwogICAgIHN0YXRlLmZpbmFsaXplci0+aml0Q29kZSA9
IHN0YXRlLmppdENvZGU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTExvd2VyREZHVG9MTFZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93
ZXJERkdUb0xMVk0uY3BwCmluZGV4IGZlYmMyMjUzZTRjMTAxZGU2YTBlNDlhMDQxMTNiODhiMGVh
MTU4MjIuLmI0NDcwMGRmNTRhMTBiZWZlYzg3ZWU4N2ZkM2JiMjhlZWVmZmFmMDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCkBAIC01MTQz
LDcgKzUxNDMsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIG5lZWRzVGFnVHlwZU51bWJl
ciA9IHRydWU7CiAgICAgICAgIH0KIAotICAgICAgICBKU1RhaWxDYWxsIHRhaWxDYWxsKHN0YWNr
bWFwSUQsIG5vZGUsIFdURjo6bW92ZShjYWxsQXJndW1lbnRzKSk7CisgICAgICAgIEpTVGFpbENh
bGwgdGFpbENhbGwoc3RhY2ttYXBJRCwgbm9kZSwgV1RGTW92ZShjYWxsQXJndW1lbnRzKSk7CiAK
ICAgICAgICAgZXhpdEFyZ3VtZW50cy5pbnNlcnQoMCwgbV9vdXQuY29uc3RJbnQzMihuZWVkc1Rh
Z1R5cGVOdW1iZXIgPyAyIDogMSkpOwogICAgICAgICBleGl0QXJndW1lbnRzLmluc2VydCgwLCBj
b25zdE51bGwobV9vdXQucmVmOCkpOwpAQCAtODU2Myw3ICs4NTYzLDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rZWRQYXRjaGFibGVKdW1w
LCBsaW5rZWREb25lLCBleGNlcHRpb25UYXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdXNlZFJlZ2lzdGVycywgY2FsbFNpdGVJbmRleCwgZ2VuZXJhdG9yKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBqaXRDb2RlLT5sYXp5U2xvd1BhdGhzW2luZGV4XSA9IFdURjo6bW92ZShs
YXp5U2xvd1BhdGgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaXRDb2RlLT5s
YXp5U2xvd1BhdGhzW2luZGV4XSA9IFdURk1vdmUobGF6eVNsb3dQYXRoKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAg
ICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKaW5kZXggM2M3ZGY5Y2RiNDgyOTU2
Y2IwYjkxYzlmMmY2N2MzMDAzYmQ5MjQ0Ni4uNjU1M2M3MjZkYzRkOGNkYTljMDcxMmQ5M2FjZWEz
MWU5MjMwYTA4MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKQEAgLTMwNiw3ICsz
MDYsNyBAQCBpbmxpbmUgSXRlcmF0aW9uU3RhdHVzIFJlY29yZFR5cGU6Om9wZXJhdG9yKCkoSlND
ZWxsKiBjZWxsKQogCiBpbmxpbmUgc3RkOjp1bmlxdWVfcHRyPFR5cGVDb3VudFNldD4gUmVjb3Jk
VHlwZTo6cmV0dXJuVmFsdWUoKQogewotICAgIHJldHVybiBXVEY6Om1vdmUobV90eXBlQ291bnRT
ZXQpOworICAgIHJldHVybiBXVEZNb3ZlKG1fdHlwZUNvdW50U2V0KTsKIH0KIAogfSAvLyBhbm9u
eW1vdXMgbmFtZXNwYWNlCkBAIC0zOTksNyArMzk5LDcgQEAgdm9pZCBIZWFwOjpyZWxlYXNlRGVs
YXllZFJlbGVhc2VkT2JqZWN0cygpCiAgICAgICAgIHdoaWxlICghbV9kZWxheWVkUmVsZWFzZU9i
amVjdHMuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBBU1NFUlQobV92bS0+Y3VycmVudFRocmVh
ZElzSG9sZGluZ0FQSUxvY2soKSk7CiAKLSAgICAgICAgICAgIFZlY3RvcjxSZXRhaW5QdHI8Q0ZU
eXBlUmVmPj4gb2JqZWN0c1RvUmVsZWFzZSA9IFdURjo6bW92ZShtX2RlbGF5ZWRSZWxlYXNlT2Jq
ZWN0cyk7CisgICAgICAgICAgICBWZWN0b3I8UmV0YWluUHRyPENGVHlwZVJlZj4+IG9iamVjdHNU
b1JlbGVhc2UgPSBXVEZNb3ZlKG1fZGVsYXllZFJlbGVhc2VPYmplY3RzKTsKIAogICAgICAgICAg
ICAgewogICAgICAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gZHJvcCBsb2NrcyBiZWZvcmUgY2Fs
bGluZyBvdXQgdG8gYXJiaXRyYXJ5IGNvZGUuCkBAIC01NDYsNyArNTQ2LDcgQEAgdm9pZCBIZWFw
OjptYXJrUm9vdHMoZG91YmxlIGdjU3RhcnRUaW1lLCB2b2lkKiBzdGFja09yaWdpbiwgdm9pZCog
c3RhY2tUb3AsIE1hY2gKICAgICAgICAgICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFNsb3RW
aXNpdG9yPiBuZXdWaXNpdG9yID0KICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWFrZV91
bmlxdWU8U2xvdFZpc2l0b3I+KCp0aGlzKTsKICAgICAgICAgICAgICAgICAgICAgc2xvdFZpc2l0
b3IgPSBuZXdWaXNpdG9yLmdldCgpOwotICAgICAgICAgICAgICAgICAgICBtX3BhcmFsbGVsU2xv
dFZpc2l0b3JzLmFwcGVuZChXVEY6Om1vdmUobmV3VmlzaXRvcikpOworICAgICAgICAgICAgICAg
ICAgICBtX3BhcmFsbGVsU2xvdFZpc2l0b3JzLmFwcGVuZChXVEZNb3ZlKG5ld1Zpc2l0b3IpKTsK
ICAgICAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICAgICAgc2xvdFZpc2l0b3Ig
PSBtX2F2YWlsYWJsZVBhcmFsbGVsU2xvdFZpc2l0b3JzLnRha2VMYXN0KCk7CiAgICAgICAgICAg
ICB9CkBAIC0xNDE5LDcgKzE0MTksNyBAQCBHQ0FjdGl2aXR5Q2FsbGJhY2sqIEhlYXA6OmVkZW5B
Y3Rpdml0eUNhbGxiYWNrKCkKIAogdm9pZCBIZWFwOjpzZXRJbmNyZW1lbnRhbFN3ZWVwZXIoc3Rk
Ojp1bmlxdWVfcHRyPEluY3JlbWVudGFsU3dlZXBlcj4gc3dlZXBlcikKIHsKLSAgICBtX3N3ZWVw
ZXIgPSBXVEY6Om1vdmUoc3dlZXBlcik7CisgICAgbV9zd2VlcGVyID0gV1RGTW92ZShzd2VlcGVy
KTsKIH0KIAogSW5jcmVtZW50YWxTd2VlcGVyKiBIZWFwOjpzd2VlcGVyKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9IZWFwSW5saW5lcy5oCmluZGV4IGY0YWNmMjVlNjBlMTg5MzhhNjhhN2I4
ZGI5NTk1NGQ2YTI1MDJiMjQuLjcxNjY0ODlhNDk1Y2IzMzAyNGZlZTM3YWRiOWI5ZjE1OTM0Yjdm
MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBJbmxpbmVzLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcElubGluZXMuaApAQCAtMjYwLDcg
KzI2MCw3IEBAIGlubGluZSB2b2lkIEhlYXA6OmFzY3JpYmVPd25lcihKU0NlbGwqIGludGVuZGVk
T3duZXIsIHZvaWQqIHN0b3JhZ2UpCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIGlubGluZSB2b2lk
IEhlYXA6OnJlbGVhc2VTb29uKFJldGFpblB0cjxUPiYmIG9iamVjdCkKIHsKLSAgICBtX2RlbGF5
ZWRSZWxlYXNlT2JqZWN0cy5hcHBlbmQoV1RGOjptb3ZlKG9iamVjdCkpOworICAgIG1fZGVsYXll
ZFJlbGVhc2VPYmplY3RzLmFwcGVuZChXVEZNb3ZlKG9iamVjdCkpOwogfQogI2VuZGlmCiAKQEAg
LTMwMCw3ICszMDAsNyBAQCBpbmxpbmUgSGFzaFNldDxNYXJrZWRBcmd1bWVudEJ1ZmZlcio+JiBI
ZWFwOjptYXJrTGlzdFNldCgpCiAKIGlubGluZSB2b2lkIEhlYXA6OnJlZ2lzdGVyV2Vha0dDTWFw
KHZvaWQqIHdlYWtHQ01hcCwgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IHBydW5pbmdDYWxsYmFjaykK
IHsKLSAgICBtX3dlYWtHQ01hcHMuYWRkKHdlYWtHQ01hcCwgV1RGOjptb3ZlKHBydW5pbmdDYWxs
YmFjaykpOworICAgIG1fd2Vha0dDTWFwcy5hZGQod2Vha0dDTWFwLCBXVEZNb3ZlKHBydW5pbmdD
YWxsYmFjaykpOwogfQogCiBpbmxpbmUgdm9pZCBIZWFwOjp1bnJlZ2lzdGVyV2Vha0dDTWFwKHZv
aWQqIHdlYWtHQ01hcCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1dl
YWtJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9XZWFrSW5saW5lcy5oCmlu
ZGV4IGZiZDM1MjAxMzU2ZTJjODYxMTJjNGM0YWRiZjNhMmM5M2FmODU1ZTAuLjQ2NTNhOWY4Y2Qz
ODE4ZjI4ZDMyZDEwMjI2NDY4ODVmNDZlYjEyZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL1dlYWtJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvV2Vha0lubGluZXMuaApAQCAtNjUsNyArNjUsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBp
bmxpbmUgdm9pZCBXZWFrPFQ+Ojpzd2FwKFdlYWsmIG90aGVyKQogCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiBpbmxpbmUgYXV0byBXZWFrPFQ+OjpvcGVyYXRvcj0oV2VhayYmIG90aGVyKSAtPiBXZWFr
JgogewotICAgIFdlYWsgd2VhayA9IFdURjo6bW92ZShvdGhlcik7CisgICAgV2VhayB3ZWFrID0g
V1RGTW92ZShvdGhlcik7CiAgICAgc3dhcCh3ZWFrKTsKICAgICByZXR1cm4gKnRoaXM7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0NvbnNvbGVNZXNzYWdl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuY3Bw
CmluZGV4IDZlZjY3Y2FlY2JkNzFkOTYyNjk5ZDFhZGE4N2Q3YWYzOTk3YjVkM2IuLjEzMzg5M2Zi
MGFhMzA5YzA1NWU3OTgzMzc3MjhjYTFmN2MwZjZmZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuY3BwCkBAIC0yMTIsMTQgKzIxMiwx
NCBAQCB2b2lkIENvbnNvbGVNZXNzYWdlOjphZGRUb0Zyb250ZW5kKENvbnNvbGVGcm9udGVuZERp
c3BhdGNoZXImIGNvbnNvbGVGcm9udGVuZERpcwogICAgICAgICAgICAgICAgICAgICBqc29uQXJn
cy0+YWRkSXRlbShpbnNwZWN0b3JWYWx1ZS5jb3B5UmVmKCkpOwogICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGpzb25PYmotPnNldFBhcmFtZXRlcnMoV1RGOjpt
b3ZlKGpzb25BcmdzKSk7CisgICAgICAgICAgICBqc29uT2JqLT5zZXRQYXJhbWV0ZXJzKFdURk1v
dmUoanNvbkFyZ3MpKTsKICAgICAgICAgfQogICAgIH0KIAogICAgIGlmIChtX2NhbGxTdGFjaykK
ICAgICAgICAganNvbk9iai0+c2V0U3RhY2tUcmFjZShtX2NhbGxTdGFjay0+YnVpbGRJbnNwZWN0
b3JBcnJheSgpKTsKIAotICAgIGNvbnNvbGVGcm9udGVuZERpc3BhdGNoZXIubWVzc2FnZUFkZGVk
KFdURjo6bW92ZShqc29uT2JqKSk7CisgICAgY29uc29sZUZyb250ZW5kRGlzcGF0Y2hlci5tZXNz
YWdlQWRkZWQoV1RGTW92ZShqc29uT2JqKSk7CiB9CiAKIHZvaWQgQ29uc29sZU1lc3NhZ2U6OnVw
ZGF0ZVJlcGVhdENvdW50SW5Db25zb2xlKENvbnNvbGVGcm9udGVuZERpc3BhdGNoZXImIGNvbnNv
bGVGcm9udGVuZERpc3BhdGNoZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL0NvbnRlbnRTZWFyY2hVdGlsaXRpZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9Db250ZW50U2VhcmNoVXRpbGl0aWVzLmNwcAppbmRleCA5NWU0MmFmN2Fi
ZWJjMTllNDE5YjkwZWI5YzU2ZjFhZDYwNDBlZmQ5Li5mMzUxNWY0ZTc5Y2IwMDg4MmFjMWQ4ZTJl
MzZmMDVlZDhmMzU5YWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL0NvbnRlbnRTZWFyY2hVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvQ29udGVudFNlYXJjaFV0aWxpdGllcy5jcHAKQEAgLTE2MCw3ICsxNjAsNyBA
QCBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6R2Vu
ZXJpY1R5cGVzOjpTZWFyY2hNYXRjaD4+CiAKICAgICBmb3IgKGNvbnN0IGF1dG8mIG1hdGNoIDog
bWF0Y2hlcykgewogICAgICAgICBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6R2VuZXJpY1R5cGVz
OjpTZWFyY2hNYXRjaD4gbWF0Y2hPYmplY3QgPSBidWlsZE9iamVjdEZvclNlYXJjaE1hdGNoKG1h
dGNoLmZpcnN0LCBtYXRjaC5zZWNvbmQpOwotICAgICAgICByZXN1bHQtPmFkZEl0ZW0oV1RGOjpt
b3ZlKG1hdGNoT2JqZWN0KSk7CisgICAgICAgIHJlc3VsdC0+YWRkSXRlbShXVEZNb3ZlKG1hdGNo
T2JqZWN0KSk7CiAgICAgfQogCiAgICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5jcHAKaW5kZXggNzJkMDc1OTJh
YTNhMTc3NmI2YzNhNTBkZDcxODViNzk0NDliYzk4Zi4uMWUxYmM4YmEzMTE0NzY3MWE4NjNhODFm
NTc5ZTc4YTNhYThhMjhlYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9JbmplY3RlZFNjcmlwdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9JbmplY3RlZFNjcmlwdC5jcHAKQEAgLTEwNiw3ICsxMDYsNyBAQCB2b2lkIEluamVjdGVk
U2NyaXB0OjpnZXRGdW5jdGlvbkRldGFpbHMoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25z
dCBTdHJpbmcmCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICAqcmVzdWx0ID0gQmluZGlu
Z1RyYWl0czxJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6RnVuY3Rpb25EZXRhaWxzPjo6
cnVudGltZUNhc3QoV1RGOjptb3ZlKHJlc3VsdFZhbHVlKSk7CisgICAgKnJlc3VsdCA9IEJpbmRp
bmdUcmFpdHM8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OkZ1bmN0aW9uRGV0YWlscz46
OnJ1bnRpbWVDYXN0KFdURk1vdmUocmVzdWx0VmFsdWUpKTsKIH0KIAogdm9pZCBJbmplY3RlZFNj
cmlwdDo6Z2V0UHJvcGVydGllcyhFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmlu
ZyYgb2JqZWN0SWQsIGJvb2wgb3duUHJvcGVydGllcywgYm9vbCBnZW5lcmF0ZVByZXZpZXcsIFJl
ZlB0cjxBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpQcm9wZXJ0eURlc2NyaXB0
b3I+PiogcHJvcGVydGllcykKQEAgLTEyMyw3ICsxMjMsNyBAQCB2b2lkIEluamVjdGVkU2NyaXB0
OjpnZXRQcm9wZXJ0aWVzKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBv
YmplYwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgKnByb3BlcnRpZXMgPSBCaW5kaW5n
VHJhaXRzPEFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlByb3BlcnR5RGVzY3Jp
cHRvcj4+OjpydW50aW1lQ2FzdChXVEY6Om1vdmUocmVzdWx0KSk7CisgICAgKnByb3BlcnRpZXMg
PSBCaW5kaW5nVHJhaXRzPEFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlByb3Bl
cnR5RGVzY3JpcHRvcj4+OjpydW50aW1lQ2FzdChXVEZNb3ZlKHJlc3VsdCkpOwogfQogCiB2b2lk
IEluamVjdGVkU2NyaXB0OjpnZXREaXNwbGF5YWJsZVByb3BlcnRpZXMoRXJyb3JTdHJpbmcmIGVy
cm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBib29sIGdlbmVyYXRlUHJldmlldywg
UmVmUHRyPEFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlByb3BlcnR5RGVzY3Jp
cHRvcj4+KiBwcm9wZXJ0aWVzKQpAQCAtMTM5LDcgKzEzOSw3IEBAIHZvaWQgSW5qZWN0ZWRTY3Jp
cHQ6OmdldERpc3BsYXlhYmxlUHJvcGVydGllcyhFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNv
bnN0IFN0CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICAqcHJvcGVydGllcyA9IEJpbmRp
bmdUcmFpdHM8QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6UHJvcGVydHlEZXNj
cmlwdG9yPj46OnJ1bnRpbWVDYXN0KFdURjo6bW92ZShyZXN1bHQpKTsKKyAgICAqcHJvcGVydGll
cyA9IEJpbmRpbmdUcmFpdHM8QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6UHJv
cGVydHlEZXNjcmlwdG9yPj46OnJ1bnRpbWVDYXN0KFdURk1vdmUocmVzdWx0KSk7CiB9CiAKIHZv
aWQgSW5qZWN0ZWRTY3JpcHQ6OmdldEludGVybmFsUHJvcGVydGllcyhFcnJvclN0cmluZyYgZXJy
b3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIGJvb2wgZ2VuZXJhdGVQcmV2aWV3LCBS
ZWZQdHI8QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6SW50ZXJuYWxQcm9wZXJ0
eURlc2NyaXB0b3I+PiogcHJvcGVydGllcykKQEAgLTE1NSw3ICsxNTUsNyBAQCB2b2lkIEluamVj
dGVkU2NyaXB0OjpnZXRJbnRlcm5hbFByb3BlcnRpZXMoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5n
LCBjb25zdCBTdHJpbgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBhcnJheSA9
IEJpbmRpbmdUcmFpdHM8QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6SW50ZXJu
YWxQcm9wZXJ0eURlc2NyaXB0b3I+Pjo6cnVudGltZUNhc3QoV1RGOjptb3ZlKHJlc3VsdCkpOwor
ICAgIGF1dG8gYXJyYXkgPSBCaW5kaW5nVHJhaXRzPEFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6
OlJ1bnRpbWU6OkludGVybmFsUHJvcGVydHlEZXNjcmlwdG9yPj46OnJ1bnRpbWVDYXN0KFdURk1v
dmUocmVzdWx0KSk7CiAgICAgKnByb3BlcnRpZXMgPSBhcnJheS0+bGVuZ3RoKCkgPiAwID8gYXJy
YXkgOiBudWxscHRyOwogfQogCkBAIC0xNzQsNyArMTc0LDcgQEAgdm9pZCBJbmplY3RlZFNjcmlw
dDo6Z2V0Q29sbGVjdGlvbkVudHJpZXMoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBT
dHJpbmcKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgICplbnRyaWVzID0gQmluZGluZ1Ry
YWl0czxBcnJheTxQcm90b2NvbDo6UnVudGltZTo6Q29sbGVjdGlvbkVudHJ5Pj46OnJ1bnRpbWVD
YXN0KFdURjo6bW92ZShyZXN1bHQpKTsKKyAgICAqZW50cmllcyA9IEJpbmRpbmdUcmFpdHM8QXJy
YXk8UHJvdG9jb2w6OlJ1bnRpbWU6OkNvbGxlY3Rpb25FbnRyeT4+OjpydW50aW1lQ2FzdChXVEZN
b3ZlKHJlc3VsdCkpOwogfQogCiB2b2lkIEluamVjdGVkU2NyaXB0OjpzYXZlUmVzdWx0KEVycm9y
U3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBjYWxsQXJndW1lbnRKU09OLCBJbnNw
ZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8aW50Piogc2F2ZWRSZXN1bHRJbmRleCkKQEAgLTIw
NSw3ICsyMDUsNyBAQCBSZWY8QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OkNh
bGxGcmFtZT4+IEluamVjdGVkU2NyaXB0Ojp3cmFwQ2FsbEZyYQogICAgIEFTU0VSVCghaGFkRXhj
ZXB0aW9uKTsKICAgICBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IHJlc3VsdCA9IGNhbGxGcmFtZXNW
YWx1ZS50b0luc3BlY3RvclZhbHVlKHNjcmlwdFN0YXRlKCkpOwogICAgIGlmIChyZXN1bHQtPnR5
cGUoKSA9PSBJbnNwZWN0b3JWYWx1ZTo6VHlwZTo6QXJyYXkpCi0gICAgICAgIHJldHVybiBCaW5k
aW5nVHJhaXRzPEFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpDYWxsRnJhbWU+
Pjo6cnVudGltZUNhc3QoV1RGOjptb3ZlKHJlc3VsdCkpLnJlbGVhc2VOb25OdWxsKCk7CisgICAg
ICAgIHJldHVybiBCaW5kaW5nVHJhaXRzPEFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVn
Z2VyOjpDYWxsRnJhbWU+Pjo6cnVudGltZUNhc3QoV1RGTW92ZShyZXN1bHQpKS5yZWxlYXNlTm9u
TnVsbCgpOwogCiAgICAgcmV0dXJuIEFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2Vy
OjpDYWxsRnJhbWU+OjpjcmVhdGUoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50UmVnaXN0cnkuY3BwCmluZGV4IDM1YzM0
YjNmZjFlNzllOTEwZWIzNGU0Yjk5YWM4YmUyMGY0MjA1MTAuLjM1YmEzNDUxNjViMzkwMmUyNGUw
YTkxZjU2M2ZmODI2NGJlYTc2MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQWdlbnRSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudFJlZ2lzdHJ5LmNwcApAQCAtNDUsNyArNDUs
NyBAQCBBZ2VudFJlZ2lzdHJ5Ojp+QWdlbnRSZWdpc3RyeSgpCiAKIHZvaWQgQWdlbnRSZWdpc3Ry
eTo6YXBwZW5kKHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3JBZ2VudEJhc2U+IGFnZW50KQogewot
ICAgIG1fYWdlbnRzLmFwcGVuZChXVEY6Om1vdmUoYWdlbnQpKTsKKyAgICBtX2FnZW50cy5hcHBl
bmQoV1RGTW92ZShhZ2VudCkpOwogfQogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVf
RElTUEFUQ0hFUlMpCkBAIC01Myw3ICs1Myw3IEBAIHZvaWQgQWdlbnRSZWdpc3RyeTo6YXBwZW5k
RXh0cmFBZ2VudChzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yQWdlbnRCYXNlPiBhZ2VudCkKIHsK
ICAgICBtX2V4dHJhRG9tYWlucy5hcHBlbmQoYWdlbnQtPmRvbWFpbk5hbWUoKSk7CiAKLSAgICBh
cHBlbmQoV1RGOjptb3ZlKGFnZW50KSk7CisgICAgYXBwZW5kKFdURk1vdmUoYWdlbnQpKTsKIH0K
ICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuY3BwCmluZGV4IDlmMGIwM2U2OGFlM2Rj
ZmI5OWMwNmYxZjQ2ZTdkZjE4ODM4NTg4NjUuLjA2YzNjMTYzODBkODRiOTA4ODlmYjlkOWJkNmVi
NmZkYWI0NDM4YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuY3BwCkBAIC00NSw3ICs0NSw3
IEBAIFN1cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVyOjp+U3VwcGxlbWVudGFsQmFja2VuZERp
c3BhdGNoZXIoKQogfQogCiBCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlOjpDYWxsYmFj
a0Jhc2UoUmVmPEJhY2tlbmREaXNwYXRjaGVyPiYmIGJhY2tlbmREaXNwYXRjaGVyLCBsb25nIHJl
cXVlc3RJZCkKLSAgICA6IG1fYmFja2VuZERpc3BhdGNoZXIoV1RGOjptb3ZlKGJhY2tlbmREaXNw
YXRjaGVyKSkKKyAgICA6IG1fYmFja2VuZERpc3BhdGNoZXIoV1RGTW92ZShiYWNrZW5kRGlzcGF0
Y2hlcikpCiAgICAgLCBtX3JlcXVlc3RJZChyZXF1ZXN0SWQpCiB7CiB9CkBAIC03NSwxNyArNzUs
MTcgQEAgdm9pZCBCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlOjpzZW5kU3VjY2VzcyhS
ZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYmIHBhcnQKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9h
bHJlYWR5U2VudCA9IHRydWU7Ci0gICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+c2VuZFJlc3BvbnNl
KG1fcmVxdWVzdElkLCBXVEY6Om1vdmUocGFydGlhbE1lc3NhZ2UpKTsKKyAgICBtX2JhY2tlbmRE
aXNwYXRjaGVyLT5zZW5kUmVzcG9uc2UobV9yZXF1ZXN0SWQsIFdURk1vdmUocGFydGlhbE1lc3Nh
Z2UpKTsKIH0KIAogQmFja2VuZERpc3BhdGNoZXI6OkJhY2tlbmREaXNwYXRjaGVyKFJlZjxGcm9u
dGVuZFJvdXRlcj4mJiByb3V0ZXIpCi0gICAgOiBtX2Zyb250ZW5kUm91dGVyKFdURjo6bW92ZShy
b3V0ZXIpKQorICAgIDogbV9mcm9udGVuZFJvdXRlcihXVEZNb3ZlKHJvdXRlcikpCiB7CiB9CiAK
IFJlZjxCYWNrZW5kRGlzcGF0Y2hlcj4gQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShSZWY8RnJv
bnRlbmRSb3V0ZXI+JiYgcm91dGVyKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEJhY2tl
bmREaXNwYXRjaGVyKFdURjo6bW92ZShyb3V0ZXIpKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgQmFja2VuZERpc3BhdGNoZXIoV1RGTW92ZShyb3V0ZXIpKSk7CiB9CiAKIGJvb2wgQmFja2Vu
ZERpc3BhdGNoZXI6OmlzQWN0aXZlKCkgY29uc3QKQEAgLTIyNiwxNiArMjI2LDE2IEBAIHZvaWQg
QmFja2VuZERpc3BhdGNoZXI6OnNlbmRQZW5kaW5nRXJyb3JzKCkKICAgICAgICAgUmVmPEluc3Bl
Y3Rvck9iamVjdD4gZXJyb3IgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwogICAgICAgICBl
cnJvci0+c2V0SW50ZWdlcihBU0NJSUxpdGVyYWwoImNvZGUiKSwgZXJyb3JDb2Rlc1tlcnJvckNv
ZGVdKTsKICAgICAgICAgZXJyb3ItPnNldFN0cmluZyhBU0NJSUxpdGVyYWwoIm1lc3NhZ2UiKSwg
ZXJyb3JNZXNzYWdlKTsKLSAgICAgICAgcGF5bG9hZC0+cHVzaE9iamVjdChXVEY6Om1vdmUoZXJy
b3IpKTsKKyAgICAgICAgcGF5bG9hZC0+cHVzaE9iamVjdChXVEZNb3ZlKGVycm9yKSk7CiAgICAg
fQogCiAgICAgUmVmPEluc3BlY3Rvck9iamVjdD4gdG9wTGV2ZWxFcnJvciA9IEluc3BlY3Rvck9i
amVjdDo6Y3JlYXRlKCk7CiAgICAgdG9wTGV2ZWxFcnJvci0+c2V0SW50ZWdlcihBU0NJSUxpdGVy
YWwoImNvZGUiKSwgZXJyb3JDb2Rlc1tlcnJvckNvZGVdKTsKICAgICB0b3BMZXZlbEVycm9yLT5z
ZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJtZXNzYWdlIiksIGVycm9yTWVzc2FnZSk7Ci0gICAgdG9w
TGV2ZWxFcnJvci0+c2V0QXJyYXkoQVNDSUlMaXRlcmFsKCJkYXRhIiksIFdURjo6bW92ZShwYXls
b2FkKSk7CisgICAgdG9wTGV2ZWxFcnJvci0+c2V0QXJyYXkoQVNDSUlMaXRlcmFsKCJkYXRhIiks
IFdURk1vdmUocGF5bG9hZCkpOwogCiAgICAgUmVmPEluc3BlY3Rvck9iamVjdD4gbWVzc2FnZSA9
IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7Ci0gICAgbWVzc2FnZS0+c2V0T2JqZWN0KEFTQ0lJ
TGl0ZXJhbCgiZXJyb3IiKSwgV1RGOjptb3ZlKHRvcExldmVsRXJyb3IpKTsKKyAgICBtZXNzYWdl
LT5zZXRPYmplY3QoQVNDSUlMaXRlcmFsKCJlcnJvciIpLCBXVEZNb3ZlKHRvcExldmVsRXJyb3Ip
KTsKICAgICBpZiAobV9jdXJyZW50UmVxdWVzdElkKQogICAgICAgICBtZXNzYWdlLT5zZXRJbnRl
Z2VyKEFTQ0lJTGl0ZXJhbCgiaWQiKSwgbV9jdXJyZW50UmVxdWVzdElkLnZhbHVlKCkpOwogICAg
IGVsc2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JQcm90b2NvbFR5cGVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvclByb3RvY29sVHlwZXMuaAppbmRleCA4MDY5OTkyM2JmYWMzZGM1OGMyNDgxY2Y5Y2Qw
NzBiZWQyY2JlYzU4Li42ZTJmMDEwYTFhMGM3ZDVhOWE3M2RkNWMwZGQxNDczMjQwNmM2ZjNmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvclByb3Rv
Y29sVHlwZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
clByb3RvY29sVHlwZXMuaApAQCAtODEsNyArODEsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFk
ZEl0ZW0oUmVmUHRyPFQ+JiYgdmFsdWUpCiAgICAgewotICAgICAgICBvcGVuQWNjZXNzb3JzKCku
cHVzaFZhbHVlKFdURjo6bW92ZSh2YWx1ZSkpOworICAgICAgICBvcGVuQWNjZXNzb3JzKCkucHVz
aFZhbHVlKFdURk1vdmUodmFsdWUpKTsKICAgICB9CiAgICAgCiAgICAgdm9pZCBhZGRJdGVtKGNv
bnN0IFN0cmluZyYgdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL0luc3BlY3RvclZhbHVlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL0luc3BlY3RvclZhbHVlcy5jcHAKaW5kZXggNTg5NmFkNmU2ZDAyZjI2ZGJiMWFhZWQ5Y2Fm
MzUyOWM3M2ZhODQyNS4uNTQ3YjE4MTMzNmY0ZWQwZDI0OTEyMTNiOWE5YTc0MTZjZTEzMzI0OCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1
ZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFs
dWVzLmNwcApAQCAtMzkyLDcgKzM5Miw3IEBAIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gYnVpbGRW
YWx1ZShjb25zdCBVQ2hhciogc3RhcnQsIGNvbnN0IFVDaGFyKiBlbmQsIGNvbnN0IFVDCiAgICAg
ICAgICAgICBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IGFycmF5Tm9kZSA9IGJ1aWxkVmFsdWUoc3Rh
cnQsIGVuZCwgJnRva2VuRW5kLCBkZXB0aCArIDEpOwogICAgICAgICAgICAgaWYgKCFhcnJheU5v
ZGUpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgICAgICBhcnJheS0+
cHVzaFZhbHVlKFdURjo6bW92ZShhcnJheU5vZGUpKTsKKyAgICAgICAgICAgIGFycmF5LT5wdXNo
VmFsdWUoV1RGTW92ZShhcnJheU5vZGUpKTsKIAogICAgICAgICAgICAgLy8gQWZ0ZXIgYSBsaXN0
IHZhbHVlLCB3ZSBleHBlY3QgYSBjb21tYSBvciB0aGUgZW5kIG9mIHRoZSBsaXN0LgogICAgICAg
ICAgICAgc3RhcnQgPSB0b2tlbkVuZDsKQEAgLTQwOSw3ICs0MDksNyBAQCBSZWZQdHI8SW5zcGVj
dG9yVmFsdWU+IGJ1aWxkVmFsdWUoY29uc3QgVUNoYXIqIHN0YXJ0LCBjb25zdCBVQ2hhciogZW5k
LCBjb25zdCBVQwogICAgICAgICB9CiAgICAgICAgIGlmICh0b2tlbiAhPSBBUlJBWV9FTkQpCiAg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgcmVzdWx0ID0gV1RGOjptb3ZlKGFy
cmF5KTsKKyAgICAgICAgcmVzdWx0ID0gV1RGTW92ZShhcnJheSk7CiAgICAgICAgIGJyZWFrOwog
ICAgIH0KICAgICBjYXNlIE9CSkVDVF9CRUdJTjogewpAQCAtNDMyLDcgKzQzMiw3IEBAIFJlZlB0
cjxJbnNwZWN0b3JWYWx1ZT4gYnVpbGRWYWx1ZShjb25zdCBVQ2hhciogc3RhcnQsIGNvbnN0IFVD
aGFyKiBlbmQsIGNvbnN0IFVDCiAgICAgICAgICAgICBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IHZh
bHVlID0gYnVpbGRWYWx1ZShzdGFydCwgZW5kLCAmdG9rZW5FbmQsIGRlcHRoICsgMSk7CiAgICAg
ICAgICAgICBpZiAoIXZhbHVlKQogICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAg
ICAgICAgICAgb2JqZWN0LT5zZXRWYWx1ZShrZXksIFdURjo6bW92ZSh2YWx1ZSkpOworICAgICAg
ICAgICAgb2JqZWN0LT5zZXRWYWx1ZShrZXksIFdURk1vdmUodmFsdWUpKTsKICAgICAgICAgICAg
IHN0YXJ0ID0gdG9rZW5FbmQ7CiAKICAgICAgICAgICAgIC8vIEFmdGVyIGEga2V5L3ZhbHVlIHBh
aXIsIHdlIGV4cGVjdCBhIGNvbW1hIG9yIHRoZSBlbmQgb2YgdGhlCkBAIC00NTAsNyArNDUwLDcg
QEAgUmVmUHRyPEluc3BlY3RvclZhbHVlPiBidWlsZFZhbHVlKGNvbnN0IFVDaGFyKiBzdGFydCwg
Y29uc3QgVUNoYXIqIGVuZCwgY29uc3QgVUMKICAgICAgICAgfQogICAgICAgICBpZiAodG9rZW4g
IT0gT0JKRUNUX0VORCkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICByZXN1
bHQgPSBXVEY6Om1vdmUob2JqZWN0KTsKKyAgICAgICAgcmVzdWx0ID0gV1RGTW92ZShvYmplY3Qp
OwogICAgICAgICBicmVhazsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oCmluZGV4IDcxMTBlYjdjNzBhNzMxYjBhMjg4MmJh
N2Y1YTJiNDc2YWNiYWRiOWEuLjgxYjg3MDMzMjQ4MzZjMGJhYzA5OGIyNzIxNWYwYjk0NTk2M2Vl
OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
VmFsdWVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JW
YWx1ZXMuaApAQCAtMzUwLDIxICszNTAsMjEgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9yT2JqZWN0
QmFzZTo6c2V0U3RyaW5nKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWwKIGlu
bGluZSB2b2lkIEluc3BlY3Rvck9iamVjdEJhc2U6OnNldFZhbHVlKGNvbnN0IFN0cmluZyYgbmFt
ZSwgUmVmUHRyPEluc3BlY3RvclZhbHVlPiYmIHZhbHVlKQogewogICAgIEFTU0VSVCh2YWx1ZSk7
Ci0gICAgaWYgKG1fZGF0YS5zZXQobmFtZSwgV1RGOjptb3ZlKHZhbHVlKSkuaXNOZXdFbnRyeSkK
KyAgICBpZiAobV9kYXRhLnNldChuYW1lLCBXVEZNb3ZlKHZhbHVlKSkuaXNOZXdFbnRyeSkKICAg
ICAgICAgbV9vcmRlci5hcHBlbmQobmFtZSk7CiB9CiAKIGlubGluZSB2b2lkIEluc3BlY3Rvck9i
amVjdEJhc2U6OnNldE9iamVjdChjb25zdCBTdHJpbmcmIG5hbWUsIFJlZlB0cjxJbnNwZWN0b3JP
YmplY3RCYXNlPiYmIHZhbHVlKQogewogICAgIEFTU0VSVCh2YWx1ZSk7Ci0gICAgaWYgKG1fZGF0
YS5zZXQobmFtZSwgV1RGOjptb3ZlKHZhbHVlKSkuaXNOZXdFbnRyeSkKKyAgICBpZiAobV9kYXRh
LnNldChuYW1lLCBXVEZNb3ZlKHZhbHVlKSkuaXNOZXdFbnRyeSkKICAgICAgICAgbV9vcmRlci5h
cHBlbmQobmFtZSk7CiB9CiAKIGlubGluZSB2b2lkIEluc3BlY3Rvck9iamVjdEJhc2U6OnNldEFy
cmF5KGNvbnN0IFN0cmluZyYgbmFtZSwgUmVmUHRyPEluc3BlY3RvckFycmF5QmFzZT4mJiB2YWx1
ZSkKIHsKICAgICBBU1NFUlQodmFsdWUpOwotICAgIGlmIChtX2RhdGEuc2V0KG5hbWUsIFdURjo6
bW92ZSh2YWx1ZSkpLmlzTmV3RW50cnkpCisgICAgaWYgKG1fZGF0YS5zZXQobmFtZSwgV1RGTW92
ZSh2YWx1ZSkpLmlzTmV3RW50cnkpCiAgICAgICAgIG1fb3JkZXIuYXBwZW5kKG5hbWUpOwogfQog
CkBAIC0zOTEsMTkgKzM5MSwxOSBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JBcnJheUJhc2U6OnB1
c2hTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIGlubGluZSB2b2lkIEluc3BlY3RvckFycmF5
QmFzZTo6cHVzaFZhbHVlKFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4mJiB2YWx1ZSkKIHsKICAgICBB
U1NFUlQodmFsdWUpOwotICAgIG1fZGF0YS5hcHBlbmQoV1RGOjptb3ZlKHZhbHVlKSk7CisgICAg
bV9kYXRhLmFwcGVuZChXVEZNb3ZlKHZhbHVlKSk7CiB9CiAKIGlubGluZSB2b2lkIEluc3BlY3Rv
ckFycmF5QmFzZTo6cHVzaE9iamVjdChSZWZQdHI8SW5zcGVjdG9yT2JqZWN0QmFzZT4mJiB2YWx1
ZSkKIHsKICAgICBBU1NFUlQodmFsdWUpOwotICAgIG1fZGF0YS5hcHBlbmQoV1RGOjptb3ZlKHZh
bHVlKSk7CisgICAgbV9kYXRhLmFwcGVuZChXVEZNb3ZlKHZhbHVlKSk7CiB9CiAKIGlubGluZSB2
b2lkIEluc3BlY3RvckFycmF5QmFzZTo6cHVzaEFycmF5KFJlZlB0cjxJbnNwZWN0b3JBcnJheUJh
c2U+JiYgdmFsdWUpCiB7CiAgICAgQVNTRVJUKHZhbHVlKTsKLSAgICBtX2RhdGEuYXBwZW5kKFdU
Rjo6bW92ZSh2YWx1ZSkpOworICAgIG1fZGF0YS5hcHBlbmQoV1RGTW92ZSh2YWx1ZSkpOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50LmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50LmNwcApp
bmRleCA3NWI4MDVmYTAyOTRmYzM1MjZkMTI3YmMyYzFiYWJhZmVlZjJkNTNhLi5mNGExNTVkZjFi
NTBkMWY2MDc3ODhiNzllZTNiYzA2M2JjYTNlZjk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0Q29uc29sZUNsaWVudC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdENvbnNvbGVDbGll
bnQuY3BwCkBAIC02NSw3ICs2NSw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50
OjptZXNzYWdlV2l0aFR5cGVBbmRMZXZlbChNZXNzYWdlVHlwZSB0eXBlLCBNZXNzCiAKICAgICBT
dHJpbmcgbWVzc2FnZTsKICAgICBhcmd1bWVudHMtPmdldEZpcnN0QXJndW1lbnRBc1N0cmluZyht
ZXNzYWdlKTsKLSAgICBtX2NvbnNvbGVBZ2VudC0+YWRkTWVzc2FnZVRvQ29uc29sZShzdGQ6Om1h
a2VfdW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCB0eXBl
LCBsZXZlbCwgbWVzc2FnZSwgV1RGOjptb3ZlKGFyZ3VtZW50cyksIGV4ZWMpKTsKKyAgICBtX2Nv
bnNvbGVBZ2VudC0+YWRkTWVzc2FnZVRvQ29uc29sZShzdGQ6Om1ha2VfdW5pcXVlPENvbnNvbGVN
ZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCB0eXBlLCBsZXZlbCwgbWVzc2FnZSwg
V1RGTW92ZShhcmd1bWVudHMpLCBleGVjKSk7CiB9CiAKIHZvaWQgSlNHbG9iYWxPYmplY3RDb25z
b2xlQ2xpZW50Ojpjb3VudChFeGVjU3RhdGUqIGV4ZWMsIFJlZlB0cjxTY3JpcHRBcmd1bWVudHM+
JiYgYXJndW1lbnRzKQpAQCAtOTEsNyArOTEsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Q29uc29s
ZUNsaWVudDo6dGltZShFeGVjU3RhdGUqLCBjb25zdCBTdHJpbmcmIHRpdGxlKQogdm9pZCBKU0ds
b2JhbE9iamVjdENvbnNvbGVDbGllbnQ6OnRpbWVFbmQoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBT
dHJpbmcmIHRpdGxlKQogewogICAgIFJlZlB0cjxTY3JpcHRDYWxsU3RhY2s+IGNhbGxTdGFjayhj
cmVhdGVTY3JpcHRDYWxsU3RhY2tGb3JDb25zb2xlKGV4ZWMsIDEpKTsKLSAgICBtX2NvbnNvbGVB
Z2VudC0+c3RvcFRpbWluZyh0aXRsZSwgV1RGOjptb3ZlKGNhbGxTdGFjaykpOworICAgIG1fY29u
c29sZUFnZW50LT5zdG9wVGltaW5nKHRpdGxlLCBXVEZNb3ZlKGNhbGxTdGFjaykpOwogfQogCiB2
b2lkIEpTR2xvYmFsT2JqZWN0Q29uc29sZUNsaWVudDo6dGltZVN0YW1wKEV4ZWNTdGF0ZSosIFJl
ZlB0cjxTY3JpcHRBcmd1bWVudHM+JiYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJv
bGxlci5jcHAKaW5kZXggNDBlZGZmNzI1NTk1OWU4YmMyOGJkZDE1ZTBiNDE0YWU5YzlhMDIwNS4u
ZmQ3Zjg2OWQ0Yjc4OWI0OWU3M2ZlMjM0ZmMwOGEwYzI5Y2FlOWY0ZCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRy
b2xsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxP
YmplY3RJbnNwZWN0b3JDb250cm9sbGVyLmNwcApAQCAtOTMsMTAgKzkzLDEwIEBAIEpTR2xvYmFs
T2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcjo6SlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9s
bGVyKEpTR2xvYmFsT2JqCiAgICAgbV9jb25zb2xlQWdlbnQgPSBjb25zb2xlQWdlbnQuZ2V0KCk7
CiAgICAgbV9jb25zb2xlQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxKU0dsb2JhbE9iamVjdENv
bnNvbGVDbGllbnQ+KG1fY29uc29sZUFnZW50KTsKIAotICAgIG1fYWdlbnRzLmFwcGVuZChXVEY6
Om1vdmUoaW5zcGVjdG9yQWdlbnQpKTsKLSAgICBtX2FnZW50cy5hcHBlbmQoV1RGOjptb3ZlKHJ1
bnRpbWVBZ2VudCkpOwotICAgIG1fYWdlbnRzLmFwcGVuZChXVEY6Om1vdmUoY29uc29sZUFnZW50
KSk7Ci0gICAgbV9hZ2VudHMuYXBwZW5kKFdURjo6bW92ZShkZWJ1Z2dlckFnZW50KSk7CisgICAg
bV9hZ2VudHMuYXBwZW5kKFdURk1vdmUoaW5zcGVjdG9yQWdlbnQpKTsKKyAgICBtX2FnZW50cy5h
cHBlbmQoV1RGTW92ZShydW50aW1lQWdlbnQpKTsKKyAgICBtX2FnZW50cy5hcHBlbmQoV1RGTW92
ZShjb25zb2xlQWdlbnQpKTsKKyAgICBtX2FnZW50cy5hcHBlbmQoV1RGTW92ZShkZWJ1Z2dlckFn
ZW50KSk7CiAgICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9ySGVh
cEFnZW50Pihjb250ZXh0KSk7CiAgICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8
SW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudD4oY29udGV4dCkpOwogCkBAIC0zMDIsNyArMzAy
LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OmFwcGVuZEV4dHJh
QWdlbnQoc3RkOjp1bmlxdWVfcHRyPEluc3BlY3QKICAgICAvLyBGSVhNRTogY2hhbmdlIHRoaXMg
dG8gbm90aWZ5IGFnZW50cyB3aGljaCBmcm9udGVuZCBoYXMgY29ubmVjdGVkIChieSBpZCkuCiAg
ICAgYWdlbnQtPmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChudWxscHRyLCBudWxscHRyKTsK
IAotICAgIG1fYWdlbnRzLmFwcGVuZEV4dHJhQWdlbnQoV1RGOjptb3ZlKGFnZW50KSk7CisgICAg
bV9hZ2VudHMuYXBwZW5kRXh0cmFBZ2VudChXVEZNb3ZlKGFnZW50KSk7CiAKICAgICBtX2luc3Bl
Y3RvckFnZW50LT5hY3RpdmF0ZUV4dHJhRG9tYWluKGRvbWFpbk5hbWUpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0
LmNwcAppbmRleCA4YjVmYzU2M2Q4NWU4ZDBiZjNjYTEyM2QxYmM4ZTAwMGFjOTE2YTgwLi4zYWQ4
YmZhNzM5MjY4NTE0YTY1NTg2MDAyY2FlNGI5MWNjZWU0OGJkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcApA
QCAtNjIsNyArNjIsNyBAQCBjb25zdCBDbGFzc0luZm8gSlNJbmplY3RlZFNjcmlwdEhvc3Q6OnNf
aW5mbyA9IHsgIkluamVjdGVkU2NyaXB0SG9zdCIsICZCYXNlOjpzXwogCiBKU0luamVjdGVkU2Ny
aXB0SG9zdDo6SlNJbmplY3RlZFNjcmlwdEhvc3QoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgUmVmPEluamVjdGVkU2NyaXB0SG9zdD4mJiBpbXBsKQogICAgIDogSlNEZXN0cnVjdGlibGVP
YmplY3Qodm0sIHN0cnVjdHVyZSkKLSAgICAsIG1fd3JhcHBlZChXVEY6Om1vdmUoaW1wbCkpCisg
ICAgLCBtX3dyYXBwZWQoV1RGTW92ZShpbXBsKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdC5oCmluZGV4IGM3
ZTE2ZDI0ZmQwZjViNDhiOGE4OTViNTY0YWVhYTk5YTIwYjMxNTYuLjJmZjVmYWMzOWJmYjhkZjlj
ZmNmMjFkMTlmZGQyMDAwMTdhMjIzNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0LmgKQEAgLTQ2LDcgKzQ2LDcgQEAg
cHVibGljOgogCiAgICAgc3RhdGljIEpTSW5qZWN0ZWRTY3JpcHRIb3N0KiBjcmVhdGUoSlNDOjpW
TSYgdm0sIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFJlZjxJbmplY3RlZFNjcmlwdEhvc3Q+
JiYgaW1wbCkKICAgICB7Ci0gICAgICAgIEpTSW5qZWN0ZWRTY3JpcHRIb3N0KiBpbnN0YW5jZSA9
IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNJbmplY3RlZFNjcmlwdEhvc3Q+KHZt
LmhlYXApKSBKU0luamVjdGVkU2NyaXB0SG9zdCh2bSwgc3RydWN0dXJlLCBXVEY6Om1vdmUoaW1w
bCkpOworICAgICAgICBKU0luamVjdGVkU2NyaXB0SG9zdCogaW5zdGFuY2UgPSBuZXcgKE5vdE51
bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTSW5qZWN0ZWRTY3JpcHRIb3N0Pih2bS5oZWFwKSkgSlNJ
bmplY3RlZFNjcmlwdEhvc3Qodm0sIHN0cnVjdHVyZSwgV1RGTW92ZShpbXBsKSk7CiAgICAgICAg
IGluc3RhbmNlLT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgICAgIHJldHVybiBpbnN0YW5jZTsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JBZ2VudC5jcHAKaW5kZXggZGEwM2I3ZjIzY2EyYWIyMDI1ZjRiOTQwMzBi
Njk4MmYwNDJlMTkyNy4uMzEyZTVkOWI0YjFjZjg5ZTc3NDBmYWQ2NjUyNzIxM2QwYmUzZTQxZiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvckFnZW50LmNwcApAQCAtMTIzLDcgKzEyMyw3IEBAIHZvaWQgSW5zcGVjdG9yQWdl
bnQ6OmFjdGl2YXRlRXh0cmFEb21haW4oY29uc3QgU3RyaW5nJiBkb21haW5OYW1lKQogCiAgICAg
UmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz4+IGRvbWFpbk5hbWVzID0gSW5z
cGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPjo6Y3JlYXRlKCk7CiAgICAgZG9tYWluTmFt
ZXMtPmFkZEl0ZW0oZG9tYWluTmFtZSk7Ci0gICAgbV9mcm9udGVuZERpc3BhdGNoZXItPmFjdGl2
YXRlRXh0cmFEb21haW5zKFdURjo6bW92ZShkb21haW5OYW1lcykpOworICAgIG1fZnJvbnRlbmRE
aXNwYXRjaGVyLT5hY3RpdmF0ZUV4dHJhRG9tYWlucyhXVEZNb3ZlKGRvbWFpbk5hbWVzKSk7CiB9
CiAKIHZvaWQgSW5zcGVjdG9yQWdlbnQ6OmFjdGl2YXRlRXh0cmFEb21haW5zKGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBleHRyYURvbWFpbnMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDb25zb2xlQWdlbnQuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ29uc29sZUFnZW50LmNwcApp
bmRleCBhZjQxYzI1NmRlZTU1NTY0YTJmZTU3ZjJhNjljNjkzN2M1YjBkZjVlLi4xM2VlYmU5MTMz
NDI2YjRlZWMxYjYzNDA0ZGZiMzFmNDZkOGJjNTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDb25zb2xlQWdlbnQuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNvbnNvbGVB
Z2VudC5jcHAKQEAgLTEyMSw3ICsxMjEsNyBAQCB2b2lkIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6
YWRkTWVzc2FnZVRvQ29uc29sZShzdGQ6OnVuaXF1ZV9wdHI8Q29uc29sZU1lc3NhZ2U+CiAgICAg
ICAgIGNsZWFyTWVzc2FnZXModW51c2VkKTsKICAgICB9CiAKLSAgICBhZGRDb25zb2xlTWVzc2Fn
ZShXVEY6Om1vdmUobWVzc2FnZSkpOworICAgIGFkZENvbnNvbGVNZXNzYWdlKFdURk1vdmUobWVz
c2FnZSkpOwogfQogCiB2b2lkIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6c3RhcnRUaW1pbmcoY29u
c3QgU3RyaW5nJiB0aXRsZSkKQEAgLTE5Niw3ICsxOTYsNyBAQCB2b2lkIEluc3BlY3RvckNvbnNv
bGVBZ2VudDo6YWRkQ29uc29sZU1lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPENvbnNvbGVNZXNzYWdl
PiBjbwogICAgICAgICAgICAgbV9wcmV2aW91c01lc3NhZ2UtPnVwZGF0ZVJlcGVhdENvdW50SW5D
b25zb2xlKCptX2Zyb250ZW5kRGlzcGF0Y2hlcik7CiAgICAgfSBlbHNlIHsKICAgICAgICAgbV9w
cmV2aW91c01lc3NhZ2UgPSBjb25zb2xlTWVzc2FnZS5nZXQoKTsKLSAgICAgICAgbV9jb25zb2xl
TWVzc2FnZXMuYXBwZW5kKFdURjo6bW92ZShjb25zb2xlTWVzc2FnZSkpOworICAgICAgICBtX2Nv
bnNvbGVNZXNzYWdlcy5hcHBlbmQoV1RGTW92ZShjb25zb2xlTWVzc2FnZSkpOwogICAgICAgICBp
ZiAobV9lbmFibGVkKQogICAgICAgICAgICAgbV9wcmV2aW91c01lc3NhZ2UtPmFkZFRvRnJvbnRl
bmQoKm1fZnJvbnRlbmREaXNwYXRjaGVyLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlciwgdHJ1ZSk7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcAppbmRleCBmYTk4YTgzNTdh
MTFlMTRhNzUzOTNlMGU3NTQxMzMwNGYxZjY4MDM2Li5lYzc3YTc0MGQyNjZmMTIwZDhhYjZjMjhk
N2ExMGNmODc4NTNiYjg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcApAQCAt
MzIzLDcgKzMyMyw3IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2V0QnJlYWtwb2lu
dEJ5VXJsKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgaW50IGxpCiAKICAgICAgICAgUmVmUHRy
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpMb2NhdGlvbj4gbG9jYXRpb24gPSByZXNv
bHZlQnJlYWtwb2ludChicmVha3BvaW50SWRlbnRpZmllciwgaXQtPmtleSwgYnJlYWtwb2ludCk7
CiAgICAgICAgIGlmIChsb2NhdGlvbikKLSAgICAgICAgICAgIGxvY2F0aW9ucy0+YWRkSXRlbShX
VEY6Om1vdmUobG9jYXRpb24pKTsKKyAgICAgICAgICAgIGxvY2F0aW9ucy0+YWRkSXRlbShXVEZN
b3ZlKGxvY2F0aW9uKSk7CiAgICAgfQogICAgICpvdXRCcmVha3BvaW50SWRlbnRpZmllciA9IGJy
ZWFrcG9pbnRJZGVudGlmaWVyOwogfQpAQCAtNDQyLDcgKzQ0Miw3IEBAIFJlZlB0cjxJbnNwZWN0
b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6TG9jYXRpb24+IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6
OnJlc29sdmVCCiAgICAgICAgIC5zZXRMaW5lTnVtYmVyKGFjdHVhbExpbmVOdW1iZXIpCiAgICAg
ICAgIC5yZWxlYXNlKCk7CiAgICAgbG9jYXRpb24tPnNldENvbHVtbk51bWJlcihhY3R1YWxDb2x1
bW5OdW1iZXIpOwotICAgIHJldHVybiBXVEY6Om1vdmUobG9jYXRpb24pOworICAgIHJldHVybiBX
VEZNb3ZlKGxvY2F0aW9uKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzZWFy
Y2hJbkNvbnRlbnQoRXJyb3JTdHJpbmcmIGVycm9yLCBjb25zdCBTdHJpbmcmIHNjcmlwdElEU3Ry
LCBjb25zdCBTdHJpbmcmIHF1ZXJ5LCBjb25zdCBib29sKiBvcHRpb25hbENhc2VTZW5zaXRpdmUs
IGNvbnN0IGJvb2wqIG9wdGlvbmFsSXNSZWdleCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkdlbmVyaWNUeXBlczo6U2VhcmNoTWF0Y2g+PiYg
cmVzdWx0cykKQEAgLTQ4Niw3ICs0ODYsNyBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6
OnNjaGVkdWxlUGF1c2VPbk5leHRTdGF0ZW1lbnQoRGVidWdnZXJGcm9udGVuZERpc3BhdAogICAg
ICAgICByZXR1cm47CiAKICAgICBtX2JyZWFrUmVhc29uID0gYnJlYWtSZWFzb247Ci0gICAgbV9i
cmVha0F1eERhdGEgPSBXVEY6Om1vdmUoZGF0YSk7CisgICAgbV9icmVha0F1eERhdGEgPSBXVEZN
b3ZlKGRhdGEpOwogICAgIG1fc2NyaXB0RGVidWdTZXJ2ZXIuc2V0UGF1c2VPbk5leHRTdGF0ZW1l
bnQodHJ1ZSk7CiB9CiAKQEAgLTc0Miw3ICs3NDIsNyBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2Vy
QWdlbnQ6OmJyZWFrcG9pbnRBY3Rpb25Qcm9iZShKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUs
CiAgICAgICAgIC5zZXRQYXlsb2FkKHBheWxvYWQucmVsZWFzZSgpKQogICAgICAgICAucmVsZWFz
ZSgpOwogCi0gICAgbV9mcm9udGVuZERpc3BhdGNoZXItPmRpZFNhbXBsZVByb2JlKFdURjo6bW92
ZShyZXN1bHQpKTsKKyAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+ZGlkU2FtcGxlUHJvYmUoV1RG
TW92ZShyZXN1bHQpKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaWRDb250
aW51ZSgpCkBAIC03NjQsNyArNzY0LDcgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50Ojpk
aWRDb250aW51ZSgpCiB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmJyZWFrUHJvZ3JhbShE
ZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uIGJyZWFrUmVhc29uLCBSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0PiYmIGRhdGEpCiB7CiAgICAgbV9icmVha1JlYXNvbiA9IGJyZWFrUmVhc29u
OwotICAgIG1fYnJlYWtBdXhEYXRhID0gV1RGOjptb3ZlKGRhdGEpOworICAgIG1fYnJlYWtBdXhE
YXRhID0gV1RGTW92ZShkYXRhKTsKICAgICBtX3NjcmlwdERlYnVnU2VydmVyLmJyZWFrUHJvZ3Jh
bSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JIZWFwQWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9ySGVhcEFnZW50LmNwcAppbmRleCBjMTM1NmQ5YTczZWVhNDEy
YjYxZmJlZWI3MGMxOGNlNTM0M2M1ZjI1Li4yY2JjM2YzMDQ1MDEyYjAwMTFhYTNiYjM2MjIxYzk1
ZjgwN2FlZjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JIZWFwQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckhlYXBBZ2VudC5jcHAKQEAgLTEzMCw3ICsxMzAsNyBA
QCB2b2lkIEluc3BlY3RvckhlYXBBZ2VudDo6ZGlkR2FyYmFnZUNvbGxlY3QoSGVhcE9wZXJhdGlv
biBvcGVyYXRpb24pCiAgICAgICAgICAgICAuc2V0RW5kVGltZShlbmRUaW1lKQogICAgICAgICAg
ICAgLnJlbGVhc2UoKTsKIAotICAgICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+Z2FyYmFnZUNv
bGxlY3RlZChXVEY6Om1vdmUoY29sbGVjdGlvbikpOworICAgICAgICBtX2Zyb250ZW5kRGlzcGF0
Y2hlci0+Z2FyYmFnZUNvbGxlY3RlZChXVEZNb3ZlKGNvbGxlY3Rpb24pKTsKICAgICB9KTsKIAog
ICAgIG1fZ2NTdGFydFRpbWUgPSBOQU47CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50LmNwcApp
bmRleCBmZmVjZmJhMTNhZWUyNjVjMmNmNjcxZGY1MjhkYTIxMzg5OTMwNjFmLi44MWQwM2JkYjIz
NTk4NDQ3ODMwNzFkMThhZWFlYzY5OGViODBjYTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVB
Z2VudC5jcHAKQEAgLTI5Myw3ICsyOTMsNyBAQCB2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6
Z2V0UnVudGltZVR5cGVzRm9yVmFyaWFibGVzQXRPZmZzZXRzKEVycm9yU3RyaW5nJiBlcgogICAg
ICAgICAgICAgZGVzY3JpcHRpb24tPnNldElzVHJ1bmNhdGVkKHR5cGVTZXQtPmlzT3ZlcmZsb3du
KCkpOwogICAgICAgICB9CiAKLSAgICAgICAgdHlwZURlc2NyaXB0aW9ucy0+YWRkSXRlbShXVEY6
Om1vdmUoZGVzY3JpcHRpb24pKTsKKyAgICAgICAgdHlwZURlc2NyaXB0aW9ucy0+YWRkSXRlbShX
VEZNb3ZlKGRlc2NyaXB0aW9uKSk7CiAgICAgfQogCiAgICAgZG91YmxlIGVuZCA9IGN1cnJlbnRU
aW1lTVMoKTsKQEAgLTM1Myw3ICszNTMsNyBAQCB2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6
Z2V0QmFzaWNCbG9ja3MoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbgogICAg
ICAgICAgICAgLnNldEhhc0V4ZWN1dGVkKGJsb2NrLm1faGFzRXhlY3V0ZWQpCiAgICAgICAgICAg
ICAuc2V0RXhlY3V0aW9uQ291bnQoYmxvY2subV9leGVjdXRpb25Db3VudCkKICAgICAgICAgICAg
IC5yZWxlYXNlKCk7Ci0gICAgICAgIGJhc2ljQmxvY2tzLT5hZGRJdGVtKFdURjo6bW92ZShsb2Nh
dGlvbikpOworICAgICAgICBiYXNpY0Jsb2Nrcy0+YWRkSXRlbShXVEZNb3ZlKGxvY2F0aW9uKSk7
CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQuY3Bw
CmluZGV4IDBiMWNmNTk4YjJjNjIwMzlhNmJhZGM4OTI1ZTQ0OTI2YmE3ZTMzM2QuLjc5OGU3Y2Vk
Y2I4ZGQ1NjM4YWU2MWQwOGY3OTI0ZGQ5MjEyZGI2NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
clNjcmlwdFByb2ZpbGVyQWdlbnQuY3BwCkBAIC0xMzgsNyArMTM4LDcgQEAgdm9pZCBJbnNwZWN0
b3JTY3JpcHRQcm9maWxlckFnZW50OjphZGRFdmVudChkb3VibGUgc3RhcnRUaW1lLCBkb3VibGUg
ZW5kVGltZSwgUHIKICAgICAgICAgLnNldFR5cGUodG9Qcm90b2NvbChyZWFzb24pKQogICAgICAg
ICAucmVsZWFzZSgpOwogCi0gICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnRyYWNraW5nVXBkYXRl
KFdURjo6bW92ZShldmVudCkpOworICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT50cmFja2luZ1Vw
ZGF0ZShXVEZNb3ZlKGV2ZW50KSk7CiB9CiAKIHN0YXRpYyBSZWY8UHJvdG9jb2w6OlRpbWVsaW5l
OjpDUFVQcm9maWxlTm9kZUFnZ3JlZ2F0ZUNhbGxJbmZvPiBidWlsZEFnZ3JlZ2F0ZUNhbGxJbmZv
SW5zcGVjdG9yT2JqZWN0KGNvbnN0IEpTQzo6UHJvZmlsZU5vZGUqIG5vZGUpCkBAIC0xNzgsNyAr
MTc4LDcgQEAgc3RhdGljIFJlZjxQcm90b2NvbDo6VGltZWxpbmU6OkNQVVByb2ZpbGVOb2RlPiBi
dWlsZEluc3BlY3Rvck9iamVjdChjb25zdCBKU0M6OlAKICAgICAgICAgYXV0byBjaGlsZHJlbiA9
IFByb3RvY29sOjpBcnJheTxQcm90b2NvbDo6VGltZWxpbmU6OkNQVVByb2ZpbGVOb2RlPjo6Y3Jl
YXRlKCk7CiAgICAgICAgIGZvciAoUmVmUHRyPEpTQzo6UHJvZmlsZU5vZGU+IHByb2ZpbGVOb2Rl
IDogbm9kZS0+Y2hpbGRyZW4oKSkKICAgICAgICAgICAgIGNoaWxkcmVuLT5hZGRJdGVtKGJ1aWxk
SW5zcGVjdG9yT2JqZWN0KHByb2ZpbGVOb2RlLmdldCgpKSk7Ci0gICAgICAgIHJlc3VsdC0+c2V0
Q2hpbGRyZW4oV1RGOjptb3ZlKGNoaWxkcmVuKSk7CisgICAgICAgIHJlc3VsdC0+c2V0Q2hpbGRy
ZW4oV1RGTW92ZShjaGlsZHJlbikpOwogICAgIH0KIAogICAgIHJldHVybiByZXN1bHQ7CkBAIC0x
OTEsNyArMTkxLDcgQEAgc3RhdGljIFJlZjxQcm90b2NvbDo6VGltZWxpbmU6OkNQVVByb2ZpbGU+
IGJ1aWxkUHJvZmlsZUluc3BlY3Rvck9iamVjdChjb25zdCBKU0MKICAgICAgICAgcm9vdE5vZGVz
LT5hZGRJdGVtKGJ1aWxkSW5zcGVjdG9yT2JqZWN0KHByb2ZpbGVOb2RlLmdldCgpKSk7CiAKICAg
ICByZXR1cm4gUHJvdG9jb2w6OlRpbWVsaW5lOjpDUFVQcm9maWxlOjpjcmVhdGUoKQotICAgICAg
ICAuc2V0Um9vdE5vZGVzKFdURjo6bW92ZShyb290Tm9kZXMpKQorICAgICAgICAuc2V0Um9vdE5v
ZGVzKFdURk1vdmUocm9vdE5vZGVzKSkKICAgICAgICAgLnJlbGVhc2UoKTsKIH0KIApAQCAtMjAw
LDcgKzIwMCw3IEBAIHZvaWQgSW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudDo6dHJhY2tpbmdD
b21wbGV0ZSgpCiAgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rv
clZhbHVlPj4gcHJvZmlsZXMgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3JW
YWx1ZT46OmNyZWF0ZSgpOwogICAgIGZvciAoYXV0byYgcHJvZmlsZSA6IG1fcHJvZmlsZXMpIHsK
ICAgICAgICAgUmVmPEluc3BlY3RvclZhbHVlPiB2YWx1ZSA9IGJ1aWxkUHJvZmlsZUluc3BlY3Rv
ck9iamVjdChwcm9maWxlLmdldCgpKTsKLSAgICAgICAgcHJvZmlsZXMtPmFkZEl0ZW0oV1RGOjpt
b3ZlKHZhbHVlKSk7CisgICAgICAgIHByb2ZpbGVzLT5hZGRJdGVtKFdURk1vdmUodmFsdWUpKTsK
ICAgICB9CiAKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+dHJhY2tpbmdDb21wbGV0ZShwcm9m
aWxlcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2F1Z21l
bnRhYmxlL0FsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL2F1Z21lbnRhYmxlL0FsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50LmgKaW5k
ZXggOTc5MWMyOTU1NjIwNjAyMzVkNTE4MmQxNTAwMzFjOGNkOTc3M2Q0Zi4uZWQzMzJhYjIwZDJm
ZjJhMTlmNDkzNjg3OGFiYmE2OGFmMWYzNTEyMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9hdWdtZW50YWJsZS9BbHRlcm5hdGVEaXNwYXRjaGFibGVBZ2VudC5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYXVnbWVudGFibGUvQWx0ZXJu
YXRlRGlzcGF0Y2hhYmxlQWdlbnQuaApAQCAtNDEsNyArNDEsNyBAQCBjbGFzcyBBbHRlcm5hdGVE
aXNwYXRjaGFibGVBZ2VudCBmaW5hbCA6IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2UgewogcHVi
bGljOgogICAgIEFsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50KGNvbnN0IFN0cmluZyYgZG9tYWlu
TmFtZSwgQXVnbWVudGFibGVJbnNwZWN0b3JDb250cm9sbGVyJiBjb250cm9sbGVyLCBzdGQ6OnVu
aXF1ZV9wdHI8VEFsdGVybmF0ZURpc3BhdGNoZXI+IGFsdGVybmF0ZURpc3BhdGNoZXIpCiAgICAg
ICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKGRvbWFpbk5hbWUpCi0gICAgICAgICwgbV9hbHRlcm5h
dGVEaXNwYXRjaGVyKFdURjo6bW92ZShhbHRlcm5hdGVEaXNwYXRjaGVyKSkKKyAgICAgICAgLCBt
X2FsdGVybmF0ZURpc3BhdGNoZXIoV1RGTW92ZShhbHRlcm5hdGVEaXNwYXRjaGVyKSkKICAgICAg
ICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKFRCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNvbnRy
b2xsZXIuYmFja2VuZERpc3BhdGNoZXIoKSwgbnVsbHB0cikpCiAgICAgewogICAgICAgICBtX2Jh
Y2tlbmREaXNwYXRjaGVyLT5zZXRBbHRlcm5hdGVEaXNwYXRjaGVyKG1fYWx0ZXJuYXRlRGlzcGF0
Y2hlci5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3NjcmlwdHMvY29kZWdlbi9jcHBfZ2VuZXJhdG9yX3RlbXBsYXRlcy5weSBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2NwcF9nZW5lcmF0b3JfdGVtcGxh
dGVzLnB5CmluZGV4IDYxYjBiYTE4MzI4Yzc3NzZkNjVkMDIyN2VkMzcwZjBmM2FiOTM0MWMuLmM4
NTZmZWI0MjdkYThlM2YyNGYyMjE2MjU1MDM5ZDcxOTg0ZTM3YWUgMTAwNzU1Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2NwcF9nZW5lcmF0b3Jf
dGVtcGxhdGVzLnB5CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0
cy9jb2RlZ2VuL2NwcF9nZW5lcmF0b3JfdGVtcGxhdGVzLnB5CkBAIC02OCw3ICs2OCw3IEBAIG5h
bWVzcGFjZSBJbnNwZWN0b3IgewogCiBjbGFzcyBBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlciB7
CiBwdWJsaWM6Ci0gICAgdm9pZCBzZXRCYWNrZW5kRGlzcGF0Y2hlcihSZWZQdHI8QmFja2VuZERp
c3BhdGNoZXI+JiYgZGlzcGF0Y2hlcikgeyBtX2JhY2tlbmREaXNwYXRjaGVyID0gV1RGOjptb3Zl
KGRpc3BhdGNoZXIpOyB9CisgICAgdm9pZCBzZXRCYWNrZW5kRGlzcGF0Y2hlcihSZWZQdHI8QmFj
a2VuZERpc3BhdGNoZXI+JiYgZGlzcGF0Y2hlcikgeyBtX2JhY2tlbmREaXNwYXRjaGVyID0gV1RG
TW92ZShkaXNwYXRjaGVyKTsgfQogICAgIEJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0
Y2hlcigpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2VuZERpc3BhdGNoZXIuZ2V0KCk7IH0KIHByaXZh
dGU6CiAgICAgUmVmUHRyPEJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOwpA
QCAtMTY0LDcgKzE2NCw3IEBAICR7ZGlzcGF0Y2hDYXNlc30KICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgICgoKnRoaXMpLipmaW5kUmVzdWx0LT52YWx1ZSkocmVxdWVzdElkLCBXVEY6Om1v
dmUocGFyYW1ldGVycykpOworICAgICgoKnRoaXMpLipmaW5kUmVzdWx0LT52YWx1ZSkocmVxdWVz
dElkLCBXVEZNb3ZlKHBhcmFtZXRlcnMpKTsKIH0iIiIpCiAKICAgICBCYWNrZW5kRGlzcGF0Y2hl
ckltcGxlbWVudGF0aW9uRG9tYWluQ29uc3RydWN0b3IgPSAoCkBAIC0xOTIsMTMgKzE5MiwxMyBA
QCAke2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXI6OiR7ZG9tYWluTmFtZX1CYWNrZW5kRGlz
cGF0Y2hlcihCYWNrZW5kRGlzcGF0Y2hlcgogIiIiKQogCiAgICAgQmFja2VuZERpc3BhdGNoZXJJ
bXBsZW1lbnRhdGlvbkFzeW5jQ29tbWFuZCA9ICgKLSIiIiR7ZG9tYWluTmFtZX1CYWNrZW5kRGlz
cGF0Y2hlckhhbmRsZXI6OiR7Y2FsbGJhY2tOYW1lfTo6JHtjYWxsYmFja05hbWV9KFJlZjxCYWNr
ZW5kRGlzcGF0Y2hlcj4mJiBiYWNrZW5kRGlzcGF0Y2hlciwgaW50IGlkKSA6IEJhY2tlbmREaXNw
YXRjaGVyOjpDYWxsYmFja0Jhc2UoV1RGOjptb3ZlKGJhY2tlbmREaXNwYXRjaGVyKSwgaWQpIHsg
fQorIiIiJHtkb21haW5OYW1lfUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6JHtjYWxsYmFja05h
bWV9Ojoke2NhbGxiYWNrTmFtZX0oUmVmPEJhY2tlbmREaXNwYXRjaGVyPiYmIGJhY2tlbmREaXNw
YXRjaGVyLCBpbnQgaWQpIDogQmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZShXVEZNb3Zl
KGJhY2tlbmREaXNwYXRjaGVyKSwgaWQpIHsgfQogCiB2b2lkICR7ZG9tYWluTmFtZX1CYWNrZW5k
RGlzcGF0Y2hlckhhbmRsZXI6OiR7Y2FsbGJhY2tOYW1lfTo6c2VuZFN1Y2Nlc3MoJHtmb3JtYWxQ
YXJhbWV0ZXJzfSkKIHsKICAgICBSZWY8SW5zcGVjdG9yT2JqZWN0PiBqc29uTWVzc2FnZSA9IElu
c3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7CiAke291dFBhcmFtZXRlckFzc2lnbm1lbnRzfQotICAg
IENhbGxiYWNrQmFzZTo6c2VuZFN1Y2Nlc3MoV1RGOjptb3ZlKGpzb25NZXNzYWdlKSk7CisgICAg
Q2FsbGJhY2tCYXNlOjpzZW5kU3VjY2VzcyhXVEZNb3ZlKGpzb25NZXNzYWdlKSk7CiB9IiIiKQog
CiAgICAgRnJvbnRlbmREaXNwYXRjaGVyRG9tYWluRGlzcGF0Y2hlckRlY2xhcmF0aW9uID0gKApA
QCAtMjIyLDcgKzIyMiw3IEBAIHByaXZhdGU6CiAgICAgICAgIH0KIAogICAgICAgICBCdWlsZGVy
KFJlZjwvKiR7b2JqZWN0VHlwZX0qL0luc3BlY3Rvck9iamVjdD4mJiBvYmplY3QpCi0gICAgICAg
ICAgICA6IG1fcmVzdWx0KFdURjo6bW92ZShvYmplY3QpKQorICAgICAgICAgICAgOiBtX3Jlc3Vs
dChXVEZNb3ZlKG9iamVjdCkpCiAgICAgICAgIHsKICAgICAgICAgICAgIENPTVBJTEVfQVNTRVJU
KFNUQVRFID09IE5vRmllbGRzU2V0LCBidWlsZGVyX2NyZWF0ZWRfaW5fbm9uX2luaXRfc3RhdGUp
OwogICAgICAgICB9CkBAIC0yMzcsNyArMjM3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIENP
TVBJTEVfQVNTRVJUKHNpemVvZigke29iamVjdFR5cGV9KSA9PSBzaXplb2YoSW5zcGVjdG9yT2Jq
ZWN0KSwgY2Fubm90X2Nhc3QpOwogCiAgICAgICAgICAgICBSZWY8SW5zcGVjdG9yT2JqZWN0PiBy
ZXN1bHQgPSBtX3Jlc3VsdC5yZWxlYXNlTm9uTnVsbCgpOwotICAgICAgICAgICAgcmV0dXJuIFdU
Rjo6bW92ZSgqcmVpbnRlcnByZXRfY2FzdDxSZWY8JHtvYmplY3RUeXBlfT4qPigmcmVzdWx0KSk7
CisgICAgICAgICAgICByZXR1cm4gV1RGTW92ZSgqcmVpbnRlcnByZXRfY2FzdDxSZWY8JHtvYmpl
Y3RUeXBlfT4qPigmcmVzdWx0KSk7CiAgICAgICAgIH0KICAgICB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9j
cHBfYmFja2VuZF9kaXNwYXRjaGVyX2ltcGxlbWVudGF0aW9uLnB5IGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfY3BwX2JhY2tlbmRfZGlz
cGF0Y2hlcl9pbXBsZW1lbnRhdGlvbi5weQppbmRleCBjYmJiYzBlZjQ2YzZlYzc4Mjc5NzA0ZDQ2
ZWE2ODQwODJhMzE5MTIxLi44ZjNkZjgwZWUyNzA3NDk4ODY2MGVjNDg3YTRkOWM1Njk5NTJhYzMw
IDEwMDc1NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29k
ZWdlbi9nZW5lcmF0ZV9jcHBfYmFja2VuZF9kaXNwYXRjaGVyX2ltcGxlbWVudGF0aW9uLnB5Cisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVy
YXRlX2NwcF9iYWNrZW5kX2Rpc3BhdGNoZXJfaW1wbGVtZW50YXRpb24ucHkKQEAgLTEwNSwxMCAr
MTA1LDEwIEBAIGNsYXNzIENwcEJhY2tlbmREaXNwYXRjaGVySW1wbGVtZW50YXRpb25HZW5lcmF0
b3IoR2VuZXJhdG9yKToKICAgICBkZWYgX2dlbmVyYXRlX3NtYWxsX2Rpc3BhdGNoZXJfc3dpdGNo
X2ltcGxlbWVudGF0aW9uX2Zvcl9kb21haW4oc2VsZiwgZG9tYWluKToKICAgICAgICAgY2FzZXMg
PSBbXQogICAgICAgICBjYXNlcy5hcHBlbmQoJyAgICBpZiAobWV0aG9kID09ICIlcyIpJyAlIGRv
bWFpbi5jb21tYW5kc1swXS5jb21tYW5kX25hbWUpCi0gICAgICAgIGNhc2VzLmFwcGVuZCgnICAg
ICAgICAlcyhyZXF1ZXN0SWQsIFdURjo6bW92ZShwYXJhbWV0ZXJzKSk7JyAlIGRvbWFpbi5jb21t
YW5kc1swXS5jb21tYW5kX25hbWUpCisgICAgICAgIGNhc2VzLmFwcGVuZCgnICAgICAgICAlcyhy
ZXF1ZXN0SWQsIFdURk1vdmUocGFyYW1ldGVycykpOycgJSBkb21haW4uY29tbWFuZHNbMF0uY29t
bWFuZF9uYW1lKQogICAgICAgICBmb3IgY29tbWFuZCBpbiBkb21haW4uY29tbWFuZHNbMTpdOgog
ICAgICAgICAgICAgY2FzZXMuYXBwZW5kKCcgICAgZWxzZSBpZiAobWV0aG9kID09ICIlcyIpJyAl
IGNvbW1hbmQuY29tbWFuZF9uYW1lKQotICAgICAgICAgICAgY2FzZXMuYXBwZW5kKCcgICAgICAg
ICVzKHJlcXVlc3RJZCwgV1RGOjptb3ZlKHBhcmFtZXRlcnMpKTsnICUgY29tbWFuZC5jb21tYW5k
X25hbWUpCisgICAgICAgICAgICBjYXNlcy5hcHBlbmQoJyAgICAgICAgJXMocmVxdWVzdElkLCBX
VEZNb3ZlKHBhcmFtZXRlcnMpKTsnICUgY29tbWFuZC5jb21tYW5kX25hbWUpCiAKICAgICAgICAg
c3dpdGNoX2FyZ3MgPSB7CiAgICAgICAgICAgICAnZG9tYWluTmFtZSc6IGRvbWFpbi5kb21haW5f
bmFtZSwKQEAgLTMwNyw4ICszMDcsOCBAQCBjbGFzcyBDcHBCYWNrZW5kRGlzcGF0Y2hlckltcGxl
bWVudGF0aW9uR2VuZXJhdG9yKEdlbmVyYXRvcik6CiAKICAgICAgICAgaWYgbm90IGNvbW1hbmQu
aXNfYXN5bmM6CiAgICAgICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICBpZiAoIWVycm9yLmxlbmd0
aCgpKScpCi0gICAgICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICAgICAgbV9iYWNrZW5kRGlzcGF0
Y2hlci0+c2VuZFJlc3BvbnNlKHJlcXVlc3RJZCwgV1RGOjptb3ZlKHJlc3VsdCkpOycpCisgICAg
ICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+c2VuZFJl
c3BvbnNlKHJlcXVlc3RJZCwgV1RGTW92ZShyZXN1bHQpKTsnKQogICAgICAgICAgICAgbGluZXMu
YXBwZW5kKCcgICAgZWxzZScpCi0gICAgICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICAgICAgbV9i
YWNrZW5kRGlzcGF0Y2hlci0+cmVwb3J0UHJvdG9jb2xFcnJvcihCYWNrZW5kRGlzcGF0Y2hlcjo6
U2VydmVyRXJyb3IsIFdURjo6bW92ZShlcnJvcikpOycpCisgICAgICAgICAgICBsaW5lcy5hcHBl
bmQoJyAgICAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+cmVwb3J0UHJvdG9jb2xFcnJvcihCYWNr
ZW5kRGlzcGF0Y2hlcjo6U2VydmVyRXJyb3IsIFdURk1vdmUoZXJyb3IpKTsnKQogICAgICAgICBs
aW5lcy5hcHBlbmQoJ30nKQogICAgICAgICByZXR1cm4gIlxuIi5qb2luKGxpbmVzKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2Vu
ZXJhdGVfY3BwX2Zyb250ZW5kX2Rpc3BhdGNoZXJfaW1wbGVtZW50YXRpb24ucHkgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9jcHBfZnJv
bnRlbmRfZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlvbi5weQppbmRleCA2NmFlMDM1NWE1ZmI2ZmJh
NTIyMzEwMTJiYTRkZTUxNjhhM2ZiZjZmLi5lYTQ2YWFmMjYxOGE3OGU2OWU5MjZjYzlkOGRjMjgw
NzRiOWUyZTk3IDEwMDc1NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Nj
cmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9jcHBfZnJvbnRlbmRfZGlzcGF0Y2hlcl9pbXBsZW1lbnRh
dGlvbi5weQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29k
ZWdlbi9nZW5lcmF0ZV9jcHBfZnJvbnRlbmRfZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlvbi5weQpA
QCAtMTE2LDcgKzExNiw3IEBAIGNsYXNzIENwcEZyb250ZW5kRGlzcGF0Y2hlckltcGxlbWVudGF0
aW9uR2VuZXJhdG9yKEdlbmVyYXRvcik6CiAgICAgICAgIGlmIGxlbihwYXJhbWV0ZXJfYXNzaWdu
bWVudHMpID4gMDoKICAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgIFJlZjxJbnNwZWN0b3JP
YmplY3Q+IHBhcmFtc09iamVjdCA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7JykKICAgICAg
ICAgICAgIGxpbmVzLmV4dGVuZChwYXJhbWV0ZXJfYXNzaWdubWVudHMpCi0gICAgICAgICAgICBs
aW5lcy5hcHBlbmQoJyAgICBqc29uTWVzc2FnZS0+c2V0T2JqZWN0KEFTQ0lJTGl0ZXJhbCgicGFy
YW1zIiksIFdURjo6bW92ZShwYXJhbXNPYmplY3QpKTsnKQorICAgICAgICAgICAgbGluZXMuYXBw
ZW5kKCcgICAganNvbk1lc3NhZ2UtPnNldE9iamVjdChBU0NJSUxpdGVyYWwoInBhcmFtcyIpLCBX
VEZNb3ZlKHBhcmFtc09iamVjdCkpOycpCiAKICAgICAgICAgbGluZXMuYXBwZW5kKCcnKQogICAg
ICAgICBsaW5lcy5hcHBlbmQoJyAgICBtX2Zyb250ZW5kUm91dGVyLnNlbmRFdmVudChqc29uTWVz
c2FnZS0+dG9KU09OU3RyaW5nKCkpOycpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9jcHBfcHJvdG9jb2xfdHlwZXNf
aGVhZGVyLnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVn
ZW4vZ2VuZXJhdGVfY3BwX3Byb3RvY29sX3R5cGVzX2hlYWRlci5weQppbmRleCBiMDdiMGI5Yzc5
YmY0NTVjOTMyOTViNjVjMDEzMTE2MDA4NzUxYzdlLi42NzUzZTJkY2Y4OGVhOTI5ZmYxYmMyYmY5
MGIxMTQ5ZTc2MDU5MGQ2IDEwMDc1NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9jcHBfcHJvdG9jb2xfdHlwZXNfaGVhZGVyLnB5
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dl
bmVyYXRlX2NwcF9wcm90b2NvbF90eXBlc19oZWFkZXIucHkKQEAgLTMxMiw3ICszMTIsNyBAQCBj
bGFzcyBDcHBQcm90b2NvbFR5cGVzSGVhZGVyR2VuZXJhdG9yKEdlbmVyYXRvcik6CiAgICAgICAg
IGlmIGlzaW5zdGFuY2UodHlwZV9tZW1iZXIudHlwZSwgRW51bVR5cGUpOgogICAgICAgICAgICAg
bGluZXMuYXBwZW5kKCcgICAgICAgIEluc3BlY3Rvck9iamVjdEJhc2U6OiUoa2V5ZWRTZXQpcyhB
U0NJSUxpdGVyYWwoIiUobmFtZSlzIiksIEluc3BlY3Rvcjo6UHJvdG9jb2w6OmdldEVudW1Db25z
dGFudFZhbHVlKHN0YXRpY19jYXN0PGludD4odmFsdWUpKSk7JyAlIHNldHRlcl9hcmdzKQogICAg
ICAgICBlbGlmIENwcEdlbmVyYXRvci5zaG91bGRfdXNlX3JlZmVyZW5jZXNfZm9yX3R5cGUodHlw
ZV9tZW1iZXIudHlwZSk6Ci0gICAgICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICAgICAgSW5zcGVj
dG9yT2JqZWN0QmFzZTo6JShrZXllZFNldClzKEFTQ0lJTGl0ZXJhbCgiJShuYW1lKXMiKSwgV1RG
Ojptb3ZlKHZhbHVlKSk7JyAlIHNldHRlcl9hcmdzKQorICAgICAgICAgICAgbGluZXMuYXBwZW5k
KCcgICAgICAgIEluc3BlY3Rvck9iamVjdEJhc2U6OiUoa2V5ZWRTZXQpcyhBU0NJSUxpdGVyYWwo
IiUobmFtZSlzIiksIFdURk1vdmUodmFsdWUpKTsnICUgc2V0dGVyX2FyZ3MpCiAgICAgICAgIGVs
c2U6CiAgICAgICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICAgICAgSW5zcGVjdG9yT2JqZWN0QmFz
ZTo6JShrZXllZFNldClzKEFTQ0lJTGl0ZXJhbCgiJShuYW1lKXMiKSwgdmFsdWUpOycgJSBzZXR0
ZXJfYXJncykKICAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgfScpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9vYmpj
X2JhY2tlbmRfZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlvbi5weSBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX29iamNfYmFja2VuZF9kaXNw
YXRjaGVyX2ltcGxlbWVudGF0aW9uLnB5CmluZGV4IDRjZTVkMDg2ZjNhYzQ5ZTE2NzU4YjFlNjVl
YjA4ZTgzOTRhMmM5M2UuLjQyYWZkOTljZjk2Yjg4ZjhhNzc5MDlhMjQ5YjEzYWQyZmJiNzJkNDUg
MTAwNzU1Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2Rl
Z2VuL2dlbmVyYXRlX29iamNfYmFja2VuZF9kaXNwYXRjaGVyX2ltcGxlbWVudGF0aW9uLnB5Cisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVy
YXRlX29iamNfYmFja2VuZF9kaXNwYXRjaGVyX2ltcGxlbWVudGF0aW9uLnB5CkBAIC0xMzgsNyAr
MTM4LDcgQEAgY2xhc3MgT2JqQ0NvbmZpZ3VyYXRpb25JbXBsZW1lbnRhdGlvbkdlbmVyYXRvcihH
ZW5lcmF0b3IpOgogICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIGxp
bmVzLmFwcGVuZCgnICAgICAgICBpZiAoJXMpJyAlIHZhcl9uYW1lKQogICAgICAgICAgICAgICAg
ICAgICBsaW5lcy5hcHBlbmQoJyAgICAgICAgICAgIHJlc3VsdE9iamVjdC0+JXMoQVNDSUlMaXRl
cmFsKCIlcyIpLCAlcyk7JyAlIChrZXllZF9zZXRfbWV0aG9kLCBwYXJhbWV0ZXIucGFyYW1ldGVy
X25hbWUsIGV4cG9ydF9leHByZXNzaW9uKSkKLSAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgnICAg
ICAgICBiYWNrZW5kRGlzcGF0Y2hlcigpLT5zZW5kUmVzcG9uc2UocmVxdWVzdElkLCBXVEY6Om1v
dmUocmVzdWx0T2JqZWN0KSk7JykKKyAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgICAgICBi
YWNrZW5kRGlzcGF0Y2hlcigpLT5zZW5kUmVzcG9uc2UocmVxdWVzdElkLCBXVEZNb3ZlKHJlc3Vs
dE9iamVjdCkpOycpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBsaW5lcy5hcHBlbmQoJyAg
ICAgICAgYmFja2VuZERpc3BhdGNoZXIoKS0+c2VuZFJlc3BvbnNlKHJlcXVlc3RJZCwgSW5zcGVj
dG9yT2JqZWN0OjpjcmVhdGUoKSk7JykKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfb2JqY19mcm9udGVuZF9kaXNw
YXRjaGVyX2ltcGxlbWVudGF0aW9uLnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfb2JqY19mcm9udGVuZF9kaXNwYXRjaGVyX2ltcGxl
bWVudGF0aW9uLnB5CmluZGV4IGI4ZDEwODA2MGQ5YTY4NTJlYWZjMGRlOTRjNmZmNzgzZWMzOGYy
MGYuLjAwMzBlZDVlZWQ3MzI5ZTNjMWMxZDU1NzAwNzVkNjU4ZTY1YTU5YWMgMTAwNzU1Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRl
X29iamNfZnJvbnRlbmRfZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlvbi5weQorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9vYmpjX2Zy
b250ZW5kX2Rpc3BhdGNoZXJfaW1wbGVtZW50YXRpb24ucHkKQEAgLTE1MCw1ICsxNTAsNSBAQCBj
bGFzcyBPYmpDRnJvbnRlbmREaXNwYXRjaGVySW1wbGVtZW50YXRpb25HZW5lcmF0b3IoR2VuZXJh
dG9yKToKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgbGluZXMuYXBwZW5kKCcg
ICAgaWYgKCVzKScgJSAocGFyYW1ldGVyLnBhcmFtZXRlcl9uYW1lKSkKICAgICAgICAgICAgICAg
ICBsaW5lcy5hcHBlbmQoJyAgICAgICAgcGFyYW1zT2JqZWN0LT4lcyhBU0NJSUxpdGVyYWwoIiVz
IiksICVzKTsnICUgKGtleWVkX3NldF9tZXRob2QsIHBhcmFtZXRlci5wYXJhbWV0ZXJfbmFtZSwg
ZXhwb3J0X2V4cHJlc3Npb24pKQotICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICBqc29uTWVzc2Fn
ZS0+c2V0T2JqZWN0KEFTQ0lJTGl0ZXJhbCgicGFyYW1zIiksIFdURjo6bW92ZShwYXJhbXNPYmpl
Y3QpKTsnKQorICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICBqc29uTWVzc2FnZS0+c2V0T2JqZWN0
KEFTQ0lJTGl0ZXJhbCgicGFyYW1zIiksIFdURk1vdmUocGFyYW1zT2JqZWN0KSk7JykKICAgICAg
ICAgcmV0dXJuIGxpbmVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3NjcmlwdHMvY29kZWdlbi9vYmpjX2dlbmVyYXRvcl90ZW1wbGF0ZXMucHkgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9vYmpjX2dlbmVyYXRvcl90
ZW1wbGF0ZXMucHkKaW5kZXggMTQ4NDUyNzZiMzQwMTAyOGU1Y2IyYTRjMGNjZDJiMTNmNTgxMGM3
Mi4uZjhkMjFjMDYwY2E1NmNkYmZhNTVlMjA4OTI2YzA1MmQ5MTc3NjcyMSAxMDA3NTUKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vb2JqY19nZW5l
cmF0b3JfdGVtcGxhdGVzLnB5CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
c2NyaXB0cy9jb2RlZ2VuL29iamNfZ2VuZXJhdG9yX3RlbXBsYXRlcy5weQpAQCAtMTM4LDggKzEz
OCw4IEBAICR7aW52b2NhdGlvbn0KICAgICBfJHt2YXJpYWJsZU5hbWVQcmVmaXh9SGFuZGxlciA9
IFtoYW5kbGVyIHJldGFpbl07CiAKICAgICBhdXRvIGFsdGVybmF0ZURpc3BhdGNoZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPE9iakNJbnNwZWN0b3Ike2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXI+
KGhhbmRsZXIpOwotICAgIGF1dG8gYWx0ZXJuYXRlQWdlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFs
dGVybmF0ZURpc3BhdGNoYWJsZUFnZW50PCR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hlciwg
QWx0ZXJuYXRlJHtkb21haW5OYW1lfUJhY2tlbmREaXNwYXRjaGVyPj4oQVNDSUlMaXRlcmFsKCIk
e2RvbWFpbk5hbWV9IiksICpfY29udHJvbGxlciwgV1RGOjptb3ZlKGFsdGVybmF0ZURpc3BhdGNo
ZXIpKTsKLSAgICBfY29udHJvbGxlci0+YXBwZW5kRXh0cmFBZ2VudChXVEY6Om1vdmUoYWx0ZXJu
YXRlQWdlbnQpKTsKKyAgICBhdXRvIGFsdGVybmF0ZUFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxB
bHRlcm5hdGVEaXNwYXRjaGFibGVBZ2VudDwke2RvbWFpbk5hbWV9QmFja2VuZERpc3BhdGNoZXIs
IEFsdGVybmF0ZSR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hlcj4+KEFTQ0lJTGl0ZXJhbCgi
JHtkb21haW5OYW1lfSIpLCAqX2NvbnRyb2xsZXIsIFdURk1vdmUoYWx0ZXJuYXRlRGlzcGF0Y2hl
cikpOworICAgIF9jb250cm9sbGVyLT5hcHBlbmRFeHRyYUFnZW50KFdURk1vdmUoYWx0ZXJuYXRl
QWdlbnQpKTsKIH0KIAogLSAoaWQ8JHtvYmpjUHJlZml4fSR7ZG9tYWluTmFtZX1Eb21haW5IYW5k
bGVyPikke3ZhcmlhYmxlTmFtZVByZWZpeH1IYW5kbGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0
aC1hc3luYy1hdHRyaWJ1dGUuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1hc3luYy1hdHRyaWJ1
dGUuanNvbi1yZXN1bHQKaW5kZXggNWM2YTFjZDYwMWY5ZmVjZjcwYzdlM2FiM2JjYTY5NTc4M2Rm
MDk1OC4uNjZkMGIwOGY1NjQ5NDAxZjM4MWNhYmJiNDg0NGFlMjhjY2U4YzA4YyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVk
L2NvbW1hbmRzLXdpdGgtYXN5bmMtYXR0cmlidXRlLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9jb21tYW5kcy13
aXRoLWFzeW5jLWF0dHJpYnV0ZS5qc29uLXJlc3VsdApAQCAtNDIsNyArNDIsNyBAQCBuYW1lc3Bh
Y2UgSW5zcGVjdG9yIHsKIAogY2xhc3MgQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXIgewogcHVi
bGljOgotICAgIHZvaWQgc2V0QmFja2VuZERpc3BhdGNoZXIoUmVmUHRyPEJhY2tlbmREaXNwYXRj
aGVyPiYmIGRpc3BhdGNoZXIpIHsgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IFdURjo6bW92ZShkaXNw
YXRjaGVyKTsgfQorICAgIHZvaWQgc2V0QmFja2VuZERpc3BhdGNoZXIoUmVmUHRyPEJhY2tlbmRE
aXNwYXRjaGVyPiYmIGRpc3BhdGNoZXIpIHsgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IFdURk1vdmUo
ZGlzcGF0Y2hlcik7IH0KICAgICBCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIo
KSBjb25zdCB7IHJldHVybiBtX2JhY2tlbmREaXNwYXRjaGVyLmdldCgpOyB9CiBwcml2YXRlOgog
ICAgIFJlZlB0cjxCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKQEAgLTI4
MCwxMyArMjgwLDEzIEBAIHZvaWQgRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6ZGlzcGF0Y2go
bG9uZyByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgbWV0aG9kLCBSCiAgICAgbWVzc2FnZS0+Z2V0
T2JqZWN0KEFTQ0lJTGl0ZXJhbCgicGFyYW1zIiksIHBhcmFtZXRlcnMpOwogCiAgICAgaWYgKG1l
dGhvZCA9PSAiZXhlY3V0ZVNRTFN5bmNPcHRpb25hbFJldHVyblZhbHVlcyIpCi0gICAgICAgIGV4
ZWN1dGVTUUxTeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXMocmVxdWVzdElkLCBXVEY6Om1vdmUocGFy
YW1ldGVycykpOworICAgICAgICBleGVjdXRlU1FMU3luY09wdGlvbmFsUmV0dXJuVmFsdWVzKHJl
cXVlc3RJZCwgV1RGTW92ZShwYXJhbWV0ZXJzKSk7CiAgICAgZWxzZSBpZiAobWV0aG9kID09ICJl
eGVjdXRlU1FMQXN5bmNPcHRpb25hbFJldHVyblZhbHVlcyIpCi0gICAgICAgIGV4ZWN1dGVTUUxB
c3luY09wdGlvbmFsUmV0dXJuVmFsdWVzKHJlcXVlc3RJZCwgV1RGOjptb3ZlKHBhcmFtZXRlcnMp
KTsKKyAgICAgICAgZXhlY3V0ZVNRTEFzeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXMocmVxdWVzdElk
LCBXVEZNb3ZlKHBhcmFtZXRlcnMpKTsKICAgICBlbHNlIGlmIChtZXRob2QgPT0gImV4ZWN1dGVT
UUxTeW5jIikKLSAgICAgICAgZXhlY3V0ZVNRTFN5bmMocmVxdWVzdElkLCBXVEY6Om1vdmUocGFy
YW1ldGVycykpOworICAgICAgICBleGVjdXRlU1FMU3luYyhyZXF1ZXN0SWQsIFdURk1vdmUocGFy
YW1ldGVycykpOwogICAgIGVsc2UgaWYgKG1ldGhvZCA9PSAiZXhlY3V0ZVNRTEFzeW5jIikKLSAg
ICAgICAgZXhlY3V0ZVNRTEFzeW5jKHJlcXVlc3RJZCwgV1RGOjptb3ZlKHBhcmFtZXRlcnMpKTsK
KyAgICAgICAgZXhlY3V0ZVNRTEFzeW5jKHJlcXVlc3RJZCwgV1RGTW92ZShwYXJhbWV0ZXJzKSk7
CiAgICAgZWxzZQogICAgICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5yZXBvcnRQcm90b2NvbEVy
cm9yKEJhY2tlbmREaXNwYXRjaGVyOjpNZXRob2ROb3RGb3VuZCwgbWFrZVN0cmluZygnXCcnLCAi
RGF0YWJhc2UiLCAnLicsIG1ldGhvZCwgIicgd2FzIG5vdCBmb3VuZCIpKTsKIH0KQEAgLTM0NCwx
MiArMzQ0LDEyIEBAIHZvaWQgRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6ZXhlY3V0ZVNRTFN5
bmNPcHRpb25hbFJldHVyblZhbHVlcyhsb25nIHJlcXVlc3RJCiAgICAgICAgICAgICByZXN1bHQt
PnNldFN0cmluZyhBU0NJSUxpdGVyYWwoInByaW50Q29sb3IiKSwgb3V0X3ByaW50Q29sb3IuZ2V0
VmFsdWUoKSk7CiAgICAgfQogICAgIGlmICghZXJyb3IubGVuZ3RoKCkpCi0gICAgICAgIG1fYmFj
a2VuZERpc3BhdGNoZXItPnNlbmRSZXNwb25zZShyZXF1ZXN0SWQsIFdURjo6bW92ZShyZXN1bHQp
KTsKKyAgICAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+c2VuZFJlc3BvbnNlKHJlcXVlc3RJZCwg
V1RGTW92ZShyZXN1bHQpKTsKICAgICBlbHNlCi0gICAgICAgIG1fYmFja2VuZERpc3BhdGNoZXIt
PnJlcG9ydFByb3RvY29sRXJyb3IoQmFja2VuZERpc3BhdGNoZXI6OlNlcnZlckVycm9yLCBXVEY6
Om1vdmUoZXJyb3IpKTsKKyAgICAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+cmVwb3J0UHJvdG9j
b2xFcnJvcihCYWNrZW5kRGlzcGF0Y2hlcjo6U2VydmVyRXJyb3IsIFdURk1vdmUoZXJyb3IpKTsK
IH0KIAotRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OkV4ZWN1dGVTUUxBc3luY09w
dGlvbmFsUmV0dXJuVmFsdWVzQ2FsbGJhY2s6OkV4ZWN1dGVTUUxBc3luY09wdGlvbmFsUmV0dXJu
VmFsdWVzQ2FsbGJhY2soUmVmPEJhY2tlbmREaXNwYXRjaGVyPiYmIGJhY2tlbmREaXNwYXRjaGVy
LCBpbnQgaWQpIDogQmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZShXVEY6Om1vdmUoYmFj
a2VuZERpc3BhdGNoZXIpLCBpZCkgeyB9CitEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxl
cjo6RXhlY3V0ZVNRTEFzeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXNDYWxsYmFjazo6RXhlY3V0ZVNR
TEFzeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXNDYWxsYmFjayhSZWY8QmFja2VuZERpc3BhdGNoZXI+
JiYgYmFja2VuZERpc3BhdGNoZXIsIGludCBpZCkgOiBCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJh
Y2tCYXNlKFdURk1vdmUoYmFja2VuZERpc3BhdGNoZXIpLCBpZCkgeyB9CiAKIHZvaWQgRGF0YWJh
c2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OkV4ZWN1dGVTUUxBc3luY09wdGlvbmFsUmV0dXJu
VmFsdWVzQ2FsbGJhY2s6OnNlbmRTdWNjZXNzKFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpB
cnJheTxTdHJpbmc+PiYmIGNvbHVtbk5hbWVzLCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRw
dXQ8U3RyaW5nPiogbm90ZXMsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxkb3VibGU+
KiB0aW1lc3RhbXAsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxJbnNwZWN0b3I6Oklu
c3BlY3Rvck9iamVjdD4qIHZhbHVlcywgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PElu
c3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWU+KiBwYXlsb2FkLCBJbnNwZWN0b3I6OlByb3RvY29sOjpP
cHRPdXRwdXQ8aW50PiogZGF0YWJhc2VJZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRh
dGFiYXNlOjpFcnJvcj4mJiBzcWxFcnJvciwgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0
PFN0cmluZz4qIHNjcmVlbkNvbG9yLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJh
c2U6OkNvbG9yTGlzdD4mJiBhbHRlcm5hdGVDb2xvcnMsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9w
dE91dHB1dDxTdHJpbmc+KiBwcmludENvbG9yKQogewpAQCAtMzc0LDcgKzM3NCw3IEBAIHZvaWQg
RGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OkV4ZWN1dGVTUUxBc3luY09wdGlvbmFs
UmV0dXJuVmFsdWVzQ2FsbGJhCiAgICAgICAgIGpzb25NZXNzYWdlLT5zZXRBcnJheShBU0NJSUxp
dGVyYWwoImFsdGVybmF0ZUNvbG9ycyIpLCBhbHRlcm5hdGVDb2xvcnMpOwogICAgIGlmIChwcmlu
dENvbG9yLmlzQXNzaWduZWQoKSkKICAgICAgICAganNvbk1lc3NhZ2UtPnNldFN0cmluZyhBU0NJ
SUxpdGVyYWwoInByaW50Q29sb3IiKSwgcHJpbnRDb2xvci5nZXRWYWx1ZSgpKTsKLSAgICBDYWxs
YmFja0Jhc2U6OnNlbmRTdWNjZXNzKFdURjo6bW92ZShqc29uTWVzc2FnZSkpOworICAgIENhbGxi
YWNrQmFzZTo6c2VuZFN1Y2Nlc3MoV1RGTW92ZShqc29uTWVzc2FnZSkpOwogfQogCiB2b2lkIERh
dGFiYXNlQmFja2VuZERpc3BhdGNoZXI6OmV4ZWN1dGVTUUxBc3luY09wdGlvbmFsUmV0dXJuVmFs
dWVzKGxvbmcgcmVxdWVzdElkLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYmIHBhcmFtZXRlcnMp
CkBAIC00NDgsMTIgKzQ0OCwxMiBAQCB2b2lkIERhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI6OmV4
ZWN1dGVTUUxTeW5jKGxvbmcgcmVxdWVzdElkLCBSZWZQdHI8SW5zcGVjdG9yTwogICAgICAgICBy
ZXN1bHQtPnNldFN0cmluZyhBU0NJSUxpdGVyYWwoInByaW50Q29sb3IiKSwgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6Z2V0RW51bUNvbnN0YW50VmFsdWUob3V0X3ByaW50Q29sb3IpKTsKICAgICB9CiAg
ICAgaWYgKCFlcnJvci5sZW5ndGgoKSkKLSAgICAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+c2Vu
ZFJlc3BvbnNlKHJlcXVlc3RJZCwgV1RGOjptb3ZlKHJlc3VsdCkpOworICAgICAgICBtX2JhY2tl
bmREaXNwYXRjaGVyLT5zZW5kUmVzcG9uc2UocmVxdWVzdElkLCBXVEZNb3ZlKHJlc3VsdCkpOwog
ICAgIGVsc2UKLSAgICAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+cmVwb3J0UHJvdG9jb2xFcnJv
cihCYWNrZW5kRGlzcGF0Y2hlcjo6U2VydmVyRXJyb3IsIFdURjo6bW92ZShlcnJvcikpOworICAg
ICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5yZXBvcnRQcm90b2NvbEVycm9yKEJhY2tlbmREaXNw
YXRjaGVyOjpTZXJ2ZXJFcnJvciwgV1RGTW92ZShlcnJvcikpOwogfQogCi1EYXRhYmFzZUJhY2tl
bmREaXNwYXRjaGVySGFuZGxlcjo6RXhlY3V0ZVNRTEFzeW5jQ2FsbGJhY2s6OkV4ZWN1dGVTUUxB
c3luY0NhbGxiYWNrKFJlZjxCYWNrZW5kRGlzcGF0Y2hlcj4mJiBiYWNrZW5kRGlzcGF0Y2hlciwg
aW50IGlkKSA6IEJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2UoV1RGOjptb3ZlKGJhY2tl
bmREaXNwYXRjaGVyKSwgaWQpIHsgfQorRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6
OkV4ZWN1dGVTUUxBc3luY0NhbGxiYWNrOjpFeGVjdXRlU1FMQXN5bmNDYWxsYmFjayhSZWY8QmFj
a2VuZERpc3BhdGNoZXI+JiYgYmFja2VuZERpc3BhdGNoZXIsIGludCBpZCkgOiBCYWNrZW5kRGlz
cGF0Y2hlcjo6Q2FsbGJhY2tCYXNlKFdURk1vdmUoYmFja2VuZERpc3BhdGNoZXIpLCBpZCkgeyB9
CiAKIHZvaWQgRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OkV4ZWN1dGVTUUxBc3lu
Y0NhbGxiYWNrOjpzZW5kU3VjY2VzcyhSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8
U3RyaW5nPj4mJiBjb2x1bW5OYW1lcywgY29uc3QgU3RyaW5nJiBub3RlcywgZG91YmxlIHRpbWVz
dGFtcCwgSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QgdmFsdWVzLCBJbnNwZWN0b3I6Okluc3Bl
Y3RvclZhbHVlIHBheWxvYWQsIGludCBkYXRhYmFzZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90
b2NvbDo6RGF0YWJhc2U6OkVycm9yPiYmIHNxbEVycm9yLCBjb25zdCBTdHJpbmcmIHNjcmVlbkNv
bG9yLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkNvbG9yTGlzdD4mJiBh
bHRlcm5hdGVDb2xvcnMsIGNvbnN0IFN0cmluZyYgcHJpbnRDb2xvcikKIHsKQEAgLTQ2OCw3ICs0
NjgsNyBAQCB2b2lkIERhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpFeGVjdXRlU1FM
QXN5bmNDYWxsYmFjazo6c2VuZFN1Y2Nlc3MoUmVmUAogICAgIGpzb25NZXNzYWdlLT5zZXRTdHJp
bmcoQVNDSUlMaXRlcmFsKCJzY3JlZW5Db2xvciIpLCBJbnNwZWN0b3I6OlByb3RvY29sOjpnZXRF
bnVtQ29uc3RhbnRWYWx1ZShzY3JlZW5Db2xvcikpOwogICAgIGpzb25NZXNzYWdlLT5zZXRBcnJh
eShBU0NJSUxpdGVyYWwoImFsdGVybmF0ZUNvbG9ycyIpLCBhbHRlcm5hdGVDb2xvcnMpOwogICAg
IGpzb25NZXNzYWdlLT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJwcmludENvbG9yIiksIEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OmdldEVudW1Db25zdGFudFZhbHVlKHByaW50Q29sb3IpKTsKLSAgICBD
YWxsYmFja0Jhc2U6OnNlbmRTdWNjZXNzKFdURjo6bW92ZShqc29uTWVzc2FnZSkpOworICAgIENh
bGxiYWNrQmFzZTo6c2VuZFN1Y2Nlc3MoV1RGTW92ZShqc29uTWVzc2FnZSkpOwogfQogCiB2b2lk
IERhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI6OmV4ZWN1dGVTUUxBc3luYyhsb25nIHJlcXVlc3RJ
ZCwgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mJiBwYXJhbWV0ZXJzKQpAQCAtNjg3LDcgKzY4Nyw3
IEBAIHB1YmxpYzoKICAgICAgICAgfQogCiAgICAgICAgIEJ1aWxkZXIoUmVmPC8qRXJyb3IqL0lu
c3BlY3Rvck9iamVjdD4mJiBvYmplY3QpCi0gICAgICAgICAgICA6IG1fcmVzdWx0KFdURjo6bW92
ZShvYmplY3QpKQorICAgICAgICAgICAgOiBtX3Jlc3VsdChXVEZNb3ZlKG9iamVjdCkpCiAgICAg
ICAgIHsKICAgICAgICAgICAgIENPTVBJTEVfQVNTRVJUKFNUQVRFID09IE5vRmllbGRzU2V0LCBi
dWlsZGVyX2NyZWF0ZWRfaW5fbm9uX2luaXRfc3RhdGUpOwogICAgICAgICB9CkBAIC03MTQsNyAr
NzE0LDcgQEAgcHVibGljOgogICAgICAgICAgICAgQ09NUElMRV9BU1NFUlQoc2l6ZW9mKEVycm9y
KSA9PSBzaXplb2YoSW5zcGVjdG9yT2JqZWN0KSwgY2Fubm90X2Nhc3QpOwogCiAgICAgICAgICAg
ICBSZWY8SW5zcGVjdG9yT2JqZWN0PiByZXN1bHQgPSBtX3Jlc3VsdC5yZWxlYXNlTm9uTnVsbCgp
OwotICAgICAgICAgICAgcmV0dXJuIFdURjo6bW92ZSgqcmVpbnRlcnByZXRfY2FzdDxSZWY8RXJy
b3I+Kj4oJnJlc3VsdCkpOworICAgICAgICAgICAgcmV0dXJuIFdURk1vdmUoKnJlaW50ZXJwcmV0
X2Nhc3Q8UmVmPEVycm9yPio+KCZyZXN1bHQpKTsKICAgICAgICAgfQogICAgIH07CiAKQEAgLTkz
Miw4ICs5MzIsOCBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogICAgIF9kYXRhYmFzZUhh
bmRsZXIgPSBbaGFuZGxlciByZXRhaW5dOwogCiAgICAgYXV0byBhbHRlcm5hdGVEaXNwYXRjaGVy
ID0gc3RkOjptYWtlX3VuaXF1ZTxPYmpDSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hl
cj4oaGFuZGxlcik7Ci0gICAgYXV0byBhbHRlcm5hdGVBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8
QWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQ8RGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlciwgQWx0
ZXJuYXRlRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcj4+KEFTQ0lJTGl0ZXJhbCgiRGF0YWJhc2Ui
KSwgKl9jb250cm9sbGVyLCBXVEY6Om1vdmUoYWx0ZXJuYXRlRGlzcGF0Y2hlcikpOwotICAgIF9j
b250cm9sbGVyLT5hcHBlbmRFeHRyYUFnZW50KFdURjo6bW92ZShhbHRlcm5hdGVBZ2VudCkpOwor
ICAgIGF1dG8gYWx0ZXJuYXRlQWdlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFsdGVybmF0ZURpc3Bh
dGNoYWJsZUFnZW50PERhdGFiYXNlQmFja2VuZERpc3BhdGNoZXIsIEFsdGVybmF0ZURhdGFiYXNl
QmFja2VuZERpc3BhdGNoZXI+PihBU0NJSUxpdGVyYWwoIkRhdGFiYXNlIiksICpfY29udHJvbGxl
ciwgV1RGTW92ZShhbHRlcm5hdGVEaXNwYXRjaGVyKSk7CisgICAgX2NvbnRyb2xsZXItPmFwcGVu
ZEV4dHJhQWdlbnQoV1RGTW92ZShhbHRlcm5hdGVBZ2VudCkpOwogfQogCiAtIChpZDxSV0lQcm90
b2NvbERhdGFiYXNlRG9tYWluSGFuZGxlcj4pZGF0YWJhc2VIYW5kbGVyCkBAIC0xMDYyLDcgKzEw
NjIsNyBAQCB2b2lkIE9iakNJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyOjpleGVj
dXRlU1FMU3luY09wdGlvbmFsUmV0dXJuVmFsdWVzKAogICAgICAgICAgICAgcmVzdWx0T2JqZWN0
LT5zZXRBcnJheShBU0NJSUxpdGVyYWwoImFsdGVybmF0ZUNvbG9ycyIpLCBpbnNwZWN0b3JTdHJp
bmdBcnJheSgqYWx0ZXJuYXRlQ29sb3JzKSk7CiAgICAgICAgIGlmIChwcmludENvbG9yKQogICAg
ICAgICAgICAgcmVzdWx0T2JqZWN0LT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJwcmludENvbG9y
IiksIHRvUHJvdG9jb2xTdHJpbmcoKnByaW50Q29sb3IpKTsKLSAgICAgICAgYmFja2VuZERpc3Bh
dGNoZXIoKS0+c2VuZFJlc3BvbnNlKHJlcXVlc3RJZCwgV1RGOjptb3ZlKHJlc3VsdE9iamVjdCkp
OworICAgICAgICBiYWNrZW5kRGlzcGF0Y2hlcigpLT5zZW5kUmVzcG9uc2UocmVxdWVzdElkLCBX
VEZNb3ZlKHJlc3VsdE9iamVjdCkpOwogICAgIH07CiAKICAgICBpbnQgb19pbl9kYXRhYmFzZUlk
ID0gaW5fZGF0YWJhc2VJZDsKQEAgLTExMDYsNyArMTEwNiw3IEBAIHZvaWQgT2JqQ0luc3BlY3Rv
ckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI6OmV4ZWN1dGVTUUxBc3luY09wdGlvbmFsUmV0dXJu
VmFsdWVzCiAgICAgICAgICAgICByZXN1bHRPYmplY3QtPnNldEFycmF5KEFTQ0lJTGl0ZXJhbCgi
YWx0ZXJuYXRlQ29sb3JzIiksIGluc3BlY3RvclN0cmluZ0FycmF5KCphbHRlcm5hdGVDb2xvcnMp
KTsKICAgICAgICAgaWYgKHByaW50Q29sb3IpCiAgICAgICAgICAgICByZXN1bHRPYmplY3QtPnNl
dFN0cmluZyhBU0NJSUxpdGVyYWwoInByaW50Q29sb3IiKSwgdG9Qcm90b2NvbFN0cmluZygqcHJp
bnRDb2xvcikpOwotICAgICAgICBiYWNrZW5kRGlzcGF0Y2hlcigpLT5zZW5kUmVzcG9uc2UocmVx
dWVzdElkLCBXVEY6Om1vdmUocmVzdWx0T2JqZWN0KSk7CisgICAgICAgIGJhY2tlbmREaXNwYXRj
aGVyKCktPnNlbmRSZXNwb25zZShyZXF1ZXN0SWQsIFdURk1vdmUocmVzdWx0T2JqZWN0KSk7CiAg
ICAgfTsKIAogICAgIGludCBvX2luX2RhdGFiYXNlSWQgPSBpbl9kYXRhYmFzZUlkOwpAQCAtMTE0
MCw3ICsxMTQwLDcgQEAgdm9pZCBPYmpDSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hl
cjo6ZXhlY3V0ZVNRTFN5bmMobG9uZyByZXF1ZXN0SWQsIGludAogICAgICAgICByZXN1bHRPYmpl
Y3QtPnNldEFycmF5KEFTQ0lJTGl0ZXJhbCgiYWx0ZXJuYXRlQ29sb3JzIiksIGluc3BlY3RvclN0
cmluZ0FycmF5KGFsdGVybmF0ZUNvbG9ycykpOwogICAgICAgICByZXN1bHRPYmplY3QtPnNldFN0
cmluZyhBU0NJSUxpdGVyYWwoInNjcmVlbkNvbG9yIiksIHRvUHJvdG9jb2xTdHJpbmcoc2NyZWVu
Q29sb3IpKTsKICAgICAgICAgcmVzdWx0T2JqZWN0LT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJw
cmludENvbG9yIiksIHRvUHJvdG9jb2xTdHJpbmcocHJpbnRDb2xvcikpOwotICAgICAgICBiYWNr
ZW5kRGlzcGF0Y2hlcigpLT5zZW5kUmVzcG9uc2UocmVxdWVzdElkLCBXVEY6Om1vdmUocmVzdWx0
T2JqZWN0KSk7CisgICAgICAgIGJhY2tlbmREaXNwYXRjaGVyKCktPnNlbmRSZXNwb25zZShyZXF1
ZXN0SWQsIFdURk1vdmUocmVzdWx0T2JqZWN0KSk7CiAgICAgfTsKIAogICAgIGludCBvX2luX2Rh
dGFiYXNlSWQgPSBpbl9kYXRhYmFzZUlkOwpAQCAtMTE3NCw3ICsxMTc0LDcgQEAgdm9pZCBPYmpD
SW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6ZXhlY3V0ZVNRTEFzeW5jKGxvbmcg
cmVxdWVzdElkLCBpbnQKICAgICAgICAgcmVzdWx0T2JqZWN0LT5zZXRTdHJpbmcoQVNDSUlMaXRl
cmFsKCJzY3JlZW5Db2xvciIpLCB0b1Byb3RvY29sU3RyaW5nKHNjcmVlbkNvbG9yKSk7CiAgICAg
ICAgIHJlc3VsdE9iamVjdC0+c2V0QXJyYXkoQVNDSUlMaXRlcmFsKCJhbHRlcm5hdGVDb2xvcnMi
KSwgaW5zcGVjdG9yU3RyaW5nQXJyYXkoYWx0ZXJuYXRlQ29sb3JzKSk7CiAgICAgICAgIHJlc3Vs
dE9iamVjdC0+c2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgicHJpbnRDb2xvciIpLCB0b1Byb3RvY29s
U3RyaW5nKHByaW50Q29sb3IpKTsKLSAgICAgICAgYmFja2VuZERpc3BhdGNoZXIoKS0+c2VuZFJl
c3BvbnNlKHJlcXVlc3RJZCwgV1RGOjptb3ZlKHJlc3VsdE9iamVjdCkpOworICAgICAgICBiYWNr
ZW5kRGlzcGF0Y2hlcigpLT5zZW5kUmVzcG9uc2UocmVxdWVzdElkLCBXVEZNb3ZlKHJlc3VsdE9i
amVjdCkpOwogICAgIH07CiAKICAgICBpbnQgb19pbl9kYXRhYmFzZUlkID0gaW5fZGF0YWJhc2VJ
ZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90
ZXN0cy9leHBlY3RlZC9jb21tYW5kcy13aXRoLW9wdGlvbmFsLWNhbGwtcmV0dXJuLXBhcmFtZXRl
cnMuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMv
dGVzdHMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1vcHRpb25hbC1jYWxsLXJldHVybi1wYXJhbWV0
ZXJzLmpzb24tcmVzdWx0CmluZGV4IGZiN2FiNzU4MWVjODkyZDEwMjdiMmMyZDQzZmZmNjFiYjM4
ZWNlZmYuLmU3ZDYzNzA2ZjY3YWUyNDZhMjc0NTdlMmU0MDA2OWVhODM5YWMyNzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3Rl
ZC9jb21tYW5kcy13aXRoLW9wdGlvbmFsLWNhbGwtcmV0dXJuLXBhcmFtZXRlcnMuanNvbi1yZXN1
bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4
cGVjdGVkL2NvbW1hbmRzLXdpdGgtb3B0aW9uYWwtY2FsbC1yZXR1cm4tcGFyYW1ldGVycy5qc29u
LXJlc3VsdApAQCAtNDIsNyArNDIsNyBAQCBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogY2xhc3Mg
QWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXIgewogcHVibGljOgotICAgIHZvaWQgc2V0QmFja2Vu
ZERpc3BhdGNoZXIoUmVmUHRyPEJhY2tlbmREaXNwYXRjaGVyPiYmIGRpc3BhdGNoZXIpIHsgbV9i
YWNrZW5kRGlzcGF0Y2hlciA9IFdURjo6bW92ZShkaXNwYXRjaGVyKTsgfQorICAgIHZvaWQgc2V0
QmFja2VuZERpc3BhdGNoZXIoUmVmUHRyPEJhY2tlbmREaXNwYXRjaGVyPiYmIGRpc3BhdGNoZXIp
IHsgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IFdURk1vdmUoZGlzcGF0Y2hlcik7IH0KICAgICBCYWNr
ZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIoKSBjb25zdCB7IHJldHVybiBtX2JhY2tl
bmREaXNwYXRjaGVyLmdldCgpOyB9CiBwcml2YXRlOgogICAgIFJlZlB0cjxCYWNrZW5kRGlzcGF0
Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKQEAgLTI2MSw5ICsyNjEsOSBAQCB2b2lkIERhdGFi
YXNlQmFja2VuZERpc3BhdGNoZXI6OmRpc3BhdGNoKGxvbmcgcmVxdWVzdElkLCBjb25zdCBTdHJp
bmcmIG1ldGhvZCwgUgogICAgIG1lc3NhZ2UtPmdldE9iamVjdChBU0NJSUxpdGVyYWwoInBhcmFt
cyIpLCBwYXJhbWV0ZXJzKTsKIAogICAgIGlmIChtZXRob2QgPT0gImV4ZWN1dGVBbGxPcHRpb25h
bFBhcmFtZXRlcnMiKQotICAgICAgICBleGVjdXRlQWxsT3B0aW9uYWxQYXJhbWV0ZXJzKHJlcXVl
c3RJZCwgV1RGOjptb3ZlKHBhcmFtZXRlcnMpKTsKKyAgICAgICAgZXhlY3V0ZUFsbE9wdGlvbmFs
UGFyYW1ldGVycyhyZXF1ZXN0SWQsIFdURk1vdmUocGFyYW1ldGVycykpOwogICAgIGVsc2UgaWYg
KG1ldGhvZCA9PSAiZXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzIikKLSAgICAgICAgZXhlY3V0
ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzKHJlcXVlc3RJZCwgV1RGOjptb3ZlKHBhcmFtZXRlcnMpKTsK
KyAgICAgICAgZXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzKHJlcXVlc3RJZCwgV1RGTW92ZShw
YXJhbWV0ZXJzKSk7CiAgICAgZWxzZQogICAgICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5yZXBv
cnRQcm90b2NvbEVycm9yKEJhY2tlbmREaXNwYXRjaGVyOjpNZXRob2ROb3RGb3VuZCwgbWFrZVN0
cmluZygnXCcnLCAiRGF0YWJhc2UiLCAnLicsIG1ldGhvZCwgIicgd2FzIG5vdCBmb3VuZCIpKTsK
IH0KQEAgLTMzOSw5ICszMzksOSBAQCB2b2lkIERhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI6OmV4
ZWN1dGVBbGxPcHRpb25hbFBhcmFtZXRlcnMobG9uZyByZXF1ZXN0SWQsIFJlZgogICAgICAgICAg
ICAgcmVzdWx0LT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJwcmludENvbG9yIiksIG91dF9wcmlu
dENvbG9yLmdldFZhbHVlKCkpOwogICAgIH0KICAgICBpZiAoIWVycm9yLmxlbmd0aCgpKQotICAg
ICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5zZW5kUmVzcG9uc2UocmVxdWVzdElkLCBXVEY6Om1v
dmUocmVzdWx0KSk7CisgICAgICAgIG1fYmFja2VuZERpc3BhdGNoZXItPnNlbmRSZXNwb25zZShy
ZXF1ZXN0SWQsIFdURk1vdmUocmVzdWx0KSk7CiAgICAgZWxzZQotICAgICAgICBtX2JhY2tlbmRE
aXNwYXRjaGVyLT5yZXBvcnRQcm90b2NvbEVycm9yKEJhY2tlbmREaXNwYXRjaGVyOjpTZXJ2ZXJF
cnJvciwgV1RGOjptb3ZlKGVycm9yKSk7CisgICAgICAgIG1fYmFja2VuZERpc3BhdGNoZXItPnJl
cG9ydFByb3RvY29sRXJyb3IoQmFja2VuZERpc3BhdGNoZXI6OlNlcnZlckVycm9yLCBXVEZNb3Zl
KGVycm9yKSk7CiB9CiAKIHZvaWQgRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6ZXhlY3V0ZU5v
T3B0aW9uYWxQYXJhbWV0ZXJzKGxvbmcgcmVxdWVzdElkLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0
PiYmIHBhcmFtZXRlcnMpCkBAIC0zOTUsOSArMzk1LDkgQEAgdm9pZCBEYXRhYmFzZUJhY2tlbmRE
aXNwYXRjaGVyOjpleGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnMobG9uZyByZXF1ZXN0SWQsIFJl
ZlAKICAgICAgICAgcmVzdWx0LT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJwcmludENvbG9yIiks
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OmdldEVudW1Db25zdGFudFZhbHVlKG91dF9wcmludENvbG9y
KSk7CiAgICAgfQogICAgIGlmICghZXJyb3IubGVuZ3RoKCkpCi0gICAgICAgIG1fYmFja2VuZERp
c3BhdGNoZXItPnNlbmRSZXNwb25zZShyZXF1ZXN0SWQsIFdURjo6bW92ZShyZXN1bHQpKTsKKyAg
ICAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+c2VuZFJlc3BvbnNlKHJlcXVlc3RJZCwgV1RGTW92
ZShyZXN1bHQpKTsKICAgICBlbHNlCi0gICAgICAgIG1fYmFja2VuZERpc3BhdGNoZXItPnJlcG9y
dFByb3RvY29sRXJyb3IoQmFja2VuZERpc3BhdGNoZXI6OlNlcnZlckVycm9yLCBXVEY6Om1vdmUo
ZXJyb3IpKTsKKyAgICAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+cmVwb3J0UHJvdG9jb2xFcnJv
cihCYWNrZW5kRGlzcGF0Y2hlcjo6U2VydmVyRXJyb3IsIFdURk1vdmUoZXJyb3IpKTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCkBAIC01ODgsNyArNTg4LDcgQEAgcHVibGljOgogICAg
ICAgICB9CiAKICAgICAgICAgQnVpbGRlcihSZWY8LypFcnJvciovSW5zcGVjdG9yT2JqZWN0PiYm
IG9iamVjdCkKLSAgICAgICAgICAgIDogbV9yZXN1bHQoV1RGOjptb3ZlKG9iamVjdCkpCisgICAg
ICAgICAgICA6IG1fcmVzdWx0KFdURk1vdmUob2JqZWN0KSkKICAgICAgICAgewogICAgICAgICAg
ICAgQ09NUElMRV9BU1NFUlQoU1RBVEUgPT0gTm9GaWVsZHNTZXQsIGJ1aWxkZXJfY3JlYXRlZF9p
bl9ub25faW5pdF9zdGF0ZSk7CiAgICAgICAgIH0KQEAgLTYxNSw3ICs2MTUsNyBAQCBwdWJsaWM6
CiAgICAgICAgICAgICBDT01QSUxFX0FTU0VSVChzaXplb2YoRXJyb3IpID09IHNpemVvZihJbnNw
ZWN0b3JPYmplY3QpLCBjYW5ub3RfY2FzdCk7CiAKICAgICAgICAgICAgIFJlZjxJbnNwZWN0b3JP
YmplY3Q+IHJlc3VsdCA9IG1fcmVzdWx0LnJlbGVhc2VOb25OdWxsKCk7Ci0gICAgICAgICAgICBy
ZXR1cm4gV1RGOjptb3ZlKCpyZWludGVycHJldF9jYXN0PFJlZjxFcnJvcj4qPigmcmVzdWx0KSk7
CisgICAgICAgICAgICByZXR1cm4gV1RGTW92ZSgqcmVpbnRlcnByZXRfY2FzdDxSZWY8RXJyb3I+
Kj4oJnJlc3VsdCkpOwogICAgICAgICB9CiAgICAgfTsKIApAQCAtODMxLDggKzgzMSw4IEBAIHVz
aW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAgICAgX2RhdGFiYXNlSGFuZGxlciA9IFtoYW5kbGVy
IHJldGFpbl07CiAKICAgICBhdXRvIGFsdGVybmF0ZURpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPE9iakNJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyPihoYW5kbGVyKTsKLSAg
ICBhdXRvIGFsdGVybmF0ZUFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBbHRlcm5hdGVEaXNwYXRj
aGFibGVBZ2VudDxEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyLCBBbHRlcm5hdGVEYXRhYmFzZUJh
Y2tlbmREaXNwYXRjaGVyPj4oQVNDSUlMaXRlcmFsKCJEYXRhYmFzZSIpLCAqX2NvbnRyb2xsZXIs
IFdURjo6bW92ZShhbHRlcm5hdGVEaXNwYXRjaGVyKSk7Ci0gICAgX2NvbnRyb2xsZXItPmFwcGVu
ZEV4dHJhQWdlbnQoV1RGOjptb3ZlKGFsdGVybmF0ZUFnZW50KSk7CisgICAgYXV0byBhbHRlcm5h
dGVBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8QWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQ8RGF0
YWJhc2VCYWNrZW5kRGlzcGF0Y2hlciwgQWx0ZXJuYXRlRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hl
cj4+KEFTQ0lJTGl0ZXJhbCgiRGF0YWJhc2UiKSwgKl9jb250cm9sbGVyLCBXVEZNb3ZlKGFsdGVy
bmF0ZURpc3BhdGNoZXIpKTsKKyAgICBfY29udHJvbGxlci0+YXBwZW5kRXh0cmFBZ2VudChXVEZN
b3ZlKGFsdGVybmF0ZUFnZW50KSk7CiB9CiAKIC0gKGlkPFJXSVByb3RvY29sRGF0YWJhc2VEb21h
aW5IYW5kbGVyPilkYXRhYmFzZUhhbmRsZXIKQEAgLTk2MSw3ICs5NjEsNyBAQCB2b2lkIE9iakNJ
bnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyOjpleGVjdXRlQWxsT3B0aW9uYWxQYXJh
bWV0ZXJzKGxvbmcgcgogICAgICAgICAgICAgcmVzdWx0T2JqZWN0LT5zZXRBcnJheShBU0NJSUxp
dGVyYWwoImFsdGVybmF0ZUNvbG9ycyIpLCBpbnNwZWN0b3JTdHJpbmdBcnJheSgqYWx0ZXJuYXRl
Q29sb3JzKSk7CiAgICAgICAgIGlmIChwcmludENvbG9yKQogICAgICAgICAgICAgcmVzdWx0T2Jq
ZWN0LT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJwcmludENvbG9yIiksIHRvUHJvdG9jb2xTdHJp
bmcoKnByaW50Q29sb3IpKTsKLSAgICAgICAgYmFja2VuZERpc3BhdGNoZXIoKS0+c2VuZFJlc3Bv
bnNlKHJlcXVlc3RJZCwgV1RGOjptb3ZlKHJlc3VsdE9iamVjdCkpOworICAgICAgICBiYWNrZW5k
RGlzcGF0Y2hlcigpLT5zZW5kUmVzcG9uc2UocmVxdWVzdElkLCBXVEZNb3ZlKHJlc3VsdE9iamVj
dCkpOwogICAgIH07CiAKICAgICBOU0FycmF5Lyo8TlNTdHJpbmc+Ki8gKm9faW5fY29sdW1uTmFt
ZXM7CkBAIC0xMDIzLDcgKzEwMjMsNyBAQCB2b2lkIE9iakNJbnNwZWN0b3JEYXRhYmFzZUJhY2tl
bmREaXNwYXRjaGVyOjpleGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnMobG9uZyByZQogICAgICAg
ICByZXN1bHRPYmplY3QtPnNldFN0cmluZyhBU0NJSUxpdGVyYWwoInNjcmVlbkNvbG9yIiksIHRv
UHJvdG9jb2xTdHJpbmcoc2NyZWVuQ29sb3IpKTsKICAgICAgICAgcmVzdWx0T2JqZWN0LT5zZXRB
cnJheShBU0NJSUxpdGVyYWwoImFsdGVybmF0ZUNvbG9ycyIpLCBpbnNwZWN0b3JTdHJpbmdBcnJh
eShhbHRlcm5hdGVDb2xvcnMpKTsKICAgICAgICAgcmVzdWx0T2JqZWN0LT5zZXRTdHJpbmcoQVND
SUlMaXRlcmFsKCJwcmludENvbG9yIiksIHRvUHJvdG9jb2xTdHJpbmcocHJpbnRDb2xvcikpOwot
ICAgICAgICBiYWNrZW5kRGlzcGF0Y2hlcigpLT5zZW5kUmVzcG9uc2UocmVxdWVzdElkLCBXVEY6
Om1vdmUocmVzdWx0T2JqZWN0KSk7CisgICAgICAgIGJhY2tlbmREaXNwYXRjaGVyKCktPnNlbmRS
ZXNwb25zZShyZXF1ZXN0SWQsIFdURk1vdmUocmVzdWx0T2JqZWN0KSk7CiAgICAgfTsKIAogICAg
IE5TQXJyYXkvKjxOU1N0cmluZz4qLyAqb19pbl9jb2x1bW5OYW1lcyA9IG9iamNTdHJpbmdBcnJh
eSgmaW5fY29sdW1uTmFtZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2RvbWFpbnMtd2l0aC12YXJ5aW5nLWNvbW1h
bmQtc2l6ZXMuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Nj
cmlwdHMvdGVzdHMvZXhwZWN0ZWQvZG9tYWlucy13aXRoLXZhcnlpbmctY29tbWFuZC1zaXplcy5q
c29uLXJlc3VsdAppbmRleCAzMDI0MzJjNWJhY2NjMTQxNGZjNWQ1YzE3YzA5OTY5OTBkNWY0OWJm
Li41NDBlMTUyOGQxMjMyZjgxYTRjZGZiZDJmODA2NWU1NTc1OTEzMmEwIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZG9t
YWlucy13aXRoLXZhcnlpbmctY29tbWFuZC1zaXplcy5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZG9tYWlucy13
aXRoLXZhcnlpbmctY29tbWFuZC1zaXplcy5qc29uLXJlc3VsdApAQCAtNDIsNyArNDIsNyBAQCBu
YW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogY2xhc3MgQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXIg
ewogcHVibGljOgotICAgIHZvaWQgc2V0QmFja2VuZERpc3BhdGNoZXIoUmVmUHRyPEJhY2tlbmRE
aXNwYXRjaGVyPiYmIGRpc3BhdGNoZXIpIHsgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IFdURjo6bW92
ZShkaXNwYXRjaGVyKTsgfQorICAgIHZvaWQgc2V0QmFja2VuZERpc3BhdGNoZXIoUmVmUHRyPEJh
Y2tlbmREaXNwYXRjaGVyPiYmIGRpc3BhdGNoZXIpIHsgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IFdU
Rk1vdmUoZGlzcGF0Y2hlcik7IH0KICAgICBCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3Bh
dGNoZXIoKSBjb25zdCB7IHJldHVybiBtX2JhY2tlbmREaXNwYXRjaGVyLmdldCgpOyB9CiBwcml2
YXRlOgogICAgIFJlZlB0cjxCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsK
QEAgLTMwMiw3ICszMDIsNyBAQCB2b2lkIE5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXI6OmRpc3Bh
dGNoKGxvbmcgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcmIG1ldGhvZCwgUgogICAgIG1lc3NhZ2Ut
PmdldE9iamVjdChBU0NJSUxpdGVyYWwoInBhcmFtcyIpLCBwYXJhbWV0ZXJzKTsKIAogICAgIGlm
IChtZXRob2QgPT0gImxvYWRSZXNvdXJjZTEiKQotICAgICAgICBsb2FkUmVzb3VyY2UxKHJlcXVl
c3RJZCwgV1RGOjptb3ZlKHBhcmFtZXRlcnMpKTsKKyAgICAgICAgbG9hZFJlc291cmNlMShyZXF1
ZXN0SWQsIFdURk1vdmUocGFyYW1ldGVycykpOwogICAgIGVsc2UKICAgICAgICAgbV9iYWNrZW5k
RGlzcGF0Y2hlci0+cmVwb3J0UHJvdG9jb2xFcnJvcihCYWNrZW5kRGlzcGF0Y2hlcjo6TWV0aG9k
Tm90Rm91bmQsIG1ha2VTdHJpbmcoJ1wnJywgIk5ldHdvcmsxIiwgJy4nLCBtZXRob2QsICInIHdh
cyBub3QgZm91bmQiKSk7CiB9CkBAIC0zMjEsOSArMzIxLDkgQEAgdm9pZCBOZXR3b3JrMUJhY2tl
bmREaXNwYXRjaGVyOjpsb2FkUmVzb3VyY2UxKGxvbmcgcmVxdWVzdElkLCBSZWZQdHI8SW5zcGVj
dG9yT2IKICAgICBtX2FnZW50LT5sb2FkUmVzb3VyY2UxKGVycm9yKTsKIAogICAgIGlmICghZXJy
b3IubGVuZ3RoKCkpCi0gICAgICAgIG1fYmFja2VuZERpc3BhdGNoZXItPnNlbmRSZXNwb25zZShy
ZXF1ZXN0SWQsIFdURjo6bW92ZShyZXN1bHQpKTsKKyAgICAgICAgbV9iYWNrZW5kRGlzcGF0Y2hl
ci0+c2VuZFJlc3BvbnNlKHJlcXVlc3RJZCwgV1RGTW92ZShyZXN1bHQpKTsKICAgICBlbHNlCi0g
ICAgICAgIG1fYmFja2VuZERpc3BhdGNoZXItPnJlcG9ydFByb3RvY29sRXJyb3IoQmFja2VuZERp
c3BhdGNoZXI6OlNlcnZlckVycm9yLCBXVEY6Om1vdmUoZXJyb3IpKTsKKyAgICAgICAgbV9iYWNr
ZW5kRGlzcGF0Y2hlci0+cmVwb3J0UHJvdG9jb2xFcnJvcihCYWNrZW5kRGlzcGF0Y2hlcjo6U2Vy
dmVyRXJyb3IsIFdURk1vdmUoZXJyb3IpKTsKIH0KIAogUmVmPE5ldHdvcmszQmFja2VuZERpc3Bh
dGNoZXI+IE5ldHdvcmszQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShCYWNrZW5kRGlzcGF0Y2hl
ciYgYmFja2VuZERpc3BhdGNoZXIsIE5ldHdvcmszQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyKiBh
Z2VudCkKQEAgLTM3NSw3ICszNzUsNyBAQCB2b2lkIE5ldHdvcmszQmFja2VuZERpc3BhdGNoZXI6
OmRpc3BhdGNoKGxvbmcgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcmIG1ldGhvZCwgUgogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgKCgqdGhpcykuKmZpbmRSZXN1bHQtPnZhbHVlKShyZXF1
ZXN0SWQsIFdURjo6bW92ZShwYXJhbWV0ZXJzKSk7CisgICAgKCgqdGhpcykuKmZpbmRSZXN1bHQt
PnZhbHVlKShyZXF1ZXN0SWQsIFdURk1vdmUocGFyYW1ldGVycykpOwogfQogCiB2b2lkIE5ldHdv
cmszQmFja2VuZERpc3BhdGNoZXI6OmxvYWRSZXNvdXJjZTEobG9uZyByZXF1ZXN0SWQsIFJlZlB0
cjxJbnNwZWN0b3JPYmplY3Q+JiYpCkBAIC0zOTIsOSArMzkyLDkgQEAgdm9pZCBOZXR3b3JrM0Jh
Y2tlbmREaXNwYXRjaGVyOjpsb2FkUmVzb3VyY2UxKGxvbmcgcmVxdWVzdElkLCBSZWZQdHI8SW5z
cGVjdG9yT2IKICAgICBtX2FnZW50LT5sb2FkUmVzb3VyY2UxKGVycm9yKTsKIAogICAgIGlmICgh
ZXJyb3IubGVuZ3RoKCkpCi0gICAgICAgIG1fYmFja2VuZERpc3BhdGNoZXItPnNlbmRSZXNwb25z
ZShyZXF1ZXN0SWQsIFdURjo6bW92ZShyZXN1bHQpKTsKKyAgICAgICAgbV9iYWNrZW5kRGlzcGF0
Y2hlci0+c2VuZFJlc3BvbnNlKHJlcXVlc3RJZCwgV1RGTW92ZShyZXN1bHQpKTsKICAgICBlbHNl
Ci0gICAgICAgIG1fYmFja2VuZERpc3BhdGNoZXItPnJlcG9ydFByb3RvY29sRXJyb3IoQmFja2Vu
ZERpc3BhdGNoZXI6OlNlcnZlckVycm9yLCBXVEY6Om1vdmUoZXJyb3IpKTsKKyAgICAgICAgbV9i
YWNrZW5kRGlzcGF0Y2hlci0+cmVwb3J0UHJvdG9jb2xFcnJvcihCYWNrZW5kRGlzcGF0Y2hlcjo6
U2VydmVyRXJyb3IsIFdURk1vdmUoZXJyb3IpKTsKIH0KIAogdm9pZCBOZXR3b3JrM0JhY2tlbmRE
aXNwYXRjaGVyOjpsb2FkUmVzb3VyY2UyKGxvbmcgcmVxdWVzdElkLCBSZWZQdHI8SW5zcGVjdG9y
T2JqZWN0PiYmKQpAQCAtNDExLDkgKzQxMSw5IEBAIHZvaWQgTmV0d29yazNCYWNrZW5kRGlzcGF0
Y2hlcjo6bG9hZFJlc291cmNlMihsb25nIHJlcXVlc3RJZCwgUmVmUHRyPEluc3BlY3Rvck9iCiAg
ICAgbV9hZ2VudC0+bG9hZFJlc291cmNlMihlcnJvcik7CiAKICAgICBpZiAoIWVycm9yLmxlbmd0
aCgpKQotICAgICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5zZW5kUmVzcG9uc2UocmVxdWVzdElk
LCBXVEY6Om1vdmUocmVzdWx0KSk7CisgICAgICAgIG1fYmFja2VuZERpc3BhdGNoZXItPnNlbmRS
ZXNwb25zZShyZXF1ZXN0SWQsIFdURk1vdmUocmVzdWx0KSk7CiAgICAgZWxzZQotICAgICAgICBt
X2JhY2tlbmREaXNwYXRjaGVyLT5yZXBvcnRQcm90b2NvbEVycm9yKEJhY2tlbmREaXNwYXRjaGVy
OjpTZXJ2ZXJFcnJvciwgV1RGOjptb3ZlKGVycm9yKSk7CisgICAgICAgIG1fYmFja2VuZERpc3Bh
dGNoZXItPnJlcG9ydFByb3RvY29sRXJyb3IoQmFja2VuZERpc3BhdGNoZXI6OlNlcnZlckVycm9y
LCBXVEZNb3ZlKGVycm9yKSk7CiB9CiAKIHZvaWQgTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlcjo6
bG9hZFJlc291cmNlMyhsb25nIHJlcXVlc3RJZCwgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mJikK
QEAgLTQzMCw5ICs0MzAsOSBAQCB2b2lkIE5ldHdvcmszQmFja2VuZERpc3BhdGNoZXI6OmxvYWRS
ZXNvdXJjZTMobG9uZyByZXF1ZXN0SWQsIFJlZlB0cjxJbnNwZWN0b3JPYgogICAgIG1fYWdlbnQt
PmxvYWRSZXNvdXJjZTMoZXJyb3IpOwogCiAgICAgaWYgKCFlcnJvci5sZW5ndGgoKSkKLSAgICAg
ICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+c2VuZFJlc3BvbnNlKHJlcXVlc3RJZCwgV1RGOjptb3Zl
KHJlc3VsdCkpOworICAgICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5zZW5kUmVzcG9uc2UocmVx
dWVzdElkLCBXVEZNb3ZlKHJlc3VsdCkpOwogICAgIGVsc2UKLSAgICAgICAgbV9iYWNrZW5kRGlz
cGF0Y2hlci0+cmVwb3J0UHJvdG9jb2xFcnJvcihCYWNrZW5kRGlzcGF0Y2hlcjo6U2VydmVyRXJy
b3IsIFdURjo6bW92ZShlcnJvcikpOworICAgICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5yZXBv
cnRQcm90b2NvbEVycm9yKEJhY2tlbmREaXNwYXRjaGVyOjpTZXJ2ZXJFcnJvciwgV1RGTW92ZShl
cnJvcikpOwogfQogCiB2b2lkIE5ldHdvcmszQmFja2VuZERpc3BhdGNoZXI6OmxvYWRSZXNvdXJj
ZTQobG9uZyByZXF1ZXN0SWQsIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiYpCkBAIC00NDksOSAr
NDQ5LDkgQEAgdm9pZCBOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVyOjpsb2FkUmVzb3VyY2U0KGxv
bmcgcmVxdWVzdElkLCBSZWZQdHI8SW5zcGVjdG9yT2IKICAgICBtX2FnZW50LT5sb2FkUmVzb3Vy
Y2U0KGVycm9yKTsKIAogICAgIGlmICghZXJyb3IubGVuZ3RoKCkpCi0gICAgICAgIG1fYmFja2Vu
ZERpc3BhdGNoZXItPnNlbmRSZXNwb25zZShyZXF1ZXN0SWQsIFdURjo6bW92ZShyZXN1bHQpKTsK
KyAgICAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+c2VuZFJlc3BvbnNlKHJlcXVlc3RJZCwgV1RG
TW92ZShyZXN1bHQpKTsKICAgICBlbHNlCi0gICAgICAgIG1fYmFja2VuZERpc3BhdGNoZXItPnJl
cG9ydFByb3RvY29sRXJyb3IoQmFja2VuZERpc3BhdGNoZXI6OlNlcnZlckVycm9yLCBXVEY6Om1v
dmUoZXJyb3IpKTsKKyAgICAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+cmVwb3J0UHJvdG9jb2xF
cnJvcihCYWNrZW5kRGlzcGF0Y2hlcjo6U2VydmVyRXJyb3IsIFdURk1vdmUoZXJyb3IpKTsKIH0K
IAogdm9pZCBOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVyOjpsb2FkUmVzb3VyY2U1KGxvbmcgcmVx
dWVzdElkLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYmKQpAQCAtNDY4LDkgKzQ2OCw5IEBAIHZv
aWQgTmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlcjo6bG9hZFJlc291cmNlNShsb25nIHJlcXVlc3RJ
ZCwgUmVmUHRyPEluc3BlY3Rvck9iCiAgICAgbV9hZ2VudC0+bG9hZFJlc291cmNlNShlcnJvcik7
CiAKICAgICBpZiAoIWVycm9yLmxlbmd0aCgpKQotICAgICAgICBtX2JhY2tlbmREaXNwYXRjaGVy
LT5zZW5kUmVzcG9uc2UocmVxdWVzdElkLCBXVEY6Om1vdmUocmVzdWx0KSk7CisgICAgICAgIG1f
YmFja2VuZERpc3BhdGNoZXItPnNlbmRSZXNwb25zZShyZXF1ZXN0SWQsIFdURk1vdmUocmVzdWx0
KSk7CiAgICAgZWxzZQotICAgICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5yZXBvcnRQcm90b2Nv
bEVycm9yKEJhY2tlbmREaXNwYXRjaGVyOjpTZXJ2ZXJFcnJvciwgV1RGOjptb3ZlKGVycm9yKSk7
CisgICAgICAgIG1fYmFja2VuZERpc3BhdGNoZXItPnJlcG9ydFByb3RvY29sRXJyb3IoQmFja2Vu
ZERpc3BhdGNoZXI6OlNlcnZlckVycm9yLCBXVEZNb3ZlKGVycm9yKSk7CiB9CiAKIHZvaWQgTmV0
d29yazNCYWNrZW5kRGlzcGF0Y2hlcjo6bG9hZFJlc291cmNlNihsb25nIHJlcXVlc3RJZCwgUmVm
UHRyPEluc3BlY3Rvck9iamVjdD4mJikKQEAgLTQ4Nyw5ICs0ODcsOSBAQCB2b2lkIE5ldHdvcmsz
QmFja2VuZERpc3BhdGNoZXI6OmxvYWRSZXNvdXJjZTYobG9uZyByZXF1ZXN0SWQsIFJlZlB0cjxJ
bnNwZWN0b3JPYgogICAgIG1fYWdlbnQtPmxvYWRSZXNvdXJjZTYoZXJyb3IpOwogCiAgICAgaWYg
KCFlcnJvci5sZW5ndGgoKSkKLSAgICAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+c2VuZFJlc3Bv
bnNlKHJlcXVlc3RJZCwgV1RGOjptb3ZlKHJlc3VsdCkpOworICAgICAgICBtX2JhY2tlbmREaXNw
YXRjaGVyLT5zZW5kUmVzcG9uc2UocmVxdWVzdElkLCBXVEZNb3ZlKHJlc3VsdCkpOwogICAgIGVs
c2UKLSAgICAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+cmVwb3J0UHJvdG9jb2xFcnJvcihCYWNr
ZW5kRGlzcGF0Y2hlcjo6U2VydmVyRXJyb3IsIFdURjo6bW92ZShlcnJvcikpOworICAgICAgICBt
X2JhY2tlbmREaXNwYXRjaGVyLT5yZXBvcnRQcm90b2NvbEVycm9yKEJhY2tlbmREaXNwYXRjaGVy
OjpTZXJ2ZXJFcnJvciwgV1RGTW92ZShlcnJvcikpOwogfQogCiB2b2lkIE5ldHdvcmszQmFja2Vu
ZERpc3BhdGNoZXI6OmxvYWRSZXNvdXJjZTcobG9uZyByZXF1ZXN0SWQsIFJlZlB0cjxJbnNwZWN0
b3JPYmplY3Q+JiYpCkBAIC01MDYsOSArNTA2LDkgQEAgdm9pZCBOZXR3b3JrM0JhY2tlbmREaXNw
YXRjaGVyOjpsb2FkUmVzb3VyY2U3KGxvbmcgcmVxdWVzdElkLCBSZWZQdHI8SW5zcGVjdG9yT2IK
ICAgICBtX2FnZW50LT5sb2FkUmVzb3VyY2U3KGVycm9yKTsKIAogICAgIGlmICghZXJyb3IubGVu
Z3RoKCkpCi0gICAgICAgIG1fYmFja2VuZERpc3BhdGNoZXItPnNlbmRSZXNwb25zZShyZXF1ZXN0
SWQsIFdURjo6bW92ZShyZXN1bHQpKTsKKyAgICAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+c2Vu
ZFJlc3BvbnNlKHJlcXVlc3RJZCwgV1RGTW92ZShyZXN1bHQpKTsKICAgICBlbHNlCi0gICAgICAg
IG1fYmFja2VuZERpc3BhdGNoZXItPnJlcG9ydFByb3RvY29sRXJyb3IoQmFja2VuZERpc3BhdGNo
ZXI6OlNlcnZlckVycm9yLCBXVEY6Om1vdmUoZXJyb3IpKTsKKyAgICAgICAgbV9iYWNrZW5kRGlz
cGF0Y2hlci0+cmVwb3J0UHJvdG9jb2xFcnJvcihCYWNrZW5kRGlzcGF0Y2hlcjo6U2VydmVyRXJy
b3IsIFdURk1vdmUoZXJyb3IpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCkBAIC04
NzIsOCArODcyLDggQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKICAgICBfbmV0d29yazFI
YW5kbGVyID0gW2hhbmRsZXIgcmV0YWluXTsKIAogICAgIGF1dG8gYWx0ZXJuYXRlRGlzcGF0Y2hl
ciA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqQ0luc3BlY3Rvck5ldHdvcmsxQmFja2VuZERpc3BhdGNo
ZXI+KGhhbmRsZXIpOwotICAgIGF1dG8gYWx0ZXJuYXRlQWdlbnQgPSBzdGQ6Om1ha2VfdW5pcXVl
PEFsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50PE5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXIsIEFs
dGVybmF0ZU5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXI+PihBU0NJSUxpdGVyYWwoIk5ldHdvcmsx
IiksICpfY29udHJvbGxlciwgV1RGOjptb3ZlKGFsdGVybmF0ZURpc3BhdGNoZXIpKTsKLSAgICBf
Y29udHJvbGxlci0+YXBwZW5kRXh0cmFBZ2VudChXVEY6Om1vdmUoYWx0ZXJuYXRlQWdlbnQpKTsK
KyAgICBhdXRvIGFsdGVybmF0ZUFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBbHRlcm5hdGVEaXNw
YXRjaGFibGVBZ2VudDxOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyLCBBbHRlcm5hdGVOZXR3b3Jr
MUJhY2tlbmREaXNwYXRjaGVyPj4oQVNDSUlMaXRlcmFsKCJOZXR3b3JrMSIpLCAqX2NvbnRyb2xs
ZXIsIFdURk1vdmUoYWx0ZXJuYXRlRGlzcGF0Y2hlcikpOworICAgIF9jb250cm9sbGVyLT5hcHBl
bmRFeHRyYUFnZW50KFdURk1vdmUoYWx0ZXJuYXRlQWdlbnQpKTsKIH0KIAogLSAoaWQ8UldJUHJv
dG9jb2xOZXR3b3JrMURvbWFpbkhhbmRsZXI+KW5ldHdvcmsxSGFuZGxlcgpAQCAtODkwLDggKzg5
MCw4IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAgICAgX25ldHdvcmszSGFuZGxlciA9
IFtoYW5kbGVyIHJldGFpbl07CiAKICAgICBhdXRvIGFsdGVybmF0ZURpc3BhdGNoZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPE9iakNJbnNwZWN0b3JOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVyPihoYW5k
bGVyKTsKLSAgICBhdXRvIGFsdGVybmF0ZUFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBbHRlcm5h
dGVEaXNwYXRjaGFibGVBZ2VudDxOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVyLCBBbHRlcm5hdGVO
ZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVyPj4oQVNDSUlMaXRlcmFsKCJOZXR3b3JrMyIpLCAqX2Nv
bnRyb2xsZXIsIFdURjo6bW92ZShhbHRlcm5hdGVEaXNwYXRjaGVyKSk7Ci0gICAgX2NvbnRyb2xs
ZXItPmFwcGVuZEV4dHJhQWdlbnQoV1RGOjptb3ZlKGFsdGVybmF0ZUFnZW50KSk7CisgICAgYXV0
byBhbHRlcm5hdGVBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8QWx0ZXJuYXRlRGlzcGF0Y2hhYmxl
QWdlbnQ8TmV0d29yazNCYWNrZW5kRGlzcGF0Y2hlciwgQWx0ZXJuYXRlTmV0d29yazNCYWNrZW5k
RGlzcGF0Y2hlcj4+KEFTQ0lJTGl0ZXJhbCgiTmV0d29yazMiKSwgKl9jb250cm9sbGVyLCBXVEZN
b3ZlKGFsdGVybmF0ZURpc3BhdGNoZXIpKTsKKyAgICBfY29udHJvbGxlci0+YXBwZW5kRXh0cmFB
Z2VudChXVEZNb3ZlKGFsdGVybmF0ZUFnZW50KSk7CiB9CiAKIC0gKGlkPFJXSVByb3RvY29sTmV0
d29yazNEb21haW5IYW5kbGVyPiluZXR3b3JrM0hhbmRsZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9lbnVtLXZhbHVl
cy5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90
ZXN0cy9leHBlY3RlZC9lbnVtLXZhbHVlcy5qc29uLXJlc3VsdAppbmRleCAxYWQ3ZTYxOGU2ODNj
NmU3YjgzZTU4NzBkYWJkYzBjNzk1MDNmMGFjLi5kOTczMGZjN2MzYjBmOGVmOTJjMTkwYWJmNWQy
OTJmMDQ2OTI4NWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZW51bS12YWx1ZXMuanNvbi1yZXN1bHQKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2VudW0t
dmFsdWVzLmpzb24tcmVzdWx0CkBAIC00Miw3ICs0Miw3IEBAIG5hbWVzcGFjZSBJbnNwZWN0b3Ig
ewogCiBjbGFzcyBBbHRlcm5hdGVCYWNrZW5kRGlzcGF0Y2hlciB7CiBwdWJsaWM6Ci0gICAgdm9p
ZCBzZXRCYWNrZW5kRGlzcGF0Y2hlcihSZWZQdHI8QmFja2VuZERpc3BhdGNoZXI+JiYgZGlzcGF0
Y2hlcikgeyBtX2JhY2tlbmREaXNwYXRjaGVyID0gV1RGOjptb3ZlKGRpc3BhdGNoZXIpOyB9Cisg
ICAgdm9pZCBzZXRCYWNrZW5kRGlzcGF0Y2hlcihSZWZQdHI8QmFja2VuZERpc3BhdGNoZXI+JiYg
ZGlzcGF0Y2hlcikgeyBtX2JhY2tlbmREaXNwYXRjaGVyID0gV1RGTW92ZShkaXNwYXRjaGVyKTsg
fQogICAgIEJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcigpIGNvbnN0IHsgcmV0
dXJuIG1fYmFja2VuZERpc3BhdGNoZXIuZ2V0KCk7IH0KIHByaXZhdGU6CiAgICAgUmVmUHRyPEJh
Y2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOwpAQCAtMjU5LDcgKzI1OSw3IEBA
IHZvaWQgQ29tbWFuZERvbWFpbkJhY2tlbmREaXNwYXRjaGVyOjpkaXNwYXRjaChsb25nIHJlcXVl
c3RJZCwgY29uc3QgU3RyaW5nJiBtZXRoCiAgICAgbWVzc2FnZS0+Z2V0T2JqZWN0KEFTQ0lJTGl0
ZXJhbCgicGFyYW1zIiksIHBhcmFtZXRlcnMpOwogCiAgICAgaWYgKG1ldGhvZCA9PSAiY29tbWFu
ZFdpdGhFbnVtUmV0dXJuVmFsdWUiKQotICAgICAgICBjb21tYW5kV2l0aEVudW1SZXR1cm5WYWx1
ZShyZXF1ZXN0SWQsIFdURjo6bW92ZShwYXJhbWV0ZXJzKSk7CisgICAgICAgIGNvbW1hbmRXaXRo
RW51bVJldHVyblZhbHVlKHJlcXVlc3RJZCwgV1RGTW92ZShwYXJhbWV0ZXJzKSk7CiAgICAgZWxz
ZQogICAgICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5yZXBvcnRQcm90b2NvbEVycm9yKEJhY2tl
bmREaXNwYXRjaGVyOjpNZXRob2ROb3RGb3VuZCwgbWFrZVN0cmluZygnXCcnLCAiQ29tbWFuZERv
bWFpbiIsICcuJywgbWV0aG9kLCAiJyB3YXMgbm90IGZvdW5kIikpOwogfQpAQCAtMjgyLDkgKzI4
Miw5IEBAIHZvaWQgQ29tbWFuZERvbWFpbkJhY2tlbmREaXNwYXRjaGVyOjpjb21tYW5kV2l0aEVu
dW1SZXR1cm5WYWx1ZShsb25nIHJlcXVlc3RJZCwKICAgICAgICAgcmVzdWx0LT5zZXRTdHJpbmco
QVNDSUlMaXRlcmFsKCJyZXR1cm5WYWx1ZSIpLCBJbnNwZWN0b3I6OlByb3RvY29sOjpnZXRFbnVt
Q29uc3RhbnRWYWx1ZShvdXRfcmV0dXJuVmFsdWUpKTsKIAogICAgIGlmICghZXJyb3IubGVuZ3Ro
KCkpCi0gICAgICAgIG1fYmFja2VuZERpc3BhdGNoZXItPnNlbmRSZXNwb25zZShyZXF1ZXN0SWQs
IFdURjo6bW92ZShyZXN1bHQpKTsKKyAgICAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci0+c2VuZFJl
c3BvbnNlKHJlcXVlc3RJZCwgV1RGTW92ZShyZXN1bHQpKTsKICAgICBlbHNlCi0gICAgICAgIG1f
YmFja2VuZERpc3BhdGNoZXItPnJlcG9ydFByb3RvY29sRXJyb3IoQmFja2VuZERpc3BhdGNoZXI6
OlNlcnZlckVycm9yLCBXVEY6Om1vdmUoZXJyb3IpKTsKKyAgICAgICAgbV9iYWNrZW5kRGlzcGF0
Y2hlci0+cmVwb3J0UHJvdG9jb2xFcnJvcihCYWNrZW5kRGlzcGF0Y2hlcjo6U2VydmVyRXJyb3Is
IFdURk1vdmUoZXJyb3IpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCkBAIC0zOTcs
NyArMzk3LDcgQEAgdm9pZCBFdmVudERvbWFpbkZyb250ZW5kRGlzcGF0Y2hlcjo6ZXZlbnRXaXRo
RW51bVBhcmFtZXRlcihQYXJhbWV0ZXIgcGFyYW1ldGVyKQogICAgIGpzb25NZXNzYWdlLT5zZXRT
dHJpbmcoQVNDSUlMaXRlcmFsKCJtZXRob2QiKSwgQVNDSUlMaXRlcmFsKCJFdmVudERvbWFpbi5l
dmVudFdpdGhFbnVtUGFyYW1ldGVyIikpOwogICAgIFJlZjxJbnNwZWN0b3JPYmplY3Q+IHBhcmFt
c09iamVjdCA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7CiAgICAgcGFyYW1zT2JqZWN0LT5z
ZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJwYXJhbWV0ZXIiKSwgSW5zcGVjdG9yOjpQcm90b2NvbDo6
Z2V0RW51bUNvbnN0YW50VmFsdWUocGFyYW1ldGVyKSk7Ci0gICAganNvbk1lc3NhZ2UtPnNldE9i
amVjdChBU0NJSUxpdGVyYWwoInBhcmFtcyIpLCBXVEY6Om1vdmUocGFyYW1zT2JqZWN0KSk7Cisg
ICAganNvbk1lc3NhZ2UtPnNldE9iamVjdChBU0NJSUxpdGVyYWwoInBhcmFtcyIpLCBXVEZNb3Zl
KHBhcmFtc09iamVjdCkpOwogCiAgICAgbV9mcm9udGVuZFJvdXRlci5zZW5kRXZlbnQoanNvbk1l
c3NhZ2UtPnRvSlNPTlN0cmluZygpKTsKIH0KQEAgLTY3OSw4ICs2NzksOCBAQCB1c2luZyBuYW1l
c3BhY2UgSW5zcGVjdG9yOwogICAgIF9jb21tYW5kRG9tYWluSGFuZGxlciA9IFtoYW5kbGVyIHJl
dGFpbl07CiAKICAgICBhdXRvIGFsdGVybmF0ZURpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PE9iakNJbnNwZWN0b3JDb21tYW5kRG9tYWluQmFja2VuZERpc3BhdGNoZXI+KGhhbmRsZXIpOwot
ICAgIGF1dG8gYWx0ZXJuYXRlQWdlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFsdGVybmF0ZURpc3Bh
dGNoYWJsZUFnZW50PENvbW1hbmREb21haW5CYWNrZW5kRGlzcGF0Y2hlciwgQWx0ZXJuYXRlQ29t
bWFuZERvbWFpbkJhY2tlbmREaXNwYXRjaGVyPj4oQVNDSUlMaXRlcmFsKCJDb21tYW5kRG9tYWlu
IiksICpfY29udHJvbGxlciwgV1RGOjptb3ZlKGFsdGVybmF0ZURpc3BhdGNoZXIpKTsKLSAgICBf
Y29udHJvbGxlci0+YXBwZW5kRXh0cmFBZ2VudChXVEY6Om1vdmUoYWx0ZXJuYXRlQWdlbnQpKTsK
KyAgICBhdXRvIGFsdGVybmF0ZUFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBbHRlcm5hdGVEaXNw
YXRjaGFibGVBZ2VudDxDb21tYW5kRG9tYWluQmFja2VuZERpc3BhdGNoZXIsIEFsdGVybmF0ZUNv
bW1hbmREb21haW5CYWNrZW5kRGlzcGF0Y2hlcj4+KEFTQ0lJTGl0ZXJhbCgiQ29tbWFuZERvbWFp
biIpLCAqX2NvbnRyb2xsZXIsIFdURk1vdmUoYWx0ZXJuYXRlRGlzcGF0Y2hlcikpOworICAgIF9j
b250cm9sbGVyLT5hcHBlbmRFeHRyYUFnZW50KFdURk1vdmUoYWx0ZXJuYXRlQWdlbnQpKTsKIH0K
IAogLSAoaWQ8UldJUHJvdG9jb2xDb21tYW5kRG9tYWluRG9tYWluSGFuZGxlcj4pY29tbWFuZERv
bWFpbkhhbmRsZXIKQEAgLTc5NCw3ICs3OTQsNyBAQCB2b2lkIE9iakNJbnNwZWN0b3JDb21tYW5k
RG9tYWluQmFja2VuZERpc3BhdGNoZXI6OmNvbW1hbmRXaXRoRW51bVJldHVyblZhbHVlKGxvbgog
ICAgIGlkIHN1Y2Nlc3NDYWxsYmFjayA9IF4oUldJUHJvdG9jb2xDb21tYW5kRG9tYWluQ29tbWFu
ZFdpdGhFbnVtUmV0dXJuVmFsdWVSZXR1cm5WYWx1ZSByZXR1cm5WYWx1ZSkgewogICAgICAgICBS
ZWY8SW5zcGVjdG9yT2JqZWN0PiByZXN1bHRPYmplY3QgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0
ZSgpOwogICAgICAgICByZXN1bHRPYmplY3QtPnNldFN0cmluZyhBU0NJSUxpdGVyYWwoInJldHVy
blZhbHVlIiksIHRvUHJvdG9jb2xTdHJpbmcocmV0dXJuVmFsdWUpKTsKLSAgICAgICAgYmFja2Vu
ZERpc3BhdGNoZXIoKS0+c2VuZFJlc3BvbnNlKHJlcXVlc3RJZCwgV1RGOjptb3ZlKHJlc3VsdE9i
amVjdCkpOworICAgICAgICBiYWNrZW5kRGlzcGF0Y2hlcigpLT5zZW5kUmVzcG9uc2UocmVxdWVz
dElkLCBXVEZNb3ZlKHJlc3VsdE9iamVjdCkpOwogICAgIH07CiAKICAgICBbbV9kZWxlZ2F0ZSBj
b21tYW5kV2l0aEVudW1SZXR1cm5WYWx1ZVdpdGhFcnJvckNhbGxiYWNrOmVycm9yQ2FsbGJhY2sg
c3VjY2Vzc0NhbGxiYWNrOnN1Y2Nlc3NDYWxsYmFja107CkBAIC0xMDAxLDcgKzEwMDEsNyBAQCB1
c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogICAgIGpzb25NZXNzYWdlLT5zZXRTdHJpbmcoQVND
SUlMaXRlcmFsKCJtZXRob2QiKSwgQVNDSUlMaXRlcmFsKCJFdmVudERvbWFpbi5ldmVudFdpdGhF
bnVtUGFyYW1ldGVyIikpOwogICAgIFJlZjxJbnNwZWN0b3JPYmplY3Q+IHBhcmFtc09iamVjdCA9
IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7CiAgICAgcGFyYW1zT2JqZWN0LT5zZXRTdHJpbmco
QVNDSUlMaXRlcmFsKCJwYXJhbWV0ZXIiKSwgdG9Qcm90b2NvbFN0cmluZyhwYXJhbWV0ZXIpKTsK
LSAgICBqc29uTWVzc2FnZS0+c2V0T2JqZWN0KEFTQ0lJTGl0ZXJhbCgicGFyYW1zIiksIFdURjo6
bW92ZShwYXJhbXNPYmplY3QpKTsKKyAgICBqc29uTWVzc2FnZS0+c2V0T2JqZWN0KEFTQ0lJTGl0
ZXJhbCgicGFyYW1zIiksIFdURk1vdmUocGFyYW1zT2JqZWN0KSk7CiAgICAgcm91dGVyLnNlbmRF
dmVudChqc29uTWVzc2FnZS0+dG9KU09OU3RyaW5nKCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZXZlbnRz
LXdpdGgtb3B0aW9uYWwtcGFyYW1ldGVycy5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9ldmVudHMtd2l0aC1vcHRpb25h
bC1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0CmluZGV4IGZjN2VjZWFmNWY2M2VkNTU3NDgzOGZmYmMx
YzQxYjZmZWYzNjdmZDYuLmMxNzg4Nzg3YTQ2MjJjODQwMGE2YTE4MWFkYzYzNzVlOTY2ZDk0MmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0
cy9leHBlY3RlZC9ldmVudHMtd2l0aC1vcHRpb25hbC1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0Cisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3Rl
ZC9ldmVudHMtd2l0aC1vcHRpb25hbC1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0CkBAIC00Miw3ICs0
Miw3IEBAIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCiBjbGFzcyBBbHRlcm5hdGVCYWNrZW5kRGlz
cGF0Y2hlciB7CiBwdWJsaWM6Ci0gICAgdm9pZCBzZXRCYWNrZW5kRGlzcGF0Y2hlcihSZWZQdHI8
QmFja2VuZERpc3BhdGNoZXI+JiYgZGlzcGF0Y2hlcikgeyBtX2JhY2tlbmREaXNwYXRjaGVyID0g
V1RGOjptb3ZlKGRpc3BhdGNoZXIpOyB9CisgICAgdm9pZCBzZXRCYWNrZW5kRGlzcGF0Y2hlcihS
ZWZQdHI8QmFja2VuZERpc3BhdGNoZXI+JiYgZGlzcGF0Y2hlcikgeyBtX2JhY2tlbmREaXNwYXRj
aGVyID0gV1RGTW92ZShkaXNwYXRjaGVyKTsgfQogICAgIEJhY2tlbmREaXNwYXRjaGVyKiBiYWNr
ZW5kRGlzcGF0Y2hlcigpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2VuZERpc3BhdGNoZXIuZ2V0KCk7
IH0KIHByaXZhdGU6CiAgICAgUmVmUHRyPEJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNw
YXRjaGVyOwpAQCAtMzE0LDcgKzMxNCw3IEBAIHZvaWQgRGF0YWJhc2VGcm9udGVuZERpc3BhdGNo
ZXI6OmRpZEV4ZWN1dGVPcHRpb25hbFBhcmFtZXRlcnMoUmVmUHRyPEluc3BlY3Rvcjo6CiAgICAg
ICAgIHBhcmFtc09iamVjdC0+c2V0QXJyYXkoQVNDSUlMaXRlcmFsKCJhbHRlcm5hdGVDb2xvcnMi
KSwgYWx0ZXJuYXRlQ29sb3JzKTsKICAgICBpZiAocHJpbnRDb2xvcikKICAgICAgICAgcGFyYW1z
T2JqZWN0LT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJwcmludENvbG9yIiksICpwcmludENvbG9y
KTsKLSAgICBqc29uTWVzc2FnZS0+c2V0T2JqZWN0KEFTQ0lJTGl0ZXJhbCgicGFyYW1zIiksIFdU
Rjo6bW92ZShwYXJhbXNPYmplY3QpKTsKKyAgICBqc29uTWVzc2FnZS0+c2V0T2JqZWN0KEFTQ0lJ
TGl0ZXJhbCgicGFyYW1zIiksIFdURk1vdmUocGFyYW1zT2JqZWN0KSk7CiAKICAgICBtX2Zyb250
ZW5kUm91dGVyLnNlbmRFdmVudChqc29uTWVzc2FnZS0+dG9KU09OU3RyaW5nKCkpOwogfQpAQCAt
MzMzLDcgKzMzMyw3IEBAIHZvaWQgRGF0YWJhc2VGcm9udGVuZERpc3BhdGNoZXI6OmRpZEV4ZWN1
dGVOb09wdGlvbmFsUGFyYW1ldGVycyhSZWZQdHI8SW5zcGVjdG9yCiAgICAgcGFyYW1zT2JqZWN0
LT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJzY3JlZW5Db2xvciIpLCBzY3JlZW5Db2xvcik7CiAg
ICAgcGFyYW1zT2JqZWN0LT5zZXRBcnJheShBU0NJSUxpdGVyYWwoImFsdGVybmF0ZUNvbG9ycyIp
LCBhbHRlcm5hdGVDb2xvcnMpOwogICAgIHBhcmFtc09iamVjdC0+c2V0U3RyaW5nKEFTQ0lJTGl0
ZXJhbCgicHJpbnRDb2xvciIpLCBwcmludENvbG9yKTsKLSAgICBqc29uTWVzc2FnZS0+c2V0T2Jq
ZWN0KEFTQ0lJTGl0ZXJhbCgicGFyYW1zIiksIFdURjo6bW92ZShwYXJhbXNPYmplY3QpKTsKKyAg
ICBqc29uTWVzc2FnZS0+c2V0T2JqZWN0KEFTQ0lJTGl0ZXJhbCgicGFyYW1zIiksIFdURk1vdmUo
cGFyYW1zT2JqZWN0KSk7CiAKICAgICBtX2Zyb250ZW5kUm91dGVyLnNlbmRFdmVudChqc29uTWVz
c2FnZS0+dG9KU09OU3RyaW5nKCkpOwogfQpAQCAtNDMwLDcgKzQzMCw3IEBAIHB1YmxpYzoKICAg
ICAgICAgfQogCiAgICAgICAgIEJ1aWxkZXIoUmVmPC8qRXJyb3IqL0luc3BlY3Rvck9iamVjdD4m
JiBvYmplY3QpCi0gICAgICAgICAgICA6IG1fcmVzdWx0KFdURjo6bW92ZShvYmplY3QpKQorICAg
ICAgICAgICAgOiBtX3Jlc3VsdChXVEZNb3ZlKG9iamVjdCkpCiAgICAgICAgIHsKICAgICAgICAg
ICAgIENPTVBJTEVfQVNTRVJUKFNUQVRFID09IE5vRmllbGRzU2V0LCBidWlsZGVyX2NyZWF0ZWRf
aW5fbm9uX2luaXRfc3RhdGUpOwogICAgICAgICB9CkBAIC00NTcsNyArNDU3LDcgQEAgcHVibGlj
OgogICAgICAgICAgICAgQ09NUElMRV9BU1NFUlQoc2l6ZW9mKEVycm9yKSA9PSBzaXplb2YoSW5z
cGVjdG9yT2JqZWN0KSwgY2Fubm90X2Nhc3QpOwogCiAgICAgICAgICAgICBSZWY8SW5zcGVjdG9y
T2JqZWN0PiByZXN1bHQgPSBtX3Jlc3VsdC5yZWxlYXNlTm9uTnVsbCgpOwotICAgICAgICAgICAg
cmV0dXJuIFdURjo6bW92ZSgqcmVpbnRlcnByZXRfY2FzdDxSZWY8RXJyb3I+Kj4oJnJlc3VsdCkp
OworICAgICAgICAgICAgcmV0dXJuIFdURk1vdmUoKnJlaW50ZXJwcmV0X2Nhc3Q8UmVmPEVycm9y
Pio+KCZyZXN1bHQpKTsKICAgICAgICAgfQogICAgIH07CiAKQEAgLTg4MSw3ICs4ODEsNyBAQCB1
c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogICAgICAgICBwYXJhbXNPYmplY3QtPnNldEFycmF5
KEFTQ0lJTGl0ZXJhbCgiYWx0ZXJuYXRlQ29sb3JzIiksIGluc3BlY3RvclN0cmluZ0FycmF5KCgq
YWx0ZXJuYXRlQ29sb3JzKSkpOwogICAgIGlmIChwcmludENvbG9yKQogICAgICAgICBwYXJhbXNP
YmplY3QtPnNldFN0cmluZyhBU0NJSUxpdGVyYWwoInByaW50Q29sb3IiKSwgKCpwcmludENvbG9y
KSk7Ci0gICAganNvbk1lc3NhZ2UtPnNldE9iamVjdChBU0NJSUxpdGVyYWwoInBhcmFtcyIpLCBX
VEY6Om1vdmUocGFyYW1zT2JqZWN0KSk7CisgICAganNvbk1lc3NhZ2UtPnNldE9iamVjdChBU0NJ
SUxpdGVyYWwoInBhcmFtcyIpLCBXVEZNb3ZlKHBhcmFtc09iamVjdCkpOwogICAgIHJvdXRlci5z
ZW5kRXZlbnQoanNvbk1lc3NhZ2UtPnRvSlNPTlN0cmluZygpKTsKIH0KIApAQCAtOTEwLDcgKzkx
MCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAgICAgcGFyYW1zT2JqZWN0LT5zZXRT
dHJpbmcoQVNDSUlMaXRlcmFsKCJzY3JlZW5Db2xvciIpLCBzY3JlZW5Db2xvcik7CiAgICAgcGFy
YW1zT2JqZWN0LT5zZXRBcnJheShBU0NJSUxpdGVyYWwoImFsdGVybmF0ZUNvbG9ycyIpLCBpbnNw
ZWN0b3JTdHJpbmdBcnJheShhbHRlcm5hdGVDb2xvcnMpKTsKICAgICBwYXJhbXNPYmplY3QtPnNl
dFN0cmluZyhBU0NJSUxpdGVyYWwoInByaW50Q29sb3IiKSwgcHJpbnRDb2xvcik7Ci0gICAganNv
bk1lc3NhZ2UtPnNldE9iamVjdChBU0NJSUxpdGVyYWwoInBhcmFtcyIpLCBXVEY6Om1vdmUocGFy
YW1zT2JqZWN0KSk7CisgICAganNvbk1lc3NhZ2UtPnNldE9iamVjdChBU0NJSUxpdGVyYWwoInBh
cmFtcyIpLCBXVEZNb3ZlKHBhcmFtc09iamVjdCkpOwogICAgIHJvdXRlci5zZW5kRXZlbnQoanNv
bk1lc3NhZ2UtPnRvSlNPTlN0cmluZygpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2dlbmVyYXRlLWRvbWFp
bnMtd2l0aC1mZWF0dXJlLWd1YXJkcy5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9nZW5lcmF0ZS1kb21haW5zLXdpdGgt
ZmVhdHVyZS1ndWFyZHMuanNvbi1yZXN1bHQKaW5kZXggMTZmYTkxY2E4ZDVmMWI4ZWU0MjUwNTZh
NTg1ZGQyN2YyMWI5NDNkMC4uODllMzIyNGE1MDM1NDliZGIzZTc3ODIwMWJiMzM3NjQ5NDI1NzBm
ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rl
c3RzL2V4cGVjdGVkL2dlbmVyYXRlLWRvbWFpbnMtd2l0aC1mZWF0dXJlLWd1YXJkcy5qc29uLXJl
c3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMv
ZXhwZWN0ZWQvZ2VuZXJhdGUtZG9tYWlucy13aXRoLWZlYXR1cmUtZ3VhcmRzLmpzb24tcmVzdWx0
CkBAIC00Miw3ICs0Miw3IEBAIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCiBjbGFzcyBBbHRlcm5h
dGVCYWNrZW5kRGlzcGF0Y2hlciB7CiBwdWJsaWM6Ci0gICAgdm9pZCBzZXRCYWNrZW5kRGlzcGF0
Y2hlcihSZWZQdHI8QmFja2VuZERpc3BhdGNoZXI+JiYgZGlzcGF0Y2hlcikgeyBtX2JhY2tlbmRE
aXNwYXRjaGVyID0gV1RGOjptb3ZlKGRpc3BhdGNoZXIpOyB9CisgICAgdm9pZCBzZXRCYWNrZW5k
RGlzcGF0Y2hlcihSZWZQdHI8QmFja2VuZERpc3BhdGNoZXI+JiYgZGlzcGF0Y2hlcikgeyBtX2Jh
Y2tlbmREaXNwYXRjaGVyID0gV1RGTW92ZShkaXNwYXRjaGVyKTsgfQogICAgIEJhY2tlbmREaXNw
YXRjaGVyKiBiYWNrZW5kRGlzcGF0Y2hlcigpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2VuZERpc3Bh
dGNoZXIuZ2V0KCk7IH0KIHByaXZhdGU6CiAgICAgUmVmUHRyPEJhY2tlbmREaXNwYXRjaGVyPiBt
X2JhY2tlbmREaXNwYXRjaGVyOwpAQCAtMjU5LDcgKzI1OSw3IEBAIHZvaWQgTmV0d29yazFCYWNr
ZW5kRGlzcGF0Y2hlcjo6ZGlzcGF0Y2gobG9uZyByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgbWV0
aG9kLCBSCiAgICAgbWVzc2FnZS0+Z2V0T2JqZWN0KEFTQ0lJTGl0ZXJhbCgicGFyYW1zIiksIHBh
cmFtZXRlcnMpOwogCiAgICAgaWYgKG1ldGhvZCA9PSAibG9hZFJlc291cmNlIikKLSAgICAgICAg
bG9hZFJlc291cmNlKHJlcXVlc3RJZCwgV1RGOjptb3ZlKHBhcmFtZXRlcnMpKTsKKyAgICAgICAg
bG9hZFJlc291cmNlKHJlcXVlc3RJZCwgV1RGTW92ZShwYXJhbWV0ZXJzKSk7CiAgICAgZWxzZQog
ICAgICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5yZXBvcnRQcm90b2NvbEVycm9yKEJhY2tlbmRE
aXNwYXRjaGVyOjpNZXRob2ROb3RGb3VuZCwgbWFrZVN0cmluZygnXCcnLCAiTmV0d29yazEiLCAn
LicsIG1ldGhvZCwgIicgd2FzIG5vdCBmb3VuZCIpKTsKIH0KQEAgLTI3OCw5ICsyNzgsOSBAQCB2
b2lkIE5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXI6OmxvYWRSZXNvdXJjZShsb25nIHJlcXVlc3RJ
ZCwgUmVmUHRyPEluc3BlY3Rvck9iagogICAgIG1fYWdlbnQtPmxvYWRSZXNvdXJjZShlcnJvcik7
CiAKICAgICBpZiAoIWVycm9yLmxlbmd0aCgpKQotICAgICAgICBtX2JhY2tlbmREaXNwYXRjaGVy
LT5zZW5kUmVzcG9uc2UocmVxdWVzdElkLCBXVEY6Om1vdmUocmVzdWx0KSk7CisgICAgICAgIG1f
YmFja2VuZERpc3BhdGNoZXItPnNlbmRSZXNwb25zZShyZXF1ZXN0SWQsIFdURk1vdmUocmVzdWx0
KSk7CiAgICAgZWxzZQotICAgICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5yZXBvcnRQcm90b2Nv
bEVycm9yKEJhY2tlbmREaXNwYXRjaGVyOjpTZXJ2ZXJFcnJvciwgV1RGOjptb3ZlKGVycm9yKSk7
CisgICAgICAgIG1fYmFja2VuZERpc3BhdGNoZXItPnJlcG9ydFByb3RvY29sRXJyb3IoQmFja2Vu
ZERpc3BhdGNoZXI6OlNlcnZlckVycm9yLCBXVEZNb3ZlKGVycm9yKSk7CiB9CiAjZW5kaWYgLy8g
UExBVEZPUk0oV0VCX0NPTU1BTkRTKQogCkBAIC00ODEsNyArNDgxLDcgQEAgcHVibGljOgogICAg
ICAgICB9CiAKICAgICAgICAgQnVpbGRlcihSZWY8LypOZXR3b3JrRXJyb3IqL0luc3BlY3Rvck9i
amVjdD4mJiBvYmplY3QpCi0gICAgICAgICAgICA6IG1fcmVzdWx0KFdURjo6bW92ZShvYmplY3Qp
KQorICAgICAgICAgICAgOiBtX3Jlc3VsdChXVEZNb3ZlKG9iamVjdCkpCiAgICAgICAgIHsKICAg
ICAgICAgICAgIENPTVBJTEVfQVNTRVJUKFNUQVRFID09IE5vRmllbGRzU2V0LCBidWlsZGVyX2Ny
ZWF0ZWRfaW5fbm9uX2luaXRfc3RhdGUpOwogICAgICAgICB9CkBAIC01MDgsNyArNTA4LDcgQEAg
cHVibGljOgogICAgICAgICAgICAgQ09NUElMRV9BU1NFUlQoc2l6ZW9mKE5ldHdvcmtFcnJvcikg
PT0gc2l6ZW9mKEluc3BlY3Rvck9iamVjdCksIGNhbm5vdF9jYXN0KTsKIAogICAgICAgICAgICAg
UmVmPEluc3BlY3Rvck9iamVjdD4gcmVzdWx0ID0gbV9yZXN1bHQucmVsZWFzZU5vbk51bGwoKTsK
LSAgICAgICAgICAgIHJldHVybiBXVEY6Om1vdmUoKnJlaW50ZXJwcmV0X2Nhc3Q8UmVmPE5ldHdv
cmtFcnJvcj4qPigmcmVzdWx0KSk7CisgICAgICAgICAgICByZXR1cm4gV1RGTW92ZSgqcmVpbnRl
cnByZXRfY2FzdDxSZWY8TmV0d29ya0Vycm9yPio+KCZyZXN1bHQpKTsKICAgICAgICAgfQogICAg
IH07CiAKQEAgLTcyNSw4ICs3MjUsOCBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogICAg
IF9uZXR3b3JrMUhhbmRsZXIgPSBbaGFuZGxlciByZXRhaW5dOwogCiAgICAgYXV0byBhbHRlcm5h
dGVEaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxPYmpDSW5zcGVjdG9yTmV0d29yazFCYWNr
ZW5kRGlzcGF0Y2hlcj4oaGFuZGxlcik7Ci0gICAgYXV0byBhbHRlcm5hdGVBZ2VudCA9IHN0ZDo6
bWFrZV91bmlxdWU8QWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQ8TmV0d29yazFCYWNrZW5kRGlz
cGF0Y2hlciwgQWx0ZXJuYXRlTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlcj4+KEFTQ0lJTGl0ZXJh
bCgiTmV0d29yazEiKSwgKl9jb250cm9sbGVyLCBXVEY6Om1vdmUoYWx0ZXJuYXRlRGlzcGF0Y2hl
cikpOwotICAgIF9jb250cm9sbGVyLT5hcHBlbmRFeHRyYUFnZW50KFdURjo6bW92ZShhbHRlcm5h
dGVBZ2VudCkpOworICAgIGF1dG8gYWx0ZXJuYXRlQWdlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFs
dGVybmF0ZURpc3BhdGNoYWJsZUFnZW50PE5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXIsIEFsdGVy
bmF0ZU5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXI+PihBU0NJSUxpdGVyYWwoIk5ldHdvcmsxIiks
ICpfY29udHJvbGxlciwgV1RGTW92ZShhbHRlcm5hdGVEaXNwYXRjaGVyKSk7CisgICAgX2NvbnRy
b2xsZXItPmFwcGVuZEV4dHJhQWdlbnQoV1RGTW92ZShhbHRlcm5hdGVBZ2VudCkpOwogfQogCiAt
IChpZDxSV0lQcm90b2NvbE5ldHdvcmsxRG9tYWluSGFuZGxlcj4pbmV0d29yazFIYW5kbGVyCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMv
ZXhwZWN0ZWQvc2FtZS10eXBlLWlkLWRpZmZlcmVudC1kb21haW4uanNvbi1yZXN1bHQgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvc2FtZS10
eXBlLWlkLWRpZmZlcmVudC1kb21haW4uanNvbi1yZXN1bHQKaW5kZXggNjZmYmE0ZTdkM2U3YmNk
MWRmNWQ2YjE2MTkwZGUwNTA3OTQxYTU1NS4uNWJjZmZhYzdkZjVhY2E5YjRhMDAyZmRiYWM1MmFi
ZjU1ODkzY2JhMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9z
Y3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3NhbWUtdHlwZS1pZC1kaWZmZXJlbnQtZG9tYWluLmpzb24t
cmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0
cy9leHBlY3RlZC9zYW1lLXR5cGUtaWQtZGlmZmVyZW50LWRvbWFpbi5qc29uLXJlc3VsdApAQCAt
NDIsNyArNDIsNyBAQCBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogY2xhc3MgQWx0ZXJuYXRlQmFj
a2VuZERpc3BhdGNoZXIgewogcHVibGljOgotICAgIHZvaWQgc2V0QmFja2VuZERpc3BhdGNoZXIo
UmVmUHRyPEJhY2tlbmREaXNwYXRjaGVyPiYmIGRpc3BhdGNoZXIpIHsgbV9iYWNrZW5kRGlzcGF0
Y2hlciA9IFdURjo6bW92ZShkaXNwYXRjaGVyKTsgfQorICAgIHZvaWQgc2V0QmFja2VuZERpc3Bh
dGNoZXIoUmVmUHRyPEJhY2tlbmREaXNwYXRjaGVyPiYmIGRpc3BhdGNoZXIpIHsgbV9iYWNrZW5k
RGlzcGF0Y2hlciA9IFdURk1vdmUoZGlzcGF0Y2hlcik7IH0KICAgICBCYWNrZW5kRGlzcGF0Y2hl
ciogYmFja2VuZERpc3BhdGNoZXIoKSBjb25zdCB7IHJldHVybiBtX2JhY2tlbmREaXNwYXRjaGVy
LmdldCgpOyB9CiBwcml2YXRlOgogICAgIFJlZlB0cjxCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNr
ZW5kRGlzcGF0Y2hlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9zaGFkb3dlZC1vcHRpb25hbC10eXBlLXNldHRlcnMu
anNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVz
dHMvZXhwZWN0ZWQvc2hhZG93ZWQtb3B0aW9uYWwtdHlwZS1zZXR0ZXJzLmpzb24tcmVzdWx0Cmlu
ZGV4IDI2MWQ5YTk5OWE3MThlZGU1OWQ2MDhkNzQyMzg0MmFkMDY3YTdlMjEuLmU3NjE4OTEwMDU4
MWFkM2Y1NzkzZTUzYWNlMDJhYzY5NzYyNzYzMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9zaGFkb3dlZC1vcHRpb25h
bC10eXBlLXNldHRlcnMuanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3NoYWRvd2VkLW9wdGlvbmFsLXR5cGUtc2V0
dGVycy5qc29uLXJlc3VsdApAQCAtNDIsNyArNDIsNyBAQCBuYW1lc3BhY2UgSW5zcGVjdG9yIHsK
IAogY2xhc3MgQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXIgewogcHVibGljOgotICAgIHZvaWQg
c2V0QmFja2VuZERpc3BhdGNoZXIoUmVmUHRyPEJhY2tlbmREaXNwYXRjaGVyPiYmIGRpc3BhdGNo
ZXIpIHsgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IFdURjo6bW92ZShkaXNwYXRjaGVyKTsgfQorICAg
IHZvaWQgc2V0QmFja2VuZERpc3BhdGNoZXIoUmVmUHRyPEJhY2tlbmREaXNwYXRjaGVyPiYmIGRp
c3BhdGNoZXIpIHsgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IFdURk1vdmUoZGlzcGF0Y2hlcik7IH0K
ICAgICBCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIoKSBjb25zdCB7IHJldHVy
biBtX2JhY2tlbmREaXNwYXRjaGVyLmdldCgpOyB9CiBwcml2YXRlOgogICAgIFJlZlB0cjxCYWNr
ZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKQEAgLTM2Niw3ICszNjYsNyBAQCBw
dWJsaWM6CiAgICAgICAgIH0KIAogICAgICAgICBCdWlsZGVyKFJlZjwvKktleVBhdGgqL0luc3Bl
Y3Rvck9iamVjdD4mJiBvYmplY3QpCi0gICAgICAgICAgICA6IG1fcmVzdWx0KFdURjo6bW92ZShv
YmplY3QpKQorICAgICAgICAgICAgOiBtX3Jlc3VsdChXVEZNb3ZlKG9iamVjdCkpCiAgICAgICAg
IHsKICAgICAgICAgICAgIENPTVBJTEVfQVNTRVJUKFNUQVRFID09IE5vRmllbGRzU2V0LCBidWls
ZGVyX2NyZWF0ZWRfaW5fbm9uX2luaXRfc3RhdGUpOwogICAgICAgICB9CkBAIC0zODYsNyArMzg2
LDcgQEAgcHVibGljOgogICAgICAgICAgICAgQ09NUElMRV9BU1NFUlQoc2l6ZW9mKEtleVBhdGgp
ID09IHNpemVvZihJbnNwZWN0b3JPYmplY3QpLCBjYW5ub3RfY2FzdCk7CiAKICAgICAgICAgICAg
IFJlZjxJbnNwZWN0b3JPYmplY3Q+IHJlc3VsdCA9IG1fcmVzdWx0LnJlbGVhc2VOb25OdWxsKCk7
Ci0gICAgICAgICAgICByZXR1cm4gV1RGOjptb3ZlKCpyZWludGVycHJldF9jYXN0PFJlZjxLZXlQ
YXRoPio+KCZyZXN1bHQpKTsKKyAgICAgICAgICAgIHJldHVybiBXVEZNb3ZlKCpyZWludGVycHJl
dF9jYXN0PFJlZjxLZXlQYXRoPio+KCZyZXN1bHQpKTsKICAgICAgICAgfQogICAgIH07CiAKQEAg
LTQwOCw3ICs0MDgsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldEFycmF5KFJlZlB0cjxJbnNw
ZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+PiB2YWx1ZSkKICAgICB7Ci0gICAgICAgIElu
c3BlY3Rvck9iamVjdEJhc2U6OnNldEFycmF5KEFTQ0lJTGl0ZXJhbCgiYXJyYXkiKSwgV1RGOjpt
b3ZlKHZhbHVlKSk7CisgICAgICAgIEluc3BlY3Rvck9iamVjdEJhc2U6OnNldEFycmF5KEFTQ0lJ
TGl0ZXJhbCgiYXJyYXkiKSwgV1RGTW92ZSh2YWx1ZSkpOwogICAgIH0KIH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3Rl
ZC90eXBlLWRlY2xhcmF0aW9uLWFsaWFzZWQtcHJpbWl0aXZlLXR5cGUuanNvbi1yZXN1bHQgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlw
ZS1kZWNsYXJhdGlvbi1hbGlhc2VkLXByaW1pdGl2ZS10eXBlLmpzb24tcmVzdWx0CmluZGV4IGEz
MGNmMWVlZDRiMzMwNGZmMTA4ZGYwYTAxOGU1ZDY5MWU5ZjUxNDMuLmE5N2Q4MjE5ZTYxYTUwYjFi
NDE4NjhhNjhkZjA5OTdlZTEyZTQ0MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLWFsaWFz
ZWQtcHJpbWl0aXZlLXR5cGUuanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tYWxpYXNl
ZC1wcmltaXRpdmUtdHlwZS5qc29uLXJlc3VsdApAQCAtNDIsNyArNDIsNyBAQCBuYW1lc3BhY2Ug
SW5zcGVjdG9yIHsKIAogY2xhc3MgQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXIgewogcHVibGlj
OgotICAgIHZvaWQgc2V0QmFja2VuZERpc3BhdGNoZXIoUmVmUHRyPEJhY2tlbmREaXNwYXRjaGVy
PiYmIGRpc3BhdGNoZXIpIHsgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IFdURjo6bW92ZShkaXNwYXRj
aGVyKTsgfQorICAgIHZvaWQgc2V0QmFja2VuZERpc3BhdGNoZXIoUmVmUHRyPEJhY2tlbmREaXNw
YXRjaGVyPiYmIGRpc3BhdGNoZXIpIHsgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IFdURk1vdmUoZGlz
cGF0Y2hlcik7IH0KICAgICBCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIoKSBj
b25zdCB7IHJldHVybiBtX2JhY2tlbmREaXNwYXRjaGVyLmdldCgpOyB9CiBwcml2YXRlOgogICAg
IFJlZlB0cjxCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3Rl
ZC90eXBlLWRlY2xhcmF0aW9uLWFycmF5LXR5cGUuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlv
bi1hcnJheS10eXBlLmpzb24tcmVzdWx0CmluZGV4IGFmMmZkMjU2NjY3NzcxYmRiOTIyYmEzYzIy
YWQ3OGU0YjMxYjExNjQuLmMyM2JiNWJmNjE4Njk1ODg4ZDczZmE5ZDhlN2Q4N2M1M2Y0NmUyYmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0
cy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLWFycmF5LXR5cGUuanNvbi1yZXN1bHQKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5
cGUtZGVjbGFyYXRpb24tYXJyYXktdHlwZS5qc29uLXJlc3VsdApAQCAtNDIsNyArNDIsNyBAQCBu
YW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogY2xhc3MgQWx0ZXJuYXRlQmFja2VuZERpc3BhdGNoZXIg
ewogcHVibGljOgotICAgIHZvaWQgc2V0QmFja2VuZERpc3BhdGNoZXIoUmVmUHRyPEJhY2tlbmRE
aXNwYXRjaGVyPiYmIGRpc3BhdGNoZXIpIHsgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IFdURjo6bW92
ZShkaXNwYXRjaGVyKTsgfQorICAgIHZvaWQgc2V0QmFja2VuZERpc3BhdGNoZXIoUmVmUHRyPEJh
Y2tlbmREaXNwYXRjaGVyPiYmIGRpc3BhdGNoZXIpIHsgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IFdU
Rk1vdmUoZGlzcGF0Y2hlcik7IH0KICAgICBCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3Bh
dGNoZXIoKSBjb25zdCB7IHJldHVybiBtX2JhY2tlbmREaXNwYXRjaGVyLmdldCgpOyB9CiBwcml2
YXRlOgogICAgIFJlZlB0cjxCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0
cy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLWVudW0tdHlwZS5qc29uLXJlc3VsdCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLWRl
Y2xhcmF0aW9uLWVudW0tdHlwZS5qc29uLXJlc3VsdAppbmRleCAyMmUyYjI2OGI3ODdkZDZhZTkz
NWYwNTE4YjlmMjU2Zjk3YTU4ODYwLi4zZDgyOGQ4ZDYwY2IyNDBjMTU4NDJlN2JhYzhlMmIwNjRm
OGI2YzFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Njcmlw
dHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1lbnVtLXR5cGUuanNvbi1yZXN1bHQK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVj
dGVkL3R5cGUtZGVjbGFyYXRpb24tZW51bS10eXBlLmpzb24tcmVzdWx0CkBAIC00Miw3ICs0Miw3
IEBAIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCiBjbGFzcyBBbHRlcm5hdGVCYWNrZW5kRGlzcGF0
Y2hlciB7CiBwdWJsaWM6Ci0gICAgdm9pZCBzZXRCYWNrZW5kRGlzcGF0Y2hlcihSZWZQdHI8QmFj
a2VuZERpc3BhdGNoZXI+JiYgZGlzcGF0Y2hlcikgeyBtX2JhY2tlbmREaXNwYXRjaGVyID0gV1RG
Ojptb3ZlKGRpc3BhdGNoZXIpOyB9CisgICAgdm9pZCBzZXRCYWNrZW5kRGlzcGF0Y2hlcihSZWZQ
dHI8QmFja2VuZERpc3BhdGNoZXI+JiYgZGlzcGF0Y2hlcikgeyBtX2JhY2tlbmREaXNwYXRjaGVy
ID0gV1RGTW92ZShkaXNwYXRjaGVyKTsgfQogICAgIEJhY2tlbmREaXNwYXRjaGVyKiBiYWNrZW5k
RGlzcGF0Y2hlcigpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2VuZERpc3BhdGNoZXIuZ2V0KCk7IH0K
IHByaXZhdGU6CiAgICAgUmVmUHRyPEJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRj
aGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRz
L3Rlc3RzL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tb2JqZWN0LXR5cGUuanNvbi1yZXN1bHQg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQv
dHlwZS1kZWNsYXJhdGlvbi1vYmplY3QtdHlwZS5qc29uLXJlc3VsdAppbmRleCAxNjVjNTJlZjJj
MWQzYzhhMmZiNzY5ZDM0YjljMzJjOGIzYTUxMmIzLi44NjA1MWM2YjQyYTYxMDFhODBkYmU1ZjNl
ZjAwN2VkYmI3ZGY2OTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1vYmplY3QtdHlwZS5q
c29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMv
dGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1vYmplY3QtdHlwZS5qc29uLXJlc3VsdApA
QCAtNDIsNyArNDIsNyBAQCBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogY2xhc3MgQWx0ZXJuYXRl
QmFja2VuZERpc3BhdGNoZXIgewogcHVibGljOgotICAgIHZvaWQgc2V0QmFja2VuZERpc3BhdGNo
ZXIoUmVmUHRyPEJhY2tlbmREaXNwYXRjaGVyPiYmIGRpc3BhdGNoZXIpIHsgbV9iYWNrZW5kRGlz
cGF0Y2hlciA9IFdURjo6bW92ZShkaXNwYXRjaGVyKTsgfQorICAgIHZvaWQgc2V0QmFja2VuZERp
c3BhdGNoZXIoUmVmUHRyPEJhY2tlbmREaXNwYXRjaGVyPiYmIGRpc3BhdGNoZXIpIHsgbV9iYWNr
ZW5kRGlzcGF0Y2hlciA9IFdURk1vdmUoZGlzcGF0Y2hlcik7IH0KICAgICBCYWNrZW5kRGlzcGF0
Y2hlciogYmFja2VuZERpc3BhdGNoZXIoKSBjb25zdCB7IHJldHVybiBtX2JhY2tlbmREaXNwYXRj
aGVyLmdldCgpOyB9CiBwcml2YXRlOgogICAgIFJlZlB0cjxCYWNrZW5kRGlzcGF0Y2hlcj4gbV9i
YWNrZW5kRGlzcGF0Y2hlcjsKQEAgLTM3Myw3ICszNzMsNyBAQCBwdWJsaWM6CiAgICAgICAgIH0K
IAogICAgICAgICBCdWlsZGVyKFJlZjwvKkVycm9yKi9JbnNwZWN0b3JPYmplY3Q+JiYgb2JqZWN0
KQotICAgICAgICAgICAgOiBtX3Jlc3VsdChXVEY6Om1vdmUob2JqZWN0KSkKKyAgICAgICAgICAg
IDogbV9yZXN1bHQoV1RGTW92ZShvYmplY3QpKQogICAgICAgICB7CiAgICAgICAgICAgICBDT01Q
SUxFX0FTU0VSVChTVEFURSA9PSBOb0ZpZWxkc1NldCwgYnVpbGRlcl9jcmVhdGVkX2luX25vbl9p
bml0X3N0YXRlKTsKICAgICAgICAgfQpAQCAtNDAwLDcgKzQwMCw3IEBAIHB1YmxpYzoKICAgICAg
ICAgICAgIENPTVBJTEVfQVNTRVJUKHNpemVvZihFcnJvcikgPT0gc2l6ZW9mKEluc3BlY3Rvck9i
amVjdCksIGNhbm5vdF9jYXN0KTsKIAogICAgICAgICAgICAgUmVmPEluc3BlY3Rvck9iamVjdD4g
cmVzdWx0ID0gbV9yZXN1bHQucmVsZWFzZU5vbk51bGwoKTsKLSAgICAgICAgICAgIHJldHVybiBX
VEY6Om1vdmUoKnJlaW50ZXJwcmV0X2Nhc3Q8UmVmPEVycm9yPio+KCZyZXN1bHQpKTsKKyAgICAg
ICAgICAgIHJldHVybiBXVEZNb3ZlKCpyZWludGVycHJldF9jYXN0PFJlZjxFcnJvcj4qPigmcmVz
dWx0KSk7CiAgICAgICAgIH0KICAgICB9OwogCkBAIC00MzUsNyArNDM1LDcgQEAgcHVibGljOgog
ICAgICAgICB9CiAKICAgICAgICAgQnVpbGRlcihSZWY8LypPcHRpb25hbFBhcmFtZXRlckJ1bmRs
ZSovSW5zcGVjdG9yT2JqZWN0PiYmIG9iamVjdCkKLSAgICAgICAgICAgIDogbV9yZXN1bHQoV1RG
Ojptb3ZlKG9iamVjdCkpCisgICAgICAgICAgICA6IG1fcmVzdWx0KFdURk1vdmUob2JqZWN0KSkK
ICAgICAgICAgewogICAgICAgICAgICAgQ09NUElMRV9BU1NFUlQoU1RBVEUgPT0gTm9GaWVsZHNT
ZXQsIGJ1aWxkZXJfY3JlYXRlZF9pbl9ub25faW5pdF9zdGF0ZSk7CiAgICAgICAgIH0KQEAgLTQ0
OCw3ICs0NDgsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBDT01QSUxFX0FTU0VSVChzaXplb2Yo
T3B0aW9uYWxQYXJhbWV0ZXJCdW5kbGUpID09IHNpemVvZihJbnNwZWN0b3JPYmplY3QpLCBjYW5u
b3RfY2FzdCk7CiAKICAgICAgICAgICAgIFJlZjxJbnNwZWN0b3JPYmplY3Q+IHJlc3VsdCA9IG1f
cmVzdWx0LnJlbGVhc2VOb25OdWxsKCk7Ci0gICAgICAgICAgICByZXR1cm4gV1RGOjptb3ZlKCpy
ZWludGVycHJldF9jYXN0PFJlZjxPcHRpb25hbFBhcmFtZXRlckJ1bmRsZT4qPigmcmVzdWx0KSk7
CisgICAgICAgICAgICByZXR1cm4gV1RGTW92ZSgqcmVpbnRlcnByZXRfY2FzdDxSZWY8T3B0aW9u
YWxQYXJhbWV0ZXJCdW5kbGU+Kj4oJnJlc3VsdCkpOwogICAgICAgICB9CiAgICAgfTsKIApAQCAt
NDY0LDcgKzQ2NCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0Q29sdW1uTmFtZXMoUmVmUHRy
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz4+IHZhbHVlKQogICAgIHsKLSAgICAg
ICAgSW5zcGVjdG9yT2JqZWN0QmFzZTo6c2V0QXJyYXkoQVNDSUlMaXRlcmFsKCJjb2x1bW5OYW1l
cyIpLCBXVEY6Om1vdmUodmFsdWUpKTsKKyAgICAgICAgSW5zcGVjdG9yT2JqZWN0QmFzZTo6c2V0
QXJyYXkoQVNDSUlMaXRlcmFsKCJjb2x1bW5OYW1lcyIpLCBXVEZNb3ZlKHZhbHVlKSk7CiAgICAg
fQogCiAgICAgdm9pZCBzZXROb3Rlcyhjb25zdCBTdHJpbmcmIHZhbHVlKQpAQCAtNDc5LDIyICs0
NzksMjIgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRWYWx1ZXMoUmVmUHRyPEluc3BlY3Rvcjo6
SW5zcGVjdG9yT2JqZWN0PiB2YWx1ZSkKICAgICB7Ci0gICAgICAgIEluc3BlY3Rvck9iamVjdEJh
c2U6OnNldE9iamVjdChBU0NJSUxpdGVyYWwoInZhbHVlcyIpLCBXVEY6Om1vdmUodmFsdWUpKTsK
KyAgICAgICAgSW5zcGVjdG9yT2JqZWN0QmFzZTo6c2V0T2JqZWN0KEFTQ0lJTGl0ZXJhbCgidmFs
dWVzIiksIFdURk1vdmUodmFsdWUpKTsKICAgICB9CiAKICAgICB2b2lkIHNldFBheWxvYWQoUmVm
UHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWU+IHZhbHVlKQogICAgIHsKLSAgICAgICAgSW5z
cGVjdG9yT2JqZWN0QmFzZTo6c2V0VmFsdWUoQVNDSUlMaXRlcmFsKCJwYXlsb2FkIiksIFdURjo6
bW92ZSh2YWx1ZSkpOworICAgICAgICBJbnNwZWN0b3JPYmplY3RCYXNlOjpzZXRWYWx1ZShBU0NJ
SUxpdGVyYWwoInBheWxvYWQiKSwgV1RGTW92ZSh2YWx1ZSkpOwogICAgIH0KIAogICAgIHZvaWQg
c2V0RXJyb3IoUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpFcnJvcj4gdmFs
dWUpCiAgICAgewotICAgICAgICBJbnNwZWN0b3JPYmplY3RCYXNlOjpzZXRPYmplY3QoQVNDSUlM
aXRlcmFsKCJlcnJvciIpLCBXVEY6Om1vdmUodmFsdWUpKTsKKyAgICAgICAgSW5zcGVjdG9yT2Jq
ZWN0QmFzZTo6c2V0T2JqZWN0KEFTQ0lJTGl0ZXJhbCgiZXJyb3IiKSwgV1RGTW92ZSh2YWx1ZSkp
OwogICAgIH0KIAogICAgIHZvaWQgc2V0RXJyb3JMaXN0KFJlZlB0cjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpEYXRhYmFzZTo6RXJyb3JMaXN0PiB2YWx1ZSkKICAgICB7Ci0gICAgICAgIEluc3BlY3Rv
ck9iamVjdEJhc2U6OnNldEFycmF5KEFTQ0lJTGl0ZXJhbCgiZXJyb3JMaXN0IiksIFdURjo6bW92
ZSh2YWx1ZSkpOworICAgICAgICBJbnNwZWN0b3JPYmplY3RCYXNlOjpzZXRBcnJheShBU0NJSUxp
dGVyYWwoImVycm9yTGlzdCIpLCBXVEZNb3ZlKHZhbHVlKSk7CiAgICAgfQogfTsKIApAQCAtNTIz
LDcgKzUyMyw3IEBAIHB1YmxpYzoKICAgICAgICAgfQogCiAgICAgICAgIEJ1aWxkZXIoUmVmPC8q
UGFyYW1ldGVyQnVuZGxlKi9JbnNwZWN0b3JPYmplY3Q+JiYgb2JqZWN0KQotICAgICAgICAgICAg
OiBtX3Jlc3VsdChXVEY6Om1vdmUob2JqZWN0KSkKKyAgICAgICAgICAgIDogbV9yZXN1bHQoV1RG
TW92ZShvYmplY3QpKQogICAgICAgICB7CiAgICAgICAgICAgICBDT01QSUxFX0FTU0VSVChTVEFU
RSA9PSBOb0ZpZWxkc1NldCwgYnVpbGRlcl9jcmVhdGVkX2luX25vbl9pbml0X3N0YXRlKTsKICAg
ICAgICAgfQpAQCAtNTg1LDcgKzU4NSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIENPTVBJTEVf
QVNTRVJUKHNpemVvZihQYXJhbWV0ZXJCdW5kbGUpID09IHNpemVvZihJbnNwZWN0b3JPYmplY3Qp
LCBjYW5ub3RfY2FzdCk7CiAKICAgICAgICAgICAgIFJlZjxJbnNwZWN0b3JPYmplY3Q+IHJlc3Vs
dCA9IG1fcmVzdWx0LnJlbGVhc2VOb25OdWxsKCk7Ci0gICAgICAgICAgICByZXR1cm4gV1RGOjpt
b3ZlKCpyZWludGVycHJldF9jYXN0PFJlZjxQYXJhbWV0ZXJCdW5kbGU+Kj4oJnJlc3VsdCkpOwor
ICAgICAgICAgICAgcmV0dXJuIFdURk1vdmUoKnJlaW50ZXJwcmV0X2Nhc3Q8UmVmPFBhcmFtZXRl
ckJ1bmRsZT4qPigmcmVzdWx0KSk7CiAgICAgICAgIH0KICAgICB9OwogCkBAIC02MzEsNyArNjMx
LDcgQEAgcHVibGljOgogICAgICAgICB9CiAKICAgICAgICAgQnVpbGRlcihSZWY8LypPYmplY3RX
aXRoUHJvcGVydHlOYW1lQ29uZmxpY3RzKi9JbnNwZWN0b3JPYmplY3Q+JiYgb2JqZWN0KQotICAg
ICAgICAgICAgOiBtX3Jlc3VsdChXVEY6Om1vdmUob2JqZWN0KSkKKyAgICAgICAgICAgIDogbV9y
ZXN1bHQoV1RGTW92ZShvYmplY3QpKQogICAgICAgICB7CiAgICAgICAgICAgICBDT01QSUxFX0FT
U0VSVChTVEFURSA9PSBOb0ZpZWxkc1NldCwgYnVpbGRlcl9jcmVhdGVkX2luX25vbl9pbml0X3N0
YXRlKTsKICAgICAgICAgfQpAQCAtNjc5LDcgKzY3OSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAg
IENPTVBJTEVfQVNTRVJUKHNpemVvZihPYmplY3RXaXRoUHJvcGVydHlOYW1lQ29uZmxpY3RzKSA9
PSBzaXplb2YoSW5zcGVjdG9yT2JqZWN0KSwgY2Fubm90X2Nhc3QpOwogCiAgICAgICAgICAgICBS
ZWY8SW5zcGVjdG9yT2JqZWN0PiByZXN1bHQgPSBtX3Jlc3VsdC5yZWxlYXNlTm9uTnVsbCgpOwot
ICAgICAgICAgICAgcmV0dXJuIFdURjo6bW92ZSgqcmVpbnRlcnByZXRfY2FzdDxSZWY8T2JqZWN0
V2l0aFByb3BlcnR5TmFtZUNvbmZsaWN0cz4qPigmcmVzdWx0KSk7CisgICAgICAgICAgICByZXR1
cm4gV1RGTW92ZSgqcmVpbnRlcnByZXRfY2FzdDxSZWY8T2JqZWN0V2l0aFByb3BlcnR5TmFtZUNv
bmZsaWN0cz4qPigmcmVzdWx0KSk7CiAgICAgICAgIH0KICAgICB9OwogCkBAIC03MjYsNyArNzI2
LDcgQEAgcHVibGljOgogICAgICAgICB9CiAKICAgICAgICAgQnVpbGRlcihSZWY8LypQYXJhbWV0
ZXJCdW5kbGUqL0luc3BlY3Rvck9iamVjdD4mJiBvYmplY3QpCi0gICAgICAgICAgICA6IG1fcmVz
dWx0KFdURjo6bW92ZShvYmplY3QpKQorICAgICAgICAgICAgOiBtX3Jlc3VsdChXVEZNb3ZlKG9i
amVjdCkpCiAgICAgICAgIHsKICAgICAgICAgICAgIENPTVBJTEVfQVNTRVJUKFNUQVRFID09IE5v
RmllbGRzU2V0LCBidWlsZGVyX2NyZWF0ZWRfaW5fbm9uX2luaXRfc3RhdGUpOwogICAgICAgICB9
CkBAIC03ODEsNyArNzgxLDcgQEAgcHVibGljOgogICAgICAgICAgICAgQ09NUElMRV9BU1NFUlQo
c2l6ZW9mKFBhcmFtZXRlckJ1bmRsZSkgPT0gc2l6ZW9mKEluc3BlY3Rvck9iamVjdCksIGNhbm5v
dF9jYXN0KTsKIAogICAgICAgICAgICAgUmVmPEluc3BlY3Rvck9iamVjdD4gcmVzdWx0ID0gbV9y
ZXN1bHQucmVsZWFzZU5vbk51bGwoKTsKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om1vdmUoKnJl
aW50ZXJwcmV0X2Nhc3Q8UmVmPFBhcmFtZXRlckJ1bmRsZT4qPigmcmVzdWx0KSk7CisgICAgICAg
ICAgICByZXR1cm4gV1RGTW92ZSgqcmVpbnRlcnByZXRfY2FzdDxSZWY8UGFyYW1ldGVyQnVuZGxl
Pio+KCZyZXN1bHQpKTsKICAgICAgICAgfQogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLXJlcXVp
cmluZy1ydW50aW1lLWNhc3RzLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtcmVxdWlyaW5nLXJ1bnRpbWUtY2Fz
dHMuanNvbi1yZXN1bHQKaW5kZXggZTMzZmNjNjNkMjQzYThiY2I5ZGUzZWM2ZTM0N2JlMjBkM2U2
ODZjNy4uOWJlNTg3MzkzZmRmNWU3OTEwNDk4NTk0YjI2MjljYTE2NWU4ZTM3NCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVk
L3R5cGUtcmVxdWlyaW5nLXJ1bnRpbWUtY2FzdHMuanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtcmVxdWly
aW5nLXJ1bnRpbWUtY2FzdHMuanNvbi1yZXN1bHQKQEAgLTQyLDcgKzQyLDcgQEAgbmFtZXNwYWNl
IEluc3BlY3RvciB7CiAKIGNsYXNzIEFsdGVybmF0ZUJhY2tlbmREaXNwYXRjaGVyIHsKIHB1Ymxp
YzoKLSAgICB2b2lkIHNldEJhY2tlbmREaXNwYXRjaGVyKFJlZlB0cjxCYWNrZW5kRGlzcGF0Y2hl
cj4mJiBkaXNwYXRjaGVyKSB7IG1fYmFja2VuZERpc3BhdGNoZXIgPSBXVEY6Om1vdmUoZGlzcGF0
Y2hlcik7IH0KKyAgICB2b2lkIHNldEJhY2tlbmREaXNwYXRjaGVyKFJlZlB0cjxCYWNrZW5kRGlz
cGF0Y2hlcj4mJiBkaXNwYXRjaGVyKSB7IG1fYmFja2VuZERpc3BhdGNoZXIgPSBXVEZNb3ZlKGRp
c3BhdGNoZXIpOyB9CiAgICAgQmFja2VuZERpc3BhdGNoZXIqIGJhY2tlbmREaXNwYXRjaGVyKCkg
Y29uc3QgeyByZXR1cm4gbV9iYWNrZW5kRGlzcGF0Y2hlci5nZXQoKTsgfQogcHJpdmF0ZToKICAg
ICBSZWZQdHI8QmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CkBAIC0zNzcs
NyArMzc3LDcgQEAgcHVibGljOgogICAgICAgICB9CiAKICAgICAgICAgQnVpbGRlcihSZWY8LypU
eXBlTmVlZGluZ0Nhc3QqL0luc3BlY3Rvck9iamVjdD4mJiBvYmplY3QpCi0gICAgICAgICAgICA6
IG1fcmVzdWx0KFdURjo6bW92ZShvYmplY3QpKQorICAgICAgICAgICAgOiBtX3Jlc3VsdChXVEZN
b3ZlKG9iamVjdCkpCiAgICAgICAgIHsKICAgICAgICAgICAgIENPTVBJTEVfQVNTRVJUKFNUQVRF
ID09IE5vRmllbGRzU2V0LCBidWlsZGVyX2NyZWF0ZWRfaW5fbm9uX2luaXRfc3RhdGUpOwogICAg
ICAgICB9CkBAIC00MjUsNyArNDI1LDcgQEAgcHVibGljOgogICAgICAgICAgICAgQ09NUElMRV9B
U1NFUlQoc2l6ZW9mKFR5cGVOZWVkaW5nQ2FzdCkgPT0gc2l6ZW9mKEluc3BlY3Rvck9iamVjdCks
IGNhbm5vdF9jYXN0KTsKIAogICAgICAgICAgICAgUmVmPEluc3BlY3Rvck9iamVjdD4gcmVzdWx0
ID0gbV9yZXN1bHQucmVsZWFzZU5vbk51bGwoKTsKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om1v
dmUoKnJlaW50ZXJwcmV0X2Nhc3Q8UmVmPFR5cGVOZWVkaW5nQ2FzdD4qPigmcmVzdWx0KSk7Cisg
ICAgICAgICAgICByZXR1cm4gV1RGTW92ZSgqcmVpbnRlcnByZXRfY2FzdDxSZWY8VHlwZU5lZWRp
bmdDYXN0Pio+KCZyZXN1bHQpKTsKICAgICAgICAgfQogICAgIH07CiAKQEAgLTQ3Nyw3ICs0Nzcs
NyBAQCBwdWJsaWM6CiAgICAgICAgIH0KIAogICAgICAgICBCdWlsZGVyKFJlZjwvKlJlY3Vyc2l2
ZU9iamVjdDEqL0luc3BlY3Rvck9iamVjdD4mJiBvYmplY3QpCi0gICAgICAgICAgICA6IG1fcmVz
dWx0KFdURjo6bW92ZShvYmplY3QpKQorICAgICAgICAgICAgOiBtX3Jlc3VsdChXVEZNb3ZlKG9i
amVjdCkpCiAgICAgICAgIHsKICAgICAgICAgICAgIENPTVBJTEVfQVNTRVJUKFNUQVRFID09IE5v
RmllbGRzU2V0LCBidWlsZGVyX2NyZWF0ZWRfaW5fbm9uX2luaXRfc3RhdGUpOwogICAgICAgICB9
CkBAIC00OTAsNyArNDkwLDcgQEAgcHVibGljOgogICAgICAgICAgICAgQ09NUElMRV9BU1NFUlQo
c2l6ZW9mKFJlY3Vyc2l2ZU9iamVjdDEpID09IHNpemVvZihJbnNwZWN0b3JPYmplY3QpLCBjYW5u
b3RfY2FzdCk7CiAKICAgICAgICAgICAgIFJlZjxJbnNwZWN0b3JPYmplY3Q+IHJlc3VsdCA9IG1f
cmVzdWx0LnJlbGVhc2VOb25OdWxsKCk7Ci0gICAgICAgICAgICByZXR1cm4gV1RGOjptb3ZlKCpy
ZWludGVycHJldF9jYXN0PFJlZjxSZWN1cnNpdmVPYmplY3QxPio+KCZyZXN1bHQpKTsKKyAgICAg
ICAgICAgIHJldHVybiBXVEZNb3ZlKCpyZWludGVycHJldF9jYXN0PFJlZjxSZWN1cnNpdmVPYmpl
Y3QxPio+KCZyZXN1bHQpKTsKICAgICAgICAgfQogICAgIH07CiAKQEAgLTUwNiw3ICs1MDYsNyBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIHNldE9iaihSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6
VGVzdDo6UmVjdXJzaXZlT2JqZWN0Mj4gdmFsdWUpCiAgICAgewotICAgICAgICBJbnNwZWN0b3JP
YmplY3RCYXNlOjpzZXRPYmplY3QoQVNDSUlMaXRlcmFsKCJvYmoiKSwgV1RGOjptb3ZlKHZhbHVl
KSk7CisgICAgICAgIEluc3BlY3Rvck9iamVjdEJhc2U6OnNldE9iamVjdChBU0NJSUxpdGVyYWwo
Im9iaiIpLCBXVEZNb3ZlKHZhbHVlKSk7CiAgICAgfQogfTsKIApAQCAtNTI4LDcgKzUyOCw3IEBA
IHB1YmxpYzoKICAgICAgICAgfQogCiAgICAgICAgIEJ1aWxkZXIoUmVmPC8qUmVjdXJzaXZlT2Jq
ZWN0MiovSW5zcGVjdG9yT2JqZWN0PiYmIG9iamVjdCkKLSAgICAgICAgICAgIDogbV9yZXN1bHQo
V1RGOjptb3ZlKG9iamVjdCkpCisgICAgICAgICAgICA6IG1fcmVzdWx0KFdURk1vdmUob2JqZWN0
KSkKICAgICAgICAgewogICAgICAgICAgICAgQ09NUElMRV9BU1NFUlQoU1RBVEUgPT0gTm9GaWVs
ZHNTZXQsIGJ1aWxkZXJfY3JlYXRlZF9pbl9ub25faW5pdF9zdGF0ZSk7CiAgICAgICAgIH0KQEAg
LTU0MSw3ICs1NDEsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBDT01QSUxFX0FTU0VSVChzaXpl
b2YoUmVjdXJzaXZlT2JqZWN0MikgPT0gc2l6ZW9mKEluc3BlY3Rvck9iamVjdCksIGNhbm5vdF9j
YXN0KTsKIAogICAgICAgICAgICAgUmVmPEluc3BlY3Rvck9iamVjdD4gcmVzdWx0ID0gbV9yZXN1
bHQucmVsZWFzZU5vbk51bGwoKTsKLSAgICAgICAgICAgIHJldHVybiBXVEY6Om1vdmUoKnJlaW50
ZXJwcmV0X2Nhc3Q8UmVmPFJlY3Vyc2l2ZU9iamVjdDI+Kj4oJnJlc3VsdCkpOworICAgICAgICAg
ICAgcmV0dXJuIFdURk1vdmUoKnJlaW50ZXJwcmV0X2Nhc3Q8UmVmPFJlY3Vyc2l2ZU9iamVjdDI+
Kj4oJnJlc3VsdCkpOwogICAgICAgICB9CiAgICAgfTsKIApAQCAtNTU3LDcgKzU1Nyw3IEBAIHB1
YmxpYzoKIAogICAgIHZvaWQgc2V0T2JqKFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpUZXN0
OjpSZWN1cnNpdmVPYmplY3QxPiB2YWx1ZSkKICAgICB7Ci0gICAgICAgIEluc3BlY3Rvck9iamVj
dEJhc2U6OnNldE9iamVjdChBU0NJSUxpdGVyYWwoIm9iaiIpLCBXVEY6Om1vdmUodmFsdWUpKTsK
KyAgICAgICAgSW5zcGVjdG9yT2JqZWN0QmFzZTo6c2V0T2JqZWN0KEFTQ0lJTGl0ZXJhbCgib2Jq
IiksIFdURk1vdmUodmFsdWUpKTsKICAgICB9CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0NhbGxGcmFtZVNodWZmbGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvQ2FsbEZyYW1lU2h1ZmZsZXIuY3BwCmluZGV4IGJiMzJlM2Y0NDAyMTg4ZDkxNDI2
N2Y5ZTNjZWMyNGM4ZWFkNzE4NjkuLjQ1YWY1NWRkNjVmN2QzYjFiZWQ5MTNlNTAyYTk3OGM1ODNl
MTA3ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ2FsbEZyYW1lU2h1
ZmZsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ2FsbEZyYW1lU2h1ZmZs
ZXIuY3BwCkBAIC01OTMsNyArNTkzLDcgQEAgYm9vbCBDYWxsRnJhbWVTaHVmZmxlcjo6cGVyZm9y
bVNhZmVXcml0ZXMoKQogICAgICAgICAgICAgICAgIGlmICghdHJ5V3JpdGVzKCpjYWNoZWRSZWNv
dmVyeSkpCiAgICAgICAgICAgICAgICAgICAgIHN0aWxsRmFpbGluZy5hcHBlbmQoZmFpbGVkKTsK
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGZhaWx1cmVzID0gV1RGOjptb3ZlKHN0aWxsRmFp
bGluZyk7CisgICAgICAgICAgICBmYWlsdXJlcyA9IFdURk1vdmUoc3RpbGxGYWlsaW5nKTsKICAg
ICAgICAgfQogICAgICAgICBpZiAodmVyYm9zZSAmJiBmaXJzdFNhZmUgIT0gZGFuZ2VyRnJvbnRp
ZXIoKSArIDEpCiAgICAgICAgICAgICBkYXRhTG9nKCIgIFdlIGZyZWVkIHVwIGRhbmdlciBzbG90
cyFcbiIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Qb2x5bW9ycGhp
Y0NhbGxTdHViUm91dGluZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1BvbHltb3Jw
aGljQ2FsbFN0dWJSb3V0aW5lLmNwcAppbmRleCBiNzc0ZGY4ZmE3MGEwYjdlZTgyOTYyMDZmNWJi
ZmZhODg4NjdmZTNjLi5iMTJiNTUyOTlkYjlhOWMwNTA2NDY4NzQ1NWVlMjA5NDg5MTQ5NDM0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1BvbHltb3JwaGljQ2FsbFN0dWJS
b3V0aW5lLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1BvbHltb3JwaGljQ2Fs
bFN0dWJSb3V0aW5lLmNwcApAQCAtNzIsNyArNzIsNyBAQCBQb2x5bW9ycGhpY0NhbGxTdHViUm91
dGluZTo6UG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUoCiAgICAgQ2FsbExpbmtJbmZvJiBpbmZv
LCBjb25zdCBWZWN0b3I8UG9seW1vcnBoaWNDYWxsQ2FzZT4mIGNhc2VzLAogICAgIHN0ZDo6dW5p
cXVlX3B0cjx1aW50MzJfdFtdPiBmYXN0Q291bnRzKQogICAgIDogR0NBd2FyZUpJVFN0dWJSb3V0
aW5lKGNvZGVSZWYsIHZtKQotICAgICwgbV9mYXN0Q291bnRzKFdURjo6bW92ZShmYXN0Q291bnRz
KSkKKyAgICAsIG1fZmFzdENvdW50cyhXVEZNb3ZlKGZhc3RDb3VudHMpKQogewogICAgIGZvciAo
UG9seW1vcnBoaWNDYWxsQ2FzZSBjYWxsQ2FzZSA6IGNhc2VzKSB7CiAgICAgICAgIG1fdmFyaWFu
dHMuYXBwZW5kKFdyaXRlQmFycmllcjxKU0NlbGw+KHZtLCBvd25lciwgY2FsbENhc2UudmFyaWFu
dCgpLnJhd0NhbGxlZUNlbGwoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9SZXBhdGNoLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAK
aW5kZXggNGQ0OGQxZmI5N2U0MDgxYjRiNjBjMzQwYzM3MWRkZjVhNDJiZWE1NC4uNjYyMDNkOWQy
Yzc5ZGE1M2E5NTRjNTc1MDU1YzlhMzEwNmIwZmNhNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L1JlcGF0Y2guY3BwCkBAIC0zMTQsNyArMzE0LDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9u
IHRyeUNhY2hlR2V0QnlJRChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgYmFzZVZhbHVlLCBjb24K
ICAgICB9CiAKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgY29kZVB0ciA9Ci0gICAgICAgIHN0
dWJJbmZvLmFkZEFjY2Vzc0Nhc2UoY29kZUJsb2NrLCBwcm9wZXJ0eU5hbWUsIFdURjo6bW92ZShu
ZXdDYXNlKSk7CisgICAgICAgIHN0dWJJbmZvLmFkZEFjY2Vzc0Nhc2UoY29kZUJsb2NrLCBwcm9w
ZXJ0eU5hbWUsIFdURk1vdmUobmV3Q2FzZSkpOwogCiAgICAgaWYgKCFjb2RlUHRyKQogICAgICAg
ICByZXR1cm4gR2l2ZVVwT25DYWNoZTsKQEAgLTQ1NSw3ICs0NTUsNyBAQCBzdGF0aWMgSW5saW5l
Q2FjaGVBY3Rpb24gdHJ5Q2FjaGVQdXRCeUlEKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBiYXNl
VmFsdWUsIFN0cgogICAgICAgICB9CiAgICAgfQogCi0gICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRy
IGNvZGVQdHIgPSBzdHViSW5mby5hZGRBY2Nlc3NDYXNlKGNvZGVCbG9jaywgaWRlbnQsIFdURjo6
bW92ZShuZXdDYXNlKSk7CisgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGNvZGVQdHIgPSBzdHVi
SW5mby5hZGRBY2Nlc3NDYXNlKGNvZGVCbG9jaywgaWRlbnQsIFdURk1vdmUobmV3Q2FzZSkpOwog
ICAgIAogICAgIGlmICghY29kZVB0cikKICAgICAgICAgcmV0dXJuIEdpdmVVcE9uQ2FjaGU7CkBA
IC01MTIsNyArNTEyLDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeVJlcGF0Y2hJbigK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4gbmV3Q2FzZSA9IEFjY2Vzc0Nhc2U6Omlu
KAogICAgICAgICB2bSwgY29kZUJsb2NrLCB3YXNGb3VuZCA/IEFjY2Vzc0Nhc2U6OkluSGl0IDog
QWNjZXNzQ2FzZTo6SW5NaXNzLCBzdHJ1Y3R1cmUsIGNvbmRpdGlvblNldCk7CiAKLSAgICBNYWNy
b0Fzc2VtYmxlckNvZGVQdHIgY29kZVB0ciA9IHN0dWJJbmZvLmFkZEFjY2Vzc0Nhc2UoY29kZUJs
b2NrLCBpZGVudCwgV1RGOjptb3ZlKG5ld0Nhc2UpKTsKKyAgICBNYWNyb0Fzc2VtYmxlckNvZGVQ
dHIgY29kZVB0ciA9IHN0dWJJbmZvLmFkZEFjY2Vzc0Nhc2UoY29kZUJsb2NrLCBpZGVudCwgV1RG
TW92ZShuZXdDYXNlKSk7CiAgICAgaWYgKCFjb2RlUHRyKQogICAgICAgICByZXR1cm4gR2l2ZVVw
T25DYWNoZTsKIApAQCAtODc4LDcgKzg3OCw3IEBAIHZvaWQgbGlua1BvbHltb3JwaGljQ2FsbCgK
ICAgICAgICAgICAgICAgICB0b0NTdHJpbmcoKmNhbGxlckNvZGVCbG9jaykuZGF0YSgpLCBjYWxs
TGlua0luZm8uY2FsbFJldHVybkxvY2F0aW9uKCkubGFiZWxBdE9mZnNldCgwKS5leGVjdXRhYmxl
QWRkcmVzcygpLAogICAgICAgICAgICAgICAgIHRvQ1N0cmluZyhsaXN0RHVtcChjYWxsQ2FzZXMp
KS5kYXRhKCkpKSwKICAgICAgICAgKnZtLCBjYWxsZXJDb2RlQmxvY2ssIGV4ZWMtPmNhbGxlckZy
YW1lKCksIGNhbGxMaW5rSW5mbywgY2FsbENhc2VzLAotICAgICAgICBXVEY6Om1vdmUoZmFzdENv
dW50cykpKTsKKyAgICAgICAgV1RGTW92ZShmYXN0Q291bnRzKSkpOwogICAgIAogICAgIE1hY3Jv
QXNzZW1ibGVyOjpyZXBsYWNlV2l0aEp1bXAoCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpzdGFy
dE9mQnJhbmNoUHRyV2l0aFBhdGNoT25SZWdpc3RlcihjYWxsTGlua0luZm8uaG90UGF0aEJlZ2lu
KCkpLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcAppbmRleCA1YjZkYzQ5Mzg1
ZGE3ODM1OGMyNzliYzA4MDBiZjg5YTBhNjU3OWM0Li42MDdlZWY0OGFkZjI3ODNjMTg4YWY5ZDIx
Mzg5NzU1ZmI1OWYwOTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L05vZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcApA
QCAtMTI1LDcgKzEyNSw3IEBAIFByb2dyYW1Ob2RlOjpQcm9ncmFtTm9kZShQYXJzZXJBcmVuYSYg
cGFyc2VyQXJlbmEsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnRMCiAKIHZvaWQgUHJvZ3Jh
bU5vZGU6OnNldENsb3NlZFZhcmlhYmxlcyhWZWN0b3I8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBs
Pj4mJiBjbG9zZWRWYXJpYWJsZXMpCiB7Ci0gICAgbV9jbG9zZWRWYXJpYWJsZXMgPSBXVEY6Om1v
dmUoY2xvc2VkVmFyaWFibGVzKTsKKyAgICBtX2Nsb3NlZFZhcmlhYmxlcyA9IFdURk1vdmUoY2xv
c2VkVmFyaWFibGVzKTsKIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIE1v
ZHVsZVByb2dyYW1Ob2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKaW5kZXggMGY3ZGJkMmY2MTY3NWUxYTNmOTMyZDY4
N2U3MzM3ZTExZGZjODZiOS4uZTI4MDA3ZDk0NTAwMDQ0ZTU4Nzk0NTcyMzAyYjM3NzAzZGQ1YmQ4
OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcApAQCAtMzU2LDcgKzM1
Niw3IEBAIFN0cmluZyBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJbm5lcihjb25zdCBJZGVudGlm
aWVyJiBjYWxsZWVOYW1lLCBTb3VyY2VQYXJzZU1vCiAgICAgICAgICAgICB9CiAgICAgICAgIH0K
ICAgICB9Ci0gICAgZGlkRmluaXNoUGFyc2luZyhzb3VyY2VFbGVtZW50cywgY29udGV4dC5mdW5j
RGVjbGFyYXRpb25zKCksIHZhckRlY2xhcmF0aW9ucywgZmVhdHVyZXMsIGNvbnRleHQubnVtQ29u
c3RhbnRzKCksIFdURjo6bW92ZShjbG9zZWRWYXJpYWJsZXMpKTsKKyAgICBkaWRGaW5pc2hQYXJz
aW5nKHNvdXJjZUVsZW1lbnRzLCBjb250ZXh0LmZ1bmNEZWNsYXJhdGlvbnMoKSwgdmFyRGVjbGFy
YXRpb25zLCBmZWF0dXJlcywgY29udGV4dC5udW1Db25zdGFudHMoKSwgV1RGTW92ZShjbG9zZWRW
YXJpYWJsZXMpKTsKIAogICAgIHJldHVybiBwYXJzZUVycm9yOwogfQpAQCAtMjAzOCw3ICsyMDM4
LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBib29sIFBhcnNlcjxMZXhlclR5cGU+
OjpwYXJzZUZ1bmN0aW9uSW5mbyhUcmVlQnVpbGQKICAgICB9CiAgICAgCiAgICAgaWYgKG5ld0lu
Zm8pCi0gICAgICAgIG1fZnVuY3Rpb25DYWNoZS0+YWRkKGZ1bmN0aW9uSW5mby5zdGFydE9mZnNl
dCwgV1RGOjptb3ZlKG5ld0luZm8pKTsKKyAgICAgICAgbV9mdW5jdGlvbkNhY2hlLT5hZGQoZnVu
Y3Rpb25JbmZvLnN0YXJ0T2Zmc2V0LCBXVEZNb3ZlKG5ld0luZm8pKTsKICAgICAKICAgICBmdW5j
dGlvbkluZm8uZW5kTGluZSA9IG1fbGFzdFRva2VuRW5kUG9zaXRpb24ubGluZTsKICAgICByZXR1
cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2Vy
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCmluZGV4IDMyZjVhODI3
NDQyZDAzOTEwOTA5ZDUzOTdlMjM5NDJmYTMzNzQ3ZjguLmExMWIzNWMxMDFmZTViODQ5Y2IyMzMw
OTZjNTY4MzEzNzA2NmNhYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvUGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaApA
QCAtNjU3LDcgKzY1Nyw3IEBAIHB1YmxpYzoKIAogICAgIEpTVGV4dFBvc2l0aW9uIHBvc2l0aW9u
QmVmb3JlTGFzdE5ld2xpbmUoKSBjb25zdCB7IHJldHVybiBtX2xleGVyLT5wb3NpdGlvbkJlZm9y
ZUxhc3ROZXdsaW5lKCk7IH0KICAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb25CZWZvcmVMYXN0
VG9rZW4oKSBjb25zdCB7IHJldHVybiBtX2xleGVyLT5sYXN0VG9rZW5Mb2NhdGlvbigpOyB9Ci0g
ICAgVmVjdG9yPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4+JiYgY2xvc2VkVmFyaWFibGVzKCkg
eyByZXR1cm4gV1RGOjptb3ZlKG1fY2xvc2VkVmFyaWFibGVzKTsgfQorICAgIFZlY3RvcjxSZWZQ
dHI8VW5pcXVlZFN0cmluZ0ltcGw+PiYmIGNsb3NlZFZhcmlhYmxlcygpIHsgcmV0dXJuIFdURk1v
dmUobV9jbG9zZWRWYXJpYWJsZXMpOyB9CiAKIHByaXZhdGU6CiAgICAgc3RydWN0IEFsbG93SW5P
dmVycmlkZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJj
ZVByb3ZpZGVyQ2FjaGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VQ
cm92aWRlckNhY2hlLmNwcAppbmRleCBkNTk1OGU4YzRjYjhhNjZjYjgyMGRkM2U3YmJjOGE2Y2E5
NTRkZTExLi5jY2M2NzI3MmM4MWI0MTUzYTZlNjdkZDQwMThlMmQyNzY4MzBkMmMzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZVByb3ZpZGVyQ2FjaGUuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNlUHJvdmlkZXJDYWNoZS5j
cHAKQEAgLTQyLDcgKzQyLDcgQEAgdm9pZCBTb3VyY2VQcm92aWRlckNhY2hlOjpjbGVhcigpCiAK
IHZvaWQgU291cmNlUHJvdmlkZXJDYWNoZTo6YWRkKGludCBzb3VyY2VQb3NpdGlvbiwgc3RkOjp1
bmlxdWVfcHRyPFNvdXJjZVByb3ZpZGVyQ2FjaGVJdGVtPiBpdGVtKQogewotICAgIG1fbWFwLmFk
ZChzb3VyY2VQb3NpdGlvbiwgV1RGOjptb3ZlKGl0ZW0pKTsKKyAgICBtX21hcC5hZGQoc291cmNl
UG9zaXRpb24sIFdURk1vdmUoaXRlbSkpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZU5vZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wcm9maWxlci9Qcm9maWxlTm9kZS5oCmluZGV4IGZjYWVlMGUyNDIyOTljNjU2YjVhNWE3Njdh
MDQxMWQ1NWFlZGU3MTMuLjdhZDE0OWUxNzRhMjY2ZGI0YWM2OTg3Mzc5NTgzZWUyNzNlNDU0Y2Ig
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlTm9kZS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlTm9kZS5oCkBAIC0x
ODMsNyArMTgzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBtX2RhdGEuc2VsZkFu
ZFRvdGFsVGltZXMuc2V0KG5vZGUsIHN0ZDo6bWFrZV9wYWlyKHNlbGZUaW1lLCB0b3RhbFRpbWUp
KTsKICAgICAgICAgfQogCi0gICAgICAgIFByb2ZpbGVOb2RlOjpQcm9maWxlU3VidHJlZURhdGEg
cmV0dXJuVmFsdWUoKSB7IHJldHVybiBXVEY6Om1vdmUobV9kYXRhKTsgfQorICAgICAgICBQcm9m
aWxlTm9kZTo6UHJvZmlsZVN1YnRyZWVEYXRhIHJldHVyblZhbHVlKCkgeyByZXR1cm4gV1RGTW92
ZShtX2RhdGEpOyB9CiAKICAgICAgICAgUHJvZmlsZU5vZGU6OlByb2ZpbGVTdWJ0cmVlRGF0YSBt
X2RhdGE7CiAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9yZXBsYXkv
RW5jb2RlZFZhbHVlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9yZXBsYXkvRW5jb2RlZFZh
bHVlLmNwcAppbmRleCA3MjdlYmExMGRmNmQwMmI2NTE0MGJlMDAxYmE5Y2VhYTQyOGMwMzcxLi44
MDc5ODIwOWRjZDYwMzE5MzA3ZDM4MjczMzllNzc2ZTdhYWUyZmQ0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L0VuY29kZWRWYWx1ZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3JlcGxheS9FbmNvZGVkVmFsdWUuY3BwCkBAIC0xOTEsNyArMTkxLDcgQEAg
Ym9vbCBFbmNvZGVkVmFsdWU6OmdldDxFbmNvZGVkVmFsdWU+KGNvbnN0IFN0cmluZyYga2V5LCB0
eXBlbmFtZSBFbmNvZGluZ1RyYWl0czwKICAgICBpZiAoIWFzT2JqZWN0KCktPmdldFZhbHVlKGtl
eSwgdmFsdWUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBkZWNvZGVkVmFsdWUgPSBF
bmNvZGVkVmFsdWUoV1RGOjptb3ZlKHZhbHVlKSk7CisgICAgZGVjb2RlZFZhbHVlID0gRW5jb2Rl
ZFZhbHVlKFdURk1vdmUodmFsdWUpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3JlcGxheS9zY3JpcHRzL0NvZGVHZW5lcmF0b3JSZXBs
YXlJbnB1dHMucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvQ29kZUdl
bmVyYXRvclJlcGxheUlucHV0cy5weQppbmRleCBkODM4YWU1ZTZhZmEzNWViZjQ4OWVlNDQ4ZjRm
N2FlNDZiYjc4NDFjLi5kZTMyZWY2YzQzNjgzNTgwNTVhMTBhYzdjYjQ0NzgxNzM1NWU3MDQzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvQ29kZUdlbmVy
YXRvclJlcGxheUlucHV0cy5weQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L3Nj
cmlwdHMvQ29kZUdlbmVyYXRvclJlcGxheUlucHV0cy5weQpAQCAtOTc2LDcgKzk3Niw3IEBAIGNs
YXNzIEdlbmVyYXRvcjoKICAgICBkZWYgZ2VuZXJhdGVfbWVtYmVyX21vdmVfZXhwcmVzc2lvbihz
ZWxmLCBfbWVtYmVyKToKICAgICAgICAgX3R5cGUgPSBzZWxmLl9tb2RlbC5nZXRfdHlwZV9mb3Jf
bWVtYmVyKF9tZW1iZXIpCiAgICAgICAgIGlmIF90eXBlLm1vZGUgaW4gW1R5cGVNb2Rlcy5PV05F
RCwgVHlwZU1vZGVzLlNIQVJFRF06Ci0gICAgICAgICAgICByZXR1cm4gIldURjo6bW92ZSglcyki
ICUgX21lbWJlci5tZW1iZXJOYW1lCisgICAgICAgICAgICByZXR1cm4gIldURk1vdmUoJXMpIiAl
IF9tZW1iZXIubWVtYmVyTmFtZQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmV0dXJuIF9t
ZW1iZXIubWVtYmVyTmFtZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVw
bGF5L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZ2VuZXJhdGUtZW51bS13aXRoLWd1YXJkLmpzb24t
VGVzdFJlcGxheUlucHV0cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L3Njcmlw
dHMvdGVzdHMvZXhwZWN0ZWQvZ2VuZXJhdGUtZW51bS13aXRoLWd1YXJkLmpzb24tVGVzdFJlcGxh
eUlucHV0cy5jcHAKaW5kZXggMGFhNzgyMDU5NmM4MDkyMDA0YmNhZTNmYzQ4NDJkYTAxNTliZTcy
Ni4uNDg2NzU2ZTk2N2NmOGNmMzdlMzYyMmM4ZDhhZTVmNmU4NTRjYWUyYSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3JlcGxheS9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2dlbmVy
YXRlLWVudW0td2l0aC1ndWFyZC5qc29uLVRlc3RSZXBsYXlJbnB1dHMuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9yZXBsYXkvc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9nZW5lcmF0ZS1l
bnVtLXdpdGgtZ3VhcmQuanNvbi1UZXN0UmVwbGF5SW5wdXRzLmNwcApAQCAtMzksNyArMzksNyBA
QAogbmFtZXNwYWNlIFRlc3QgewogSGFuZGxlV2hlZWxFdmVudDo6SGFuZGxlV2hlZWxFdmVudChz
dGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1XaGVlbEV2ZW50PiBwbGF0Zm9ybUV2ZW50LCBQbGF0Zm9y
bVdoZWVsUGhhc2UgcGhhc2UpCiAgICAgOiBFdmVudExvb3BJbnB1dDxIYW5kbGVXaGVlbEV2ZW50
PigpCi0gICAgLCBtX3BsYXRmb3JtRXZlbnQoV1RGOjptb3ZlKHBsYXRmb3JtRXZlbnQpKQorICAg
ICwgbV9wbGF0Zm9ybUV2ZW50KFdURk1vdmUocGxhdGZvcm1FdmVudCkpCiAgICAgLCBtX3BoYXNl
KHBoYXNlKQogewogfQpAQCAtNzIsNyArNzIsNyBAQCBib29sIElucHV0VHJhaXRzPFRlc3Q6Okhh
bmRsZVdoZWVsRXZlbnQ+OjpkZWNvZGUoRW5jb2RlZFZhbHVlJiBlbmNvZGVkVmFsdWUsIHN0ZAog
ICAgIGlmICghZW5jb2RlZFZhbHVlLmdldDxUZXN0OjpQbGF0Zm9ybVdoZWVsUGhhc2U+KEFTQ0lJ
TGl0ZXJhbCgicGhhc2UiKSwgcGhhc2UpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBp
bnB1dCA9IHN0ZDo6bWFrZV91bmlxdWU8VGVzdDo6SGFuZGxlV2hlZWxFdmVudD4oV1RGOjptb3Zl
KHBsYXRmb3JtRXZlbnQpLCBwaGFzZSk7CisgICAgaW5wdXQgPSBzdGQ6Om1ha2VfdW5pcXVlPFRl
c3Q6OkhhbmRsZVdoZWVsRXZlbnQ+KFdURk1vdmUocGxhdGZvcm1FdmVudCksIHBoYXNlKTsKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KICNpZiBFTkFCTEUoRFVNTVlfRkVBVFVSRSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9yZXBsYXkvc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9nZW5l
cmF0ZS1tZW1vaXplZC10eXBlLW1vZGVzLmpzb24tVGVzdFJlcGxheUlucHV0cy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZ2VuZXJhdGUt
bWVtb2l6ZWQtdHlwZS1tb2Rlcy5qc29uLVRlc3RSZXBsYXlJbnB1dHMuY3BwCmluZGV4IDBiZTky
MDZkOGEwYzc1NjFkY2IzYjVjNDZlN2Y3YTE3NWY1NjRlMDcuLmI2N2E5ZTkyMTk5MjJiYWU5Zjhm
ZDVlOWIwOTgwYTNkMDg0ODIzN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
ZXBsYXkvc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9nZW5lcmF0ZS1tZW1vaXplZC10eXBlLW1vZGVz
Lmpzb24tVGVzdFJlcGxheUlucHV0cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Jl
cGxheS9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2dlbmVyYXRlLW1lbW9pemVkLXR5cGUtbW9kZXMu
anNvbi1UZXN0UmVwbGF5SW5wdXRzLmNwcApAQCAtNDcsNyArNDcsNyBAQCBTY2FsYXJJbnB1dDo6
flNjYWxhcklucHV0KCkKIAogTWFwSW5wdXQ6Ok1hcElucHV0KHN0ZDo6dW5pcXVlX3B0cjxNYXBU
eXBlPiBkYXRhKQogICAgIDogTm9uZGV0ZXJtaW5pc3RpY0lucHV0PE1hcElucHV0PigpCi0gICAg
LCBtX2RhdGEoV1RGOjptb3ZlKGRhdGEpKQorICAgICwgbV9kYXRhKFdURk1vdmUoZGF0YSkpCiB7
CiB9CiAKQEAgLTk1LDcgKzk1LDcgQEAgYm9vbCBJbnB1dFRyYWl0czxUZXN0OjpNYXBJbnB1dD46
OmRlY29kZShFbmNvZGVkVmFsdWUmIGVuY29kZWRWYWx1ZSwgc3RkOjp1bmlxdWUKICAgICBpZiAo
IWVuY29kZWRWYWx1ZS5nZXQ8TWFwVHlwZT4oQVNDSUlMaXRlcmFsKCJkYXRhIiksIGRhdGEpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpbnB1dCA9IHN0ZDo6bWFrZV91bmlxdWU8VGVz
dDo6TWFwSW5wdXQ+KFdURjo6bW92ZShkYXRhKSk7CisgICAgaW5wdXQgPSBzdGQ6Om1ha2VfdW5p
cXVlPFRlc3Q6Ok1hcElucHV0PihXVEZNb3ZlKGRhdGEpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uc29sZUNsaWVu
dC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db25zb2xlQ2xpZW50LmNwcApp
bmRleCAxNjZjZmQ5ODczMzJjMWFmOWU0YjFhOTM1MWEwODYxZjE4MjFhNzBiLi4wNTlmZDMzNWU3
N2JlZGYwNTJhMjA1NmExZDc4OTA1N2UwNDMwOWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db25zb2xlQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db25zb2xlQ2xpZW50LmNwcApAQCAtMTk1LDM3ICsxOTUsMzcgQEAgdm9p
ZCBDb25zb2xlQ2xpZW50OjppbnRlcm5hbE1lc3NhZ2VXaXRoVHlwZUFuZExldmVsKE1lc3NhZ2VU
eXBlIHR5cGUsIE1lc3NhZ2VMZXYKICAgICBpZiAoYXJndW1lbnRSZXF1aXJlbWVudCA9PSBBcmd1
bWVudFJlcXVpcmVkICYmICFhcmd1bWVudHMtPmFyZ3VtZW50Q291bnQoKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgbWVzc2FnZVdpdGhUeXBlQW5kTGV2ZWwodHlwZSwgbGV2ZWwsIGV4ZWMsIFdU
Rjo6bW92ZShhcmd1bWVudHMpKTsKKyAgICBtZXNzYWdlV2l0aFR5cGVBbmRMZXZlbCh0eXBlLCBs
ZXZlbCwgZXhlYywgV1RGTW92ZShhcmd1bWVudHMpKTsKIH0KIAogdm9pZCBDb25zb2xlQ2xpZW50
Ojpsb2dXaXRoTGV2ZWwoRXhlY1N0YXRlKiBleGVjLCBSZWZQdHI8U2NyaXB0QXJndW1lbnRzPiYm
IGFyZ3VtZW50cywgTWVzc2FnZUxldmVsIGxldmVsKQogewotICAgIGludGVybmFsTWVzc2FnZVdp
dGhUeXBlQW5kTGV2ZWwoTWVzc2FnZVR5cGU6OkxvZywgbGV2ZWwsIGV4ZWMsIFdURjo6bW92ZShh
cmd1bWVudHMpLCBBcmd1bWVudFJlcXVpcmVkKTsKKyAgICBpbnRlcm5hbE1lc3NhZ2VXaXRoVHlw
ZUFuZExldmVsKE1lc3NhZ2VUeXBlOjpMb2csIGxldmVsLCBleGVjLCBXVEZNb3ZlKGFyZ3VtZW50
cyksIEFyZ3VtZW50UmVxdWlyZWQpOwogfQogCiB2b2lkIENvbnNvbGVDbGllbnQ6OmNsZWFyKEV4
ZWNTdGF0ZSogZXhlYywgUmVmUHRyPFNjcmlwdEFyZ3VtZW50cz4mJiBhcmd1bWVudHMpCiB7Ci0g
ICAgaW50ZXJuYWxNZXNzYWdlV2l0aFR5cGVBbmRMZXZlbChNZXNzYWdlVHlwZTo6Q2xlYXIsIE1l
c3NhZ2VMZXZlbDo6TG9nLCBleGVjLCBXVEY6Om1vdmUoYXJndW1lbnRzKSwgQXJndW1lbnROb3RS
ZXF1aXJlZCk7CisgICAgaW50ZXJuYWxNZXNzYWdlV2l0aFR5cGVBbmRMZXZlbChNZXNzYWdlVHlw
ZTo6Q2xlYXIsIE1lc3NhZ2VMZXZlbDo6TG9nLCBleGVjLCBXVEZNb3ZlKGFyZ3VtZW50cyksIEFy
Z3VtZW50Tm90UmVxdWlyZWQpOwogfQogCiB2b2lkIENvbnNvbGVDbGllbnQ6OmRpcihFeGVjU3Rh
dGUqIGV4ZWMsIFJlZlB0cjxTY3JpcHRBcmd1bWVudHM+JiYgYXJndW1lbnRzKQogewotICAgIGlu
dGVybmFsTWVzc2FnZVdpdGhUeXBlQW5kTGV2ZWwoTWVzc2FnZVR5cGU6OkRpciwgTWVzc2FnZUxl
dmVsOjpMb2csIGV4ZWMsIFdURjo6bW92ZShhcmd1bWVudHMpLCBBcmd1bWVudFJlcXVpcmVkKTsK
KyAgICBpbnRlcm5hbE1lc3NhZ2VXaXRoVHlwZUFuZExldmVsKE1lc3NhZ2VUeXBlOjpEaXIsIE1l
c3NhZ2VMZXZlbDo6TG9nLCBleGVjLCBXVEZNb3ZlKGFyZ3VtZW50cyksIEFyZ3VtZW50UmVxdWly
ZWQpOwogfQogCiB2b2lkIENvbnNvbGVDbGllbnQ6OmRpclhNTChFeGVjU3RhdGUqIGV4ZWMsIFJl
ZlB0cjxTY3JpcHRBcmd1bWVudHM+JiYgYXJndW1lbnRzKQogewotICAgIGludGVybmFsTWVzc2Fn
ZVdpdGhUeXBlQW5kTGV2ZWwoTWVzc2FnZVR5cGU6OkRpclhNTCwgTWVzc2FnZUxldmVsOjpMb2cs
IGV4ZWMsIFdURjo6bW92ZShhcmd1bWVudHMpLCBBcmd1bWVudFJlcXVpcmVkKTsKKyAgICBpbnRl
cm5hbE1lc3NhZ2VXaXRoVHlwZUFuZExldmVsKE1lc3NhZ2VUeXBlOjpEaXJYTUwsIE1lc3NhZ2VM
ZXZlbDo6TG9nLCBleGVjLCBXVEZNb3ZlKGFyZ3VtZW50cyksIEFyZ3VtZW50UmVxdWlyZWQpOwog
fQogCiB2b2lkIENvbnNvbGVDbGllbnQ6OnRhYmxlKEV4ZWNTdGF0ZSogZXhlYywgUmVmUHRyPFNj
cmlwdEFyZ3VtZW50cz4mJiBhcmd1bWVudHMpCiB7Ci0gICAgaW50ZXJuYWxNZXNzYWdlV2l0aFR5
cGVBbmRMZXZlbChNZXNzYWdlVHlwZTo6VGFibGUsIE1lc3NhZ2VMZXZlbDo6TG9nLCBleGVjLCBX
VEY6Om1vdmUoYXJndW1lbnRzKSwgQXJndW1lbnRSZXF1aXJlZCk7CisgICAgaW50ZXJuYWxNZXNz
YWdlV2l0aFR5cGVBbmRMZXZlbChNZXNzYWdlVHlwZTo6VGFibGUsIE1lc3NhZ2VMZXZlbDo6TG9n
LCBleGVjLCBXVEZNb3ZlKGFyZ3VtZW50cyksIEFyZ3VtZW50UmVxdWlyZWQpOwogfQogCiB2b2lk
IENvbnNvbGVDbGllbnQ6OnRyYWNlKEV4ZWNTdGF0ZSogZXhlYywgUmVmUHRyPFNjcmlwdEFyZ3Vt
ZW50cz4mJiBhcmd1bWVudHMpCiB7Ci0gICAgaW50ZXJuYWxNZXNzYWdlV2l0aFR5cGVBbmRMZXZl
bChNZXNzYWdlVHlwZTo6VHJhY2UsIE1lc3NhZ2VMZXZlbDo6TG9nLCBleGVjLCBXVEY6Om1vdmUo
YXJndW1lbnRzKSwgQXJndW1lbnROb3RSZXF1aXJlZCk7CisgICAgaW50ZXJuYWxNZXNzYWdlV2l0
aFR5cGVBbmRMZXZlbChNZXNzYWdlVHlwZTo6VHJhY2UsIE1lc3NhZ2VMZXZlbDo6TG9nLCBleGVj
LCBXVEZNb3ZlKGFyZ3VtZW50cyksIEFyZ3VtZW50Tm90UmVxdWlyZWQpOwogfQogCiB2b2lkIENv
bnNvbGVDbGllbnQ6OmFzc2VydENvbmRpdGlvbihFeGVjU3RhdGUqIGV4ZWMsIFJlZlB0cjxTY3Jp
cHRBcmd1bWVudHM+JiYgYXJndW1lbnRzLCBib29sIGNvbmRpdGlvbikKQEAgLTIzMywyMiArMjMz
LDIyIEBAIHZvaWQgQ29uc29sZUNsaWVudDo6YXNzZXJ0Q29uZGl0aW9uKEV4ZWNTdGF0ZSogZXhl
YywgUmVmUHRyPFNjcmlwdEFyZ3VtZW50cz4mJiBhCiAgICAgaWYgKGNvbmRpdGlvbikKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgaW50ZXJuYWxNZXNzYWdlV2l0aFR5cGVBbmRMZXZlbChNZXNzYWdl
VHlwZTo6QXNzZXJ0LCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBleGVjLCBXVEY6Om1vdmUoYXJndW1l
bnRzKSwgQXJndW1lbnROb3RSZXF1aXJlZCk7CisgICAgaW50ZXJuYWxNZXNzYWdlV2l0aFR5cGVB
bmRMZXZlbChNZXNzYWdlVHlwZTo6QXNzZXJ0LCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBleGVjLCBX
VEZNb3ZlKGFyZ3VtZW50cyksIEFyZ3VtZW50Tm90UmVxdWlyZWQpOwogfQogCiB2b2lkIENvbnNv
bGVDbGllbnQ6Omdyb3VwKEV4ZWNTdGF0ZSogZXhlYywgUmVmUHRyPFNjcmlwdEFyZ3VtZW50cz4m
JiBhcmd1bWVudHMpCiB7Ci0gICAgaW50ZXJuYWxNZXNzYWdlV2l0aFR5cGVBbmRMZXZlbChNZXNz
YWdlVHlwZTo6U3RhcnRHcm91cCwgTWVzc2FnZUxldmVsOjpMb2csIGV4ZWMsIFdURjo6bW92ZShh
cmd1bWVudHMpLCBBcmd1bWVudE5vdFJlcXVpcmVkKTsKKyAgICBpbnRlcm5hbE1lc3NhZ2VXaXRo
VHlwZUFuZExldmVsKE1lc3NhZ2VUeXBlOjpTdGFydEdyb3VwLCBNZXNzYWdlTGV2ZWw6OkxvZywg
ZXhlYywgV1RGTW92ZShhcmd1bWVudHMpLCBBcmd1bWVudE5vdFJlcXVpcmVkKTsKIH0KIAogdm9p
ZCBDb25zb2xlQ2xpZW50Ojpncm91cENvbGxhcHNlZChFeGVjU3RhdGUqIGV4ZWMsIFJlZlB0cjxT
Y3JpcHRBcmd1bWVudHM+JiYgYXJndW1lbnRzKQogewotICAgIGludGVybmFsTWVzc2FnZVdpdGhU
eXBlQW5kTGV2ZWwoTWVzc2FnZVR5cGU6OlN0YXJ0R3JvdXBDb2xsYXBzZWQsIE1lc3NhZ2VMZXZl
bDo6TG9nLCBleGVjLCBXVEY6Om1vdmUoYXJndW1lbnRzKSwgQXJndW1lbnROb3RSZXF1aXJlZCk7
CisgICAgaW50ZXJuYWxNZXNzYWdlV2l0aFR5cGVBbmRMZXZlbChNZXNzYWdlVHlwZTo6U3RhcnRH
cm91cENvbGxhcHNlZCwgTWVzc2FnZUxldmVsOjpMb2csIGV4ZWMsIFdURk1vdmUoYXJndW1lbnRz
KSwgQXJndW1lbnROb3RSZXF1aXJlZCk7CiB9CiAKIHZvaWQgQ29uc29sZUNsaWVudDo6Z3JvdXBF
bmQoRXhlY1N0YXRlKiBleGVjLCBSZWZQdHI8U2NyaXB0QXJndW1lbnRzPiYmIGFyZ3VtZW50cykK
IHsKLSAgICBpbnRlcm5hbE1lc3NhZ2VXaXRoVHlwZUFuZExldmVsKE1lc3NhZ2VUeXBlOjpFbmRH
cm91cCwgTWVzc2FnZUxldmVsOjpMb2csIGV4ZWMsIFdURjo6bW92ZShhcmd1bWVudHMpLCBBcmd1
bWVudE5vdFJlcXVpcmVkKTsKKyAgICBpbnRlcm5hbE1lc3NhZ2VXaXRoVHlwZUFuZExldmVsKE1l
c3NhZ2VUeXBlOjpFbmRHcm91cCwgTWVzc2FnZUxldmVsOjpMb2csIGV4ZWMsIFdURk1vdmUoYXJn
dW1lbnRzKSwgQXJndW1lbnROb3RSZXF1aXJlZCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNOYXRpdmVTdGRGdW5j
dGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU05hdGl2ZVN0ZEZ1bmN0
aW9uLmNwcAppbmRleCBiYTFjNzFkNzMyMTUxNWM1Y2M5ZDc3NTIwYjlhNDFjMGY0ZDk0NGNjLi5k
ODRiODA5MmMyOWZkYzBjMDBlMzJjMzBlYWQ5YzQ2N2UxN2JmODdjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU05hdGl2ZVN0ZEZ1bmN0aW9uLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU05hdGl2ZVN0ZEZ1bmN0aW9uLmNwcApAQCAt
NjcsNyArNjcsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBydW5TdGRG
dW5jdGlvbihFeGVjU3RhdGUqIHN0YXRlKQogSlNOYXRpdmVTdGRGdW5jdGlvbiogSlNOYXRpdmVT
dGRGdW5jdGlvbjo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
aW50IGxlbmd0aCwgY29uc3QgU3RyaW5nJiBuYW1lLCBOYXRpdmVTdGRGdW5jdGlvbiYmIG5hdGl2
ZVN0ZEZ1bmN0aW9uLCBJbnRyaW5zaWMgaW50cmluc2ljLCBOYXRpdmVGdW5jdGlvbiBuYXRpdmVD
b25zdHJ1Y3RvcikKIHsKICAgICBOYXRpdmVFeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gbG9va1Vw
T3JDcmVhdGVOYXRpdmVFeGVjdXRhYmxlKHZtLCBydW5TdGRGdW5jdGlvbiwgaW50cmluc2ljLCBu
YXRpdmVDb25zdHJ1Y3Rvcik7Ci0gICAgTmF0aXZlU3RkRnVuY3Rpb25DZWxsKiBmdW5jdGlvbkNl
bGwgPSBOYXRpdmVTdGRGdW5jdGlvbkNlbGw6OmNyZWF0ZSh2bSwgV1RGOjptb3ZlKG5hdGl2ZVN0
ZEZ1bmN0aW9uKSk7CisgICAgTmF0aXZlU3RkRnVuY3Rpb25DZWxsKiBmdW5jdGlvbkNlbGwgPSBO
YXRpdmVTdGRGdW5jdGlvbkNlbGw6OmNyZWF0ZSh2bSwgV1RGTW92ZShuYXRpdmVTdGRGdW5jdGlv
bikpOwogICAgIEpTTmF0aXZlU3RkRnVuY3Rpb24qIGZ1bmN0aW9uID0gbmV3IChOb3ROdWxsLCBh
bGxvY2F0ZUNlbGw8SlNOYXRpdmVTdGRGdW5jdGlvbj4odm0uaGVhcCkpIEpTTmF0aXZlU3RkRnVu
Y3Rpb24odm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5uYXRpdmVTdGRGdW5jdGlvblN0
cnVjdHVyZSgpKTsKICAgICBmdW5jdGlvbi0+ZmluaXNoQ3JlYXRpb24odm0sIGV4ZWN1dGFibGUs
IGxlbmd0aCwgbmFtZSwgZnVuY3Rpb25DZWxsKTsKICAgICByZXR1cm4gZnVuY3Rpb247CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAppbmRleCAyYWM4N2QzYTdmZDcwYTJj
M2UwZWIyMTliZDdjMDk4MzQ4MjBjMWRjLi4yNmM5ZGM4N2U3NzE2ZTlhNmYzNDkwZDBjYjA2MDU5
NjZiNGUwZjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0
cmluZy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgKQEAg
LTYwOSw3ICs2MDksNyBAQCBpbmxpbmUgSlNTdHJpbmcqIGpzU2luZ2xlQ2hhcmFjdGVyU3RyaW5n
KEV4ZWNTdGF0ZSogZXhlYywgVUNoYXIgYykgeyByZXR1cm4ganNTaQogaW5saW5lIEpTU3RyaW5n
KiBqc1N1YnN0cmluZzgoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIHMsIHVuc2lnbmVk
IG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKSB7IHJldHVybiBqc1N1YnN0cmluZzgoJmV4ZWMtPnZt
KCksIHMsIG9mZnNldCwgbGVuZ3RoKTsgfQogaW5saW5lIEpTU3RyaW5nKiBqc1N1YnN0cmluZyhF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgcywgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25l
ZCBsZW5ndGgpIHsgcmV0dXJuIGpzU3Vic3RyaW5nKCZleGVjLT52bSgpLCBzLCBvZmZzZXQsIGxl
bmd0aCk7IH0KIGlubGluZSBKU1N0cmluZyoganNOb250cml2aWFsU3RyaW5nKEV4ZWNTdGF0ZSog
ZXhlYywgY29uc3QgU3RyaW5nJiBzKSB7IHJldHVybiBqc05vbnRyaXZpYWxTdHJpbmcoJmV4ZWMt
PnZtKCksIHMpOyB9Ci1pbmxpbmUgSlNTdHJpbmcqIGpzTm9udHJpdmlhbFN0cmluZyhFeGVjU3Rh
dGUqIGV4ZWMsIFN0cmluZyYmIHMpIHsgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZygmZXhlYy0+
dm0oKSwgV1RGOjptb3ZlKHMpKTsgfQoraW5saW5lIEpTU3RyaW5nKiBqc05vbnRyaXZpYWxTdHJp
bmcoRXhlY1N0YXRlKiBleGVjLCBTdHJpbmcmJiBzKSB7IHJldHVybiBqc05vbnRyaXZpYWxTdHJp
bmcoJmV4ZWMtPnZtKCksIFdURk1vdmUocykpOyB9CiBpbmxpbmUgSlNTdHJpbmcqIGpzT3duZWRT
dHJpbmcoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIHMpIHsgcmV0dXJuIGpzT3duZWRT
dHJpbmcoJmV4ZWMtPnZtKCksIHMpOyB9CiAKIEFMV0FZU19JTkxJTkUgSlNTdHJpbmcqIGpzU3Ry
aW5nV2l0aENhY2hlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiBzKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmdKb2luZXIuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmdKb2luZXIuY3BwCmluZGV4IDZmMTk1
OTM4ODE5NjZlOTNlNGEzOWYyNjZlYjdiY2U2ZDdmOWM1YTAuLjU3ZmZkZDkyOTQ4ZjUyMWNlYTQ2
NWM5ODIwODI0OGI3M2E4YmE5OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTU3RyaW5nSm9pbmVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1N0cmluZ0pvaW5lci5jcHAKQEAgLTExMyw3ICsxMTMsNyBAQCBKU1ZhbHVlIEpTU3Ry
aW5nSm9pbmVyOjpqb2luKEV4ZWNTdGF0ZSYgc3RhdGUpCiAgICAgaWYgKHJlc3VsdC5pc051bGwo
KSkKICAgICAgICAgcmV0dXJuIHRocm93T3V0T2ZNZW1vcnlFcnJvcigmc3RhdGUpOwogCi0gICAg
cmV0dXJuIGpzU3RyaW5nKCZzdGF0ZSwgV1RGOjptb3ZlKHJlc3VsdCkpOworICAgIHJldHVybiBq
c1N0cmluZygmc3RhdGUsIFdURk1vdmUocmVzdWx0KSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nSm9pbmVyLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZ0pvaW5lci5oCmluZGV4IDIyNDc4NDQ5MzNhMjZj
N2I0OTdlNjJlZmVhNTI2ODY5NDc4NWUxMzQuLmM2ZGFjZGQ4NDUxZDgyYTc3MzNjMGYzNjMwOTg0
MzZkZDVhNDA5OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
U3RyaW5nSm9pbmVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJp
bmdKb2luZXIuaApAQCAtNzQsNyArNzQsNyBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgSlNTdHJpbmdK
b2luZXI6OmFwcGVuZChTdHJpbmdWaWV3V2l0aFVuZGVybHlpbmdTdHJpbmcmJiBzdHJpbgogewog
ICAgIG1fYWNjdW11bGF0ZWRTdHJpbmdzTGVuZ3RoICs9IHN0cmluZy52aWV3Lmxlbmd0aCgpOwog
ICAgIG1faXNBbGw4Qml0ID0gbV9pc0FsbDhCaXQgJiYgc3RyaW5nLnZpZXcuaXM4Qml0KCk7Ci0g
ICAgbV9zdHJpbmdzLnVuY2hlY2tlZEFwcGVuZChXVEY6Om1vdmUoc3RyaW5nKSk7CisgICAgbV9z
dHJpbmdzLnVuY2hlY2tlZEFwcGVuZChXVEZNb3ZlKHN0cmluZykpOwogfQogCiBBTFdBWVNfSU5M
SU5FIHZvaWQgSlNTdHJpbmdKb2luZXI6OmFwcGVuZDhCaXQoY29uc3QgU3RyaW5nJiBzdHJpbmcp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVTdGRGdW5j
dGlvbkNlbGwuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlU3RkRnVu
Y3Rpb25DZWxsLmNwcAppbmRleCA4YjBjMTgxOWYxZmYwNjk5NDZjNmNlYTEzNjc4NTFlNzZkZmZj
ZGI5Li41ODFmMzFhZWRhYTRkYjlmMzk5YTVhNmJiY2NhYjY3YTI2YTE0NzFlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVTdGRGdW5jdGlvbkNlbGwuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZVN0ZEZ1bmN0aW9uQ2Vs
bC5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgY29uc3QgQ2xhc3NJbmZvIE5hdGl2ZVN0ZEZ1bmN0aW9u
Q2VsbDo6c19pbmZvID0geyAiTmF0aXZlU3RkRnVuY3Rpb25DZWxsIiwgbnVsbHAKIAogTmF0aXZl
U3RkRnVuY3Rpb25DZWxsKiBOYXRpdmVTdGRGdW5jdGlvbkNlbGw6OmNyZWF0ZShWTSYgdm0sIE5h
dGl2ZVN0ZEZ1bmN0aW9uJiYgZnVuY3Rpb24pCiB7Ci0gICAgTmF0aXZlU3RkRnVuY3Rpb25DZWxs
KiBuYXRpdmVGdW5jdGlvbiA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPE5hdGl2ZVN0ZEZ1
bmN0aW9uQ2VsbD4odm0uaGVhcCkpIE5hdGl2ZVN0ZEZ1bmN0aW9uQ2VsbCh2bSwgV1RGOjptb3Zl
KGZ1bmN0aW9uKSk7CisgICAgTmF0aXZlU3RkRnVuY3Rpb25DZWxsKiBuYXRpdmVGdW5jdGlvbiA9
IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPE5hdGl2ZVN0ZEZ1bmN0aW9uQ2VsbD4odm0uaGVh
cCkpIE5hdGl2ZVN0ZEZ1bmN0aW9uQ2VsbCh2bSwgV1RGTW92ZShmdW5jdGlvbikpOwogICAgIG5h
dGl2ZUZ1bmN0aW9uLT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgcmV0dXJuIG5hdGl2ZUZ1bmN0
aW9uOwogfQpAQCAtNDUsNyArNDUsNyBAQCBOYXRpdmVTdGRGdW5jdGlvbkNlbGwqIE5hdGl2ZVN0
ZEZ1bmN0aW9uQ2VsbDo6Y3JlYXRlKFZNJiB2bSwgTmF0aXZlU3RkRnVuY3Rpb24mJgogCiBOYXRp
dmVTdGRGdW5jdGlvbkNlbGw6Ok5hdGl2ZVN0ZEZ1bmN0aW9uQ2VsbChWTSYgdm0sIE5hdGl2ZVN0
ZEZ1bmN0aW9uJiYgZnVuY3Rpb24pCiAgICAgOiBCYXNlKHZtLCB2bS5uYXRpdmVTdGRGdW5jdGlv
bkNlbGxTdHJ1Y3R1cmUuZ2V0KCkpCi0gICAgLCBtX2Z1bmN0aW9uKFdURjo6bW92ZShmdW5jdGlv
bikpCisgICAgLCBtX2Z1bmN0aW9uKFdURk1vdmUoZnVuY3Rpb24pKQogewogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZWRBcmd1bWVudHNUYWJsZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZWRBcmd1bWVudHNUYWJsZS5j
cHAKaW5kZXggOWJlNDc5N2IwMzViMTdjMjZhYjBlYzAwNmQ0NGU1ZGVlNGRiNTk3NC4uMjNmNTM2
ZDQ5MmNmMmFlNGRkZmVhZTc5NjYwM2NkNjM5YjgzZDMzZiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVkQXJndW1lbnRzVGFibGUuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlZEFyZ3VtZW50c1RhYmxlLmNwcApAQCAtNzks
NyArNzksNyBAQCBTY29wZWRBcmd1bWVudHNUYWJsZSogU2NvcGVkQXJndW1lbnRzVGFibGU6OnNl
dExlbmd0aChWTSYgdm0sIHVpbnQzMl90IG5ld0xlbmd0aAogICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSBzdGQ6Om1pbihtX2xlbmd0aCwgbmV3TGVuZ3RoKTsgaS0tOykKICAgICAgICAgICAgIG5l
d0FyZ3VtZW50c1tpXSA9IG1fYXJndW1lbnRzW2ldOwogICAgICAgICBtX2xlbmd0aCA9IG5ld0xl
bmd0aDsKLSAgICAgICAgbV9hcmd1bWVudHMgPSBXVEY6Om1vdmUobmV3QXJndW1lbnRzKTsKKyAg
ICAgICAgbV9hcmd1bWVudHMgPSBXVEZNb3ZlKG5ld0FyZ3VtZW50cyk7CiAgICAgICAgIHJldHVy
biB0aGlzOwogICAgIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cnVjdHVyZUlEVGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RydWN0dXJlSURUYWJsZS5jcHAKaW5kZXggOGFhODliMDY2ZTY2MzM4ZGFhZTA1M2E0ODk4
ZjMzZjFhYjEwMTVkYS4uNjMxZmM2ZjYyNmExZWZlZjE0NWE1YWVlNWFmYTk4YTMxYjgxZWU5OSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSURUYWJs
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSURUYWJs
ZS5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgdm9pZCBTdHJ1Y3R1cmVJRFRhYmxlOjpyZXNpemUoc2l6
ZV90IG5ld0NhcGFjaXR5KQogICAgIHN3YXAobV90YWJsZSwgbmV3VGFibGUpOwogCiAgICAgLy8g
UHV0IHRoZSBvbGQgdGFibGUgKG5vdyBsYWJlbGVkIGFzIG5ldykgaW50byB0aGUgbGlzdCBvZiBv
bGQgdGFibGVzLgotICAgIG1fb2xkVGFibGVzLmFwcGVuZChXVEY6Om1vdmUobmV3VGFibGUpKTsK
KyAgICBtX29sZFRhYmxlcy5hcHBlbmQoV1RGTW92ZShuZXdUYWJsZSkpOwogCiAgICAgLy8gVXBk
YXRlIHRoZSBjYXBhY2l0eS4KICAgICBtX2NhcGFjaXR5ID0gbmV3Q2FwYWNpdHk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlU2V0LmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVTZXQuY3BwCmluZGV4IGEwMmUyYTY4NjEzODMyOGEz
MTg3ZDljYmVlOGU5ODA3OWVhYWU2OWYuLmE1ZWM5NTJkNzdiMTY5OWY4ZmZkZWQwMTRmYjBiMThm
MzQ1MmNjNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVT
ZXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVTZXQuY3BwCkBA
IC01MTcsNyArNTE3LDcgQEAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlN0cnVj
dHVyZURlc2NyaXB0aW9uPiBTdHJ1Y3R1cmVTaGFwZTo6aW5zcGVjdG8KICAgICAgICAgaWYgKGN1
cnJlbnRTaGFwZS0+bV9wcm90bykgewogICAgICAgICAgICAgYXV0byBuZXh0T2JqZWN0ID0gSW5z
cGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6U3RydWN0dXJlRGVzY3JpcHRpb246OmNyZWF0ZSgp
LnJlbGVhc2UoKTsKICAgICAgICAgICAgIGN1cnJlbnRPYmplY3QtPnNldFByb3RvdHlwZVN0cnVj
dHVyZSgmbmV4dE9iamVjdC5nZXQoKSk7Ci0gICAgICAgICAgICBjdXJyZW50T2JqZWN0ID0gV1RG
Ojptb3ZlKG5leHRPYmplY3QpOworICAgICAgICAgICAgY3VycmVudE9iamVjdCA9IFdURk1vdmUo
bmV4dE9iamVjdCk7CiAgICAgICAgIH0KIAogICAgICAgICBjdXJyZW50U2hhcGUgPSBjdXJyZW50
U2hhcGUtPm1fcHJvdG87CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9XZWFrR0NNYXAuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtHQ01hcC5o
CmluZGV4IDE2ZDNkNDQwMDA0Mzc4NTNmYjgzZGEyYWIxODMwMzAzMzE5YjRiOWUuLjI2MjcwMzBl
MDQ3MjE2MGU3YWM0NWM4MzFiOGE1NGYwMzhhYzNkMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1dlYWtHQ01hcC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1dlYWtHQ01hcC5oCkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKIAogICAgIEFk
ZFJlc3VsdCBzZXQoY29uc3QgS2V5VHlwZSYga2V5LCBWYWx1ZVR5cGUgdmFsdWUpCiAgICAgewot
ICAgICAgICByZXR1cm4gbV9tYXAuc2V0KGtleSwgV1RGOjptb3ZlKHZhbHVlKSk7CisgICAgICAg
IHJldHVybiBtX21hcC5zZXQoa2V5LCBXVEZNb3ZlKHZhbHVlKSk7CiAgICAgfQogCiAgICAgYm9v
bCByZW1vdmUoY29uc3QgS2V5VHlwZSYga2V5KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rvb2xzL0NvZGVQcm9maWxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMv
Q29kZVByb2ZpbGUuaAppbmRleCA0MmY2ZGU1MGNhNGE2OTk3NDEzNDk1N2IwMDcxMzQ4OThjYWY5
OWZiLi4zN2VkMjJlNDY5MTYxMDM4Nzk2NDI0MjFmMDQyZTVmZjc0OTk3MTRlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvQ29kZVByb2ZpbGUuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdG9vbHMvQ29kZVByb2ZpbGUuaApAQCAtNTQsNyArNTQsNyBAQCBwdWJs
aWM6CiAgICAgCiAgICAgdm9pZCBhZGRDaGlsZChzdGQ6OnVuaXF1ZV9wdHI8Q29kZVByb2ZpbGU+
IGNoaWxkKQogICAgIHsKLSAgICAgICAgbV9jaGlsZHJlbi5hcHBlbmQoV1RGOjptb3ZlKGNoaWxk
KSk7CisgICAgICAgIG1fY2hpbGRyZW4uYXBwZW5kKFdURk1vdmUoY2hpbGQpKTsKICAgICB9CiAK
IHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySW50
ZXJwcmV0ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckludGVycHJldGVy
LmNwcAppbmRleCBkNDUwOTZjZTM1OTJjYjhjYmVjNzIxYWRhNDlkNGQyNTZhNDlhNzE0Li45OWI3
MzE1ODhkYmJhNWY5MTY1MjliOWY5ZWRjZjMwNzA2NzIxZmFiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUveWFyci9ZYXJySW50ZXJwcmV0ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS95YXJyL1lhcnJJbnRlcnByZXRlci5jcHAKQEAgLTE0NzgsNyArMTQ3OCw3IEBA
IHB1YmxpYzoKICAgICAgICAgZW1pdERpc2p1bmN0aW9uKG1fcGF0dGVybi5tX2JvZHkpOwogICAg
ICAgICByZWdleEVuZCgpOwogCi0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEJ5dGVj
b2RlUGF0dGVybj4oV1RGOjptb3ZlKG1fYm9keURpc2p1bmN0aW9uKSwgbV9hbGxQYXJlbnRoZXNl
c0luZm8sIG1fcGF0dGVybiwgYWxsb2NhdG9yKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8Qnl0ZWNvZGVQYXR0ZXJuPihXVEZNb3ZlKG1fYm9keURpc2p1bmN0aW9uKSwgbV9hbGxQ
YXJlbnRoZXNlc0luZm8sIG1fcGF0dGVybiwgYWxsb2NhdG9yKTsKICAgICB9CiAKICAgICB2b2lk
IGNoZWNrSW5wdXQodW5zaWduZWQgY291bnQpCkBAIC0xNzI1LDcgKzE3MjUsNyBAQCBwdWJsaWM6
CiAgICAgICAgIG1fYm9keURpc2p1bmN0aW9uLT50ZXJtcy5zaHJpbmsoYmVnaW5UZXJtKTsKIAog
ICAgICAgICBtX2JvZHlEaXNqdW5jdGlvbi0+dGVybXMuYXBwZW5kKEJ5dGVUZXJtKEJ5dGVUZXJt
OjpUeXBlUGFyZW50aGVzZXNTdWJwYXR0ZXJuLCBzdWJwYXR0ZXJuSWQsIHBhcmVudGhlc2VzRGlz
anVuY3Rpb24uZ2V0KCksIGNhcHR1cmUsIGlucHV0UG9zaXRpb24pKTsKLSAgICAgICAgbV9hbGxQ
YXJlbnRoZXNlc0luZm8uYXBwZW5kKFdURjo6bW92ZShwYXJlbnRoZXNlc0Rpc2p1bmN0aW9uKSk7
CisgICAgICAgIG1fYWxsUGFyZW50aGVzZXNJbmZvLmFwcGVuZChXVEZNb3ZlKHBhcmVudGhlc2Vz
RGlzanVuY3Rpb24pKTsKIAogICAgICAgICBtX2JvZHlEaXNqdW5jdGlvbi0+dGVybXNbYmVnaW5U
ZXJtXS5hdG9tLnF1YW50aXR5Q291bnQgPSBxdWFudGl0eUNvdW50LnVuc2FmZUdldCgpOwogICAg
ICAgICBtX2JvZHlEaXNqdW5jdGlvbi0+dGVybXNbYmVnaW5UZXJtXS5hdG9tLnF1YW50aXR5VHlw
ZSA9IHF1YW50aXR5VHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJy
L1lhcnJJbnRlcnByZXRlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckludGVy
cHJldGVyLmgKaW5kZXggZTNkZWEyNDY3NDg1MTRhMDAwZWI1MWMzMmM5NzVkMDM4MWU5Yzk0YS4u
OTI2MDljZWRmMGNlMDE3NjdiMWE0ZmM3Nzk3MjRjYzcyNTk0ZTJiMSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckludGVycHJldGVyLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3lhcnIvWWFyckludGVycHJldGVyLmgKQEAgLTMzNiw3ICszMzYsNyBAQCBz
dHJ1Y3QgQnl0ZWNvZGVQYXR0ZXJuIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKICAgICBCeXRlY29kZVBhdHRlcm4oc3RkOjp1bmlxdWVfcHRyPEJ5dGVEaXNqdW5jdGlv
bj4gYm9keSwgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlRGlzanVuY3Rpb24+PiYgcGFyZW50
aGVzZXNJbmZvVG9BZG9wdCwgWWFyclBhdHRlcm4mIHBhdHRlcm4sIEJ1bXBQb2ludGVyQWxsb2Nh
dG9yKiBhbGxvY2F0b3IpCi0gICAgICAgIDogbV9ib2R5KFdURjo6bW92ZShib2R5KSkKKyAgICAg
ICAgOiBtX2JvZHkoV1RGTW92ZShib2R5KSkKICAgICAgICAgLCBtX2lnbm9yZUNhc2UocGF0dGVy
bi5tX2lnbm9yZUNhc2UpCiAgICAgICAgICwgbV9tdWx0aWxpbmUocGF0dGVybi5tX211bHRpbGlu
ZSkKICAgICAgICAgLCBtX2FsbG9jYXRvcihhbGxvY2F0b3IpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0dGVybi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUveWFyci9ZYXJyUGF0dGVybi5jcHAKaW5kZXggZGY1Zjk0OWYwMjZjYzQyZjIxZTYzM2YzNDU4
ZmRkZWE3YjAyNDU1Yi4uMDAzMzliNzU1YTI3ZWZlM2FiODdlZDU0OWRkMzVlOGE1ZjYyNzM3NCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBhdHRlcm4uY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmNwcApAQCAtMjc3LDcg
KzI3Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgYXV0byBib2R5ID0gc3RkOjptYWtlX3VuaXF1ZTxQ
YXR0ZXJuRGlzanVuY3Rpb24+KCk7CiAgICAgICAgIG1fcGF0dGVybi5tX2JvZHkgPSBib2R5Lmdl
dCgpOwogICAgICAgICBtX2FsdGVybmF0aXZlID0gYm9keS0+YWRkTmV3QWx0ZXJuYXRpdmUoKTsK
LSAgICAgICAgbV9wYXR0ZXJuLm1fZGlzanVuY3Rpb25zLmFwcGVuZChXVEY6Om1vdmUoYm9keSkp
OworICAgICAgICBtX3BhdHRlcm4ubV9kaXNqdW5jdGlvbnMuYXBwZW5kKFdURk1vdmUoYm9keSkp
OwogICAgIH0KIAogICAgIH5ZYXJyUGF0dGVybkNvbnN0cnVjdG9yKCkKQEAgLTI5Miw3ICsyOTIs
NyBAQCBwdWJsaWM6CiAgICAgICAgIGF1dG8gYm9keSA9IHN0ZDo6bWFrZV91bmlxdWU8UGF0dGVy
bkRpc2p1bmN0aW9uPigpOwogICAgICAgICBtX3BhdHRlcm4ubV9ib2R5ID0gYm9keS5nZXQoKTsK
ICAgICAgICAgbV9hbHRlcm5hdGl2ZSA9IGJvZHktPmFkZE5ld0FsdGVybmF0aXZlKCk7Ci0gICAg
ICAgIG1fcGF0dGVybi5tX2Rpc2p1bmN0aW9ucy5hcHBlbmQoV1RGOjptb3ZlKGJvZHkpKTsKKyAg
ICAgICAgbV9wYXR0ZXJuLm1fZGlzanVuY3Rpb25zLmFwcGVuZChXVEZNb3ZlKGJvZHkpKTsKICAg
ICB9CiAgICAgCiAgICAgdm9pZCBhc3NlcnRpb25CT0woKQpAQCAtMzMxLDcgKzMzMSw3IEBAIHB1
YmxpYzoKICAgICAgICAgbV9jaGFyYWN0ZXJDbGFzc0NvbnN0cnVjdG9yLnB1dFVuaWNvZGVJZ25v
cmVDYXNlKGNoLCBpbmZvKTsKICAgICAgICAgYXV0byBuZXdDaGFyYWN0ZXJDbGFzcyA9IG1fY2hh
cmFjdGVyQ2xhc3NDb25zdHJ1Y3Rvci5jaGFyQ2xhc3MoKTsKICAgICAgICAgbV9hbHRlcm5hdGl2
ZS0+bV90ZXJtcy5hcHBlbmQoUGF0dGVyblRlcm0obmV3Q2hhcmFjdGVyQ2xhc3MuZ2V0KCksIGZh
bHNlKSk7Ci0gICAgICAgIG1fcGF0dGVybi5tX3VzZXJDaGFyYWN0ZXJDbGFzc2VzLmFwcGVuZChX
VEY6Om1vdmUobmV3Q2hhcmFjdGVyQ2xhc3MpKTsKKyAgICAgICAgbV9wYXR0ZXJuLm1fdXNlckNo
YXJhY3RlckNsYXNzZXMuYXBwZW5kKFdURk1vdmUobmV3Q2hhcmFjdGVyQ2xhc3MpKTsKICAgICB9
CiAKICAgICB2b2lkIGF0b21CdWlsdEluQ2hhcmFjdGVyQ2xhc3MoQnVpbHRJbkNoYXJhY3RlckNs
YXNzSUQgY2xhc3NJRCwgYm9vbCBpbnZlcnQpCkBAIC0zOTMsNyArMzkzLDcgQEAgcHVibGljOgog
ICAgIHsKICAgICAgICAgYXV0byBuZXdDaGFyYWN0ZXJDbGFzcyA9IG1fY2hhcmFjdGVyQ2xhc3ND
b25zdHJ1Y3Rvci5jaGFyQ2xhc3MoKTsKICAgICAgICAgbV9hbHRlcm5hdGl2ZS0+bV90ZXJtcy5h
cHBlbmQoUGF0dGVyblRlcm0obmV3Q2hhcmFjdGVyQ2xhc3MuZ2V0KCksIG1faW52ZXJ0Q2hhcmFj
dGVyQ2xhc3MpKTsKLSAgICAgICAgbV9wYXR0ZXJuLm1fdXNlckNoYXJhY3RlckNsYXNzZXMuYXBw
ZW5kKFdURjo6bW92ZShuZXdDaGFyYWN0ZXJDbGFzcykpOworICAgICAgICBtX3BhdHRlcm4ubV91
c2VyQ2hhcmFjdGVyQ2xhc3Nlcy5hcHBlbmQoV1RGTW92ZShuZXdDaGFyYWN0ZXJDbGFzcykpOwog
ICAgIH0KIAogICAgIHZvaWQgYXRvbVBhcmVudGhlc2VzU3VicGF0dGVybkJlZ2luKGJvb2wgY2Fw
dHVyZSA9IHRydWUpCkBAIC00MDUsNyArNDA1LDcgQEAgcHVibGljOgogICAgICAgICBhdXRvIHBh
cmVudGhlc2VzRGlzanVuY3Rpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFBhdHRlcm5EaXNqdW5jdGlv
bj4obV9hbHRlcm5hdGl2ZSk7CiAgICAgICAgIG1fYWx0ZXJuYXRpdmUtPm1fdGVybXMuYXBwZW5k
KFBhdHRlcm5UZXJtKFBhdHRlcm5UZXJtOjpUeXBlUGFyZW50aGVzZXNTdWJwYXR0ZXJuLCBzdWJw
YXR0ZXJuSWQsIHBhcmVudGhlc2VzRGlzanVuY3Rpb24uZ2V0KCksIGNhcHR1cmUsIGZhbHNlKSk7
CiAgICAgICAgIG1fYWx0ZXJuYXRpdmUgPSBwYXJlbnRoZXNlc0Rpc2p1bmN0aW9uLT5hZGROZXdB
bHRlcm5hdGl2ZSgpOwotICAgICAgICBtX3BhdHRlcm4ubV9kaXNqdW5jdGlvbnMuYXBwZW5kKFdU
Rjo6bW92ZShwYXJlbnRoZXNlc0Rpc2p1bmN0aW9uKSk7CisgICAgICAgIG1fcGF0dGVybi5tX2Rp
c2p1bmN0aW9ucy5hcHBlbmQoV1RGTW92ZShwYXJlbnRoZXNlc0Rpc2p1bmN0aW9uKSk7CiAgICAg
fQogCiAgICAgdm9pZCBhdG9tUGFyZW50aGV0aWNhbEFzc2VydGlvbkJlZ2luKGJvb2wgaW52ZXJ0
ID0gZmFsc2UpCkBAIC00MTQsNyArNDE0LDcgQEAgcHVibGljOgogICAgICAgICBtX2FsdGVybmF0
aXZlLT5tX3Rlcm1zLmFwcGVuZChQYXR0ZXJuVGVybShQYXR0ZXJuVGVybTo6VHlwZVBhcmVudGhl
dGljYWxBc3NlcnRpb24sIG1fcGF0dGVybi5tX251bVN1YnBhdHRlcm5zICsgMSwgcGFyZW50aGVz
ZXNEaXNqdW5jdGlvbi5nZXQoKSwgZmFsc2UsIGludmVydCkpOwogICAgICAgICBtX2FsdGVybmF0
aXZlID0gcGFyZW50aGVzZXNEaXNqdW5jdGlvbi0+YWRkTmV3QWx0ZXJuYXRpdmUoKTsKICAgICAg
ICAgbV9pbnZlcnRQYXJlbnRoZXRpY2FsQXNzZXJ0aW9uID0gaW52ZXJ0OwotICAgICAgICBtX3Bh
dHRlcm4ubV9kaXNqdW5jdGlvbnMuYXBwZW5kKFdURjo6bW92ZShwYXJlbnRoZXNlc0Rpc2p1bmN0
aW9uKSk7CisgICAgICAgIG1fcGF0dGVybi5tX2Rpc2p1bmN0aW9ucy5hcHBlbmQoV1RGTW92ZShw
YXJlbnRoZXNlc0Rpc2p1bmN0aW9uKSk7CiAgICAgfQogCiAgICAgdm9pZCBhdG9tUGFyZW50aGVz
ZXNFbmQoKQpAQCAtNDk4LDcgKzQ5OCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiAw
OwogCiAgICAgICAgIFBhdHRlcm5EaXNqdW5jdGlvbiogY29waWVkRGlzanVuY3Rpb24gPSBuZXdE
aXNqdW5jdGlvbi5nZXQoKTsKLSAgICAgICAgbV9wYXR0ZXJuLm1fZGlzanVuY3Rpb25zLmFwcGVu
ZChXVEY6Om1vdmUobmV3RGlzanVuY3Rpb24pKTsKKyAgICAgICAgbV9wYXR0ZXJuLm1fZGlzanVu
Y3Rpb25zLmFwcGVuZChXVEZNb3ZlKG5ld0Rpc2p1bmN0aW9uKSk7CiAgICAgICAgIHJldHVybiBj
b3BpZWREaXNqdW5jdGlvbjsKICAgICB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi9EZXF1ZS5oIGIvU291cmNlL1dURi93dGYvRGVxdWUuaAppbmRleCAwM2FjYjZkNGIyODg0YjU1
MGUwN2E5ZTUxMzYwYzM3YTQ3MDY2NjBhLi4yMjA1YTA3YzFmZmIxNDlhZGU3OWYxNWQ1ZTI4YjE0
ZjgyMjlmOGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9EZXF1ZS5oCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL0RlcXVlLmgKQEAgLTQyMCw3ICs0MjAsNyBAQCB2b2lkIERlcXVlPFQsIGlubGlu
ZUNhcGFjaXR5Pjo6ZXhwYW5kQ2FwYWNpdHkoKQogdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90
IGlubGluZUNhcGFjaXR5PgogaW5saW5lIGF1dG8gRGVxdWU8VCwgaW5saW5lQ2FwYWNpdHk+Ojp0
YWtlRmlyc3QoKSAtPiBUCiB7Ci0gICAgVCBvbGRGaXJzdCA9IFdURjo6bW92ZShmaXJzdCgpKTsK
KyAgICBUIG9sZEZpcnN0ID0gV1RGTW92ZShmaXJzdCgpKTsKICAgICByZW1vdmVGaXJzdCgpOwog
ICAgIHJldHVybiBvbGRGaXJzdDsKIH0KQEAgLTQyOCw3ICs0MjgsNyBAQCBpbmxpbmUgYXV0byBE
ZXF1ZTxULCBpbmxpbmVDYXBhY2l0eT46OnRha2VGaXJzdCgpIC0+IFQKIHRlbXBsYXRlPHR5cGVu
YW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KIGlubGluZSBhdXRvIERlcXVlPFQsIGlubGlu
ZUNhcGFjaXR5Pjo6dGFrZUxhc3QoKSAtPiBUCiB7Ci0gICAgVCBvbGRMYXN0ID0gV1RGOjptb3Zl
KGxhc3QoKSk7CisgICAgVCBvbGRMYXN0ID0gV1RGTW92ZShsYXN0KCkpOwogICAgIHJlbW92ZUxh
c3QoKTsKICAgICByZXR1cm4gb2xkTGFzdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L0hhc2hNYXAuaCBiL1NvdXJjZS9XVEYvd3RmL0hhc2hNYXAuaAppbmRleCAwMjM1OTI4MmM2YjYz
MDk2ZmE4MGY3ZWUyMzY4OWNlZGVmMzViOWY1Li43ZmNiZWI5NWFmZGNkMTY4MjNlZDAyMGQwN2Qy
N2VlZDNhNDMwNDE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9IYXNoTWFwLmgKKysrIGIv
U291cmNlL1dURi93dGYvSGFzaE1hcC5oCkBAIC0zMDcsNyArMzA3LDcgQEAgdGVtcGxhdGU8dHlw
ZW5hbWUgS2V5QXJnLCB0eXBlbmFtZSBNYXBwZWRBcmcsIHR5cGVuYW1lIEhhc2hBcmcsIHR5cGVu
YW1lIEtleVRyYWkKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiBhdXRvIEhhc2hNYXA8S2V5QXJnLCBN
YXBwZWRBcmcsIEhhc2hBcmcsIEtleVRyYWl0c0FyZywgTWFwcGVkVHJhaXRzQXJnPjo6c2V0KEtl
eVR5cGUmJiBrZXksIFQmJiBtYXBwZWQpIC0+IEFkZFJlc3VsdAogewotICAgIHJldHVybiBpbmxp
bmVTZXQoV1RGOjptb3ZlKGtleSksIHN0ZDo6Zm9yd2FyZDxUPihtYXBwZWQpKTsKKyAgICByZXR1
cm4gaW5saW5lU2V0KFdURk1vdmUoa2V5KSwgc3RkOjpmb3J3YXJkPFQ+KG1hcHBlZCkpOwogfQog
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXlBcmcsIHR5cGVuYW1lIE1hcHBlZEFyZywgdHlwZW5hbWUg
SGFzaEFyZywgdHlwZW5hbWUgS2V5VHJhaXRzQXJnLCB0eXBlbmFtZSBNYXBwZWRUcmFpdHNBcmc+
CkBAIC0zMjgsNyArMzI4LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5QXJnLCB0eXBlbmFtZSBN
YXBwZWRBcmcsIHR5cGVuYW1lIEhhc2hBcmcsIHR5cGVuYW1lIEtleVRyYWkKIHRlbXBsYXRlPHR5
cGVuYW1lIFQ+CiBhdXRvIEhhc2hNYXA8S2V5QXJnLCBNYXBwZWRBcmcsIEhhc2hBcmcsIEtleVRy
YWl0c0FyZywgTWFwcGVkVHJhaXRzQXJnPjo6YWRkKEtleVR5cGUmJiBrZXksIFQmJiBtYXBwZWQp
IC0+IEFkZFJlc3VsdAogewotICAgIHJldHVybiBpbmxpbmVBZGQoV1RGOjptb3ZlKGtleSksIHN0
ZDo6Zm9yd2FyZDxUPihtYXBwZWQpKTsKKyAgICByZXR1cm4gaW5saW5lQWRkKFdURk1vdmUoa2V5
KSwgc3RkOjpmb3J3YXJkPFQ+KG1hcHBlZCkpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXlB
cmcsIHR5cGVuYW1lIE1hcHBlZEFyZywgdHlwZW5hbWUgSGFzaEFyZywgdHlwZW5hbWUgS2V5VHJh
aXRzQXJnLCB0eXBlbmFtZSBNYXBwZWRUcmFpdHNBcmc+CkBAIC0zNDIsNyArMzQyLDcgQEAgdGVt
cGxhdGU8dHlwZW5hbWUgS2V5QXJnLCB0eXBlbmFtZSBNYXBwZWRBcmcsIHR5cGVuYW1lIEhhc2hB
cmcsIHR5cGVuYW1lIEtleVRyYWkKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiBBTFdBWVNfSU5MSU5F
IGF1dG8gSGFzaE1hcDxLZXlBcmcsIE1hcHBlZEFyZywgSGFzaEFyZywgS2V5VHJhaXRzQXJnLCBN
YXBwZWRUcmFpdHNBcmc+OjpmYXN0QWRkKEtleVR5cGUmJiBrZXksIFQmJiBtYXBwZWQpIC0+IEFk
ZFJlc3VsdAogewotICAgIHJldHVybiBpbmxpbmVBZGQoV1RGOjptb3ZlKGtleSksIHN0ZDo6Zm9y
d2FyZDxUPihtYXBwZWQpKTsKKyAgICByZXR1cm4gaW5saW5lQWRkKFdURk1vdmUoa2V5KSwgc3Rk
Ojpmb3J3YXJkPFQ+KG1hcHBlZCkpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFt
ZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBNYXBwZWRUcmFpdHM+CkBAIC0z
ODksNyArMzg5LDcgQEAgYXV0byBIYXNoTWFwPFQsIFUsIFYsIFcsIE1hcHBlZFRyYWl0cz46OnRh
a2UoY29uc3QgS2V5VHlwZSYga2V5KSAtPiBNYXBwZWRUeXBlCiAgICAgaXRlcmF0b3IgaXQgPSBm
aW5kKGtleSk7CiAgICAgaWYgKGl0ID09IGVuZCgpKQogICAgICAgICByZXR1cm4gTWFwcGVkVHJh
aXRzOjplbXB0eVZhbHVlKCk7Ci0gICAgTWFwcGVkVHlwZSB2YWx1ZSA9IFdURjo6bW92ZShpdC0+
dmFsdWUpOworICAgIE1hcHBlZFR5cGUgdmFsdWUgPSBXVEZNb3ZlKGl0LT52YWx1ZSk7CiAgICAg
cmVtb3ZlKGl0KTsKICAgICByZXR1cm4gdmFsdWU7CiB9CkBAIC00NDYsNyArNDQ2LDcgQEAgaW5s
aW5lIGF1dG8gSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6dGFrZSh0eXBlbmFtZSBHZXRQdHJIZWxw
ZXI8Sz46OlB0clR5cGUga2V5KQogICAgIGl0ZXJhdG9yIGl0ID0gZmluZChrZXkpOwogICAgIGlm
IChpdCA9PSBlbmQoKSkKICAgICAgICAgcmV0dXJuIE1hcHBlZFRyYWl0czo6ZW1wdHlWYWx1ZSgp
OwotICAgIE1hcHBlZFR5cGUgdmFsdWUgPSBXVEY6Om1vdmUoaXQtPnZhbHVlKTsKKyAgICBNYXBw
ZWRUeXBlIHZhbHVlID0gV1RGTW92ZShpdC0+dmFsdWUpOwogICAgIHJlbW92ZShpdCk7CiAgICAg
cmV0dXJuIHZhbHVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvSGFzaFNldC5oIGIv
U291cmNlL1dURi93dGYvSGFzaFNldC5oCmluZGV4IDU5ZDcyODUxNzVjNjc5ZmQ1MzY4MjU1MTQw
ZWJjM2ExNmNjMjUzMDkuLjY4Zjk1NmNmMzU0ZmY3Yjg4NTZlZjUzZWU2ZTk3YmJjMGM2ZWY1ZWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0hhc2hTZXQuaAorKysgYi9Tb3VyY2UvV1RGL3d0
Zi9IYXNoU2V0LmgKQEAgLTIxNCw3ICsyMTQsNyBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWPgogICAgIGlubGluZSBhdXRv
IEhhc2hTZXQ8VCwgVSwgVj46OmFkZChWYWx1ZVR5cGUmJiB2YWx1ZSkgLT4gQWRkUmVzdWx0CiAg
ICAgewotICAgICAgICByZXR1cm4gbV9pbXBsLmFkZChXVEY6Om1vdmUodmFsdWUpKTsKKyAgICAg
ICAgcmV0dXJuIG1faW1wbC5hZGQoV1RGTW92ZSh2YWx1ZSkpOwogICAgIH0KIAogICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFp
dHM+CkBAIC0yNjIsNyArMjYyLDcgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIGlmIChpdCA9
PSBlbmQoKSkKICAgICAgICAgICAgIHJldHVybiBWYWx1ZVRyYWl0czo6ZW1wdHlWYWx1ZSgpOwog
Ci0gICAgICAgIFZhbHVlVHlwZSByZXN1bHQgPSBXVEY6Om1vdmUoY29uc3RfY2FzdDxWYWx1ZVR5
cGUmPigqaXQpKTsKKyAgICAgICAgVmFsdWVUeXBlIHJlc3VsdCA9IFdURk1vdmUoY29uc3RfY2Fz
dDxWYWx1ZVR5cGUmPigqaXQpKTsKICAgICAgICAgcmVtb3ZlKGl0KTsKICAgICAgICAgcmV0dXJu
IHJlc3VsdDsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9IYXNoVGFibGUuaCBi
L1NvdXJjZS9XVEYvd3RmL0hhc2hUYWJsZS5oCmluZGV4IDY5MjQ1MTRlMzk0NzMxYzNmNjk0NTE5
ZTU1MWFhNGRlZThiZTVlMjkuLjI4ZmY0MjJjOGQxNGMwNWY2NDcxZjMzMjE4M2ExMWQwMzYzNDY0
ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0hhc2hUYWJsZS5oCisrKyBiL1NvdXJjZS9X
VEYvd3RmL0hhc2hUYWJsZS5oCkBAIC0zODEsNyArMzgxLDcgQEAgbmFtZXNwYWNlIFdURiB7CiAg
ICAgICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuICFtX2tleUNvdW50OyB9CiAKICAg
ICAgICAgQWRkUmVzdWx0IGFkZChjb25zdCBWYWx1ZVR5cGUmIHZhbHVlKSB7IHJldHVybiBhZGQ8
SWRlbnRpdHlUcmFuc2xhdG9yVHlwZT4oRXh0cmFjdG9yOjpleHRyYWN0KHZhbHVlKSwgdmFsdWUp
OyB9Ci0gICAgICAgIEFkZFJlc3VsdCBhZGQoVmFsdWVUeXBlJiYgdmFsdWUpIHsgcmV0dXJuIGFk
ZDxJZGVudGl0eVRyYW5zbGF0b3JUeXBlPihFeHRyYWN0b3I6OmV4dHJhY3QodmFsdWUpLCBXVEY6
Om1vdmUodmFsdWUpKTsgfQorICAgICAgICBBZGRSZXN1bHQgYWRkKFZhbHVlVHlwZSYmIHZhbHVl
KSB7IHJldHVybiBhZGQ8SWRlbnRpdHlUcmFuc2xhdG9yVHlwZT4oRXh0cmFjdG9yOjpleHRyYWN0
KHZhbHVlKSwgV1RGTW92ZSh2YWx1ZSkpOyB9CiAKICAgICAgICAgLy8gQSBzcGVjaWFsIHZlcnNp
b24gb2YgYWRkKCkgdGhhdCBmaW5kcyB0aGUgb2JqZWN0IGJ5IGhhc2hpbmcgYW5kIGNvbXBhcmlu
ZwogICAgICAgICAvLyB3aXRoIHNvbWUgb3RoZXIgdHlwZSwgdG8gYXZvaWQgdGhlIGNvc3Qgb2Yg
dHlwZSBjb252ZXJzaW9uIGlmIHRoZSBvYmplY3QgaXMgYWxyZWFkeQpAQCAtOTg0LDcgKzk4NCw3
IEBAIG5hbWVzcGFjZSBXVEYgewogCiAgICAgICAgIFZhbHVlKiBuZXdFbnRyeSA9IGxvb2t1cEZv
cldyaXRpbmcoRXh0cmFjdG9yOjpleHRyYWN0KGVudHJ5KSkuZmlyc3Q7CiAgICAgICAgIG5ld0Vu
dHJ5LT5+VmFsdWUoKTsKLSAgICAgICAgbmV3IChOb3ROdWxsLCBuZXdFbnRyeSkgVmFsdWVUeXBl
KFdURjo6bW92ZShlbnRyeSkpOworICAgICAgICBuZXcgKE5vdE51bGwsIG5ld0VudHJ5KSBWYWx1
ZVR5cGUoV1RGTW92ZShlbnRyeSkpOwogCiAgICAgICAgIHJldHVybiBuZXdFbnRyeTsKICAgICB9
CkBAIC0xMTgzLDcgKzExODMsNyBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgVmFsdWUqIHJlaW5zZXJ0ZWRF
bnRyeSA9IHJlaW5zZXJ0KFdURjo6bW92ZShvbGRUYWJsZVtpXSkpOworICAgICAgICAgICAgVmFs
dWUqIHJlaW5zZXJ0ZWRFbnRyeSA9IHJlaW5zZXJ0KFdURk1vdmUob2xkVGFibGVbaV0pKTsKICAg
ICAgICAgICAgIGlmICgmb2xkVGFibGVbaV0gPT0gZW50cnkpIHsKICAgICAgICAgICAgICAgICBB
U1NFUlQoIW5ld0VudHJ5KTsKICAgICAgICAgICAgICAgICBuZXdFbnRyeSA9IHJlaW5zZXJ0ZWRF
bnRyeTsKQEAgLTEyOTgsNyArMTI5OCw3IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICBvdGhl
ci5tX2RlbGV0ZWRDb3VudCA9IDA7CiAKICNpZiBEVU1QX0hBU0hUQUJMRV9TVEFUU19QRVJfVEFC
TEUKLSAgICAgICAgbV9zdGF0cyA9IFdURjo6bW92ZShvdGhlci5tX3N0YXRzKTsKKyAgICAgICAg
bV9zdGF0cyA9IFdURk1vdmUob3RoZXIubV9zdGF0cyk7CiAgICAgICAgIG90aGVyLm1fc3RhdHMg
PSBudWxscHRyOwogI2VuZGlmCiAgICAgfQpAQCAtMTMwNiw3ICsxMzA2LDcgQEAgbmFtZXNwYWNl
IFdURiB7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5h
bWUgRXh0cmFjdG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5
cGVuYW1lIEtleVRyYWl0cz4KICAgICBpbmxpbmUgYXV0byBIYXNoVGFibGU8S2V5LCBWYWx1ZSwg
RXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46Om9wZXJhdG9yPShI
YXNoVGFibGUmJiBvdGhlcikgLT4gSGFzaFRhYmxlJgogICAgIHsKLSAgICAgICAgSGFzaFRhYmxl
IHRlbXAgPSBXVEY6Om1vdmUob3RoZXIpOworICAgICAgICBIYXNoVGFibGUgdGVtcCA9IFdURk1v
dmUob3RoZXIpOwogICAgICAgICBzd2FwKHRlbXApOwogICAgICAgICByZXR1cm4gKnRoaXM7CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvSW5zZXJ0aW9uLmggYi9Tb3VyY2UvV1RG
L3d0Zi9JbnNlcnRpb24uaAppbmRleCA2NWYzYmZmNjBlNmY3OTI3NGQ1NzcwZGY2OWIxOWY2ZTM3
OGJiM2NhLi5hNDczZDdlMDUwNGY4NjZkNWU5MjI4NzE0OGIxZDdhNGIxMjI2YWU4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9JbnNlcnRpb24uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9JbnNl
cnRpb24uaApAQCAtNjgsOCArNjgsOCBAQCB2b2lkIGV4ZWN1dGVJbnNlcnRpb25zKFRhcmdldFZl
Y3RvclR5cGUmIHRhcmdldCwgSW5zZXJ0aW9uVmVjdG9yVHlwZSYgaW5zZXJ0aW9ucwogICAgICAg
ICBzaXplX3QgZmlyc3RJbmRleCA9IGluc2VydGlvbnNbaW5kZXhJbkluc2VydGlvbnNdLmluZGV4
KCkgKyBpbmRleEluSW5zZXJ0aW9uczsKICAgICAgICAgc2l6ZV90IGluZGV4T2Zmc2V0ID0gaW5k
ZXhJbkluc2VydGlvbnMgKyAxOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gbGFzdEluZGV4OyAt
LWkgPiBmaXJzdEluZGV4OykKLSAgICAgICAgICAgIHRhcmdldFtpXSA9IFdURjo6bW92ZSh0YXJn
ZXRbaSAtIGluZGV4T2Zmc2V0XSk7Ci0gICAgICAgIHRhcmdldFtmaXJzdEluZGV4XSA9IFdURjo6
bW92ZShpbnNlcnRpb25zW2luZGV4SW5JbnNlcnRpb25zXS5lbGVtZW50KCkpOworICAgICAgICAg
ICAgdGFyZ2V0W2ldID0gV1RGTW92ZSh0YXJnZXRbaSAtIGluZGV4T2Zmc2V0XSk7CisgICAgICAg
IHRhcmdldFtmaXJzdEluZGV4XSA9IFdURk1vdmUoaW5zZXJ0aW9uc1tpbmRleEluSW5zZXJ0aW9u
c10uZWxlbWVudCgpKTsKICAgICAgICAgbGFzdEluZGV4ID0gZmlyc3RJbmRleDsKICAgICB9CiAg
ICAgaW5zZXJ0aW9ucy5yZXNpemUoMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9JdGVy
YXRvckFkYXB0b3JzLmggYi9Tb3VyY2UvV1RGL3d0Zi9JdGVyYXRvckFkYXB0b3JzLmgKaW5kZXgg
MTUyNDExZmFlYmFmZjRhNTVmYWE3OWVlOTI2NzA2YmNhODhkNjFkMi4uNmM1YWEwMWVjNTBiMWRl
ZDM1NDI3ZGMyNTE1Yjg5ZTA4OGNjYjQ4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvSXRl
cmF0b3JBZGFwdG9ycy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0l0ZXJhdG9yQWRhcHRvcnMuaApA
QCAtMzQsOSArMzQsOSBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBQcmVkaWNhdGUsIHR5cGVuYW1lIEl0
ZXJhdG9yPgogY2xhc3MgRmlsdGVySXRlcmF0b3IgewogcHVibGljOgogICAgIEZpbHRlckl0ZXJh
dG9yKFByZWRpY2F0ZSBwcmVkLCBJdGVyYXRvciBiZWdpbiwgSXRlcmF0b3IgZW5kKQotICAgICAg
ICA6IG1fcHJlZChXVEY6Om1vdmUocHJlZCkpCi0gICAgICAgICwgbV9pdGVyKFdURjo6bW92ZShi
ZWdpbikpCi0gICAgICAgICwgbV9lbmQoV1RGOjptb3ZlKGVuZCkpCisgICAgICAgIDogbV9wcmVk
KFdURk1vdmUocHJlZCkpCisgICAgICAgICwgbV9pdGVyKFdURk1vdmUoYmVnaW4pKQorICAgICAg
ICAsIG1fZW5kKFdURk1vdmUoZW5kKSkKICAgICB7CiAgICAgICAgIHdoaWxlIChtX2l0ZXIgIT0g
bV9lbmQgJiYgIW1fcHJlZCgqbV9pdGVyKSkKICAgICAgICAgICAgICsrbV9pdGVyOwpAQCAtNzgs
OCArNzgsOCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUcmFuc2Zvcm0sIHR5cGVuYW1lIEl0ZXJhdG9y
PgogY2xhc3MgVHJhbnNmb3JtSXRlcmF0b3IgewogcHVibGljOgogICAgIFRyYW5zZm9ybUl0ZXJh
dG9yKFRyYW5zZm9ybSYmIHRyYW5zZm9ybSwgSXRlcmF0b3ImJiBpdGVyKQotICAgICAgICA6IG1f
dHJhbnNmb3JtKFdURjo6bW92ZSh0cmFuc2Zvcm0pKQotICAgICAgICAsIG1faXRlcihXVEY6Om1v
dmUoaXRlcikpCisgICAgICAgIDogbV90cmFuc2Zvcm0oV1RGTW92ZSh0cmFuc2Zvcm0pKQorICAg
ICAgICAsIG1faXRlcihXVEZNb3ZlKGl0ZXIpKQogICAgIHsKICAgICB9CiAKQEAgLTEwNSw3ICsx
MDUsNyBAQCBwcml2YXRlOgogdGVtcGxhdGU8dHlwZW5hbWUgVHJhbnNmb3JtLCB0eXBlbmFtZSBJ
dGVyYXRvcj4KIGlubGluZSBUcmFuc2Zvcm1JdGVyYXRvcjxUcmFuc2Zvcm0sIEl0ZXJhdG9yPiBt
YWtlVHJhbnNmb3JtSXRlcmF0b3IoVHJhbnNmb3JtJiYgdHJhbnNmb3JtLCBJdGVyYXRvciYmIGl0
ZXIpCiB7Ci0gICAgcmV0dXJuIFRyYW5zZm9ybUl0ZXJhdG9yPFRyYW5zZm9ybSwgSXRlcmF0b3I+
KFdURjo6bW92ZSh0cmFuc2Zvcm0pLCBXVEY6Om1vdmUoaXRlcikpOworICAgIHJldHVybiBUcmFu
c2Zvcm1JdGVyYXRvcjxUcmFuc2Zvcm0sIEl0ZXJhdG9yPihXVEZNb3ZlKHRyYW5zZm9ybSksIFdU
Rk1vdmUoaXRlcikpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL0l0ZXJhdG9yUmFuZ2UuaCBiL1NvdXJjZS9XVEYvd3RmL0l0ZXJhdG9yUmFuZ2Uu
aAppbmRleCA5MmVjMDkxYzM5YTdkNzViNDY1MTYyNmVmMmZhMmYyNDViMzIzMDlkLi44NGRmNzdl
MDkyZGM5NDA0ZDNjNWJmMjhkMWZiMmY1ZWU5MWMxODlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi9JdGVyYXRvclJhbmdlLmgKKysrIGIvU291cmNlL1dURi93dGYvSXRlcmF0b3JSYW5nZS5o
CkBAIC0zMiw4ICszMiw4IEBAIHRlbXBsYXRlPHR5cGVuYW1lIEl0ZXJhdG9yPgogY2xhc3MgSXRl
cmF0b3JSYW5nZSB7CiBwdWJsaWM6CiAgICAgSXRlcmF0b3JSYW5nZShJdGVyYXRvciBiZWdpbiwg
SXRlcmF0b3IgZW5kKQotICAgICAgICA6IG1fYmVnaW4oV1RGOjptb3ZlKGJlZ2luKSkKLSAgICAg
ICAgLCBtX2VuZChXVEY6Om1vdmUoZW5kKSkKKyAgICAgICAgOiBtX2JlZ2luKFdURk1vdmUoYmVn
aW4pKQorICAgICAgICAsIG1fZW5kKFdURk1vdmUoZW5kKSkKICAgICB7CiAgICAgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9MaXN0SGFzaFNldC5oIGIvU291cmNlL1dURi93dGYvTGlz
dEhhc2hTZXQuaAppbmRleCA0MTEwYjNlMGVhNzhhOGZlM2FjNWFmMWVjMTYzYWViOGUzMGQ2MDUy
Li5jY2IzMGU0MTcwNzU4NWQyMmQ5MTU5MGY1NjA2MDQyNmRkMzg5Y2FjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9MaXN0SGFzaFNldC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0xpc3RIYXNo
U2V0LmgKQEAgLTM4MSw3ICszODEsNyBAQCBpbmxpbmUgVCBMaXN0SGFzaFNldDxULCBVPjo6dGFr
ZUZpcnN0KCkKICAgICBBU1NFUlQoIWlzRW1wdHkoKSk7CiAgICAgYXV0byBpdCA9IG1faW1wbC5m
aW5kKG1faGVhZCk7CiAKLSAgICBUIHJlc3VsdCA9IFdURjo6bW92ZSgoKml0KS0+bV92YWx1ZSk7
CisgICAgVCByZXN1bHQgPSBXVEZNb3ZlKCgqaXQpLT5tX3ZhbHVlKTsKICAgICBtX2ltcGwucmVt
b3ZlKGl0KTsKICAgICB1bmxpbmtBbmREZWxldGUobV9oZWFkKTsKIApAQCAtNDIxLDcgKzQyMSw3
IEBAIGlubGluZSBUIExpc3RIYXNoU2V0PFQsIFU+Ojp0YWtlTGFzdCgpCiAgICAgQVNTRVJUKCFp
c0VtcHR5KCkpOwogICAgIGF1dG8gaXQgPSBtX2ltcGwuZmluZChtX3RhaWwpOwogCi0gICAgVCBy
ZXN1bHQgPSBXVEY6Om1vdmUoKCppdCktPm1fdmFsdWUpOworICAgIFQgcmVzdWx0ID0gV1RGTW92
ZSgoKml0KS0+bV92YWx1ZSk7CiAgICAgbV9pbXBsLnJlbW92ZShpdCk7CiAgICAgdW5saW5rQW5k
RGVsZXRlKG1fdGFpbCk7CiAKQEAgLTQ5Nyw3ICs0OTcsNyBAQCBhdXRvIExpc3RIYXNoU2V0PFQs
IFU+OjphZGQoY29uc3QgVmFsdWVUeXBlJiB2YWx1ZSkgLT4gQWRkUmVzdWx0CiB0ZW1wbGF0ZTx0
eXBlbmFtZSBULCB0eXBlbmFtZSBVPgogYXV0byBMaXN0SGFzaFNldDxULCBVPjo6YWRkKFZhbHVl
VHlwZSYmIHZhbHVlKSAtPiBBZGRSZXN1bHQKIHsKLSAgICBhdXRvIHJlc3VsdCA9IG1faW1wbC50
ZW1wbGF0ZSBhZGQ8QmFzZVRyYW5zbGF0b3I+KFdURjo6bW92ZSh2YWx1ZSksIG51bGxwdHIpOwor
ICAgIGF1dG8gcmVzdWx0ID0gbV9pbXBsLnRlbXBsYXRlIGFkZDxCYXNlVHJhbnNsYXRvcj4oV1RG
TW92ZSh2YWx1ZSksIG51bGxwdHIpOwogICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkKICAgICAg
ICAgYXBwZW5kTm9kZSgqcmVzdWx0Lml0ZXJhdG9yKTsKICAgICByZXR1cm4gQWRkUmVzdWx0KG1h
a2VJdGVyYXRvcigqcmVzdWx0Lml0ZXJhdG9yKSwgcmVzdWx0LmlzTmV3RW50cnkpOwpAQCAtNTE4
LDcgKzUxOCw3IEBAIGF1dG8gTGlzdEhhc2hTZXQ8VCwgVT46OmFwcGVuZE9yTW92ZVRvTGFzdChj
b25zdCBWYWx1ZVR5cGUmIHZhbHVlKSAtPiBBZGRSZXN1bHQKIHRlbXBsYXRlPHR5cGVuYW1lIFQs
IHR5cGVuYW1lIFU+CiBhdXRvIExpc3RIYXNoU2V0PFQsIFU+OjphcHBlbmRPck1vdmVUb0xhc3Qo
VmFsdWVUeXBlJiYgdmFsdWUpIC0+IEFkZFJlc3VsdAogewotICAgIGF1dG8gcmVzdWx0ID0gbV9p
bXBsLnRlbXBsYXRlIGFkZDxCYXNlVHJhbnNsYXRvcj4oV1RGOjptb3ZlKHZhbHVlKSwgbnVsbHB0
cik7CisgICAgYXV0byByZXN1bHQgPSBtX2ltcGwudGVtcGxhdGUgYWRkPEJhc2VUcmFuc2xhdG9y
PihXVEZNb3ZlKHZhbHVlKSwgbnVsbHB0cik7CiAgICAgTm9kZSogbm9kZSA9ICpyZXN1bHQuaXRl
cmF0b3I7CiAgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkKICAgICAgICAgdW5saW5rKG5vZGUp
OwpAQCAtNTQyLDcgKzU0Miw3IEBAIGF1dG8gTGlzdEhhc2hTZXQ8VCwgVT46OnByZXBlbmRPck1v
dmVUb0ZpcnN0KGNvbnN0IFZhbHVlVHlwZSYgdmFsdWUpIC0+IEFkZFJlc3VsCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBULCB0eXBlbmFtZSBVPgogYXV0byBMaXN0SGFzaFNldDxULCBVPjo6cHJlcGVuZE9y
TW92ZVRvRmlyc3QoVmFsdWVUeXBlJiYgdmFsdWUpIC0+IEFkZFJlc3VsdAogewotICAgIGF1dG8g
cmVzdWx0ID0gbV9pbXBsLnRlbXBsYXRlIGFkZDxCYXNlVHJhbnNsYXRvcj4oV1RGOjptb3ZlKHZh
bHVlKSwgbnVsbHB0cik7CisgICAgYXV0byByZXN1bHQgPSBtX2ltcGwudGVtcGxhdGUgYWRkPEJh
c2VUcmFuc2xhdG9yPihXVEZNb3ZlKHZhbHVlKSwgbnVsbHB0cik7CiAgICAgTm9kZSogbm9kZSA9
ICpyZXN1bHQuaXRlcmF0b3I7CiAgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkKICAgICAgICAg
dW5saW5rKG5vZGUpOwpAQCAtNTYwLDcgKzU2MCw3IEBAIGF1dG8gTGlzdEhhc2hTZXQ8VCwgVT46
Omluc2VydEJlZm9yZShjb25zdCBWYWx1ZVR5cGUmIGJlZm9yZVZhbHVlLCBjb25zdCBWYWx1ZVR5
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgogYXV0byBMaXN0SGFzaFNldDxULCBV
Pjo6aW5zZXJ0QmVmb3JlKGNvbnN0IFZhbHVlVHlwZSYgYmVmb3JlVmFsdWUsIFZhbHVlVHlwZSYm
IG5ld1ZhbHVlKSAtPiBBZGRSZXN1bHQKIHsKLSAgICByZXR1cm4gaW5zZXJ0QmVmb3JlKGZpbmQo
YmVmb3JlVmFsdWUpLCBXVEY6Om1vdmUobmV3VmFsdWUpKTsKKyAgICByZXR1cm4gaW5zZXJ0QmVm
b3JlKGZpbmQoYmVmb3JlVmFsdWUpLCBXVEZNb3ZlKG5ld1ZhbHVlKSk7CiB9CiAKIHRlbXBsYXRl
PHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+CkBAIC01NzUsNyArNTc1LDcgQEAgYXV0byBMaXN0SGFz
aFNldDxULCBVPjo6aW5zZXJ0QmVmb3JlKGl0ZXJhdG9yIGl0LCBjb25zdCBWYWx1ZVR5cGUmIG5l
d1ZhbHVlKSAtPgogdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KIGF1dG8gTGlzdEhh
c2hTZXQ8VCwgVT46Omluc2VydEJlZm9yZShpdGVyYXRvciBpdCwgVmFsdWVUeXBlJiYgbmV3VmFs
dWUpIC0+IEFkZFJlc3VsdAogewotICAgIGF1dG8gcmVzdWx0ID0gbV9pbXBsLnRlbXBsYXRlIGFk
ZDxCYXNlVHJhbnNsYXRvcj4oV1RGOjptb3ZlKG5ld1ZhbHVlKSwgbnVsbHB0cik7CisgICAgYXV0
byByZXN1bHQgPSBtX2ltcGwudGVtcGxhdGUgYWRkPEJhc2VUcmFuc2xhdG9yPihXVEZNb3ZlKG5l
d1ZhbHVlKSwgbnVsbHB0cik7CiAgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KQogICAgICAgICBp
bnNlcnROb2RlQmVmb3JlKGl0Lm5vZGUoKSwgKnJlc3VsdC5pdGVyYXRvcik7CiAgICAgcmV0dXJu
IEFkZFJlc3VsdChtYWtlSXRlcmF0b3IoKnJlc3VsdC5pdGVyYXRvciksIHJlc3VsdC5pc05ld0Vu
dHJ5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL01haW5UaHJlYWQuY3BwIGIvU291cmNl
L1dURi93dGYvTWFpblRocmVhZC5jcHAKaW5kZXggOWUwNGRhYjhkZDliYzk3ODg1ZTM5ZTEyNWNk
NDAxMzZkMTEwYjViNy4uNDY1NTVkNTVmMmE5YjA0ODZmMWIzMjlmZTllYjQyYmUxOTFmNDdiNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvTWFpblRocmVhZC5jcHAKKysrIGIvU291cmNlL1dU
Ri93dGYvTWFpblRocmVhZC5jcHAKQEAgLTE1Myw3ICsxNTMsNyBAQCB2b2lkIGNhbGxPbk1haW5U
aHJlYWQoc3RkOjpmdW5jdGlvbjx2b2lkICgpPiBmdW5jdGlvbikKICAgICB7CiAgICAgICAgIHN0
ZDo6bG9ja19ndWFyZDxTdGF0aWNMb2NrPiBsb2NrKG1haW5UaHJlYWRGdW5jdGlvblF1ZXVlTXV0
ZXgpOwogICAgICAgICBuZWVkVG9TY2hlZHVsZSA9IGZ1bmN0aW9uUXVldWUoKS5zaXplKCkgPT0g
MDsKLSAgICAgICAgZnVuY3Rpb25RdWV1ZSgpLmFwcGVuZChXVEY6Om1vdmUoZnVuY3Rpb24pKTsK
KyAgICAgICAgZnVuY3Rpb25RdWV1ZSgpLmFwcGVuZChXVEZNb3ZlKGZ1bmN0aW9uKSk7CiAgICAg
fQogCiAgICAgaWYgKG5lZWRUb1NjaGVkdWxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
TWFsbG9jUHRyLmggYi9Tb3VyY2UvV1RGL3d0Zi9NYWxsb2NQdHIuaAppbmRleCA1NWI4M2JiODJh
ZGQxY2U5YmQ3ZTIzZjFmM2RjNGJmN2MyMThlMmJiLi4wMTg0YjRmNzI3YjdjNDNmOTdjZmI3ZWU0
ODlkMWU0MzNhNWNhMDM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9NYWxsb2NQdHIuaAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi9NYWxsb2NQdHIuaApAQCAtNzEsNyArNzEsNyBAQCBwdWJsaWM6
CiAKICAgICBNYWxsb2NQdHImIG9wZXJhdG9yPShNYWxsb2NQdHImJiBvdGhlcikKICAgICB7Ci0g
ICAgICAgIE1hbGxvY1B0ciBwdHIgPSBXVEY6Om1vdmUob3RoZXIpOworICAgICAgICBNYWxsb2NQ
dHIgcHRyID0gV1RGTW92ZShvdGhlcik7CiAgICAgICAgIHN3YXAocHRyKTsKIAogICAgICAgICBy
ZXR1cm4gKnRoaXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9NZXNzYWdlUXVldWUuaCBi
L1NvdXJjZS9XVEYvd3RmL01lc3NhZ2VRdWV1ZS5oCmluZGV4IDY4MGM4OTNhYzk0ZGMxYTE1ODdj
NTQwZmQzYzE2ZjI1MjZjMmY0MDguLmRmZThhNTEwNTI0OTY3YjFhNTdhNmFjM2UzYTZhMmQxOTU0
NmNiMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL01lc3NhZ2VRdWV1ZS5oCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL01lc3NhZ2VRdWV1ZS5oCkBAIC05NCw3ICs5NCw3IEBAIG5hbWVzcGFjZSBX
VEYgewogICAgIGlubGluZSB2b2lkIE1lc3NhZ2VRdWV1ZTxEYXRhVHlwZT46OmFwcGVuZChzdGQ6
OnVuaXF1ZV9wdHI8RGF0YVR5cGU+IG1lc3NhZ2UpCiAgICAgewogICAgICAgICBMb2NrSG9sZGVy
IGxvY2sobV9tdXRleCk7Ci0gICAgICAgIG1fcXVldWUuYXBwZW5kKFdURjo6bW92ZShtZXNzYWdl
KSk7CisgICAgICAgIG1fcXVldWUuYXBwZW5kKFdURk1vdmUobWVzc2FnZSkpOwogICAgICAgICBt
X2NvbmRpdGlvbi5ub3RpZnlPbmUoKTsKICAgICB9CiAKQEAgLTEwMiw3ICsxMDIsNyBAQCBuYW1l
c3BhY2UgV1RGIHsKICAgICBpbmxpbmUgdm9pZCBNZXNzYWdlUXVldWU8RGF0YVR5cGU+OjphcHBl
bmRBbmRLaWxsKHN0ZDo6dW5pcXVlX3B0cjxEYXRhVHlwZT4gbWVzc2FnZSkKICAgICB7CiAgICAg
ICAgIExvY2tIb2xkZXIgbG9jayhtX211dGV4KTsKLSAgICAgICAgbV9xdWV1ZS5hcHBlbmQoV1RG
Ojptb3ZlKG1lc3NhZ2UpKTsKKyAgICAgICAgbV9xdWV1ZS5hcHBlbmQoV1RGTW92ZShtZXNzYWdl
KSk7CiAgICAgICAgIG1fa2lsbGVkID0gdHJ1ZTsKICAgICAgICAgbV9jb25kaXRpb24ubm90aWZ5
QWxsKCk7CiAgICAgfQpAQCAtMTEzLDcgKzExMyw3IEBAIG5hbWVzcGFjZSBXVEYgewogICAgIHsK
ICAgICAgICAgTG9ja0hvbGRlciBsb2NrKG1fbXV0ZXgpOwogICAgICAgICBib29sIHdhc0VtcHR5
ID0gbV9xdWV1ZS5pc0VtcHR5KCk7Ci0gICAgICAgIG1fcXVldWUuYXBwZW5kKFdURjo6bW92ZSht
ZXNzYWdlKSk7CisgICAgICAgIG1fcXVldWUuYXBwZW5kKFdURk1vdmUobWVzc2FnZSkpOwogICAg
ICAgICBtX2NvbmRpdGlvbi5ub3RpZnlPbmUoKTsKICAgICAgICAgcmV0dXJuIHdhc0VtcHR5Owog
ICAgIH0KQEAgLTEyMiw3ICsxMjIsNyBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICBpbmxpbmUgdm9p
ZCBNZXNzYWdlUXVldWU8RGF0YVR5cGU+OjpwcmVwZW5kKHN0ZDo6dW5pcXVlX3B0cjxEYXRhVHlw
ZT4gbWVzc2FnZSkKICAgICB7CiAgICAgICAgIExvY2tIb2xkZXIgbG9jayhtX211dGV4KTsKLSAg
ICAgICAgbV9xdWV1ZS5wcmVwZW5kKFdURjo6bW92ZShtZXNzYWdlKSk7CisgICAgICAgIG1fcXVl
dWUucHJlcGVuZChXVEZNb3ZlKG1lc3NhZ2UpKTsKICAgICAgICAgbV9jb25kaXRpb24ubm90aWZ5
T25lKCk7CiAgICAgfQogCkBAIC0xNjcsNyArMTY3LDcgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAg
ICAgIH0KIAogICAgICAgICBBU1NFUlQoZm91bmQgIT0gbV9xdWV1ZS5lbmQoKSk7Ci0gICAgICAg
IHN0ZDo6dW5pcXVlX3B0cjxEYXRhVHlwZT4gbWVzc2FnZSA9IFdURjo6bW92ZSgqZm91bmQpOwor
ICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8RGF0YVR5cGU+IG1lc3NhZ2UgPSBXVEZNb3ZlKCpmb3Vu
ZCk7CiAgICAgICAgIG1fcXVldWUucmVtb3ZlKGZvdW5kKTsKICAgICAgICAgcmVzdWx0ID0gTWVz
c2FnZVF1ZXVlTWVzc2FnZVJlY2VpdmVkOwogICAgICAgICByZXR1cm4gbWVzc2FnZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL05ha2VkUHRyLmggYi9Tb3VyY2UvV1RGL3d0Zi9OYWtlZFB0
ci5oCmluZGV4IDc4YjNjNGI3OGNjMWQ5MWRlMWZlZTk4MTNmM2Q3OTkyZDE3OGU2YWQuLjU4NWNi
MWM2Mzc5Y2JjNmYwYmU0NTY1MjgyZDUzMGIwZmMwZDg1YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL05ha2VkUHRyLmgKKysrIGIvU291cmNlL1dURi93dGYvTmFrZWRQdHIuaApAQCAtOTAs
MTQgKzkwLDE0IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHRlbXBsYXRlPHR5cGVuYW1lIFU+IGlu
bGluZSBOYWtlZFB0cjxUPiYgTmFrZWRQdHI8VD46Om9wZXJhCiAKIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+IGlubGluZSBOYWtlZFB0cjxUPiYgTmFrZWRQdHI8VD46Om9wZXJhdG9yPShOYWtlZFB0ciYm
IG8pCiB7Ci0gICAgTmFrZWRQdHIgcHRyID0gV1RGOjptb3ZlKG8pOworICAgIE5ha2VkUHRyIHB0
ciA9IFdURk1vdmUobyk7CiAgICAgc3dhcChwdHIpOwogICAgIHJldHVybiAqdGhpczsKIH0KIAog
dGVtcGxhdGU8dHlwZW5hbWUgVD4gdGVtcGxhdGU8dHlwZW5hbWUgVT4gaW5saW5lIE5ha2VkUHRy
PFQ+JiBOYWtlZFB0cjxUPjo6b3BlcmF0b3I9KE5ha2VkUHRyPFU+JiYgbykKIHsKLSAgICBOYWtl
ZFB0ciBwdHIgPSBXVEY6Om1vdmUobyk7CisgICAgTmFrZWRQdHIgcHRyID0gV1RGTW92ZShvKTsK
ICAgICBzd2FwKHB0cik7CiAgICAgcmV0dXJuICp0aGlzOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi93dGYvT1NPYmplY3RQdHIuaCBiL1NvdXJjZS9XVEYvd3RmL09TT2JqZWN0UHRyLmgKaW5k
ZXggZmVkZGY2MjYyYmQ2MWViNWEwOGY2MzkwMGFmZjhhYThjNDJmYWFmYS4uZWQ3ZWNlYjkyYzRk
NDQ1NzY3Y2ZmMjM3OWIxYWI5NTM5ZjM4NjkyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
T1NPYmplY3RQdHIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9PU09iamVjdFB0ci5oCkBAIC04Nyw3
ICs4Nyw3IEBAIHB1YmxpYzoKIAogICAgIE9TT2JqZWN0UHRyJiBvcGVyYXRvcj0oT1NPYmplY3RQ
dHImJiBvdGhlcikKICAgICB7Ci0gICAgICAgIE9TT2JqZWN0UHRyIHB0ciA9IFdURjo6bW92ZShv
dGhlcik7CisgICAgICAgIE9TT2JqZWN0UHRyIHB0ciA9IFdURk1vdmUob3RoZXIpOwogICAgICAg
ICBzd2FwKHB0cik7CiAgICAgICAgIHJldHVybiAqdGhpczsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi9PcHRpb25hbC5oIGIvU291cmNlL1dURi93dGYvT3B0aW9uYWwuaAppbmRl
eCA3ZjQwMDNmMGYxNDFmOTI4OTU2NjQ1OTgxZTEyY2E1NmJiY2FmODI0Li45NzlmMDk3MGUwMDI4
YjdjZGRhZDRlYWUwNjc5OGU3YjhiN2IzMmMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9P
cHRpb25hbC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL09wdGlvbmFsLmgKQEAgLTY5LDEzICs2OSwx
MyBAQCBwdWJsaWM6CiAgICAgICAgIDogbV9pc0VuZ2FnZWQob3RoZXIubV9pc0VuZ2FnZWQpCiAg
ICAgewogICAgICAgICBpZiAobV9pc0VuZ2FnZWQpCi0gICAgICAgICAgICBuZXcgKE5vdE51bGws
ICZtX3ZhbHVlKSBUKFdURjo6bW92ZSgqb3RoZXIuYXNQdHIoKSkpOworICAgICAgICAgICAgbmV3
IChOb3ROdWxsLCAmbV92YWx1ZSkgVChXVEZNb3ZlKCpvdGhlci5hc1B0cigpKSk7CiAgICAgfQog
CiAgICAgT3B0aW9uYWwoVCYmIHZhbHVlKQogICAgICAgICA6IG1faXNFbmdhZ2VkKHRydWUpCiAg
ICAgewotICAgICAgICBuZXcgKE5vdE51bGwsICZtX3ZhbHVlKSBUKFdURjo6bW92ZSh2YWx1ZSkp
OworICAgICAgICBuZXcgKE5vdE51bGwsICZtX3ZhbHVlKSBUKFdURk1vdmUodmFsdWUpKTsKICAg
ICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmdzPgpAQCAtMTE2LDcgKzExNiw3IEBA
IHB1YmxpYzoKIAogICAgICAgICBkZXN0cm95KCk7CiAgICAgICAgIGlmIChvdGhlci5tX2lzRW5n
YWdlZCkgewotICAgICAgICAgICAgbmV3IChOb3ROdWxsLCAmbV92YWx1ZSkgVChXVEY6Om1vdmUo
Km90aGVyLmFzUHRyKCkpKTsKKyAgICAgICAgICAgIG5ldyAoTm90TnVsbCwgJm1fdmFsdWUpIFQo
V1RGTW92ZSgqb3RoZXIuYXNQdHIoKSkpOwogICAgICAgICAgICAgbV9pc0VuZ2FnZWQgPSB0cnVl
OwogICAgICAgICB9CiAgICAgICAgIHJldHVybiAqdGhpczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL1JlZlB0ci5oIGIvU291cmNlL1dURi93dGYvUmVmUHRyLmgKaW5kZXggN2M4MzA1ZTM4
ZWQ3MmI0NDc3ZGE1ZjJlMjI3NTA3NjRhNzgzZTI2NC4uY2E0NDZmNGY1ZGZjMzYwMWJiNTE3NTE1
NTE5YmJkM2Q3M2FkZGY2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUmVmUHRyLmgKKysr
IGIvU291cmNlL1dURi93dGYvUmVmUHRyLmgKQEAgLTE1OCwyMSArMTU4LDIxIEBAIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+IHRlbXBsYXRlPHR5cGVuYW1lIFU+IGlubGluZSBSZWZQdHI8VD4mIFJlZlB0
cjxUPjo6b3BlcmF0b3I9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBSZWZQdHI8VD4m
IFJlZlB0cjxUPjo6b3BlcmF0b3I9KFJlZlB0ciYmIG8pCiB7Ci0gICAgUmVmUHRyIHB0ciA9IFdU
Rjo6bW92ZShvKTsKKyAgICBSZWZQdHIgcHRyID0gV1RGTW92ZShvKTsKICAgICBzd2FwKHB0cik7
CiAgICAgcmV0dXJuICp0aGlzOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB0ZW1wbGF0ZTx0
eXBlbmFtZSBVPiBpbmxpbmUgUmVmUHRyPFQ+JiBSZWZQdHI8VD46Om9wZXJhdG9yPShSZWZQdHI8
VT4mJiBvKQogewotICAgIFJlZlB0ciBwdHIgPSBXVEY6Om1vdmUobyk7CisgICAgUmVmUHRyIHB0
ciA9IFdURk1vdmUobyk7CiAgICAgc3dhcChwdHIpOwogICAgIHJldHVybiAqdGhpczsKIH0KIAog
dGVtcGxhdGU8dHlwZW5hbWUgVD4gdGVtcGxhdGU8dHlwZW5hbWUgVT4gaW5saW5lIFJlZlB0cjxU
PiYgUmVmUHRyPFQ+OjpvcGVyYXRvcj0oUmVmPFU+JiYgcmVmZXJlbmNlKQogewotICAgIFJlZlB0
ciBwdHIgPSBXVEY6Om1vdmUocmVmZXJlbmNlKTsKKyAgICBSZWZQdHIgcHRyID0gV1RGTW92ZShy
ZWZlcmVuY2UpOwogICAgIHN3YXAocHRyKTsKICAgICByZXR1cm4gKnRoaXM7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi9SZXRhaW5QdHIuaCBiL1NvdXJjZS9XVEYvd3RmL1JldGFpblB0
ci5oCmluZGV4IGZkNDc4OGU5NWI0YTEwOTJjNjQ1N2NkNWIzZDQ3YzNkYTFmODMyNzIuLmM1NWVl
YzMxY2ZiMzkxNTMxNzQ5YWIzOTI1NjhjODdlYTQ2ZGJjYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL1JldGFpblB0ci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1JldGFpblB0ci5oCkBAIC0y
MDEsMTQgKzIwMSwxNCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB0ZW1wbGF0ZTx0eXBlbmFtZSBV
PiBpbmxpbmUgUmV0YWluUHRyPFQ+JiBSZXRhaW5QdHI8VD46Om9wZQogCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiBpbmxpbmUgUmV0YWluUHRyPFQ+JiBSZXRhaW5QdHI8VD46Om9wZXJhdG9yPShSZXRh
aW5QdHImJiBvKQogewotICAgIFJldGFpblB0ciBwdHIgPSBXVEY6Om1vdmUobyk7CisgICAgUmV0
YWluUHRyIHB0ciA9IFdURk1vdmUobyk7CiAgICAgc3dhcChwdHIpOwogICAgIHJldHVybiAqdGhp
czsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4gdGVtcGxhdGU8dHlwZW5hbWUgVT4gaW5saW5l
IFJldGFpblB0cjxUPiYgUmV0YWluUHRyPFQ+OjpvcGVyYXRvcj0oUmV0YWluUHRyPFU+JiYgbykK
IHsKLSAgICBSZXRhaW5QdHIgcHRyID0gV1RGOjptb3ZlKG8pOworICAgIFJldGFpblB0ciBwdHIg
PSBXVEZNb3ZlKG8pOwogICAgIHN3YXAocHRyKTsKICAgICByZXR1cm4gKnRoaXM7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9SdW5Mb29wLmNwcCBiL1NvdXJjZS9XVEYvd3RmL1J1bkxv
b3AuY3BwCmluZGV4IDYwZTI2ZWU5YjY2ZWNjYTI1ZmQ2NDU0ZTk1MGE2ODBmZTlhZjcxMDIuLmUz
NTI5MGQwMTMwNWMwMGY1ZDA5YTJlNjg0YzNkZjQxMDQ1YjM5N2MgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL1J1bkxvb3AuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL1J1bkxvb3AuY3BwCkBA
IC0xMjYsNyArMTI2LDcgQEAgdm9pZCBSdW5Mb29wOjpkaXNwYXRjaChzdGQ6OmZ1bmN0aW9uPHZv
aWQgKCk+IGZ1bmN0aW9uKQogewogICAgIHsKICAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1f
ZnVuY3Rpb25RdWV1ZUxvY2spOwotICAgICAgICBtX2Z1bmN0aW9uUXVldWUuYXBwZW5kKFdURjo6
bW92ZShmdW5jdGlvbikpOworICAgICAgICBtX2Z1bmN0aW9uUXVldWUuYXBwZW5kKFdURk1vdmUo
ZnVuY3Rpb24pKTsKICAgICB9CiAKICAgICB3YWtlVXAoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL1NoYXJlZFRhc2suaCBiL1NvdXJjZS9XVEYvd3RmL1NoYXJlZFRhc2suaAppbmRleCA2
MDIzNjY1Mjc0ODU0ODdiYmM3ZGEyOTFiNDA2ZGExM2ZmOTQ5NjFlLi5jZjlkMTE5ZjYwZTRlYzVi
YThkY2M5MjhmZjc3MjBlNmJjYTVhNDViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9TaGFy
ZWRUYXNrLmgKKysrIGIvU291cmNlL1dURi93dGYvU2hhcmVkVGFzay5oCkBAIC04MCw3ICs4MCw3
IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICBTaGFyZWRUYXNrRnVuY3RvcihGdW5jdG9yJiYgZnVu
Y3RvcikKLSAgICAgICAgOiBtX2Z1bmN0b3IoV1RGOjptb3ZlKGZ1bmN0b3IpKQorICAgICAgICA6
IG1fZnVuY3RvcihXVEZNb3ZlKGZ1bmN0b3IpKQogICAgIHsKICAgICB9CiAKQEAgLTExOCw3ICsx
MTgsNyBAQCBSZWY8U2hhcmVkVGFzazxGdW5jdGlvblR5cGU+PiBjcmVhdGVTaGFyZWRUYXNrKGNv
bnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdGlvblR5cGUsIHR5
cGVuYW1lIEZ1bmN0b3I+CiBSZWY8U2hhcmVkVGFzazxGdW5jdGlvblR5cGU+PiBjcmVhdGVTaGFy
ZWRUYXNrKEZ1bmN0b3ImJiBmdW5jdG9yKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNo
YXJlZFRhc2tGdW5jdG9yPEZ1bmN0aW9uVHlwZSwgRnVuY3Rvcj4oV1RGOjptb3ZlKGZ1bmN0b3Ip
KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcmVkVGFza0Z1bmN0b3I8RnVuY3Rpb25U
eXBlLCBGdW5jdG9yPihXVEZNb3ZlKGZ1bmN0b3IpKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdU
RgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvU3RkTGliRXh0cmFzLmggYi9Tb3VyY2UvV1RG
L3d0Zi9TdGRMaWJFeHRyYXMuaAppbmRleCA1OWEzZmFmYzMxMGM4NTJlMDg2NDRhN2Y5MDhiYTJj
YTEyYjQwYmRmLi5lODVlZTFiNzBjNjZjYTI5YjE0YTY5MDNiZmJlNWI0YjQ3Yzc4YzBhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9TdGRMaWJFeHRyYXMuaAorKysgYi9Tb3VyY2UvV1RGL3d0
Zi9TdGRMaWJFeHRyYXMuaApAQCAtMTEzLDE4ICsxMTMsNiBAQCBuYW1lc3BhY2UgV1RGIHsKIAog
ZW51bSBDaGVja01vdmVQYXJhbWV0ZXJUYWcgeyBDaGVja01vdmVQYXJhbWV0ZXIgfTsKIAotLy8g
RklYTUU6IFVzaW5nIHRoaXMgZnVuY3Rpb24gcHJldmVudHMgQ2xhbmcncyBtb3ZlIGRpYWdub3N0
aWNzICgtV3Blc3NpbWl6aW5nLW1vdmUsIC1XcmVkdW5kYW50LW1vdmUsIC1Xc2VsZi1tb3ZlKSBm
cm9tCi0vLyBmaW5kaW5nIG1pc3Rha2VzLCBzaW5jZSB0aGVzZSBkaWFnbm9zdGljcyBvbmx5IGV2
YWx1YXRlIGNhbGxzIHRvIHN0ZDo6bW92ZSgpLgotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLUFMV0FZ
U19JTkxJTkUgdHlwZW5hbWUgc3RkOjpyZW1vdmVfcmVmZXJlbmNlPFQ+Ojp0eXBlJiYgbW92ZShU
JiYgdmFsdWUpCi17Ci0gICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2x2YWx1ZV9yZWZlcmVuY2U8
VD46OnZhbHVlLCAiVCBpcyBub3QgYW4gbHZhbHVlIHJlZmVyZW5jZTsgbW92ZSgpIGlzIHVubmVj
ZXNzYXJ5LiIpOwotCi0gICAgdXNpbmcgTm9uUmVmUXVhbGlmaWVkVHlwZSA9IHR5cGVuYW1lIHN0
ZDo6cmVtb3ZlX3JlZmVyZW5jZTxUPjo6dHlwZTsKLSAgICBzdGF0aWNfYXNzZXJ0KCFzdGQ6Omlz
X2NvbnN0PE5vblJlZlF1YWxpZmllZFR5cGU+Ojp2YWx1ZSwgIlQgaXMgY29uc3QgcXVhbGlmaWVk
LiIpOwotICAgIHJldHVybiBzdGQ6Om1vdmUodmFsdWUpOwotfQotCiBzdGF0aWMgY29uc3Qgc2l6
ZV90IEtCID0gMTAyNDsKIHN0YXRpYyBjb25zdCBzaXplX3QgTUIgPSAxMDI0ICogMTAyNDsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5nLmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L1RocmVhZGluZy5jcHAKaW5kZXggMTc3NjU5ODczN2Q4Y2IxZDczYzUxZjUzMzM3NTgyMDY0OGU5
ZWQxZS4uOTU1MGQwNzgwNmZkM2U3ZDQzMTQ2NWYwNzJiNzUwYjhjMmMxM2JjMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5nLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9UaHJl
YWRpbmcuY3BwCkBAIC01MCw3ICs1MCw3IEBAIHN0YXRpYyB2b2lkIHRocmVhZEVudHJ5UG9pbnQo
dm9pZCogY29udGV4dERhdGEpCiAKICAgICBpbml0aWFsaXplQ3VycmVudFRocmVhZEludGVybmFs
KGNvbnRleHQtPm5hbWUpOwogCi0gICAgYXV0byBlbnRyeVBvaW50ID0gV1RGOjptb3ZlKGNvbnRl
eHQtPmVudHJ5UG9pbnQpOworICAgIGF1dG8gZW50cnlQb2ludCA9IFdURk1vdmUoY29udGV4dC0+
ZW50cnlQb2ludCk7CiAKICAgICAvLyBEZWxldGUgdGhlIGNvbnRleHQgYmVmb3JlIHN0YXJ0aW5n
IHRoZSB0aHJlYWQuCiAgICAgZGVsZXRlIGNvbnRleHQ7CkBAIC02Nyw3ICs2Nyw3IEBAIFRocmVh
ZElkZW50aWZpZXIgY3JlYXRlVGhyZWFkKGNvbnN0IGNoYXIqIG5hbWUsIHN0ZDo6ZnVuY3Rpb248
dm9pZCgpPiBlbnRyeVBvaW50CiAgICAgICAgIExPR19FUlJPUigiVGhyZWFkIG5hbWUgXCIlc1wi
IGlzIGxvbmdlciB0aGFuIDMxIGNoYXJhY3RlcnMgYW5kIHdpbGwgYmUgdHJ1bmNhdGVkIGJ5IFZp
c3VhbCBTdHVkaW8iLCBuYW1lKTsKICNlbmRpZgogCi0gICAgTmV3VGhyZWFkQ29udGV4dCogY29u
dGV4dCA9IG5ldyBOZXdUaHJlYWRDb250ZXh0IHsgbmFtZSwgV1RGOjptb3ZlKGVudHJ5UG9pbnQp
LCB7IH0gfTsKKyAgICBOZXdUaHJlYWRDb250ZXh0KiBjb250ZXh0ID0gbmV3IE5ld1RocmVhZENv
bnRleHQgeyBuYW1lLCBXVEZNb3ZlKGVudHJ5UG9pbnQpLCB7IH0gfTsKIAogICAgIC8vIFByZXZl
bnQgdGhlIHRocmVhZCBib2R5IGZyb20gZXhlY3V0aW5nIHVudGlsIHdlJ3ZlIGVzdGFibGlzaGVk
IHRoZSB0aHJlYWQgaWRlbnRpZmllci4KICAgICBNdXRleExvY2tlciBsb2NrZXIoY29udGV4dC0+
Y3JlYXRpb25NdXRleCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9WZWN0b3IuaCBiL1Nv
dXJjZS9XVEYvd3RmL1ZlY3Rvci5oCmluZGV4IDE4OGQ3NmRhZDc4ZjNjZmRlMjNiNWY0Y2RiNzVk
ZGE2NmMyMzFkMzMuLjVmZjExYTVlOTE2MjQwYWIwNDEzMWRkNmViODdiOTQ3MWVhZmQ2NzAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1ZlY3Rvci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1Zl
Y3Rvci5oCkBAIC05OCw3ICs5OCw3IEBAIHN0cnVjdCBWZWN0b3JNb3ZlcjxmYWxzZSwgVD4KICAg
ICBzdGF0aWMgdm9pZCBtb3ZlKFQqIHNyYywgVCogc3JjRW5kLCBUKiBkc3QpCiAgICAgewogICAg
ICAgICB3aGlsZSAoc3JjICE9IHNyY0VuZCkgewotICAgICAgICAgICAgbmV3IChOb3ROdWxsLCBk
c3QpIFQoV1RGOjptb3ZlKCpzcmMpKTsKKyAgICAgICAgICAgIG5ldyAoTm90TnVsbCwgZHN0KSBU
KFdURk1vdmUoKnNyYykpOwogICAgICAgICAgICAgc3JjLT5+VCgpOwogICAgICAgICAgICAgKytk
c3Q7CiAgICAgICAgICAgICArK3NyYzsKQEAgLTExMyw3ICsxMTMsNyBAQCBzdHJ1Y3QgVmVjdG9y
TW92ZXI8ZmFsc2UsIFQ+CiAgICAgICAgICAgICB3aGlsZSAoc3JjICE9IHNyY0VuZCkgewogICAg
ICAgICAgICAgICAgIC0tc3JjRW5kOwogICAgICAgICAgICAgICAgIC0tZHN0RW5kOwotICAgICAg
ICAgICAgICAgIG5ldyAoTm90TnVsbCwgZHN0RW5kKSBUKFdURjo6bW92ZSgqc3JjRW5kKSk7Cisg
ICAgICAgICAgICAgICAgbmV3IChOb3ROdWxsLCBkc3RFbmQpIFQoV1RGTW92ZSgqc3JjRW5kKSk7
CiAgICAgICAgICAgICAgICAgc3JjRW5kLT5+VCgpOwogICAgICAgICAgICAgfQogICAgICAgICB9
CkBAIC03MDIsNyArNzAyLDcgQEAgcHVibGljOgogICAgIAogICAgIFQgdGFrZUxhc3QoKQogICAg
IHsKLSAgICAgICAgVCByZXN1bHQgPSBXVEY6Om1vdmUobGFzdCgpKTsKKyAgICAgICAgVCByZXN1
bHQgPSBXVEZNb3ZlKGxhc3QoKSk7CiAgICAgICAgIHJlbW92ZUxhc3QoKTsKICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9lZmwvRGlzcGF0
Y2hRdWV1ZUVmbC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9lZmwvRGlzcGF0Y2hRdWV1ZUVmbC5jcHAK
aW5kZXggNDU0N2FjMjFhYTAxNGE1YTI5YTNjZjRkMzY0NTcwYmU0NjdlNjljZi4uYjRhZDJiZGM0
MzhmOWQ5NDU3ZTNmN2ZiNDkyMjRjNjgxNTk3NmRhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvZWZsL0Rpc3BhdGNoUXVldWVFZmwuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL2VmbC9EaXNw
YXRjaFF1ZXVlRWZsLmNwcApAQCAtOTYsNyArOTYsNyBAQCB2b2lkIERpc3BhdGNoUXVldWU6OmRp
c3BhdGNoKHN0ZDo6dW5pcXVlX3B0cjxXb3JrSXRlbT4gaXRlbSkKIHsKICAgICB7CiAgICAgICAg
IE11dGV4TG9ja2VyIGxvY2tlcihtX3dvcmtJdGVtc0xvY2spOwotICAgICAgICBtX3dvcmtJdGVt
cy5hcHBlbmQoV1RGOjptb3ZlKGl0ZW0pKTsKKyAgICAgICAgbV93b3JrSXRlbXMuYXBwZW5kKFdU
Rk1vdmUoaXRlbSkpOwogICAgIH0KIAogICAgIHdha2VVcFRocmVhZCgpOwpAQCAtMTA0LDcgKzEw
NCw3IEBAIHZvaWQgRGlzcGF0Y2hRdWV1ZTo6ZGlzcGF0Y2goc3RkOjp1bmlxdWVfcHRyPFdvcmtJ
dGVtPiBpdGVtKQogCiB2b2lkIERpc3BhdGNoUXVldWU6OmRpc3BhdGNoKHN0ZDo6dW5pcXVlX3B0
cjxUaW1lcldvcmtJdGVtPiBpdGVtKQogewotICAgIGluc2VydFRpbWVyV29ya0l0ZW0oV1RGOjpt
b3ZlKGl0ZW0pKTsKKyAgICBpbnNlcnRUaW1lcldvcmtJdGVtKFdURk1vdmUoaXRlbSkpOwogICAg
IHdha2VVcFRocmVhZCgpOwogfQogCkBAIC0xMjEsNyArMTIxLDcgQEAgdm9pZCBEaXNwYXRjaFF1
ZXVlOjpzZXRTb2NrZXRFdmVudEhhbmRsZXIoaW50IGZpbGVEZXNjcmlwdG9yLCBzdGQ6OmZ1bmN0
aW9uPHZvaWQKICAgICBBU1NFUlQobV9zb2NrZXREZXNjcmlwdG9yID09IGludmFsaWRTb2NrZXRE
ZXNjcmlwdG9yKTsKIAogICAgIG1fc29ja2V0RGVzY3JpcHRvciA9IGZpbGVEZXNjcmlwdG9yOwot
ICAgIG1fc29ja2V0RXZlbnRIYW5kbGVyID0gV1RGOjptb3ZlKGZ1bmN0aW9uKTsKKyAgICBtX3Nv
Y2tldEV2ZW50SGFuZGxlciA9IFdURk1vdmUoZnVuY3Rpb24pOwogCiAgICAgaWYgKGZpbGVEZXNj
cmlwdG9yID4gbV9tYXhGaWxlRGVzY3JpcHRvcikKICAgICAgICAgbV9tYXhGaWxlRGVzY3JpcHRv
ciA9IGZpbGVEZXNjcmlwdG9yOwpAQCAtMTc2LDcgKzE3Niw3IEBAIHZvaWQgRGlzcGF0Y2hRdWV1
ZTo6cGVyZm9ybVRpbWVyV29yaygpCiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHRpbWVy
V29ya0l0ZW1zLnNpemUoKTsgKytpKSB7CiAgICAgICAgIGlmICghdGltZXJXb3JrSXRlbXNbaV0t
Pmhhc0V4cGlyZWQoY3VycmVudFRpbWVOYW5vU2Vjb25kcykpIHsKLSAgICAgICAgICAgIGluc2Vy
dFRpbWVyV29ya0l0ZW0oV1RGOjptb3ZlKHRpbWVyV29ya0l0ZW1zW2ldKSk7CisgICAgICAgICAg
ICBpbnNlcnRUaW1lcldvcmtJdGVtKFdURk1vdmUodGltZXJXb3JrSXRlbXNbaV0pKTsKICAgICAg
ICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKQEAgLTIxNSw3ICsyMTUsNyBAQCB2b2lkIERp
c3BhdGNoUXVldWU6Omluc2VydFRpbWVyV29ya0l0ZW0oc3RkOjp1bmlxdWVfcHRyPFRpbWVyV29y
a0l0ZW0+IGl0ZW0pCiAgICAgICAgIGlmIChpdGVtLT5leHBpcmF0aW9uVGltZU5hbm9TZWNvbmRz
KCkgPCBtX3RpbWVyV29ya0l0ZW1zW3Bvc2l0aW9uXS0+ZXhwaXJhdGlvblRpbWVOYW5vU2Vjb25k
cygpKQogICAgICAgICAgICAgYnJlYWs7CiAKLSAgICBtX3RpbWVyV29ya0l0ZW1zLmluc2VydChw
b3NpdGlvbiwgV1RGOjptb3ZlKGl0ZW0pKTsKKyAgICBtX3RpbWVyV29ya0l0ZW1zLmluc2VydChw
b3NpdGlvbiwgV1RGTW92ZShpdGVtKSk7CiB9CiAKIHZvaWQgRGlzcGF0Y2hRdWV1ZTo6ZGlzcGF0
Y2hRdWV1ZVRocmVhZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9lZmwvRGlzcGF0Y2hR
dWV1ZVdvcmtJdGVtRWZsLmggYi9Tb3VyY2UvV1RGL3d0Zi9lZmwvRGlzcGF0Y2hRdWV1ZVdvcmtJ
dGVtRWZsLmgKaW5kZXggYjFmYmRjODA3MDk0MTJmZDIyMmFmMDVmZjk0NWQ2NWE3YjAzMjQ5OC4u
OGFhOTJmNTg5NzdlNGM0Mjg1NGI0MGFjYmRkN2E2ZTQ3ZGY1ZWFiMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvZWZsL0Rpc3BhdGNoUXVldWVXb3JrSXRlbUVmbC5oCisrKyBiL1NvdXJjZS9X
VEYvd3RmL2VmbC9EaXNwYXRjaFF1ZXVlV29ya0l0ZW1FZmwuaApAQCAtMzUsNyArMzUsNyBAQCBj
bGFzcyBXb3JrSXRlbSB7CiBwdWJsaWM6CiAgICAgV29ya0l0ZW0oUGFzc1JlZlB0cjxXb3JrUXVl
dWU+IHdvcmtRdWV1ZSwgc3RkOjpmdW5jdGlvbjx2b2lkICgpPiBmdW5jdGlvbikKICAgICAgICAg
OiBtX3dvcmtRdWV1ZSh3b3JrUXVldWUpCi0gICAgICAgICwgbV9mdW5jdGlvbihXVEY6Om1vdmUo
ZnVuY3Rpb24pKQorICAgICAgICAsIG1fZnVuY3Rpb24oV1RGTW92ZShmdW5jdGlvbikpCiAgICAg
ewogICAgIH0KIApAQCAtNTEsMTQgKzUxLDE0IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgc3RkOjp1
bmlxdWVfcHRyPFRpbWVyV29ya0l0ZW0+IGNyZWF0ZShQYXNzUmVmUHRyPFdvcmtRdWV1ZT4gd29y
a1F1ZXVlLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+IGZ1bmN0aW9uLCBzdGQ6OmNocm9ubzo6bmFu
b3NlY29uZHMgZGVsYXlOYW5vU2Vjb25kcykKICAgICB7CiAgICAgICAgIEFTU0VSVChkZWxheU5h
bm9TZWNvbmRzLmNvdW50KCkgPj0gMCk7Ci0gICAgICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8
VGltZXJXb3JrSXRlbT4obmV3IFRpbWVyV29ya0l0ZW0od29ya1F1ZXVlLCBXVEY6Om1vdmUoZnVu
Y3Rpb24pLCBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKSAqIDEwMDAwMDAwMDAuMCArIGRl
bGF5TmFub1NlY29uZHMuY291bnQoKSkpOworICAgICAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRy
PFRpbWVyV29ya0l0ZW0+KG5ldyBUaW1lcldvcmtJdGVtKHdvcmtRdWV1ZSwgV1RGTW92ZShmdW5j
dGlvbiksIG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpICogMTAwMDAwMDAwMC4wICsgZGVs
YXlOYW5vU2Vjb25kcy5jb3VudCgpKSk7CiAgICAgfQogICAgIGRvdWJsZSBleHBpcmF0aW9uVGlt
ZU5hbm9TZWNvbmRzKCkgY29uc3QgeyByZXR1cm4gbV9leHBpcmF0aW9uVGltZU5hbm9TZWNvbmRz
OyB9CiAgICAgYm9vbCBoYXNFeHBpcmVkKGRvdWJsZSBjdXJyZW50VGltZU5hbm9TZWNvbmRzKSBj
b25zdCB7IHJldHVybiBjdXJyZW50VGltZU5hbm9TZWNvbmRzID49IG1fZXhwaXJhdGlvblRpbWVO
YW5vU2Vjb25kczsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgVGltZXJXb3JrSXRlbShQYXNzUmVmUHRy
PFdvcmtRdWV1ZT4gd29ya1F1ZXVlLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+IGZ1bmN0aW9uLCBk
b3VibGUgZXhwaXJhdGlvblRpbWVOYW5vU2Vjb25kcykKLSAgICAgICAgOiBXb3JrSXRlbSh3b3Jr
UXVldWUsIFdURjo6bW92ZShmdW5jdGlvbikpCisgICAgICAgIDogV29ya0l0ZW0od29ya1F1ZXVl
LCBXVEZNb3ZlKGZ1bmN0aW9uKSkKICAgICAgICAgLCBtX2V4cGlyYXRpb25UaW1lTmFub1NlY29u
ZHMoZXhwaXJhdGlvblRpbWVOYW5vU2Vjb25kcykKICAgICB7CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvZWZsL1dvcmtRdWV1ZUVmbC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9lZmwv
V29ya1F1ZXVlRWZsLmNwcAppbmRleCBjODI3YTUxNjFjOGI4ZDNhYTI0NmZkMGM4Y2M3MGRlNTQ3
NmJiNDRkLi4zYjQ3YzI2MGZlZWM0NzdjNzE4YTA1ZThhZDYzNjMxNDFkZjU3ZTlkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9lZmwvV29ya1F1ZXVlRWZsLmNwcAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9lZmwvV29ya1F1ZXVlRWZsLmNwcApAQCAtMzksNyArMzksNyBAQCB2b2lkIFdvcmtRdWV1
ZTo6cmVnaXN0ZXJTb2NrZXRFdmVudEhhbmRsZXIoaW50IGZpbGVEZXNjcmlwdG9yLCBzdGQ6OmZ1
bmN0aW9uPHZvaQogICAgIGlmICghbV9kaXNwYXRjaFF1ZXVlKQogICAgICAgICByZXR1cm47CiAK
LSAgICBtX2Rpc3BhdGNoUXVldWUtPnNldFNvY2tldEV2ZW50SGFuZGxlcihmaWxlRGVzY3JpcHRv
ciwgV1RGOjptb3ZlKGZ1bmN0aW9uKSk7CisgICAgbV9kaXNwYXRjaFF1ZXVlLT5zZXRTb2NrZXRF
dmVudEhhbmRsZXIoZmlsZURlc2NyaXB0b3IsIFdURk1vdmUoZnVuY3Rpb24pKTsKIH0KIAogdm9p
ZCBXb3JrUXVldWU6OnVucmVnaXN0ZXJTb2NrZXRFdmVudEhhbmRsZXIoaW50IGZpbGVEZXNjcmlw
dG9yKQpAQCAtNTcsNyArNTcsNyBAQCB2b2lkIFdvcmtRdWV1ZTo6ZGlzcGF0Y2goc3RkOjpmdW5j
dGlvbjx2b2lkICgpPiBmdW5jdGlvbikKICAgICBpZiAoIW1fZGlzcGF0Y2hRdWV1ZSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgbV9kaXNwYXRjaFF1ZXVlLT5kaXNwYXRjaChzdGQ6Om1ha2VfdW5p
cXVlPFdvcmtJdGVtPih0aGlzLCBXVEY6Om1vdmUoZnVuY3Rpb24pKSk7CisgICAgbV9kaXNwYXRj
aFF1ZXVlLT5kaXNwYXRjaChzdGQ6Om1ha2VfdW5pcXVlPFdvcmtJdGVtPih0aGlzLCBXVEZNb3Zl
KGZ1bmN0aW9uKSkpOwogfQogCiB2b2lkIFdvcmtRdWV1ZTo6ZGlzcGF0Y2hBZnRlcihzdGQ6OmNo
cm9ubzo6bmFub3NlY29uZHMgZHVyYXRpb24sIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4gZnVuY3Rp
b24pCkBAIC02NSw1ICs2NSw1IEBAIHZvaWQgV29ya1F1ZXVlOjpkaXNwYXRjaEFmdGVyKHN0ZDo6
Y2hyb25vOjpuYW5vc2Vjb25kcyBkdXJhdGlvbiwgc3RkOjpmdW5jdGlvbjx2CiAgICAgaWYgKCFt
X2Rpc3BhdGNoUXVldWUpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fZGlzcGF0Y2hRdWV1ZS0+
ZGlzcGF0Y2goVGltZXJXb3JrSXRlbTo6Y3JlYXRlKHRoaXMsIFdURjo6bW92ZShmdW5jdGlvbiks
IGR1cmF0aW9uKSk7CisgICAgbV9kaXNwYXRjaFF1ZXVlLT5kaXNwYXRjaChUaW1lcldvcmtJdGVt
OjpjcmVhdGUodGhpcywgV1RGTW92ZShmdW5jdGlvbiksIGR1cmF0aW9uKSk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi9nbGliL0dSZWZQdHIuaCBiL1NvdXJjZS9XVEYvd3RmL2dsaWIv
R1JlZlB0ci5oCmluZGV4IGJlZTY5NzU5ZmU0NWY1ZjEwNDllNzE2ZWI1ODAxNGRhYmY1MWM2YjYu
LmQwNTA4NGI2NmExZTNjNGUwZjIyZjRkZWNmNThiNTA1MGUyMTA3MDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL2dsaWIvR1JlZlB0ci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL2dsaWIvR1Jl
ZlB0ci5oCkBAIC0xNDIsNyArMTQyLDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGlubGluZSBH
UmVmUHRyPFQ+JiBHUmVmUHRyPFQ+OjpvcGVyYXRvcj0oY29uc3QgR1JlZlB0cjxUPiYKIAogdGVt
cGxhdGUgPHR5cGVuYW1lIFQ+IGlubGluZSBHUmVmUHRyPFQ+JiBHUmVmUHRyPFQ+OjpvcGVyYXRv
cj0oR1JlZlB0cjxUPiYmIG8pCiB7Ci0gICAgR1JlZlB0ciBwdHIgPSBXVEY6Om1vdmUobyk7Cisg
ICAgR1JlZlB0ciBwdHIgPSBXVEZNb3ZlKG8pOwogICAgIHN3YXAocHRyKTsKICAgICByZXR1cm4g
KnRoaXM7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9nbGliL1dvcmtRdWV1ZUdMaWIu
Y3BwIGIvU291cmNlL1dURi93dGYvZ2xpYi9Xb3JrUXVldWVHTGliLmNwcAppbmRleCBhZWEwOTcz
MGQzZjUzMWEzYzljMGY1YzA1NDY0MDcxYTcyZmI2Yzg4Li42MzJmZjQwNTE0OTNhNmFkMDhkMTBi
NmQzOTI3YjY4ZjQwZDNiMWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9nbGliL1dvcmtR
dWV1ZUdMaWIuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL2dsaWIvV29ya1F1ZXVlR0xpYi5jcHAK
QEAgLTk0LDcgKzk0LDcgQEAgY2xhc3MgRGlzcGF0Y2hBZnRlckNvbnRleHQgewogcHVibGljOgog
ICAgIERpc3BhdGNoQWZ0ZXJDb250ZXh0KFdvcmtRdWV1ZSYgcXVldWUsIHN0ZDo6ZnVuY3Rpb248
dm9pZCAoKT4gZnVuY3Rpb24pCiAgICAgICAgIDogbV9xdWV1ZSgmcXVldWUpCi0gICAgICAgICwg
bV9mdW5jdGlvbihXVEY6Om1vdmUoZnVuY3Rpb24pKQorICAgICAgICAsIG1fZnVuY3Rpb24oV1RG
TW92ZShmdW5jdGlvbikpCiAgICAgewogICAgIH0KIApAQCAtMTE3LDcgKzExNyw3IEBAIHZvaWQg
V29ya1F1ZXVlOjpkaXNwYXRjaEFmdGVyKHN0ZDo6Y2hyb25vOjpuYW5vc2Vjb25kcyBkdXJhdGlv
biwgc3RkOjpmdW5jdGlvbjx2CiAgICAgR1JlZlB0cjxHU291cmNlPiBzb3VyY2UgPSBhZG9wdEdS
ZWYoZ190aW1lb3V0X3NvdXJjZV9uZXcoc3RkOjpjaHJvbm86OmR1cmF0aW9uX2Nhc3Q8c3RkOjpj
aHJvbm86Om1pbGxpc2Vjb25kcz4oZHVyYXRpb24pLmNvdW50KCkpKTsKICAgICBnX3NvdXJjZV9z
ZXRfbmFtZShzb3VyY2UuZ2V0KCksICJbV2ViS2l0XSBXb3JrUXVldWUgZGlzcGF0Y2hBZnRlciIp
OwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPERpc3BhdGNoQWZ0ZXJDb250ZXh0PiBjb250ZXh0ID0g
c3RkOjptYWtlX3VuaXF1ZTxEaXNwYXRjaEFmdGVyQ29udGV4dD4oKnRoaXMsIFdURjo6bW92ZShm
dW5jdGlvbikpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxEaXNwYXRjaEFmdGVyQ29udGV4dD4gY29u
dGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8RGlzcGF0Y2hBZnRlckNvbnRleHQ+KCp0aGlzLCBXVEZN
b3ZlKGZ1bmN0aW9uKSk7CiAgICAgZ19zb3VyY2Vfc2V0X2NhbGxiYWNrKHNvdXJjZS5nZXQoKSwg
W10oZ3BvaW50ZXIgdXNlckRhdGEpIC0+IGdib29sZWFuIHsKICAgICAgICAgc3RkOjp1bmlxdWVf
cHRyPERpc3BhdGNoQWZ0ZXJDb250ZXh0PiBjb250ZXh0KHN0YXRpY19jYXN0PERpc3BhdGNoQWZ0
ZXJDb250ZXh0Kj4odXNlckRhdGEpKTsKICAgICAgICAgY29udGV4dC0+ZGlzcGF0Y2goKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nLmggYi9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L0F0b21pY1N0cmluZy5oCmluZGV4IDYyMzNiYWE2OGFhN2FlOGE1OTgwZmRjOWRm
ODU2ZTY5ZjE4ZTBlMTUuLjcyMzVlZmFlMzllOWQzNGJmZWMzZGE2ODk1YTViYjRjMmRmZGQ2NDUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nLmgKKysrIGIvU291
cmNlL1dURi93dGYvdGV4dC9BdG9taWNTdHJpbmcuaApAQCAtODAsOSArODAsOSBAQCBwdWJsaWM6
CiAgICAgLy8gV2UgaGF2ZSB0byBkZWNsYXJlIHRoZSBjb3B5IGNvbnN0cnVjdG9yIGFuZCBjb3B5
IGFzc2lnbm1lbnQgb3BlcmF0b3IgYXMgd2VsbCwgb3RoZXJ3aXNlCiAgICAgLy8gdGhleSdsbCBi
ZSBpbXBsaWNpdGx5IGRlbGV0ZWQgYnkgYWRkaW5nIHRoZSBtb3ZlIGNvbnN0cnVjdG9yIGFuZCBt
b3ZlIGFzc2lnbm1lbnQgb3BlcmF0b3IuCiAgICAgQXRvbWljU3RyaW5nKGNvbnN0IEF0b21pY1N0
cmluZyYgb3RoZXIpIDogbV9zdHJpbmcob3RoZXIubV9zdHJpbmcpIHsgfQotICAgIEF0b21pY1N0
cmluZyhBdG9taWNTdHJpbmcmJiBvdGhlcikgOiBtX3N0cmluZyhXVEY6Om1vdmUob3RoZXIubV9z
dHJpbmcpKSB7IH0KKyAgICBBdG9taWNTdHJpbmcoQXRvbWljU3RyaW5nJiYgb3RoZXIpIDogbV9z
dHJpbmcoV1RGTW92ZShvdGhlci5tX3N0cmluZykpIHsgfQogICAgIEF0b21pY1N0cmluZyYgb3Bl
cmF0b3I9KGNvbnN0IEF0b21pY1N0cmluZyYgb3RoZXIpIHsgbV9zdHJpbmcgPSBvdGhlci5tX3N0
cmluZzsgcmV0dXJuICp0aGlzOyB9Ci0gICAgQXRvbWljU3RyaW5nJiBvcGVyYXRvcj0oQXRvbWlj
U3RyaW5nJiYgb3RoZXIpIHsgbV9zdHJpbmcgPSBXVEY6Om1vdmUob3RoZXIubV9zdHJpbmcpOyBy
ZXR1cm4gKnRoaXM7IH0KKyAgICBBdG9taWNTdHJpbmcmIG9wZXJhdG9yPShBdG9taWNTdHJpbmcm
JiBvdGhlcikgeyBtX3N0cmluZyA9IFdURk1vdmUob3RoZXIubV9zdHJpbmcpOyByZXR1cm4gKnRo
aXM7IH0KIAogICAgIC8vIEhhc2ggdGFibGUgZGVsZXRlZCB2YWx1ZXMsIHdoaWNoIGFyZSBvbmx5
IGNvbnN0cnVjdGVkIGFuZCBuZXZlciBjb3BpZWQgb3IgZGVzdHJveWVkLgogICAgIEF0b21pY1N0
cmluZyhXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpIDogbV9zdHJpbmcoV1RGOjpIYXNo
VGFibGVEZWxldGVkVmFsdWUpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9T
dHJpbmdDb25jYXRlbmF0ZS5oIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0
ZS5oCmluZGV4IGYzOWU3ZGVjNmNkOTE3MDliMDYzYmUwZmNjMjFiMWMyNTVlYWZlZjAuLjc3ZjM0
ZGY0NzI3Yjk5MzAxM2ExZTEzODQ5OGUzYmVkZjc4MTZiMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L1N0cmluZ0NvbmNhdGVuYXRlLmgKQEAgLTI5NSw3ICsyOTUsNyBAQCBTdHJpbmcgdHJ5TWFrZVN0
cmluZyhTdHJpbmdUeXBlMSBzdHJpbmcxLCBTdHJpbmdUeXBlMiBzdHJpbmcyKQogICAgICAgICBy
ZXN1bHQgKz0gYWRhcHRlcjEubGVuZ3RoKCk7CiAgICAgICAgIGFkYXB0ZXIyLndyaXRlVG8ocmVz
dWx0KTsKIAotICAgICAgICByZXR1cm4gV1RGOjptb3ZlKHJlc3VsdEltcGwpOworICAgICAgICBy
ZXR1cm4gV1RGTW92ZShyZXN1bHRJbXBsKTsKICAgICB9CiAKICAgICBVQ2hhciogYnVmZmVyOwpA
QCAtMzA4LDcgKzMwOCw3IEBAIFN0cmluZyB0cnlNYWtlU3RyaW5nKFN0cmluZ1R5cGUxIHN0cmlu
ZzEsIFN0cmluZ1R5cGUyIHN0cmluZzIpCiAgICAgcmVzdWx0ICs9IGFkYXB0ZXIxLmxlbmd0aCgp
OwogICAgIGFkYXB0ZXIyLndyaXRlVG8ocmVzdWx0KTsKIAotICAgIHJldHVybiBXVEY6Om1vdmUo
cmVzdWx0SW1wbCk7CisgICAgcmV0dXJuIFdURk1vdmUocmVzdWx0SW1wbCk7CiB9CiAKIHRlbXBs
YXRlPHR5cGVuYW1lIFN0cmluZ1R5cGUxLCB0eXBlbmFtZSBTdHJpbmdUeXBlMiwgdHlwZW5hbWUg
U3RyaW5nVHlwZTM+CkBAIC0zMzgsNyArMzM4LDcgQEAgU3RyaW5nIHRyeU1ha2VTdHJpbmcoU3Ry
aW5nVHlwZTEgc3RyaW5nMSwgU3RyaW5nVHlwZTIgc3RyaW5nMiwgU3RyaW5nVHlwZTMgc3RyaW4K
ICAgICAgICAgcmVzdWx0ICs9IGFkYXB0ZXIyLmxlbmd0aCgpOwogICAgICAgICBhZGFwdGVyMy53
cml0ZVRvKHJlc3VsdCk7CiAKLSAgICAgICAgcmV0dXJuIFdURjo6bW92ZShyZXN1bHRJbXBsKTsK
KyAgICAgICAgcmV0dXJuIFdURk1vdmUocmVzdWx0SW1wbCk7CiAgICAgfQogCiAgICAgVUNoYXIq
IGJ1ZmZlciA9IDA7CkBAIC0zNTMsNyArMzUzLDcgQEAgU3RyaW5nIHRyeU1ha2VTdHJpbmcoU3Ry
aW5nVHlwZTEgc3RyaW5nMSwgU3RyaW5nVHlwZTIgc3RyaW5nMiwgU3RyaW5nVHlwZTMgc3RyaW4K
ICAgICByZXN1bHQgKz0gYWRhcHRlcjIubGVuZ3RoKCk7CiAgICAgYWRhcHRlcjMud3JpdGVUbyhy
ZXN1bHQpOwogCi0gICAgcmV0dXJuIFdURjo6bW92ZShyZXN1bHRJbXBsKTsKKyAgICByZXR1cm4g
V1RGTW92ZShyZXN1bHRJbXBsKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgU3RyaW5nVHlwZTEs
IHR5cGVuYW1lIFN0cmluZ1R5cGUyLCB0eXBlbmFtZSBTdHJpbmdUeXBlMywgdHlwZW5hbWUgU3Ry
aW5nVHlwZTQ+CkBAIC0zODcsNyArMzg3LDcgQEAgU3RyaW5nIHRyeU1ha2VTdHJpbmcoU3RyaW5n
VHlwZTEgc3RyaW5nMSwgU3RyaW5nVHlwZTIgc3RyaW5nMiwgU3RyaW5nVHlwZTMgc3RyaW4KICAg
ICAgICAgcmVzdWx0ICs9IGFkYXB0ZXIzLmxlbmd0aCgpOwogICAgICAgICBhZGFwdGVyNC53cml0
ZVRvKHJlc3VsdCk7CiAKLSAgICAgICAgcmV0dXJuIFdURjo6bW92ZShyZXN1bHRJbXBsKTsKKyAg
ICAgICAgcmV0dXJuIFdURk1vdmUocmVzdWx0SW1wbCk7CiAgICAgfQogCiAgICAgVUNoYXIqIGJ1
ZmZlcjsKQEAgLTQwNCw3ICs0MDQsNyBAQCBTdHJpbmcgdHJ5TWFrZVN0cmluZyhTdHJpbmdUeXBl
MSBzdHJpbmcxLCBTdHJpbmdUeXBlMiBzdHJpbmcyLCBTdHJpbmdUeXBlMyBzdHJpbgogICAgIHJl
c3VsdCArPSBhZGFwdGVyMy5sZW5ndGgoKTsKICAgICBhZGFwdGVyNC53cml0ZVRvKHJlc3VsdCk7
CiAKLSAgICByZXR1cm4gV1RGOjptb3ZlKHJlc3VsdEltcGwpOworICAgIHJldHVybiBXVEZNb3Zl
KHJlc3VsdEltcGwpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBTdHJpbmdUeXBlMSwgdHlwZW5h
bWUgU3RyaW5nVHlwZTIsIHR5cGVuYW1lIFN0cmluZ1R5cGUzLCB0eXBlbmFtZSBTdHJpbmdUeXBl
NCwgdHlwZW5hbWUgU3RyaW5nVHlwZTU+CkBAIC00NDIsNyArNDQyLDcgQEAgU3RyaW5nIHRyeU1h
a2VTdHJpbmcoU3RyaW5nVHlwZTEgc3RyaW5nMSwgU3RyaW5nVHlwZTIgc3RyaW5nMiwgU3RyaW5n
VHlwZTMgc3RyaW4KICAgICAgICAgcmVzdWx0ICs9IGFkYXB0ZXI0Lmxlbmd0aCgpOwogICAgICAg
ICBhZGFwdGVyNS53cml0ZVRvKHJlc3VsdCk7CiAKLSAgICAgICAgcmV0dXJuIFdURjo6bW92ZShy
ZXN1bHRJbXBsKTsKKyAgICAgICAgcmV0dXJuIFdURk1vdmUocmVzdWx0SW1wbCk7CiAgICAgfQog
CiAgICAgVUNoYXIqIGJ1ZmZlcjsKQEAgLTQ2MSw3ICs0NjEsNyBAQCBTdHJpbmcgdHJ5TWFrZVN0
cmluZyhTdHJpbmdUeXBlMSBzdHJpbmcxLCBTdHJpbmdUeXBlMiBzdHJpbmcyLCBTdHJpbmdUeXBl
MyBzdHJpbgogICAgIHJlc3VsdCArPSBhZGFwdGVyNC5sZW5ndGgoKTsKICAgICBhZGFwdGVyNS53
cml0ZVRvKHJlc3VsdCk7CiAKLSAgICByZXR1cm4gV1RGOjptb3ZlKHJlc3VsdEltcGwpOworICAg
IHJldHVybiBXVEZNb3ZlKHJlc3VsdEltcGwpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBTdHJp
bmdUeXBlMSwgdHlwZW5hbWUgU3RyaW5nVHlwZTIsIHR5cGVuYW1lIFN0cmluZ1R5cGUzLCB0eXBl
bmFtZSBTdHJpbmdUeXBlNCwgdHlwZW5hbWUgU3RyaW5nVHlwZTUsIHR5cGVuYW1lIFN0cmluZ1R5
cGU2PgpAQCAtNTAzLDcgKzUwMyw3IEBAIFN0cmluZyB0cnlNYWtlU3RyaW5nKFN0cmluZ1R5cGUx
IHN0cmluZzEsIFN0cmluZ1R5cGUyIHN0cmluZzIsIFN0cmluZ1R5cGUzIHN0cmluCiAgICAgICAg
IHJlc3VsdCArPSBhZGFwdGVyNS5sZW5ndGgoKTsKICAgICAgICAgYWRhcHRlcjYud3JpdGVUbyhy
ZXN1bHQpOwogCi0gICAgICAgIHJldHVybiBXVEY6Om1vdmUocmVzdWx0SW1wbCk7CisgICAgICAg
IHJldHVybiBXVEZNb3ZlKHJlc3VsdEltcGwpOwogICAgIH0KIAogICAgIFVDaGFyKiBidWZmZXI7
CkBAIC01MjQsNyArNTI0LDcgQEAgU3RyaW5nIHRyeU1ha2VTdHJpbmcoU3RyaW5nVHlwZTEgc3Ry
aW5nMSwgU3RyaW5nVHlwZTIgc3RyaW5nMiwgU3RyaW5nVHlwZTMgc3RyaW4KICAgICByZXN1bHQg
Kz0gYWRhcHRlcjUubGVuZ3RoKCk7CiAgICAgYWRhcHRlcjYud3JpdGVUbyhyZXN1bHQpOwogCi0g
ICAgcmV0dXJuIFdURjo6bW92ZShyZXN1bHRJbXBsKTsKKyAgICByZXR1cm4gV1RGTW92ZShyZXN1
bHRJbXBsKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgU3RyaW5nVHlwZTEsIHR5cGVuYW1lIFN0
cmluZ1R5cGUyLCB0eXBlbmFtZSBTdHJpbmdUeXBlMywgdHlwZW5hbWUgU3RyaW5nVHlwZTQsIHR5
cGVuYW1lIFN0cmluZ1R5cGU1LCB0eXBlbmFtZSBTdHJpbmdUeXBlNiwgdHlwZW5hbWUgU3RyaW5n
VHlwZTc+CkBAIC01NzAsNyArNTcwLDcgQEAgU3RyaW5nIHRyeU1ha2VTdHJpbmcoU3RyaW5nVHlw
ZTEgc3RyaW5nMSwgU3RyaW5nVHlwZTIgc3RyaW5nMiwgU3RyaW5nVHlwZTMgc3RyaW4KICAgICAg
ICAgcmVzdWx0ICs9IGFkYXB0ZXI2Lmxlbmd0aCgpOwogICAgICAgICBhZGFwdGVyNy53cml0ZVRv
KHJlc3VsdCk7CiAKLSAgICAgICAgcmV0dXJuIFdURjo6bW92ZShyZXN1bHRJbXBsKTsKKyAgICAg
ICAgcmV0dXJuIFdURk1vdmUocmVzdWx0SW1wbCk7CiAgICAgfQogCiAgICAgVUNoYXIqIGJ1ZmZl
cjsKQEAgLTU5Myw3ICs1OTMsNyBAQCBTdHJpbmcgdHJ5TWFrZVN0cmluZyhTdHJpbmdUeXBlMSBz
dHJpbmcxLCBTdHJpbmdUeXBlMiBzdHJpbmcyLCBTdHJpbmdUeXBlMyBzdHJpbgogICAgIHJlc3Vs
dCArPSBhZGFwdGVyNi5sZW5ndGgoKTsKICAgICBhZGFwdGVyNy53cml0ZVRvKHJlc3VsdCk7CiAK
LSAgICByZXR1cm4gV1RGOjptb3ZlKHJlc3VsdEltcGwpOworICAgIHJldHVybiBXVEZNb3ZlKHJl
c3VsdEltcGwpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBTdHJpbmdUeXBlMSwgdHlwZW5hbWUg
U3RyaW5nVHlwZTIsIHR5cGVuYW1lIFN0cmluZ1R5cGUzLCB0eXBlbmFtZSBTdHJpbmdUeXBlNCwg
dHlwZW5hbWUgU3RyaW5nVHlwZTUsIHR5cGVuYW1lIFN0cmluZ1R5cGU2LCB0eXBlbmFtZSBTdHJp
bmdUeXBlNywgdHlwZW5hbWUgU3RyaW5nVHlwZTg+CkBAIC02NDMsNyArNjQzLDcgQEAgU3RyaW5n
IHRyeU1ha2VTdHJpbmcoU3RyaW5nVHlwZTEgc3RyaW5nMSwgU3RyaW5nVHlwZTIgc3RyaW5nMiwg
U3RyaW5nVHlwZTMgc3RyaW4KICAgICAgICAgcmVzdWx0ICs9IGFkYXB0ZXI3Lmxlbmd0aCgpOwog
ICAgICAgICBhZGFwdGVyOC53cml0ZVRvKHJlc3VsdCk7CiAKLSAgICAgICAgcmV0dXJuIFdURjo6
bW92ZShyZXN1bHRJbXBsKTsKKyAgICAgICAgcmV0dXJuIFdURk1vdmUocmVzdWx0SW1wbCk7CiAg
ICAgfQogCiAgICAgVUNoYXIqIGJ1ZmZlcjsKQEAgLTY2OCw3ICs2NjgsNyBAQCBTdHJpbmcgdHJ5
TWFrZVN0cmluZyhTdHJpbmdUeXBlMSBzdHJpbmcxLCBTdHJpbmdUeXBlMiBzdHJpbmcyLCBTdHJp
bmdUeXBlMyBzdHJpbgogICAgIHJlc3VsdCArPSBhZGFwdGVyNy5sZW5ndGgoKTsKICAgICBhZGFw
dGVyOC53cml0ZVRvKHJlc3VsdCk7CiAKLSAgICByZXR1cm4gV1RGOjptb3ZlKHJlc3VsdEltcGwp
OworICAgIHJldHVybiBXVEZNb3ZlKHJlc3VsdEltcGwpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBTdHJpbmdUeXBlMSwgdHlwZW5hbWUgU3RyaW5nVHlwZTIsIHR5cGVuYW1lIFN0cmluZ1R5cGUz
LCB0eXBlbmFtZSBTdHJpbmdUeXBlNCwgdHlwZW5hbWUgU3RyaW5nVHlwZTUsIHR5cGVuYW1lIFN0
cmluZ1R5cGU2LCB0eXBlbmFtZSBTdHJpbmdUeXBlNywgdHlwZW5hbWUgU3RyaW5nVHlwZTgsIHR5
cGVuYW1lIFN0cmluZ1R5cGU5PgpAQCAtNzIyLDcgKzcyMiw3IEBAIFN0cmluZyB0cnlNYWtlU3Ry
aW5nKFN0cmluZ1R5cGUxIHN0cmluZzEsIFN0cmluZ1R5cGUyIHN0cmluZzIsIFN0cmluZ1R5cGUz
IHN0cmluCiAgICAgICAgIHJlc3VsdCArPSBhZGFwdGVyOC5sZW5ndGgoKTsKICAgICAgICAgYWRh
cHRlcjkud3JpdGVUbyhyZXN1bHQpOwogCi0gICAgICAgIHJldHVybiBXVEY6Om1vdmUocmVzdWx0
SW1wbCk7CisgICAgICAgIHJldHVybiBXVEZNb3ZlKHJlc3VsdEltcGwpOwogICAgIH0KIAogICAg
IFVDaGFyKiBidWZmZXI7CkBAIC03NDksNyArNzQ5LDcgQEAgU3RyaW5nIHRyeU1ha2VTdHJpbmco
U3RyaW5nVHlwZTEgc3RyaW5nMSwgU3RyaW5nVHlwZTIgc3RyaW5nMiwgU3RyaW5nVHlwZTMgc3Ry
aW4KICAgICByZXN1bHQgKz0gYWRhcHRlcjgubGVuZ3RoKCk7CiAgICAgYWRhcHRlcjkud3JpdGVU
byhyZXN1bHQpOwogCi0gICAgcmV0dXJuIFdURjo6bW92ZShyZXN1bHRJbXBsKTsKKyAgICByZXR1
cm4gV1RGTW92ZShyZXN1bHRJbXBsKTsKIH0KIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi90ZXh0L1dURlN0cmluZy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5jcHAK
aW5kZXggZGM5NmNkODJkNWY0MzI1ZTcyMjE1NTE0ZDY5YjAzODE4MzdmOTkzMy4uZWMxMTU1YjFl
NjBhMmYwZWZhNzM5MDk3Mzg0ODEyNDAzZTkxODM3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvdGV4dC9XVEZTdHJpbmcuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5n
LmNwcApAQCAtNjYzLDcgKzY2Myw3IEBAIFN0cmluZyBTdHJpbmc6Omlzb2xhdGVkQ29weSgpICYm
CiAgICAgaWYgKGlzU2FmZVRvU2VuZFRvQW5vdGhlclRocmVhZCgpKSB7CiAgICAgICAgIC8vIFNp
bmNlIHdlIGtub3cgdGhhdCBvdXIgc3RyaW5nIGlzIGEgdGVtcG9yYXJ5IHRoYXQgd2lsbCBiZSBk
ZXN0cm95ZWQKICAgICAgICAgLy8gd2UgY2FuIGp1c3Qgc3RlYWwgdGhlIG1faW1wbCBmcm9tIGl0
LCB0aHVzIGF2b2lkaW5nIGEgY29weS4KLSAgICAgICAgcmV0dXJuIFN0cmluZyhXVEY6Om1vdmUo
KnRoaXMpKTsKKyAgICAgICAgcmV0dXJuIFN0cmluZyhXVEZNb3ZlKCp0aGlzKSk7CiAgICAgfQog
CiAgICAgaWYgKCFtX2ltcGwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0
cmluZy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaAppbmRleCBkMDg5OWNmMzE1
NWMyZjhjYTk4YzAxYWUwYjcxYjg3Y2M1MjVhZWU5Li5kZjNjOGYyNTVmMThmMDllYjZkMzE0ZWZk
ZDE0ZDAxZDE1OTRmN2FkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmlu
Zy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgKQEAgLTU1MCwyMiArNTUw
LDIyIEBAIGlubGluZSBTdHJpbmc6OlN0cmluZyhQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IGltcGwp
CiB9CiAKIGlubGluZSBTdHJpbmc6OlN0cmluZyhSZWY8U3RyaW5nSW1wbD4mJiBpbXBsKQotICAg
IDogbV9pbXBsKFdURjo6bW92ZShpbXBsKSkKKyAgICA6IG1faW1wbChXVEZNb3ZlKGltcGwpKQog
ewogfQogCiBpbmxpbmUgU3RyaW5nOjpTdHJpbmcoUmVmUHRyPFN0cmluZ0ltcGw+JiYgaW1wbCkK
LSAgICA6IG1faW1wbChXVEY6Om1vdmUoaW1wbCkpCisgICAgOiBtX2ltcGwoV1RGTW92ZShpbXBs
KSkKIHsKIH0KIAogaW5saW5lIFN0cmluZzo6U3RyaW5nKFJlZjxBdG9taWNTdHJpbmdJbXBsPiYm
IGltcGwpCi0gICAgOiBtX2ltcGwoV1RGOjptb3ZlKGltcGwpKQorICAgIDogbV9pbXBsKFdURk1v
dmUoaW1wbCkpCiB7CiB9CiAKIGlubGluZSBTdHJpbmc6OlN0cmluZyhSZWZQdHI8QXRvbWljU3Ry
aW5nSW1wbD4mJiBpbXBsKQotICAgIDogbV9pbXBsKFdURjo6bW92ZShpbXBsKSkKKyAgICA6IG1f
aW1wbChXVEZNb3ZlKGltcGwpKQogewogfQogCkBAIC03MDQsNyArNzA0LDcgQEAgcHVibGljOgog
ICAgIGV4cGxpY2l0IFN0cmluZ0NhcHR1cmUoU3RyaW5nJiYgc3RyaW5nKSA6IG1fc3RyaW5nKHN0
cmluZykgeyB9CiAgICAgU3RyaW5nQ2FwdHVyZShjb25zdCBTdHJpbmdDYXB0dXJlJiBvdGhlcikg
OiBtX3N0cmluZyhvdGhlci5tX3N0cmluZy5pc29sYXRlZENvcHkoKSkgeyB9CiAgICAgY29uc3Qg
U3RyaW5nJiBzdHJpbmcoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZzsgfQotICAgIFN0cmluZyBy
ZWxlYXNlU3RyaW5nKCkgeyByZXR1cm4gV1RGOjptb3ZlKG1fc3RyaW5nKTsgfQorICAgIFN0cmlu
ZyByZWxlYXNlU3RyaW5nKCkgeyByZXR1cm4gV1RGTW92ZShtX3N0cmluZyk7IH0KIAogICAgIHZv
aWQgb3BlcmF0b3I9KGNvbnN0IFN0cmluZ0NhcHR1cmUmIG90aGVyKSB7IG1fc3RyaW5nID0gb3Ro
ZXIubV9zdHJpbmcuaXNvbGF0ZWRDb3B5KCk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvd2luL0dESU9iamVjdC5oIGIvU291cmNlL1dURi93dGYvd2luL0dESU9iamVjdC5oCmluZGV4
IDdlMWQ0Y2YxMDc3ZjUzMWJmNDYzNzM1NDE4YWUyZGUwMWRmNWU2NzkuLjc5MTg2MWRhZjA0YTJh
ZDk2YWRmYmQ5Nzc2ZGYzZDgzNDRlN2QwNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3dp
bi9HRElPYmplY3QuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vR0RJT2JqZWN0LmgKQEAgLTk1
LDcgKzk1LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIEdESU9iamVjdDxUPjo6R0RJ
T2JqZWN0KEdESU9iamVjdDxUPiYmIG90aGVyKQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxp
bmUgR0RJT2JqZWN0PFQ+JiBHRElPYmplY3Q8VD46Om9wZXJhdG9yPShHRElPYmplY3Q8VD4mJiBv
dGhlcikKIHsKLSAgICBhdXRvIG9iamVjdCA9IFdURjo6bW92ZShvdGhlcik7CisgICAgYXV0byBv
YmplY3QgPSBXVEZNb3ZlKG90aGVyKTsKICAgICBzd2FwKG9iamVjdCk7CiAgICAgcmV0dXJuICp0
aGlzOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9iYXR0ZXJ5L05hdmln
YXRvckJhdHRlcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9iYXR0ZXJ5L05hdmlnYXRv
ckJhdHRlcnkuY3BwCmluZGV4IDA1MDM1OTY3NjM0MDhiNjNlYTFmMDVhMDBhNjM0YjcxN2U3N2Mw
NDAuLjQxMmViZTI5ZDA0MmJiYjA3NzEwOTc5YjE1YjU3OGM0MDIyYWQzYzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYmF0dGVyeS9OYXZpZ2F0b3JCYXR0ZXJ5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2JhdHRlcnkvTmF2aWdhdG9yQmF0dGVyeS5jcHAKQEAg
LTU4LDcgKzU4LDcgQEAgTmF2aWdhdG9yQmF0dGVyeSogTmF2aWdhdG9yQmF0dGVyeTo6ZnJvbShO
YXZpZ2F0b3IqIG5hdmlnYXRvcikKICAgICBpZiAoIXN1cHBsZW1lbnQpIHsKICAgICAgICAgYXV0
byBuZXdTdXBwbGVtZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxOYXZpZ2F0b3JCYXR0ZXJ5PigpOwog
ICAgICAgICBzdXBwbGVtZW50ID0gbmV3U3VwcGxlbWVudC5nZXQoKTsKLSAgICAgICAgcHJvdmlk
ZVRvKG5hdmlnYXRvciwgc3VwcGxlbWVudE5hbWUoKSwgV1RGOjptb3ZlKG5ld1N1cHBsZW1lbnQp
KTsKKyAgICAgICAgcHJvdmlkZVRvKG5hdmlnYXRvciwgc3VwcGxlbWVudE5hbWUoKSwgV1RGTW92
ZShuZXdTdXBwbGVtZW50KSk7CiAgICAgfQogICAgIHJldHVybiBzdXBwbGVtZW50OwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE1TZXNzaW9u
Q2xlYXJLZXkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE1T
ZXNzaW9uQ2xlYXJLZXkuY3BwCmluZGV4IDFjMjk2NDQzYTdlMjljZDJmZGEyMDYzN2M5NTRkMDcw
ZTFmN2VhZmEuLjllYzc5N2YwYzE0MWNkNWYzYTc5YzdlNzUxMjZjNGFlMWY0Y2UwMjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNU2Vzc2lvbkNs
ZWFyS2V5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NE
TVNlc3Npb25DbGVhcktleS5jcHAKQEAgLTE2Niw3ICsxNjYsNyBAQCBib29sIENETVNlc3Npb25D
bGVhcktleTo6dXBkYXRlKFVpbnQ4QXJyYXkqIHJhd0tleXNEYXRhLCBSZWZQdHI8VWludDhBcnJh
eT4mIG5leAogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQogCi0gICAg
ICAgICAgICBtX2NhY2hlZEtleXMuc2V0KGtleUlkLCBXVEY6Om1vdmUoa2V5RGF0YSkpOworICAg
ICAgICAgICAgbV9jYWNoZWRLZXlzLnNldChrZXlJZCwgV1RGTW92ZShrZXlEYXRhKSk7CiAgICAg
ICAgICAgICBmb3VuZFZhbGlkS2V5ID0gdHJ1ZTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5jcHAKaW5kZXggNTk1
YWIxYjRjZjQ1ZTgxMDFiZjVmNzlhNzYyMmMyZGY2ZGEyNjQ3Ni4uNGNlMDk3NTE2YzdjYTllODQ1
OGMwMmZkZDA3MzVjMWY5ZTE4MDBhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmNwcApAQCAtNjIsMTMgKzYyLDEzIEBAIFJlZlB0
cjxNZWRpYUtleXM+IE1lZGlhS2V5czo6Y3JlYXRlKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBF
eGNlcHRpb25Db2RlJiBlYykKICAgICAvLyA1LiBDcmVhdGUgYSBuZXcgTWVkaWFLZXlzIG9iamVj
dC4KICAgICAvLyA1LjEgTGV0IHRoZSBrZXlTeXN0ZW0gYXR0cmlidXRlIGJlIGtleVN5c3RlbS4K
ICAgICAvLyA2LiBSZXR1cm4gdGhlIG5ldyBvYmplY3QgdG8gdGhlIGNhbGxlci4KLSAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBNZWRpYUtleXMoa2V5U3lzdGVtLCBXVEY6Om1vdmUoY2RtKSkpOwor
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1lZGlhS2V5cyhrZXlTeXN0ZW0sIFdURk1vdmUoY2Rt
KSkpOwogfQogCiBNZWRpYUtleXM6Ok1lZGlhS2V5cyhjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwg
c3RkOjp1bmlxdWVfcHRyPENETT4gY2RtKQogICAgIDogbV9tZWRpYUVsZW1lbnQobnVsbHB0cikK
ICAgICAsIG1fa2V5U3lzdGVtKGtleVN5c3RlbSkKLSAgICAsIG1fY2RtKFdURjo6bW92ZShjZG0p
KQorICAgICwgbV9jZG0oV1RGTW92ZShjZG0pKQogewogICAgIG1fY2RtLT5zZXRDbGllbnQodGhp
cyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dhbWVwYWQvTmF2aWdh
dG9yR2FtZXBhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dhbWVwYWQvTmF2aWdhdG9y
R2FtZXBhZC5jcHAKaW5kZXggNmU2MDM4ZDk3Y2VkZGU5NDI0NmM0OTdkNmI5MzQ5MWU3OTQ3NDk0
MS4uZDBkMTYzNmVkNTZlNTc5Y2VkZmFiZWEwNThiNDU1MTEyNDI2MmJiYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9nYW1lcGFkL05hdmlnYXRvckdhbWVwYWQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2FtZXBhZC9OYXZpZ2F0b3JHYW1lcGFkLmNwcApAQCAt
NjIsNyArNjIsNyBAQCBOYXZpZ2F0b3JHYW1lcGFkKiBOYXZpZ2F0b3JHYW1lcGFkOjpmcm9tKE5h
dmlnYXRvciogbmF2aWdhdG9yKQogICAgIGlmICghc3VwcGxlbWVudCkgewogICAgICAgICBhdXRv
IG5ld1N1cHBsZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE5hdmlnYXRvckdhbWVwYWQ+KCk7CiAg
ICAgICAgIHN1cHBsZW1lbnQgPSBuZXdTdXBwbGVtZW50LmdldCgpOwotICAgICAgICBwcm92aWRl
VG8obmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpLCBXVEY6Om1vdmUobmV3U3VwcGxlbWVudCkp
OworICAgICAgICBwcm92aWRlVG8obmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpLCBXVEZNb3Zl
KG5ld1N1cHBsZW1lbnQpKTsKIAogICAgICAgICBpZiAoRnJhbWUqIGZyYW1lID0gbmF2aWdhdG9y
LT5mcmFtZSgpKSB7CiAgICAgICAgICAgICBpZiAoRG9jdW1lbnRMb2FkZXIqIGRvY3VtZW50TG9h
ZGVyID0gZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2dhbWVwYWQvZGVwcmVjYXRlZC9OYXZpZ2F0b3JHYW1lcGFkLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2FtZXBhZC9kZXByZWNhdGVkL05hdmlnYXRvckdh
bWVwYWQuY3BwCmluZGV4IDY0MmFjOGUzM2M2ODFiMjE1NmE1NDg1ZWY4YTc3MjRlZTNmNzgwZTku
LjIzMjFkNWFkYTQ0MmY2ZjJmZjY3NTc0MzBiMjQxMzM2YWFhYzliYWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZ2FtZXBhZC9kZXByZWNhdGVkL05hdmlnYXRvckdhbWVwYWQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2FtZXBhZC9kZXByZWNhdGVkL05hdmln
YXRvckdhbWVwYWQuY3BwCkBAIC01Myw3ICs1Myw3IEBAIE5hdmlnYXRvckdhbWVwYWQqIE5hdmln
YXRvckdhbWVwYWQ6OmZyb20oTmF2aWdhdG9yKiBuYXZpZ2F0b3IpCiAgICAgaWYgKCFzdXBwbGVt
ZW50KSB7CiAgICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8TmF2
aWdhdG9yR2FtZXBhZD4oKTsKICAgICAgICAgc3VwcGxlbWVudCA9IG5ld1N1cHBsZW1lbnQuZ2V0
KCk7Ci0gICAgICAgIHByb3ZpZGVUbyhuYXZpZ2F0b3IsIHN1cHBsZW1lbnROYW1lKCksIFdURjo6
bW92ZShuZXdTdXBwbGVtZW50KSk7CisgICAgICAgIHByb3ZpZGVUbyhuYXZpZ2F0b3IsIHN1cHBs
ZW1lbnROYW1lKCksIFdURk1vdmUobmV3U3VwcGxlbWVudCkpOwogICAgIH0KICAgICByZXR1cm4g
c3VwcGxlbWVudDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9j
YXRpb24vR2VvTm90aWZpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlv
bi9HZW9Ob3RpZmllci5jcHAKaW5kZXggZDNlZWQyMGVkZDRhOTdlNWRhOGEwZTYxMDljOTk3Yjdj
ZDExMjJmMy4uMTMxNmQyNzQxM2I4ODEwODVhZWE3NTFjMzMyZmE5OTI0ZGRhMjFkZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9Ob3RpZmllci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9Ob3RpZmllci5jcHAK
QEAgLTM2LDkgKzM2LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBHZW9Ob3RpZmllcjo6R2Vv
Tm90aWZpZXIoR2VvbG9jYXRpb24mIGdlb2xvY2F0aW9uLCBSZWZQdHI8UG9zaXRpb25DYWxsYmFj
az4mJiBzdWNjZXNzQ2FsbGJhY2ssIFJlZlB0cjxQb3NpdGlvbkVycm9yQ2FsbGJhY2s+JiYgZXJy
b3JDYWxsYmFjaywgUmVmUHRyPFBvc2l0aW9uT3B0aW9ucz4mJiBvcHRpb25zKQogICAgIDogbV9n
ZW9sb2NhdGlvbihnZW9sb2NhdGlvbikKLSAgICAsIG1fc3VjY2Vzc0NhbGxiYWNrKFdURjo6bW92
ZShzdWNjZXNzQ2FsbGJhY2spKQotICAgICwgbV9lcnJvckNhbGxiYWNrKFdURjo6bW92ZShlcnJv
ckNhbGxiYWNrKSkKLSAgICAsIG1fb3B0aW9ucyhXVEY6Om1vdmUob3B0aW9ucykpCisgICAgLCBt
X3N1Y2Nlc3NDYWxsYmFjayhXVEZNb3ZlKHN1Y2Nlc3NDYWxsYmFjaykpCisgICAgLCBtX2Vycm9y
Q2FsbGJhY2soV1RGTW92ZShlcnJvckNhbGxiYWNrKSkKKyAgICAsIG1fb3B0aW9ucyhXVEZNb3Zl
KG9wdGlvbnMpKQogICAgICwgbV90aW1lcigqdGhpcywgJkdlb05vdGlmaWVyOjp0aW1lckZpcmVk
KQogICAgICwgbV91c2VDYWNoZWRQb3NpdGlvbihmYWxzZSkKIHsKQEAgLTU2LDcgKzU2LDcgQEAg
dm9pZCBHZW9Ob3RpZmllcjo6c2V0RmF0YWxFcnJvcihSZWZQdHI8UG9zaXRpb25FcnJvcj4mJiBl
cnJvcikKICAgICBpZiAobV9mYXRhbEVycm9yKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2Zh
dGFsRXJyb3IgPSBXVEY6Om1vdmUoZXJyb3IpOworICAgIG1fZmF0YWxFcnJvciA9IFdURk1vdmUo
ZXJyb3IpOwogICAgIC8vIEFuIGV4aXN0aW5nIHRpbWVyIG1heSBub3QgaGF2ZSBhIHplcm8gdGlt
ZW91dC4KICAgICBtX3RpbWVyLnN0b3AoKTsKICAgICBtX3RpbWVyLnN0YXJ0T25lU2hvdCgwKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvTm90aWZp
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvTm90aWZpZXIuaApp
bmRleCAzMzkyNDNhMzJlM2MwNzdiYjFhZDZkNzU3NTM2ZmI2MDA3ZTQ4YmY3Li43MjU3YzQ2Y2Q3
NWJkNTIwYWNlZTJmZTEzZWJkODY4OGM1NThlOTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb05vdGlmaWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9Ob3RpZmllci5oCkBAIC00Nyw3ICs0Nyw3IEBAIGNsYXNz
IEdlb05vdGlmaWVyIDogcHVibGljIFJlZkNvdW50ZWQ8R2VvTm90aWZpZXI+IHsKIHB1YmxpYzoK
ICAgICBzdGF0aWMgUmVmPEdlb05vdGlmaWVyPiBjcmVhdGUoR2VvbG9jYXRpb24mIGdlb2xvY2F0
aW9uLCBSZWZQdHI8UG9zaXRpb25DYWxsYmFjaz4mJiBwb3NpdGlvbkNhbGxiYWNrLCBSZWZQdHI8
UG9zaXRpb25FcnJvckNhbGxiYWNrPiYmIHBvc2l0aW9uRXJyb3JDYWxsYmFjaywgUmVmUHRyPFBv
c2l0aW9uT3B0aW9ucz4mJiBvcHRpb25zKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgR2VvTm90aWZpZXIoZ2VvbG9jYXRpb24sIFdURjo6bW92ZShwb3NpdGlvbkNhbGxiYWNr
KSwgV1RGOjptb3ZlKHBvc2l0aW9uRXJyb3JDYWxsYmFjayksIFdURjo6bW92ZShvcHRpb25zKSkp
OworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBHZW9Ob3RpZmllcihnZW9sb2NhdGlvbiwg
V1RGTW92ZShwb3NpdGlvbkNhbGxiYWNrKSwgV1RGTW92ZShwb3NpdGlvbkVycm9yQ2FsbGJhY2sp
LCBXVEZNb3ZlKG9wdGlvbnMpKSk7CiAgICAgfQogCiAgICAgUG9zaXRpb25PcHRpb25zKiBvcHRp
b25zKCkgY29uc3QgeyByZXR1cm4gbV9vcHRpb25zLmdldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb24uY3BwCmluZGV4IGY5MjM3Mzdh
YzM1NGIyNWQxNTkwYTg2NTRiODEyODQzYzk3ZDU5NDYuLjhhNWExMzE4YjgyZTU0ODM3ZjA1MmVh
MWIzZDdmNmE4Y2UzZDEzODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2Vv
bG9jYXRpb24vR2VvbG9jYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2Vv
bG9jYXRpb24vR2VvbG9jYXRpb24uY3BwCkBAIC04MSw3ICs4MSw3IEBAIGJvb2wgR2VvbG9jYXRp
b246OldhdGNoZXJzOjphZGQoaW50IGlkLCBSZWZQdHI8R2VvTm90aWZpZXI+JiYgbm90aWZpZXIp
CiAKICAgICBpZiAoIW1faWRUb05vdGlmaWVyTWFwLmFkZChpZCwgbm90aWZpZXIuZ2V0KCkpLmlz
TmV3RW50cnkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBtX25vdGlmaWVyVG9JZE1hcC5z
ZXQoV1RGOjptb3ZlKG5vdGlmaWVyKSwgaWQpOworICAgIG1fbm90aWZpZXJUb0lkTWFwLnNldChX
VEZNb3ZlKG5vdGlmaWVyKSwgaWQpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0zMDgsNyAr
MzA4LDcgQEAgdm9pZCBHZW9sb2NhdGlvbjo6Z2V0Q3VycmVudFBvc2l0aW9uKFJlZlB0cjxQb3Np
dGlvbkNhbGxiYWNrPiYmIHN1Y2Nlc3NDYWxsYmFjaywKICAgICBpZiAoIWZyYW1lKCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIFJlZlB0cjxHZW9Ob3RpZmllcj4gbm90aWZpZXIgPSBHZW9Ob3Rp
Zmllcjo6Y3JlYXRlKCp0aGlzLCBXVEY6Om1vdmUoc3VjY2Vzc0NhbGxiYWNrKSwgV1RGOjptb3Zl
KGVycm9yQ2FsbGJhY2spLCBXVEY6Om1vdmUob3B0aW9ucykpOworICAgIFJlZlB0cjxHZW9Ob3Rp
Zmllcj4gbm90aWZpZXIgPSBHZW9Ob3RpZmllcjo6Y3JlYXRlKCp0aGlzLCBXVEZNb3ZlKHN1Y2Nl
c3NDYWxsYmFjayksIFdURk1vdmUoZXJyb3JDYWxsYmFjayksIFdURk1vdmUob3B0aW9ucykpOwog
ICAgIHN0YXJ0UmVxdWVzdChub3RpZmllci5nZXQoKSk7CiAKICAgICBtX29uZVNob3RzLmFkZChu
b3RpZmllcik7CkBAIC0zMTksMTQgKzMxOSwxNCBAQCBpbnQgR2VvbG9jYXRpb246OndhdGNoUG9z
aXRpb24oUmVmUHRyPFBvc2l0aW9uQ2FsbGJhY2s+JiYgc3VjY2Vzc0NhbGxiYWNrLCBSZWZQdAog
ICAgIGlmICghZnJhbWUoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBSZWZQdHI8R2VvTm90
aWZpZXI+IG5vdGlmaWVyID0gR2VvTm90aWZpZXI6OmNyZWF0ZSgqdGhpcywgV1RGOjptb3ZlKHN1
Y2Nlc3NDYWxsYmFjayksIFdURjo6bW92ZShlcnJvckNhbGxiYWNrKSwgV1RGOjptb3ZlKG9wdGlv
bnMpKTsKKyAgICBSZWZQdHI8R2VvTm90aWZpZXI+IG5vdGlmaWVyID0gR2VvTm90aWZpZXI6OmNy
ZWF0ZSgqdGhpcywgV1RGTW92ZShzdWNjZXNzQ2FsbGJhY2spLCBXVEZNb3ZlKGVycm9yQ2FsbGJh
Y2spLCBXVEZNb3ZlKG9wdGlvbnMpKTsKICAgICBzdGFydFJlcXVlc3Qobm90aWZpZXIuZ2V0KCkp
OwogCiAgICAgaW50IHdhdGNoSUQ7CiAgICAgLy8gS2VlcCBhc2tpbmcgZm9yIHRoZSBuZXh0IGlk
IHVudGlsIHdlJ3JlIGdpdmVuIG9uZSB0aGF0IHdlIGRvbid0IGFscmVhZHkgaGF2ZS4KICAgICBk
byB7CiAgICAgICAgIHdhdGNoSUQgPSBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmNpcmN1bGFy
U2VxdWVudGlhbElEKCk7Ci0gICAgfSB3aGlsZSAoIW1fd2F0Y2hlcnMuYWRkKHdhdGNoSUQsIFdU
Rjo6bW92ZShub3RpZmllcikpKTsKKyAgICB9IHdoaWxlICghbV93YXRjaGVycy5hZGQod2F0Y2hJ
RCwgV1RGTW92ZShub3RpZmllcikpKTsKICAgICByZXR1cm4gd2F0Y2hJRDsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbkNvbnRy
b2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlv
bkNvbnRyb2xsZXIuY3BwCmluZGV4IGY2YmM2ZmU2Y2QxNjA5ZjViMDJkMTcxNDcxZDFmMGY3MmFh
YmVhMmQuLjBhMTBhOGY1YmUzZTY0ZmQyYjM3ZWZlNjAyY2FjNDYxMjU5ZGZmZTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb25Db250cm9s
bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0
aW9uQ29udHJvbGxlci5jcHAKQEAgLTEzOCw3ICsxMzgsNyBAQCB2b2lkIEdlb2xvY2F0aW9uQ29u
dHJvbGxlcjo6dmlld1N0YXRlRGlkQ2hhbmdlKFZpZXdTdGF0ZTo6RmxhZ3Mgb2xkVmlld1N0YXRl
LCBWaQogICAgIGlmICghbV9wYWdlLmlzVmlzaWJsZSgpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBIYXNoU2V0PFJlZlB0cjxHZW9sb2NhdGlvbj4+IHBlbmRlZFBlcm1pc3Npb25SZXF1ZXN0cyA9
IFdURjo6bW92ZShtX3BlbmRlZFBlcm1pc3Npb25SZXF1ZXN0KTsKKyAgICBIYXNoU2V0PFJlZlB0
cjxHZW9sb2NhdGlvbj4+IHBlbmRlZFBlcm1pc3Npb25SZXF1ZXN0cyA9IFdURk1vdmUobV9wZW5k
ZWRQZXJtaXNzaW9uUmVxdWVzdCk7CiAgICAgZm9yIChhdXRvJiBwZXJtaXNzaW9uUmVxdWVzdCA6
IHBlbmRlZFBlcm1pc3Npb25SZXF1ZXN0cykKICAgICAgICAgbV9jbGllbnQucmVxdWVzdFBlcm1p
c3Npb24ocGVybWlzc2lvblJlcXVlc3QuZ2V0KCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9wb3NpdGlvbi5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9wb3NpdGlvbi5oCmluZGV4IDE4ZjEwOWY1MGUwZjk3M2Zm
MDM4MTk4MWJhMjEyMmEyZmMyMTQxMTguLmU0MTM3MmM4ZjMyOTI2NzdjYjdjZjgxYTNiMTczZTMz
MzQ3NGRlZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24v
R2VvcG9zaXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dl
b3Bvc2l0aW9uLmgKQEAgLTM3LDcgKzM3LDcgQEAgY2xhc3MgR2VvcG9zaXRpb24gOiBwdWJsaWMg
UmVmQ291bnRlZDxHZW9wb3NpdGlvbj4gewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8R2VvcG9z
aXRpb24+IGNyZWF0ZShSZWZQdHI8Q29vcmRpbmF0ZXM+JiYgY29vcmRpbmF0ZXMsIERPTVRpbWVT
dGFtcCB0aW1lc3RhbXApCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBHZW9w
b3NpdGlvbihXVEY6Om1vdmUoY29vcmRpbmF0ZXMpLCB0aW1lc3RhbXApKTsKKyAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgR2VvcG9zaXRpb24oV1RGTW92ZShjb29yZGluYXRlcyksIHRpbWVz
dGFtcCkpOwogICAgIH0KIAogICAgIFJlZjxHZW9wb3NpdGlvbj4gaXNvbGF0ZWRDb3B5KCkgY29u
c3QKQEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogICAgIAogcHJpdmF0ZToKICAgICBHZW9wb3Np
dGlvbihSZWZQdHI8Q29vcmRpbmF0ZXM+JiYgY29vcmRpbmF0ZXMsIERPTVRpbWVTdGFtcCB0aW1l
c3RhbXApCi0gICAgICAgIDogbV9jb29yZGluYXRlcyhXVEY6Om1vdmUoY29vcmRpbmF0ZXMpKQor
ICAgICAgICA6IG1fY29vcmRpbmF0ZXMoV1RGTW92ZShjb29yZGluYXRlcykpCiAgICAgICAgICwg
bV90aW1lc3RhbXAodGltZXN0YW1wKQogICAgIHsKICAgICAgICAgQVNTRVJUKG1fY29vcmRpbmF0
ZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9OYXZp
Z2F0b3JHZW9sb2NhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9u
L05hdmlnYXRvckdlb2xvY2F0aW9uLmNwcAppbmRleCBmZmEwMGMyZDNmMDhmZmM2MDZkZmIzNWRh
ZmQ5MTljM2E5ZDEwZjY0Li5hZDU2ZmNhY2ZlMWFjOTFjNTczNzA5MjhjZjQ2NTZmY2FkOTdhYzBl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL05hdmlnYXRv
ckdlb2xvY2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9u
L05hdmlnYXRvckdlb2xvY2F0aW9uLmNwcApAQCAtNTMsNyArNTMsNyBAQCBOYXZpZ2F0b3JHZW9s
b2NhdGlvbiogTmF2aWdhdG9yR2VvbG9jYXRpb246OmZyb20oTmF2aWdhdG9yKiBuYXZpZ2F0b3Ip
CiAgICAgaWYgKCFzdXBwbGVtZW50KSB7CiAgICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9IHN0
ZDo6bWFrZV91bmlxdWU8TmF2aWdhdG9yR2VvbG9jYXRpb24+KG5hdmlnYXRvci0+ZnJhbWUoKSk7
CiAgICAgICAgIHN1cHBsZW1lbnQgPSBuZXdTdXBwbGVtZW50LmdldCgpOwotICAgICAgICBwcm92
aWRlVG8obmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpLCBXVEY6Om1vdmUobmV3U3VwcGxlbWVu
dCkpOworICAgICAgICBwcm92aWRlVG8obmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpLCBXVEZN
b3ZlKG5ld1N1cHBsZW1lbnQpKTsKICAgICB9CiAgICAgcmV0dXJuIHN1cHBsZW1lbnQ7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9ET01XaW5kb3dJbmRl
eGVkRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvRE9NV2lu
ZG93SW5kZXhlZERhdGFiYXNlLmNwcAppbmRleCBjYzE5ZjQxMGVkMTdjYzVmYTEyMDAwMzg3NzA4
NWE2NjAyZjJiZTI1Li41MGZhNDQwZjI5ZGI2OTIyZGY1Y2E3OTcyOWUyY2Y5MGFiZTE4ZmQ2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9ET01XaW5kb3dJbmRl
eGVkRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0RP
TVdpbmRvd0luZGV4ZWREYXRhYmFzZS5jcHAKQEAgLTU5LDcgKzU5LDcgQEAgRE9NV2luZG93SW5k
ZXhlZERhdGFiYXNlKiBET01XaW5kb3dJbmRleGVkRGF0YWJhc2U6OmZyb20oRE9NV2luZG93KiB3
aW5kb3cpCiAgICAgaWYgKCFzdXBwbGVtZW50KSB7CiAgICAgICAgIGF1dG8gbmV3U3VwcGxlbWVu
dCA9IHN0ZDo6bWFrZV91bmlxdWU8RE9NV2luZG93SW5kZXhlZERhdGFiYXNlPih3aW5kb3cpOwog
ICAgICAgICBzdXBwbGVtZW50ID0gbmV3U3VwcGxlbWVudC5nZXQoKTsKLSAgICAgICAgcHJvdmlk
ZVRvKHdpbmRvdywgc3VwcGxlbWVudE5hbWUoKSwgV1RGOjptb3ZlKG5ld1N1cHBsZW1lbnQpKTsK
KyAgICAgICAgcHJvdmlkZVRvKHdpbmRvdywgc3VwcGxlbWVudE5hbWUoKSwgV1RGTW92ZShuZXdT
dXBwbGVtZW50KSk7CiAgICAgfQogICAgIHJldHVybiBzdXBwbGVtZW50OwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvV29ya2VyR2xvYmFsU2NvcGVJbmRl
eGVkRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvV29ya2Vy
R2xvYmFsU2NvcGVJbmRleGVkRGF0YWJhc2UuY3BwCmluZGV4IGNhMDM1MzEzMWU5YzcyNjQ5OTcy
MmNhMGViYTk3NjM5Zjk1YThmZWYuLjMwYjgxNjlmYWZlNDZjZTdkYTkzOWMwMTQ1ZDA3YjU2Y2Uw
MDExZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL1dvcmtl
ckdsb2JhbFNjb3BlSW5kZXhlZERhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9Xb3JrZXJHbG9iYWxTY29wZUluZGV4ZWREYXRhYmFzZS5jcHAKQEAgLTU3
LDcgKzU3LDcgQEAgV29ya2VyR2xvYmFsU2NvcGVJbmRleGVkRGF0YWJhc2UqIFdvcmtlckdsb2Jh
bFNjb3BlSW5kZXhlZERhdGFiYXNlOjpmcm9tKFNjcmlwdEUKICAgICBpZiAoIXN1cHBsZW1lbnQp
IHsKICAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXb3JrZXJH
bG9iYWxTY29wZUluZGV4ZWREYXRhYmFzZT4oKTsKICAgICAgICAgc3VwcGxlbWVudCA9IG5ld1N1
cHBsZW1lbnQuZ2V0KCk7Ci0gICAgICAgIHByb3ZpZGVUbyhjb250ZXh0LCBzdXBwbGVtZW50TmFt
ZSgpLCBXVEY6Om1vdmUobmV3U3VwcGxlbWVudCkpOworICAgICAgICBwcm92aWRlVG8oY29udGV4
dCwgc3VwcGxlbWVudE5hbWUoKSwgV1RGTW92ZShuZXdTdXBwbGVtZW50KSk7CiAgICAgfQogICAg
IHJldHVybiBzdXBwbGVtZW50OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvY2xpZW50L0lEQkFueUltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvY2xpZW50L0lEQkFueUltcGwuY3BwCmluZGV4IDJkMzMwMGM5ZjBiMjJmZjRl
M2MxODM2ZGQwZTc2ZmIyNTJkNTEyMWMuLjg2ZGUwMTRkYmViNDBhZjBhYjJmMDQ3NDNhYjRkYTFl
ZTVhNGQzNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2Ns
aWVudC9JREJBbnlJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9jbGllbnQvSURCQW55SW1wbC5jcHAKQEAgLTQ5LDEzICs0OSwxMyBAQCBJREJBbnk6OklEQkFu
eShSZWY8SURCRGF0YWJhc2U+JiYgZGF0YWJhc2UpCiAKIElEQkFueTo6SURCQW55KFJlZjxJREJP
YmplY3RTdG9yZT4mJiBvYmplY3RTdG9yZSkKICAgICA6IG1fdHlwZShJREJBbnk6OlR5cGU6OklE
Qk9iamVjdFN0b3JlKQotICAgICwgbV9vYmplY3RTdG9yZShXVEY6Om1vdmUob2JqZWN0U3RvcmUp
KQorICAgICwgbV9vYmplY3RTdG9yZShXVEZNb3ZlKG9iamVjdFN0b3JlKSkKIHsKIH0KIAogSURC
QW55OjpJREJBbnkoUmVmPElEQkluZGV4PiYmIGluZGV4KQogICAgIDogbV90eXBlKElEQkFueTo6
VHlwZTo6SURCSW5kZXgpCi0gICAgLCBtX2luZGV4KFdURjo6bW92ZShpbmRleCkpCisgICAgLCBt
X2luZGV4KFdURk1vdmUoaW5kZXgpKQogewogfQogCkBAIC02MywxMCArNjMsMTAgQEAgSURCQW55
OjpJREJBbnkoUmVmPElEQkN1cnNvcj4mJiBjdXJzb3IpCiB7CiAgICAgaWYgKGN1cnNvci0+aXNL
ZXlDdXJzb3IoKSkgewogICAgICAgICBtX3R5cGUgPSBJREJBbnk6OlR5cGU6OklEQkN1cnNvcjsK
LSAgICAgICAgbV9jdXJzb3IgPSBXVEY6Om1vdmUoY3Vyc29yKTsKKyAgICAgICAgbV9jdXJzb3Ig
PSBXVEZNb3ZlKGN1cnNvcik7CiAgICAgfSBlbHNlIHsKICAgICAgICAgbV90eXBlID0gSURCQW55
OjpUeXBlOjpJREJDdXJzb3JXaXRoVmFsdWU7Ci0gICAgICAgIG1fY3Vyc29yV2l0aFZhbHVlID0g
V1RGOjptb3ZlKGN1cnNvcik7CisgICAgICAgIG1fY3Vyc29yV2l0aFZhbHVlID0gV1RGTW92ZShj
dXJzb3IpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvY2xpZW50L0lEQkFueUltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL2NsaWVudC9JREJBbnlJbXBsLmgKaW5kZXggYThjZmYxMDUwYmQ3MmI2ZjllZTYyOWM3
NDA5M2YzNWQ1YTQ5Y2I2Ny4uM2Q3Zjc1ZjRkNTJmM2ZmNWQ1NGI4NDQ5YTkwZDhmMTM5ZGQxMWFj
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lE
QkFueUltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQv
SURCQW55SW1wbC5oCkBAIC00MCwyMiArNDAsMjIgQEAgY2xhc3MgSURCQW55IDogcHVibGljIFdl
YkNvcmU6OklEQkFueSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZlB0cjxJREJBbnk+IGNyZWF0
ZShSZWY8SURCRGF0YWJhc2U+JiYgZGF0YWJhc2UpCiAgICAgewotICAgICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IElEQkFueShXVEY6Om1vdmUoZGF0YWJhc2UpKSk7CisgICAgICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgSURCQW55KFdURk1vdmUoZGF0YWJhc2UpKSk7CiAgICAgfQogCiAgICAgc3Rh
dGljIFJlZjxJREJBbnk+IGNyZWF0ZShSZWY8SURCT2JqZWN0U3RvcmU+JiYgb2JqZWN0U3RvcmUp
CiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJREJBbnkoV1RGOjptb3ZlKG9i
amVjdFN0b3JlKSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJREJBbnkoV1RGTW92
ZShvYmplY3RTdG9yZSkpKTsKICAgICB9CiAKICAgICBzdGF0aWMgUmVmPElEQkFueT4gY3JlYXRl
KFJlZjxJREJJbmRleD4mJiBpbmRleCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IElEQkFueShXVEY6Om1vdmUoaW5kZXgpKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IElEQkFueShXVEZNb3ZlKGluZGV4KSkpOwogICAgIH0KIAogICAgIHN0YXRpYyBSZWZQdHI8
SURCQW55PiBjcmVhdGUoUmVmPElEQkN1cnNvcj4mJiBjdXJzb3IpCiAgICAgewotICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IElEQkFueShXVEY6Om1vdmUoY3Vyc29yKSkpOworICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IElEQkFueShXVEZNb3ZlKGN1cnNvcikpKTsKICAgICB9CiAKICAg
ICBzdGF0aWMgUmVmUHRyPElEQkFueT4gY3JlYXRlKGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURC
RGF0YWJhc2VJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVu
dC9JREJEYXRhYmFzZUltcGwuY3BwCmluZGV4IDUwMzg2YzcyNDAwYzk3OTYyOWQyN2YyYjhhNGM5
NWViMjBkNDkyMDIuLjJkM2NhZTZjOTU5ODM3YjY5OTU1MDQ2NjljMzNlNDY1ZGQ5MmJlZTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJEYXRh
YmFzZUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVu
dC9JREJEYXRhYmFzZUltcGwuY3BwCkBAIC0yODcsNyArMjg3LDcgQEAgdm9pZCBJREJEYXRhYmFz
ZTo6d2lsbENvbW1pdFRyYW5zYWN0aW9uKElEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbikKIAog
ICAgIGF1dG8gcmVmVHJhbnNhY3Rpb24gPSBtX2FjdGl2ZVRyYW5zYWN0aW9ucy50YWtlKHRyYW5z
YWN0aW9uLmluZm8oKS5pZGVudGlmaWVyKCkpOwogICAgIEFTU0VSVChyZWZUcmFuc2FjdGlvbik7
Ci0gICAgbV9jb21taXR0aW5nVHJhbnNhY3Rpb25zLnNldCh0cmFuc2FjdGlvbi5pbmZvKCkuaWRl
bnRpZmllcigpLCBXVEY6Om1vdmUocmVmVHJhbnNhY3Rpb24pKTsKKyAgICBtX2NvbW1pdHRpbmdU
cmFuc2FjdGlvbnMuc2V0KHRyYW5zYWN0aW9uLmluZm8oKS5pZGVudGlmaWVyKCksIFdURk1vdmUo
cmVmVHJhbnNhY3Rpb24pKTsKIH0KIAogdm9pZCBJREJEYXRhYmFzZTo6ZGlkQ29tbWl0VHJhbnNh
Y3Rpb24oSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uKQpAQCAtMzA2LDcgKzMwNiw3IEBAIHZv
aWQgSURCRGF0YWJhc2U6OndpbGxBYm9ydFRyYW5zYWN0aW9uKElEQlRyYW5zYWN0aW9uJiB0cmFu
c2FjdGlvbikKIAogICAgIGF1dG8gcmVmVHJhbnNhY3Rpb24gPSBtX2FjdGl2ZVRyYW5zYWN0aW9u
cy50YWtlKHRyYW5zYWN0aW9uLmluZm8oKS5pZGVudGlmaWVyKCkpOwogICAgIEFTU0VSVChyZWZU
cmFuc2FjdGlvbik7Ci0gICAgbV9hYm9ydGluZ1RyYW5zYWN0aW9ucy5zZXQodHJhbnNhY3Rpb24u
aW5mbygpLmlkZW50aWZpZXIoKSwgV1RGOjptb3ZlKHJlZlRyYW5zYWN0aW9uKSk7CisgICAgbV9h
Ym9ydGluZ1RyYW5zYWN0aW9ucy5zZXQodHJhbnNhY3Rpb24uaW5mbygpLmlkZW50aWZpZXIoKSwg
V1RGTW92ZShyZWZUcmFuc2FjdGlvbikpOwogCiAgICAgaWYgKHRyYW5zYWN0aW9uLmlzVmVyc2lv
bkNoYW5nZSgpKSB7CiAgICAgICAgIEFTU0VSVCh0cmFuc2FjdGlvbi5vcmlnaW5hbERhdGFiYXNl
SW5mbygpKTsKQEAgLTM2OSw3ICszNjksNyBAQCB2b2lkIElEQkRhdGFiYXNlOjpmaXJlVmVyc2lv
bkNoYW5nZUV2ZW50KGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZQogCiAg
ICAgUmVmPEV2ZW50PiBldmVudCA9IElEQlZlcnNpb25DaGFuZ2VFdmVudDo6Y3JlYXRlKHJlcXVl
c3RJZGVudGlmaWVyLCBjdXJyZW50VmVyc2lvbiwgcmVxdWVzdGVkVmVyc2lvbiwgZXZlbnROYW1l
cygpLnZlcnNpb25jaGFuZ2VFdmVudCk7CiAgICAgZXZlbnQtPnNldFRhcmdldCh0aGlzKTsKLSAg
ICBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmV2ZW50UXVldWUoKS5lbnF1ZXVlRXZlbnQoV1RG
Ojptb3ZlKGV2ZW50KSk7CisgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5ldmVudFF1ZXVl
KCkuZW5xdWV1ZUV2ZW50KFdURk1vdmUoZXZlbnQpKTsKIH0KIAogYm9vbCBJREJEYXRhYmFzZTo6
ZGlzcGF0Y2hFdmVudChFdmVudCYgZXZlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCSW5kZXhJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJJbmRleEltcGwuY3BwCmluZGV4IDc4ZmVkOGNi
MTQzMjNiNDQzNTMyZjM1ZGY4MDJjZDIwNjBjODdkZWIuLmNhZTU0OTRhNTk1YTU4YzlhNmY4OGMx
ZDAyNTM0N2ZiNGRhNjMxNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL2NsaWVudC9JREJJbmRleEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL2NsaWVudC9JREJJbmRleEltcGwuY3BwCkBAIC0xMTUsNyArMTE1LDcgQEAg
UmVmUHRyPFdlYkNvcmU6OklEQlJlcXVlc3Q+IElEQkluZGV4OjpvcGVuQ3Vyc29yKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQKIAogICAgIGF1dG8gaW5mbyA9IElEQkN1cnNvckluZm86
OmluZGV4Q3Vyc29yKG1fb2JqZWN0U3RvcmUtPm1vZGVyblRyYW5zYWN0aW9uKCksIG1fb2JqZWN0
U3RvcmUtPmluZm8oKS5pZGVudGlmaWVyKCksIG1faW5mby5pZGVudGlmaWVyKCksIHJhbmdlRGF0
YSwgZGlyZWN0aW9uLCBJbmRleGVkREI6OkN1cnNvclR5cGU6OktleUFuZFZhbHVlKTsKICAgICBS
ZWY8SURCUmVxdWVzdD4gcmVxdWVzdCA9IG1fb2JqZWN0U3RvcmUtPm1vZGVyblRyYW5zYWN0aW9u
KCkucmVxdWVzdE9wZW5DdXJzb3IoKmNvbnRleHQsICp0aGlzLCBpbmZvKTsKLSAgICByZXR1cm4g
V1RGOjptb3ZlKHJlcXVlc3QpOworICAgIHJldHVybiBXVEZNb3ZlKHJlcXVlc3QpOwogfQogCiBS
ZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVzdD4gSURCSW5kZXg6Om9wZW5DdXJzb3IoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGtl
eSwgY29uc3QgU3RyaW5nJiBkaXJlY3Rpb24sIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYgZWMp
CkBAIC0yMTksNyArMjE5LDcgQEAgUmVmUHRyPFdlYkNvcmU6OklEQlJlcXVlc3Q+IElEQkluZGV4
OjpvcGVuS2V5Q3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnQKIAogICAgIGF1dG8g
aW5mbyA9IElEQkN1cnNvckluZm86OmluZGV4Q3Vyc29yKG1fb2JqZWN0U3RvcmUtPm1vZGVyblRy
YW5zYWN0aW9uKCksIG1fb2JqZWN0U3RvcmUtPmluZm8oKS5pZGVudGlmaWVyKCksIG1faW5mby5p
ZGVudGlmaWVyKCksIHJhbmdlLCBkaXJlY3Rpb24sIEluZGV4ZWREQjo6Q3Vyc29yVHlwZTo6S2V5
T25seSk7CiAgICAgUmVmPElEQlJlcXVlc3Q+IHJlcXVlc3QgPSBtX29iamVjdFN0b3JlLT5tb2Rl
cm5UcmFuc2FjdGlvbigpLnJlcXVlc3RPcGVuQ3Vyc29yKCpjb250ZXh0LCAqdGhpcywgaW5mbyk7
Ci0gICAgcmV0dXJuIFdURjo6bW92ZShyZXF1ZXN0KTsKKyAgICByZXR1cm4gV1RGTW92ZShyZXF1
ZXN0KTsKIH0KIAogUmVmUHRyPFdlYkNvcmU6OklEQlJlcXVlc3Q+IElEQkluZGV4OjpvcGVuS2V5
Q3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IERlcHJlY2F0ZWQ6
OlNjcmlwdFZhbHVlJiBrZXksIGNvbnN0IFN0cmluZyYgZGlyZWN0aW9uLCBFeGNlcHRpb25Db2Rl
V2l0aE1lc3NhZ2UmIGVjKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvY2xpZW50L0lEQk9iamVjdFN0b3JlSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCT2JqZWN0U3RvcmVJbXBsLmNwcAppbmRleCA5YTEyZWU5
ZWRmYTMxMmIyYWEwYTZmYzQ1ZDI4N2U1ZTdlNTFiMDViLi40NDcwMTJhMjE5NjJhYmM1NGMxYWMw
ODAwMjA0YWQ5OTRhZWQyYTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9jbGllbnQvSURCT2JqZWN0U3RvcmVJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCT2JqZWN0U3RvcmVJbXBsLmNwcApAQCAtMTMy
LDcgKzEzMiw3IEBAIFJlZlB0cjxXZWJDb3JlOjpJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6
b3BlbkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjCiAKICAgICBhdXRvIGluZm8gPSBJ
REJDdXJzb3JJbmZvOjpvYmplY3RTdG9yZUN1cnNvcihtX3RyYW5zYWN0aW9uLmdldCgpLCBtX2lu
Zm8uaWRlbnRpZmllcigpLCByYW5nZSwgZGlyZWN0aW9uKTsKICAgICBSZWY8SURCUmVxdWVzdD4g
cmVxdWVzdCA9IG1fdHJhbnNhY3Rpb24tPnJlcXVlc3RPcGVuQ3Vyc29yKCpjb250ZXh0LCAqdGhp
cywgaW5mbyk7Ci0gICAgcmV0dXJuIFdURjo6bW92ZShyZXF1ZXN0KTsKKyAgICByZXR1cm4gV1RG
TW92ZShyZXF1ZXN0KTsKIH0KIAogUmVmUHRyPFdlYkNvcmU6OklEQlJlcXVlc3Q+IElEQk9iamVj
dFN0b3JlOjpvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0
IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXksIGNvbnN0IFN0cmluZyYgZGlyZWN0aW9uLCBF
eGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmIGVjKQpAQCAtMTc1LDcgKzE3NSw3IEBAIFJlZlB0cjxX
ZWJDb3JlOjpJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6Z2V0KFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQsCiAgICAgfQogCiAgICAgUmVmPElEQlJlcXVlc3Q+IHJlcXVlc3QgPSBt
X3RyYW5zYWN0aW9uLT5yZXF1ZXN0R2V0UmVjb3JkKCpjb250ZXh0LCAqdGhpcywgaWRiS2V5Lmdl
dCgpKTsKLSAgICByZXR1cm4gV1RGOjptb3ZlKHJlcXVlc3QpOworICAgIHJldHVybiBXVEZNb3Zl
KHJlcXVlc3QpOwogfQogCiBSZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVzdD4gSURCT2JqZWN0U3Rv
cmU6OmdldChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBJREJLZXlSYW5nZSoga2V5
UmFuZ2UsIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYgZWMpCkBAIC0yMDQsNyArMjA0LDcgQEAg
UmVmUHRyPFdlYkNvcmU6OklEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpnZXQoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwKICAgICB9CiAKICAgICBSZWY8SURCUmVxdWVzdD4gcmVx
dWVzdCA9IG1fdHJhbnNhY3Rpb24tPnJlcXVlc3RHZXRSZWNvcmQoKmNvbnRleHQsICp0aGlzLCBr
ZXlSYW5nZURhdGEpOwotICAgIHJldHVybiBXVEY6Om1vdmUocmVxdWVzdCk7CisgICAgcmV0dXJu
IFdURk1vdmUocmVxdWVzdCk7CiB9CiAKIFJlZlB0cjxXZWJDb3JlOjpJREJSZXF1ZXN0PiBJREJP
YmplY3RTdG9yZTo6YWRkKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU1ZhbHVlIHZhbHVl
LCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmIGVjKQpAQCAtMzU4LDcgKzM1OCw3IEBAIFJlZlB0
cjxXZWJDb3JlOjpJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6ZGVsZXRlRnVuY3Rpb24oU2Ny
aXB0RXhlY3V0aW9uQ29udGV4CiAgICAgfQogCiAgICAgUmVmPElEQlJlcXVlc3Q+IHJlcXVlc3Qg
PSBtX3RyYW5zYWN0aW9uLT5yZXF1ZXN0RGVsZXRlUmVjb3JkKCpjb250ZXh0LCAqdGhpcywga2V5
UmFuZ2VEYXRhKTsKLSAgICByZXR1cm4gV1RGOjptb3ZlKHJlcXVlc3QpOworICAgIHJldHVybiBX
VEZNb3ZlKHJlcXVlc3QpOwogfQogCiBSZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVzdD4gSURCT2Jq
ZWN0U3RvcmU6OmRlbGV0ZUZ1bmN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQs
IGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGVXaXRoTWVz
c2FnZSYgZWMpCkBAIC00NjAsNyArNDYwLDcgQEAgUmVmUHRyPFdlYkNvcmU6OklEQkluZGV4PiBJ
REJPYmplY3RTdG9yZTo6Y3JlYXRlSW5kZXgoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY28KICAg
ICBSZWY8SURCSW5kZXg+IGluZGV4ID0gbV90cmFuc2FjdGlvbi0+Y3JlYXRlSW5kZXgoKnRoaXMs
IGluZm8pOwogICAgIG1fcmVmZXJlbmNlZEluZGV4ZXMuc2V0KG5hbWUsICZpbmRleC5nZXQoKSk7
CiAKLSAgICByZXR1cm4gV1RGOjptb3ZlKGluZGV4KTsKKyAgICByZXR1cm4gV1RGTW92ZShpbmRl
eCk7CiB9CiAKIFJlZlB0cjxXZWJDb3JlOjpJREJJbmRleD4gSURCT2JqZWN0U3RvcmU6OmluZGV4
KGNvbnN0IFN0cmluZyYgaW5kZXhOYW1lLCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmIGVjKQpA
QCAtNDkyLDcgKzQ5Miw3IEBAIFJlZlB0cjxXZWJDb3JlOjpJREJJbmRleD4gSURCT2JqZWN0U3Rv
cmU6OmluZGV4KGNvbnN0IFN0cmluZyYgaW5kZXhOYW1lLCBFeGNlcHRpCiAgICAgYXV0byBpbmRl
eCA9IElEQkluZGV4OjpjcmVhdGUoKmluZm8sICp0aGlzKTsKICAgICBtX3JlZmVyZW5jZWRJbmRl
eGVzLnNldChpbmRleE5hbWUsICZpbmRleC5nZXQoKSk7CiAKLSAgICByZXR1cm4gV1RGOjptb3Zl
KGluZGV4KTsKKyAgICByZXR1cm4gV1RGTW92ZShpbmRleCk7CiB9CiAKIHZvaWQgSURCT2JqZWN0
U3RvcmU6OmRlbGV0ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZVdpdGhN
ZXNzYWdlJiBlYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L2NsaWVudC9JREJPcGVuREJSZXF1ZXN0SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9jbGllbnQvSURCT3BlbkRCUmVxdWVzdEltcGwuY3BwCmluZGV4IGFmMGEzY2E3
ZGY2ZjE3NjhmMjhkM2QyNzI5ZGFmZjE2ZTM1YzUxZjEuLjkyYTcwN2U2NjliNGVkNjgxN2ZhNjIx
NDZiZjZmMjdmMzgyNjU5YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL2NsaWVudC9JREJPcGVuREJSZXF1ZXN0SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQk9wZW5EQlJlcXVlc3RJbXBsLmNwcApAQCAt
MTE5LDcgKzExOSw3IEBAIHZvaWQgSURCT3BlbkRCUmVxdWVzdDo6b25TdWNjZXNzKGNvbnN0IElE
QlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCiAgICAgICAgIHJldHVybjsKIAogICAgIFJlZjxJREJE
YXRhYmFzZT4gZGF0YWJhc2UgPSBJREJEYXRhYmFzZTo6Y3JlYXRlKCpzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCksIGNvbm5lY3Rpb24oKSwgcmVzdWx0RGF0YSk7Ci0gICAgbV9yZXN1bHQgPSBJREJB
bnk6OmNyZWF0ZShXVEY6Om1vdmUoZGF0YWJhc2UpKTsKKyAgICBtX3Jlc3VsdCA9IElEQkFueTo6
Y3JlYXRlKFdURk1vdmUoZGF0YWJhc2UpKTsKICAgICBtX3JlYWR5U3RhdGUgPSBJREJSZXF1ZXN0
UmVhZHlTdGF0ZTo6RG9uZTsKIAogICAgIGVucXVldWVFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50
TmFtZXMoKS5zdWNjZXNzRXZlbnQsIGZhbHNlLCBmYWxzZSkpOwpAQCAtMTM4LDcgKzEzOCw3IEBA
IHZvaWQgSURCT3BlbkRCUmVxdWVzdDo6b25VcGdyYWRlTmVlZGVkKGNvbnN0IElEQlJlc3VsdERh
dGEmIHJlc3VsdERhdGEpCiAKICAgICBMT0coSW5kZXhlZERCLCAiSURCT3BlbkRCUmVxdWVzdDo6
b25VcGdyYWRlTmVlZGVkKCkgLSBjdXJyZW50IHZlcnNpb24gaXMgJSIgUFJJdTY0ICIsIG5ldyBp
cyAlIiBQUkl1NjQsIG9sZFZlcnNpb24sIG5ld1ZlcnNpb24pOwogCi0gICAgbV9yZXN1bHQgPSBJ
REJBbnk6OmNyZWF0ZShXVEY6Om1vdmUoZGF0YWJhc2UpKTsKKyAgICBtX3Jlc3VsdCA9IElEQkFu
eTo6Y3JlYXRlKFdURk1vdmUoZGF0YWJhc2UpKTsKICAgICBtX3JlYWR5U3RhdGUgPSBJREJSZXF1
ZXN0UmVhZHlTdGF0ZTo6RG9uZTsKICAgICBtX3RyYW5zYWN0aW9uID0gYWRvcHRSZWYoJnRyYW5z
YWN0aW9uLmxlYWtSZWYoKSk7CiAgICAgbV90cmFuc2FjdGlvbi0+YWRkUmVxdWVzdCgqdGhpcyk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURC
UmVxdWVzdEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50
L0lEQlJlcXVlc3RJbXBsLmNwcAppbmRleCA3ZWYyN2FlNWNjNzA1MTFhYmIwMGM0NmYxNTJhODU4
YjgwZWM2YmExLi4wZjJhYjI4ZDBjYjhiZWJmMjQ0Yzk4NWYwZDlmNzAzNGUzYWMzMTk2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCUmVxdWVz
dEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9J
REJSZXF1ZXN0SW1wbC5jcHAKQEAgLTI1OCw3ICsyNTgsNyBAQCB2b2lkIElEQlJlcXVlc3Q6OmVu
cXVldWVFdmVudChSZWY8RXZlbnQ+JiYgZXZlbnQpCiAgICAgICAgIHJldHVybjsKIAogICAgIGV2
ZW50LT5zZXRUYXJnZXQodGhpcyk7Ci0gICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5ldmVu
dFF1ZXVlKCkuZW5xdWV1ZUV2ZW50KFdURjo6bW92ZShldmVudCkpOworICAgIHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKS0+ZXZlbnRRdWV1ZSgpLmVucXVldWVFdmVudChXVEZNb3ZlKGV2ZW50KSk7
CiB9CiAKIGJvb2wgSURCUmVxdWVzdDo6ZGlzcGF0Y2hFdmVudChFdmVudCYgZXZlbnQpCkBAIC0z
MjIsNyArMzIyLDcgQEAgdm9pZCBJREJSZXF1ZXN0OjpzZXRSZXN1bHQoY29uc3QgSURCS2V5RGF0
YSoga2V5RGF0YSkKICAgICB9CiAKICAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSB2YWx1ZSA9
IGlkYktleURhdGFUb1NjcmlwdFZhbHVlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgKmtleURh
dGEpOwotICAgIG1fcmVzdWx0ID0gSURCQW55OjpjcmVhdGUoV1RGOjptb3ZlKHZhbHVlKSk7Cisg
ICAgbV9yZXN1bHQgPSBJREJBbnk6OmNyZWF0ZShXVEZNb3ZlKHZhbHVlKSk7CiB9CiAKIHZvaWQg
SURCUmVxdWVzdDo6c2V0UmVzdWx0KHVpbnQ2NF90IG51bWJlcikKQEAgLTM0MCw3ICszNDAsNyBA
QCB2b2lkIElEQlJlcXVlc3Q6OnNldFJlc3VsdFRvU3RydWN0dXJlZENsb25lKGNvbnN0IFRocmVh
ZFNhZmVEYXRhQnVmZmVyJiB2YWx1ZURhdAogICAgICAgICByZXR1cm47CiAKICAgICBEZXByZWNh
dGVkOjpTY3JpcHRWYWx1ZSB2YWx1ZSA9IGRlc2VyaWFsaXplSURCVmFsdWVEYXRhKCpjb250ZXh0
LCB2YWx1ZURhdGEpOwotICAgIG1fcmVzdWx0ID0gSURCQW55OjpjcmVhdGUoV1RGOjptb3ZlKHZh
bHVlKSk7CisgICAgbV9yZXN1bHQgPSBJREJBbnk6OmNyZWF0ZShXVEZNb3ZlKHZhbHVlKSk7CiB9
CiAKIHZvaWQgSURCUmVxdWVzdDo6c2V0UmVzdWx0VG9VbmRlZmluZWQoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQlRyYW5zYWN0aW9uSW1w
bC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCVHJhbnNh
Y3Rpb25JbXBsLmNwcAppbmRleCA0MjE3Zjc3ZWZkYTY3YmM4MmU1MzMwZjE3MjY4ZDgyMTQ1ZGEy
NDY0Li5jZjdjNWNmNjE3MDEzMjA2MGZiOTMyOThlNGYyYTE3YmViOTQ5ODcyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCVHJhbnNhY3Rpb25J
bXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURC
VHJhbnNhY3Rpb25JbXBsLmNwcApAQCAtMTk2LDcgKzE5Niw3IEBAIHZvaWQgSURCVHJhbnNhY3Rp
b246OmFib3J0KEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYgZWMpCiAgICAgbV9hYm9ydFF1ZXVl
LnN3YXAobV90cmFuc2FjdGlvbk9wZXJhdGlvblF1ZXVlKTsKIAogICAgIGF1dG8gb3BlcmF0aW9u
ID0gY3JlYXRlVHJhbnNhY3Rpb25PcGVyYXRpb24oKnRoaXMsIG51bGxwdHIsICZJREJUcmFuc2Fj
dGlvbjo6YWJvcnRPblNlcnZlckFuZENhbmNlbFJlcXVlc3RzKTsKLSAgICBzY2hlZHVsZU9wZXJh
dGlvbihXVEY6Om1vdmUob3BlcmF0aW9uKSk7CisgICAgc2NoZWR1bGVPcGVyYXRpb24oV1RGTW92
ZShvcGVyYXRpb24pKTsKIH0KIAogdm9pZCBJREJUcmFuc2FjdGlvbjo6YWJvcnRPblNlcnZlckFu
ZENhbmNlbFJlcXVlc3RzKFRyYW5zYWN0aW9uT3BlcmF0aW9uJikKQEAgLTI2Niw3ICsyNjYsNyBA
QCB2b2lkIElEQlRyYW5zYWN0aW9uOjpzY2hlZHVsZU9wZXJhdGlvbihSZWZQdHI8VHJhbnNhY3Rp
b25PcGVyYXRpb24+JiYgb3BlcmF0aW9uKQogICAgIEFTU0VSVCghbV90cmFuc2FjdGlvbk9wZXJh
dGlvbk1hcC5jb250YWlucyhvcGVyYXRpb24tPmlkZW50aWZpZXIoKSkpOwogCiAgICAgbV90cmFu
c2FjdGlvbk9wZXJhdGlvblF1ZXVlLmFwcGVuZChvcGVyYXRpb24pOwotICAgIG1fdHJhbnNhY3Rp
b25PcGVyYXRpb25NYXAuc2V0KG9wZXJhdGlvbi0+aWRlbnRpZmllcigpLCBXVEY6Om1vdmUob3Bl
cmF0aW9uKSk7CisgICAgbV90cmFuc2FjdGlvbk9wZXJhdGlvbk1hcC5zZXQob3BlcmF0aW9uLT5p
ZGVudGlmaWVyKCksIFdURk1vdmUob3BlcmF0aW9uKSk7CiAKICAgICBzY2hlZHVsZU9wZXJhdGlv
blRpbWVyKCk7CiB9CkBAIC0zMDgsNyArMzA4LDcgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6Y29t
bWl0KCkKICAgICBtX2RhdGFiYXNlLT53aWxsQ29tbWl0VHJhbnNhY3Rpb24oKnRoaXMpOwogCiAg
ICAgYXV0byBvcGVyYXRpb24gPSBjcmVhdGVUcmFuc2FjdGlvbk9wZXJhdGlvbigqdGhpcywgbnVs
bHB0ciwgJklEQlRyYW5zYWN0aW9uOjpjb21taXRPblNlcnZlcik7Ci0gICAgc2NoZWR1bGVPcGVy
YXRpb24oV1RGOjptb3ZlKG9wZXJhdGlvbikpOworICAgIHNjaGVkdWxlT3BlcmF0aW9uKFdURk1v
dmUob3BlcmF0aW9uKSk7CiB9CiAKIHZvaWQgSURCVHJhbnNhY3Rpb246OmNvbW1pdE9uU2VydmVy
KFRyYW5zYWN0aW9uT3BlcmF0aW9uJikKQEAgLTQwMCw3ICs0MDAsNyBAQCB2b2lkIElEQlRyYW5z
YWN0aW9uOjplbnF1ZXVlRXZlbnQoUmVmPEV2ZW50PiYmIGV2ZW50KQogICAgICAgICByZXR1cm47
CiAKICAgICBldmVudC0+c2V0VGFyZ2V0KHRoaXMpOwotICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKS0+ZXZlbnRRdWV1ZSgpLmVucXVldWVFdmVudChXVEY6Om1vdmUoZXZlbnQpKTsKKyAgICBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmV2ZW50UXVldWUoKS5lbnF1ZXVlRXZlbnQoV1RGTW92
ZShldmVudCkpOwogfQogCiBib29sIElEQlRyYW5zYWN0aW9uOjpkaXNwYXRjaEV2ZW50KEV2ZW50
JiBldmVudCkKQEAgLTQ0Miw3ICs0NDIsNyBAQCBSZWY8SURCT2JqZWN0U3RvcmU+IElEQlRyYW5z
YWN0aW9uOjpjcmVhdGVPYmplY3RTdG9yZShjb25zdCBJREJPYmplY3RTdG9yZUluZm8mCiAgICAg
bV9yZWZlcmVuY2VkT2JqZWN0U3RvcmVzLnNldChpbmZvLm5hbWUoKSwgJm9iamVjdFN0b3JlLmdl
dCgpKTsKIAogICAgIGF1dG8gb3BlcmF0aW9uID0gY3JlYXRlVHJhbnNhY3Rpb25PcGVyYXRpb24o
KnRoaXMsICZJREJUcmFuc2FjdGlvbjo6ZGlkQ3JlYXRlT2JqZWN0U3RvcmVPblNlcnZlciwgJklE
QlRyYW5zYWN0aW9uOjpjcmVhdGVPYmplY3RTdG9yZU9uU2VydmVyLCBpbmZvKTsKLSAgICBzY2hl
ZHVsZU9wZXJhdGlvbihXVEY6Om1vdmUob3BlcmF0aW9uKSk7CisgICAgc2NoZWR1bGVPcGVyYXRp
b24oV1RGTW92ZShvcGVyYXRpb24pKTsKIAogICAgIHJldHVybiBvYmplY3RTdG9yZTsKIH0KQEAg
LTQ3MSw3ICs0NzEsNyBAQCBSZWY8SURCSW5kZXg+IElEQlRyYW5zYWN0aW9uOjpjcmVhdGVJbmRl
eChJREJPYmplY3RTdG9yZSYgb2JqZWN0U3RvcmUsIGNvbnN0IElEQgogICAgIFJlZjxJREJJbmRl
eD4gaW5kZXggPSBJREJJbmRleDo6Y3JlYXRlKGluZm8sIG9iamVjdFN0b3JlKTsKIAogICAgIGF1
dG8gb3BlcmF0aW9uID0gY3JlYXRlVHJhbnNhY3Rpb25PcGVyYXRpb24oKnRoaXMsICZJREJUcmFu
c2FjdGlvbjo6ZGlkQ3JlYXRlSW5kZXhPblNlcnZlciwgJklEQlRyYW5zYWN0aW9uOjpjcmVhdGVJ
bmRleE9uU2VydmVyLCBpbmZvKTsKLSAgICBzY2hlZHVsZU9wZXJhdGlvbihXVEY6Om1vdmUob3Bl
cmF0aW9uKSk7CisgICAgc2NoZWR1bGVPcGVyYXRpb24oV1RGTW92ZShvcGVyYXRpb24pKTsKIAog
ICAgIHJldHVybiBpbmRleDsKIH0KQEAgLTUyNyw3ICs1MjcsNyBAQCBSZWY8SURCUmVxdWVzdD4g
SURCVHJhbnNhY3Rpb246OmRvUmVxdWVzdE9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYgY29udAogICAgIGFkZFJlcXVlc3QocmVxdWVzdC5nZXQoKSk7CiAKICAgICBhdXRvIG9wZXJh
dGlvbiA9IGNyZWF0ZVRyYW5zYWN0aW9uT3BlcmF0aW9uKCp0aGlzLCByZXF1ZXN0LmdldCgpLCAm
SURCVHJhbnNhY3Rpb246OmRpZE9wZW5DdXJzb3JPblNlcnZlciwgJklEQlRyYW5zYWN0aW9uOjpv
cGVuQ3Vyc29yT25TZXJ2ZXIsIGN1cnNvci0+aW5mbygpKTsKLSAgICBzY2hlZHVsZU9wZXJhdGlv
bihXVEY6Om1vdmUob3BlcmF0aW9uKSk7CisgICAgc2NoZWR1bGVPcGVyYXRpb24oV1RGTW92ZShv
cGVyYXRpb24pKTsKIAogICAgIHJldHVybiByZXF1ZXN0OwogfQpAQCAtNTU1LDcgKzU1NSw3IEBA
IHZvaWQgSURCVHJhbnNhY3Rpb246Oml0ZXJhdGVDdXJzb3IoSURCQ3Vyc29yJiBjdXJzb3IsIGNv
bnN0IElEQktleURhdGEmIGtleSwgdW5zCiAgICAgYWRkUmVxdWVzdCgqY3Vyc29yLnJlcXVlc3Qo
KSk7CiAKICAgICBhdXRvIG9wZXJhdGlvbiA9IGNyZWF0ZVRyYW5zYWN0aW9uT3BlcmF0aW9uKCp0
aGlzLCAqY3Vyc29yLnJlcXVlc3QoKSwgJklEQlRyYW5zYWN0aW9uOjpkaWRJdGVyYXRlQ3Vyc29y
T25TZXJ2ZXIsICZJREJUcmFuc2FjdGlvbjo6aXRlcmF0ZUN1cnNvck9uU2VydmVyLCBrZXksIGNv
dW50KTsKLSAgICBzY2hlZHVsZU9wZXJhdGlvbihXVEY6Om1vdmUob3BlcmF0aW9uKSk7CisgICAg
c2NoZWR1bGVPcGVyYXRpb24oV1RGTW92ZShvcGVyYXRpb24pKTsKIH0KIAogdm9pZCBJREJUcmFu
c2FjdGlvbjo6aXRlcmF0ZUN1cnNvck9uU2VydmVyKFRyYW5zYWN0aW9uT3BlcmF0aW9uJiBvcGVy
YXRpb24sIGNvbnN0IElEQktleURhdGEmIGtleSwgY29uc3QgdW5zaWduZWQgbG9uZyYgY291bnQp
CkBAIC01ODIsNyArNTgyLDcgQEAgUmVmPElEQlJlcXVlc3Q+IElEQlRyYW5zYWN0aW9uOjpyZXF1
ZXN0R2V0UmVjb3JkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQKICAgICBhZGRSZXF1
ZXN0KHJlcXVlc3QuZ2V0KCkpOwogCiAgICAgYXV0byBvcGVyYXRpb24gPSBjcmVhdGVUcmFuc2Fj
dGlvbk9wZXJhdGlvbigqdGhpcywgcmVxdWVzdC5nZXQoKSwgJklEQlRyYW5zYWN0aW9uOjpkaWRH
ZXRSZWNvcmRPblNlcnZlciwgJklEQlRyYW5zYWN0aW9uOjpnZXRSZWNvcmRPblNlcnZlciwga2V5
UmFuZ2VEYXRhKTsKLSAgICBzY2hlZHVsZU9wZXJhdGlvbihXVEY6Om1vdmUob3BlcmF0aW9uKSk7
CisgICAgc2NoZWR1bGVPcGVyYXRpb24oV1RGTW92ZShvcGVyYXRpb24pKTsKIAogICAgIHJldHVy
biByZXF1ZXN0OwogfQpAQCAtNjA5LDcgKzYwOSw3IEBAIFJlZjxJREJSZXF1ZXN0PiBJREJUcmFu
c2FjdGlvbjo6cmVxdWVzdEluZGV4UmVjb3JkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRl
CiAgICAgYWRkUmVxdWVzdChyZXF1ZXN0LmdldCgpKTsKIAogICAgIGF1dG8gb3BlcmF0aW9uID0g
Y3JlYXRlVHJhbnNhY3Rpb25PcGVyYXRpb24oKnRoaXMsIHJlcXVlc3QuZ2V0KCksICZJREJUcmFu
c2FjdGlvbjo6ZGlkR2V0UmVjb3JkT25TZXJ2ZXIsICZJREJUcmFuc2FjdGlvbjo6Z2V0UmVjb3Jk
T25TZXJ2ZXIsIHJhbmdlKTsKLSAgICBzY2hlZHVsZU9wZXJhdGlvbihXVEY6Om1vdmUob3BlcmF0
aW9uKSk7CisgICAgc2NoZWR1bGVPcGVyYXRpb24oV1RGTW92ZShvcGVyYXRpb24pKTsKIAogICAg
IHJldHVybiByZXF1ZXN0OwogfQpAQCAtNzMwLDcgKzczMCw3IEBAIFJlZjxJREJSZXF1ZXN0PiBJ
REJUcmFuc2FjdGlvbjo6cmVxdWVzdENsZWFyT2JqZWN0U3RvcmUoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYKIAogICAgIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciA9IG9iamVjdFN0b3Jl
LmluZm8oKS5pZGVudGlmaWVyKCk7CiAgICAgYXV0byBvcGVyYXRpb24gPSBjcmVhdGVUcmFuc2Fj
dGlvbk9wZXJhdGlvbigqdGhpcywgcmVxdWVzdC5nZXQoKSwgJklEQlRyYW5zYWN0aW9uOjpkaWRD
bGVhck9iamVjdFN0b3JlT25TZXJ2ZXIsICZJREJUcmFuc2FjdGlvbjo6Y2xlYXJPYmplY3RTdG9y
ZU9uU2VydmVyLCBvYmplY3RTdG9yZUlkZW50aWZpZXIpOwotICAgIHNjaGVkdWxlT3BlcmF0aW9u
KFdURjo6bW92ZShvcGVyYXRpb24pKTsKKyAgICBzY2hlZHVsZU9wZXJhdGlvbihXVEZNb3ZlKG9w
ZXJhdGlvbikpOwogCiAgICAgcmV0dXJuIHJlcXVlc3Q7CiB9CkBAIC03NjEsNyArNzYxLDcgQEAg
UmVmPElEQlJlcXVlc3Q+IElEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0UHV0T3JBZGQoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgY29udGV4dCwKICAgICBhZGRSZXF1ZXN0KHJlcXVlc3QuZ2V0KCkpOwog
CiAgICAgYXV0byBvcGVyYXRpb24gPSBjcmVhdGVUcmFuc2FjdGlvbk9wZXJhdGlvbigqdGhpcywg
cmVxdWVzdC5nZXQoKSwgJklEQlRyYW5zYWN0aW9uOjpkaWRQdXRPckFkZE9uU2VydmVyLCAmSURC
VHJhbnNhY3Rpb246OnB1dE9yQWRkT25TZXJ2ZXIsIGtleSwgJnZhbHVlLCBvdmVyd3JpdGVNb2Rl
KTsKLSAgICBzY2hlZHVsZU9wZXJhdGlvbihXVEY6Om1vdmUob3BlcmF0aW9uKSk7CisgICAgc2No
ZWR1bGVPcGVyYXRpb24oV1RGTW92ZShvcGVyYXRpb24pKTsKIAogICAgIHJldHVybiByZXF1ZXN0
OwogfQpAQCAtNzkzLDcgKzc5Myw3IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246OmRlbGV0ZU9iamVj
dFN0b3JlKGNvbnN0IFN0cmluZyYgb2JqZWN0U3RvcmVOYW1lKQogICAgICAgICBvYmplY3RTdG9y
ZS0+bWFya0FzRGVsZXRlZCgpOwogCiAgICAgYXV0byBvcGVyYXRpb24gPSBjcmVhdGVUcmFuc2Fj
dGlvbk9wZXJhdGlvbigqdGhpcywgJklEQlRyYW5zYWN0aW9uOjpkaWREZWxldGVPYmplY3RTdG9y
ZU9uU2VydmVyLCAmSURCVHJhbnNhY3Rpb246OmRlbGV0ZU9iamVjdFN0b3JlT25TZXJ2ZXIsIG9i
amVjdFN0b3JlTmFtZSk7Ci0gICAgc2NoZWR1bGVPcGVyYXRpb24oV1RGOjptb3ZlKG9wZXJhdGlv
bikpOworICAgIHNjaGVkdWxlT3BlcmF0aW9uKFdURk1vdmUob3BlcmF0aW9uKSk7CiB9CiAKIHZv
aWQgSURCVHJhbnNhY3Rpb246OmRlbGV0ZU9iamVjdFN0b3JlT25TZXJ2ZXIoVHJhbnNhY3Rpb25P
cGVyYXRpb24mIG9wZXJhdGlvbiwgY29uc3QgU3RyaW5nJiBvYmplY3RTdG9yZU5hbWUpCkBAIC04
MTcsNyArODE3LDcgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6ZGVsZXRlSW5kZXgodWludDY0X3Qg
b2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGkKICAgICBBU1NFUlQoaXNWZXJz
aW9uQ2hhbmdlKCkpOwogCiAgICAgYXV0byBvcGVyYXRpb24gPSBjcmVhdGVUcmFuc2FjdGlvbk9w
ZXJhdGlvbigqdGhpcywgJklEQlRyYW5zYWN0aW9uOjpkaWREZWxldGVJbmRleE9uU2VydmVyLCAm
SURCVHJhbnNhY3Rpb246OmRlbGV0ZUluZGV4T25TZXJ2ZXIsIG9iamVjdFN0b3JlSWRlbnRpZmll
ciwgaW5kZXhOYW1lKTsKLSAgICBzY2hlZHVsZU9wZXJhdGlvbihXVEY6Om1vdmUob3BlcmF0aW9u
KSk7CisgICAgc2NoZWR1bGVPcGVyYXRpb24oV1RGTW92ZShvcGVyYXRpb24pKTsKIH0KIAogdm9p
ZCBJREJUcmFuc2FjdGlvbjo6ZGVsZXRlSW5kZXhPblNlcnZlcihUcmFuc2FjdGlvbk9wZXJhdGlv
biYgb3BlcmF0aW9uLCBjb25zdCB1aW50NjRfdCYgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25z
dCBTdHJpbmcmIGluZGV4TmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL2xlZ2FjeS9JREJEYXRhYmFzZUJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvbGVnYWN5L0lEQkRhdGFiYXNlQmFja2VuZC5jcHAKaW5kZXggNjA5
Mzc2MDE1MTk5MzU5MTU1MzljZTUwMjE1MjM1ODViYjJhNTRkNy4uZjgxYmY0ZGVlNDZlNGE4YzVi
MDZmMzkwNTk3ZmFhYzEyOGZlZmVhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvbGVnYWN5L0lEQkRhdGFiYXNlQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvbGVnYWN5L0lEQkRhdGFiYXNlQmFja2VuZC5jcHAKQEAg
LTQxOSw3ICs0MTksNyBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZDo6cHJvY2Vzc1BlbmRpbmdP
cGVuQ2FsbHMoYm9vbCBzdWNjZXNzKQogICAgICAgICAgICAgaWYgKG1fbWV0YWRhdGEuaWQgPT0g
SW52YWxpZElkKSB7CiAgICAgICAgICAgICAgICAgLy8gVGhpcyBkYXRhYmFzZSB3YXMgZGVsZXRl
ZCB0aGVuIHF1aWNrbHkgcmUtb3BlbmVkLgogICAgICAgICAgICAgICAgIC8vIG9wZW5JbnRlcm5h
bEFzeW5jKCkgd2lsbCByZWNyZWF0ZSBpdCBpbiB0aGUgYmFja2luZyBzdG9yZSBhbmQgdGhlbiBy
ZXN1bWUgcHJvY2Vzc2luZyBwZW5kaW5nIGNhbGxiYWNrcy4KLSAgICAgICAgICAgICAgICBwZW5k
aW5nT3BlbkNhbGxzLnByZXBlbmQoV1RGOjptb3ZlKHBlbmRpbmdPcGVuQ2FsbCkpOworICAgICAg
ICAgICAgICAgIHBlbmRpbmdPcGVuQ2FsbHMucHJlcGVuZChXVEZNb3ZlKHBlbmRpbmdPcGVuQ2Fs
bCkpOwogICAgICAgICAgICAgICAgIHBlbmRpbmdPcGVuQ2FsbHMuc3dhcChtX3BlbmRpbmdPcGVu
Q2FsbHMpOwogCiAgICAgICAgICAgICAgICAgb3BlbkludGVybmFsQXN5bmMoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xlZ2FjeS9JREJEYXRhYmFzZUJh
Y2tlbmQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xlZ2FjeS9JREJEYXRh
YmFzZUJhY2tlbmQuaAppbmRleCAzODE5OTI2MWQ1NWQxNDVlY2IxOWZhOTM3ZmQ2YzdlZWE1NzJj
ZjQzLi5jYWUwZDBmMzY3ZDE1NzFjYTYwMTk4MWYyMWI5NjE3NzIzNjZhNTllIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZWdhY3kvSURCRGF0YWJhc2VCYWNr
ZW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvbGVnYWN5L0lEQkRh
dGFiYXNlQmFja2VuZC5oCkBAIC0xMTksNyArMTE5LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0
Q3VycmVudFZlcnNpb24odWludDY0X3QgdmVyc2lvbikgeyBtX21ldGFkYXRhLnZlcnNpb24gPSB2
ZXJzaW9uOyB9CiAKICAgICBib29sIGhhc1BlbmRpbmdTZWNvbmRIYWxmT3BlbigpIHsgcmV0dXJu
IG1fcGVuZGluZ1NlY29uZEhhbGZPcGVuLmdldCgpOyB9Ci0gICAgdm9pZCBzZXRQZW5kaW5nU2Vj
b25kSGFsZk9wZW4oc3RkOjp1bmlxdWVfcHRyPElEQlBlbmRpbmdPcGVuQ2FsbD4gcGVuZGluZ09w
ZW5DYWxsKSB7IG1fcGVuZGluZ1NlY29uZEhhbGZPcGVuID0gV1RGOjptb3ZlKHBlbmRpbmdPcGVu
Q2FsbCk7IH0KKyAgICB2b2lkIHNldFBlbmRpbmdTZWNvbmRIYWxmT3BlbihzdGQ6OnVuaXF1ZV9w
dHI8SURCUGVuZGluZ09wZW5DYWxsPiBwZW5kaW5nT3BlbkNhbGwpIHsgbV9wZW5kaW5nU2Vjb25k
SGFsZk9wZW4gPSBXVEZNb3ZlKHBlbmRpbmdPcGVuQ2FsbCk7IH0KIAogICAgIElEQkZhY3RvcnlC
YWNrZW5kSW50ZXJmYWNlJiBmYWN0b3J5QmFja2VuZCgpIHsgcmV0dXJuICptX2ZhY3Rvcnk7IH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvbGVnYWN5L0xl
Z2FjeUFueS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvbGVnYWN5L0xlZ2Fj
eUFueS5oCmluZGV4IDQzZGMxNWRhNGE4OTAwMjY0NjAzZjgzYzhmYTFhMDZhOTgwODdiZDEuLjZj
MjlmMjYwYjk5OTlhOTg3NWYyZjUzNTVhNTg1NjcyNTVmZGU4NWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xlZ2FjeS9MZWdhY3lBbnkuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZWdhY3kvTGVnYWN5QW55LmgKQEAgLTc2LDcg
Kzc2LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBSZWZQdHI8TGVnYWN5QW55PiBjcmVhdGUoUGFz
c1JlZlB0cjxUPiBpZGJPYmplY3QpCiAgICAgewogICAgICAgICBSZWZQdHI8VD4gcmVmT2JqZWN0
ID0gaWRiT2JqZWN0OwotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IExlZ2FjeUFueShXVEY6
Om1vdmUocmVmT2JqZWN0KSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IExlZ2FjeUFu
eShXVEZNb3ZlKHJlZk9iamVjdCkpKTsKICAgICB9CiAgICAgc3RhdGljIFJlZlB0cjxMZWdhY3lB
bnk+IGNyZWF0ZShpbnQ2NF90IHZhbHVlKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL2xlZ2FjeS9MZWdhY3lEYXRhYmFzZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZWdhY3kvTGVnYWN5RGF0YWJhc2UuY3BwCmluZGV4
IGMwNjhjZGJkOTYzNjYxMjU1YzlmMjA0NzQ0OWVmZDI4MjNiZDg1YjYuLjlmM2ZiOTkyZWNmMjVm
NjhmMDc1YzMwNjZkMzMzMzE4NjNmYmYwYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL2xlZ2FjeS9MZWdhY3lEYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvbGVnYWN5L0xlZ2FjeURhdGFiYXNlLmNwcApAQCAtMzQ5
LDcgKzM0OSw3IEBAIHZvaWQgTGVnYWN5RGF0YWJhc2U6OmVucXVldWVFdmVudChSZWY8RXZlbnQ+
JiYgZXZlbnQpCiAgICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgZXZl
bnQtPnNldFRhcmdldCh0aGlzKTsKICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmV2ZW50
UXVldWUoKS5lbnF1ZXVlRXZlbnQoZXZlbnQuY29weVJlZigpKTsKLSAgICBtX2VucXVldWVkRXZl
bnRzLmFwcGVuZChXVEY6Om1vdmUoZXZlbnQpKTsKKyAgICBtX2VucXVldWVkRXZlbnRzLmFwcGVu
ZChXVEZNb3ZlKGV2ZW50KSk7CiB9CiAKIGJvb2wgTGVnYWN5RGF0YWJhc2U6OmRpc3BhdGNoRXZl
bnQoRXZlbnQmIGV2ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvbGVnYWN5L0xlZ2FjeVJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvbGVnYWN5L0xlZ2FjeVJlcXVlc3QuY3BwCmluZGV4IDRhZDU2MjA1ODUzMjRkNjRk
NWEyYzFhNjhmYjFhZmQ1ZjZlYmFkNjUuLjhiMmYyMGRiMzZjNjU0Mjk5OTBmNDEzZTFiYmEyNDM5
YjgwZjQ5YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xl
Z2FjeS9MZWdhY3lSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9sZWdhY3kvTGVnYWN5UmVxdWVzdC5jcHAKQEAgLTU3OSw3ICs1NzksNyBAQCB2b2lkIExl
Z2FjeVJlcXVlc3Q6OmVucXVldWVFdmVudChSZWY8RXZlbnQ+JiYgZXZlbnQpCiAgICAgZXZlbnQt
PnNldFRhcmdldCh0aGlzKTsKIAogICAgIGlmIChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmV2
ZW50UXVldWUoKS5lbnF1ZXVlRXZlbnQoZXZlbnQuY29weVJlZigpKSkKLSAgICAgICAgbV9lbnF1
ZXVlZEV2ZW50cy5hcHBlbmQoV1RGOjptb3ZlKGV2ZW50KSk7CisgICAgICAgIG1fZW5xdWV1ZWRF
dmVudHMuYXBwZW5kKFdURk1vdmUoZXZlbnQpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvbGVnYWN5L0xl
Z2FjeVRyYW5zYWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xl
Z2FjeS9MZWdhY3lUcmFuc2FjdGlvbi5jcHAKaW5kZXggZTZkMGM0NTk2YzUxYjlhOTIxYzA5YmEy
YzIxMzI4ZmQ2YjJjNGU2OS4uZDQzMzQyNTk0MGY4NmFhYmUyMGIyYTM0ZDYzYWZmMjZkNGMwYWMz
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvbGVnYWN5L0xl
Z2FjeVRyYW5zYWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9sZWdhY3kvTGVnYWN5VHJhbnNhY3Rpb24uY3BwCkBAIC0zNjYsNyArMzY2LDcgQEAgdm9pZCBM
ZWdhY3lUcmFuc2FjdGlvbjo6ZW5xdWV1ZUV2ZW50KFJlZjxFdmVudD4mJiBldmVudCkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgZXZlbnQtPnNldFRhcmdldCh0aGlzKTsKLSAgICBzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCktPmV2ZW50UXVldWUoKS5lbnF1ZXVlRXZlbnQoV1RGOjptb3ZlKGV2ZW50
KSk7CisgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5ldmVudFF1ZXVlKCkuZW5xdWV1ZUV2
ZW50KFdURk1vdmUoZXZlbnQpKTsKIH0KIAogSURCRGF0YWJhc2VCYWNrZW5kKiBMZWdhY3lUcmFu
c2FjdGlvbjo6YmFja2VuZERCKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHAKaW5kZXggM2Y2MDY2ZGYyNTgxOWQ4
ZDIyNTdmNjg0MjE0Mjc1NDA0NjI1ZmU5Ny4uM2Y0NGEwOTFjYjQxMjI3N2I1Yzk5ZDIyYzEzYjZh
ZTZlYTZjZjE5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL0lEQlNlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL0lEQlNlcnZlci5jcHAKQEAgLTM1MCwxMyArMzUwLDEzIEBAIHZvaWQgSURCU2Vy
dmVyOjpkaWRGaXJlVmVyc2lvbkNoYW5nZUV2ZW50KHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlv
bklkZW50aWZpZXIsCiB2b2lkIElEQlNlcnZlcjo6cG9zdERhdGFiYXNlVGFzayhzdGQ6OnVuaXF1
ZV9wdHI8Q3Jvc3NUaHJlYWRUYXNrPiYmIHRhc2spCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKLSAgICBtX2RhdGFiYXNlUXVldWUuYXBwZW5kKFdURjo6bW92ZSh0YXNrKSk7CisgICAg
bV9kYXRhYmFzZVF1ZXVlLmFwcGVuZChXVEZNb3ZlKHRhc2spKTsKIH0KIAogdm9pZCBJREJTZXJ2
ZXI6OnBvc3REYXRhYmFzZVRhc2tSZXBseShzdGQ6OnVuaXF1ZV9wdHI8Q3Jvc3NUaHJlYWRUYXNr
PiYmIHRhc2spCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7Ci0gICAgbV9kYXRhYmFz
ZVJlcGx5UXVldWUuYXBwZW5kKFdURjo6bW92ZSh0YXNrKSk7CisgICAgbV9kYXRhYmFzZVJlcGx5
UXVldWUuYXBwZW5kKFdURk1vdmUodGFzaykpOwogCiAKICAgICBMb2NrZXI8TG9jaz4gbG9ja2Vy
KG1fbWFpblRocmVhZFJlcGx5TG9jayk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUJhY2tpbmdTdG9y
ZVRyYW5zYWN0aW9uLmNwcAppbmRleCBiZTM4MDcyOGU5NzA2MjhjNjE2NzZmNTRmMDYxOGMzMjhl
NWI1YzhlLi4wODdjNWRhOTIwMmYwNzk0OTdlNjVlMjJmNGQyM2RhYzQwNWUzODIxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5QmFja2lu
Z1N0b3JlVHJhbnNhY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9NZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbi5jcHAKQEAgLTkzLDcgKzkz
LDcgQEAgdm9pZCBNZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbjo6aW5kZXhEZWxldGVkKHN0
ZDo6dW5pcXVlX3B0cjxNZW1vcnlJbmRleD4gaW4KIAogICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9k
ZWxldGVkSW5kZXhlcy5hZGQoaW5kZXgtPmluZm8oKS5uYW1lKCksIG51bGxwdHIpOwogICAgIGlm
IChhZGRSZXN1bHQuaXNOZXdFbnRyeSkKLSAgICAgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1
ZSA9IFdURjo6bW92ZShpbmRleCk7CisgICAgICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUg
PSBXVEZNb3ZlKGluZGV4KTsKIH0KIAogdm9pZCBNZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlv
bjo6YWRkRXhpc3RpbmdPYmplY3RTdG9yZShNZW1vcnlPYmplY3RTdG9yZSYgb2JqZWN0U3RvcmUp
CkBAIC0xMTgsNyArMTE4LDcgQEAgdm9pZCBNZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbjo6
b2JqZWN0U3RvcmVEZWxldGVkKHN0ZDo6dW5pcXVlX3B0cjxNZW1vcnlPYmoKIAogICAgIGF1dG8g
YWRkUmVzdWx0ID0gbV9kZWxldGVkT2JqZWN0U3RvcmVzLmFkZChvYmplY3RTdG9yZS0+aW5mbygp
Lm5hbWUoKSwgbnVsbHB0cik7CiAgICAgaWYgKGFkZFJlc3VsdC5pc05ld0VudHJ5KQotICAgICAg
ICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gV1RGOjptb3ZlKG9iamVjdFN0b3JlKTsKKyAg
ICAgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IFdURk1vdmUob2JqZWN0U3RvcmUpOwog
fQogCiB2b2lkIE1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uOjpvYmplY3RTdG9yZUNsZWFy
ZWQoTWVtb3J5T2JqZWN0U3RvcmUmIG9iamVjdFN0b3JlLCBzdGQ6OnVuaXF1ZV9wdHI8S2V5VmFs
dWVNYXA+JiYga2V5VmFsdWVNYXAsIHN0ZDo6dW5pcXVlX3B0cjxzdGQ6OnNldDxJREJLZXlEYXRh
Pj4mJiBvcmRlcmVkS2V5cykKQEAgLTEzMSwxMCArMTMxLDEwIEBAIHZvaWQgTWVtb3J5QmFja2lu
Z1N0b3JlVHJhbnNhY3Rpb246Om9iamVjdFN0b3JlQ2xlYXJlZChNZW1vcnlPYmplY3RTdG9yZSYg
b2JqZWN0CiAgICAgaWYgKCFhZGRSZXN1bHQuaXNOZXdFbnRyeSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IFdURjo6bW92ZShrZXlWYWx1ZU1hcCk7
CisgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IFdURk1vdmUoa2V5VmFsdWVNYXApOwog
CiAgICAgQVNTRVJUKCFtX2NsZWFyZWRPcmRlcmVkS2V5cy5jb250YWlucygmb2JqZWN0U3RvcmUp
KTsKLSAgICBtX2NsZWFyZWRPcmRlcmVkS2V5cy5hZGQoJm9iamVjdFN0b3JlLCBXVEY6Om1vdmUo
b3JkZXJlZEtleXMpKTsKKyAgICBtX2NsZWFyZWRPcmRlcmVkS2V5cy5hZGQoJm9iamVjdFN0b3Jl
LCBXVEZNb3ZlKG9yZGVyZWRLZXlzKSk7CiB9CiAKIHZvaWQgTWVtb3J5QmFja2luZ1N0b3JlVHJh
bnNhY3Rpb246OmluZGV4Q2xlYXJlZChNZW1vcnlJbmRleCYgaW5kZXgsIHN0ZDo6dW5pcXVlX3B0
cjxJbmRleFZhbHVlU3RvcmU+JiYgdmFsdWVTdG9yZSkKQEAgLTE0NSw3ICsxNDUsNyBAQCB2b2lk
IE1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uOjppbmRleENsZWFyZWQoTWVtb3J5SW5kZXgm
IGluZGV4LCBzdGQ6OnVuaXF1ZQogICAgIGlmICghYWRkUmVzdWx0LmlzTmV3RW50cnkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBXVEY6Om1vdmUo
dmFsdWVTdG9yZSk7CisgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IFdURk1vdmUodmFs
dWVTdG9yZSk7CiB9CiAKIHZvaWQgTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb246OnJlY29y
ZFZhbHVlQ2hhbmdlZChNZW1vcnlPYmplY3RTdG9yZSYgb2JqZWN0U3RvcmUsIGNvbnN0IElEQktl
eURhdGEmIGtleSwgVGhyZWFkU2FmZURhdGFCdWZmZXIqIHZhbHVlKQpAQCAtMTg0LDcgKzE4NCw3
IEBAIHZvaWQgTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb246OmFib3J0KCkKICAgICAvLyBi
dXQgdGhlIGVudHJpZXMgaW4gdGhlIG1hcCBzdGlsbCByZW1haW4uCiAgICAgZm9yIChhdXRvJiBv
YmplY3RTdG9yZSA6IG1fZGVsZXRlZE9iamVjdFN0b3Jlcy52YWx1ZXMoKSkgewogICAgICAgICBN
ZW1vcnlPYmplY3RTdG9yZSogcmF3T2JqZWN0U3RvcmUgPSBvYmplY3RTdG9yZS5nZXQoKTsKLSAg
ICAgICAgbV9iYWNraW5nU3RvcmUucmVzdG9yZU9iamVjdFN0b3JlRm9yVmVyc2lvbkNoYW5nZUFi
b3J0KFdURjo6bW92ZShvYmplY3RTdG9yZSkpOworICAgICAgICBtX2JhY2tpbmdTdG9yZS5yZXN0
b3JlT2JqZWN0U3RvcmVGb3JWZXJzaW9uQ2hhbmdlQWJvcnQoV1RGTW92ZShvYmplY3RTdG9yZSkp
OwogCiAgICAgICAgIEFTU0VSVCghbV9vYmplY3RTdG9yZXMuY29udGFpbnMocmF3T2JqZWN0U3Rv
cmUpKTsKICAgICAgICAgbV9vYmplY3RTdG9yZXMuYWRkKHJhd09iamVjdFN0b3JlKTsKQEAgLTIw
MSw3ICsyMDEsNyBAQCB2b2lkIE1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uOjphYm9ydCgp
CiAgICAgLy8gUmVzdG9yZSBjbGVhcmVkIGluZGV4IHZhbHVlIHN0b3JlcyBiZWZvcmUgd2UgcmUt
aW5zZXJ0IHZhbHVlcyBpbnRvIG9iamVjdCBzdG9yZXMKICAgICAvLyBiZWNhdXNlIGluc2VydGlu
ZyB0aG9zZSB2YWx1ZXMgd2lsbCByZWdlbmVyYXRlIHRoZSBhcHByb3ByaWF0ZSBpbmRleCB2YWx1
ZXMuCiAgICAgZm9yIChhdXRvJiBpdGVyYXRvciA6IG1fY2xlYXJlZEluZGV4VmFsdWVTdG9yZXMp
Ci0gICAgICAgIGl0ZXJhdG9yLmtleS0+cmVwbGFjZUluZGV4VmFsdWVTdG9yZShXVEY6Om1vdmUo
aXRlcmF0b3IudmFsdWUpKTsKKyAgICAgICAgaXRlcmF0b3Iua2V5LT5yZXBsYWNlSW5kZXhWYWx1
ZVN0b3JlKFdURk1vdmUoaXRlcmF0b3IudmFsdWUpKTsKICAgICBtX2NsZWFyZWRJbmRleFZhbHVl
U3RvcmVzLmNsZWFyKCk7CiAgICAgCiAgICAgZm9yIChhdXRvIG9iamVjdFN0b3JlIDogbV9vYmpl
Y3RTdG9yZXMpIHsKQEAgLTIxMSw3ICsyMTEsNyBAQCB2b2lkIE1lbW9yeUJhY2tpbmdTdG9yZVRy
YW5zYWN0aW9uOjphYm9ydCgpCiAgICAgICAgIGF1dG8gY2xlYXJlZEtleVZhbHVlTWFwID0gbV9j
bGVhcmVkS2V5VmFsdWVNYXBzLnRha2Uob2JqZWN0U3RvcmUpOwogICAgICAgICBpZiAoY2xlYXJl
ZEtleVZhbHVlTWFwKSB7CiAgICAgICAgICAgICBBU1NFUlQobV9jbGVhcmVkT3JkZXJlZEtleXMu
Y29udGFpbnMob2JqZWN0U3RvcmUpKTsKLSAgICAgICAgICAgIG9iamVjdFN0b3JlLT5yZXBsYWNl
S2V5VmFsdWVTdG9yZShXVEY6Om1vdmUoY2xlYXJlZEtleVZhbHVlTWFwKSwgbV9jbGVhcmVkT3Jk
ZXJlZEtleXMudGFrZShvYmplY3RTdG9yZSkpOworICAgICAgICAgICAgb2JqZWN0U3RvcmUtPnJl
cGxhY2VLZXlWYWx1ZVN0b3JlKFdURk1vdmUoY2xlYXJlZEtleVZhbHVlTWFwKSwgbV9jbGVhcmVk
T3JkZXJlZEtleXMudGFrZShvYmplY3RTdG9yZSkpOwogICAgICAgICB9CiAKICAgICAgICAgYXV0
byBrZXlWYWx1ZU1hcCA9IG1fb3JpZ2luYWxWYWx1ZXMudGFrZShvYmplY3RTdG9yZSk7CkBAIC0y
MjgsNyArMjI4LDcgQEAgdm9pZCBNZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbjo6YWJvcnQo
KQogICAgIC8vIGJ1dCB0aGUgZW50cmllcyBpbiB0aGUgbWFwIHN0aWxsIHJlbWFpbi4KICAgICBm
b3IgKGF1dG8mIGluZGV4IDogbV9kZWxldGVkSW5kZXhlcy52YWx1ZXMoKSkgewogICAgICAgICBN
ZW1vcnlPYmplY3RTdG9yZSYgb2JqZWN0U3RvcmUgPSBpbmRleC0+b2JqZWN0U3RvcmUoKTsKLSAg
ICAgICAgb2JqZWN0U3RvcmUubWF5YmVSZXN0b3JlRGVsZXRlZEluZGV4KFdURjo6bW92ZShpbmRl
eCkpOworICAgICAgICBvYmplY3RTdG9yZS5tYXliZVJlc3RvcmVEZWxldGVkSW5kZXgoV1RGTW92
ZShpbmRleCkpOwogICAgIH0KIAogICAgIC8vIFRoaXMgY2xlYXJzIHRoZSBlbnRyaWVzIGZyb20g
dGhlIG1hcC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5jcHAKaW5kZXggNGNlOWViODc1
YzZlZWQ0Mzg5M2M5NjM3NjI3MThiOWZmYTkxZWU0ZC4uMzAyZGY3NjQ5ZTM5MDQyNWQ0MjQ3ZmRi
ZWI4YzM3ZjY2MTFmNTRiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5jcHAKQEAg
LTg4LDcgKzg4LDcgQEAgSURCRXJyb3IgTWVtb3J5SURCQmFja2luZ1N0b3JlOjpiZWdpblRyYW5z
YWN0aW9uKGNvbnN0IElEQlRyYW5zYWN0aW9uSW5mbyYgaW5mbykKICAgICAgICAgfQogICAgIH0K
IAotICAgIG1fdHJhbnNhY3Rpb25zLnNldChpbmZvLmlkZW50aWZpZXIoKSwgV1RGOjptb3ZlKHRy
YW5zYWN0aW9uKSk7CisgICAgbV90cmFuc2FjdGlvbnMuc2V0KGluZm8uaWRlbnRpZmllcigpLCBX
VEZNb3ZlKHRyYW5zYWN0aW9uKSk7CiAKICAgICByZXR1cm4gSURCRXJyb3IoKTsKIH0KQEAgLTEz
Nyw3ICsxMzcsNyBAQCBJREJFcnJvciBNZW1vcnlJREJCYWNraW5nU3RvcmU6OmNyZWF0ZU9iamVj
dFN0b3JlKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdAogICAgIEFTU0VSVChyYXdUcmFu
c2FjdGlvbi0+aXNWZXJzaW9uQ2hhbmdlKCkpOwogCiAgICAgcmF3VHJhbnNhY3Rpb24tPmFkZE5l
d09iamVjdFN0b3JlKCpvYmplY3RTdG9yZSk7Ci0gICAgcmVnaXN0ZXJPYmplY3RTdG9yZShXVEY6
Om1vdmUob2JqZWN0U3RvcmUpKTsKKyAgICByZWdpc3Rlck9iamVjdFN0b3JlKFdURk1vdmUob2Jq
ZWN0U3RvcmUpKTsKIAogICAgIHJldHVybiBJREJFcnJvcigpOwogfQpAQCAtMTYwLDcgKzE2MCw3
IEBAIElEQkVycm9yIE1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlT2JqZWN0U3RvcmUoY29u
c3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0CiAgICAgICAgIHJldHVybiBJREJFcnJvcihJREJE
YXRhYmFzZUV4Y2VwdGlvbjo6Q29uc3RyYWludEVycm9yKTsKIAogICAgIG1fZGF0YWJhc2VJbmZv
LT5kZWxldGVPYmplY3RTdG9yZShvYmplY3RTdG9yZU5hbWUpOwotICAgIHRyYW5zYWN0aW9uLT5v
YmplY3RTdG9yZURlbGV0ZWQoV1RGOjptb3ZlKG9iamVjdFN0b3JlKSk7CisgICAgdHJhbnNhY3Rp
b24tPm9iamVjdFN0b3JlRGVsZXRlZChXVEZNb3ZlKG9iamVjdFN0b3JlKSk7CiAKICAgICByZXR1
cm4gSURCRXJyb3IoKTsKIH0KQEAgLTIyOCw3ICsyMjgsNyBAQCB2b2lkIE1lbW9yeUlEQkJhY2tp
bmdTdG9yZTo6cmVtb3ZlT2JqZWN0U3RvcmVGb3JWZXJzaW9uQ2hhbmdlQWJvcnQoTWVtb3J5T2Jq
ZWN0UwogCiB2b2lkIE1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6cmVzdG9yZU9iamVjdFN0b3JlRm9y
VmVyc2lvbkNoYW5nZUFib3J0KHN0ZDo6dW5pcXVlX3B0cjxNZW1vcnlPYmplY3RTdG9yZT4mJiBv
YmplY3RTdG9yZSkKIHsKLSAgICByZWdpc3Rlck9iamVjdFN0b3JlKFdURjo6bW92ZShvYmplY3RT
dG9yZSkpOworICAgIHJlZ2lzdGVyT2JqZWN0U3RvcmUoV1RGTW92ZShvYmplY3RTdG9yZSkpOwog
fQogCiBJREJFcnJvciBNZW1vcnlJREJCYWNraW5nU3RvcmU6OmtleUV4aXN0c0luT2JqZWN0U3Rv
cmUoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVu
dGlmaWVyLCBjb25zdCBJREJLZXlEYXRhJiBrZXlEYXRhLCBib29sJiBrZXlFeGlzdHMpCkBAIC00
MzUsNyArNDM1LDcgQEAgdm9pZCBNZW1vcnlJREJCYWNraW5nU3RvcmU6OnJlZ2lzdGVyT2JqZWN0
U3RvcmUoc3RkOjp1bmlxdWVfcHRyPE1lbW9yeU9iamVjdFN0b3IKICAgICBBU1NFUlQoIW1fb2Jq
ZWN0U3RvcmVzQnlOYW1lLmNvbnRhaW5zKG9iamVjdFN0b3JlLT5pbmZvKCkubmFtZSgpKSk7CiAK
ICAgICBtX29iamVjdFN0b3Jlc0J5TmFtZS5zZXQob2JqZWN0U3RvcmUtPmluZm8oKS5uYW1lKCks
IG9iamVjdFN0b3JlLmdldCgpKTsKLSAgICBtX29iamVjdFN0b3Jlc0J5SWRlbnRpZmllci5zZXQo
b2JqZWN0U3RvcmUtPmluZm8oKS5pZGVudGlmaWVyKCksIFdURjo6bW92ZShvYmplY3RTdG9yZSkp
OworICAgIG1fb2JqZWN0U3RvcmVzQnlJZGVudGlmaWVyLnNldChvYmplY3RTdG9yZS0+aW5mbygp
LmlkZW50aWZpZXIoKSwgV1RGTW92ZShvYmplY3RTdG9yZSkpOwogfQogCiB2b2lkIE1lbW9yeUlE
QkJhY2tpbmdTdG9yZTo6dW5yZWdpc3Rlck9iamVjdFN0b3JlKE1lbW9yeU9iamVjdFN0b3JlJiBv
YmplY3RTdG9yZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9NZW1vcnlJbmRleC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvTWVtb3J5SW5kZXguY3BwCmluZGV4IDA3NmI0MGY5NzE2M2FlMTQ0NzU5NzA5ZGJj
ODQwNzhlOTg3YTg2MjIuLjlmMjZkZjg3ZGQyMDFjMTkzYWNlYmQwM2UyOGMxNDA0MzkyMmYzMTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1v
cnlJbmRleC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L01lbW9yeUluZGV4LmNwcApAQCAtNzAsNyArNzAsNyBAQCB2b2lkIE1lbW9yeUluZGV4OjpvYmpl
Y3RTdG9yZUNsZWFyZWQoKQogICAgIGF1dG8gdHJhbnNhY3Rpb24gPSBtX29iamVjdFN0b3JlLndy
aXRlVHJhbnNhY3Rpb24oKTsKICAgICBBU1NFUlQodHJhbnNhY3Rpb24pOwogCi0gICAgdHJhbnNh
Y3Rpb24tPmluZGV4Q2xlYXJlZCgqdGhpcywgV1RGOjptb3ZlKG1fcmVjb3JkcykpOworICAgIHRy
YW5zYWN0aW9uLT5pbmRleENsZWFyZWQoKnRoaXMsIFdURk1vdmUobV9yZWNvcmRzKSk7CiAKICAg
ICBub3RpZnlDdXJzb3JzT2ZBbGxSZWNvcmRzQ2hhbmdlZCgpOwogfQpAQCAtMTA2LDcgKzEwNiw3
IEBAIHZvaWQgTWVtb3J5SW5kZXg6OnJlcGxhY2VJbmRleFZhbHVlU3RvcmUoc3RkOjp1bmlxdWVf
cHRyPEluZGV4VmFsdWVTdG9yZT4mJiB2YWx1CiAgICAgQVNTRVJUKG1fb2JqZWN0U3RvcmUud3Jp
dGVUcmFuc2FjdGlvbigpKTsKICAgICBBU1NFUlQobV9vYmplY3RTdG9yZS53cml0ZVRyYW5zYWN0
aW9uKCktPmlzQWJvcnRpbmcoKSk7CiAKLSAgICBtX3JlY29yZHMgPSBXVEY6Om1vdmUodmFsdWVT
dG9yZSk7CisgICAgbV9yZWNvcmRzID0gV1RGTW92ZSh2YWx1ZVN0b3JlKTsKIH0KIAogSURCR2V0
UmVzdWx0IE1lbW9yeUluZGV4OjpnZXRSZXN1bHRGb3JLZXlSYW5nZShJbmRleGVkREI6OkluZGV4
UmVjb3JkVHlwZSB0eXBlLCBjb25zdCBJREJLZXlSYW5nZURhdGEmIHJhbmdlKSBjb25zdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeU9i
amVjdFN0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9N
ZW1vcnlPYmplY3RTdG9yZS5jcHAKaW5kZXggNDczNjdiNTNhZDc5NTEyODBjOGViZTU1NjM5NWRi
NzZhYWY5NmIyNy4uYTQ4Y2U4YjI2OGMyN2NmMzllZTU5MDMwNDQ3ODliM2Q4N2NlNGY1NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeU9i
amVjdFN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvTWVtb3J5T2JqZWN0U3RvcmUuY3BwCkBAIC05OCw3ICs5OCw3IEBAIElEQkVycm9yIE1lbW9y
eU9iamVjdFN0b3JlOjpjcmVhdGVJbmRleChNZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbiYg
dHJhbnNhY3RpCiAKICAgICBtX2luZm8uYWRkRXhpc3RpbmdJbmRleChpbmZvKTsKICAgICB0cmFu
c2FjdGlvbi5hZGROZXdJbmRleCgqaW5kZXgpOwotICAgIHJlZ2lzdGVySW5kZXgoV1RGOjptb3Zl
KGluZGV4KSk7CisgICAgcmVnaXN0ZXJJbmRleChXVEZNb3ZlKGluZGV4KSk7CiAKICAgICByZXR1
cm4geyB9OwogfQpAQCAtMTIzLDcgKzEyMyw3IEBAIHZvaWQgTWVtb3J5T2JqZWN0U3RvcmU6Om1h
eWJlUmVzdG9yZURlbGV0ZWRJbmRleChzdGQ6OnVuaXF1ZV9wdHI8TWVtb3J5SW5kZXg+IGluCiAg
ICAgLy8gcmVwb3B1bGF0ZSB0aGUgaW5kZXggd2l0aCB0aGUgb2JqZWN0IHN0b3JlJ3MgcHJlLXRy
YW5zYWN0aW9uIHJlY29yZHMuCiAgICAgQVNTRVJUX1VOVVNFRChlcnJvciwgZXJyb3IuaXNOdWxs
KCkpOwogCi0gICAgcmVnaXN0ZXJJbmRleChXVEY6Om1vdmUoaW5kZXgpKTsKKyAgICByZWdpc3Rl
ckluZGV4KFdURk1vdmUoaW5kZXgpKTsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPE1lbW9yeUluZGV4
PiBNZW1vcnlPYmplY3RTdG9yZTo6dGFrZUluZGV4QnlOYW1lKGNvbnN0IFN0cmluZyYgbmFtZSkK
QEAgLTE1MSw3ICsxNTEsNyBAQCBJREJFcnJvciBNZW1vcnlPYmplY3RTdG9yZTo6ZGVsZXRlSW5k
ZXgoTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aQogICAgICAgICByZXR1
cm4gSURCRXJyb3IoSURCRGF0YWJhc2VFeGNlcHRpb246OkNvbnN0cmFpbnRFcnJvcik7CiAKICAg
ICBtX2luZm8uZGVsZXRlSW5kZXgoaW5kZXhOYW1lKTsKLSAgICB0cmFuc2FjdGlvbi5pbmRleERl
bGV0ZWQoV1RGOjptb3ZlKGluZGV4KSk7CisgICAgdHJhbnNhY3Rpb24uaW5kZXhEZWxldGVkKFdU
Rk1vdmUoaW5kZXgpKTsKIAogICAgIHJldHVybiB7IH07CiB9CkBAIC0xNjksNyArMTY5LDcgQEAg
dm9pZCBNZW1vcnlPYmplY3RTdG9yZTo6Y2xlYXIoKQogICAgIExPRyhJbmRleGVkREIsICJNZW1v
cnlPYmplY3RTdG9yZTo6Y2xlYXIiKTsKICAgICBBU1NFUlQobV93cml0ZVRyYW5zYWN0aW9uKTsK
IAotICAgIG1fd3JpdGVUcmFuc2FjdGlvbi0+b2JqZWN0U3RvcmVDbGVhcmVkKCp0aGlzLCBXVEY6
Om1vdmUobV9rZXlWYWx1ZVN0b3JlKSwgV1RGOjptb3ZlKG1fb3JkZXJlZEtleXMpKTsKKyAgICBt
X3dyaXRlVHJhbnNhY3Rpb24tPm9iamVjdFN0b3JlQ2xlYXJlZCgqdGhpcywgV1RGTW92ZShtX2tl
eVZhbHVlU3RvcmUpLCBXVEZNb3ZlKG1fb3JkZXJlZEtleXMpKTsKICAgICBmb3IgKGF1dG8mIGlu
ZGV4IDogbV9pbmRleGVzQnlJZGVudGlmaWVyLnZhbHVlcygpKQogICAgICAgICBpbmRleC0+b2Jq
ZWN0U3RvcmVDbGVhcmVkKCk7CiAKQEAgLTE4Miw4ICsxODIsOCBAQCB2b2lkIE1lbW9yeU9iamVj
dFN0b3JlOjpyZXBsYWNlS2V5VmFsdWVTdG9yZShzdGQ6OnVuaXF1ZV9wdHI8S2V5VmFsdWVNYXA+
JiYgc3RvcgogICAgIEFTU0VSVChtX3dyaXRlVHJhbnNhY3Rpb24pOwogICAgIEFTU0VSVChtX3dy
aXRlVHJhbnNhY3Rpb24tPmlzQWJvcnRpbmcoKSk7CiAKLSAgICBtX2tleVZhbHVlU3RvcmUgPSBX
VEY6Om1vdmUoc3RvcmUpOwotICAgIG1fb3JkZXJlZEtleXMgPSBXVEY6Om1vdmUob3JkZXJlZEtl
eXMpOworICAgIG1fa2V5VmFsdWVTdG9yZSA9IFdURk1vdmUoc3RvcmUpOworICAgIG1fb3JkZXJl
ZEtleXMgPSBXVEZNb3ZlKG9yZGVyZWRLZXlzKTsKIH0KIAogdm9pZCBNZW1vcnlPYmplY3RTdG9y
ZTo6ZGVsZXRlUmVjb3JkKGNvbnN0IElEQktleURhdGEmIGtleSkKQEAgLTQ0MSw3ICs0NDEsNyBA
QCB2b2lkIE1lbW9yeU9iamVjdFN0b3JlOjpyZWdpc3RlckluZGV4KHN0ZDo6dW5pcXVlX3B0cjxN
ZW1vcnlJbmRleD4mJiBpbmRleCkKICAgICBBU1NFUlQoIW1faW5kZXhlc0J5TmFtZS5jb250YWlu
cyhpbmRleC0+aW5mbygpLm5hbWUoKSkpOwogCiAgICAgbV9pbmRleGVzQnlOYW1lLnNldChpbmRl
eC0+aW5mbygpLm5hbWUoKSwgaW5kZXguZ2V0KCkpOwotICAgIG1faW5kZXhlc0J5SWRlbnRpZmll
ci5zZXQoaW5kZXgtPmluZm8oKS5pZGVudGlmaWVyKCksIFdURjo6bW92ZShpbmRleCkpOworICAg
IG1faW5kZXhlc0J5SWRlbnRpZmllci5zZXQoaW5kZXgtPmluZm8oKS5pZGVudGlmaWVyKCksIFdU
Rk1vdmUoaW5kZXgpKTsKIH0KIAogdm9pZCBNZW1vcnlPYmplY3RTdG9yZTo6dW5yZWdpc3Rlcklu
ZGV4KE1lbW9yeUluZGV4JiBpbmRleCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9TZXJ2ZXJPcGVuREJSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TZXJ2ZXJPcGVuREJSZXF1ZXN0LmNwcAppbmRl
eCAzYWJiOGVjOGFiNzZiYzE2YmZmYzE4ZjExMjc3MjQ3YTM2NTFlMGQ0Li4xOGRjZDRkMDQ2M2Fk
MmUxMTVmZjNmODAwNjc1NjY3OWFiNTQyZTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU2VydmVyT3BlbkRCUmVxdWVzdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NlcnZlck9wZW5EQlJlcXVlc3Qu
Y3BwCkBAIC03Nyw3ICs3Nyw3IEBAIHZvaWQgU2VydmVyT3BlbkRCUmVxdWVzdDo6bm90aWZpZWRD
b25uZWN0aW9uc09mVmVyc2lvbkNoYW5nZShIYXNoU2V0PHVpbnQ2NF90PiYmCiAgICAgQVNTRVJU
KCFtX25vdGlmaWVkQ29ubmVjdGlvbnNPZlZlcnNpb25DaGFuZ2UpOwogCiAgICAgbV9ub3RpZmll
ZENvbm5lY3Rpb25zT2ZWZXJzaW9uQ2hhbmdlID0gdHJ1ZTsKLSAgICBtX2Nvbm5lY3Rpb25zUGVu
ZGluZ1ZlcnNpb25DaGFuZ2VFdmVudCA9IFdURjo6bW92ZShjb25uZWN0aW9uSWRlbnRpZmllcnMp
OworICAgIG1fY29ubmVjdGlvbnNQZW5kaW5nVmVyc2lvbkNoYW5nZUV2ZW50ID0gV1RGTW92ZShj
b25uZWN0aW9uSWRlbnRpZmllcnMpOwogfQogCiB2b2lkIFNlcnZlck9wZW5EQlJlcXVlc3Q6OmNv
bm5lY3Rpb25DbG9zZWRPckZpcmVkVmVyc2lvbkNoYW5nZUV2ZW50KHVpbnQ2NF90IGNvbm5lY3Rp
b25JZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5jcHAKaW5kZXggZWI2Njc3ZGI1MzAz
ZjA3ODI3ZGFkZDk1N2Q4ZTUyZmY1NGMyMDJjMi4uMjQ0ZTYzMzlhNWQ3N2FhYzJjOWQ3ZGJiMTBi
NWU4N2RjZDE1ZmNiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwCkBAIC02OSw3ICs2OSw3
IEBAIGNvbnN0IElEQkRhdGFiYXNlSW5mbyYgVW5pcXVlSURCRGF0YWJhc2U6OmluZm8oKSBjb25z
dAogdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6b3BlbkRhdGFiYXNlQ29ubmVjdGlvbihJREJDb25u
ZWN0aW9uVG9DbGllbnQmIGNvbm5lY3Rpb24sIGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0
RGF0YSkKIHsKICAgICBhdXRvIG9wZXJhdGlvbiA9IFNlcnZlck9wZW5EQlJlcXVlc3Q6OmNyZWF0
ZShjb25uZWN0aW9uLCByZXF1ZXN0RGF0YSk7Ci0gICAgbV9wZW5kaW5nT3BlbkRCUmVxdWVzdHMu
YXBwZW5kKFdURjo6bW92ZShvcGVyYXRpb24pKTsKKyAgICBtX3BlbmRpbmdPcGVuREJSZXF1ZXN0
cy5hcHBlbmQoV1RGTW92ZShvcGVyYXRpb24pKTsKIAogICAgIC8vIEFuIG9wZW4gb3BlcmF0aW9u
IGlzIGFscmVhZHkgaW4gcHJvZ3Jlc3MsIHNvIHdlIGNhbid0IHBvc3NpYmx5IGhhbmRsZSB0aGlz
IG9uZSB5ZXQuCiAgICAgaWYgKG1faXNPcGVuaW5nQmFja2luZ1N0b3JlKQpAQCAtMTM4LDcgKzEz
OCw3IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnBlcmZvcm1DdXJyZW50T3Blbk9wZXJhdGlv
bigpCiAgICAgVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uKiByYXdDb25uZWN0aW9uID0gJmNv
bm5lY3Rpb24uZ2V0KCk7CiAKICAgICBpZiAocmVxdWVzdGVkVmVyc2lvbiA9PSBtX2RhdGFiYXNl
SW5mby0+dmVyc2lvbigpKSB7Ci0gICAgICAgIGFkZE9wZW5EYXRhYmFzZUNvbm5lY3Rpb24oV1RG
Ojptb3ZlKGNvbm5lY3Rpb24pKTsKKyAgICAgICAgYWRkT3BlbkRhdGFiYXNlQ29ubmVjdGlvbihX
VEZNb3ZlKGNvbm5lY3Rpb24pKTsKIAogICAgICAgICBhdXRvIHJlc3VsdCA9IElEQlJlc3VsdERh
dGE6Om9wZW5EYXRhYmFzZVN1Y2Nlc3MobV9jdXJyZW50T3BlbkRCUmVxdWVzdC0+cmVxdWVzdERh
dGEoKS5yZXF1ZXN0SWRlbnRpZmllcigpLCAqcmF3Q29ubmVjdGlvbik7CiAgICAgICAgIG1fY3Vy
cmVudE9wZW5EQlJlcXVlc3QtPmNvbm5lY3Rpb24oKS5kaWRPcGVuRGF0YWJhc2UocmVzdWx0KTsK
QEAgLTI5Myw3ICsyOTMsNyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpzdGFydFZlcnNpb25D
aGFuZ2VUcmFuc2FjdGlvbigpCiAgICAgQVNTRVJUKG1fY3VycmVudE9wZW5EQlJlcXVlc3QtPmlz
T3BlblJlcXVlc3QoKSk7CiAgICAgQVNTRVJUKG1fdmVyc2lvbkNoYW5nZURhdGFiYXNlQ29ubmVj
dGlvbik7CiAKLSAgICBhdXRvIG9wZXJhdGlvbiA9IFdURjo6bW92ZShtX2N1cnJlbnRPcGVuREJS
ZXF1ZXN0KTsKKyAgICBhdXRvIG9wZXJhdGlvbiA9IFdURk1vdmUobV9jdXJyZW50T3BlbkRCUmVx
dWVzdCk7CiAKICAgICB1aW50NjRfdCByZXF1ZXN0ZWRWZXJzaW9uID0gb3BlcmF0aW9uLT5yZXF1
ZXN0RGF0YSgpLnJlcXVlc3RlZFZlcnNpb24oKTsKICAgICBpZiAoIXJlcXVlc3RlZFZlcnNpb24p
CkBAIC0zNDEsNyArMzQxLDcgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6bWF5YmVOb3RpZnlD
b25uZWN0aW9uc09mVmVyc2lvbkNoYW5nZSgpCiAgICAgICAgIGNvbm5lY3Rpb25JZGVudGlmaWVy
cy5hZGQoY29ubmVjdGlvbi0+aWRlbnRpZmllcigpKTsKICAgICB9CiAKLSAgICBtX2N1cnJlbnRP
cGVuREJSZXF1ZXN0LT5ub3RpZmllZENvbm5lY3Rpb25zT2ZWZXJzaW9uQ2hhbmdlKFdURjo6bW92
ZShjb25uZWN0aW9uSWRlbnRpZmllcnMpKTsKKyAgICBtX2N1cnJlbnRPcGVuREJSZXF1ZXN0LT5u
b3RpZmllZENvbm5lY3Rpb25zT2ZWZXJzaW9uQ2hhbmdlKFdURk1vdmUoY29ubmVjdGlvbklkZW50
aWZpZXJzKSk7CiB9CiAKIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6Om5vdGlmeUN1cnJlbnRSZXF1
ZXN0Q29ubmVjdGlvbkNsb3NlZE9yRmlyZWRWZXJzaW9uQ2hhbmdlRXZlbnQodWludDY0X3QgY29u
bmVjdGlvbklkZW50aWZpZXIpCkBAIC05NzIsNyArOTcyLDcgQEAgdm9pZCBVbmlxdWVJREJEYXRh
YmFzZTo6Y29ubmVjdGlvbkNsb3NlZEZyb21DbGllbnQoVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0
aW9uJgogICAgIHdoaWxlICghbV9wZW5kaW5nVHJhbnNhY3Rpb25zLmlzRW1wdHkoKSkgewogICAg
ICAgICBhdXRvIHRyYW5zYWN0aW9uID0gbV9wZW5kaW5nVHJhbnNhY3Rpb25zLnRha2VGaXJzdCgp
OwogICAgICAgICBpZiAoJnRyYW5zYWN0aW9uLT5kYXRhYmFzZUNvbm5lY3Rpb24oKSAhPSAmY29u
bmVjdGlvbikKLSAgICAgICAgICAgIHBlbmRpbmdUcmFuc2FjdGlvbnMuYXBwZW5kKFdURjo6bW92
ZSh0cmFuc2FjdGlvbikpOworICAgICAgICAgICAgcGVuZGluZ1RyYW5zYWN0aW9ucy5hcHBlbmQo
V1RGTW92ZSh0cmFuc2FjdGlvbikpOwogICAgIH0KIAogICAgIGlmICghcGVuZGluZ1RyYW5zYWN0
aW9ucy5pc0VtcHR5KCkpCkBAIC05ODAsNyArOTgwLDcgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFz
ZTo6Y29ubmVjdGlvbkNsb3NlZEZyb21DbGllbnQoVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9u
JgogCiAgICAgYXV0byByZW1vdmVkQ29ubmVjdGlvbiA9IG1fb3BlbkRhdGFiYXNlQ29ubmVjdGlv
bnMudGFrZSgmY29ubmVjdGlvbik7CiAgICAgaWYgKHJlbW92ZWRDb25uZWN0aW9uLT5oYXNOb25G
aW5pc2hlZFRyYW5zYWN0aW9ucygpKSB7Ci0gICAgICAgIG1fY2xvc2VQZW5kaW5nRGF0YWJhc2VD
b25uZWN0aW9ucy5hZGQoV1RGOjptb3ZlKHJlbW92ZWRDb25uZWN0aW9uKSk7CisgICAgICAgIG1f
Y2xvc2VQZW5kaW5nRGF0YWJhc2VDb25uZWN0aW9ucy5hZGQoV1RGTW92ZShyZW1vdmVkQ29ubmVj
dGlvbikpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC05OTQsNyArOTk0LDcgQEAgdm9p
ZCBVbmlxdWVJREJEYXRhYmFzZTo6ZW5xdWV1ZVRyYW5zYWN0aW9uKFJlZjxVbmlxdWVJREJEYXRh
YmFzZVRyYW5zYWN0aW9uPiYmIHQKIAogICAgIEFTU0VSVCh0cmFuc2FjdGlvbi0+aW5mbygpLm1v
ZGUoKSAhPSBJbmRleGVkREI6OlRyYW5zYWN0aW9uTW9kZTo6VmVyc2lvbkNoYW5nZSk7CiAKLSAg
ICBtX3BlbmRpbmdUcmFuc2FjdGlvbnMuYXBwZW5kKFdURjo6bW92ZSh0cmFuc2FjdGlvbikpOwor
ICAgIG1fcGVuZGluZ1RyYW5zYWN0aW9ucy5hcHBlbmQoV1RGTW92ZSh0cmFuc2FjdGlvbikpOwog
CiAgICAgaW52b2tlT3BlcmF0aW9uQW5kVHJhbnNhY3Rpb25UaW1lcigpOwogfQpAQCAtMTA5Mywx
NCArMTA5MywxNCBAQCBSZWZQdHI8VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbj4gVW5pcXVl
SURCRGF0YWJhc2U6OnRha2VOZXh0UnVubmFibGVUcmFuc2FjdAogICAgICAgICAgICAgaWYgKCFk
ZWZlcnJlZFRyYW5zYWN0aW9ucy5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgICAgICBBU1NFUlQo
ZGVmZXJyZWRUcmFuc2FjdGlvbnMuZmlyc3QoKS0+aW5mbygpLm1vZGUoKSA9PSBJbmRleGVkREI6
OlRyYW5zYWN0aW9uTW9kZTo6UmVhZFdyaXRlKTsKICAgICAgICAgICAgICAgICBpZiAoc2NvcGVz
T3ZlcmxhcChkZWZlcnJlZFRyYW5zYWN0aW9ucy5maXJzdCgpLT5vYmplY3RTdG9yZUlkZW50aWZp
ZXJzKCksIGN1cnJlbnRUcmFuc2FjdGlvbi0+b2JqZWN0U3RvcmVJZGVudGlmaWVycygpKSkKLSAg
ICAgICAgICAgICAgICAgICAgZGVmZXJyZWRUcmFuc2FjdGlvbnMuYXBwZW5kKFdURjo6bW92ZShj
dXJyZW50VHJhbnNhY3Rpb24pKTsKKyAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWRUcmFuc2Fj
dGlvbnMuYXBwZW5kKFdURk1vdmUoY3VycmVudFRyYW5zYWN0aW9uKSk7CiAgICAgICAgICAgICB9
CiAKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEluZGV4ZWREQjo6VHJhbnNhY3Rp
b25Nb2RlOjpSZWFkV3JpdGU6CiAgICAgICAgICAgICAvLyBJZiB0aGlzIHJlYWQtd3JpdGUgdHJh
bnNhY3Rpb24ncyBzY29wZSBvdmVybGFwcyB3aXRoIHJ1bm5pbmcgdHJhbnNhY3Rpb25zLCBpdCBt
dXN0IGJlIGRlZmVycmVkLgogICAgICAgICAgICAgaWYgKHNjb3Blc092ZXJsYXAobV9vYmplY3RT
dG9yZVRyYW5zYWN0aW9uQ291bnRzLCBjdXJyZW50VHJhbnNhY3Rpb24tPm9iamVjdFN0b3JlSWRl
bnRpZmllcnMoKSkpCi0gICAgICAgICAgICAgICAgZGVmZXJyZWRUcmFuc2FjdGlvbnMuYXBwZW5k
KFdURjo6bW92ZShjdXJyZW50VHJhbnNhY3Rpb24pKTsKKyAgICAgICAgICAgICAgICBkZWZlcnJl
ZFRyYW5zYWN0aW9ucy5hcHBlbmQoV1RGTW92ZShjdXJyZW50VHJhbnNhY3Rpb24pKTsKIAogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgSW5kZXhlZERCOjpUcmFuc2FjdGlvbk1vZGU6
OlZlcnNpb25DaGFuZ2U6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24u
Y3BwCmluZGV4IDljYWU0MDNmMzlhYjcyZWUyYTQ4ZmY0ZGQzYzQ5Nzk5ODgxNzEwYjIuLjc1YzM2
MzdjYjBmYTYxMDNiNDRmN2EyNjYxOGEzNTJjNGZhMWVmMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9Vbmlx
dWVJREJEYXRhYmFzZUNvbm5lY3Rpb24uY3BwCkBAIC0xMTIsNyArMTEyLDcgQEAgdm9pZCBVbmlx
dWVJREJEYXRhYmFzZUNvbm5lY3Rpb246OmVzdGFibGlzaFRyYW5zYWN0aW9uKGNvbnN0IElEQlRy
YW5zYWN0aW9uSW5mbyYKIAogICAgIFJlZjxVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uPiB0
cmFuc2FjdGlvbiA9IFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb246OmNyZWF0ZSgqdGhpcywg
aW5mbyk7CiAgICAgbV90cmFuc2FjdGlvbk1hcC5zZXQodHJhbnNhY3Rpb24tPmluZm8oKS5pZGVu
dGlmaWVyKCksICZ0cmFuc2FjdGlvbi5nZXQoKSk7Ci0gICAgbV9kYXRhYmFzZS5lbnF1ZXVlVHJh
bnNhY3Rpb24oV1RGOjptb3ZlKHRyYW5zYWN0aW9uKSk7CisgICAgbV9kYXRhYmFzZS5lbnF1ZXVl
VHJhbnNhY3Rpb24oV1RGTW92ZSh0cmFuc2FjdGlvbikpOwogfQogCiB2b2lkIFVuaXF1ZUlEQkRh
dGFiYXNlQ29ubmVjdGlvbjo6ZGlkQWJvcnRUcmFuc2FjdGlvbihVbmlxdWVJREJEYXRhYmFzZVRy
YW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgY29uc3QgSURCRXJyb3ImIGVycm9yKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luZGV4S2V5LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JbmRleEtleS5jcHAKaW5k
ZXggYjE3NWY5OGU4MmE2NWM1YjBkMDI2Y2FlYzlmZThkMzk2ZDAzNTk0Ny4uYTQwZjkwMTIwZmIx
YmVlM2I2MzYxZjk3NmIwYzliNDg4OTQxNjZhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luZGV4S2V5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSW5kZXhLZXkuY3BwCkBAIC00Niw3ICs0Niw3IEBA
IEluZGV4S2V5IEluZGV4S2V5Ojppc29sYXRlZENvcHkoKSBjb25zdAogICAgIGZvciAoYXV0byYg
a2V5IDogbV9rZXlzKQogICAgICAgICBrZXlzLnVuY2hlY2tlZEFwcGVuZChrZXkuaXNvbGF0ZWRD
b3B5KCkpOwogCi0gICAgcmV0dXJuIHsgV1RGOjptb3ZlKGtleXMpIH07CisgICAgcmV0dXJuIHsg
V1RGTW92ZShrZXlzKSB9OwogfQogCiBJREJLZXlEYXRhIEluZGV4S2V5Ojphc09uZUtleSgpIGNv
bnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9XZWJN
ZWRpYVNlc3Npb25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNz
aW9uL1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwCmluZGV4IGM4ZGFlNjA5ZjEwZmE5YTdmMDY3
OTU4ZGVhMzY2YjA0NDIzZWI3MjAuLmM2ZjZlYzk2NGI3MjExMjE5N2JmZGViMWE4YTgwZTU4MmNj
YzQ1NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL1dl
Yk1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzZXNzaW9uL1dlYk1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwCkBAIC0yNDksNyArMjQ5LDcgQEAg
dm9pZCBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyOjpjbGllbnRTdGF0ZURpZENoYW5nZShXZWJNZWRp
YVNlc3Npb25NYW5hZ2VyQ2xpZW50JgogCiB2b2lkIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXI6OnNl
dFBsYXliYWNrVGFyZ2V0KFJlZjxNZWRpYVBsYXliYWNrVGFyZ2V0PiYmIHRhcmdldCkKIHsKLSAg
ICBtX3BsYXliYWNrVGFyZ2V0ID0gV1RGOjptb3ZlKHRhcmdldCk7CisgICAgbV9wbGF5YmFja1Rh
cmdldCA9IFdURk1vdmUodGFyZ2V0KTsKICAgICBtX3RhcmdldENoYW5nZWQgPSB0cnVlOwogICAg
IHNjaGVkdWxlRGVsYXllZFRhc2soVGFyZ2V0Q2xpZW50c0NvbmZpZ3VyYXRpb25UYXNrKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3Vy
Y2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5j
cHAKaW5kZXggMjRjYjBlNWViN2YyOGRkMmMzMjdkNjFjNTgyZjE3YWM4ZjBhMDNlNy4uNGUxMjU0
MzRkNmRiMDk4ZDllZWI0NGQ4ZDE2ZDQ4ODczMjFkMDQxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5jcHAKQEAgLTExNSw3ICsxMTUs
NyBAQCB2b2lkIE1lZGlhU291cmNlOjpzZXRQcml2YXRlQW5kT3BlbihSZWY8TWVkaWFTb3VyY2VQ
cml2YXRlPiYmIG1lZGlhU291cmNlUHJpdmF0ZQogewogICAgIEFTU0VSVCghbV9wcml2YXRlKTsK
ICAgICBBU1NFUlQobV9tZWRpYUVsZW1lbnQpOwotICAgIG1fcHJpdmF0ZSA9IFdURjo6bW92ZSht
ZWRpYVNvdXJjZVByaXZhdGUpOworICAgIG1fcHJpdmF0ZSA9IFdURk1vdmUobWVkaWFTb3VyY2VQ
cml2YXRlKTsKICAgICBzZXRSZWFkeVN0YXRlKG9wZW5LZXl3b3JkKCkpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHAKaW5k
ZXggOGQ2NDYxNmUxNTM1NTU1YjJlNGE4YzAyYTUzY2ZiMzFjM2ZlZmYwMy4uMzUxMzE1YjRkYTA4
MWJjYmZlNWUwYTcyZTBlYWY4ZDYwNjVhZDM2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmNwcApAQCAtMTExLDE0ICsxMTEsMTQg
QEAgc3RydWN0IFNvdXJjZUJ1ZmZlcjo6VHJhY2tCdWZmZXIgewogCiBSZWY8U291cmNlQnVmZmVy
PiBTb3VyY2VCdWZmZXI6OmNyZWF0ZShSZWY8U291cmNlQnVmZmVyUHJpdmF0ZT4mJiBzb3VyY2VC
dWZmZXJQcml2YXRlLCBNZWRpYVNvdXJjZSogc291cmNlKQogewotICAgIFJlZlB0cjxTb3VyY2VC
dWZmZXI+IHNvdXJjZUJ1ZmZlcihhZG9wdFJlZihuZXcgU291cmNlQnVmZmVyKFdURjo6bW92ZShz
b3VyY2VCdWZmZXJQcml2YXRlKSwgc291cmNlKSkpOworICAgIFJlZlB0cjxTb3VyY2VCdWZmZXI+
IHNvdXJjZUJ1ZmZlcihhZG9wdFJlZihuZXcgU291cmNlQnVmZmVyKFdURk1vdmUoc291cmNlQnVm
ZmVyUHJpdmF0ZSksIHNvdXJjZSkpKTsKICAgICBzb3VyY2VCdWZmZXItPnN1c3BlbmRJZk5lZWRl
ZCgpOwogICAgIHJldHVybiBzb3VyY2VCdWZmZXIucmVsZWFzZU5vbk51bGwoKTsKIH0KIAogU291
cmNlQnVmZmVyOjpTb3VyY2VCdWZmZXIoUmVmPFNvdXJjZUJ1ZmZlclByaXZhdGU+JiYgc291cmNl
QnVmZmVyUHJpdmF0ZSwgTWVkaWFTb3VyY2UqIHNvdXJjZSkKICAgICA6IEFjdGl2ZURPTU9iamVj
dChzb3VyY2UtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKLSAgICAsIG1fcHJpdmF0ZShXVEY6
Om1vdmUoc291cmNlQnVmZmVyUHJpdmF0ZSkpCisgICAgLCBtX3ByaXZhdGUoV1RGTW92ZShzb3Vy
Y2VCdWZmZXJQcml2YXRlKSkKICAgICAsIG1fc291cmNlKHNvdXJjZSkKICAgICAsIG1fYXN5bmNF
dmVudFF1ZXVlKCp0aGlzKQogICAgICwgbV9tb2RlKHNlZ21lbnRzS2V5d29yZCgpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXMuY3BwCmlu
ZGV4IDA1NzM2NzgyMDc4ODMzOThkNTExMjdlZTA3YzQ1OWQxMzYzM2VkZTQuLmY2ZWJlZDVhZDUy
NTUyMDNkNTYwMWU5M2Y4NjQ3NDJhYmMxM2Q5N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlcy5jcHAKQEAgLTY1LDEyICs2NSwxMiBA
QCBEb2N1bWVudCogTWVkaWFEZXZpY2VzOjpkb2N1bWVudCgpIGNvbnN0CiAKIHZvaWQgTWVkaWFE
ZXZpY2VzOjpnZXRVc2VyTWVkaWEoY29uc3QgRGljdGlvbmFyeSYgb3B0aW9ucywgUHJvbWlzZSYm
IHByb21pc2UsIEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAogewotICAgIFVzZXJNZWRpYVJlcXVl
c3Q6OnN0YXJ0KGRvY3VtZW50KCksIG9wdGlvbnMsIFdURjo6bW92ZShwcm9taXNlKSwgZWMpOwor
ICAgIFVzZXJNZWRpYVJlcXVlc3Q6OnN0YXJ0KGRvY3VtZW50KCksIG9wdGlvbnMsIFdURk1vdmUo
cHJvbWlzZSksIGVjKTsKIH0KIAogdm9pZCBNZWRpYURldmljZXM6OmVudW1lcmF0ZURldmljZXMo
RW51bWVyYXRlRGV2aWNlc1Byb21pc2UmJiBwcm9taXNlLCBFeGNlcHRpb25Db2RlJiBlYykgY29u
c3QKIHsKLSAgICBSZWZQdHI8TWVkaWFEZXZpY2VzUmVxdWVzdD4gcmVxdWVzdCA9IE1lZGlhRGV2
aWNlc1JlcXVlc3Q6OmNyZWF0ZShkb2N1bWVudCgpLCBXVEY6Om1vdmUocHJvbWlzZSksIGVjKTsK
KyAgICBSZWZQdHI8TWVkaWFEZXZpY2VzUmVxdWVzdD4gcmVxdWVzdCA9IE1lZGlhRGV2aWNlc1Jl
cXVlc3Q6OmNyZWF0ZShkb2N1bWVudCgpLCBXVEZNb3ZlKHByb21pc2UpLCBlYyk7CiAgICAgaWYg
KHJlcXVlc3QpCiAgICAgICAgIHJlcXVlc3QtPnN0YXJ0KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlc1JlcXVlc3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXNSZXF1ZXN0LmNw
cAppbmRleCBjNmEyMDg2ODJhN2NmMDYxNGY5MjQ5YzljZGJhMTA3ZDlkMDQ4OWExLi5hZDNiNWYw
NjllNGQ5ZWY3NTI1NDFkMDVhMzdhMmMzODRiNzFkZjFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlc1JlcXVlc3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzUmVxdWVzdC5jcHAK
QEAgLTQxLDEyICs0MSwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFJlZlB0cjxNZWRpYURl
dmljZXNSZXF1ZXN0PiBNZWRpYURldmljZXNSZXF1ZXN0OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3Vt
ZW50LCBNZWRpYURldmljZXM6OkVudW1lcmF0ZURldmljZXNQcm9taXNlJiYgcHJvbWlzZSwgRXhj
ZXB0aW9uQ29kZSYpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVkaWFEZXZpY2VzUmVx
dWVzdChkb2N1bWVudCwgV1RGOjptb3ZlKHByb21pc2UpKSk7CisgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgTWVkaWFEZXZpY2VzUmVxdWVzdChkb2N1bWVudCwgV1RGTW92ZShwcm9taXNlKSkpOwog
fQogCiBNZWRpYURldmljZXNSZXF1ZXN0OjpNZWRpYURldmljZXNSZXF1ZXN0KFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQsIE1lZGlhRGV2aWNlczo6RW51bWVyYXRlRGV2aWNlc1Byb21p
c2UmJiBwcm9taXNlKQogICAgIDogQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIoY29udGV4dCkK
LSAgICAsIG1fcHJvbWlzZShXVEY6Om1vdmUocHJvbWlzZSkpCisgICAgLCBtX3Byb21pc2UoV1RG
TW92ZShwcm9taXNlKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNwcAppbmRleCAyZDc0ODliYTEyZWE3YjA1N2NmMjk4OTcz
NThiNzhmNTg4M2I3MTEwLi4xNmJhMzg5ZDgxMDRiNzljNTU4ZDJkMzFkYzI4NmNkNThlMjVjMjg3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3Ry
ZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3Ry
ZWFtLmNwcApAQCAtNjAsNyArNjAsNyBAQCBSZWY8TWVkaWFTdHJlYW0+IE1lZGlhU3RyZWFtOjpj
cmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgTWVkaQogCiBSZWY8
TWVkaWFTdHJlYW0+IE1lZGlhU3RyZWFtOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
Y29udGV4dCwgUmVmUHRyPE1lZGlhU3RyZWFtUHJpdmF0ZT4mJiBzdHJlYW1Qcml2YXRlKQogewot
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1lZGlhU3RyZWFtKGNvbnRleHQsIFdURjo6bW92ZShz
dHJlYW1Qcml2YXRlKSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1lZGlhU3RyZWFtKGNv
bnRleHQsIFdURk1vdmUoc3RyZWFtUHJpdmF0ZSkpKTsKIH0KIAogTWVkaWFTdHJlYW06Ok1lZGlh
U3RyZWFtKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IE1lZGlhU3RyZWFt
VHJhY2tWZWN0b3ImIHRyYWNrcykKQEAgLTk3LDcgKzk3LDcgQEAgTWVkaWFTdHJlYW06Ok1lZGlh
U3RyZWFtKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFJlZlB0cjxNZWRpYVN0cmVh
bVByaXYKICAgICBmb3IgKGF1dG8mIHRyYWNrUHJpdmF0ZSA6IG1fcHJpdmF0ZS0+dHJhY2tzKCkp
IHsKICAgICAgICAgUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+IHRyYWNrID0gTWVkaWFTdHJlYW1U
cmFjazo6Y3JlYXRlKGNvbnRleHQsICp0cmFja1ByaXZhdGUpOwogICAgICAgICB0cmFjay0+YWRk
T2JzZXJ2ZXIodGhpcyk7Ci0gICAgICAgIG1fdHJhY2tTZXQuYWRkKHRyYWNrLT5pZCgpLCBXVEY6
Om1vdmUodHJhY2spKTsKKyAgICAgICAgbV90cmFja1NldC5hZGQodHJhY2stPmlkKCksIFdURk1v
dmUodHJhY2spKTsKICAgICB9CiB9CiAKQEAgLTEyMiw3ICsxMjIsNyBAQCBSZWZQdHI8TWVkaWFT
dHJlYW0+IE1lZGlhU3RyZWFtOjpjbG9uZSgpCiAKIHZvaWQgTWVkaWFTdHJlYW06OmFkZFRyYWNr
KFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiYmIHRyYWNrKQogewotICAgIGlmICghaW50ZXJuYWxB
ZGRUcmFjayhXVEY6Om1vdmUodHJhY2spLCBTdHJlYW1Nb2RpZmllcjo6RG9tQVBJKSkKKyAgICBp
ZiAoIWludGVybmFsQWRkVHJhY2soV1RGTW92ZSh0cmFjayksIFN0cmVhbU1vZGlmaWVyOjpEb21B
UEkpKQogICAgICAgICByZXR1cm47CiAKICAgICBmb3IgKGF1dG8mIG9ic2VydmVyIDogbV9vYnNl
cnZlcnMpCkBAIC0xOTcsNyArMTk3LDcgQEAgdm9pZCBNZWRpYVN0cmVhbTo6ZGlkUmVtb3ZlVHJh
Y2soTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmIHRyYWNrUHJpdmF0ZSkKIHsKICAgICBSZWZQdHI8
TWVkaWFTdHJlYW1UcmFjaz4gdHJhY2sgPSBnZXRUcmFja0J5SWQodHJhY2tQcml2YXRlLmlkKCkp
OwogICAgIEFTU0VSVCh0cmFjayk7Ci0gICAgaW50ZXJuYWxSZW1vdmVUcmFjayhXVEY6Om1vdmUo
dHJhY2spLCBTdHJlYW1Nb2RpZmllcjo6UGxhdGZvcm0pOworICAgIGludGVybmFsUmVtb3ZlVHJh
Y2soV1RGTW92ZSh0cmFjayksIFN0cmVhbU1vZGlmaWVyOjpQbGF0Zm9ybSk7CiB9CiAKIGJvb2wg
TWVkaWFTdHJlYW06OmludGVybmFsQWRkVHJhY2soUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+JiYg
dHJhY2ssIFN0cmVhbU1vZGlmaWVyIHN0cmVhbU1vZGlmaWVyKQpAQCAtMjExLDcgKzIxMSw3IEBA
IGJvb2wgTWVkaWFTdHJlYW06OmludGVybmFsQWRkVHJhY2soUmVmUHRyPE1lZGlhU3RyZWFtVHJh
Y2s+JiYgdHJhY2ssIFN0cmVhbU1vZGlmCiAgICAgaWYgKHN0cmVhbU1vZGlmaWVyID09IFN0cmVh
bU1vZGlmaWVyOjpEb21BUEkpCiAgICAgICAgIG1fcHJpdmF0ZS0+YWRkVHJhY2soJnRyYWNrLT5w
cml2YXRlVHJhY2soKSwgTWVkaWFTdHJlYW1Qcml2YXRlOjpOb3RpZnlDbGllbnRPcHRpb246OkRv
bnROb3RpZnkpOwogICAgIGVsc2UKLSAgICAgICAgZGlzcGF0Y2hFdmVudChNZWRpYVN0cmVhbVRy
YWNrRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuYWRkdHJhY2tFdmVudCwgZmFsc2UsIGZhbHNl
LCBXVEY6Om1vdmUodHJhY2spKSk7CisgICAgICAgIGRpc3BhdGNoRXZlbnQoTWVkaWFTdHJlYW1U
cmFja0V2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmFkZHRyYWNrRXZlbnQsIGZhbHNlLCBmYWxz
ZSwgV1RGTW92ZSh0cmFjaykpKTsKIAogICAgIHJldHVybiB0cnVlOwogfQpAQCAtMjI2LDcgKzIy
Niw3IEBAIGJvb2wgTWVkaWFTdHJlYW06OmludGVybmFsUmVtb3ZlVHJhY2soUmVmUHRyPE1lZGlh
U3RyZWFtVHJhY2s+JiYgdHJhY2ssIFN0cmVhbU1vCiAgICAgaWYgKHN0cmVhbU1vZGlmaWVyID09
IFN0cmVhbU1vZGlmaWVyOjpEb21BUEkpCiAgICAgICAgIG1fcHJpdmF0ZS0+cmVtb3ZlVHJhY2so
dHJhY2stPnByaXZhdGVUcmFjaygpLCBNZWRpYVN0cmVhbVByaXZhdGU6Ok5vdGlmeUNsaWVudE9w
dGlvbjo6RG9udE5vdGlmeSk7CiAgICAgZWxzZQotICAgICAgICBkaXNwYXRjaEV2ZW50KE1lZGlh
U3RyZWFtVHJhY2tFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5yZW1vdmV0cmFja0V2ZW50LCBm
YWxzZSwgZmFsc2UsIFdURjo6bW92ZSh0cmFjaykpKTsKKyAgICAgICAgZGlzcGF0Y2hFdmVudChN
ZWRpYVN0cmVhbVRyYWNrRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkucmVtb3ZldHJhY2tFdmVu
dCwgZmFsc2UsIGZhbHNlLCBXVEZNb3ZlKHRyYWNrKSkpOwogCiAgICAgcmV0dXJuIHRydWU7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL05hdmlnYXRv
ck1lZGlhRGV2aWNlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL05h
dmlnYXRvck1lZGlhRGV2aWNlcy5jcHAKaW5kZXggM2FlZWI0Nzc3NjgyN2UzMDMzZWIzNDQ1OTIy
NzlmNmViMDY3ZmI1OC4uNTY4MTA4MzM3MWExNjQyOGE0ODg3YmEwYmQ4OWMwMzRkNjQ3MGUxYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JN
ZWRpYURldmljZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
TmF2aWdhdG9yTWVkaWFEZXZpY2VzLmNwcApAQCAtNTUsNyArNTUsNyBAQCBOYXZpZ2F0b3JNZWRp
YURldmljZXMqIE5hdmlnYXRvck1lZGlhRGV2aWNlczo6ZnJvbShOYXZpZ2F0b3IqIG5hdmlnYXRv
cikKICAgICBpZiAoIXN1cHBsZW1lbnQpIHsKICAgICAgICAgYXV0byBuZXdTdXBwbGVtZW50ID0g
c3RkOjptYWtlX3VuaXF1ZTxOYXZpZ2F0b3JNZWRpYURldmljZXM+KG5hdmlnYXRvci0+ZnJhbWUo
KSk7CiAgICAgICAgIHN1cHBsZW1lbnQgPSBuZXdTdXBwbGVtZW50LmdldCgpOwotICAgICAgICBw
cm92aWRlVG8obmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpLCBXVEY6Om1vdmUobmV3U3VwcGxl
bWVudCkpOworICAgICAgICBwcm92aWRlVG8obmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpLCBX
VEZNb3ZlKG5ld1N1cHBsZW1lbnQpKTsKICAgICB9CiAgICAgcmV0dXJuIHN1cHBsZW1lbnQ7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0NvbmZp
Z3VyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENDb25m
aWd1cmF0aW9uLmNwcAppbmRleCBjMTZiYjNmY2M0YTcwZmJiMDQ1OGQ1OTM4NGQ3NTJiYzc0ZTc4
NjJkLi4zOTNjMGExZGNhYmE1NDdlMjQxNGRkYjAzNGUzYzg1OTcyMzY4MTAzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0NvbmZpZ3VyYXRpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDQ29uZmlndXJhdGlv
bi5jcHAKQEAgLTEzOCw3ICsxMzgsNyBAQCB2b2lkIFJUQ0NvbmZpZ3VyYXRpb246OmluaXRpYWxp
emUoY29uc3QgRGljdGlvbmFyeSYgY29uZmlndXJhdGlvbiwgRXhjZXB0aW9uQ29kZQogICAgICAg
ICBpZiAoIWljZVNlcnZlcikKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBtX2ljZVNl
cnZlcnMuYXBwZW5kKFdURjo6bW92ZShpY2VTZXJ2ZXIpKTsKKyAgICAgICAgbV9pY2VTZXJ2ZXJz
LmFwcGVuZChXVEZNb3ZlKGljZVNlcnZlcikpOwogICAgIH0KIAogICAgIFN0cmluZyBpY2VUcmFu
c3BvcnRQb2xpY3k7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ0RUTUZTZW5kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENEVE1GU2VuZGVyLmNwcAppbmRleCBjYzIwNGYzYWQ3OWZiMGNkNzMwYzUzOTZhZmZkMWZh
MTQ2NGNkOTFhLi5kZjkzNWY1YTI5MjI2MzhiZjdkODIxZjkwMzFmOTYwNDZjMzViMGVhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RUTUZTZW5kZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRFRNRlNlbmRl
ci5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgUmVmUHRyPFJUQ0RUTUZTZW5kZXI+IFJUQ0RUTUZTZW5k
ZXI6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBSVEMKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgUmVmUHRyPFJUQ0RUTUZTZW5kZXI+IGR0bWZT
ZW5kZXIgPSBhZG9wdFJlZihuZXcgUlRDRFRNRlNlbmRlcihjb250ZXh0LCB0cmFjaywgV1RGOjpt
b3ZlKGhhbmRsZXIpKSk7CisgICAgUmVmUHRyPFJUQ0RUTUZTZW5kZXI+IGR0bWZTZW5kZXIgPSBh
ZG9wdFJlZihuZXcgUlRDRFRNRlNlbmRlcihjb250ZXh0LCB0cmFjaywgV1RGTW92ZShoYW5kbGVy
KSkpOwogICAgIGR0bWZTZW5kZXItPnN1c3BlbmRJZk5lZWRlZCgpOwogICAgIHJldHVybiBkdG1m
U2VuZGVyOwogfQpAQCAtNjMsNyArNjMsNyBAQCBSVENEVE1GU2VuZGVyOjpSVENEVE1GU2VuZGVy
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8TWVkaWFTdAogICAg
ICwgbV90cmFjayh0cmFjaykKICAgICAsIG1fZHVyYXRpb24oZGVmYXVsdFRvbmVEdXJhdGlvbk1z
KQogICAgICwgbV9pbnRlclRvbmVHYXAoZGVmYXVsdEludGVyVG9uZUdhcE1zKQotICAgICwgbV9o
YW5kbGVyKFdURjo6bW92ZShoYW5kbGVyKSkKKyAgICAsIG1faGFuZGxlcihXVEZNb3ZlKGhhbmRs
ZXIpKQogICAgICwgbV9zdG9wcGVkKGZhbHNlKQogICAgICwgbV9zY2hlZHVsZWRFdmVudFRpbWVy
KCp0aGlzLCAmUlRDRFRNRlNlbmRlcjo6c2NoZWR1bGVkRXZlbnRUaW1lckZpcmVkKQogewpAQCAt
MTQ3LDcgKzE0Nyw3IEBAIGJvb2wgUlRDRFRNRlNlbmRlcjo6Y2FuU3VzcGVuZEZvckRvY3VtZW50
U3VzcGVuc2lvbigpIGNvbnN0CiAKIHZvaWQgUlRDRFRNRlNlbmRlcjo6c2NoZWR1bGVEaXNwYXRj
aEV2ZW50KFJlZjxFdmVudD4mJiBldmVudCkKIHsKLSAgICBtX3NjaGVkdWxlZEV2ZW50cy5hcHBl
bmQoV1RGOjptb3ZlKGV2ZW50KSk7CisgICAgbV9zY2hlZHVsZWRFdmVudHMuYXBwZW5kKFdURk1v
dmUoZXZlbnQpKTsKIAogICAgIGlmICghbV9zY2hlZHVsZWRFdmVudFRpbWVyLmlzQWN0aXZlKCkp
CiAgICAgICAgIG1fc2NoZWR1bGVkRXZlbnRUaW1lci5zdGFydE9uZVNob3QoMCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwuY3Bw
CmluZGV4IDU1ZjUwODYxNjg2YzFkNmVhYmQyMDUzNDBlZDM4MzVhNjgyNWE0MjQuLjRiZTBjNTg2
NTg1ZmE2NmI3OWEzZTI4NGMxMjEzNWI2MmQxNTEwMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwuY3BwCkBAIC04MCwxOCAr
ODAsMTggQEAgUmVmUHRyPFJUQ0RhdGFDaGFubmVsPiBSVENEYXRhQ2hhbm5lbDo6Y3JlYXRlKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFIKICAgICAgICAgZWMgPSBOT1RfU1VQUE9S
VEVEX0VSUjsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFJUQ0RhdGFDaGFubmVsKGNvbnRleHQsIFdURjo6bW92ZShoYW5kbGVyKSkpOwor
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJUQ0RhdGFDaGFubmVsKGNvbnRleHQsIFdURk1vdmUo
aGFuZGxlcikpKTsKIH0KIAogUmVmPFJUQ0RhdGFDaGFubmVsPiBSVENEYXRhQ2hhbm5lbDo6Y3Jl
YXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIHN0ZDo6dW5pcXVlX3B0cjxSVENE
YXRhQ2hhbm5lbEhhbmRsZXI+IGhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKGhhbmRsZXIpOwotICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFJUQ0RhdGFDaGFubmVsKGNvbnRleHQsIFdURjo6bW92ZSho
YW5kbGVyKSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJUQ0RhdGFDaGFubmVsKGNvbnRl
eHQsIFdURk1vdmUoaGFuZGxlcikpKTsKIH0KIAogUlRDRGF0YUNoYW5uZWw6OlJUQ0RhdGFDaGFu
bmVsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIHN0ZDo6dW5pcXVlX3B0cjxSVENE
YXRhQ2hhbm5lbEhhbmRsZXI+IGhhbmRsZXIpCiAgICAgOiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoY29udGV4dCkKLSAgICAsIG1faGFuZGxlcihXVEY6Om1vdmUoaGFuZGxlcikpCisgICAgLCBt
X2hhbmRsZXIoV1RGTW92ZShoYW5kbGVyKSkKICAgICAsIG1fc3RvcHBlZChmYWxzZSkKICAgICAs
IG1fcmVhZHlTdGF0ZShSZWFkeVN0YXRlQ29ubmVjdGluZykKICAgICAsIG1fYmluYXJ5VHlwZShC
aW5hcnlUeXBlQXJyYXlCdWZmZXIpCkBAIC0zMDYsNyArMzA2LDcgQEAgdm9pZCBSVENEYXRhQ2hh
bm5lbDo6c3RvcCgpCiAKIHZvaWQgUlRDRGF0YUNoYW5uZWw6OnNjaGVkdWxlRGlzcGF0Y2hFdmVu
dChSZWY8RXZlbnQ+JiYgZXZlbnQpCiB7Ci0gICAgbV9zY2hlZHVsZWRFdmVudHMuYXBwZW5kKFdU
Rjo6bW92ZShldmVudCkpOworICAgIG1fc2NoZWR1bGVkRXZlbnRzLmFwcGVuZChXVEZNb3ZlKGV2
ZW50KSk7CiAKICAgICBpZiAoIW1fc2NoZWR1bGVkRXZlbnRUaW1lci5pc0FjdGl2ZSgpKQogICAg
ICAgICBtX3NjaGVkdWxlZEV2ZW50VGltZXIuc3RhcnRPbmVTaG90KDApOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENJY2VDYW5kaWRhdGVFdmVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0ljZUNhbmRpZGF0ZUV2
ZW50LmNwcAppbmRleCBiNThkZGY3YjYyZjcyNmE0MzZiYWIyYmE2YzdiZDNlZjA2ZmUyMDUxLi4z
MzMxNDFjYTA5MDczNDg3OGJhOTNiZjA3NTc2YWNiNWM1MzZjMzBlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0ljZUNhbmRpZGF0ZUV2ZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0ljZUNhbmRpZGF0ZUV2
ZW50LmNwcApAQCAtNDAsNyArNDAsNyBAQCBSZWY8UlRDSWNlQ2FuZGlkYXRlRXZlbnQ+IFJUQ0lj
ZUNhbmRpZGF0ZUV2ZW50OjpjcmVhdGUoKQogCiBSZWY8UlRDSWNlQ2FuZGlkYXRlRXZlbnQ+IFJU
Q0ljZUNhbmRpZGF0ZUV2ZW50OjpjcmVhdGUoYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJs
ZSwgUmVmUHRyPFJUQ0ljZUNhbmRpZGF0ZT4mJiBjYW5kaWRhdGUpCiB7Ci0gICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgUlRDSWNlQ2FuZGlkYXRlRXZlbnQoY2FuQnViYmxlLCBjYW5jZWxhYmxlLCBX
VEY6Om1vdmUoY2FuZGlkYXRlKSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJUQ0ljZUNh
bmRpZGF0ZUV2ZW50KGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgV1RGTW92ZShjYW5kaWRhdGUpKSk7
CiB9CiAKIFJUQ0ljZUNhbmRpZGF0ZUV2ZW50OjpSVENJY2VDYW5kaWRhdGVFdmVudCgpCkBAIC00
OSw3ICs0OSw3IEBAIFJUQ0ljZUNhbmRpZGF0ZUV2ZW50OjpSVENJY2VDYW5kaWRhdGVFdmVudCgp
CiAKIFJUQ0ljZUNhbmRpZGF0ZUV2ZW50OjpSVENJY2VDYW5kaWRhdGVFdmVudChib29sIGNhbkJ1
YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8UlRDSWNlQ2FuZGlkYXRlPiYmIGNhbmRpZGF0
ZSkKICAgICA6IEV2ZW50KGV2ZW50TmFtZXMoKS5pY2VjYW5kaWRhdGVFdmVudCwgY2FuQnViYmxl
LCBjYW5jZWxhYmxlKQotICAgICwgbV9jYW5kaWRhdGUoV1RGOjptb3ZlKGNhbmRpZGF0ZSkpCisg
ICAgLCBtX2NhbmRpZGF0ZShXVEZNb3ZlKGNhbmRpZGF0ZSkpCiB7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5j
cHAKaW5kZXggMDM1MmIwMTE2YzcwZDdiZWYyODM1NWMyNzJmNTlhNTA5YTE2NDM4Yi4uMjEyMmFh
YTM0MDE3NmUzOTIyYmFjY2ZjMzQxNmM4ZTdmZjYyNTE0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHAKQEAg
LTY3LDcgKzY3LDcgQEAgUmVmUHRyPFJUQ1BlZXJDb25uZWN0aW9uPiBSVENQZWVyQ29ubmVjdGlv
bjo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnQKICAgICBpZiAoZWMpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCi0gICAgUmVmUHRyPFJUQ1BlZXJDb25uZWN0aW9uPiBwZWVy
Q29ubmVjdGlvbiA9IGFkb3B0UmVmKG5ldyBSVENQZWVyQ29ubmVjdGlvbihjb250ZXh0LCBXVEY6
Om1vdmUoY29uZmlndXJhdGlvbiksIGVjKSk7CisgICAgUmVmUHRyPFJUQ1BlZXJDb25uZWN0aW9u
PiBwZWVyQ29ubmVjdGlvbiA9IGFkb3B0UmVmKG5ldyBSVENQZWVyQ29ubmVjdGlvbihjb250ZXh0
LCBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pLCBlYykpOwogICAgIHBlZXJDb25uZWN0aW9uLT5zdXNw
ZW5kSWZOZWVkZWQoKTsKICAgICBpZiAoZWMpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAt
ODAsNyArODAsNyBAQCBSVENQZWVyQ29ubmVjdGlvbjo6UlRDUGVlckNvbm5lY3Rpb24oU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgUmVmUHRyPFJUQwogICAgICwgbV9zaWduYWxpbmdT
dGF0ZShTaWduYWxpbmdTdGF0ZTo6U3RhYmxlKQogICAgICwgbV9pY2VHYXRoZXJpbmdTdGF0ZShJ
Y2VHYXRoZXJpbmdTdGF0ZTo6TmV3KQogICAgICwgbV9pY2VDb25uZWN0aW9uU3RhdGUoSWNlQ29u
bmVjdGlvblN0YXRlOjpOZXcpCi0gICAgLCBtX2NvbmZpZ3VyYXRpb24oV1RGOjptb3ZlKGNvbmZp
Z3VyYXRpb24pKQorICAgICwgbV9jb25maWd1cmF0aW9uKFdURk1vdmUoY29uZmlndXJhdGlvbikp
CiAgICAgLCBtX3N0b3BwZWQoZmFsc2UpCiB7CiAgICAgRG9jdW1lbnQmIGRvY3VtZW50ID0gZG93
bmNhc3Q8RG9jdW1lbnQ+KGNvbnRleHQpOwpAQCAtMTQ3LDcgKzE0Nyw3IEBAIFJlZlB0cjxSVENS
dHBTZW5kZXI+IFJUQ1BlZXJDb25uZWN0aW9uOjphZGRUcmFjayhSZWZQdHI8TWVkaWFTdHJlYW1U
cmFjaz4mJiB0cmFjCiAgICAgfQogCiAgICAgY29uc3QgU3RyaW5nJiB0cmFja0lkID0gdHJhY2st
PmlkKCk7Ci0gICAgUmVmUHRyPFJUQ1J0cFNlbmRlcj4gc2VuZGVyID0gUlRDUnRwU2VuZGVyOjpj
cmVhdGUoV1RGOjptb3ZlKHRyYWNrKSwgc3RyZWFtc1swXS0+aWQoKSk7CisgICAgUmVmUHRyPFJU
Q1J0cFNlbmRlcj4gc2VuZGVyID0gUlRDUnRwU2VuZGVyOjpjcmVhdGUoV1RGTW92ZSh0cmFjayks
IHN0cmVhbXNbMF0tPmlkKCkpOwogICAgIG1fc2VuZGVyU2V0LmFkZCh0cmFja0lkLCBzZW5kZXIp
OwogCiAgICAgbV9iYWNrZW5kLT5tYXJrQXNOZWVkaW5nTmVnb3RpYXRpb24oKTsKQEAgLTE4OCw3
ICsxODgsNyBAQCB2b2lkIFJUQ1BlZXJDb25uZWN0aW9uOjpxdWV1ZWRDcmVhdGVPZmZlcihjb25z
dCBEaWN0aW9uYXJ5JiBvZmZlck9wdGlvbnMsIFNlc3NpbwogICAgIH0KICAgICBBU1NFUlQob3B0
aW9ucyk7CiAKLSAgICBtX2JhY2tlbmQtPmNyZWF0ZU9mZmVyKCpvcHRpb25zLCBXVEY6Om1vdmUo
cHJvbWlzZSkpOworICAgIG1fYmFja2VuZC0+Y3JlYXRlT2ZmZXIoKm9wdGlvbnMsIFdURk1vdmUo
cHJvbWlzZSkpOwogfQogCiB2b2lkIFJUQ1BlZXJDb25uZWN0aW9uOjpxdWV1ZWRDcmVhdGVBbnN3
ZXIoY29uc3QgRGljdGlvbmFyeSYgYW5zd2VyT3B0aW9ucywgU2Vzc2lvbkRlc2NyaXB0aW9uUHJv
bWlzZSYmIHByb21pc2UpCkBAIC0yMDUsNyArMjA1LDcgQEAgdm9pZCBSVENQZWVyQ29ubmVjdGlv
bjo6cXVldWVkQ3JlYXRlQW5zd2VyKGNvbnN0IERpY3Rpb25hcnkmIGFuc3dlck9wdGlvbnMsIFNl
c3MKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fYmFja2VuZC0+Y3JlYXRlQW5zd2Vy
KCpvcHRpb25zLCBXVEY6Om1vdmUocHJvbWlzZSkpOworICAgIG1fYmFja2VuZC0+Y3JlYXRlQW5z
d2VyKCpvcHRpb25zLCBXVEZNb3ZlKHByb21pc2UpKTsKIH0KIAogdm9pZCBSVENQZWVyQ29ubmVj
dGlvbjo6cXVldWVkU2V0TG9jYWxEZXNjcmlwdGlvbihSVENTZXNzaW9uRGVzY3JpcHRpb24qIGRl
c2NyaXB0aW9uLCBQZWVyQ29ubmVjdGlvbjo6Vm9pZFByb21pc2UmJiBwcm9taXNlKQpAQCAtMjE2
LDcgKzIxNiw3IEBAIHZvaWQgUlRDUGVlckNvbm5lY3Rpb246OnF1ZXVlZFNldExvY2FsRGVzY3Jp
cHRpb24oUlRDU2Vzc2lvbkRlc2NyaXB0aW9uKiBkZXNjcmlwCiAgICAgfQogCiAgICAgQVNTRVJU
KGRlc2NyaXB0aW9uKTsKLSAgICBtX2JhY2tlbmQtPnNldExvY2FsRGVzY3JpcHRpb24oKmRlc2Ny
aXB0aW9uLCBXVEY6Om1vdmUocHJvbWlzZSkpOworICAgIG1fYmFja2VuZC0+c2V0TG9jYWxEZXNj
cmlwdGlvbigqZGVzY3JpcHRpb24sIFdURk1vdmUocHJvbWlzZSkpOwogfQogCiBSZWZQdHI8UlRD
U2Vzc2lvbkRlc2NyaXB0aW9uPiBSVENQZWVyQ29ubmVjdGlvbjo6bG9jYWxEZXNjcmlwdGlvbigp
IGNvbnN0CkBAIC0yNDIsNyArMjQyLDcgQEAgdm9pZCBSVENQZWVyQ29ubmVjdGlvbjo6cXVldWVk
U2V0UmVtb3RlRGVzY3JpcHRpb24oUlRDU2Vzc2lvbkRlc2NyaXB0aW9uKiBkZXNjcmkKICAgICB9
CiAKICAgICBBU1NFUlQoZGVzY3JpcHRpb24pOwotICAgIG1fYmFja2VuZC0+c2V0UmVtb3RlRGVz
Y3JpcHRpb24oKmRlc2NyaXB0aW9uLCBXVEY6Om1vdmUocHJvbWlzZSkpOworICAgIG1fYmFja2Vu
ZC0+c2V0UmVtb3RlRGVzY3JpcHRpb24oKmRlc2NyaXB0aW9uLCBXVEZNb3ZlKHByb21pc2UpKTsK
IH0KIAogUmVmUHRyPFJUQ1Nlc3Npb25EZXNjcmlwdGlvbj4gUlRDUGVlckNvbm5lY3Rpb246OnJl
bW90ZURlc2NyaXB0aW9uKCkgY29uc3QKQEAgLTI2OCw3ICsyNjgsNyBAQCB2b2lkIFJUQ1BlZXJD
b25uZWN0aW9uOjpxdWV1ZWRBZGRJY2VDYW5kaWRhdGUoUlRDSWNlQ2FuZGlkYXRlKiBydGNDYW5k
aWRhdGUsIFZvaQogICAgIH0KIAogICAgIEFTU0VSVChydGNDYW5kaWRhdGUpOwotICAgIG1fYmFj
a2VuZC0+YWRkSWNlQ2FuZGlkYXRlKCpydGNDYW5kaWRhdGUsIFdURjo6bW92ZShwcm9taXNlKSk7
CisgICAgbV9iYWNrZW5kLT5hZGRJY2VDYW5kaWRhdGUoKnJ0Y0NhbmRpZGF0ZSwgV1RGTW92ZShw
cm9taXNlKSk7CiB9CiAKIFN0cmluZyBSVENQZWVyQ29ubmVjdGlvbjo6c2lnbmFsaW5nU3RhdGUo
KSBjb25zdApAQCAtMzUxLDE4ICszNTEsMTggQEAgdm9pZCBSVENQZWVyQ29ubmVjdGlvbjo6c2V0
Q29uZmlndXJhdGlvbihjb25zdCBEaWN0aW9uYXJ5JiBjb25maWd1cmF0aW9uLCBFeGNlcHQKICAg
ICBpZiAoZWMpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fY29uZmlndXJhdGlvbiA9IFdURjo6
bW92ZShuZXdDb25maWd1cmF0aW9uKTsKKyAgICBtX2NvbmZpZ3VyYXRpb24gPSBXVEZNb3ZlKG5l
d0NvbmZpZ3VyYXRpb24pOwogICAgIG1fYmFja2VuZC0+c2V0Q29uZmlndXJhdGlvbigqbV9jb25m
aWd1cmF0aW9uKTsKIH0KIAogdm9pZCBSVENQZWVyQ29ubmVjdGlvbjo6cHJpdmF0ZUdldFN0YXRz
KE1lZGlhU3RyZWFtVHJhY2sqIHNlbGVjdG9yLCBQZWVyQ29ubmVjdGlvbjo6U3RhdHNQcm9taXNl
JiYgcHJvbWlzZSkKIHsKLSAgICBtX2JhY2tlbmQtPmdldFN0YXRzKHNlbGVjdG9yLCBXVEY6Om1v
dmUocHJvbWlzZSkpOworICAgIG1fYmFja2VuZC0+Z2V0U3RhdHMoc2VsZWN0b3IsIFdURk1vdmUo
cHJvbWlzZSkpOwogfQogCiB2b2lkIFJUQ1BlZXJDb25uZWN0aW9uOjpwcml2YXRlR2V0U3RhdHMo
UGVlckNvbm5lY3Rpb246OlN0YXRzUHJvbWlzZSYmIHByb21pc2UpCiB7Ci0gICAgcHJpdmF0ZUdl
dFN0YXRzKG51bGxwdHIsIFdURjo6bW92ZShwcm9taXNlKSk7CisgICAgcHJpdmF0ZUdldFN0YXRz
KG51bGxwdHIsIFdURk1vdmUocHJvbWlzZSkpOwogfQogCiBSZWZQdHI8UlRDRGF0YUNoYW5uZWw+
IFJUQ1BlZXJDb25uZWN0aW9uOjpjcmVhdGVEYXRhQ2hhbm5lbChTdHJpbmcsIGNvbnN0IERpY3Rp
b25hcnkmLCBFeGNlcHRpb25Db2RlJiBlYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwUmVjZWl2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZlci5jcHAKaW5kZXggMDY5MmJlMjU0MjViYTYx
MGUxNGUxMDhmZGY0N2NjODdmMjIwNTEwZC4uMjNlYmEzMWY2ZDYyZWQ5YWI2M2JmMDgwOWZjMDlk
Mzc5Y2Y5ZGE2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENSdHBSZWNlaXZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENSdHBSZWNlaXZlci5jcHAKQEAgLTM2LDcgKzM2LDcgQEAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogUlRDUnRwUmVjZWl2ZXI6OlJUQ1J0cFJlY2VpdmVyKFJlZlB0cjxNZWRpYVN0cmVh
bVRyYWNrPiYmIHRyYWNrKQotICAgIDogUlRDUnRwU2VuZGVyUmVjZWl2ZXJCYXNlKFdURjo6bW92
ZSh0cmFjaykpCisgICAgOiBSVENSdHBTZW5kZXJSZWNlaXZlckJhc2UoV1RGTW92ZSh0cmFjaykp
CiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDUnRwUmVjZWl2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
UnRwUmVjZWl2ZXIuaAppbmRleCA5MjRmNWZhY2VmOTI3MjVkNzM5NDQ4NGQ4MGJiZDk5YTdjMjgw
YWFhLi5mYTU1MmMyM2YyYzA5MzkzYWE2ZjliN2YzZjA4ZWE2YzYzYTM3MDVmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFJlY2VpdmVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZlci5oCkBA
IC00MSw3ICs0MSw3IEBAIGNsYXNzIFJUQ1J0cFJlY2VpdmVyIDogcHVibGljIFJUQ1J0cFNlbmRl
clJlY2VpdmVyQmFzZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxSVENSdHBSZWNlaXZlcj4g
Y3JlYXRlKFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiYmIHRyYWNrKQogICAgIHsKLSAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgUlRDUnRwUmVjZWl2ZXIoV1RGOjptb3ZlKHRyYWNrKSkpOwor
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSVENSdHBSZWNlaXZlcihXVEZNb3ZlKHRyYWNr
KSkpOwogICAgIH0KIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyLmNwcAppbmRleCA4ODEzYTUzOWI5YmQwMTFlZDI2YzQ1
OGZhYWRhMjgyMjhjOTRhYjU2Li5lMDA3ZGJlNTcxYzdhZmZjMmNiMDdlOWM1NWYwNWJiZTYwZjY3
MGE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0
cFNlbmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENS
dHBTZW5kZXIuY3BwCkBAIC0zNiw3ICszNiw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFJU
Q1J0cFNlbmRlcjo6UlRDUnRwU2VuZGVyKFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiYmIHRyYWNr
LCBjb25zdCBTdHJpbmcmIG1lZGlhU3RyZWFtSWQpCi0gICAgOiBSVENSdHBTZW5kZXJSZWNlaXZl
ckJhc2UoV1RGOjptb3ZlKHRyYWNrKSkKKyAgICA6IFJUQ1J0cFNlbmRlclJlY2VpdmVyQmFzZShX
VEZNb3ZlKHRyYWNrKSkKICAgICAsIG1fbWVkaWFTdHJlYW1JZChtZWRpYVN0cmVhbUlkKQogewog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBT
ZW5kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVy
LmgKaW5kZXggNjg4NWFjNjRiNjYxNTE1MWI5YzVkMTMxMjhmNmE1MTBmNjI2M2YxZC4uZjQ0OTcz
OTA0ZmJmOGY0YzBjZWFlN2Y2NWM4MTdjNjg1NmQ4OTA1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlci5oCkBAIC00Miw3ICs0Miw3IEBA
IGNsYXNzIFJUQ1J0cFNlbmRlciA6IHB1YmxpYyBSVENSdHBTZW5kZXJSZWNlaXZlckJhc2Ugewog
cHVibGljOgogICAgIHN0YXRpYyBSZWY8UlRDUnRwU2VuZGVyPiBjcmVhdGUoUmVmUHRyPE1lZGlh
U3RyZWFtVHJhY2s+JiYgdHJhY2ssIGNvbnN0IFN0cmluZyYgbWVkaWFTdHJlYW1JZCkKICAgICB7
Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJUQ1J0cFNlbmRlcihXVEY6Om1vdmUodHJh
Y2spLCBtZWRpYVN0cmVhbUlkKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJUQ1J0
cFNlbmRlcihXVEZNb3ZlKHRyYWNrKSwgbWVkaWFTdHJlYW1JZCkpOwogICAgIH0KIAogICAgIGNv
bnN0IFN0cmluZyYgbWVkaWFTdHJlYW1JZCgpIGNvbnN0IHsgcmV0dXJuIG1fbWVkaWFTdHJlYW1J
ZDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENU
cmFja0V2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDVHJh
Y2tFdmVudC5jcHAKaW5kZXggMzMxYzlmMTZjMjMzZGJjNGFiOThkZWU5NzdjNTYzNmY3NTQ0ZDQw
ZC4uZWFhODg1NzY5OTRlM2VjYTZmMDE2Mzc1MWRjOTMwOTU4NDI5YTM1ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENUcmFja0V2ZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1RyYWNrRXZlbnQuY3BwCkBA
IC01Miw3ICs1Miw3IEBAIFJlZjxSVENUcmFja0V2ZW50PiBSVENUcmFja0V2ZW50OjpjcmVhdGUo
KQogCiBSZWY8UlRDVHJhY2tFdmVudD4gUlRDVHJhY2tFdmVudDo6Y3JlYXRlKGNvbnN0IEF0b21p
Y1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUmVmUHRyPFJU
Q1J0cFJlY2VpdmVyPiYmIHJlY2VpdmVyLCBSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4mJiB0cmFj
aykKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSVENUcmFja0V2ZW50KHR5cGUsIGNhbkJ1
YmJsZSwgY2FuY2VsYWJsZSwgV1RGOjptb3ZlKHJlY2VpdmVyKSwgV1RGOjptb3ZlKHRyYWNrKSkp
OworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJUQ1RyYWNrRXZlbnQodHlwZSwgY2FuQnViYmxl
LCBjYW5jZWxhYmxlLCBXVEZNb3ZlKHJlY2VpdmVyKSwgV1RGTW92ZSh0cmFjaykpKTsKIH0KIAog
UmVmPFJUQ1RyYWNrRXZlbnQ+IFJUQ1RyYWNrRXZlbnQ6OmNyZWF0ZShjb25zdCBBdG9taWNTdHJp
bmcmIHR5cGUsIGNvbnN0IFJUQ1RyYWNrRXZlbnRJbml0JiBpbml0aWFsaXplcikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3Qu
Y3BwCmluZGV4IDNkNGI1Y2JjMzRjZGQ2YTk4M2YwOWZmY2NlOGE3MmM4NTZmZDJhZjguLjA5MjRk
YWQ1MmQ5ZTYxMmVhYmQ4MGVlOWExYjNiNmRlM2VmNTAwNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmNwcApAQCAt
ODgsNyArODgsNyBAQCB2b2lkIFVzZXJNZWRpYVJlcXVlc3Q6OnN0YXJ0KERvY3VtZW50KiBkb2N1
bWVudCwgY29uc3QgRGljdGlvbmFyeSYgb3B0aW9ucywgTWVkaQogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgUmVmPFVzZXJNZWRpYVJlcXVlc3Q+IHJlcXVlc3QgPSBhZG9wdFJlZigqbmV3
IFVzZXJNZWRpYVJlcXVlc3QoZG9jdW1lbnQsIHVzZXJNZWRpYSwgYXVkaW9Db25zdHJhaW50cy5y
ZWxlYXNlKCksIHZpZGVvQ29uc3RyYWludHMucmVsZWFzZSgpLCBXVEY6Om1vdmUocHJvbWlzZSkp
KTsKKyAgICBSZWY8VXNlck1lZGlhUmVxdWVzdD4gcmVxdWVzdCA9IGFkb3B0UmVmKCpuZXcgVXNl
ck1lZGlhUmVxdWVzdChkb2N1bWVudCwgdXNlck1lZGlhLCBhdWRpb0NvbnN0cmFpbnRzLnJlbGVh
c2UoKSwgdmlkZW9Db25zdHJhaW50cy5yZWxlYXNlKCksIFdURk1vdmUocHJvbWlzZSkpKTsKICAg
ICByZXF1ZXN0LT5zdGFydCgpOwogfQogCkBAIC05Nyw3ICs5Nyw3IEBAIFVzZXJNZWRpYVJlcXVl
c3Q6OlVzZXJNZWRpYVJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgVXNl
ck1lZGlhQ29uCiAgICAgLCBtX2F1ZGlvQ29uc3RyYWludHMoYXVkaW9Db25zdHJhaW50cykKICAg
ICAsIG1fdmlkZW9Db25zdHJhaW50cyh2aWRlb0NvbnN0cmFpbnRzKQogICAgICwgbV9jb250cm9s
bGVyKGNvbnRyb2xsZXIpCi0gICAgLCBtX3Byb21pc2UoV1RGOjptb3ZlKHByb21pc2UpKQorICAg
ICwgbV9wcm9taXNlKFdURk1vdmUocHJvbWlzZSkpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbmF2aWdhdG9yY29udGVudHV0aWxzL05hdmlnYXRvckNvbnRlbnRV
dGlscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25hdmlnYXRvcmNvbnRlbnR1dGlscy9O
YXZpZ2F0b3JDb250ZW50VXRpbHMuY3BwCmluZGV4IGUyY2Y3NjdhZTcwZTQzYTUzY2M3MjE5YTIx
MmE4MTllMWUzYTdlM2YuLjMxMzFjYWE5MjJkZWI2ODFmNDI2ODUzNDNlM2JmYzNmNmZmOWExODEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbmF2aWdhdG9yY29udGVudHV0aWxz
L05hdmlnYXRvckNvbnRlbnRVdGlscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9u
YXZpZ2F0b3Jjb250ZW50dXRpbHMvTmF2aWdhdG9yQ29udGVudFV0aWxzLmNwcApAQCAtMTgzLDcg
KzE4Myw3IEBAIGNvbnN0IGNoYXIqIE5hdmlnYXRvckNvbnRlbnRVdGlsczo6c3VwcGxlbWVudE5h
bWUoKQogCiB2b2lkIHByb3ZpZGVOYXZpZ2F0b3JDb250ZW50VXRpbHNUbyhQYWdlKiBwYWdlLCBz
dGQ6OnVuaXF1ZV9wdHI8TmF2aWdhdG9yQ29udGVudFV0aWxzQ2xpZW50PiBjbGllbnQpCiB7Ci0g
ICAgTmF2aWdhdG9yQ29udGVudFV0aWxzOjpwcm92aWRlVG8ocGFnZSwgTmF2aWdhdG9yQ29udGVu
dFV0aWxzOjpzdXBwbGVtZW50TmFtZSgpLCBzdGQ6Om1ha2VfdW5pcXVlPE5hdmlnYXRvckNvbnRl
bnRVdGlscz4oV1RGOjptb3ZlKGNsaWVudCkpKTsKKyAgICBOYXZpZ2F0b3JDb250ZW50VXRpbHM6
OnByb3ZpZGVUbyhwYWdlLCBOYXZpZ2F0b3JDb250ZW50VXRpbHM6OnN1cHBsZW1lbnROYW1lKCks
IHN0ZDo6bWFrZV91bmlxdWU8TmF2aWdhdG9yQ29udGVudFV0aWxzPihXVEZNb3ZlKGNsaWVudCkp
KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9uYXZpZ2F0b3Jjb250ZW50dXRpbHMvTmF2aWdhdG9yQ29udGVudFV0aWxzLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25hdmlnYXRvcmNvbnRlbnR1dGlscy9OYXZpZ2F0b3JD
b250ZW50VXRpbHMuaAppbmRleCBkZDJjMmE3NzQ5NTkwZDdmZWUxYzZkYzBkMDVlNmFiNjZmNTE4
NjNlLi44NmI5NTY0MGVjODEzOTdlMzFlZmY0YmFkNmE1ZTljN2IzNzkwM2ZlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25hdmlnYXRvcmNvbnRlbnR1dGlscy9OYXZpZ2F0b3JD
b250ZW50VXRpbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25hdmlnYXRvcmNvbnRl
bnR1dGlscy9OYXZpZ2F0b3JDb250ZW50VXRpbHMuaApAQCAtNDMsNyArNDMsNyBAQCB0eXBlZGVm
IGludCBFeGNlcHRpb25Db2RlOwogY2xhc3MgTmF2aWdhdG9yQ29udGVudFV0aWxzIGZpbmFsIDog
cHVibGljIFN1cHBsZW1lbnQ8UGFnZT4gewogcHVibGljOgogICAgIGV4cGxpY2l0IE5hdmlnYXRv
ckNvbnRlbnRVdGlscyhzdGQ6OnVuaXF1ZV9wdHI8TmF2aWdhdG9yQ29udGVudFV0aWxzQ2xpZW50
PiBjbGllbnQpCi0gICAgICAgIDogbV9jbGllbnQoV1RGOjptb3ZlKGNsaWVudCkpCisgICAgICAg
IDogbV9jbGllbnQoV1RGTW92ZShjbGllbnQpKQogICAgIHsgfQogCiAgICAgdmlydHVhbCB+TmF2
aWdhdG9yQ29udGVudFV0aWxzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L25vdGlmaWNhdGlvbnMvRE9NV2luZG93Tm90aWZpY2F0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvRE9NV2luZG93Tm90aWZpY2F0aW9ucy5jcHAKaW5kZXgg
OTIyMjMxZmZkMzAxYTk1M2E5ZmUyZmVjYjY1YjQ1MDMxNDY4OTFlMy4uMGRhNDg5ZDdlNWEyNzc3
ZmI4YzFhNzE1MTQyNjNkMjUxZjc1ODNkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9ub3RpZmljYXRpb25zL0RPTVdpbmRvd05vdGlmaWNhdGlvbnMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9ET01XaW5kb3dOb3RpZmljYXRpb25zLmNw
cApAQCAtNTgsNyArNTgsNyBAQCBET01XaW5kb3dOb3RpZmljYXRpb25zKiBET01XaW5kb3dOb3Rp
ZmljYXRpb25zOjpmcm9tKERPTVdpbmRvdyogd2luZG93KQogICAgIGlmICghc3VwcGxlbWVudCkg
ewogICAgICAgICBhdXRvIG5ld1N1cHBsZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPERPTVdpbmRv
d05vdGlmaWNhdGlvbnM+KHdpbmRvdyk7CiAgICAgICAgIHN1cHBsZW1lbnQgPSBuZXdTdXBwbGVt
ZW50LmdldCgpOwotICAgICAgICBwcm92aWRlVG8od2luZG93LCBzdXBwbGVtZW50TmFtZSgpLCBX
VEY6Om1vdmUobmV3U3VwcGxlbWVudCkpOworICAgICAgICBwcm92aWRlVG8od2luZG93LCBzdXBw
bGVtZW50TmFtZSgpLCBXVEZNb3ZlKG5ld1N1cHBsZW1lbnQpKTsKICAgICB9CiAgICAgcmV0dXJu
IHN1cHBsZW1lbnQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlm
aWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuY3BwCmluZGV4IGM3ZjA2ZDEzOWIxOTNi
YTMxZTg2MWU2NDM0NTVmMjNjMjNiOWQxN2IuLjY0ZmYwNjQzYmI2MDU5ODk3NDliOTk4ZTlmOTFl
NGQzOTM3ODRjYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0
aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuY3BwCkBAIC0xNDcsNyArMTQ3LDcgQEAg
Ym9vbCBOb3RpZmljYXRpb25DZW50ZXI6OmNhblN1c3BlbmRGb3JEb2N1bWVudFN1c3BlbnNpb24o
KSBjb25zdAogdm9pZCBOb3RpZmljYXRpb25DZW50ZXI6OnRpbWVyRmlyZWQoKQogewogICAgIEFT
U0VSVChtX2NsaWVudCk7Ci0gICAgYXV0byBjYWxsYmFja3MgPSBXVEY6Om1vdmUobV9jYWxsYmFj
a3MpOworICAgIGF1dG8gY2FsbGJhY2tzID0gV1RGTW92ZShtX2NhbGxiYWNrcyk7CiAgICAgZm9y
IChhdXRvJiBjYWxsYmFjayA6IGNhbGxiYWNrcykKICAgICAgICAgY2FsbGJhY2soKTsKICAgICBk
ZXJlZigpOyAvLyBCYWxhbmNlZCBieSB0aGUgcmVmIGluIE5vdGlmaWNhdGlvbkNlbnRlcjo6cmVx
dWVzdFBlcm1pc3Npb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlm
aWNhdGlvbnMvV29ya2VyR2xvYmFsU2NvcGVOb3RpZmljYXRpb25zLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Xb3JrZXJHbG9iYWxTY29wZU5vdGlmaWNhdGlvbnMu
Y3BwCmluZGV4IGIyMjRmYWU1MzA5NTdlMWI5N2Q1MTYwZjRkMDhiYzIzN2YwN2VjNDUuLmE5NzRl
ZmNlNjlmZTk4MjBjYjg4MjgxZjAwNzQxZWMzNWJkYjJmY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Xb3JrZXJHbG9iYWxTY29wZU5vdGlmaWNhdGlv
bnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Xb3JrZXJH
bG9iYWxTY29wZU5vdGlmaWNhdGlvbnMuY3BwCkBAIC01Niw3ICs1Niw3IEBAIFdvcmtlckdsb2Jh
bFNjb3BlTm90aWZpY2F0aW9ucyogV29ya2VyR2xvYmFsU2NvcGVOb3RpZmljYXRpb25zOjpmcm9t
KFdvcmtlckdsb2JhCiAgICAgaWYgKCFzdXBwbGVtZW50KSB7CiAgICAgICAgIGF1dG8gbmV3U3Vw
cGxlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8V29ya2VyR2xvYmFsU2NvcGVOb3RpZmljYXRpb25z
Pihjb250ZXh0KTsKICAgICAgICAgc3VwcGxlbWVudCA9IG5ld1N1cHBsZW1lbnQuZ2V0KCk7Ci0g
ICAgICAgIHByb3ZpZGVUbyhjb250ZXh0LCBzdXBwbGVtZW50TmFtZSgpLCBXVEY6Om1vdmUobmV3
U3VwcGxlbWVudCkpOworICAgICAgICBwcm92aWRlVG8oY29udGV4dCwgc3VwcGxlbWVudE5hbWUo
KSwgV1RGTW92ZShuZXdTdXBwbGVtZW50KSk7CiAgICAgfQogICAgIHJldHVybiBzdXBwbGVtZW50
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGlt
ZVBsdWdpblJlcGxhY2VtZW50Lm1tIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1
aWNrVGltZVBsdWdpblJlcGxhY2VtZW50Lm1tCmluZGV4IDZjODNlZGNlYTUwOGUzM2I2ZjY0NzYz
YTc4OWVhNzUzMmE0MTRkMzYuLmFhOGIwNTJkMTI0NWVhZWNmY2ZlNWMyOGUzMDRiN2VmZWViNGEw
MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9RdWlja1RpbWVQ
bHVnaW5SZXBsYWNlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMv
UXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQubW0KQEAgLTEzNSw3ICsxMzUsNyBAQCBSZW5kZXJQ
dHI8UmVuZGVyRWxlbWVudD4gUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQ6OmNyZWF0ZUVsZW1l
bnRSZW5kZXJlcihIVE1MUAogICAgIEFTU0VSVF9VTlVTRUQocGx1Z2luLCBtX3BhcmVudEVsZW1l
bnQgPT0gJnBsdWdpbik7CiAKICAgICBpZiAobV9tZWRpYUVsZW1lbnQpCi0gICAgICAgIHJldHVy
biBtX21lZGlhRWxlbWVudC0+Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFdURjo6bW92ZShzdHlsZSks
IGluc2VydGlvblBvc2l0aW9uKTsKKyAgICAgICAgcmV0dXJuIG1fbWVkaWFFbGVtZW50LT5jcmVh
dGVFbGVtZW50UmVuZGVyZXIoV1RGTW92ZShzdHlsZSksIGluc2VydGlvblBvc2l0aW9uKTsKIAog
ICAgIHJldHVybiBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9wbHVnaW5zL1lvdVR1YmVQbHVnaW5SZXBsYWNlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3BsdWdpbnMvWW91VHViZVBsdWdpblJlcGxhY2VtZW50LmNwcAppbmRleCBiNDRjZmQy
MDg1OWU3NGUxMzE3YTkzNGExNWM1NzY2OThiN2UxN2I5Li5iZjZhNzBhNTdkMWNmYTAwMTZmYzA3
ZTQ3OWVjMTc2Y2JmZjRkMmZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3Bs
dWdpbnMvWW91VHViZVBsdWdpblJlcGxhY2VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3BsdWdpbnMvWW91VHViZVBsdWdpblJlcGxhY2VtZW50LmNwcApAQCAtNzQsNyArNzQs
NyBAQCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gWW91VHViZVBsdWdpblJlcGxhY2VtZW50Ojpj
cmVhdGVFbGVtZW50UmVuZGVyZXIoSFRNTFBsdQogICAgIGlmICghbV9lbWJlZFNoYWRvd0VsZW1l
bnQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIAotICAgIHJldHVybiBtX2VtYmVkU2hh
ZG93RWxlbWVudC0+Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFdURjo6bW92ZShzdHlsZSksIGluc2Vy
dGlvblBvc2l0aW9uKTsKKyAgICByZXR1cm4gbV9lbWJlZFNoYWRvd0VsZW1lbnQtPmNyZWF0ZUVs
ZW1lbnRSZW5kZXJlcihXVEZNb3ZlKHN0eWxlKSwgaW5zZXJ0aW9uUG9zaXRpb24pOwogfQogCiBi
b29sIFlvdVR1YmVQbHVnaW5SZXBsYWNlbWVudDo6aW5zdGFsbFJlcGxhY2VtZW50KFNoYWRvd1Jv
b3QqIHJvb3QpCkBAIC05OCw3ICs5OCw3IEBAIGJvb2wgWW91VHViZVBsdWdpblJlcGxhY2VtZW50
OjppbnN0YWxsUmVwbGFjZW1lbnQoU2hhZG93Um9vdCogcm9vdCkKICAgICAKICAgICAvLyBEaXNh
YmxlIGZyYW1lIGZsYXR0ZW5pbmcgZm9yIHRoaXMgaWZyYW1lLgogICAgIGlmcmFtZUVsZW1lbnQt
PnNldEF0dHJpYnV0ZShIVE1MTmFtZXM6OnNjcm9sbGluZ0F0dHIsIEF0b21pY1N0cmluZygibm8i
LCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Ci0gICAgbV9lbWJlZFNoYWRv
d0VsZW1lbnQtPmFwcGVuZENoaWxkKFdURjo6bW92ZShpZnJhbWVFbGVtZW50KSk7CisgICAgbV9l
bWJlZFNoYWRvd0VsZW1lbnQtPmFwcGVuZENoaWxkKFdURk1vdmUoaWZyYW1lRWxlbWVudCkpOwog
CiAgICAgcmV0dXJuIHRydWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3F1b3RhL0RPTVdpbmRvd1F1b3RhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcXVvdGEv
RE9NV2luZG93UXVvdGEuY3BwCmluZGV4IDAwNWY1MWMzNzk3MGVmNjFmMGQ2NTM5MWZmM2EyYTIx
NDUxNGRiZWUuLjFhNmE5NzRmMTg1NzM3MDMwZjEyZGNmZjRmYWJlYTA2MDgzMWQ2NTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcXVvdGEvRE9NV2luZG93UXVvdGEuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcXVvdGEvRE9NV2luZG93UXVvdGEuY3BwCkBAIC02
Miw3ICs2Miw3IEBAIERPTVdpbmRvd1F1b3RhKiBET01XaW5kb3dRdW90YTo6ZnJvbShET01XaW5k
b3cqIHdpbmRvdykKICAgICBpZiAoIXN1cHBsZW1lbnQpIHsKICAgICAgICAgYXV0byBuZXdTdXBw
bGVtZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxET01XaW5kb3dRdW90YT4od2luZG93KTsKICAgICAg
ICAgc3VwcGxlbWVudCA9IG5ld1N1cHBsZW1lbnQuZ2V0KCk7Ci0gICAgICAgIHByb3ZpZGVUbyh3
aW5kb3csIHN1cHBsZW1lbnROYW1lKCksIFdURjo6bW92ZShuZXdTdXBwbGVtZW50KSk7CisgICAg
ICAgIHByb3ZpZGVUbyh3aW5kb3csIHN1cHBsZW1lbnROYW1lKCksIFdURk1vdmUobmV3U3VwcGxl
bWVudCkpOwogICAgIH0KICAgICByZXR1cm4gc3VwcGxlbWVudDsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvcXVvdGEvTmF2aWdhdG9yU3RvcmFnZVF1b3RhLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvcXVvdGEvTmF2aWdhdG9yU3RvcmFnZVF1b3RhLmNwcAppbmRl
eCAyM2JlN2ZjMGFiOTg5NWQ4OTk2OWFkZDI3MTM0ZDI4YWFlM2UxNjBkLi4wZDg2ZmU3MjkyNWRl
YWM0ZWRlYmIzOTFmNmZhZTc1M2QxZDI5YjdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3F1b3RhL05hdmlnYXRvclN0b3JhZ2VRdW90YS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9xdW90YS9OYXZpZ2F0b3JTdG9yYWdlUXVvdGEuY3BwCkBAIC01OSw3ICs1OSw3
IEBAIE5hdmlnYXRvclN0b3JhZ2VRdW90YSogTmF2aWdhdG9yU3RvcmFnZVF1b3RhOjpmcm9tKE5h
dmlnYXRvciogbmF2aWdhdG9yKQogICAgIGlmICghc3VwcGxlbWVudCkgewogICAgICAgICBhdXRv
IG5ld1N1cHBsZW1lbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE5hdmlnYXRvclN0b3JhZ2VRdW90YT4o
d2luZG93KTsKICAgICAgICAgc3VwcGxlbWVudCA9IG5ld1N1cHBsZW1lbnQuZ2V0KCk7Ci0gICAg
ICAgIHByb3ZpZGVUbyhuYXZpZ2F0b3IsIHN1cHBsZW1lbnROYW1lKCksIFdURjo6bW92ZShuZXdT
dXBwbGVtZW50KSk7CisgICAgICAgIHByb3ZpZGVUbyhuYXZpZ2F0b3IsIHN1cHBsZW1lbnROYW1l
KCksIFdURk1vdmUobmV3U3VwcGxlbWVudCkpOwogICAgIH0KICAgICByZXR1cm4gc3VwcGxlbWVu
dDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcXVvdGEvV29ya2VyTmF2
aWdhdG9yU3RvcmFnZVF1b3RhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcXVvdGEvV29y
a2VyTmF2aWdhdG9yU3RvcmFnZVF1b3RhLmNwcAppbmRleCA5OWIzY2JkMWEzMjkyZjQ3ZTRmNDNh
YzMyMjg2MzkzZTk0NDZlYjVmLi5mZDVlZjRkMTdhZjFmZWEwNzk5YjU3NDIyMWM0Y2RiNGExNTUx
YzQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3F1b3RhL1dvcmtlck5hdmln
YXRvclN0b3JhZ2VRdW90YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9xdW90YS9X
b3JrZXJOYXZpZ2F0b3JTdG9yYWdlUXVvdGEuY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIFdvcmtlck5h
dmlnYXRvclN0b3JhZ2VRdW90YSogV29ya2VyTmF2aWdhdG9yU3RvcmFnZVF1b3RhOjpmcm9tKFdv
cmtlck5hdmlnYXRvcioKICAgICBpZiAoIXN1cHBsZW1lbnQpIHsKICAgICAgICAgYXV0byBuZXdT
dXBwbGVtZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXb3JrZXJOYXZpZ2F0b3JTdG9yYWdlUXVvdGE+
KHdpbmRvdyk7CiAgICAgICAgIHN1cHBsZW1lbnQgPSBuZXdTdXBwbGVtZW50LmdldCgpOwotICAg
ICAgICBwcm92aWRlVG8obmF2aWdhdG9yLCBzdXBwbGVtZW50TmFtZSgpLCBXVEY6Om1vdmUobmV3
U3VwcGxlbWVudCkpOworICAgICAgICBwcm92aWRlVG8obmF2aWdhdG9yLCBzdXBwbGVtZW50TmFt
ZSgpLCBXVEZNb3ZlKG5ld1N1cHBsZW1lbnQpKTsKICAgICB9CiAgICAgcmV0dXJuIHN1cHBsZW1l
bnQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9ET01XaW5k
b3dTcGVlY2hTeW50aGVzaXMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvRE9N
V2luZG93U3BlZWNoU3ludGhlc2lzLmNwcAppbmRleCA2OTdmNGU2OGE0ZTRlNzdkNjU3NWNhMWE2
NTIxNDkzYTU2NDA3ZTg2Li5hZjBiMTE5ODc1MzZiNDczN2FjY2JjZmQ3YThmNjIzZmVlNDI1Njhi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9ET01XaW5kb3dTcGVl
Y2hTeW50aGVzaXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL0RPTVdp
bmRvd1NwZWVjaFN5bnRoZXNpcy5jcHAKQEAgLTU5LDcgKzU5LDcgQEAgRE9NV2luZG93U3BlZWNo
U3ludGhlc2lzKiBET01XaW5kb3dTcGVlY2hTeW50aGVzaXM6OmZyb20oRE9NV2luZG93KiB3aW5k
b3cpCiAgICAgaWYgKCFzdXBwbGVtZW50KSB7CiAgICAgICAgIGF1dG8gbmV3U3VwcGxlbWVudCA9
IHN0ZDo6bWFrZV91bmlxdWU8RE9NV2luZG93U3BlZWNoU3ludGhlc2lzPih3aW5kb3cpOwogICAg
ICAgICBzdXBwbGVtZW50ID0gbmV3U3VwcGxlbWVudC5nZXQoKTsKLSAgICAgICAgcHJvdmlkZVRv
KHdpbmRvdywgc3VwcGxlbWVudE5hbWUoKSwgV1RGOjptb3ZlKG5ld1N1cHBsZW1lbnQpKTsKKyAg
ICAgICAgcHJvdmlkZVRvKHdpbmRvdywgc3VwcGxlbWVudE5hbWUoKSwgV1RGTW92ZShuZXdTdXBw
bGVtZW50KSk7CiAgICAgfQogICAgIHJldHVybiBzdXBwbGVtZW50OwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpcy5jcHAKaW5kZXggY2Y3ZDM3
OThiODhjNzZkNGU1YTZkNDhjODY3MjIwN2UzN2U3YmU5MC4uN2ZiMTNlOGM0OTk2ZDIyOGNjNzEy
ZmNkMzQwMTEzY2MxMzczZWJmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9z
cGVlY2gvU3BlZWNoU3ludGhlc2lzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3Nw
ZWVjaC9TcGVlY2hTeW50aGVzaXMuY3BwCkBAIC01Myw3ICs1Myw3IEBAIFNwZWVjaFN5bnRoZXNp
czo6U3BlZWNoU3ludGhlc2lzKCkKICAgICAKIHZvaWQgU3BlZWNoU3ludGhlc2lzOjpzZXRQbGF0
Zm9ybVN5bnRoZXNpemVyKHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVy
PiBzeW50aGVzaXplcikKIHsKLSAgICBtX3BsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIgPSBXVEY6
Om1vdmUoc3ludGhlc2l6ZXIpOworICAgIG1fcGxhdGZvcm1TcGVlY2hTeW50aGVzaXplciA9IFdU
Rk1vdmUoc3ludGhlc2l6ZXIpOwogICAgIG1fdm9pY2VMaXN0LmNsZWFyKCk7CiAgICAgbV9jdXJy
ZW50U3BlZWNoVXR0ZXJhbmNlID0gbnVsbHB0cjsKICAgICBtX3V0dGVyYW5jZVF1ZXVlLmNsZWFy
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0FzeW5jQXVk
aW9EZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXN5bmNBdWRp
b0RlY29kZXIuY3BwCmluZGV4IDZlNGFkYzVmM2NjM2RmN2RmNDUwMGM1ODkyZDkwZDk2N2FkMThm
ODYuLjZkNzI4MWY5M2U4MmQyNzRiMDJjMDljODg1ZDc5OGE0NWQ0NmM5NTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXN5bmNBdWRpb0RlY29kZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXN5bmNBdWRpb0RlY29kZXIuY3Bw
CkBAIC01OSw3ICs1OSw3IEBAIHZvaWQgQXN5bmNBdWRpb0RlY29kZXI6OmRlY29kZUFzeW5jKEFy
cmF5QnVmZmVyKiBhdWRpb0RhdGEsIGZsb2F0IHNhbXBsZVJhdGUsIFBhCiAgICAgICAgIHJldHVy
bjsKIAogICAgIGF1dG8gZGVjb2RpbmdUYXNrID0gc3RkOjptYWtlX3VuaXF1ZTxEZWNvZGluZ1Rh
c2s+KGF1ZGlvRGF0YSwgc2FtcGxlUmF0ZSwgc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNr
KTsKLSAgICBtX3F1ZXVlLmFwcGVuZChXVEY6Om1vdmUoZGVjb2RpbmdUYXNrKSk7IC8vIG5vdGUg
dGhhdCBvd25lcnNoaXAgb2YgdGhlIHRhc2sgaXMgZWZmZWN0aXZlbHkgdGFrZW4gYnkgdGhlIHF1
ZXVlLgorICAgIG1fcXVldWUuYXBwZW5kKFdURk1vdmUoZGVjb2RpbmdUYXNrKSk7IC8vIG5vdGUg
dGhhdCBvd25lcnNoaXAgb2YgdGhlIHRhc2sgaXMgZWZmZWN0aXZlbHkgdGFrZW4gYnkgdGhlIHF1
ZXVlLgogfQogCiAvLyBBc3luY2hyb25vdXNseSBkZWNvZGUgaW4gdGhpcyB0aHJlYWQuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKaW5kZXgg
MTljZjdjY2Q2NjBiZThlMDBkNjQzNDAwNTNmMzAxZDVkZGY2Yjk5NS4uZWYyOGY5NzkwNzliOTA2
MmMwMTlmNmJiMGUzNDlkYmZiNTMwYjExZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcApAQCAtMjg2LDcgKzI4Niw3IEBAIHZvaWQgQXVk
aW9Db250ZXh0OjphZGRSZWFjdGlvbihTdGF0ZSBzdGF0ZSwgUHJvbWlzZSYmIHByb21pc2UpCiAg
ICAgaWYgKHN0YXRlSW5kZXggPj0gbV9zdGF0ZVJlYWN0aW9ucy5zaXplKCkpCiAgICAgICAgIG1f
c3RhdGVSZWFjdGlvbnMucmVzaXplKHN0YXRlSW5kZXggKyAxKTsKIAotICAgIG1fc3RhdGVSZWFj
dGlvbnNbc3RhdGVJbmRleF0uYXBwZW5kKFdURjo6bW92ZShwcm9taXNlKSk7CisgICAgbV9zdGF0
ZVJlYWN0aW9uc1tzdGF0ZUluZGV4XS5hcHBlbmQoV1RGTW92ZShwcm9taXNlKSk7CiB9CiAKIHZv
aWQgQXVkaW9Db250ZXh0OjpzZXRTdGF0ZShTdGF0ZSBzdGF0ZSkKQEAgLTExMjksNyArMTEyOSw3
IEBAIHZvaWQgQXVkaW9Db250ZXh0OjpzdXNwZW5kKFByb21pc2UmJiBwcm9taXNlKQogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgYWRkUmVhY3Rpb24oU3RhdGU6OlN1c3BlbmRlZCwgV1RG
Ojptb3ZlKHByb21pc2UpKTsKKyAgICBhZGRSZWFjdGlvbihTdGF0ZTo6U3VzcGVuZGVkLCBXVEZN
b3ZlKHByb21pc2UpKTsKIAogICAgIGlmICghd2lsbFBhdXNlUGxheWJhY2soKSkKICAgICAgICAg
cmV0dXJuOwpAQCAtMTE1OSw3ICsxMTU5LDcgQEAgdm9pZCBBdWRpb0NvbnRleHQ6OnJlc3VtZShQ
cm9taXNlJiYgcHJvbWlzZSkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGFkZFJlYWN0
aW9uKFN0YXRlOjpSdW5uaW5nLCBXVEY6Om1vdmUocHJvbWlzZSkpOworICAgIGFkZFJlYWN0aW9u
KFN0YXRlOjpSdW5uaW5nLCBXVEZNb3ZlKHByb21pc2UpKTsKIAogICAgIGlmICghd2lsbEJlZ2lu
UGxheWJhY2soKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTE4NCw3ICsxMTg0LDcgQEAgdm9pZCBB
dWRpb0NvbnRleHQ6OmNsb3NlKFByb21pc2UmJiBwcm9taXNlKQogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgYWRkUmVhY3Rpb24oU3RhdGU6OkNsb3NlZCwgV1RGOjptb3ZlKHByb21pc2Up
KTsKKyAgICBhZGRSZWFjdGlvbihTdGF0ZTo6Q2xvc2VkLCBXVEZNb3ZlKHByb21pc2UpKTsKIAog
ICAgIGxhenlJbml0aWFsaXplKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9Ob2RlLmNwcAppbmRleCBmNDZiNGJlMjQ0ZDQwN2QwMDQ5MTNhYjU0N2Q5MTFkOTE4
ZWMwM2VmLi4wMzg3OTA2ZjJiODYzYWM1OGZhOTAwYjFmMmNmOTQ3ZWFkMWFlZGU4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGUuY3BwCkBAIC0xMDEsMTIg
KzEwMSwxMiBAQCB2b2lkIEF1ZGlvTm9kZTo6bGF6eUluaXRpYWxpemUoKQogCiB2b2lkIEF1ZGlv
Tm9kZTo6YWRkSW5wdXQoc3RkOjp1bmlxdWVfcHRyPEF1ZGlvTm9kZUlucHV0PiBpbnB1dCkKIHsK
LSAgICBtX2lucHV0cy5hcHBlbmQoV1RGOjptb3ZlKGlucHV0KSk7CisgICAgbV9pbnB1dHMuYXBw
ZW5kKFdURk1vdmUoaW5wdXQpKTsKIH0KIAogdm9pZCBBdWRpb05vZGU6OmFkZE91dHB1dChzdGQ6
OnVuaXF1ZV9wdHI8QXVkaW9Ob2RlT3V0cHV0PiBvdXRwdXQpCiB7Ci0gICAgbV9vdXRwdXRzLmFw
cGVuZChXVEY6Om1vdmUob3V0cHV0KSk7CisgICAgbV9vdXRwdXRzLmFwcGVuZChXVEZNb3ZlKG91
dHB1dCkpOwogfQogCiBBdWRpb05vZGVJbnB1dCogQXVkaW9Ob2RlOjppbnB1dCh1bnNpZ25lZCBp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1NjaGVk
dWxlZFNvdXJjZU5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b1NjaGVkdWxlZFNvdXJjZU5vZGUuY3BwCmluZGV4IGM3OGU3NjFjOGJlNDAyYWRhYTJlNTVkMjIx
YjJhMmJkYmRmY2Y4YTguLmI5NTc1ZDFmNDU3YTFhYjRhNjcwNDhkODFiYTkwYTU5ZDUzMTkxOGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hlZHVs
ZWRTb3VyY2VOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5jcHAKQEAgLTIxMyw3ICsyMTMsNyBAQCB2b2lkIEF1ZGlv
U2NoZWR1bGVkU291cmNlTm9kZTo6ZmluaXNoKCkKIAogYm9vbCBBdWRpb1NjaGVkdWxlZFNvdXJj
ZU5vZGU6OmFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJl
ZlB0cjxFdmVudExpc3RlbmVyPiYmIGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCiB7Ci0gICAg
Ym9vbCBzdWNjZXNzID0gQXVkaW9Ob2RlOjphZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgV1RG
Ojptb3ZlKGxpc3RlbmVyKSwgdXNlQ2FwdHVyZSk7CisgICAgYm9vbCBzdWNjZXNzID0gQXVkaW9O
b2RlOjphZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgV1RGTW92ZShsaXN0ZW5lciksIHVzZUNh
cHR1cmUpOwogICAgIGlmIChzdWNjZXNzICYmIGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCkuZW5k
ZWRFdmVudCkKICAgICAgICAgbV9oYXNFbmRlZExpc3RlbmVyID0gaGFzRXZlbnRMaXN0ZW5lcnMo
ZXZlbnROYW1lcygpLmVuZGVkRXZlbnQpOwogICAgIHJldHVybiBzdWNjZXNzOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Db252b2x2ZXJOb2RlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ29udm9sdmVyTm9kZS5jcHAKaW5kZXggMzE3
MGZjYmNiM2VlMzZkOWI1ZDg2ZTAwZjYxZDJhM2I5MGI4Zjc4Yi4uYmRkZGUyODUzZmJjMjM3MDhl
MzIxZWVkZmFiOGNhMjIwOWNlNTkwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9Db252b2x2ZXJOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0NvbnZvbHZlck5vZGUuY3BwCkBAIC0xNTIsNyArMTUyLDcgQEAgdm9pZCBDb252
b2x2ZXJOb2RlOjpzZXRCdWZmZXIoQXVkaW9CdWZmZXIqIGJ1ZmZlciwgRXhjZXB0aW9uQ29kZSYg
ZWMpCiAgICAgewogICAgICAgICAvLyBTeW5jaHJvbml6ZSB3aXRoIHByb2Nlc3MoKS4KICAgICAg
ICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV9wcm9jZXNzTXV0ZXgpOwotICAgICAgICBt
X3JldmVyYiA9IFdURjo6bW92ZShyZXZlcmIpOworICAgICAgICBtX3JldmVyYiA9IFdURk1vdmUo
cmV2ZXJiKTsKICAgICAgICAgbV9idWZmZXIgPSBidWZmZXI7CiAgICAgfQogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvRGVzdGlu
YXRpb25Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJl
YW1BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKaW5kZXggMGQ1ZWQ3NWIyZDZiNTI5NGI2YTcwM2Fk
YzVlMDIwY2JkMzdkNWNlZi4uMDRiOGRiMTJhOGEzZjA4NDdkYTEwOTY1MmZjNzFmYjU5ZDIwM2Q0
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVh
bUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCkBAIC01MCw3ICs1MCw3
IEBAIE1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGU6Ok1lZGlhU3RyZWFtQXVkaW9EZXN0
aW5hdGlvbk5vZGUoQXVkaW9Db250ZXh0KiBjCiAKICAgICBtX3NvdXJjZSA9IE1lZGlhU3RyZWFt
QXVkaW9Tb3VyY2U6OmNyZWF0ZSgpOwogICAgIFZlY3RvcjxSZWZQdHI8UmVhbHRpbWVNZWRpYVNv
dXJjZT4+IGF1ZGlvU291cmNlcygxLCBtX3NvdXJjZSk7Ci0gICAgbV9zdHJlYW0gPSBNZWRpYVN0
cmVhbTo6Y3JlYXRlKCpjb250ZXh0LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIE1lZGlhU3Ry
ZWFtUHJpdmF0ZTo6Y3JlYXRlKFdURjo6bW92ZShhdWRpb1NvdXJjZXMpLCBWZWN0b3I8UmVmUHRy
PFJlYWx0aW1lTWVkaWFTb3VyY2U+PigpKSk7CisgICAgbV9zdHJlYW0gPSBNZWRpYVN0cmVhbTo6
Y3JlYXRlKCpjb250ZXh0LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIE1lZGlhU3RyZWFtUHJp
dmF0ZTo6Y3JlYXRlKFdURk1vdmUoYXVkaW9Tb3VyY2VzKSwgVmVjdG9yPFJlZlB0cjxSZWFsdGlt
ZU1lZGlhU291cmNlPj4oKSkpOwogCiAgICAgbV9zb3VyY2UtPnNldEF1ZGlvRm9ybWF0KG51bWJl
ck9mQ2hhbm5lbHMsIGNvbnRleHQtPnNhbXBsZVJhdGUoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuY3BwCmluZGV4
IDkyOThhZWQyMmU2MDgyOTM2ZjM5ZDQ0NDQ5YThkYmE4YmM3NjQxMmQuLjU1YTI4MjE3NWFlYTgy
YWMwMTJkNTYxOTZkZTk5N2FkNWM0MDEzMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmNwcApAQCAtMjc1LDcgKzI3
NSw3IEBAIGRvdWJsZSBTY3JpcHRQcm9jZXNzb3JOb2RlOjpsYXRlbmN5VGltZSgpIGNvbnN0CiAK
IGJvb2wgU2NyaXB0UHJvY2Vzc29yTm9kZTo6YWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNT
dHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRyPEV2ZW50TGlzdGVuZXI+JiYgbGlzdGVuZXIsIGJvb2wg
dXNlQ2FwdHVyZSkKIHsKLSAgICBib29sIHN1Y2Nlc3MgPSBBdWRpb05vZGU6OmFkZEV2ZW50TGlz
dGVuZXIoZXZlbnRUeXBlLCBXVEY6Om1vdmUobGlzdGVuZXIpLCB1c2VDYXB0dXJlKTsKKyAgICBi
b29sIHN1Y2Nlc3MgPSBBdWRpb05vZGU6OmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBXVEZN
b3ZlKGxpc3RlbmVyKSwgdXNlQ2FwdHVyZSk7CiAgICAgaWYgKHN1Y2Nlc3MgJiYgZXZlbnRUeXBl
ID09IGV2ZW50TmFtZXMoKS5hdWRpb3Byb2Nlc3NFdmVudCkKICAgICAgICAgbV9oYXNBdWRpb1By
b2Nlc3NMaXN0ZW5lciA9IGhhc0V2ZW50TGlzdGVuZXJzKGV2ZW50TmFtZXMoKS5hdWRpb3Byb2Nl
c3NFdmVudCk7CiAgICAgcmV0dXJuIHN1Y2Nlc3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwCmluZGV4IDgwNDlkM2FiZjdlMzMxMmJlMTlhMTQ3
OGI1YmI4MTVmMTViZjQ2NGIuLjFiN2JmNmIzNmJhYjgyNzE2YjA2ZGQ1MTY0NGU0NWE3ZDkwNmQ0
NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJh
c2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2Uu
Y3BwCkBAIC0yNzIsNyArMjcyLDcgQEAgYm9vbCBEYXRhYmFzZTo6b3BlbkFuZFZlcmlmeVZlcnNp
b24oYm9vbCBzZXRWZXJzaW9uSW5OZXdEYXRhYmFzZSwgRGF0YWJhc2VFcnJvciYKIAogICAgIGJv
b2wgc3VjY2VzcyA9IGZhbHNlOwogICAgIGF1dG8gdGFzayA9IHN0ZDo6bWFrZV91bmlxdWU8RGF0
YWJhc2VPcGVuVGFzaz4oKnRoaXMsIHNldFZlcnNpb25Jbk5ld0RhdGFiYXNlLCBzeW5jaHJvbml6
ZXIsIGVycm9yLCBlcnJvck1lc3NhZ2UsIHN1Y2Nlc3MpOwotICAgIGRhdGFiYXNlQ29udGV4dCgp
LT5kYXRhYmFzZVRocmVhZCgpLT5zY2hlZHVsZUltbWVkaWF0ZVRhc2soV1RGOjptb3ZlKHRhc2sp
KTsKKyAgICBkYXRhYmFzZUNvbnRleHQoKS0+ZGF0YWJhc2VUaHJlYWQoKS0+c2NoZWR1bGVJbW1l
ZGlhdGVUYXNrKFdURk1vdmUodGFzaykpOwogICAgIHN5bmNocm9uaXplci53YWl0Rm9yVGFza0Nv
bXBsZXRpb24oKTsKIAogICAgIHJldHVybiBzdWNjZXNzOwpAQCAtNTQ4LDcgKzU0OCw3IEBAIHZv
aWQgRGF0YWJhc2U6OnNjaGVkdWxlVHJhbnNhY3Rpb24oKQogICAgICAgICBhdXRvIHRhc2sgPSBz
dGQ6Om1ha2VfdW5pcXVlPERhdGFiYXNlVHJhbnNhY3Rpb25UYXNrPih0cmFuc2FjdGlvbik7CiAg
ICAgICAgIExPRyhTdG9yYWdlQVBJLCAiU2NoZWR1bGluZyBEYXRhYmFzZVRyYW5zYWN0aW9uVGFz
ayAlcCBmb3IgdHJhbnNhY3Rpb24gJXBcbiIsIHRhc2suZ2V0KCksIHRhc2stPnRyYW5zYWN0aW9u
KCkpOwogICAgICAgICBtX3RyYW5zYWN0aW9uSW5Qcm9ncmVzcyA9IHRydWU7Ci0gICAgICAgIGRh
dGFiYXNlQ29udGV4dCgpLT5kYXRhYmFzZVRocmVhZCgpLT5zY2hlZHVsZVRhc2soV1RGOjptb3Zl
KHRhc2spKTsKKyAgICAgICAgZGF0YWJhc2VDb250ZXh0KCktPmRhdGFiYXNlVGhyZWFkKCktPnNj
aGVkdWxlVGFzayhXVEZNb3ZlKHRhc2spKTsKICAgICB9IGVsc2UKICAgICAgICAgbV90cmFuc2Fj
dGlvbkluUHJvZ3Jlc3MgPSBmYWxzZTsKIH0KQEAgLTU3OCw3ICs1NzgsNyBAQCB2b2lkIERhdGFi
YXNlOjpzY2hlZHVsZVRyYW5zYWN0aW9uU3RlcChTUUxUcmFuc2FjdGlvbkJhY2tlbmQqIHRyYW5z
YWN0aW9uKQogCiAgICAgYXV0byB0YXNrID0gc3RkOjptYWtlX3VuaXF1ZTxEYXRhYmFzZVRyYW5z
YWN0aW9uVGFzaz4odHJhbnNhY3Rpb24pOwogICAgIExPRyhTdG9yYWdlQVBJLCAiU2NoZWR1bGlu
ZyBEYXRhYmFzZVRyYW5zYWN0aW9uVGFzayAlcCBmb3IgdGhlIHRyYW5zYWN0aW9uIHN0ZXBcbiIs
IHRhc2suZ2V0KCkpOwotICAgIGRhdGFiYXNlQ29udGV4dCgpLT5kYXRhYmFzZVRocmVhZCgpLT5z
Y2hlZHVsZVRhc2soV1RGOjptb3ZlKHRhc2spKTsKKyAgICBkYXRhYmFzZUNvbnRleHQoKS0+ZGF0
YWJhc2VUaHJlYWQoKS0+c2NoZWR1bGVUYXNrKFdURk1vdmUodGFzaykpOwogfQogCiB2b2lkIERh
dGFiYXNlOjppblByb2dyZXNzVHJhbnNhY3Rpb25Db21wbGV0ZWQoKQpAQCAtNjMwLDcgKzYzMCw3
IEBAIHZvaWQgRGF0YWJhc2U6Om1hcmtBc0RlbGV0ZWRBbmRDbG9zZSgpCiAgICAgfQogCiAgICAg
YXV0byB0YXNrID0gc3RkOjptYWtlX3VuaXF1ZTxEYXRhYmFzZUNsb3NlVGFzaz4oKnRoaXMsIHN5
bmNocm9uaXplcik7Ci0gICAgZGF0YWJhc2VDb250ZXh0KCktPmRhdGFiYXNlVGhyZWFkKCktPnNj
aGVkdWxlSW1tZWRpYXRlVGFzayhXVEY6Om1vdmUodGFzaykpOworICAgIGRhdGFiYXNlQ29udGV4
dCgpLT5kYXRhYmFzZVRocmVhZCgpLT5zY2hlZHVsZUltbWVkaWF0ZVRhc2soV1RGTW92ZSh0YXNr
KSk7CiAgICAgc3luY2hyb25pemVyLndhaXRGb3JUYXNrQ29tcGxldGlvbigpOwogfQogCkBAIC03
MzEsMTEgKzczMSwxMSBAQCB2b2lkIERhdGFiYXNlOjpyZXNldEF1dGhvcml6ZXIoKQogCiB2b2lk
IERhdGFiYXNlOjpydW5UcmFuc2FjdGlvbihSZWZQdHI8U1FMVHJhbnNhY3Rpb25DYWxsYmFjaz4m
JiBjYWxsYmFjaywgUmVmUHRyPFNRTFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjaz4mJiBlcnJvckNh
bGxiYWNrLCBSZWZQdHI8Vm9pZENhbGxiYWNrPiYmIHN1Y2Nlc3NDYWxsYmFjaywgYm9vbCByZWFk
T25seSwgY29uc3QgQ2hhbmdlVmVyc2lvbkRhdGEqIGNoYW5nZVZlcnNpb25EYXRhKQogewotICAg
IFJlZlB0cjxTUUxUcmFuc2FjdGlvbj4gdHJhbnNhY3Rpb24gPSBTUUxUcmFuc2FjdGlvbjo6Y3Jl
YXRlKCp0aGlzLCBXVEY6Om1vdmUoY2FsbGJhY2spLCBXVEY6Om1vdmUoc3VjY2Vzc0NhbGxiYWNr
KSwgZXJyb3JDYWxsYmFjay5jb3B5UmVmKCksIHJlYWRPbmx5KTsKKyAgICBSZWZQdHI8U1FMVHJh
bnNhY3Rpb24+IHRyYW5zYWN0aW9uID0gU1FMVHJhbnNhY3Rpb246OmNyZWF0ZSgqdGhpcywgV1RG
TW92ZShjYWxsYmFjayksIFdURk1vdmUoc3VjY2Vzc0NhbGxiYWNrKSwgZXJyb3JDYWxsYmFjay5j
b3B5UmVmKCksIHJlYWRPbmx5KTsKIAogICAgIFJlZlB0cjxTUUxUcmFuc2FjdGlvbkJhY2tlbmQ+
IHRyYW5zYWN0aW9uQmFja2VuZCA9IHJ1blRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uLnJlbGVhc2Uo
KSwgcmVhZE9ubHksIGNoYW5nZVZlcnNpb25EYXRhKTsKICAgICBpZiAoIXRyYW5zYWN0aW9uQmFj
a2VuZCAmJiBlcnJvckNhbGxiYWNrKSB7Ci0gICAgICAgIFdURjo6UmVmUHRyPFNRTFRyYW5zYWN0
aW9uRXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFja1Byb3RlY3RvciA9IFdURjo6bW92ZShlcnJv
ckNhbGxiYWNrKTsKKyAgICAgICAgV1RGOjpSZWZQdHI8U1FMVHJhbnNhY3Rpb25FcnJvckNhbGxi
YWNrPiBlcnJvckNhbGxiYWNrUHJvdGVjdG9yID0gV1RGTW92ZShlcnJvckNhbGxiYWNrKTsKICAg
ICAgICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhbZXJyb3JDYWxsYmFja1By
b3RlY3Rvcl0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKICAgICAgICAgICAgIGVycm9yQ2Fs
bGJhY2tQcm90ZWN0b3ItPmhhbmRsZUV2ZW50KFNRTEVycm9yOjpjcmVhdGUoU1FMRXJyb3I6OlVO
S05PV05fRVJSLCAiZGF0YWJhc2UgaGFzIGJlZW4gY2xvc2VkIikucHRyKCkpOwogICAgICAgICB9
KTsKQEAgLTgwNyw3ICs4MDcsNyBAQCBWZWN0b3I8U3RyaW5nPiBEYXRhYmFzZTo6dGFibGVOYW1l
cygpCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAKICAgICBhdXRvIHRhc2sgPSBzdGQ6Om1ha2Vf
dW5pcXVlPERhdGFiYXNlVGFibGVOYW1lc1Rhc2s+KCp0aGlzLCBzeW5jaHJvbml6ZXIsIHJlc3Vs
dCk7Ci0gICAgZGF0YWJhc2VDb250ZXh0KCktPmRhdGFiYXNlVGhyZWFkKCktPnNjaGVkdWxlSW1t
ZWRpYXRlVGFzayhXVEY6Om1vdmUodGFzaykpOworICAgIGRhdGFiYXNlQ29udGV4dCgpLT5kYXRh
YmFzZVRocmVhZCgpLT5zY2hlZHVsZUltbWVkaWF0ZVRhc2soV1RGTW92ZSh0YXNrKSk7CiAgICAg
c3luY2hyb25pemVyLndhaXRGb3JUYXNrQ29tcGxldGlvbigpOwogCiAgICAgcmV0dXJuIHJlc3Vs
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJh
c2VUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFz
ZVRocmVhZC5jcHAKaW5kZXggNGRkOGYwNmNhMzU2YTg3MGM0MDcyYTNmYTM4Yjg5YmM0N2Y3NzRj
Zi4uOTBlODE4YWY2ZmJhYmUyNDVkZGU0NGQxMzViODFkOGYxN2YyNmFlNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRocmVhZC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRocmVhZC5jcHAK
QEAgLTE1NiwxMyArMTU2LDEzIEBAIHZvaWQgRGF0YWJhc2VUaHJlYWQ6OnJlY29yZERhdGFiYXNl
Q2xvc2VkKERhdGFiYXNlKiBkYXRhYmFzZSkKIHZvaWQgRGF0YWJhc2VUaHJlYWQ6OnNjaGVkdWxl
VGFzayhzdGQ6OnVuaXF1ZV9wdHI8RGF0YWJhc2VUYXNrPiB0YXNrKQogewogICAgIEFTU0VSVCgh
dGFzay0+aGFzU3luY2hyb25pemVyKCkgfHwgdGFzay0+aGFzQ2hlY2tlZEZvclRlcm1pbmF0aW9u
KCkpOwotICAgIG1fcXVldWUuYXBwZW5kKFdURjo6bW92ZSh0YXNrKSk7CisgICAgbV9xdWV1ZS5h
cHBlbmQoV1RGTW92ZSh0YXNrKSk7CiB9CiAKIHZvaWQgRGF0YWJhc2VUaHJlYWQ6OnNjaGVkdWxl
SW1tZWRpYXRlVGFzayhzdGQ6OnVuaXF1ZV9wdHI8RGF0YWJhc2VUYXNrPiB0YXNrKQogewogICAg
IEFTU0VSVCghdGFzay0+aGFzU3luY2hyb25pemVyKCkgfHwgdGFzay0+aGFzQ2hlY2tlZEZvclRl
cm1pbmF0aW9uKCkpOwotICAgIG1fcXVldWUucHJlcGVuZChXVEY6Om1vdmUodGFzaykpOworICAg
IG1fcXVldWUucHJlcGVuZChXVEZNb3ZlKHRhc2spKTsKIH0KIAogY2xhc3MgU2FtZURhdGFiYXNl
UHJlZGljYXRlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJh
c2UvU1FMVHJhbnNhY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFz
ZS9TUUxUcmFuc2FjdGlvbi5jcHAKaW5kZXggZWU4YTQ3ZWY4ZTBhMjE4NWVlNzM3MjlhYzVhZmQz
NzgwYWNjMzY4MC4uNTFmZGNkZTgzMzlmOGM0MjI4NzQ0ZjU2NWFjZDNlMDc5M2E0MDEyOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2Fj
dGlvbi5jcHAKQEAgLTUwLDE0ICs1MCwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFJlZjxT
UUxUcmFuc2FjdGlvbj4gU1FMVHJhbnNhY3Rpb246OmNyZWF0ZShSZWY8RGF0YWJhc2U+JiYgZGF0
YWJhc2UsIFJlZlB0cjxTUUxUcmFuc2FjdGlvbkNhbGxiYWNrPiYmIGNhbGxiYWNrLCBSZWZQdHI8
Vm9pZENhbGxiYWNrPiYmIHN1Y2Nlc3NDYWxsYmFjaywgUmVmUHRyPFNRTFRyYW5zYWN0aW9uRXJy
b3JDYWxsYmFjaz4mJiBlcnJvckNhbGxiYWNrLCBib29sIHJlYWRPbmx5KQogewotICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFNRTFRyYW5zYWN0aW9uKFdURjo6bW92ZShkYXRhYmFzZSksIFdURjo6
bW92ZShjYWxsYmFjayksIFdURjo6bW92ZShzdWNjZXNzQ2FsbGJhY2spLCBXVEY6Om1vdmUoZXJy
b3JDYWxsYmFjayksIHJlYWRPbmx5KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU1FMVHJh
bnNhY3Rpb24oV1RGTW92ZShkYXRhYmFzZSksIFdURk1vdmUoY2FsbGJhY2spLCBXVEZNb3ZlKHN1
Y2Nlc3NDYWxsYmFjayksIFdURk1vdmUoZXJyb3JDYWxsYmFjayksIHJlYWRPbmx5KSk7CiB9CiAK
IFNRTFRyYW5zYWN0aW9uOjpTUUxUcmFuc2FjdGlvbihSZWY8RGF0YWJhc2U+JiYgZGF0YWJhc2Us
IFJlZlB0cjxTUUxUcmFuc2FjdGlvbkNhbGxiYWNrPiYmIGNhbGxiYWNrLCBSZWZQdHI8Vm9pZENh
bGxiYWNrPiYmIHN1Y2Nlc3NDYWxsYmFjaywgUmVmUHRyPFNRTFRyYW5zYWN0aW9uRXJyb3JDYWxs
YmFjaz4mJiBlcnJvckNhbGxiYWNrLCBib29sIHJlYWRPbmx5KQotICAgIDogbV9kYXRhYmFzZShX
VEY6Om1vdmUoZGF0YWJhc2UpKQotICAgICwgbV9jYWxsYmFja1dyYXBwZXIoV1RGOjptb3ZlKGNh
bGxiYWNrKSwgbV9kYXRhYmFzZS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQotICAgICwgbV9z
dWNjZXNzQ2FsbGJhY2tXcmFwcGVyKFdURjo6bW92ZShzdWNjZXNzQ2FsbGJhY2spLCBtX2RhdGFi
YXNlLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCi0gICAgLCBtX2Vycm9yQ2FsbGJhY2tXcmFw
cGVyKFdURjo6bW92ZShlcnJvckNhbGxiYWNrKSwgbV9kYXRhYmFzZS0+c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpKQorICAgIDogbV9kYXRhYmFzZShXVEZNb3ZlKGRhdGFiYXNlKSkKKyAgICAsIG1f
Y2FsbGJhY2tXcmFwcGVyKFdURk1vdmUoY2FsbGJhY2spLCBtX2RhdGFiYXNlLT5zY3JpcHRFeGVj
dXRpb25Db250ZXh0KCkpCisgICAgLCBtX3N1Y2Nlc3NDYWxsYmFja1dyYXBwZXIoV1RGTW92ZShz
dWNjZXNzQ2FsbGJhY2spLCBtX2RhdGFiYXNlLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCisg
ICAgLCBtX2Vycm9yQ2FsbGJhY2tXcmFwcGVyKFdURk1vdmUoZXJyb3JDYWxsYmFjayksIG1fZGF0
YWJhc2UtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKICAgICAsIG1fZXhlY3V0ZVNxbEFsbG93
ZWQoZmFsc2UpCiAgICAgLCBtX3JlYWRPbmx5KHJlYWRPbmx5KQogewpAQCAtMjQ3LDggKzI0Nyw4
IEBAIHZvaWQgU1FMVHJhbnNhY3Rpb246OmV4ZWN1dGVTUUwoY29uc3QgU3RyaW5nJiBzcWxTdGF0
ZW1lbnQsIGNvbnN0IFZlY3RvcjxTUUxWYWx1CiAgICAgZWxzZSBpZiAobV9yZWFkT25seSkKICAg
ICAgICAgcGVybWlzc2lvbnMgfD0gRGF0YWJhc2VBdXRob3JpemVyOjpSZWFkT25seU1hc2s7CiAK
LSAgICBhdXRvIHN0YXRlbWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8U1FMU3RhdGVtZW50PihtX2Rh
dGFiYXNlLCBzcWxTdGF0ZW1lbnQsIGFyZ3VtZW50cywgV1RGOjptb3ZlKGNhbGxiYWNrKSwgV1RG
Ojptb3ZlKGNhbGxiYWNrRXJyb3IpLCBwZXJtaXNzaW9ucyk7Ci0gICAgbV9iYWNrZW5kLT5leGVj
dXRlU1FMKFdURjo6bW92ZShzdGF0ZW1lbnQpKTsKKyAgICBhdXRvIHN0YXRlbWVudCA9IHN0ZDo6
bWFrZV91bmlxdWU8U1FMU3RhdGVtZW50PihtX2RhdGFiYXNlLCBzcWxTdGF0ZW1lbnQsIGFyZ3Vt
ZW50cywgV1RGTW92ZShjYWxsYmFjayksIFdURk1vdmUoY2FsbGJhY2tFcnJvciksIHBlcm1pc3Np
b25zKTsKKyAgICBtX2JhY2tlbmQtPmV4ZWN1dGVTUUwoV1RGTW92ZShzdGF0ZW1lbnQpKTsKIH0K
IAogdm9pZCBTUUxUcmFuc2FjdGlvbjo6Y29tcHV0ZU5leHRTdGF0ZUFuZENsZWFudXBJZk5lZWRl
ZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRy
YW5zYWN0aW9uQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNl
L1NRTFRyYW5zYWN0aW9uQmFja2VuZC5jcHAKaW5kZXggODE0OTQ3ZjE3OWYzNzk1ZjlkMDAyNzI1
ZmE0ZjlmNzI5OTA2NjZmMi4uOWQwODZjYjBiMWMxODc2ZmY5NWY1NTE4YWJkMWEzZGM3MzQxZTJk
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFu
c2FjdGlvbkJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJh
c2UvU1FMVHJhbnNhY3Rpb25CYWNrZW5kLmNwcApAQCAtNDY2LDcgKzQ2Niw3IEBAIFNRTFRyYW5z
YWN0aW9uQmFja2VuZDo6U3RhdGVGdW5jdGlvbiBTUUxUcmFuc2FjdGlvbkJhY2tlbmQ6OnN0YXRl
RnVuY3Rpb25Gb3IoU1FMCiB2b2lkIFNRTFRyYW5zYWN0aW9uQmFja2VuZDo6ZW5xdWV1ZVN0YXRl
bWVudEJhY2tlbmQoc3RkOjp1bmlxdWVfcHRyPFNRTFN0YXRlbWVudD4gc3RhdGVtZW50QmFja2Vu
ZCkKIHsKICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3N0YXRlbWVudE11dGV4KTsKLSAgICBtX3N0
YXRlbWVudFF1ZXVlLmFwcGVuZChXVEY6Om1vdmUoc3RhdGVtZW50QmFja2VuZCkpOworICAgIG1f
c3RhdGVtZW50UXVldWUuYXBwZW5kKFdURk1vdmUoc3RhdGVtZW50QmFja2VuZCkpOwogfQogCiB2
b2lkIFNRTFRyYW5zYWN0aW9uQmFja2VuZDo6Y29tcHV0ZU5leHRTdGF0ZUFuZENsZWFudXBJZk5l
ZWRlZCgpCkBAIC01MjAsNyArNTIwLDcgQEAgdm9pZCBTUUxUcmFuc2FjdGlvbkJhY2tlbmQ6OmV4
ZWN1dGVTUUwoc3RkOjp1bmlxdWVfcHRyPFNRTFN0YXRlbWVudD4gc3RhdGVtZW50QmEKICAgICBp
ZiAobV9kYXRhYmFzZS0+ZGVsZXRlZCgpKQogICAgICAgICBzdGF0ZW1lbnRCYWNrZW5kLT5zZXRE
YXRhYmFzZURlbGV0ZWRFcnJvcigpOwogCi0gICAgZW5xdWV1ZVN0YXRlbWVudEJhY2tlbmQoV1RG
Ojptb3ZlKHN0YXRlbWVudEJhY2tlbmQpKTsKKyAgICBlbnF1ZXVlU3RhdGVtZW50QmFja2VuZChX
VEZNb3ZlKHN0YXRlbWVudEJhY2tlbmQpKTsKIH0KIAogdm9pZCBTUUxUcmFuc2FjdGlvbkJhY2tl
bmQ6Om5vdGlmeURhdGFiYXNlVGhyZWFkSXNTaHV0dGluZ0Rvd24oKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
Q2xpZW50V3JhcHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvVGhy
ZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyLmNwcAppbmRleCAzZmY5OThhZTE4
NzBkNTQ3NGU1MzU3ZTBlNzQwNjk2NTRjNTJmYmRiLi42NjBmZTc4YzFhOTBjYjZjN2RmMmEyNThi
OWMwMThlYjRlZDAzMjdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNv
Y2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5u
ZWxDbGllbnRXcmFwcGVyLmNwcApAQCAtMTgzLDEwICsxODMsMTAgQEAgdm9pZCBUaHJlYWRhYmxl
V2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI6OmRpZFJlY2VpdmVNZXNzYWdlKGNvbnN0IFN0
cmluZyYgbWUKIHZvaWQgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpk
aWRSZWNlaXZlQmluYXJ5RGF0YShWZWN0b3I8Y2hhcj4mJiBiaW5hcnlEYXRhKQogewogICAgIHJl
ZigpOwotICAgIFZlY3RvcjxjaGFyPiogY2FwdHVyZWREYXRhID0gbmV3IFZlY3RvcjxjaGFyPihX
VEY6Om1vdmUoYmluYXJ5RGF0YSkpOworICAgIFZlY3RvcjxjaGFyPiogY2FwdHVyZWREYXRhID0g
bmV3IFZlY3RvcjxjaGFyPihXVEZNb3ZlKGJpbmFyeURhdGEpKTsKICAgICBtX3BlbmRpbmdUYXNr
cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPihb
dGhpcywgY2FwdHVyZWREYXRhXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKICAgICAgICAg
aWYgKG1fY2xpZW50KQotICAgICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVCaW5hcnlEYXRh
KFdURjo6bW92ZSgqY2FwdHVyZWREYXRhKSk7CisgICAgICAgICAgICBtX2NsaWVudC0+ZGlkUmVj
ZWl2ZUJpbmFyeURhdGEoV1RGTW92ZSgqY2FwdHVyZWREYXRhKSk7CiAgICAgICAgIGRlbGV0ZSBj
YXB0dXJlZERhdGE7CiAgICAgICAgIGRlcmVmKCk7CiAgICAgfSkpOwpAQCAtMjc2LDcgKzI3Niw3
IEBAIHZvaWQgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyOjpwcm9jZXNz
UGVuZGluZ1Rhc2tzKCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFZlY3RvcjxzdGQ6
OnVuaXF1ZV9wdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4+IHBlbmRpbmdUYXNrcyA9
IFdURjo6bW92ZShtX3BlbmRpbmdUYXNrcyk7CisgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxT
Y3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPj4gcGVuZGluZ1Rhc2tzID0gV1RGTW92ZShtX3Bl
bmRpbmdUYXNrcyk7CiAgICAgZm9yIChhdXRvJiB0YXNrIDogcGVuZGluZ1Rhc2tzKQogICAgICAg
ICB0YXNrLT5wZXJmb3JtVGFzaygqbV9jb250ZXh0KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAKaW5kZXggOTQ0NzBjYWY3N2VhMmZmMmYx
ZGY4NTFlYWE5YmFhNTRlNDA5ZjIyYS4uMDgzNzZkZTRhN2Q5OThiNzI0YTA5NGUwMDFlNTRiZjUw
MGEyY2U3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dl
YlNvY2tldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNv
Y2tldC5jcHAKQEAgLTU2Nyw3ICs1NjcsNyBAQCB2b2lkIFdlYlNvY2tldDo6ZGlkUmVjZWl2ZUJp
bmFyeURhdGEoVmVjdG9yPGNoYXI+JiYgYmluYXJ5RGF0YSkKICAgICBzd2l0Y2ggKG1fYmluYXJ5
VHlwZSkgewogICAgIGNhc2UgQmluYXJ5VHlwZUJsb2I6IHsKICAgICAgICAgLy8gRklYTUU6IFdl
IGp1c3QgcmVjZWl2ZWQgdGhlIGRhdGEgZnJvbSBOZXR3b3JrUHJvY2VzcywgYW5kIGFyZSBzZW5k
aW5nIGl0IGJhY2suIFRoaXMgaXMgaW5lZmZpY2llbnQuCi0gICAgICAgIFJlZlB0cjxCbG9iPiBi
bG9iID0gQmxvYjo6Y3JlYXRlKFdURjo6bW92ZShiaW5hcnlEYXRhKSwgZW1wdHlTdHJpbmcoKSk7
CisgICAgICAgIFJlZlB0cjxCbG9iPiBibG9iID0gQmxvYjo6Y3JlYXRlKFdURk1vdmUoYmluYXJ5
RGF0YSksIGVtcHR5U3RyaW5nKCkpOwogICAgICAgICBkaXNwYXRjaEV2ZW50KE1lc3NhZ2VFdmVu
dDo6Y3JlYXRlKGJsb2IucmVsZWFzZSgpLCBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKG1fdXJsKS0+
dG9TdHJpbmcoKSkpOwogICAgICAgICBicmVhazsKICAgICB9CkBAIC02NDYsNyArNjQ2LDcgQEAg
dm9pZCBXZWJTb2NrZXQ6OmRpc3BhdGNoT3JRdWV1ZUVycm9yRXZlbnQoKQogdm9pZCBXZWJTb2Nr
ZXQ6OmRpc3BhdGNoT3JRdWV1ZUV2ZW50KFJlZjxFdmVudD4mJiBldmVudCkKIHsKICAgICBpZiAo
bV9zaG91bGREZWxheUV2ZW50RmlyaW5nKQotICAgICAgICBtX3BlbmRpbmdFdmVudHMuYXBwZW5k
KFdURjo6bW92ZShldmVudCkpOworICAgICAgICBtX3BlbmRpbmdFdmVudHMuYXBwZW5kKFdURk1v
dmUoZXZlbnQpKTsKICAgICBlbHNlCiAgICAgICAgIGRpc3BhdGNoRXZlbnQoZXZlbnQpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENo
YW5uZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENo
YW5uZWwuY3BwCmluZGV4IGYwODdhNDE4YzVlNjY2NWUzNTg2NmEzZWYzZWFhMDczOWZlZmE2OWMu
Ljk0YzNmMzZiZWU2NTg3ZGM1NzJjYTUwMmY4MDcyZjg1NDdlNTU2YzAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAK
QEAgLTU4Niw3ICs1ODYsNyBAQCBib29sIFdlYlNvY2tldENoYW5uZWw6OnByb2Nlc3NGcmFtZSgp
CiAgICAgICAgICAgICAvLyBzbyB3ZSBzaG91bGQgcHJldGVuZCB0aGF0IHdlIGhhdmUgZmluaXNo
ZWQgdG8gcmVhZCB0aGlzIGZyYW1lIGFuZAogICAgICAgICAgICAgLy8gbWFrZSBzdXJlIHRoYXQg
dGhlIG1lbWJlciB2YXJpYWJsZXMgYXJlIGluIGEgY29uc2lzdGVudCBzdGF0ZSBiZWZvcmUKICAg
ICAgICAgICAgIC8vIHRoZSBoYW5kbGVyIGlzIGludm9rZWQuCi0gICAgICAgICAgICBWZWN0b3I8
Y2hhcj4gY29udGludW91c0ZyYW1lRGF0YSA9IFdURjo6bW92ZShtX2NvbnRpbnVvdXNGcmFtZURh
dGEpOworICAgICAgICAgICAgVmVjdG9yPGNoYXI+IGNvbnRpbnVvdXNGcmFtZURhdGEgPSBXVEZN
b3ZlKG1fY29udGludW91c0ZyYW1lRGF0YSk7CiAgICAgICAgICAgICBtX2hhc0NvbnRpbnVvdXNG
cmFtZSA9IGZhbHNlOwogICAgICAgICAgICAgaWYgKG1fY29udGludW91c0ZyYW1lT3BDb2RlID09
IFdlYlNvY2tldEZyYW1lOjpPcENvZGVUZXh0KSB7CiAgICAgICAgICAgICAgICAgU3RyaW5nIG1l
c3NhZ2U7CkBAIC01OTksNyArNTk5LDcgQEAgYm9vbCBXZWJTb2NrZXRDaGFubmVsOjpwcm9jZXNz
RnJhbWUoKQogICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgbV9jbGll
bnQtPmRpZFJlY2VpdmVNZXNzYWdlKG1lc3NhZ2UpOwogICAgICAgICAgICAgfSBlbHNlIGlmICht
X2NvbnRpbnVvdXNGcmFtZU9wQ29kZSA9PSBXZWJTb2NrZXRGcmFtZTo6T3BDb2RlQmluYXJ5KQot
ICAgICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlQmluYXJ5RGF0YShXVEY6Om1vdmUo
Y29udGludW91c0ZyYW1lRGF0YSkpOworICAgICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNl
aXZlQmluYXJ5RGF0YShXVEZNb3ZlKGNvbnRpbnVvdXNGcmFtZURhdGEpKTsKICAgICAgICAgfQog
ICAgICAgICBicmVhazsKIApAQCAtNjI5LDcgKzYyOSw3IEBAIGJvb2wgV2ViU29ja2V0Q2hhbm5l
bDo6cHJvY2Vzc0ZyYW1lKCkKICAgICAgICAgICAgIFZlY3RvcjxjaGFyPiBiaW5hcnlEYXRhKGZy
YW1lLnBheWxvYWRMZW5ndGgpOwogICAgICAgICAgICAgbWVtY3B5KGJpbmFyeURhdGEuZGF0YSgp
LCBmcmFtZS5wYXlsb2FkLCBmcmFtZS5wYXlsb2FkTGVuZ3RoKTsKICAgICAgICAgICAgIHNraXBC
dWZmZXIoZnJhbWVFbmQgLSBtX2J1ZmZlci5kYXRhKCkpOwotICAgICAgICAgICAgbV9jbGllbnQt
PmRpZFJlY2VpdmVCaW5hcnlEYXRhKFdURjo6bW92ZShiaW5hcnlEYXRhKSk7CisgICAgICAgICAg
ICBtX2NsaWVudC0+ZGlkUmVjZWl2ZUJpbmFyeURhdGEoV1RGTW92ZShiaW5hcnlEYXRhKSk7CiAg
ICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBtX2hhc0NvbnRpbnVvdXNGcmFtZSA9IHRydWU7
CiAgICAgICAgICAgICBtX2NvbnRpbnVvdXNGcmFtZU9wQ29kZSA9IFdlYlNvY2tldEZyYW1lOjpP
cENvZGVCaW5hcnk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tl
dHMvV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RXh0ZW5zaW9uRGlzcGF0Y2hlci5jcHAKaW5kZXggMDlk
OTllOWU4ZWRkOGVmODc2NDNkYWZlZjlmNjUyZjE5OTBkZTY5NS4uZDgzNGM3MzNlZjBiZjU4NTRi
MTgzZmQ2NjdkZjhmMDJmNzQ3NDY4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJzb2NrZXRzL1dlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVy
LmNwcApAQCAtNTcsNyArNTcsNyBAQCB2b2lkIFdlYlNvY2tldEV4dGVuc2lvbkRpc3BhdGNoZXI6
OmFkZFByb2Nlc3NvcihzdGQ6OnVuaXF1ZV9wdHI8V2ViU29ja2V0RXh0ZW5zaQogICAgIEFTU0VS
VChwcm9jZXNzb3ItPmhhbmRzaGFrZVN0cmluZygpLmxlbmd0aCgpKTsKICAgICBBU1NFUlQoIXBy
b2Nlc3Nvci0+aGFuZHNoYWtlU3RyaW5nKCkuY29udGFpbnMoJ1xuJykpOwogICAgIEFTU0VSVCgh
cHJvY2Vzc29yLT5oYW5kc2hha2VTdHJpbmcoKS5jb250YWlucyhzdGF0aWNfY2FzdDxVQ2hhcj4o
J1wwJykpKTsKLSAgICBtX3Byb2Nlc3NvcnMuYXBwZW5kKFdURjo6bW92ZShwcm9jZXNzb3IpKTsK
KyAgICBtX3Byb2Nlc3NvcnMuYXBwZW5kKFdURk1vdmUocHJvY2Vzc29yKSk7CiB9CiAKIGNvbnN0
IFN0cmluZyBXZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyOjpjcmVhdGVIZWFkZXJWYWx1ZSgp
IGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2Vi
U29ja2V0SGFuZHNoYWtlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9X
ZWJTb2NrZXRIYW5kc2hha2UuY3BwCmluZGV4IDE5Y2YwMThjMWZhOWFiYmIyNzk5YWVlNTAwOTgw
MWUyMjk4ZmM2YmUuLmNlNTFlNjkwY2VmY2QyZWJmZjU4OGEyNzY4ZjE4YjVhOGZjMWI5YTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5k
c2hha2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2Nr
ZXRIYW5kc2hha2UuY3BwCkBAIC0zNzgsNyArMzc4LDcgQEAgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYgV2ViU29ja2V0SGFuZHNoYWtlOjpzZXJ2ZXJIYW5kc2hha2VSZXNwb25zZSgpIGNvbnN0CiAK
IHZvaWQgV2ViU29ja2V0SGFuZHNoYWtlOjphZGRFeHRlbnNpb25Qcm9jZXNzb3Ioc3RkOjp1bmlx
dWVfcHRyPFdlYlNvY2tldEV4dGVuc2lvblByb2Nlc3Nvcj4gcHJvY2Vzc29yKQogewotICAgIG1f
ZXh0ZW5zaW9uRGlzcGF0Y2hlci5hZGRQcm9jZXNzb3IoV1RGOjptb3ZlKHByb2Nlc3NvcikpOwor
ICAgIG1fZXh0ZW5zaW9uRGlzcGF0Y2hlci5hZGRQcm9jZXNzb3IoV1RGTW92ZShwcm9jZXNzb3Ip
KTsKIH0KIAogVVJMIFdlYlNvY2tldEhhbmRzaGFrZTo6aHR0cFVSTEZvckF1dGhlbnRpY2F0aW9u
QW5kQ29va2llcygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
LmNwcAppbmRleCAzNGI2NGQ3N2EwZjU4ZDhjNTdmYmMwODI2MmE5MjMzNTVhOGVkMWQ2Li43OWUy
MDcyMmI4NWVmOTRhYWJlOGMwMDkyMTY5NDIyMDI3YjYxODRlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5u
ZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJl
YWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAKQEAgLTI5MywxMCArMjkzLDEwIEBAIHZvaWQgV29y
a2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlBlZXI6OmRpZFJlY2VpdmVCaW5hcnlEYXRh
KFZlY3RvcjxjaGFyPiYmCiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAogICAgIFJlZlB0
cjxUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI+IHdvcmtlckNsaWVudFdy
YXBwZXIgPSBtX3dvcmtlckNsaWVudFdyYXBwZXI7Ci0gICAgVmVjdG9yPGNoYXI+KiBjYXB0dXJl
ZERhdGEgPSBuZXcgVmVjdG9yPGNoYXI+KFdURjo6bW92ZShiaW5hcnlEYXRhKSk7CisgICAgVmVj
dG9yPGNoYXI+KiBjYXB0dXJlZERhdGEgPSBuZXcgVmVjdG9yPGNoYXI+KFdURk1vdmUoYmluYXJ5
RGF0YSkpOwogICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxT
Y29wZShbd29ya2VyQ2xpZW50V3JhcHBlciwgY2FwdHVyZWREYXRhXSAoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udGV4dCkgewogICAgICAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRl
eHQuaXNXb3JrZXJHbG9iYWxTY29wZSgpKTsKLSAgICAgICAgd29ya2VyQ2xpZW50V3JhcHBlci0+
ZGlkUmVjZWl2ZUJpbmFyeURhdGEoV1RGOjptb3ZlKCpjYXB0dXJlZERhdGEpKTsKKyAgICAgICAg
d29ya2VyQ2xpZW50V3JhcHBlci0+ZGlkUmVjZWl2ZUJpbmFyeURhdGEoV1RGTW92ZSgqY2FwdHVy
ZWREYXRhKSk7CiAgICAgICAgIGRlbGV0ZSBjYXB0dXJlZERhdGE7CiAgICAgfSwgbV90YXNrTW9k
ZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0
Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNw
cAppbmRleCA2OTBjN2MzNzc0NTAzNGE2OTBhMDA5Yzk0NzRkNWQ5MzliMTcyNDNjLi41MzhiOTU1
ZmYzZjE0YWJmOGUyOGE2MDJlYmNjMDkwZjIxM2FhMTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKQEAgLTgyMSw3ICs4MjEsNyBAQCB2b2lk
IEFYT2JqZWN0Q2FjaGU6Om5vdGlmaWNhdGlvblBvc3RUaW1lckZpcmVkKCkKICAgICAKICAgICAv
LyBJbiB0ZXN0cywgcG9zdGluZyBub3RpZmljYXRpb25zIGhhcyBhIHRlbmRlbmN5IHRvIGltbWVk
aWF0ZWx5IHF1ZXVlIHVwIG90aGVyIG5vdGlmaWNhdGlvbnMsIHdoaWNoIGNhbiBsZWFkIHRvIHVu
ZXhwZWN0ZWQgYmVoYXZpb3IKICAgICAvLyB3aGVuIHRoZSBub3RpZmljYXRpb24gbGlzdCBpcyBj
bGVhcmVkIGF0IHRoZSBlbmQuIEluc3RlYWQgY29weSB0aGlzIGxpc3QgYXQgdGhlIHN0YXJ0Lgot
ICAgIGF1dG8gbm90aWZpY2F0aW9ucyA9IFdURjo6bW92ZShtX25vdGlmaWNhdGlvbnNUb1Bvc3Qp
OworICAgIGF1dG8gbm90aWZpY2F0aW9ucyA9IFdURk1vdmUobV9ub3RpZmljYXRpb25zVG9Qb3N0
KTsKICAgICAKICAgICBmb3IgKGNvbnN0IGF1dG8mIG5vdGUgOiBub3RpZmljYXRpb25zKSB7CiAg
ICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iaiA9IG5vdGUuZmlyc3QuZ2V0KCk7CkBAIC04
NjQsNyArODY0LDcgQEAgdm9pZCBBWE9iamVjdENhY2hlOjpwYXNzd29yZE5vdGlmaWNhdGlvblBv
c3RUaW1lckZpcmVkKCkKIAogICAgIC8vIEluIHRlc3RzLCBwb3N0aW5nIG5vdGlmaWNhdGlvbnMg
aGFzIGEgdGVuZGVuY3kgdG8gaW1tZWRpYXRlbHkgcXVldWUgdXAgb3RoZXIgbm90aWZpY2F0aW9u
cywgd2hpY2ggY2FuIGxlYWQgdG8gdW5leHBlY3RlZCBiZWhhdmlvcgogICAgIC8vIHdoZW4gdGhl
IG5vdGlmaWNhdGlvbiBsaXN0IGlzIGNsZWFyZWQgYXQgdGhlIGVuZC4gSW5zdGVhZCBjb3B5IHRo
aXMgbGlzdCBhdCB0aGUgc3RhcnQuCi0gICAgYXV0byBub3RpZmljYXRpb25zID0gV1RGOjptb3Zl
KG1fcGFzc3dvcmROb3RpZmljYXRpb25zVG9Qb3N0KTsKKyAgICBhdXRvIG5vdGlmaWNhdGlvbnMg
PSBXVEZNb3ZlKG1fcGFzc3dvcmROb3RpZmljYXRpb25zVG9Qb3N0KTsKIAogICAgIGZvciAoYXV0
byYgbm90aWZpY2F0aW9uIDogbm90aWZpY2F0aW9ucykKICAgICAgICAgcG9zdFRleHRTdGF0ZUNo
YW5nZVBsYXRmb3JtTm90aWZpY2F0aW9uKG5vdGlmaWNhdGlvbi5nZXQoKSwgQVhUZXh0RWRpdFR5
cGVJbnNlcnQsICIgIiwgVmlzaWJsZVBvc2l0aW9uKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcAppbmRleCA4
YWJmYmQ1MTY1NDU4MDNkN2U4ZDY2MmQ5OGI5MjZiYTdlOTU0OWY4Li43NTlhZWMxNWNjMWQ1NTAz
ZTg2NDcxMjgzYjVmNGI4MGE5M2Q0N2YwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcApAQCAtMTQ0NSw3ICsx
NDQ1LDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6YXJpYUxhYmVsZWRCeVRleHQo
VmVjdG9yPEFjY2Vzc2liaWxpdHlUZXh0PiYgdGV4dE8KICAgICAgICAgICAgIGF4RWxlbWVudHMu
YXBwZW5kKGF4RWxlbWVudCk7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIHRleHRPcmRl
ci5hcHBlbmQoQWNjZXNzaWJpbGl0eVRleHQoYXJpYUxhYmVsZWRCeSwgQWx0ZXJuYXRpdmVUZXh0
LCBXVEY6Om1vdmUoYXhFbGVtZW50cykpKTsKKyAgICAgICAgdGV4dE9yZGVyLmFwcGVuZChBY2Nl
c3NpYmlsaXR5VGV4dChhcmlhTGFiZWxlZEJ5LCBBbHRlcm5hdGl2ZVRleHQsIFdURk1vdmUoYXhF
bGVtZW50cykpKTsKICAgICB9CiB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAppbmRleCA4OWZhNWQ3YjZkNjQ1Y2M5
MTk1YTcyZDU0NDMwN2NiZmE1Mjg2ZWYxLi4yOWRmYTA1ZDk3MDJmOWJmNGUzN2IyMGU0NTFhOTA4
YzFmYmY0NmU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eU9iamVjdC5jcHAKQEAgLTc0NSw3ICs3NDUsNyBAQCBTdHJpbmcgQWNjZXNzaWJp
bGl0eU9iamVjdDo6c2VsZWN0VGV4dChBY2Nlc3NpYmlsaXR5U2VsZWN0VGV4dENyaXRlcmlhKiBj
cml0ZXJpYQogICAgICAgICBjbG9zZXN0QmVmb3JlU3RyaW5nUmFuZ2UgPSByYW5nZU9mU3RyaW5n
Q2xvc2VzdFRvUmFuZ2VJbkRpcmVjdGlvbihzZWxlY3RlZFN0cmluZ1JhbmdlLmdldCgpLCBTZWFy
Y2hEaXJlY3Rpb25QcmV2aW91cywgc2VhcmNoU3RyaW5ncyk7CiAgICAgCiAgICAgLy8gRGV0ZXJt
aW5lIHdoaWNoIGNhbmRpZGF0ZSBpcyBjbG9zZXN0IHRvIHRoZSBzZWxlY3Rpb24gYW5kIHBlcmZv
cm0gdGhlIGFjdGl2aXR5LgotICAgIGlmIChSZWZQdHI8UmFuZ2U+IGNsb3Nlc3RTdHJpbmdSYW5n
ZSA9IHJhbmdlQ2xvc2VzdFRvUmFuZ2Uoc2VsZWN0ZWRTdHJpbmdSYW5nZS5nZXQoKSwgV1RGOjpt
b3ZlKGNsb3Nlc3RBZnRlclN0cmluZ1JhbmdlKSwgV1RGOjptb3ZlKGNsb3Nlc3RCZWZvcmVTdHJp
bmdSYW5nZSkpKSB7CisgICAgaWYgKFJlZlB0cjxSYW5nZT4gY2xvc2VzdFN0cmluZ1JhbmdlID0g
cmFuZ2VDbG9zZXN0VG9SYW5nZShzZWxlY3RlZFN0cmluZ1JhbmdlLmdldCgpLCBXVEZNb3ZlKGNs
b3Nlc3RBZnRlclN0cmluZ1JhbmdlKSwgV1RGTW92ZShjbG9zZXN0QmVmb3JlU3RyaW5nUmFuZ2Up
KSkgewogICAgICAgICAvLyBJZiB0aGUgc2VhcmNoIHN0YXJ0ZWQgd2l0aGluIGEgdGV4dCBjb250
cm9sLCBlbnN1cmUgdGhhdCB0aGUgcmVzdWx0IGlzIGluc2lkZSB0aGF0IGVsZW1lbnQuCiAgICAg
ICAgIGlmIChlbGVtZW50KCkgJiYgZWxlbWVudCgpLT5pc1RleHRGb3JtQ29udHJvbCgpKSB7CiAg
ICAgICAgICAgICBpZiAoIWNsb3Nlc3RTdHJpbmdSYW5nZS0+c3RhcnRDb250YWluZXIoKS5pc0Rl
c2NlbmRhbnRPclNoYWRvd0Rlc2NlbmRhbnRPZihlbGVtZW50KCkpIHx8ICFjbG9zZXN0U3RyaW5n
UmFuZ2UtPmVuZENvbnRhaW5lcigpLmlzRGVzY2VuZGFudE9yU2hhZG93RGVzY2VuZGFudE9mKGVs
ZW1lbnQoKSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eU9iamVjdC5oCmluZGV4IDgzY2U0MDg5M2JjMjE1NTAzMDMxZTFlYjZjYzU3NzYxZGQwY2Rm
YzAuLjk4ODRhYzAwOTI3NjgyZjNlY2QwNmI5NDI5NDJkOTNlMjk3NmNiMzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCkBAIC0y
NDgsNyArMjQ4LDcgQEAgc3RydWN0IEFjY2Vzc2liaWxpdHlUZXh0IHsKICAgICBBY2Nlc3NpYmls
aXR5VGV4dChjb25zdCBTdHJpbmcmIHQsIGNvbnN0IEFjY2Vzc2liaWxpdHlUZXh0U291cmNlJiBz
LCBWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlPYmplY3Q+PiBlbGVtZW50cykKICAgICA6IHRl
eHQodCkKICAgICAsIHRleHRTb3VyY2UocykKLSAgICAsIHRleHRFbGVtZW50cyhXVEY6Om1vdmUo
ZWxlbWVudHMpKQorICAgICwgdGV4dEVsZW1lbnRzKFdURk1vdmUoZWxlbWVudHMpKQogICAgIHsg
fQogCiAgICAgQWNjZXNzaWJpbGl0eVRleHQoY29uc3QgU3RyaW5nJiB0LCBjb25zdCBBY2Nlc3Np
YmlsaXR5VGV4dFNvdXJjZSYgcywgY29uc3QgUmVmUHRyPEFjY2Vzc2liaWxpdHlPYmplY3Q+IGVs
ZW1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L0RPTU9i
amVjdENhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvRE9NT2JqZWN0
Q2FjaGUuY3BwCmluZGV4IGQ1MmZhZWE2NGQxYWQzZDQzNDViNzQ5ZmQyNTI2NzdiMmUzY2NlMjgu
LmJjMGUwYTkyYWFlNzQyZDY1NmI5NjU1ZjE3YTAxMzUzYmJiZjRjMWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvRE9NT2JqZWN0Q2FjaGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvRE9NT2JqZWN0Q2FjaGUuY3BwCkBAIC0xNTQs
NyArMTU0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgaWYgKG1fb2JqZWN0cy5pc0VtcHR5KCkpCiAg
ICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgYXV0byBvYmplY3RzID0gV1RGOjptb3ZlKG1f
b2JqZWN0cyk7CisgICAgICAgIGF1dG8gb2JqZWN0cyA9IFdURk1vdmUobV9vYmplY3RzKTsKIAog
ICAgICAgICAvLyBEZWxldGluZyBvZiBET00gd3JhcHBlcnMgbWlnaHQgZW5kIHVwIGRlbGV0aW5n
IHRoZSB3cmFwcGVkIGNvcmUgb2JqZWN0IHdoaWNoIGNvdWxkIGNhdXNlIHNvbWUgcHJvYmxlbXMK
ICAgICAgICAgLy8gZm9yIGV4YW1wbGUgaWYgYSBEb2N1bWVudCBpcyBkZWxldGVkIGR1cmluZyB0
aGUgZnJhbWUgZGVzdHJ1Y3Rpb24sIHNvIHdlIHJlbW92ZSB0aGUgd2VhayByZWZlcmVuY2VzIG5v
dwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxp
dGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVz
LmNwcAppbmRleCA3MTcxZGUxYWJlNTUyMzgyZjBjZmNhMDVlMzg1OTAwNWI3MjAyMmMxLi5iZGE1
NDYyMGUwNjY3ZjMwY2ZjMTMwM2RiOTE3OTlmOGM3NDE1ZmNkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcApAQCAtMzgxLDkgKzM4
MSw5IEBAIFJlZlB0cjxJREJLZXk+IG1heWJlQ3JlYXRlSURCS2V5RnJvbVNjcmlwdFZhbHVlQW5k
S2V5UGF0aChFeGVjU3RhdGUmIGV4ZWMsIGNvbnN0CiAgICAgICAgICAgICBSZWZQdHI8SURCS2V5
PiBrZXkgPSBpbnRlcm5hbENyZWF0ZUlEQktleUZyb21TY3JpcHRWYWx1ZUFuZEtleVBhdGgoJmV4
ZWMsIHZhbHVlLCBzdHJpbmcpOwogICAgICAgICAgICAgaWYgKCFrZXkpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgICAgICByZXN1bHQudW5jaGVja2VkQXBwZW5kKFdU
Rjo6bW92ZShrZXkpKTsKKyAgICAgICAgICAgIHJlc3VsdC51bmNoZWNrZWRBcHBlbmQoV1RGTW92
ZShrZXkpKTsKICAgICAgICAgfQotICAgICAgICByZXR1cm4gSURCS2V5OjpjcmVhdGVBcnJheShX
VEY6Om1vdmUocmVzdWx0KSk7CisgICAgICAgIHJldHVybiBJREJLZXk6OmNyZWF0ZUFycmF5KFdU
Rk1vdmUocmVzdWx0KSk7CiAgICAgfQogCiAgICAgQVNTRVJUKGtleVBhdGgudHlwZSgpID09IElu
ZGV4ZWREQjo6S2V5UGF0aFR5cGU6OlN0cmluZyk7CkBAIC01OTQsNyArNTk0LDcgQEAgdm9pZCBn
ZW5lcmF0ZUluZGV4S2V5Rm9yVmFsdWUoRXhlY1N0YXRlJiBleGVjLCBjb25zdCBJREJJbmRleElu
Zm8mIGluZm8sIEpTVmFsdWUKICAgICBpZiAoa2V5RGF0YXMuaXNFbXB0eSgpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBvdXRLZXkgPSBJbmRleEtleShXVEY6Om1vdmUoa2V5RGF0YXMpKTsKKyAg
ICBvdXRLZXkgPSBJbmRleEtleShXVEZNb3ZlKGtleURhdGFzKSk7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3J5
cHRvQWxnb3JpdGhtRGljdGlvbmFyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0NyeXB0b0FsZ29yaXRobURpY3Rpb25hcnkuY3BwCmluZGV4IGYwMWYzZWEyNzVhOGM0YzhjYzQy
MWYwNGE4ZGEzNDIzMjdlZDE5YjUuLjY5OWZlNTM0YmNjYjM1MDcxYWVhMzQ3NGJmZGQyMDdjYTY5
N2FjMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRvQWxn
b3JpdGhtRGljdGlvbmFyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlND
cnlwdG9BbGdvcml0aG1EaWN0aW9uYXJ5LmNwcApAQCAtMTUyLDcgKzE1Miw3IEBAIHN0YXRpYyBz
dGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4gY3JlYXRlQWVzQ2JjUGFy
YW1zKEV4ZWNTdGF0ZSoKIAogICAgIG1lbWNweShyZXN1bHQtPml2LmRhdGEoKSwgaXZEYXRhLmZp
cnN0LCBpdkRhdGEuc2Vjb25kKTsKIAotICAgIHJldHVybiBXVEY6Om1vdmUocmVzdWx0KTsKKyAg
ICByZXR1cm4gV1RGTW92ZShyZXN1bHQpOwogfQogCiBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPENy
eXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+IGNyZWF0ZUFlc0tleUdlblBhcmFtcyhFeGVjU3RhdGUq
IGV4ZWMsIEpTVmFsdWUgdmFsdWUpCkBAIC0xNzAsNyArMTcwLDcgQEAgc3RhdGljIHN0ZDo6dW5p
cXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiBjcmVhdGVBZXNLZXlHZW5QYXJhbXMo
RXhlY1N0YXQKIAogICAgIHJlc3VsdC0+bGVuZ3RoID0gdG9VSW50MTYoZXhlYywgbGVuZ3RoVmFs
dWUsIEVuZm9yY2VSYW5nZSk7CiAKLSAgICByZXR1cm4gV1RGOjptb3ZlKHJlc3VsdCk7CisgICAg
cmV0dXJuIFdURk1vdmUocmVzdWx0KTsKIH0KIAogc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxDcnlw
dG9BbGdvcml0aG1QYXJhbWV0ZXJzPiBjcmVhdGVIbWFjUGFyYW1zKEV4ZWNTdGF0ZSogZXhlYywg
SlNWYWx1ZSB2YWx1ZSkKQEAgLTE4OCw3ICsxODgsNyBAQCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRy
PENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+IGNyZWF0ZUhtYWNQYXJhbXMoRXhlY1N0YXRlKiBl
eAogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICByZXR1cm4gV1RGOjptb3Zl
KHJlc3VsdCk7CisgICAgcmV0dXJuIFdURk1vdmUocmVzdWx0KTsKIH0KIAogc3RhdGljIHN0ZDo6
dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiBjcmVhdGVIbWFjS2V5UGFyYW1z
KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKQEAgLTIxMCw3ICsyMTAsNyBAQCBzdGF0
aWMgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+IGNyZWF0ZUhtYWNL
ZXlQYXJhbXMoRXhlY1N0YXRlKgogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gV1RGOjptb3ZlKHJlc3VsdCk7CisgICAg
cmV0dXJuIFdURk1vdmUocmVzdWx0KTsKIH0KIAogc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxDcnlw
dG9BbGdvcml0aG1QYXJhbWV0ZXJzPiBjcmVhdGVSc2FLZXlHZW5QYXJhbXMoRXhlY1N0YXRlKiBl
eGVjLCBKU1ZhbHVlIHZhbHVlKQpAQCAtMjQ1LDcgKzI0NSw3IEBAIHN0YXRpYyBzdGQ6OnVuaXF1
ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4gY3JlYXRlUnNhS2V5R2VuUGFyYW1zKEV4
ZWNTdGF0CiAKICAgICByZXN1bHQtPmhhc0hhc2ggPSBnZXRIYXNoQWxnb3JpdGhtKGpzRGljdGlv
bmFyeSwgcmVzdWx0LT5oYXNoLCBIYXNoUmVxdWlyZW1lbnQ6Ok9wdGlvbmFsKTsgCiAKLSAgICBy
ZXR1cm4gV1RGOjptb3ZlKHJlc3VsdCk7CisgICAgcmV0dXJuIFdURk1vdmUocmVzdWx0KTsKIH0K
IAogc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiBjcmVh
dGVSc2FLZXlQYXJhbXNXaXRoSGFzaChFeGVjU3RhdGUqLCBKU1ZhbHVlKQpAQCAtMjc1LDcgKzI3
NSw3IEBAIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4g
Y3JlYXRlUnNhT2FlcFBhcmFtcyhFeGVjU3RhdGUqCiAKICAgICByZXN1bHQtPmhhc0xhYmVsID0g
IWxhYmVsVmFsdWUuaXNVbmRlZmluZWRPck51bGwoKTsKICAgICBpZiAoIXJlc3VsdC0+aGFzTGFi
ZWwpCi0gICAgICAgIHJldHVybiBXVEY6Om1vdmUocmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIFdU
Rk1vdmUocmVzdWx0KTsKIAogICAgIENyeXB0b09wZXJhdGlvbkRhdGEgbGFiZWxEYXRhOwogICAg
IGlmICghY3J5cHRvT3BlcmF0aW9uRGF0YUZyb21KU1ZhbHVlKGV4ZWMsIGxhYmVsVmFsdWUsIGxh
YmVsRGF0YSkpIHsKQEAgLTI4NSw3ICsyODUsNyBAQCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPENy
eXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+IGNyZWF0ZVJzYU9hZXBQYXJhbXMoRXhlY1N0YXRlKgog
CiAgICAgcmVzdWx0LT5sYWJlbC5hcHBlbmQobGFiZWxEYXRhLmZpcnN0LCBsYWJlbERhdGEuc2Vj
b25kKTsKIAotICAgIHJldHVybiBXVEY6Om1vdmUocmVzdWx0KTsKKyAgICByZXR1cm4gV1RGTW92
ZShyZXN1bHQpOwogfQogCiBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBh
cmFtZXRlcnM+IGNyZWF0ZVJzYVNzYVBhcmFtcyhFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFs
dWUpCkBAIC0zMDMsNyArMzAzLDcgQEAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdv
cml0aG1QYXJhbWV0ZXJzPiBjcmVhdGVSc2FTc2FQYXJhbXMoRXhlY1N0YXRlKgogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICByZXR1cm4gV1RGOjptb3ZlKHJlc3VsdCk7Cisg
ICAgcmV0dXJuIFdURk1vdmUocmVzdWx0KTsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPENyeXB0b0Fs
Z29yaXRobVBhcmFtZXRlcnM+IEpTQ3J5cHRvQWxnb3JpdGhtRGljdGlvbmFyeTo6Y3JlYXRlUGFy
YW1ldGVyc0ZvckVuY3J5cHQoRXhlY1N0YXRlKiBleGVjLCBDcnlwdG9BbGdvcml0aG1JZGVudGlm
aWVyIGFsZ29yaXRobSwgSlNWYWx1ZSB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTQ3J5cHRvS2V5U2VyaWFsaXphdGlvbkpXSy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b0tleVNlcmlhbGl6YXRpb25KV0suY3BwCmluZGV4IGEx
MjBjOTIwNzZlZjY3N2FmMDU3Y2E5YTNjMTFhNjQwMjc4OWYxMjcuLjAzNDA0N2RmOTk2MzUyNjNh
MGViZTEyMjdlYjZhODdmNmM0N2E5OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTQ3J5cHRvS2V5U2VyaWFsaXphdGlvbkpXSy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNDcnlwdG9LZXlTZXJpYWxpemF0aW9uSldLLmNwcApAQCAtMTUyLDcg
KzE1Miw3IEBAIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVy
cz4gY3JlYXRlSE1BQ1BhcmFtZXRlcnMoQ3J5cHRvQWxnCiB7CiAgICAgc3RkOjp1bmlxdWVfcHRy
PENyeXB0b0FsZ29yaXRobUhtYWNQYXJhbXM+IGhtYWNQYXJhbWV0ZXJzID0gc3RkOjptYWtlX3Vu
aXF1ZTxDcnlwdG9BbGdvcml0aG1IbWFjUGFyYW1zPigpOwogICAgIGhtYWNQYXJhbWV0ZXJzLT5o
YXNoID0gaGFzaEZ1bmN0aW9uOwotICAgIHJldHVybiBXVEY6Om1vdmUoaG1hY1BhcmFtZXRlcnMp
OworICAgIHJldHVybiBXVEZNb3ZlKGhtYWNQYXJhbWV0ZXJzKTsKIH0KIAogc3RhdGljIHN0ZDo6
dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiBjcmVhdGVSU0FLZXlQYXJhbWV0
ZXJzV2l0aEhhc2goQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBoYXNoRnVuY3Rpb24pCkBAIC0x
NjAsNyArMTYwLDcgQEAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJh
bWV0ZXJzPiBjcmVhdGVSU0FLZXlQYXJhbWV0ZXJzV2l0aEhhc2gKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8Q3J5cHRvQWxnb3JpdGhtUnNhS2V5UGFyYW1zV2l0aEhhc2g+IHJzYUtleVBhcmFtZXRlcnMg
PSBzdGQ6Om1ha2VfdW5pcXVlPENyeXB0b0FsZ29yaXRobVJzYUtleVBhcmFtc1dpdGhIYXNoPigp
OwogICAgIHJzYUtleVBhcmFtZXRlcnMtPmhhc0hhc2ggPSB0cnVlOwogICAgIHJzYUtleVBhcmFt
ZXRlcnMtPmhhc2ggPSBoYXNoRnVuY3Rpb247Ci0gICAgcmV0dXJuIFdURjo6bW92ZShyc2FLZXlQ
YXJhbWV0ZXJzKTsKKyAgICByZXR1cm4gV1RGTW92ZShyc2FLZXlQYXJhbWV0ZXJzKTsKIH0KIAog
Ym9vbCBKU0NyeXB0b0tleVNlcmlhbGl6YXRpb25KV0s6OnJlY29uY2lsZUFsZ29yaXRobShzdGQ6
OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtPiYgc3VnZ2VzdGVkQWxnb3JpdGhtLCBzdGQ6OnVu
aXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4mIHN1Z2dlc3RlZFBhcmFtZXRlcnMp
IGNvbnN0CkBAIC0yMjEsOCArMjIxLDggQEAgYm9vbCBKU0NyeXB0b0tleVNlcmlhbGl6YXRpb25K
V0s6OnJlY29uY2lsZUFsZ29yaXRobShzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3IKICAgICB9
CiAKICAgICBpZiAoIXN1Z2dlc3RlZEFsZ29yaXRobSkgewotICAgICAgICBzdWdnZXN0ZWRBbGdv
cml0aG0gPSBXVEY6Om1vdmUoYWxnb3JpdGhtKTsKLSAgICAgICAgc3VnZ2VzdGVkUGFyYW1ldGVy
cyA9ICBXVEY6Om1vdmUocGFyYW1ldGVycyk7CisgICAgICAgIHN1Z2dlc3RlZEFsZ29yaXRobSA9
IFdURk1vdmUoYWxnb3JpdGhtKTsKKyAgICAgICAgc3VnZ2VzdGVkUGFyYW1ldGVycyA9ICBXVEZN
b3ZlKHBhcmFtZXRlcnMpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZS5oIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01Qcm9taXNlLmgKaW5kZXggNTE4MmI0MGM0MGU0YmMyMDkw
YmUxMTI0ZjQ1YTdhN2UxZWZhMThiZC4uM2RmMjNjNmY1MjE3NTY4ODViOTg0NjFlMzc3MzcyMGUy
OTg0NDBmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Qcm9t
aXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Qcm9taXNlLmgKQEAg
LTcwLDggKzcwLDggQEAgaW5saW5lIEpTQzo6SlNWYWx1ZSBjYWxsUHJvbWlzZUZ1bmN0aW9uKEpT
Qzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpFbmNvZGVkSlNWYWwKIHRlbXBsYXRlIDx0eXBlbmFt
ZSBWYWx1ZSwgdHlwZW5hbWUgRXJyb3I+CiBjbGFzcyBET01Qcm9taXNlIHsKIHB1YmxpYzoKLSAg
ICBET01Qcm9taXNlKERlZmVycmVkV3JhcHBlciYmIHdyYXBwZXIpIDogbV93cmFwcGVyKFdURjo6
bW92ZSh3cmFwcGVyKSkgeyB9Ci0gICAgRE9NUHJvbWlzZShET01Qcm9taXNlJiYgcHJvbWlzZSkg
OiBtX3dyYXBwZXIoV1RGOjptb3ZlKHByb21pc2UubV93cmFwcGVyKSkgeyB9CisgICAgRE9NUHJv
bWlzZShEZWZlcnJlZFdyYXBwZXImJiB3cmFwcGVyKSA6IG1fd3JhcHBlcihXVEZNb3ZlKHdyYXBw
ZXIpKSB7IH0KKyAgICBET01Qcm9taXNlKERPTVByb21pc2UmJiBwcm9taXNlKSA6IG1fd3JhcHBl
cihXVEZNb3ZlKHByb21pc2UubV93cmFwcGVyKSkgeyB9CiAKICAgICBET01Qcm9taXNlKGNvbnN0
IERPTVByb21pc2UmKT0gZGVsZXRlOwogICAgIERPTVByb21pc2UmIG9wZXJhdG9yPShET01Qcm9t
aXNlIGNvbnN0JikgPSBkZWxldGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01XaW5kb3dCYXNlLmNwcAppbmRleCBjMjBhMDVkOGI0N2VmZGRjZmI0YjBmZmFhNjNjYzhiZmFl
OTliNzFjLi4wNjVmMWJmODhiNGY1NTgyN2U0MmYyMTU3Mzk1ODFkMWVkMDA1Y2EyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAKQEAgLTI4Miw3
ICsyODIsNyBAQCB2b2lkIEpTRE9NV2luZG93QmFzZTo6cXVldWVUYXNrVG9FdmVudExvb3AoY29u
c3QgSlNHbG9iYWxPYmplY3QqIG9iamVjdCwgUGFzc1JlZgogICAgICAgICBjYWxsYmFjay0+Y2Fs
bCgpOwogICAgIH0pOwogCi0gICAgTWljcm90YXNrUXVldWU6Om1haW5UaHJlYWRRdWV1ZSgpLmFw
cGVuZChXVEY6Om1vdmUobWljcm90YXNrKSk7CisgICAgTWljcm90YXNrUXVldWU6Om1haW5UaHJl
YWRRdWV1ZSgpLmFwcGVuZChXVEZNb3ZlKG1pY3JvdGFzaykpOwogfQogCiB2b2lkIEpTRE9NV2lu
ZG93QmFzZTo6d2lsbFJlbW92ZUZyb21XaW5kb3dTaGVsbCgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKaW5kZXggMDBlNjJhNDJiNjQ5YmY3
ODU2M2Q2MDg4ZWEzOGRmODEwNTk2MjM4Yy4uMzYxMzhiODhkYjI4ZjcxNjZlNTNjM2EwMWIwMTQ4
ZTViYmExMjBiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01X
aW5kb3dDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2lu
ZG93Q3VzdG9tLmNwcApAQCAtNjUyLDcgKzY1Miw3IEBAIEpTVmFsdWUgSlNET01XaW5kb3c6OnNl
dFRpbWVvdXQoRXhlY1N0YXRlJiBzdGF0ZSkKICAgICBpbnQgZGVsYXkgPSBzdGF0ZS5hcmd1bWVu
dCgxKS50b0ludDMyKCZzdGF0ZSk7CiAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBp
bnQgcmVzdWx0ID0gd3JhcHBlZCgpLnNldFRpbWVvdXQoV1RGOjptb3ZlKGFjdGlvbiksIGRlbGF5
LCBlYyk7CisgICAgaW50IHJlc3VsdCA9IHdyYXBwZWQoKS5zZXRUaW1lb3V0KFdURk1vdmUoYWN0
aW9uKSwgZGVsYXksIGVjKTsKICAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBlYyk7CiAKICAg
ICByZXR1cm4ganNOdW1iZXIocmVzdWx0KTsKQEAgLTY3MCw3ICs2NzAsNyBAQCBKU1ZhbHVlIEpT
RE9NV2luZG93OjpzZXRJbnRlcnZhbChFeGVjU3RhdGUmIHN0YXRlKQogICAgICAgICByZXR1cm4g
anNOdW1iZXIoMCk7CiAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBpbnQgcmVzdWx0
ID0gd3JhcHBlZCgpLnNldEludGVydmFsKFdURjo6bW92ZShhY3Rpb24pLCBkZWxheSwgZWMpOwor
ICAgIGludCByZXN1bHQgPSB3cmFwcGVkKCkuc2V0SW50ZXJ2YWwoV1RGTW92ZShhY3Rpb24pLCBk
ZWxheSwgZWMpOwogICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsKIAogICAgIHJldHVy
biBqc051bWJlcihyZXN1bHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01XcmFwcGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdyYXBw
ZXIuaAppbmRleCAyNjI2ZjU4YWVlYTkwMjQ1MTAwYmQyZGI5YWUxMDdkZTBjMzNkZWUzLi4yNGEz
MGVmMmNlNTdjYjI4YjNkMTIxNzk3NzFmM2I5OTUxN2YzOWE5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdyYXBwZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTVdyYXBwZXIuaApAQCAtNTcsNyArNTcsNyBAQCBwdWJsaWM6CiBwcm90
ZWN0ZWQ6CiAgICAgSlNET01XcmFwcGVyKEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTQzo6
SlNHbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgUmVmPEltcGxlbWVudGF0aW9uQ2xhc3M+JiYg
aW1wbCkKICAgICAgICAgOiBCYXNlKHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KQotICAgICAgICAs
IG1fd3JhcHBlZChXVEY6Om1vdmUoaW1wbCkpIHsgfQorICAgICAgICAsIG1fd3JhcHBlZChXVEZN
b3ZlKGltcGwpKSB7IH0KIAogcHJpdmF0ZToKICAgICBSZWY8SW1wbGVtZW50YXRpb25DbGFzcz4g
bV93cmFwcGVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZXNz
YWdlRXZlbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNZXNzYWdl
RXZlbnRDdXN0b20uY3BwCmluZGV4IGI1NWRjNGVhMjUyNDQwMmU1YmU0YTgyZDIyNTY2MTAwZjYy
MzFjNTkuLjFlNWIwY2FhMWY1NDYyNzFiMzU1MjVjYzlmOTQ4ZTY3YjNkMDg2NzUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZUV2ZW50Q3VzdG9tLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VFdmVudEN1c3RvbS5jcHAK
QEAgLTEyNSw3ICsxMjUsNyBAQCBzdGF0aWMgSlNDOjpKU1ZhbHVlIGhhbmRsZUluaXRNZXNzYWdl
RXZlbnQoSlNNZXNzYWdlRXZlbnQqIGpzRXZlbnQsIEpTQzo6RXhlY1N0YQogICAgICAgICByZXR1
cm4ganNVbmRlZmluZWQoKTsKIAogICAgIE1lc3NhZ2VFdmVudCYgZXZlbnQgPSBqc0V2ZW50LT53
cmFwcGVkKCk7Ci0gICAgZXZlbnQuaW5pdE1lc3NhZ2VFdmVudCh0eXBlQXJnLCBjYW5CdWJibGVB
cmcsIGNhbmNlbGFibGVBcmcsIGRhdGFBcmcsIG9yaWdpbkFyZywgbGFzdEV2ZW50SWRBcmcsIHNv
dXJjZUFyZywgV1RGOjptb3ZlKG1lc3NhZ2VQb3J0cykpOworICAgIGV2ZW50LmluaXRNZXNzYWdl
RXZlbnQodHlwZUFyZywgY2FuQnViYmxlQXJnLCBjYW5jZWxhYmxlQXJnLCBkYXRhQXJnLCBvcmln
aW5BcmcsIGxhc3RFdmVudElkQXJnLCBzb3VyY2VBcmcsIFdURk1vdmUobWVzc2FnZVBvcnRzKSk7
CiAgICAganNFdmVudC0+bV9kYXRhLnNldChzdGF0ZS52bSgpLCBqc0V2ZW50LCBkYXRhQXJnLmpz
VmFsdWUoKSk7CiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N1YnRsZUNyeXB0b0N1c3RvbS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N1YnRsZUNyeXB0b0N1c3RvbS5jcHAKaW5kZXggYTUwZjgz
OTliYTU4NjRkMDFhYjEzMGM4ZmNkNTFkZTRlYmRlZTZkZC4uZjNiNmY2NzU0NTRkNjZkMTY0ZTVl
YWRhY2JmZTM1ZDA3MTlhMjE5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNTdWJ0bGVDcnlwdG9DdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTU3VidGxlQ3J5cHRvQ3VzdG9tLmNwcApAQCAtMTc0LDcgKzE3NCw3IEBAIEpTVmFsdWUg
SlNTdWJ0bGVDcnlwdG86OmVuY3J5cHQoRXhlY1N0YXRlJiBzdGF0ZSkKICAgICB9OwogCiAgICAg
RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgYWxnb3JpdGhtLT5lbmNyeXB0KCpwYXJhbWV0ZXJz
LCAqa2V5LCBkYXRhLCBXVEY6Om1vdmUoc3VjY2Vzc0NhbGxiYWNrKSwgV1RGOjptb3ZlKGZhaWx1
cmVDYWxsYmFjayksIGVjKTsKKyAgICBhbGdvcml0aG0tPmVuY3J5cHQoKnBhcmFtZXRlcnMsICpr
ZXksIGRhdGEsIFdURk1vdmUoc3VjY2Vzc0NhbGxiYWNrKSwgV1RGTW92ZShmYWlsdXJlQ2FsbGJh
Y2spLCBlYyk7CiAgICAgaWYgKGVjKSB7CiAgICAgICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUs
IGVjKTsKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CkBAIC0yMjYsNyArMjI2LDcgQEAg
SlNWYWx1ZSBKU1N1YnRsZUNyeXB0bzo6ZGVjcnlwdChFeGVjU3RhdGUmIHN0YXRlKQogICAgIH07
CiAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBhbGdvcml0aG0tPmRlY3J5cHQoKnBh
cmFtZXRlcnMsICprZXksIGRhdGEsIFdURjo6bW92ZShzdWNjZXNzQ2FsbGJhY2spLCBXVEY6Om1v
dmUoZmFpbHVyZUNhbGxiYWNrKSwgZWMpOworICAgIGFsZ29yaXRobS0+ZGVjcnlwdCgqcGFyYW1l
dGVycywgKmtleSwgZGF0YSwgV1RGTW92ZShzdWNjZXNzQ2FsbGJhY2spLCBXVEZNb3ZlKGZhaWx1
cmVDYWxsYmFjayksIGVjKTsKICAgICBpZiAoZWMpIHsKICAgICAgICAgc2V0RE9NRXhjZXB0aW9u
KCZzdGF0ZSwgZWMpOwogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKQEAgLTI3OCw3ICsy
NzgsNyBAQCBKU1ZhbHVlIEpTU3VidGxlQ3J5cHRvOjpzaWduKEV4ZWNTdGF0ZSYgc3RhdGUpCiAg
ICAgfTsKIAogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGFsZ29yaXRobS0+c2lnbigq
cGFyYW1ldGVycywgKmtleSwgZGF0YSwgV1RGOjptb3ZlKHN1Y2Nlc3NDYWxsYmFjayksIFdURjo6
bW92ZShmYWlsdXJlQ2FsbGJhY2spLCBlYyk7CisgICAgYWxnb3JpdGhtLT5zaWduKCpwYXJhbWV0
ZXJzLCAqa2V5LCBkYXRhLCBXVEZNb3ZlKHN1Y2Nlc3NDYWxsYmFjayksIFdURk1vdmUoZmFpbHVy
ZUNhbGxiYWNrKSwgZWMpOwogICAgIGlmIChlYykgewogICAgICAgICBzZXRET01FeGNlcHRpb24o
JnN0YXRlLCBlYyk7CiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwpAQCAtMzM2LDcgKzMz
Niw3IEBAIEpTVmFsdWUgSlNTdWJ0bGVDcnlwdG86OnZlcmlmeShFeGVjU3RhdGUmIHN0YXRlKQog
ICAgIH07CiAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBhbGdvcml0aG0tPnZlcmlm
eSgqcGFyYW1ldGVycywgKmtleSwgc2lnbmF0dXJlLCBkYXRhLCBXVEY6Om1vdmUoc3VjY2Vzc0Nh
bGxiYWNrKSwgV1RGOjptb3ZlKGZhaWx1cmVDYWxsYmFjayksIGVjKTsKKyAgICBhbGdvcml0aG0t
PnZlcmlmeSgqcGFyYW1ldGVycywgKmtleSwgc2lnbmF0dXJlLCBkYXRhLCBXVEZNb3ZlKHN1Y2Nl
c3NDYWxsYmFjayksIFdURk1vdmUoZmFpbHVyZUNhbGxiYWNrKSwgZWMpOwogICAgIGlmIChlYykg
ewogICAgICAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBlYyk7CiAgICAgICAgIHJldHVybiBq
c1VuZGVmaW5lZCgpOwpAQCAtMzc4LDcgKzM3OCw3IEBAIEpTVmFsdWUgSlNTdWJ0bGVDcnlwdG86
OmRpZ2VzdChFeGVjU3RhdGUmIHN0YXRlKQogICAgIH07CiAKICAgICBFeGNlcHRpb25Db2RlIGVj
ID0gMDsKLSAgICBhbGdvcml0aG0tPmRpZ2VzdCgqcGFyYW1ldGVycywgZGF0YSwgV1RGOjptb3Zl
KHN1Y2Nlc3NDYWxsYmFjayksIFdURjo6bW92ZShmYWlsdXJlQ2FsbGJhY2spLCBlYyk7CisgICAg
YWxnb3JpdGhtLT5kaWdlc3QoKnBhcmFtZXRlcnMsIGRhdGEsIFdURk1vdmUoc3VjY2Vzc0NhbGxi
YWNrKSwgV1RGTW92ZShmYWlsdXJlQ2FsbGJhY2spLCBlYyk7CiAgICAgaWYgKGVjKSB7CiAgICAg
ICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIGVjKTsKICAgICAgICAgcmV0dXJuIGpzVW5kZWZp
bmVkKCk7CkBAIC00MzQsNyArNDM0LDcgQEAgSlNWYWx1ZSBKU1N1YnRsZUNyeXB0bzo6Z2VuZXJh
dGVLZXkoRXhlY1N0YXRlJiBzdGF0ZSkKICAgICB9OwogCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9
IDA7Ci0gICAgYWxnb3JpdGhtLT5nZW5lcmF0ZUtleSgqcGFyYW1ldGVycywgZXh0cmFjdGFibGUs
IGtleVVzYWdlcywgV1RGOjptb3ZlKHN1Y2Nlc3NDYWxsYmFjayksIFdURjo6bW92ZShmYWlsdXJl
Q2FsbGJhY2spLCBlYyk7CisgICAgYWxnb3JpdGhtLT5nZW5lcmF0ZUtleSgqcGFyYW1ldGVycywg
ZXh0cmFjdGFibGUsIGtleVVzYWdlcywgV1RGTW92ZShzdWNjZXNzQ2FsbGJhY2spLCBXVEZNb3Zl
KGZhaWx1cmVDYWxsYmFjayksIGVjKTsKICAgICBpZiAoZWMpIHsKICAgICAgICAgc2V0RE9NRXhj
ZXB0aW9uKCZzdGF0ZSwgZWMpOwogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKQEAgLTQ5
NSw3ICs0OTUsNyBAQCBzdGF0aWMgdm9pZCBpbXBvcnRLZXkoRXhlY1N0YXRlJiBzdGF0ZSwgQ3J5
cHRvS2V5Rm9ybWF0IGtleUZvcm1hdCwgQ3J5cHRvT3BlcmF0aQogICAgICAgICByZXR1cm47CiAK
ICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBhbGdvcml0aG0tPmltcG9ydEtleSgqcGFy
YW1ldGVycywgKmtleURhdGEsIGV4dHJhY3RhYmxlLCBrZXlVc2FnZXMsIFdURjo6bW92ZShjYWxs
YmFjayksIFdURjo6bW92ZShmYWlsdXJlQ2FsbGJhY2spLCBlYyk7CisgICAgYWxnb3JpdGhtLT5p
bXBvcnRLZXkoKnBhcmFtZXRlcnMsICprZXlEYXRhLCBleHRyYWN0YWJsZSwga2V5VXNhZ2VzLCBX
VEZNb3ZlKGNhbGxiYWNrKSwgV1RGTW92ZShmYWlsdXJlQ2FsbGJhY2spLCBlYyk7CiAgICAgaWYg
KGVjKQogICAgICAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCBlYyk7CiB9CkBAIC01NTYsNyAr
NTU2LDcgQEAgSlNWYWx1ZSBKU1N1YnRsZUNyeXB0bzo6aW1wb3J0S2V5KEV4ZWNTdGF0ZSYgc3Rh
dGUpCiAgICAgICAgIHdyYXBwZXIucmVqZWN0KG51bGxwdHIpOwogICAgIH07CiAKLSAgICBXZWJD
b3JlOjppbXBvcnRLZXkoc3RhdGUsIGtleUZvcm1hdCwgZGF0YSwgV1RGOjptb3ZlKGFsZ29yaXRo
bSksIFdURjo6bW92ZShwYXJhbWV0ZXJzKSwgZXh0cmFjdGFibGUsIGtleVVzYWdlcywgV1RGOjpt
b3ZlKHN1Y2Nlc3NDYWxsYmFjayksIFdURjo6bW92ZShmYWlsdXJlQ2FsbGJhY2spKTsKKyAgICBX
ZWJDb3JlOjppbXBvcnRLZXkoc3RhdGUsIGtleUZvcm1hdCwgZGF0YSwgV1RGTW92ZShhbGdvcml0
aG0pLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBleHRyYWN0YWJsZSwga2V5VXNhZ2VzLCBXVEZNb3Zl
KHN1Y2Nlc3NDYWxsYmFjayksIFdURk1vdmUoZmFpbHVyZUNhbGxiYWNrKSk7CiAgICAgaWYgKHN0
YXRlLmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIApAQCAt
NjE5LDcgKzYxOSw3IEBAIEpTVmFsdWUgSlNTdWJ0bGVDcnlwdG86OmV4cG9ydEtleShFeGVjU3Rh
dGUmIHN0YXRlKQogICAgICAgICB3cmFwcGVyLnJlamVjdChudWxscHRyKTsKICAgICB9OwogCi0g
ICAgV2ViQ29yZTo6ZXhwb3J0S2V5KHN0YXRlLCBrZXlGb3JtYXQsICprZXksIFdURjo6bW92ZShz
dWNjZXNzQ2FsbGJhY2spLCBXVEY6Om1vdmUoZmFpbHVyZUNhbGxiYWNrKSk7CisgICAgV2ViQ29y
ZTo6ZXhwb3J0S2V5KHN0YXRlLCBrZXlGb3JtYXQsICprZXksIFdURk1vdmUoc3VjY2Vzc0NhbGxi
YWNrKSwgV1RGTW92ZShmYWlsdXJlQ2FsbGJhY2spKTsKICAgICBpZiAoc3RhdGUuaGFkRXhjZXB0
aW9uKCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogCkBAIC02ODEsNyArNjgxLDcg
QEAgSlNWYWx1ZSBKU1N1YnRsZUNyeXB0bzo6d3JhcEtleShFeGVjU3RhdGUmIHN0YXRlKQogICAg
ICAgICAgICAgd3JhcHBlci5yZWplY3QobnVsbHB0cik7CiAgICAgICAgIH07CiAgICAgICAgIEV4
Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgICAgICBhbGdvcml0aG1QdHItPmVuY3J5cHRGb3JXcmFw
S2V5KCpwYXJhbWV0ZXJzUHRyLCAqd3JhcHBpbmdLZXksIHN0ZDo6bWFrZV9wYWlyKGV4cG9ydGVk
S2V5RGF0YS5kYXRhKCksIGV4cG9ydGVkS2V5RGF0YS5zaXplKCkpLCBXVEY6Om1vdmUoZW5jcnlw
dFN1Y2Nlc3NDYWxsYmFjayksIFdURjo6bW92ZShlbmNyeXB0RmFpbHVyZUNhbGxiYWNrKSwgZWMp
OworICAgICAgICBhbGdvcml0aG1QdHItPmVuY3J5cHRGb3JXcmFwS2V5KCpwYXJhbWV0ZXJzUHRy
LCAqd3JhcHBpbmdLZXksIHN0ZDo6bWFrZV9wYWlyKGV4cG9ydGVkS2V5RGF0YS5kYXRhKCksIGV4
cG9ydGVkS2V5RGF0YS5zaXplKCkpLCBXVEZNb3ZlKGVuY3J5cHRTdWNjZXNzQ2FsbGJhY2spLCBX
VEZNb3ZlKGVuY3J5cHRGYWlsdXJlQ2FsbGJhY2spLCBlYyk7CiAgICAgICAgIGlmIChlYykgewog
ICAgICAgICAgICAgLy8gRklYTUU6IFJlcG9ydCBmYWlsdXJlIGRldGFpbHMgdG8gY29uc29sZSwg
YW5kIHBvc3NpYmx5IHRvIGNhbGxpbmcgc2NyaXB0IG9uY2UgdGhlcmUgaXMgYSBzdGFuZGFyZGl6
ZWQgd2F5IHRvIHBhc3MgZXJyb3JzIHRvIFdlYkNyeXB0byBwcm9taXNlIHJlamVjdCBmdW5jdGlv
bnMuCiAgICAgICAgICAgICBlbmNyeXB0RmFpbHVyZUNhbGxiYWNrKCk7CkBAIC02OTUsNyArNjk1
LDcgQEAgSlNWYWx1ZSBKU1N1YnRsZUNyeXB0bzo6d3JhcEtleShFeGVjU3RhdGUmIHN0YXRlKQog
ICAgIH07CiAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBXZWJDb3JlOjpleHBvcnRL
ZXkoc3RhdGUsIGtleUZvcm1hdCwgKmtleSwgV1RGOjptb3ZlKGV4cG9ydFN1Y2Nlc3NDYWxsYmFj
ayksIFdURjo6bW92ZShleHBvcnRGYWlsdXJlQ2FsbGJhY2spKTsKKyAgICBXZWJDb3JlOjpleHBv
cnRLZXkoc3RhdGUsIGtleUZvcm1hdCwgKmtleSwgV1RGTW92ZShleHBvcnRTdWNjZXNzQ2FsbGJh
Y2spLCBXVEZNb3ZlKGV4cG9ydEZhaWx1cmVDYWxsYmFjaykpOwogICAgIGlmIChlYykgewogICAg
ICAgICBkZWxldGUgYWxnb3JpdGhtUHRyOwogICAgICAgICBkZWxldGUgcGFyYW1ldGVyc1B0cjsK
QEAgLTc5MSw3ICs3OTEsNyBAQCBKU1ZhbHVlIEpTU3VidGxlQ3J5cHRvOjp1bndyYXBLZXkoRXhl
Y1N0YXRlJiBzdGF0ZSkKICAgICAgICAgICAgIHdyYXBwZXIucmVqZWN0KG51bGxwdHIpOwogICAg
ICAgICB9OwogICAgICAgICBFeGVjU3RhdGUmIHN0YXRlID0gKmRvbUdsb2JhbE9iamVjdC0+Z2xv
YmFsRXhlYygpOwotICAgICAgICBXZWJDb3JlOjppbXBvcnRLZXkoc3RhdGUsIGtleUZvcm1hdCwg
c3RkOjptYWtlX3BhaXIocmVzdWx0LmRhdGEoKSwgcmVzdWx0LnNpemUoKSksIHN0ZDo6dW5pcXVl
X3B0cjxDcnlwdG9BbGdvcml0aG0+KHVud3JhcHBlZEtleUFsZ29yaXRobVB0ciksIHN0ZDo6dW5p
cXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPih1bndyYXBwZWRLZXlBbGdvcml0aG1Q
YXJhbWV0ZXJzUHRyKSwgZXh0cmFjdGFibGUsIGtleVVzYWdlcywgV1RGOjptb3ZlKGltcG9ydFN1
Y2Nlc3NDYWxsYmFjayksIFdURjo6bW92ZShpbXBvcnRGYWlsdXJlQ2FsbGJhY2spKTsKKyAgICAg
ICAgV2ViQ29yZTo6aW1wb3J0S2V5KHN0YXRlLCBrZXlGb3JtYXQsIHN0ZDo6bWFrZV9wYWlyKHJl
c3VsdC5kYXRhKCksIHJlc3VsdC5zaXplKCkpLCBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3Jp
dGhtPih1bndyYXBwZWRLZXlBbGdvcml0aG1QdHIpLCBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxn
b3JpdGhtUGFyYW1ldGVycz4odW53cmFwcGVkS2V5QWxnb3JpdGhtUGFyYW1ldGVyc1B0ciksIGV4
dHJhY3RhYmxlLCBrZXlVc2FnZXMsIFdURk1vdmUoaW1wb3J0U3VjY2Vzc0NhbGxiYWNrKSwgV1RG
TW92ZShpbXBvcnRGYWlsdXJlQ2FsbGJhY2spKTsKICAgICAgICAgaWYgKHN0YXRlLmhhZEV4Y2Vw
dGlvbigpKSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogUmVwb3J0IGV4Y2VwdGlvbiBkZXRhaWxz
IHRvIGNvbnNvbGUsIGFuZCBwb3NzaWJseSB0byBjYWxsaW5nIHNjcmlwdCBvbmNlIHRoZXJlIGlz
IGEgc3RhbmRhcmRpemVkIHdheSB0byBwYXNzIGVycm9ycyB0byBXZWJDcnlwdG8gcHJvbWlzZSBy
ZWplY3QgZnVuY3Rpb25zLgogICAgICAgICAgICAgc3RhdGUuY2xlYXJFeGNlcHRpb24oKTsKQEAg
LTgwNiw3ICs4MDYsNyBAQCBKU1ZhbHVlIEpTU3VidGxlQ3J5cHRvOjp1bndyYXBLZXkoRXhlY1N0
YXRlJiBzdGF0ZSkKICAgICB9OwogCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgdW53
cmFwQWxnb3JpdGhtLT5kZWNyeXB0Rm9yVW53cmFwS2V5KCp1bndyYXBBbGdvcml0aG1QYXJhbWV0
ZXJzLCAqdW53cmFwcGluZ0tleSwgd3JhcHBlZEtleURhdGEsIFdURjo6bW92ZShkZWNyeXB0U3Vj
Y2Vzc0NhbGxiYWNrKSwgV1RGOjptb3ZlKGRlY3J5cHRGYWlsdXJlQ2FsbGJhY2spLCBlYyk7Cisg
ICAgdW53cmFwQWxnb3JpdGhtLT5kZWNyeXB0Rm9yVW53cmFwS2V5KCp1bndyYXBBbGdvcml0aG1Q
YXJhbWV0ZXJzLCAqdW53cmFwcGluZ0tleSwgd3JhcHBlZEtleURhdGEsIFdURk1vdmUoZGVjcnlw
dFN1Y2Nlc3NDYWxsYmFjayksIFdURk1vdmUoZGVjcnlwdEZhaWx1cmVDYWxsYmFjayksIGVjKTsK
ICAgICBpZiAoZWMpIHsKICAgICAgICAgZGVsZXRlIHVud3JhcHBlZEtleUFsZ29yaXRobVB0cjsK
ICAgICAgICAgZGVsZXRlIHVud3JhcHBlZEtleUFsZ29yaXRobVBhcmFtZXRlcnNQdHI7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQ3Vz
dG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVD
dXN0b20uY3BwCmluZGV4IGE5NDU3NzMyZDIyOGNmYTlhY2E4MDM1NWZlM2Y0MmQ3ZGZhMTU5YWUu
LjliOGU4NWM2YTM3OGE0MjI2NGRjNzJlOGM4ZTk3NjFmMzZhZmNkMjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVDdXN0b20uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVDdXN0b20u
Y3BwCkBAIC05Myw3ICs5Myw3IEBAIEpTVmFsdWUgSlNXb3JrZXJHbG9iYWxTY29wZTo6c2V0VGlt
ZW91dChFeGVjU3RhdGUmIHN0YXRlKQogICAgIGlmICghYWN0aW9uKQogICAgICAgICByZXR1cm4g
anNOdW1iZXIoMCk7CiAgICAgaW50IGRlbGF5ID0gc3RhdGUuYXJndW1lbnQoMSkudG9JbnQzMigm
c3RhdGUpOwotICAgIHJldHVybiBqc051bWJlcih3cmFwcGVkKCkuc2V0VGltZW91dChXVEY6Om1v
dmUoYWN0aW9uKSwgZGVsYXkpKTsKKyAgICByZXR1cm4ganNOdW1iZXIod3JhcHBlZCgpLnNldFRp
bWVvdXQoV1RGTW92ZShhY3Rpb24pLCBkZWxheSkpOwogfQogCiBKU1ZhbHVlIEpTV29ya2VyR2xv
YmFsU2NvcGU6OnNldEludGVydmFsKEV4ZWNTdGF0ZSYgc3RhdGUpCkBAIC0xMDQsNyArMTA0LDcg
QEAgSlNWYWx1ZSBKU1dvcmtlckdsb2JhbFNjb3BlOjpzZXRJbnRlcnZhbChFeGVjU3RhdGUmIHN0
YXRlKQogICAgIGlmICghYWN0aW9uKQogICAgICAgICByZXR1cm4ganNOdW1iZXIoMCk7CiAgICAg
aW50IGRlbGF5ID0gc3RhdGUuYXJndW1lbnQoMSkudG9JbnQzMigmc3RhdGUpOwotICAgIHJldHVy
biBqc051bWJlcih3cmFwcGVkKCkuc2V0SW50ZXJ2YWwoV1RGOjptb3ZlKGFjdGlvbiksIGRlbGF5
KSk7CisgICAgcmV0dXJuIGpzTnVtYmVyKHdyYXBwZWQoKS5zZXRJbnRlcnZhbChXVEZNb3ZlKGFj
dGlvbiksIGRlbGF5KSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCmluZGV4
IGFkYjA3YjI0NjY2ZTczMDNlZTcwMjlkOTBiZWRiYzdmNjg1NTcyOGEuLjJmM2YxMjE1YTE1Y2Y1
NjAxZjlkZmMxNzkxMDE1MjM4ZjY0NzIxZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcApAQCAtMjAyNCw3ICsyMDI0LDcg
QEAgcHJpdmF0ZToKICAgICAgICAgaWYgKHR5cGUgPT0gQ3J5cHRvS2V5QXN5bW1ldHJpY1R5cGVT
dWJ0YWc6OlB1YmxpYykgewogICAgICAgICAgICAgYXV0byBrZXlEYXRhID0gQ3J5cHRvS2V5RGF0
YVJTQUNvbXBvbmVudHM6OmNyZWF0ZVB1YmxpYyhtb2R1bHVzLCBleHBvbmVudCk7CiAgICAgICAg
ICAgICBhdXRvIGtleSA9IENyeXB0b0tleVJTQTo6Y3JlYXRlKGFsZ29yaXRobSwgaGFzaCwgaXNS
ZXN0cmljdGVkVG9IYXNoLCAqa2V5RGF0YSwgZXh0cmFjdGFibGUsIHVzYWdlcyk7Ci0gICAgICAg
ICAgICByZXN1bHQgPSBXVEY6Om1vdmUoa2V5KTsKKyAgICAgICAgICAgIHJlc3VsdCA9IFdURk1v
dmUoa2V5KTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAKQEAgLTIwMzks
NyArMjAzOSw3IEBAIHByaXZhdGU6CiAgICAgICAgIGlmICghcHJpbWVDb3VudCkgewogICAgICAg
ICAgICAgYXV0byBrZXlEYXRhID0gQ3J5cHRvS2V5RGF0YVJTQUNvbXBvbmVudHM6OmNyZWF0ZVBy
aXZhdGUobW9kdWx1cywgZXhwb25lbnQsIHByaXZhdGVFeHBvbmVudCk7CiAgICAgICAgICAgICBh
dXRvIGtleSA9IENyeXB0b0tleVJTQTo6Y3JlYXRlKGFsZ29yaXRobSwgaGFzaCwgaXNSZXN0cmlj
dGVkVG9IYXNoLCAqa2V5RGF0YSwgZXh0cmFjdGFibGUsIHVzYWdlcyk7Ci0gICAgICAgICAgICBy
ZXN1bHQgPSBXVEY6Om1vdmUoa2V5KTsKKyAgICAgICAgICAgIHJlc3VsdCA9IFdURk1vdmUoa2V5
KTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAKQEAgLTIwNzEsNyArMjA3
MSw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgYXV0byBrZXlEYXRhID0gQ3J5cHRvS2V5RGF0YVJT
QUNvbXBvbmVudHM6OmNyZWF0ZVByaXZhdGVXaXRoQWRkaXRpb25hbERhdGEobW9kdWx1cywgZXhw
b25lbnQsIHByaXZhdGVFeHBvbmVudCwgZmlyc3RQcmltZUluZm8sIHNlY29uZFByaW1lSW5mbywg
b3RoZXJQcmltZUluZm9zKTsKICAgICAgICAgYXV0byBrZXkgPSBDcnlwdG9LZXlSU0E6OmNyZWF0
ZShhbGdvcml0aG0sIGhhc2gsIGlzUmVzdHJpY3RlZFRvSGFzaCwgKmtleURhdGEsIGV4dHJhY3Rh
YmxlLCB1c2FnZXMpOwotICAgICAgICByZXN1bHQgPSBXVEY6Om1vdmUoa2V5KTsKKyAgICAgICAg
cmVzdWx0ID0gV1RGTW92ZShrZXkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAg
LTIyMjksMTEgKzIyMjksMTEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBpZiAoIXJlYWRG
aWxlKGZpbGUpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwogICAgICAg
ICAgICAgICAgIGlmIChtX2lzRE9NR2xvYmFsT2JqZWN0KQotICAgICAgICAgICAgICAgICAgICBm
aWxlcy5hcHBlbmQoV1RGOjptb3ZlKGZpbGUpKTsKKyAgICAgICAgICAgICAgICAgICAgZmlsZXMu
YXBwZW5kKFdURk1vdmUoZmlsZSkpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKCFt
X2lzRE9NR2xvYmFsT2JqZWN0KQogICAgICAgICAgICAgICAgIHJldHVybiBqc051bGwoKTsKLSAg
ICAgICAgICAgIHJldHVybiBnZXRKU1ZhbHVlKEZpbGVMaXN0OjpjcmVhdGUoV1RGOjptb3ZlKGZp
bGVzKSkuZ2V0KCkpOworICAgICAgICAgICAgcmV0dXJuIGdldEpTVmFsdWUoRmlsZUxpc3Q6OmNy
ZWF0ZShXVEZNb3ZlKGZpbGVzKSkuZ2V0KCkpOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgSW1h
Z2VEYXRhVGFnOiB7CiAgICAgICAgICAgICBpbnQzMl90IHdpZHRoOwpAQCAtMjYxMyw3ICsyNjEz
LDcgQEAgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUoVmVjdG9y
PHVpbnQ4X3Q+JiBidWZmZXIsIFZlY3RvcjxTdHIKIH0KIAogU2VyaWFsaXplZFNjcmlwdFZhbHVl
OjpTZXJpYWxpemVkU2NyaXB0VmFsdWUoVmVjdG9yPHVpbnQ4X3Q+JiBidWZmZXIsIFZlY3RvcjxT
dHJpbmc+JiBibG9iVVJMcywgc3RkOjp1bmlxdWVfcHRyPEFycmF5QnVmZmVyQ29udGVudHNBcnJh
eT4gYXJyYXlCdWZmZXJDb250ZW50c0FycmF5KQotICAgIDogbV9hcnJheUJ1ZmZlckNvbnRlbnRz
QXJyYXkoV1RGOjptb3ZlKGFycmF5QnVmZmVyQ29udGVudHNBcnJheSkpCisgICAgOiBtX2FycmF5
QnVmZmVyQ29udGVudHNBcnJheShXVEZNb3ZlKGFycmF5QnVmZmVyQ29udGVudHNBcnJheSkpCiB7
CiAgICAgbV9kYXRhLnN3YXAoYnVmZmVyKTsKICAgICBmb3IgKGF1dG8mIHN0cmluZyA6IGJsb2JV
UkxzKQpAQCAtMjY2Niw3ICsyNjY2LDcgQEAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4g
U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU1YKICAgICBp
ZiAoIXNlcmlhbGl6YXRpb25EaWRDb21wbGV0ZVN1Y2Nlc3NmdWxseShjb2RlKSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTZXJpYWxpemVkU2Ny
aXB0VmFsdWUoYnVmZmVyLCBibG9iVVJMcywgV1RGOjptb3ZlKGFycmF5QnVmZmVyQ29udGVudHNB
cnJheSkpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTZXJpYWxpemVkU2NyaXB0VmFsdWUo
YnVmZmVyLCBibG9iVVJMcywgV1RGTW92ZShhcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkpKSk7CiB9
CiAKIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6
Y3JlYXRlKGNvbnN0IFN0cmluZyYgc3RyaW5nKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCAwZjEwOWE1Y2FlYmM2NmFhN2Fj
NTljM2I5YjM4MjA3N2U3MDcxMjM0Li44ZDUwYzJiY2NhNThiYWY3ZmRiM2E4NGQ3MGZmMmIzYmJi
MGNiMjk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JKUy5wbQpAQCAtOTE3LDcgKzkxNyw3IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAg
IGlmICgkaW50ZXJmYWNlTmFtZSBlcSAiRE9NV2luZG93IikgewogICAgICAgICBwdXNoKEBoZWFk
ZXJDb250ZW50LCAiICAgIHN0YXRpYyAkY2xhc3NOYW1lKiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpT
Qzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFJlZjwkaW1wbFR5cGU+JiYgaW1wbCwgSlNET01XaW5k
b3dTaGVsbCogd2luZG93U2hlbGwpXG4iKTsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwg
IiAgICB7XG4iKTsKLSAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICAgICAgJGNsYXNz
TmFtZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDwkY2xhc3NOYW1lPih2
bS5oZWFwKSkgJHtjbGFzc05hbWV9KHZtLCBzdHJ1Y3R1cmUsIFdURjo6bW92ZShpbXBsKSwgd2lu
ZG93U2hlbGwpO1xuIik7CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgICAgICRj
bGFzc05hbWUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8JGNsYXNzTmFt
ZT4odm0uaGVhcCkpICR7Y2xhc3NOYW1lfSh2bSwgc3RydWN0dXJlLCBXVEZNb3ZlKGltcGwpLCB3
aW5kb3dTaGVsbCk7XG4iKTsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICAgICAg
cHRyLT5maW5pc2hDcmVhdGlvbih2bSwgd2luZG93U2hlbGwpO1xuIik7CiAgICAgICAgIHB1c2go
QGhlYWRlckNvbnRlbnQsICIgICAgICAgIHZtLmhlYXAuYWRkRmluYWxpemVyKHB0ciwgZGVzdHJv
eSk7XG4iKTsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICAgICAgcmV0dXJuIHB0
cjtcbiIpOwpAQCAtOTI1LDcgKzkyNSw3IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgIH0gZWxz
aWYgKCRjb2RlR2VuZXJhdG9yLT5Jbmhlcml0c0ludGVyZmFjZSgkaW50ZXJmYWNlLCAiV29ya2Vy
R2xvYmFsU2NvcGUiKSkgewogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRp
YyAkY2xhc3NOYW1lKiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIFJlZjwkaW1wbFR5cGU+JiYgaW1wbClcbiIpOwogICAgICAgICBwdXNoKEBoZWFkZXJDb250
ZW50LCAiICAgIHtcbiIpOwotICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgICAgICAk
Y2xhc3NOYW1lKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPCRjbGFzc05h
bWU+KHZtLmhlYXApKSAke2NsYXNzTmFtZX0odm0sIHN0cnVjdHVyZSwgV1RGOjptb3ZlKGltcGwp
KTtcbiIpOworICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgICAgICAkY2xhc3NOYW1l
KiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPCRjbGFzc05hbWU+KHZtLmhl
YXApKSAke2NsYXNzTmFtZX0odm0sIHN0cnVjdHVyZSwgV1RGTW92ZShpbXBsKSk7XG4iKTsKICAg
ICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbih2
bSk7XG4iKTsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICAgICAgdm0uaGVhcC5h
ZGRGaW5hbGl6ZXIocHRyLCBkZXN0cm95KTtcbiIpOwogICAgICAgICBwdXNoKEBoZWFkZXJDb250
ZW50LCAiICAgICAgICByZXR1cm4gcHRyO1xuIik7CkBAIC05MzUsNyArOTM1LDcgQEAgc3ViIEdl
bmVyYXRlSGVhZGVyCiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljICRj
bGFzc05hbWUqIGNyZWF0ZShKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8JGltcGxUeXBlPiYmIGltcGwpXG4iKTsKICAgICAgICAg
cHVzaChAaGVhZGVyQ29udGVudCwgIiAgICB7XG4iKTsKICAgICAgICAgcHVzaChAaGVhZGVyQ29u
dGVudCwgIiAgICAgICAgZ2xvYmFsT2JqZWN0LT5tYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hw
b2ludCgpLT5maXJlQWxsKFwiQWxsb2NhdGVkIG1hc3F1ZXJhZGluZyBvYmplY3RcIik7XG4iKTsK
LSAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICAgICAgJGNsYXNzTmFtZSogcHRyID0g
bmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDwkY2xhc3NOYW1lPihnbG9iYWxPYmplY3Qt
PnZtKCkuaGVhcCkpICRjbGFzc05hbWUoc3RydWN0dXJlLCAqZ2xvYmFsT2JqZWN0LCBXVEY6Om1v
dmUoaW1wbCkpO1xuIik7CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgICAgICRj
bGFzc05hbWUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8JGNsYXNzTmFt
ZT4oZ2xvYmFsT2JqZWN0LT52bSgpLmhlYXApKSAkY2xhc3NOYW1lKHN0cnVjdHVyZSwgKmdsb2Jh
bE9iamVjdCwgV1RGTW92ZShpbXBsKSk7XG4iKTsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVu
dCwgIiAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbihnbG9iYWxPYmplY3QtPnZtKCkpO1xuIik7
CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgICAgIHJldHVybiBwdHI7XG4iKTsK
ICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICB9XG5cbiIpOwpAQCAtOTUwLDcgKzk1
MCw3IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgICAgICBBZGRJbmNsdWRlc0ZvclR5cGVJbkhl
YWRlcigkaW1wbFR5cGUpIHVubGVzcyAkc3ZnUHJvcGVydHlPckxpc3RQcm9wZXJ0eVR5cGU7CiAg
ICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljICRjbGFzc05hbWUqIGNyZWF0
ZShKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBSZWY8JGltcGxUeXBlPiYmIGltcGwpXG4iKTsKICAgICAgICAgcHVzaChAaGVhZGVyQ29u
dGVudCwgIiAgICB7XG4iKTsKLSAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICAgICAg
JGNsYXNzTmFtZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDwkY2xhc3NO
YW1lPihnbG9iYWxPYmplY3QtPnZtKCkuaGVhcCkpICRjbGFzc05hbWUoc3RydWN0dXJlLCAqZ2xv
YmFsT2JqZWN0LCBXVEY6Om1vdmUoaW1wbCkpO1xuIik7CisgICAgICAgIHB1c2goQGhlYWRlckNv
bnRlbnQsICIgICAgICAgICRjbGFzc05hbWUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxv
Y2F0ZUNlbGw8JGNsYXNzTmFtZT4oZ2xvYmFsT2JqZWN0LT52bSgpLmhlYXApKSAkY2xhc3NOYW1l
KHN0cnVjdHVyZSwgKmdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSk7XG4iKTsKICAgICAgICAg
cHVzaChAaGVhZGVyQ29udGVudCwgIiAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbihnbG9iYWxP
YmplY3QtPnZtKCkpO1xuIik7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgICAg
IHJldHVybiBwdHI7XG4iKTsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICB9XG5c
biIpOwpAQCAtMjE1MSwxMyArMjE1MSwxMyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgog
ICAgIGlmICgkaW50ZXJmYWNlTmFtZSBlcSAiRE9NV2luZG93IikgewogICAgICAgICBBZGRJbmNs
dWRlc0ZvclR5cGVJbkltcGwoIkpTRE9NV2luZG93U2hlbGwiKTsKICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIke2NsYXNzTmFtZX06OiRjbGFzc05hbWUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgUmVmPCRpbXBsVHlwZT4mJiBpbXBsLCBKU0RPTVdpbmRvd1NoZWxsKiBzaGVsbClc
biIpOwotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICA6ICRwYXJlbnRDbGFzc05hbWUo
dm0sIHN0cnVjdHVyZSwgV1RGOjptb3ZlKGltcGwpLCBzaGVsbClcbiIpOworICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICA6ICRwYXJlbnRDbGFzc05hbWUodm0sIHN0cnVjdHVyZSwgV1RG
TW92ZShpbXBsKSwgc2hlbGwpXG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4i
KTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOwogICAgIH0gZWxzaWYgKCRj
b2RlR2VuZXJhdG9yLT5Jbmhlcml0c0ludGVyZmFjZSgkaW50ZXJmYWNlLCAiV29ya2VyR2xvYmFs
U2NvcGUiKSkgewogICAgICAgICBBZGRJbmNsdWRlc0ZvclR5cGVJbkltcGwoJGludGVyZmFjZU5h
bWUpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiR7Y2xhc3NOYW1lfTo6JGNsYXNzTmFt
ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBSZWY8JGltcGxUeXBlPiYmIGltcGwpXG4i
KTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgOiAkcGFyZW50Q2xhc3NOYW1lKHZt
LCBzdHJ1Y3R1cmUsIFdURjo6bW92ZShpbXBsKSlcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICA6ICRwYXJlbnRDbGFzc05hbWUodm0sIHN0cnVjdHVyZSwgV1RGTW92ZShpbXBs
KSlcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwogICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIn1cblxuIik7CiAgICAgfSBlbHNpZiAoIU5lZWRzSW1wbGVtZW50YXRp
b25DbGFzcygkaW50ZXJmYWNlKSkgewpAQCAtMjE2NSw3ICsyMTY1LDcgQEAgc3ViIEdlbmVyYXRl
SW1wbGVtZW50YXRpb24KICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgOiAkcGFyZW50
Q2xhc3NOYW1lKHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KSB7IH1cblxuIik7CiAgICAgfSBlbHNl
IHsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIke2NsYXNzTmFtZX06OiRjbGFzc05hbWUo
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIFJl
ZjwkaW1wbFR5cGU+JiYgaW1wbClcbiIpOwotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICA6ICRwYXJlbnRDbGFzc05hbWUoc3RydWN0dXJlLCBnbG9iYWxPYmplY3QsIFdURjo6bW92ZShp
bXBsKSlcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICA6ICRwYXJlbnRDbGFz
c05hbWUoc3RydWN0dXJlLCBnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpXG4iKTsKICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICJ9XG5cbiIpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RBY3RpdmVET01PYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEFjdGl2ZURPTU9iamVjdC5jcHAKaW5kZXgg
YjBkMTJjMzg5M2FmZTI3YjQ0YjcyNTg4MDIyMWU3ODM5Y2ZhNzI3Ny4uZDZlODRkOTdlMmY0ZWYx
OGQ5OTBhMWJhMGZjNmNhYzk2YmVjOGE3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEFjdGl2ZURPTU9iamVjdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEFjdGl2ZURPTU9iamVj
dC5jcHAKQEAgLTExNCw3ICsxMTQsNyBAQCB2b2lkIEpTVGVzdEFjdGl2ZURPTU9iamVjdFByb3Rv
dHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogY29uc3QgQ2xhc3NJbmZvIEpTVGVzdEFjdGl2
ZURPTU9iamVjdDo6c19pbmZvID0geyAiVGVzdEFjdGl2ZURPTU9iamVjdCIsICZCYXNlOjpzX2lu
Zm8sICZKU1Rlc3RBY3RpdmVET01PYmplY3RUYWJsZSwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rl
c3RBY3RpdmVET01PYmplY3QpIH07CiAKIEpTVGVzdEFjdGl2ZURPTU9iamVjdDo6SlNUZXN0QWN0
aXZlRE9NT2JqZWN0KFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xv
YmFsT2JqZWN0LCBSZWY8VGVzdEFjdGl2ZURPTU9iamVjdD4mJiBpbXBsKQotICAgIDogSlNET01X
cmFwcGVyPFRlc3RBY3RpdmVET01PYmplY3Q+KHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0LCBXVEY6
Om1vdmUoaW1wbCkpCisgICAgOiBKU0RPTVdyYXBwZXI8VGVzdEFjdGl2ZURPTU9iamVjdD4oc3Ry
dWN0dXJlLCBnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpCiB7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RBY3RpdmVET01P
YmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RB
Y3RpdmVET01PYmplY3QuaAppbmRleCA1Mzk5MjI3OTRmNTlmM2RkNmVhNDhjN2IxYzgxOGVhN2Ni
NDI3ZDY2Li4xM2UwNWZiMDc2MWU4Y2RiM2NhZjY2MjQzYWU3ZDE1NjI2NDk3OWJlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0aXZl
RE9NT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEFjdGl2ZURPTU9iamVjdC5oCkBAIC0zMiw3ICszMiw3IEBAIHB1YmxpYzoKICAgICB0
eXBlZGVmIEpTRE9NV3JhcHBlcjxUZXN0QWN0aXZlRE9NT2JqZWN0PiBCYXNlOwogICAgIHN0YXRp
YyBKU1Rlc3RBY3RpdmVET01PYmplY3QqIGNyZWF0ZShKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJl
LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdEFjdGl2ZURPTU9iamVj
dD4mJiBpbXBsKQogICAgIHsKLSAgICAgICAgSlNUZXN0QWN0aXZlRE9NT2JqZWN0KiBwdHIgPSBu
ZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdEFjdGl2ZURPTU9iamVjdD4oZ2xv
YmFsT2JqZWN0LT52bSgpLmhlYXApKSBKU1Rlc3RBY3RpdmVET01PYmplY3Qoc3RydWN0dXJlLCAq
Z2xvYmFsT2JqZWN0LCBXVEY6Om1vdmUoaW1wbCkpOworICAgICAgICBKU1Rlc3RBY3RpdmVET01P
YmplY3QqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0QWN0aXZl
RE9NT2JqZWN0PihnbG9iYWxPYmplY3QtPnZtKCkuaGVhcCkpIEpTVGVzdEFjdGl2ZURPTU9iamVj
dChzdHJ1Y3R1cmUsICpnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOwogICAgICAgICBwdHIt
PmZpbmlzaENyZWF0aW9uKGdsb2JhbE9iamVjdC0+dm0oKSk7CiAgICAgICAgIHJldHVybiBwdHI7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25z
dHJ1Y3Rvci5jcHAKaW5kZXggODc0OWI1YTM4NmFhOWZmYzg5ZGEzMWMxMTE4ZDMwMDY5NzA0ODRh
OS4uMTQyYzUzMmNhMTJmZGI5MTkxYzA0Zjg0ZDQ3YTY2OWM0MDQwNmYyMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENsYXNzV2l0aEpT
QnVpbHRpbkNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IuY3BwCkBAIC05
OCw3ICs5OCw3IEBAIHZvaWQgSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JQcm90
b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKIGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RDbGFz
c1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdENsYXNzV2l0aEpTQnVp
bHRpbkNvbnN0cnVjdG9yIiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShK
U1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvcikgfTsKIAogSlNUZXN0Q2xhc3NXaXRo
SlNCdWlsdGluQ29uc3RydWN0b3I6OkpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9y
KFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBS
ZWY8VGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yPiYmIGltcGwpCi0gICAgOiBKU0RP
TVdyYXBwZXI8VGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yPihzdHJ1Y3R1cmUsIGds
b2JhbE9iamVjdCwgV1RGOjptb3ZlKGltcGwpKQorICAgIDogSlNET01XcmFwcGVyPFRlc3RDbGFz
c1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvcj4oc3RydWN0dXJlLCBnbG9iYWxPYmplY3QsIFdURk1v
dmUoaW1wbCkpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvci5oIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENsYXNzV2l0aEpTQnVp
bHRpbkNvbnN0cnVjdG9yLmgKaW5kZXggMmE4YjZiMzhjNjU5MjljMGNhZTBjMzBkNGExMjcxOGQ3
N2RkODJiNS4uZDg5OTJiN2Q5MzdiMjI4NjkzNTY5ZmJhY2I0YzAwOGZlN2Q3MWY2MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENsYXNz
V2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yLmgKQEAg
LTMyLDcgKzMyLDcgQEAgcHVibGljOgogICAgIHR5cGVkZWYgSlNET01XcmFwcGVyPFRlc3RDbGFz
c1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvcj4gQmFzZTsKICAgICBzdGF0aWMgSlNUZXN0Q2xhc3NX
aXRoSlNCdWlsdGluQ29uc3RydWN0b3IqIGNyZWF0ZShKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJl
LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdENsYXNzV2l0aEpTQnVp
bHRpbkNvbnN0cnVjdG9yPiYmIGltcGwpCiAgICAgewotICAgICAgICBKU1Rlc3RDbGFzc1dpdGhK
U0J1aWx0aW5Db25zdHJ1Y3RvciogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2Vs
bDxKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvcj4oZ2xvYmFsT2JqZWN0LT52bSgp
LmhlYXApKSBKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3RvcihzdHJ1Y3R1cmUsICpn
bG9iYWxPYmplY3QsIFdURjo6bW92ZShpbXBsKSk7CisgICAgICAgIEpTVGVzdENsYXNzV2l0aEpT
QnVpbHRpbkNvbnN0cnVjdG9yKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxs
PEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yPihnbG9iYWxPYmplY3QtPnZtKCku
aGVhcCkpIEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yKHN0cnVjdHVyZSwgKmds
b2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSk7CiAgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24o
Z2xvYmFsT2JqZWN0LT52bSgpKTsKICAgICAgICAgcmV0dXJuIHB0cjsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9t
Q29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJm
YWNlT2JqZWN0LmNwcAppbmRleCBjYWFkYmMxZjBiNTdkZDUxMGViYmFlMDZjOGEwZDMxMWU5NTA1
NGZiLi41ZjM0YmI5MzkzMDgyOGJlNzJhMmFkY2U5YjExNDlkMTA4Mzg2MTNhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tQ29u
c3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVy
ZmFjZU9iamVjdC5jcHAKQEAgLTkyLDcgKzkyLDcgQEAgdm9pZCBKU1Rlc3RDdXN0b21Db25zdHJ1
Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHYK
IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9i
amVjdDo6c19pbmZvID0geyAiVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2Jq
ZWN0IiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RDdXN0b21D
b25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdCkgfTsKIAogSlNUZXN0Q3VzdG9tQ29uc3Ry
dWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3Q6OkpTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5v
SW50ZXJmYWNlT2JqZWN0KFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCYg
Z2xvYmFsT2JqZWN0LCBSZWY8VGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2Jq
ZWN0PiYmIGltcGwpCi0gICAgOiBKU0RPTVdyYXBwZXI8VGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0
aE5vSW50ZXJmYWNlT2JqZWN0PihzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCwgV1RGOjptb3ZlKGlt
cGwpKQorICAgIDogSlNET01XcmFwcGVyPFRlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVy
ZmFjZU9iamVjdD4oc3RydWN0dXJlLCBnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpCiB7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdC5oIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0
aE5vSW50ZXJmYWNlT2JqZWN0LmgKaW5kZXggMjZmYzRjYmU0NjFhMTk2Yjc4N2Y2ZDM0MWEzODg3
YzBmODQwMWY1Ny4uNmIzZGRiNGNhMWVhMjMwZWUwZTAwOWFkMTM1MDIxZWQyNGRlOGJmNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1
c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5v
SW50ZXJmYWNlT2JqZWN0LmgKQEAgLTMyLDcgKzMyLDcgQEAgcHVibGljOgogICAgIHR5cGVkZWYg
SlNET01XcmFwcGVyPFRlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdD4g
QmFzZTsKICAgICBzdGF0aWMgSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VP
YmplY3QqIGNyZWF0ZShKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNl
T2JqZWN0PiYmIGltcGwpCiAgICAgewotICAgICAgICBKU1Rlc3RDdXN0b21Db25zdHJ1Y3Rvcldp
dGhOb0ludGVyZmFjZU9iamVjdCogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2Vs
bDxKU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdD4oZ2xvYmFsT2Jq
ZWN0LT52bSgpLmhlYXApKSBKU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9i
amVjdChzdHJ1Y3R1cmUsICpnbG9iYWxPYmplY3QsIFdURjo6bW92ZShpbXBsKSk7CisgICAgICAg
IEpTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0KiBwdHIgPSBuZXcg
KE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5v
SW50ZXJmYWNlT2JqZWN0PihnbG9iYWxPYmplY3QtPnZtKCkuaGVhcCkpIEpTVGVzdEN1c3RvbUNv
bnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0KHN0cnVjdHVyZSwgKmdsb2JhbE9iamVjdCwg
V1RGTW92ZShpbXBsKSk7CiAgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsT2JqZWN0
LT52bSgpKTsKICAgICAgICAgcmV0dXJuIHB0cjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1c3Rv
bU5hbWVkR2V0dGVyLmNwcAppbmRleCA5OTRmMzY2ZWY0NGMxZTg0MDk5NjlhYTgwMzBhNDk4MjQ0
Yjk2ZTIyLi43MDFmMDFiOTZlY2ExMjYyMjliOGMyYmY1OTMwMDRkMTM0MGY5ZjEyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9t
TmFtZWRHZXR0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RDdXN0b21OYW1lZEdldHRlci5jcHAKQEAgLTEwOCw3ICsxMDgsNyBAQCB2b2lk
IEpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0p
CiBjb25zdCBDbGFzc0luZm8gSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXI6OnNfaW5mbyA9IHsgIlRl
c3RDdXN0b21OYW1lZEdldHRlciIsICZCYXNlOjpzX2luZm8sICZKU1Rlc3RDdXN0b21OYW1lZEdl
dHRlclRhYmxlLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyKSB9
OwogCiBKU1Rlc3RDdXN0b21OYW1lZEdldHRlcjo6SlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIoU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIFJlZjxU
ZXN0Q3VzdG9tTmFtZWRHZXR0ZXI+JiYgaW1wbCkKLSAgICA6IEpTRE9NV3JhcHBlcjxUZXN0Q3Vz
dG9tTmFtZWRHZXR0ZXI+KHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0LCBXVEY6Om1vdmUoaW1wbCkp
CisgICAgOiBKU0RPTVdyYXBwZXI8VGVzdEN1c3RvbU5hbWVkR2V0dGVyPihzdHJ1Y3R1cmUsIGds
b2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1c3RvbU5hbWVkR2V0dGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tTmFt
ZWRHZXR0ZXIuaAppbmRleCAyNGU2YzUzZDRhZmQ1MjdlMWQwMWQ1ODA2ZDk2MWE4MzRhMjdjMGNj
Li41MTM0NGJlYmQ5NzVmN2RkMzFmZmRkZDZjN2IzNTE2MmYwNDllZGE5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tTmFtZWRH
ZXR0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuaApAQCAtMzIsNyArMzIsNyBAQCBwdWJsaWM6CiAgICAgdHlw
ZWRlZiBKU0RPTVdyYXBwZXI8VGVzdEN1c3RvbU5hbWVkR2V0dGVyPiBCYXNlOwogICAgIHN0YXRp
YyBKU1Rlc3RDdXN0b21OYW1lZEdldHRlciogY3JlYXRlKEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0Q3VzdG9tTmFtZWRH
ZXR0ZXI+JiYgaW1wbCkKICAgICB7Ci0gICAgICAgIEpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyKiBw
dHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdEN1c3RvbU5hbWVkR2V0
dGVyPihnbG9iYWxPYmplY3QtPnZtKCkuaGVhcCkpIEpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyKHN0
cnVjdHVyZSwgKmdsb2JhbE9iamVjdCwgV1RGOjptb3ZlKGltcGwpKTsKKyAgICAgICAgSlNUZXN0
Q3VzdG9tTmFtZWRHZXR0ZXIqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8
SlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXI+KGdsb2JhbE9iamVjdC0+dm0oKS5oZWFwKSkgSlNUZXN0
Q3VzdG9tTmFtZWRHZXR0ZXIoc3RydWN0dXJlLCAqZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwp
KTsKICAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbihnbG9iYWxPYmplY3QtPnZtKCkpOwogICAg
ICAgICByZXR1cm4gcHRyOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmNw
cAppbmRleCAzNTA0OGI1ZDFhYTk1NmZhZTFiOTg5ZGQwNjY3Mzk5ODVlMmQ3YzVkLi4xYzM5MmQw
ZjdlMzEzOWViOGE1ZGVmYjU5YTk5NzUwMDg5MjE4YWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50
Q29uc3RydWN0b3IuY3BwCkBAIC0xMzUsNyArMTM1LDcgQEAgdm9pZCBKU1Rlc3RFdmVudENvbnN0
cnVjdG9yUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiBjb25zdCBDbGFzc0luZm8g
SlNUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdEV2ZW50Q29uc3RydWN0b3Ii
LCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdEV2ZW50Q29uc3Ry
dWN0b3IpIH07CiAKIEpTVGVzdEV2ZW50Q29uc3RydWN0b3I6OkpTVGVzdEV2ZW50Q29uc3RydWN0
b3IoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3Qs
IFJlZjxUZXN0RXZlbnRDb25zdHJ1Y3Rvcj4mJiBpbXBsKQotICAgIDogSlNET01XcmFwcGVyPFRl
c3RFdmVudENvbnN0cnVjdG9yPihzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCwgV1RGOjptb3ZlKGlt
cGwpKQorICAgIDogSlNET01XcmFwcGVyPFRlc3RFdmVudENvbnN0cnVjdG9yPihzdHJ1Y3R1cmUs
IGdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0b3Iu
aCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENv
bnN0cnVjdG9yLmgKaW5kZXggOWM4ZDY4ZGJiMjUwM2EyYmVmNjEyOGNkZDBmYzBhZWU0ZGI3YjAz
Yy4uMjI4ODg5NzEwMGJjZTY4MTJlZDhhYmY0OTZhOTY0ZmYyMzFmMWEwNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3Ry
dWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0RXZlbnRDb25zdHJ1Y3Rvci5oCkBAIC0zNCw3ICszNCw3IEBAIHB1YmxpYzoKICAgICB0eXBl
ZGVmIEpTRE9NV3JhcHBlcjxUZXN0RXZlbnRDb25zdHJ1Y3Rvcj4gQmFzZTsKICAgICBzdGF0aWMg
SlNUZXN0RXZlbnRDb25zdHJ1Y3RvciogY3JlYXRlKEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0RXZlbnRDb25zdHJ1Y3Rv
cj4mJiBpbXBsKQogICAgIHsKLSAgICAgICAgSlNUZXN0RXZlbnRDb25zdHJ1Y3RvciogcHRyID0g
bmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RFdmVudENvbnN0cnVjdG9yPihn
bG9iYWxPYmplY3QtPnZtKCkuaGVhcCkpIEpTVGVzdEV2ZW50Q29uc3RydWN0b3Ioc3RydWN0dXJl
LCAqZ2xvYmFsT2JqZWN0LCBXVEY6Om1vdmUoaW1wbCkpOworICAgICAgICBKU1Rlc3RFdmVudENv
bnN0cnVjdG9yKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdEV2
ZW50Q29uc3RydWN0b3I+KGdsb2JhbE9iamVjdC0+dm0oKS5oZWFwKSkgSlNUZXN0RXZlbnRDb25z
dHJ1Y3RvcihzdHJ1Y3R1cmUsICpnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOwogICAgICAg
ICBwdHItPmZpbmlzaENyZWF0aW9uKGdsb2JhbE9iamVjdC0+dm0oKSk7CiAgICAgICAgIHJldHVy
biBwdHI7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHAKaW5kZXggNGVkZWFjODY5M2Q2
YTI3ZTJlMjdjMDllOWYyNTU2NzY5Mzk5MzExMy4uNjJmMmZlNjA3N2JiYjQ0ZmI4NWU0MDAzZDky
MzI4NWExZDcyZWNlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwCkBAIC0xMjAsNyArMTIw
LDcgQEAgdm9pZCBKU1Rlc3RFdmVudFRhcmdldFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0m
IHZtKQogY29uc3QgQ2xhc3NJbmZvIEpTVGVzdEV2ZW50VGFyZ2V0OjpzX2luZm8gPSB7ICJUZXN0
RXZlbnRUYXJnZXQiLCAmQmFzZTo6c19pbmZvLCAmSlNUZXN0RXZlbnRUYXJnZXRUYWJsZSwgQ1JF
QVRFX01FVEhPRF9UQUJMRShKU1Rlc3RFdmVudFRhcmdldCkgfTsKIAogSlNUZXN0RXZlbnRUYXJn
ZXQ6OkpTVGVzdEV2ZW50VGFyZ2V0KFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9i
amVjdCYgZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdEV2ZW50VGFyZ2V0PiYmIGltcGwpCi0gICAgOiBK
U0RPTVdyYXBwZXI8VGVzdEV2ZW50VGFyZ2V0PihzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCwgV1RG
Ojptb3ZlKGltcGwpKQorICAgIDogSlNET01XcmFwcGVyPFRlc3RFdmVudFRhcmdldD4oc3RydWN0
dXJlLCBnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5o
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFy
Z2V0LmgKaW5kZXggMmQ4MWYwZGVkNTliZTRhMGRlNTFkNDM3OGJhY2IwOTUwOGRjZTZjNi4uYmQz
OGQ2MWE1MTFkZGZhMGNlOTAxY2Q1ZWYzOWZlZWRhZDhkNTA1OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFy
Z2V0LmgKQEAgLTMzLDcgKzMzLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU1Rlc3RFdmVudFRh
cmdldCogY3JlYXRlKEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0RXZlbnRUYXJnZXQ+JiYgaW1wbCkKICAgICB7CiAgICAg
ICAgIGdsb2JhbE9iamVjdC0+bWFzcXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNocG9pbnQoKS0+Zmly
ZUFsbCgiQWxsb2NhdGVkIG1hc3F1ZXJhZGluZyBvYmplY3QiKTsKLSAgICAgICAgSlNUZXN0RXZl
bnRUYXJnZXQqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0RXZl
bnRUYXJnZXQ+KGdsb2JhbE9iamVjdC0+dm0oKS5oZWFwKSkgSlNUZXN0RXZlbnRUYXJnZXQoc3Ry
dWN0dXJlLCAqZ2xvYmFsT2JqZWN0LCBXVEY6Om1vdmUoaW1wbCkpOworICAgICAgICBKU1Rlc3RF
dmVudFRhcmdldCogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RF
dmVudFRhcmdldD4oZ2xvYmFsT2JqZWN0LT52bSgpLmhlYXApKSBKU1Rlc3RFdmVudFRhcmdldChz
dHJ1Y3R1cmUsICpnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOwogICAgICAgICBwdHItPmZp
bmlzaENyZWF0aW9uKGdsb2JhbE9iamVjdC0+dm0oKSk7CiAgICAgICAgIHJldHVybiBwdHI7CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEV4Y2VwdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNwcAppbmRleCBjYWQ2ZTk5ZGU0YzUwMTMwODc5ZTEzNTAw
MjYyZGIwOTA5YWEwMDJjLi5lZGUxNGMyMDc0NjMwNjQ3Mjc0MGI4YmIxY2ZiZDgzMDIwYjExMzEx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0RXhjZXB0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNwcApAQCAtMTA0LDcgKzEwNCw3IEBAIHZvaWQgSlNUZXN0
RXhjZXB0aW9uUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiBjb25zdCBDbGFzc0lu
Zm8gSlNUZXN0RXhjZXB0aW9uOjpzX2luZm8gPSB7ICJUZXN0RXhjZXB0aW9uIiwgJkJhc2U6OnNf
aW5mbywgJkpTVGVzdEV4Y2VwdGlvblRhYmxlLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdEV4
Y2VwdGlvbikgfTsKIAogSlNUZXN0RXhjZXB0aW9uOjpKU1Rlc3RFeGNlcHRpb24oU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0RXhj
ZXB0aW9uPiYmIGltcGwpCi0gICAgOiBKU0RPTVdyYXBwZXI8VGVzdEV4Y2VwdGlvbj4oc3RydWN0
dXJlLCBnbG9iYWxPYmplY3QsIFdURjo6bW92ZShpbXBsKSkKKyAgICA6IEpTRE9NV3JhcHBlcjxU
ZXN0RXhjZXB0aW9uPihzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSkKIHsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEV4Y2VwdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEV4Y2VwdGlvbi5oCmluZGV4IGQ3NTFlYzE0NWQxMGU3OThjMDMyMTQ0YTZkZTY2
OTIwMWE1MmI5NTIuLjExZDVhMjkzMzZkNmEwZTZhODQ2ZTc0YjMzZDZiNzgzYTQzNDdiNzQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RF
eGNlcHRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0RXhjZXB0aW9uLmgKQEAgLTMzLDcgKzMzLDcgQEAgcHVibGljOgogICAgIHR5cGVkZWYg
SlNET01XcmFwcGVyPFRlc3RFeGNlcHRpb24+IEJhc2U7CiAgICAgc3RhdGljIEpTVGVzdEV4Y2Vw
dGlvbiogY3JlYXRlKEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0RXhjZXB0aW9uPiYmIGltcGwpCiAgICAgewotICAgICAg
ICBKU1Rlc3RFeGNlcHRpb24qIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8
SlNUZXN0RXhjZXB0aW9uPihnbG9iYWxPYmplY3QtPnZtKCkuaGVhcCkpIEpTVGVzdEV4Y2VwdGlv
bihzdHJ1Y3R1cmUsICpnbG9iYWxPYmplY3QsIFdURjo6bW92ZShpbXBsKSk7CisgICAgICAgIEpT
VGVzdEV4Y2VwdGlvbiogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rl
c3RFeGNlcHRpb24+KGdsb2JhbE9iamVjdC0+dm0oKS5oZWFwKSkgSlNUZXN0RXhjZXB0aW9uKHN0
cnVjdHVyZSwgKmdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSk7CiAgICAgICAgIHB0ci0+Zmlu
aXNoQ3JlYXRpb24oZ2xvYmFsT2JqZWN0LT52bSgpKTsKICAgICAgICAgcmV0dXJuIHB0cjsKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5jcHAKaW5kZXggYzc0MDZh
YzE5NTRlOTA5MmJhNTVmMzI0YWYxYmNlMWQ1Y2RjY2Q1ZC4uN2I4MmM2YzQyZDM0MDA1MmJkMjE0
ODNjMDRmNGJlMmUzNjMxYTg0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hh
YmxlLmNwcApAQCAtODcsNyArODcsNyBAQCB2b2lkIEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGVQ
cm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKIGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RH
ZW5lcmF0ZUlzUmVhY2hhYmxlOjpzX2luZm8gPSB7ICJUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZSIs
ICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0R2VuZXJhdGVJc1Jl
YWNoYWJsZSkgfTsKIAogSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZTo6SlNUZXN0R2VuZXJhdGVJ
c1JlYWNoYWJsZShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2Jh
bE9iamVjdCwgUmVmPFRlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlPiYmIGltcGwpCi0gICAgOiBKU0RP
TVdyYXBwZXI8VGVzdEdlbmVyYXRlSXNSZWFjaGFibGU+KHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0
LCBXVEY6Om1vdmUoaW1wbCkpCisgICAgOiBKU0RPTVdyYXBwZXI8VGVzdEdlbmVyYXRlSXNSZWFj
aGFibGU+KHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKQogewogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
R2VuZXJhdGVJc1JlYWNoYWJsZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUuaAppbmRleCBkMzEyYzY0NjI1NTQ3NDBj
NmM3NDRkYjcyNjVlZDRjZGQzMDZiMmM5Li4zNjJkYTY4Mjc3MTlkMmJlYjAyM2Q5NjYwOWE5NWNh
MjU2NWVhYWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmgKQEAgLTMy
LDcgKzMyLDcgQEAgcHVibGljOgogICAgIHR5cGVkZWYgSlNET01XcmFwcGVyPFRlc3RHZW5lcmF0
ZUlzUmVhY2hhYmxlPiBCYXNlOwogICAgIHN0YXRpYyBKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxl
KiBjcmVhdGUoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgUmVmPFRlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlPiYmIGltcGwpCiAgICAgewot
ICAgICAgICBKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpT
Qzo6YWxsb2NhdGVDZWxsPEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGU+KGdsb2JhbE9iamVjdC0+
dm0oKS5oZWFwKSkgSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZShzdHJ1Y3R1cmUsICpnbG9iYWxP
YmplY3QsIFdURjo6bW92ZShpbXBsKSk7CisgICAgICAgIEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFi
bGUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0R2VuZXJhdGVJ
c1JlYWNoYWJsZT4oZ2xvYmFsT2JqZWN0LT52bSgpLmhlYXApKSBKU1Rlc3RHZW5lcmF0ZUlzUmVh
Y2hhYmxlKHN0cnVjdHVyZSwgKmdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSk7CiAgICAgICAg
IHB0ci0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsT2JqZWN0LT52bSgpKTsKICAgICAgICAgcmV0dXJu
IHB0cjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwCmluZGV4IDVmYTk2MzU2YjNlMDA5NmQ0
NDY1NjdkMmMxZTZjNDljMDBmYjI1NjQuLmEyYjYzMzRmOTE3NDlkNjIwYzIxNjVmM2Y5ZGNiNzVk
ODhjN2FiNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwCkBAIC0zOTcsNyArMzk3LDcgQEAgdm9p
ZCBKU1Rlc3RJbnRlcmZhY2VQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKIGNvbnN0
IENsYXNzSW5mbyBKU1Rlc3RJbnRlcmZhY2U6OnNfaW5mbyA9IHsgIlRlc3RJbnRlcmZhY2UiLCAm
QmFzZTo6c19pbmZvLCAmSlNUZXN0SW50ZXJmYWNlVGFibGUsIENSRUFURV9NRVRIT0RfVEFCTEUo
SlNUZXN0SW50ZXJmYWNlKSB9OwogCiBKU1Rlc3RJbnRlcmZhY2U6OkpTVGVzdEludGVyZmFjZShT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgUmVm
PFRlc3RJbnRlcmZhY2U+JiYgaW1wbCkKLSAgICA6IEpTRE9NV3JhcHBlcjxUZXN0SW50ZXJmYWNl
PihzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCwgV1RGOjptb3ZlKGltcGwpKQorICAgIDogSlNET01X
cmFwcGVyPFRlc3RJbnRlcmZhY2U+KHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGlt
cGwpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmgKaW5kZXggYjA3MWNiNmY4YjYxNGVmMWJmZWVm
NTA2MWY2NzdkYzc3ZDk0YjRjOC4uNmZmNmY1MDdiN2FjMjU3NjVlMmUzOGJhM2Q5ZDFhY2MzNzNj
MDMzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuaApAQCAtMzQsNyArMzQsNyBAQCBwdWJsaWM6CiAgICAg
dHlwZWRlZiBKU0RPTVdyYXBwZXI8VGVzdEludGVyZmFjZT4gQmFzZTsKICAgICBzdGF0aWMgSlNU
ZXN0SW50ZXJmYWNlKiBjcmVhdGUoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3RJbnRlcmZhY2U+JiYgaW1wbCkKICAgICB7
Ci0gICAgICAgIEpTVGVzdEludGVyZmFjZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9j
YXRlQ2VsbDxKU1Rlc3RJbnRlcmZhY2U+KGdsb2JhbE9iamVjdC0+dm0oKS5oZWFwKSkgSlNUZXN0
SW50ZXJmYWNlKHN0cnVjdHVyZSwgKmdsb2JhbE9iamVjdCwgV1RGOjptb3ZlKGltcGwpKTsKKyAg
ICAgICAgSlNUZXN0SW50ZXJmYWNlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVD
ZWxsPEpTVGVzdEludGVyZmFjZT4oZ2xvYmFsT2JqZWN0LT52bSgpLmhlYXApKSBKU1Rlc3RJbnRl
cmZhY2Uoc3RydWN0dXJlLCAqZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKICAgICAgICAg
cHRyLT5maW5pc2hDcmVhdGlvbihnbG9iYWxPYmplY3QtPnZtKCkpOwogICAgICAgICByZXR1cm4g
cHRyOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNw
cAppbmRleCBkMDYxMWU1ZWVjYTU3NmU4NzkyN2M5NjRhMjIwZTk3YTVhZTY3MDk5Li4xM2Q1Yjg2
ZmQ5ZTYzYzk5ZGI4YTY5MjBjNjllOTdhMWEzN2Q2OTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5l
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwCkBAIC05NSw3ICs5NSw3IEBAIHZvaWQgSlNUZXN0
TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQog
Y29uc3QgQ2xhc3NJbmZvIEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI6OnNfaW5mbyA9IHsg
IlRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyIiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01F
VEhPRF9UQUJMRShKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKSB9OwogCiBKU1Rlc3RNZWRp
YVF1ZXJ5TGlzdExpc3RlbmVyOjpKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKFN0cnVjdHVy
ZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdE1l
ZGlhUXVlcnlMaXN0TGlzdGVuZXI+JiYgaW1wbCkKLSAgICA6IEpTRE9NV3JhcHBlcjxUZXN0TWVk
aWFRdWVyeUxpc3RMaXN0ZW5lcj4oc3RydWN0dXJlLCBnbG9iYWxPYmplY3QsIFdURjo6bW92ZShp
bXBsKSkKKyAgICA6IEpTRE9NV3JhcHBlcjxUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcj4oc3Ry
dWN0dXJlLCBnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpCiB7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNZWRpYVF1ZXJ5
TGlzdExpc3RlbmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5oCmluZGV4IDJlMjdhZDBiY2I4ZWRiODYwNTc0
YTFlNjY2MDEzMmYxZTc4MGRhNjQuLjcwNDJmYmMwMzk1NjMwN2MwMTA1MmVjYzA4NDM2MjdkZDdj
ZDc2Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuaApAQCAt
MzIsNyArMzIsNyBAQCBwdWJsaWM6CiAgICAgdHlwZWRlZiBKU0RPTVdyYXBwZXI8VGVzdE1lZGlh
UXVlcnlMaXN0TGlzdGVuZXI+IEJhc2U7CiAgICAgc3RhdGljIEpTVGVzdE1lZGlhUXVlcnlMaXN0
TGlzdGVuZXIqIGNyZWF0ZShKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI+JiYgaW1w
bCkKICAgICB7Ci0gICAgICAgIEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIqIHB0ciA9IG5l
dyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5l
cj4oZ2xvYmFsT2JqZWN0LT52bSgpLmhlYXApKSBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVy
KHN0cnVjdHVyZSwgKmdsb2JhbE9iamVjdCwgV1RGOjptb3ZlKGltcGwpKTsKKyAgICAgICAgSlNU
ZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lciogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9j
YXRlQ2VsbDxKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyPihnbG9iYWxPYmplY3QtPnZtKCku
aGVhcCkpIEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIoc3RydWN0dXJlLCAqZ2xvYmFsT2Jq
ZWN0LCBXVEZNb3ZlKGltcGwpKTsKICAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbihnbG9iYWxP
YmplY3QtPnZtKCkpOwogICAgICAgICByZXR1cm4gcHRyOwogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZENvbnN0cnVj
dG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lZENvbnN0cnVjdG9yLmNwcAppbmRleCBjOGE2MTY0NmI4MmRkOTFhNWM2Mzc5MjZhZDU0M2Y5
YTFiMjgwM2QzLi5kOGM2NDZhNzI0NDIwNTc3ZWEzNzU0ZTc2YzMxMjdmNDA0ZmRhNDc2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFt
ZWRDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwCkBAIC0xMjIsNyArMTIyLDcgQEAgdm9p
ZCBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0p
CiBjb25zdCBDbGFzc0luZm8gSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVz
dE5hbWVkQ29uc3RydWN0b3IiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxF
KEpTVGVzdE5hbWVkQ29uc3RydWN0b3IpIH07CiAKIEpTVGVzdE5hbWVkQ29uc3RydWN0b3I6OkpT
VGVzdE5hbWVkQ29uc3RydWN0b3IoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2Jq
ZWN0JiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0TmFtZWRDb25zdHJ1Y3Rvcj4mJiBpbXBsKQotICAg
IDogSlNET01XcmFwcGVyPFRlc3ROYW1lZENvbnN0cnVjdG9yPihzdHJ1Y3R1cmUsIGdsb2JhbE9i
amVjdCwgV1RGOjptb3ZlKGltcGwpKQorICAgIDogSlNET01XcmFwcGVyPFRlc3ROYW1lZENvbnN0
cnVjdG9yPihzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSkKIHsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5hbWVkQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROYW1lZENvbnN0cnVjdG9yLmgKaW5kZXggZGU0MGM3Y2ZiNTQ1ZGJjZmU4NjJl
MTRmZDU3ZGRmY2VlYmEwZDNiNC4uN2MzMDMxNjRmNDIwNmIwN2Y0NmNhNWNmN2JlMDFlYmNjNmIz
NDE5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkQ29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5oCkBAIC0zMiw3ICszMiw3IEBA
IHB1YmxpYzoKICAgICB0eXBlZGVmIEpTRE9NV3JhcHBlcjxUZXN0TmFtZWRDb25zdHJ1Y3Rvcj4g
QmFzZTsKICAgICBzdGF0aWMgSlNUZXN0TmFtZWRDb25zdHJ1Y3RvciogY3JlYXRlKEpTQzo6U3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxU
ZXN0TmFtZWRDb25zdHJ1Y3Rvcj4mJiBpbXBsKQogICAgIHsKLSAgICAgICAgSlNUZXN0TmFtZWRD
b25zdHJ1Y3RvciogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RO
YW1lZENvbnN0cnVjdG9yPihnbG9iYWxPYmplY3QtPnZtKCkuaGVhcCkpIEpTVGVzdE5hbWVkQ29u
c3RydWN0b3Ioc3RydWN0dXJlLCAqZ2xvYmFsT2JqZWN0LCBXVEY6Om1vdmUoaW1wbCkpOworICAg
ICAgICBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxs
b2NhdGVDZWxsPEpTVGVzdE5hbWVkQ29uc3RydWN0b3I+KGdsb2JhbE9iamVjdC0+dm0oKS5oZWFw
KSkgSlNUZXN0TmFtZWRDb25zdHJ1Y3RvcihzdHJ1Y3R1cmUsICpnbG9iYWxPYmplY3QsIFdURk1v
dmUoaW1wbCkpOwogICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKGdsb2JhbE9iamVjdC0+dm0o
KSk7CiAgICAgICAgIHJldHVybiBwdHI7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3BwCmluZGV4IGQwZWFhMzE3
ODhmNzAxMjk2ZGYwMWYwZGMwMjUwNjMwOWQ3NGQxYzAuLmJmOWJiNjZjYWEyNTg0NTRhY2IzZWRm
YWZmM2IyNWZkZDg1NjNiZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHAKQEAgLTEwMSw3ICsxMDEsNyBAQCB2b2lk
IEpTVGVzdE5vZGVQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKIGNvbnN0IENsYXNz
SW5mbyBKU1Rlc3ROb2RlOjpzX2luZm8gPSB7ICJUZXN0Tm9kZSIsICZCYXNlOjpzX2luZm8sIDAs
IENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0Tm9kZSkgfTsKIAogSlNUZXN0Tm9kZTo6SlNUZXN0
Tm9kZShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVj
dCwgUmVmPFRlc3ROb2RlPiYmIGltcGwpCi0gICAgOiBKU05vZGUoc3RydWN0dXJlLCBnbG9iYWxP
YmplY3QsIFdURjo6bW92ZShpbXBsKSkKKyAgICA6IEpTTm9kZShzdHJ1Y3R1cmUsIGdsb2JhbE9i
amVjdCwgV1RGTW92ZShpbXBsKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmgKaW5kZXggMGM3MmEzMWJkYjZiY2Jm
OWIxN2E3ZDZiYzExOWU1YjM0ODQ2MDAzOS4uZGI5OThjM2MwOGIzZmY2NjRhNDNlMTc3NzVhYWJh
Mjk4ODUyYTc0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0Tm9kZS5oCkBAIC0zMSw3ICszMSw3IEBAIHB1YmxpYzoKICAgICB0eXBl
ZGVmIEpTTm9kZSBCYXNlOwogICAgIHN0YXRpYyBKU1Rlc3ROb2RlKiBjcmVhdGUoSlNDOjpTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRl
c3ROb2RlPiYmIGltcGwpCiAgICAgewotICAgICAgICBKU1Rlc3ROb2RlKiBwdHIgPSBuZXcgKE5v
dE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdE5vZGU+KGdsb2JhbE9iamVjdC0+dm0oKS5o
ZWFwKSkgSlNUZXN0Tm9kZShzdHJ1Y3R1cmUsICpnbG9iYWxPYmplY3QsIFdURjo6bW92ZShpbXBs
KSk7CisgICAgICAgIEpTVGVzdE5vZGUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0
ZUNlbGw8SlNUZXN0Tm9kZT4oZ2xvYmFsT2JqZWN0LT52bSgpLmhlYXApKSBKU1Rlc3ROb2RlKHN0
cnVjdHVyZSwgKmdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSk7CiAgICAgICAgIHB0ci0+Zmlu
aXNoQ3JlYXRpb24oZ2xvYmFsT2JqZWN0LT52bSgpKTsKICAgICAgICAgcmV0dXJuIHB0cjsKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYy5jcHAKaW5kZXggMTkyYWUwOGFiY2I0
NDRjZTVmMzBjMjY2MTk0MjdkOTM0ODc0MWE5Zi4uYjg0ZDI0M2M0NThhM2YyZTdmYTYwMzU3MjFk
ZTNiNTQwYzEzMzgzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5vbmRldGVybWluaXN0aWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb25kZXRlcm1pbmlzdGljLmNwcApAQCAt
MTE2LDcgKzExNiw3IEBAIHZvaWQgSlNUZXN0Tm9uZGV0ZXJtaW5pc3RpY1Byb3RvdHlwZTo6Zmlu
aXNoQ3JlYXRpb24oVk0mIHZtKQogY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE5vbmRldGVybWluaXN0
aWM6OnNfaW5mbyA9IHsgIlRlc3ROb25kZXRlcm1pbmlzdGljIiwgJkJhc2U6OnNfaW5mbywgMCwg
Q1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3ROb25kZXRlcm1pbmlzdGljKSB9OwogCiBKU1Rlc3RO
b25kZXRlcm1pbmlzdGljOjpKU1Rlc3ROb25kZXRlcm1pbmlzdGljKFN0cnVjdHVyZSogc3RydWN0
dXJlLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdE5vbmRldGVybWlu
aXN0aWM+JiYgaW1wbCkKLSAgICA6IEpTRE9NV3JhcHBlcjxUZXN0Tm9uZGV0ZXJtaW5pc3RpYz4o
c3RydWN0dXJlLCBnbG9iYWxPYmplY3QsIFdURjo6bW92ZShpbXBsKSkKKyAgICA6IEpTRE9NV3Jh
cHBlcjxUZXN0Tm9uZGV0ZXJtaW5pc3RpYz4oc3RydWN0dXJlLCBnbG9iYWxPYmplY3QsIFdURk1v
dmUoaW1wbCkpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROb25kZXRlcm1pbmlzdGljLmggYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYy5oCmluZGV4IGIx
ZDEwN2NhNmM5OGUwODRjNTI3YTcyYTFhMGE0MDdkMGI1NTRjOTQuLmNjYmY0MTU2MTA3NjYzMWJi
NTFhMjNiZTY5NGU2ODE2NWQ0MzAzY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb25kZXRlcm1pbmlzdGljLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vbmRldGVybWluaXN0aWMu
aApAQCAtMzIsNyArMzIsNyBAQCBwdWJsaWM6CiAgICAgdHlwZWRlZiBKU0RPTVdyYXBwZXI8VGVz
dE5vbmRldGVybWluaXN0aWM+IEJhc2U7CiAgICAgc3RhdGljIEpTVGVzdE5vbmRldGVybWluaXN0
aWMqIGNyZWF0ZShKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBSZWY8VGVzdE5vbmRldGVybWluaXN0aWM+JiYgaW1wbCkKICAgICB7Ci0g
ICAgICAgIEpTVGVzdE5vbmRldGVybWluaXN0aWMqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjph
bGxvY2F0ZUNlbGw8SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYz4oZ2xvYmFsT2JqZWN0LT52bSgpLmhl
YXApKSBKU1Rlc3ROb25kZXRlcm1pbmlzdGljKHN0cnVjdHVyZSwgKmdsb2JhbE9iamVjdCwgV1RG
Ojptb3ZlKGltcGwpKTsKKyAgICAgICAgSlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYyogcHRyID0gbmV3
IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3ROb25kZXRlcm1pbmlzdGljPihnbG9i
YWxPYmplY3QtPnZtKCkuaGVhcCkpIEpTVGVzdE5vbmRldGVybWluaXN0aWMoc3RydWN0dXJlLCAq
Z2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKICAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlv
bihnbG9iYWxPYmplY3QtPnZtKCkpOwogICAgICAgICByZXR1cm4gcHRyOwogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmou
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5j
cHAKaW5kZXggZWFlODFhMDJmYWQzZWY5N2Y2OGQ1ZjFkOWY1OWViNDIxM2JjZjMyYi4uZGQ0NTFl
YWZhOWNjNzI2MDUzN2RmOTIxYTY1ZjhhYmIzY2ZlNmU3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKQEAgLTcwOSw3
ICs3MDksNyBAQCB2b2lkIEpTVGVzdE9ialByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZt
KQogY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE9iajo6c19pbmZvID0geyAiVGVzdE9iamVjdCIsICZC
YXNlOjpzX2luZm8sICZKU1Rlc3RPYmpUYWJsZSwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RP
YmopIH07CiAKIEpTVGVzdE9iajo6SlNUZXN0T2JqKFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RP
TUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdE9iaj4mJiBpbXBsKQotICAgIDog
SlNET01XcmFwcGVyPFRlc3RPYmo+KHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0LCBXVEY6Om1vdmUo
aW1wbCkpCisgICAgOiBKU0RPTVdyYXBwZXI8VGVzdE9iaj4oc3RydWN0dXJlLCBnbG9iYWxPYmpl
Y3QsIFdURk1vdmUoaW1wbCkpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouaAppbmRleCBlZjE0MDkyMzg3NDE1OWU2OTFk
MTZmZjE4N2FiZWJmODllZTdmZjFiLi4xNzJlN2Y1ZjNjMGM2NWE2MWIwY2RhY2M2ZDM5MjljYzMy
N2U1YTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0T2JqLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE9iai5oCkBAIC0zMiw3ICszMiw3IEBAIHB1YmxpYzoKICAgICB0eXBlZGVmIEpT
RE9NV3JhcHBlcjxUZXN0T2JqPiBCYXNlOwogICAgIHN0YXRpYyBKU1Rlc3RPYmoqIGNyZWF0ZShK
U0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBSZWY8VGVzdE9iaj4mJiBpbXBsKQogICAgIHsKLSAgICAgICAgSlNUZXN0T2JqKiBwdHIgPSBu
ZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdE9iaj4oZ2xvYmFsT2JqZWN0LT52
bSgpLmhlYXApKSBKU1Rlc3RPYmooc3RydWN0dXJlLCAqZ2xvYmFsT2JqZWN0LCBXVEY6Om1vdmUo
aW1wbCkpOworICAgICAgICBKU1Rlc3RPYmoqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxv
Y2F0ZUNlbGw8SlNUZXN0T2JqPihnbG9iYWxPYmplY3QtPnZtKCkuaGVhcCkpIEpTVGVzdE9iaihz
dHJ1Y3R1cmUsICpnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOwogICAgICAgICBwdHItPmZp
bmlzaENyZWF0aW9uKGdsb2JhbE9iamVjdC0+dm0oKSk7CiAgICAgICAgIHJldHVybiBwdHI7CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwCmluZGV4
IGRlNGFiZmFjZjg0YWFmNzEwNThmM2JiZWEwOTEyOTE4ZjJlZDNmMTQuLjMwOTVkZGE1NDJkOTNj
ODljMGI1NjliOTk5ZGY1OWVhOGJkMzRiZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9ycy5jcHAKQEAgLTE2Nyw3ICsxNjcsNyBAQCB2b2lkIEpTVGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnNQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKIGNvbnN0
IENsYXNzSW5mbyBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpzX2luZm8gPSB7ICJUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0Rf
VEFCTEUoSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycykgfTsKIAogSlNUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9yczo6SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyhTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgUmVmPFRlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzPiYmIGltcGwpCi0gICAgOiBKU0RPTVdyYXBwZXI8VGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnM+KHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0LCBXVEY6Om1vdmUoaW1wbCkp
CisgICAgOiBKU0RPTVdyYXBwZXI8VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM+KHN0cnVjdHVy
ZSwgZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9ycy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuaAppbmRleCBiN2I5ZWE3Y2VhZDEzNjMxMGZiNGI1MDky
ZGZlYTdlYThlYjA1NTlhLi41ZjBjODM5NGU1ZDRhYmYzZWY1ZmQzZjQ0YzM1N2VmODY5ZWY5OWRi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmgKQEAgLTMyLDcg
KzMyLDcgQEAgcHVibGljOgogICAgIHR5cGVkZWYgSlNET01XcmFwcGVyPFRlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzPiBCYXNlOwogICAgIHN0YXRpYyBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzKiBjcmVhdGUoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgUmVmPFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzPiYmIGltcGwpCiAg
ICAgewotICAgICAgICBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKiBwdHIgPSBuZXcgKE5v
dE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM+KGds
b2JhbE9iamVjdC0+dm0oKS5oZWFwKSkgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyhzdHJ1
Y3R1cmUsICpnbG9iYWxPYmplY3QsIFdURjo6bW92ZShpbXBsKSk7CisgICAgICAgIEpTVGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNl
bGw8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycz4oZ2xvYmFsT2JqZWN0LT52bSgpLmhlYXAp
KSBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKHN0cnVjdHVyZSwgKmdsb2JhbE9iamVjdCwg
V1RGTW92ZShpbXBsKSk7CiAgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsT2JqZWN0
LT52bSgpKTsKICAgICAgICAgcmV0dXJuIHB0cjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcnJpZGVCdWlsdGlucy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcnJp
ZGVCdWlsdGlucy5jcHAKaW5kZXggNDFmM2YyNDkyMjExYjQ0ZGFiY2ZmOTcyYWQyYjQyNWM3YzA2
NzY4Mi4uNWYzMWFkOTA0MGE1YTFlODFiNmU1NmNiYTE1ZmU5OTJjNzM1ZGZmYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJyaWRl
QnVpbHRpbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmNwcApAQCAtMTEwLDcgKzExMCw3IEBAIHZvaWQgSlNU
ZXN0T3ZlcnJpZGVCdWlsdGluc1Byb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogY29u
c3QgQ2xhc3NJbmZvIEpTVGVzdE92ZXJyaWRlQnVpbHRpbnM6OnNfaW5mbyA9IHsgIlRlc3RPdmVy
cmlkZUJ1aWx0aW5zIiwgJkJhc2U6OnNfaW5mbywgJkpTVGVzdE92ZXJyaWRlQnVpbHRpbnNUYWJs
ZSwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zKSB9OwogCiBKU1Rl
c3RPdmVycmlkZUJ1aWx0aW5zOjpKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zKFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdE92ZXJyaWRl
QnVpbHRpbnM+JiYgaW1wbCkKLSAgICA6IEpTRE9NV3JhcHBlcjxUZXN0T3ZlcnJpZGVCdWlsdGlu
cz4oc3RydWN0dXJlLCBnbG9iYWxPYmplY3QsIFdURjo6bW92ZShpbXBsKSkKKyAgICA6IEpTRE9N
V3JhcHBlcjxUZXN0T3ZlcnJpZGVCdWlsdGlucz4oc3RydWN0dXJlLCBnbG9iYWxPYmplY3QsIFdU
Rk1vdmUoaW1wbCkpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmggYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcnJpZGVCdWlsdGlucy5oCmluZGV4
IGZkNjI1MzBiNjZhNTJkMzdkZmVjM2QzNzQ1NDRkZmFmY2JiYjYwNTguLjdhNmU2YmZmMjQ3Mjg0
OWQxMTIzYzI3MzAyMjRjOTYzNWIxNzVmZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJyaWRlQnVpbHRp
bnMuaApAQCAtMzIsNyArMzIsNyBAQCBwdWJsaWM6CiAgICAgdHlwZWRlZiBKU0RPTVdyYXBwZXI8
VGVzdE92ZXJyaWRlQnVpbHRpbnM+IEJhc2U7CiAgICAgc3RhdGljIEpTVGVzdE92ZXJyaWRlQnVp
bHRpbnMqIGNyZWF0ZShKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdE92ZXJyaWRlQnVpbHRpbnM+JiYgaW1wbCkKICAgICB7
Ci0gICAgICAgIEpTVGVzdE92ZXJyaWRlQnVpbHRpbnMqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlND
OjphbGxvY2F0ZUNlbGw8SlNUZXN0T3ZlcnJpZGVCdWlsdGlucz4oZ2xvYmFsT2JqZWN0LT52bSgp
LmhlYXApKSBKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zKHN0cnVjdHVyZSwgKmdsb2JhbE9iamVjdCwg
V1RGOjptb3ZlKGltcGwpKTsKKyAgICAgICAgSlNUZXN0T3ZlcnJpZGVCdWlsdGlucyogcHRyID0g
bmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zPihn
bG9iYWxPYmplY3QtPnZtKCkuaGVhcCkpIEpTVGVzdE92ZXJyaWRlQnVpbHRpbnMoc3RydWN0dXJl
LCAqZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKICAgICAgICAgcHRyLT5maW5pc2hDcmVh
dGlvbihnbG9iYWxPYmplY3QtPnZtKCkpOwogICAgICAgICByZXR1cm4gcHRyOwogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5j
cHAKaW5kZXggM2EzMjcyMWViMWU5MmJjMTkwYTNkMGFmZWU1MjRkMTU1NjMxYzg3Mi4uY2E5OWE2
ZDYwNzliOWExNTNjMzBhYmZkMjI0MDBkYmM0ZjljZWQ0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZUludGVyZmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAKQEAgLTEwNiw3ICsx
MDYsNyBAQCB2b2lkIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVByb3RvdHlw
ZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogY29uc3QgQ2xhc3NJbmZvIEpTVGVzdFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTo6c19pbmZvID0geyAiVGVzdFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUludGVyZmFjZSIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNU
ZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKSB9OwogCiBKU1Rlc3RTZXJpYWxpemVk
U2NyaXB0VmFsdWVJbnRlcmZhY2U6OkpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFj
ZShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwg
UmVmPFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U+JiYgaW1wbCkKLSAgICA6IEpT
RE9NV3JhcHBlcjxUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlPihzdHJ1Y3R1cmUs
IGdsb2JhbE9iamVjdCwgV1RGOjptb3ZlKGltcGwpKQorICAgIDogSlNET01XcmFwcGVyPFRlc3RT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U+KHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0LCBX
VEZNb3ZlKGltcGwpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmgKaW5kZXggNzVhNzI1YmQ0MDYxODIyMWI2YmY3OTVkMjAy
ZTk0MGU1YjkzYWY3NC4uYzM2NGIxZmRiNWEzZjE0YTUxNzNiZmIwN2Q1ZjQxNGQyM2Y1N2I2ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZh
Y2UuaApAQCAtMzQsNyArMzQsNyBAQCBwdWJsaWM6CiAgICAgdHlwZWRlZiBKU0RPTVdyYXBwZXI8
VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZT4gQmFzZTsKICAgICBzdGF0aWMgSlNU
ZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKiBjcmVhdGUoSlNDOjpTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3RTZXJp
YWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U+JiYgaW1wbCkKICAgICB7Ci0gICAgICAgIEpTVGVz
dFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6
OmFsbG9jYXRlQ2VsbDxKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U+KGdsb2Jh
bE9iamVjdC0+dm0oKS5oZWFwKSkgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNl
KHN0cnVjdHVyZSwgKmdsb2JhbE9iamVjdCwgV1RGOjptb3ZlKGltcGwpKTsKKyAgICAgICAgSlNU
ZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpT
Qzo6YWxsb2NhdGVDZWxsPEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZT4oZ2xv
YmFsT2JqZWN0LT52bSgpLmhlYXApKSBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZh
Y2Uoc3RydWN0dXJlLCAqZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKICAgICAgICAgcHRy
LT5maW5pc2hDcmVhdGlvbihnbG9iYWxPYmplY3QtPnZtKCkpOwogICAgICAgICByZXR1cm4gcHRy
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwCmluZGV4IDRlNGNmZTg1YTIwN2VlMWE3NmYyM2Jj
Y2FmODAyYzI3OWYxZTgwODYuLjUyZjgxNDJlYTQ2OWU1ODhjYmRmZjNiM2RjMDFkMjY5MjU4YTE3
ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RUeXBlZGVmcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcApAQCAtMTgwLDcgKzE4MCw3IEBAIHZvaWQgSlNUZXN0
VHlwZWRlZnNQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKIGNvbnN0IENsYXNzSW5m
byBKU1Rlc3RUeXBlZGVmczo6c19pbmZvID0geyAiVGVzdFR5cGVkZWZzIiwgJkJhc2U6OnNfaW5m
bywgJkpTVGVzdFR5cGVkZWZzVGFibGUsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0VHlwZWRl
ZnMpIH07CiAKIEpTVGVzdFR5cGVkZWZzOjpKU1Rlc3RUeXBlZGVmcyhTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgUmVmPFRlc3RUeXBlZGVmcz4m
JiBpbXBsKQotICAgIDogSlNET01XcmFwcGVyPFRlc3RUeXBlZGVmcz4oc3RydWN0dXJlLCBnbG9i
YWxPYmplY3QsIFdURjo6bW92ZShpbXBsKSkKKyAgICA6IEpTRE9NV3JhcHBlcjxUZXN0VHlwZWRl
ZnM+KHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKQogewogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlw
ZWRlZnMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RU
eXBlZGVmcy5oCmluZGV4IDFkYmE4ZjBlNzJkZDgyZjRjNmMzNGY2ZmE5NzhjZTgzYThhNGJiMTIu
LjY5NzE2MzYzMDYxNWQzMDUxYWU4OTcyNzgwNTQ1NWI5MWI1NjkyNDAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVm
cy5oCkBAIC0zMiw3ICszMiw3IEBAIHB1YmxpYzoKICAgICB0eXBlZGVmIEpTRE9NV3JhcHBlcjxU
ZXN0VHlwZWRlZnM+IEJhc2U7CiAgICAgc3RhdGljIEpTVGVzdFR5cGVkZWZzKiBjcmVhdGUoSlND
OjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
UmVmPFRlc3RUeXBlZGVmcz4mJiBpbXBsKQogICAgIHsKLSAgICAgICAgSlNUZXN0VHlwZWRlZnMq
IHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0VHlwZWRlZnM+KGds
b2JhbE9iamVjdC0+dm0oKS5oZWFwKSkgSlNUZXN0VHlwZWRlZnMoc3RydWN0dXJlLCAqZ2xvYmFs
T2JqZWN0LCBXVEY6Om1vdmUoaW1wbCkpOworICAgICAgICBKU1Rlc3RUeXBlZGVmcyogcHRyID0g
bmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RUeXBlZGVmcz4oZ2xvYmFsT2Jq
ZWN0LT52bSgpLmhlYXApKSBKU1Rlc3RUeXBlZGVmcyhzdHJ1Y3R1cmUsICpnbG9iYWxPYmplY3Qs
IFdURk1vdmUoaW1wbCkpOwogICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKGdsb2JhbE9iamVj
dC0+dm0oKSk7CiAgICAgICAgIHJldHVybiBwdHI7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTYXR0cmlidXRlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU2F0dHJpYnV0ZS5jcHAKaW5kZXgg
ZTJmY2JhZmIyMGUzYTRhY2U2YzgxZGZkMWJhNGRmMTlhNmZkYzFkZS4uNWQ2ZDkxOWI1NzBhOTgw
NjlmMTI4YjFjMzhmMTgwMTlkNDY2ZTg4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTYXR0cmlidXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNhdHRyaWJ1dGUuY3BwCkBAIC05MSw3ICs5MSw3
IEBAIHZvaWQgSlNhdHRyaWJ1dGVQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKIGNv
bnN0IENsYXNzSW5mbyBKU2F0dHJpYnV0ZTo6c19pbmZvID0geyAiYXR0cmlidXRlIiwgJkJhc2U6
OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU2F0dHJpYnV0ZSkgfTsKIAogSlNhdHRy
aWJ1dGU6OkpTYXR0cmlidXRlKFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVj
dCYgZ2xvYmFsT2JqZWN0LCBSZWY8YXR0cmlidXRlPiYmIGltcGwpCi0gICAgOiBKU0RPTVdyYXBw
ZXI8YXR0cmlidXRlPihzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCwgV1RGOjptb3ZlKGltcGwpKQor
ICAgIDogSlNET01XcmFwcGVyPGF0dHJpYnV0ZT4oc3RydWN0dXJlLCBnbG9iYWxPYmplY3QsIFdU
Rk1vdmUoaW1wbCkpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU2F0dHJpYnV0ZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTYXR0cmlidXRlLmgKaW5kZXggOTQ3NjVmZjc2YjU2ZjIxMGNjOGUz
OWRlMDMwYTNmNzQ2YmQ2N2IwMy4uYzgzY2E4YWRhM2QwOWQyMGQxMTY4MTI3NWQ5MjMzNGY1YzMy
ZGMwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTYXR0cmlidXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTYXR0cmlidXRlLmgKQEAgLTMzLDcgKzMzLDcgQEAgcHVibGljOgogICAgIHR5cGVkZWYg
SlNET01XcmFwcGVyPGF0dHJpYnV0ZT4gQmFzZTsKICAgICBzdGF0aWMgSlNhdHRyaWJ1dGUqIGNy
ZWF0ZShKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBSZWY8YXR0cmlidXRlPiYmIGltcGwpCiAgICAgewotICAgICAgICBKU2F0dHJpYnV0
ZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU2F0dHJpYnV0ZT4oZ2xv
YmFsT2JqZWN0LT52bSgpLmhlYXApKSBKU2F0dHJpYnV0ZShzdHJ1Y3R1cmUsICpnbG9iYWxPYmpl
Y3QsIFdURjo6bW92ZShpbXBsKSk7CisgICAgICAgIEpTYXR0cmlidXRlKiBwdHIgPSBuZXcgKE5v
dE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTYXR0cmlidXRlPihnbG9iYWxPYmplY3QtPnZtKCku
aGVhcCkpIEpTYXR0cmlidXRlKHN0cnVjdHVyZSwgKmdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBs
KSk7CiAgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsT2JqZWN0LT52bSgpKTsKICAg
ICAgICAgcmV0dXJuIHB0cjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNyZWFkb25seS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNyZWFkb25seS5jcHAKaW5kZXggY2VlODI1Mjc2NjU3ZjU2
YzM3ZWM4ZDIzY2VlYmM4OWEyMmY0MTRkMS4uZDdmZWYzZGI5N2Y0MTU0NmU2ODAxNDBhYTNjODg5
YmFiOTZlNjI3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTcmVhZG9ubHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU3JlYWRvbmx5LmNwcApAQCAtODcsNyArODcsNyBAQCB2b2lkIEpTcmVhZG9u
bHlQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKIGNvbnN0IENsYXNzSW5mbyBKU3Jl
YWRvbmx5OjpzX2luZm8gPSB7ICJyZWFkb25seSIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9N
RVRIT0RfVEFCTEUoSlNyZWFkb25seSkgfTsKIAogSlNyZWFkb25seTo6SlNyZWFkb25seShTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgUmVmPHJl
YWRvbmx5PiYmIGltcGwpCi0gICAgOiBKU0RPTVdyYXBwZXI8cmVhZG9ubHk+KHN0cnVjdHVyZSwg
Z2xvYmFsT2JqZWN0LCBXVEY6Om1vdmUoaW1wbCkpCisgICAgOiBKU0RPTVdyYXBwZXI8cmVhZG9u
bHk+KHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKQogewogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNyZWFkb25s
eS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTcmVhZG9ubHku
aAppbmRleCBiNzk4ZGE4MDIyMTI4N2Q1YzVjMDVjZmMwYmE0MWFhYmE3ZTk0YTczLi5hN2I3MzI2
NzE3MGIyODZmMWYxZDQwNzRlOTcxZmQ5NTNjM2FmMjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNyZWFkb25seS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU3JlYWRvbmx5LmgKQEAgLTMyLDcgKzMy
LDcgQEAgcHVibGljOgogICAgIHR5cGVkZWYgSlNET01XcmFwcGVyPHJlYWRvbmx5PiBCYXNlOwog
ICAgIHN0YXRpYyBKU3JlYWRvbmx5KiBjcmVhdGUoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
SlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPHJlYWRvbmx5PiYmIGltcGwpCiAg
ICAgewotICAgICAgICBKU3JlYWRvbmx5KiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2Nh
dGVDZWxsPEpTcmVhZG9ubHk+KGdsb2JhbE9iamVjdC0+dm0oKS5oZWFwKSkgSlNyZWFkb25seShz
dHJ1Y3R1cmUsICpnbG9iYWxPYmplY3QsIFdURjo6bW92ZShpbXBsKSk7CisgICAgICAgIEpTcmVh
ZG9ubHkqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNyZWFkb25seT4o
Z2xvYmFsT2JqZWN0LT52bSgpLmhlYXApKSBKU3JlYWRvbmx5KHN0cnVjdHVyZSwgKmdsb2JhbE9i
amVjdCwgV1RGTW92ZShpbXBsKSk7CiAgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFs
T2JqZWN0LT52bSgpKTsKICAgICAgICAgcmV0dXJuIHB0cjsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9DUnVudGltZU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9icmlkZ2UvYy9DUnVudGltZU9iamVjdC5jcHAKaW5kZXggYmNiMDQyMDE3MjgzNjNjYTI4ZDE3
NmMyYjliMWEwMzEzOTMwZmNiNS4uZDljZjFjNDZjNzY4OGM5NjRlNjAwNzc0NmY3NmFkM2U5ZDQ5
NTliOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvQ1J1bnRpbWVPYmplY3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL0NSdW50aW1lT2JqZWN0LmNwcApAQCAt
MzgsNyArMzgsNyBAQCBuYW1lc3BhY2UgQmluZGluZ3MgewogY29uc3QgQ2xhc3NJbmZvIENSdW50
aW1lT2JqZWN0OjpzX2luZm8gPSB7ICJDUnVudGltZU9iamVjdCIsICZSdW50aW1lT2JqZWN0Ojpz
X2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoQ1J1bnRpbWVPYmplY3QpIH07CiAKIENSdW50
aW1lT2JqZWN0OjpDUnVudGltZU9iamVjdChWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBS
ZWZQdHI8Q0luc3RhbmNlPiYmIGluc3RhbmNlKQotICAgIDogUnVudGltZU9iamVjdCh2bSwgc3Ry
dWN0dXJlLCBXVEY6Om1vdmUoaW5zdGFuY2UpKQorICAgIDogUnVudGltZU9iamVjdCh2bSwgc3Ry
dWN0dXJlLCBXVEZNb3ZlKGluc3RhbmNlKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYnJpZGdlL2MvQ1J1bnRpbWVPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9j
L0NSdW50aW1lT2JqZWN0LmgKaW5kZXggMzVjMGYzZjkxN2U0NTkzMzFiZjBhZmMzY2M3ZDBjNDE2
ZWIzODNhNy4uYTBiNGEyNGVkZDQwMWZkYWE5NWMwYTFhY2U3OGZiOTk2OTBiOTBmZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvQ1J1bnRpbWVPYmplY3QuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9icmlkZ2UvYy9DUnVudGltZU9iamVjdC5oCkBAIC00Niw3ICs0Niw3IEBAIHB1
YmxpYzoKIAogICAgIHN0YXRpYyBDUnVudGltZU9iamVjdCogY3JlYXRlKFZNJiB2bSwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIFJlZlB0cjxDSW5zdGFuY2U+JiYgaW5zdGFuY2UpCiAgICAgewotICAg
ICAgICBDUnVudGltZU9iamVjdCogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8
Q1J1bnRpbWVPYmplY3Q+KHZtLmhlYXApKSBDUnVudGltZU9iamVjdCh2bSwgc3RydWN0dXJlLCBX
VEY6Om1vdmUoaW5zdGFuY2UpKTsKKyAgICAgICAgQ1J1bnRpbWVPYmplY3QqIG9iamVjdCA9IG5l
dyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPENSdW50aW1lT2JqZWN0Pih2bS5oZWFwKSkgQ1J1bnRp
bWVPYmplY3Qodm0sIHN0cnVjdHVyZSwgV1RGTW92ZShpbnN0YW5jZSkpOwogICAgICAgICBvYmpl
Y3QtPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICAgICAgcmV0dXJuIG9iamVjdDsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX2NsYXNzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JyaWRnZS9jL2NfY2xhc3MuY3BwCmluZGV4IDVkYjJlMDEzMTU1NGI3N2QwZGFhMjkz
YzQ1MmQ4NTkyZGZlZjQ1YmEuLmRmYzBkN2FjMDhjNzNlYWUyNjEzMmQ1YTQ3MmQzYTFkYjAwMThm
NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfY2xhc3MuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfY2xhc3MuY3BwCkBAIC04Miw3ICs4Miw3IEBAIE1l
dGhvZCogQ0NsYXNzOjptZXRob2ROYW1lZChQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBJbnN0
YW5jZSogaW5zdGFuY2UpIGNvbnN0CiAgICAgaWYgKG1faXNhLT5oYXNNZXRob2QgJiYgbV9pc2Et
Pmhhc01ldGhvZChvYmosIGlkZW50KSkgewogICAgICAgICBhdXRvIG1ldGhvZCA9IHN0ZDo6bWFr
ZV91bmlxdWU8Q01ldGhvZD4oaWRlbnQpOwogICAgICAgICBDTWV0aG9kKiByZXQgPSBtZXRob2Qu
Z2V0KCk7Ci0gICAgICAgIG1fbWV0aG9kcy5zZXQobmFtZS5pbXBsKCksIFdURjo6bW92ZShtZXRo
b2QpKTsKKyAgICAgICAgbV9tZXRob2RzLnNldChuYW1lLmltcGwoKSwgV1RGTW92ZShtZXRob2Qp
KTsKICAgICAgICAgcmV0dXJuIHJldDsKICAgICB9CiAgICAgCkBAIC0xMDQsNyArMTA0LDcgQEAg
RmllbGQqIENDbGFzczo6ZmllbGROYW1lZChQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBJbnN0
YW5jZSogaW5zdGFuY2UpIGNvbnN0CiAgICAgaWYgKG1faXNhLT5oYXNQcm9wZXJ0eSAmJiBtX2lz
YS0+aGFzUHJvcGVydHkob2JqLCBpZGVudCkpIHsKICAgICAgICAgYXV0byBmaWVsZCA9IHN0ZDo6
bWFrZV91bmlxdWU8Q0ZpZWxkPihpZGVudCk7CiAgICAgICAgIENGaWVsZCogcmV0ID0gZmllbGQu
Z2V0KCk7Ci0gICAgICAgIG1fZmllbGRzLnNldChuYW1lLmltcGwoKSwgV1RGOjptb3ZlKGZpZWxk
KSk7CisgICAgICAgIG1fZmllbGRzLnNldChuYW1lLmltcGwoKSwgV1RGTW92ZShmaWVsZCkpOwog
ICAgICAgICByZXR1cm4gcmV0OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YnJpZGdlL2MvY19pbnN0YW5jZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX2luc3Rh
bmNlLmNwcAppbmRleCBkOWViZGFmMDQ5ZWRkYThmNDk3ZWU1MzhjZjE0ZGI5Y2FkMWMzY2EyLi40
NGY2NGI2N2ExNDJlZWViN2NmYmY1NGJhOWJmODg3OTVlMmU2MTVhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9icmlkZ2UvYy9jX2luc3RhbmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
cmlkZ2UvYy9jX2luc3RhbmNlLmNwcApAQCAtNzksNyArNzksNyBAQCB2b2lkIENJbnN0YW5jZTo6
bW92ZUdsb2JhbEV4Y2VwdGlvblRvRXhlY1N0YXRlKEV4ZWNTdGF0ZSogZXhlYykKIH0KIAogQ0lu
c3RhbmNlOjpDSW5zdGFuY2UoTlBPYmplY3QqIG8sIFJlZlB0cjxSb290T2JqZWN0PiYmIHJvb3RP
YmplY3QpCi0gICAgOiBJbnN0YW5jZShXVEY6Om1vdmUocm9vdE9iamVjdCkpCisgICAgOiBJbnN0
YW5jZShXVEZNb3ZlKHJvb3RPYmplY3QpKQogewogICAgIF9vYmplY3QgPSBfTlBOX1JldGFpbk9i
amVjdChvKTsKICAgICBfY2xhc3MgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJp
ZGdlL2MvY19pbnN0YW5jZS5oIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY19pbnN0YW5jZS5o
CmluZGV4IDVkM2U2NjQ4MTRkMjI3MTRjZjFlNWMzOGNjYTFjMTNiNGRkYzNhMGMuLjVkYmU5NDY2
ZmMwMzE2ZGZmZTZmM2MxYWQwZjdmMTFlMmNiYWZkMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JyaWRnZS9jL2NfaW5zdGFuY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9j
X2luc3RhbmNlLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgY2xhc3MgQ0luc3RhbmNlIDogcHVibGljIElu
c3RhbmNlIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPENJbnN0YW5jZT4gY3JlYXRlKE5QT2Jq
ZWN0KiBvYmplY3QsIFJlZlB0cjxSb290T2JqZWN0PiYmIHJvb3RPYmplY3QpCiAgICAgewotICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDSW5zdGFuY2Uob2JqZWN0LCBXVEY6Om1vdmUocm9v
dE9iamVjdCkpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ0luc3RhbmNlKG9iamVj
dCwgV1RGTW92ZShyb290T2JqZWN0KSkpOwogICAgIH0KIAogICAgIHN0YXRpYyB2b2lkIHNldEds
b2JhbEV4Y2VwdGlvbihTdHJpbmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdl
L2pzYy9CcmlkZ2VKU0MuY3BwIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL2pzYy9CcmlkZ2VKU0Mu
Y3BwCmluZGV4IDViMDNlZmE1ZWYwOGE3ODExZjQwN2VlMjU2NTFlMzM3ODBkN2E2OTAuLmYxN2Ix
ZGYxNDRlYTE3Y2Y1NDVlZTQyZmQxM2QxY2Y4MGY4ZDQ1NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JyaWRnZS9qc2MvQnJpZGdlSlNDLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlk
Z2UvanNjL0JyaWRnZUpTQy5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiBu
YW1lc3BhY2UgQmluZGluZ3MgewogCiBBcnJheTo6QXJyYXkoUmVmUHRyPFJvb3RPYmplY3Q+JiYg
cm9vdE9iamVjdCkKLSAgICA6IG1fcm9vdE9iamVjdChXVEY6Om1vdmUocm9vdE9iamVjdCkpCisg
ICAgOiBtX3Jvb3RPYmplY3QoV1RGTW92ZShyb290T2JqZWN0KSkKIHsKICAgICBBU1NFUlQobV9y
b290T2JqZWN0KTsKIH0KQEAgLTQ5LDcgKzQ5LDcgQEAgQXJyYXk6On5BcnJheSgpCiB9CiAKIElu
c3RhbmNlOjpJbnN0YW5jZShSZWZQdHI8Um9vdE9iamVjdD4mJiByb290T2JqZWN0KQotICAgIDog
bV9yb290T2JqZWN0KFdURjo6bW92ZShyb290T2JqZWN0KSkKKyAgICA6IG1fcm9vdE9iamVjdChX
VEZNb3ZlKHJvb3RPYmplY3QpKQogewogICAgIEFTU0VSVChtX3Jvb3RPYmplY3QpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvT2JqQ1J1bnRpbWVPYmplY3QuaCBi
L1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL09iakNSdW50aW1lT2JqZWN0LmgKaW5kZXggMDU4
YmJhZjEwOGNjMmI2NzdlYTc3MmUxOTNlN2QzZGFjYjE3ZTAzZi4uZWM2NDdjYjk1MTlmYzMxOGE2
MzA5Nzg0ODBlMjhlYjVlZGFhMDk1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdl
L29iamMvT2JqQ1J1bnRpbWVPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2Jq
Yy9PYmpDUnVudGltZU9iamVjdC5oCkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKIAogICAgIHN0
YXRpYyBPYmpDUnVudGltZU9iamVjdCogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIFJlZlB0cjxPYmpjSW5zdGFuY2U+JiYgaW5zdCkKICAgICB7Ci0gICAgICAgIE9iakNSdW50
aW1lT2JqZWN0KiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxPYmpDUnVudGlt
ZU9iamVjdD4odm0uaGVhcCkpIE9iakNSdW50aW1lT2JqZWN0KHZtLCBzdHJ1Y3R1cmUsIFdURjo6
bW92ZShpbnN0KSk7CisgICAgICAgIE9iakNSdW50aW1lT2JqZWN0KiBvYmplY3QgPSBuZXcgKE5v
dE51bGwsIGFsbG9jYXRlQ2VsbDxPYmpDUnVudGltZU9iamVjdD4odm0uaGVhcCkpIE9iakNSdW50
aW1lT2JqZWN0KHZtLCBzdHJ1Y3R1cmUsIFdURk1vdmUoaW5zdCkpOwogICAgICAgICBvYmplY3Qt
PmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICAgICAgcmV0dXJuIG9iamVjdDsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2NsYXNzLm1tIGIvU291cmNl
L1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19jbGFzcy5tbQppbmRleCA3ODg1YTRmNmI4MGU4NzYx
ODEwNjZkYmZhNTE0OTBiZjE3YzMzY2I3Li4zZGVjODU2ZjQ3OTlkNjg1NjQ0YTdhYzkwNTBmY2Jh
NDc3YjJkOTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2Ns
YXNzLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfY2xhc3MubW0KQEAg
LTEzNiw3ICsxMzYsNyBAQCBNZXRob2QqIE9iamNDbGFzczo6bWV0aG9kTmFtZWQoUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgSW5zdGFuY2UqKSBjb25zdAogICAgICAgICAgICAgaWYgKChtYXBw
ZWROYW1lICYmIFttYXBwZWROYW1lIGlzRXF1YWw6KE5TU3RyaW5nKiltZXRob2ROYW1lLmdldCgp
XSkgfHwgc3RyY21wKG9iamNNZXRob2RTZWxlY3Rvck5hbWUsIGJ1ZmZlci5kYXRhKCkpID09IDAp
IHsKICAgICAgICAgICAgICAgICBhdXRvIG1ldGhvZCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqY01l
dGhvZD4odGhpc0NsYXNzLCBvYmpjTWV0aG9kU2VsZWN0b3IpOwogICAgICAgICAgICAgICAgIG1l
dGhvZFB0ciA9IG1ldGhvZC5nZXQoKTsKLSAgICAgICAgICAgICAgICBtX21ldGhvZENhY2hlLmFk
ZChuYW1lLmltcGwoKSwgV1RGOjptb3ZlKG1ldGhvZCkpOworICAgICAgICAgICAgICAgIG1fbWV0
aG9kQ2FjaGUuYWRkKG5hbWUuaW1wbCgpLCBXVEZNb3ZlKG1ldGhvZCkpOwogICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0xOTIsNyArMTkyLDcgQEAg
RmllbGQqIE9iamNDbGFzczo6ZmllbGROYW1lZChQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBJ
bnN0YW5jZSogaW5zdGFuY2UpIGNvbnMKICAgICAgICAgICAgIGlmICgobWFwcGVkTmFtZSAmJiBb
bWFwcGVkTmFtZSBpc0VxdWFsOihOU1N0cmluZyopZmllbGROYW1lLmdldCgpXSkgfHwgW2tleU5h
bWUgaXNFcXVhbDooTlNTdHJpbmcqKWZpZWxkTmFtZS5nZXQoKV0pIHsKICAgICAgICAgICAgICAg
ICBhdXRvIG5ld0ZpZWxkID0gc3RkOjptYWtlX3VuaXF1ZTxPYmpjRmllbGQ+KChDRlN0cmluZ1Jl
ZilrZXlOYW1lKTsKICAgICAgICAgICAgICAgICBmaWVsZCA9IG5ld0ZpZWxkLmdldCgpOwotICAg
ICAgICAgICAgICAgIG1fZmllbGRDYWNoZS5hZGQobmFtZS5pbXBsKCksIFdURjo6bW92ZShuZXdG
aWVsZCkpOworICAgICAgICAgICAgICAgIG1fZmllbGRDYWNoZS5hZGQobmFtZS5pbXBsKCksIFdU
Rk1vdmUobmV3RmllbGQpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0K
ICAgICAgICAgfQpAQCAtMjIzLDcgKzIyMyw3IEBAIEZpZWxkKiBPYmpjQ2xhc3M6OmZpZWxkTmFt
ZWQoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSW5zdGFuY2UqIGluc3RhbmNlKSBjb25zCiAg
ICAgICAgICAgICAgICAgaWYgKChtYXBwZWROYW1lICYmIFttYXBwZWROYW1lIGlzRXF1YWw6KE5T
U3RyaW5nKilmaWVsZE5hbWUuZ2V0KCldKSB8fCBzdHJjbXAob2JqY0l2YXJOYW1lLCBqc05hbWUu
ZGF0YSgpKSA9PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgIGF1dG8gbmV3RmllbGQgPSBzdGQ6
Om1ha2VfdW5pcXVlPE9iamNGaWVsZD4ob2JqY0lWYXIpOwogICAgICAgICAgICAgICAgICAgICBm
aWVsZCA9IG5ld0ZpZWxkLmdldCgpOwotICAgICAgICAgICAgICAgICAgICBtX2ZpZWxkQ2FjaGUu
YWRkKG5hbWUuaW1wbCgpLCBXVEY6Om1vdmUobmV3RmllbGQpKTsKKyAgICAgICAgICAgICAgICAg
ICAgbV9maWVsZENhY2hlLmFkZChuYW1lLmltcGwoKSwgV1RGTW92ZShuZXdGaWVsZCkpOwogICAg
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2luc3RhbmNlLm1t
IGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19pbnN0YW5jZS5tbQppbmRleCA5NGUy
MTRjYmFiNzgwZTQ3OTZhZWYyYzNhOTJiZWIxZjdhNzM1MDg0Li43YWRlNTIxMzgwM2RiNGFkNjAw
OTg3MzU0YTllNDA2NjY4Mjc3MWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
b2JqYy9vYmpjX2luc3RhbmNlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29i
amNfaW5zdGFuY2UubW0KQEAgLTEwMSw3ICsxMDEsNyBAQCB2b2lkIE9iamNJbnN0YW5jZTo6bW92
ZUdsb2JhbEV4Y2VwdGlvblRvRXhlY1N0YXRlKEV4ZWNTdGF0ZSogZXhlYykKIH0KIAogT2JqY0lu
c3RhbmNlOjpPYmpjSW5zdGFuY2UoaWQgaW5zdGFuY2UsIFJlZlB0cjxSb290T2JqZWN0PiYmIHJv
b3RPYmplY3QpIAotICAgIDogSW5zdGFuY2UoV1RGOjptb3ZlKHJvb3RPYmplY3QpKQorICAgIDog
SW5zdGFuY2UoV1RGTW92ZShyb290T2JqZWN0KSkKICAgICAsIF9pbnN0YW5jZShpbnN0YW5jZSkK
ICAgICAsIF9jbGFzcygwKQogICAgICwgX3Bvb2woMCkKQEAgLTExNSw3ICsxMTUsNyBAQCBSZWZQ
dHI8T2JqY0luc3RhbmNlPiBPYmpjSW5zdGFuY2U6OmNyZWF0ZShpZCBpbnN0YW5jZSwgUmVmUHRy
PFJvb3RPYmplY3Q+JiYgcm9vdAogICAgICAgICBzX2luc3RhbmNlV3JhcHBlckNhY2hlID0gY3Jl
YXRlSW5zdGFuY2VXcmFwcGVyQ2FjaGUoKTsKICAgICBpZiAodm9pZCogZXhpc3RpbmdXcmFwcGVy
ID0gTlNNYXBHZXQoc19pbnN0YW5jZVdyYXBwZXJDYWNoZSwgaW5zdGFuY2UpKQogICAgICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8T2JqY0luc3RhbmNlKj4oZXhpc3RpbmdXcmFwcGVyKTsKLSAgICBS
ZWZQdHI8T2JqY0luc3RhbmNlPiB3cmFwcGVyID0gYWRvcHRSZWYobmV3IE9iamNJbnN0YW5jZShp
bnN0YW5jZSwgV1RGOjptb3ZlKHJvb3RPYmplY3QpKSk7CisgICAgUmVmUHRyPE9iamNJbnN0YW5j
ZT4gd3JhcHBlciA9IGFkb3B0UmVmKG5ldyBPYmpjSW5zdGFuY2UoaW5zdGFuY2UsIFdURk1vdmUo
cm9vdE9iamVjdCkpKTsKICAgICBOU01hcEluc2VydChzX2luc3RhbmNlV3JhcHBlckNhY2hlLCBp
bnN0YW5jZSwgd3JhcHBlci5nZXQoKSk7CiAgICAgcmV0dXJuIHdyYXBwZXI7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0KaW5kZXggZjY5YmZmMWM5OGZhOTI1
MDI2NDlkMTgwM2VkNDhjM2Y4ZjRjYjJlMC4uZmVjMTA5OGVkZGQzNmEzYzJkNzUyZDU0OTFkZWNh
MjM1Y2EwMjFmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19y
dW50aW1lLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5t
bQpAQCAtMTQ3LDcgKzE0Nyw3IEBAIHZvaWQgT2JqY0ZpZWxkOjpzZXRWYWx1ZVRvSW5zdGFuY2Uo
RXhlY1N0YXRlKiBleGVjLCBjb25zdCBJbnN0YW5jZSogaW5zdGFuY2UsIEpTCiAvLyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tIE9iamNBcnJheSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIE9iamNB
cnJheTo6T2JqY0FycmF5KE9iamVjdFN0cnVjdFB0ciBhLCBSZWZQdHI8Um9vdE9iamVjdD4mJiBy
b290T2JqZWN0KQotICAgIDogQXJyYXkoV1RGOjptb3ZlKHJvb3RPYmplY3QpKQorICAgIDogQXJy
YXkoV1RGTW92ZShyb290T2JqZWN0KSkKICAgICAsIF9hcnJheShhKQogewogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5jcHAKaW5kZXggNDJjMzU3Nzc5MDFkNDZhMzNhZDQ1
MjNmOTYzNjE0YjBlNjhjNzUzYi4uZDEzNTA5ZTZhMTNmMWUwOTRmMmMxZGQ3MTRhZGI4Y2M4ZDVj
MzlhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmplY3QuY3BwCkBAIC0zOSw3
ICszOSw3IEBAIFdFQkNPUkVfRVhQT1JUIGNvbnN0IENsYXNzSW5mbyBSdW50aW1lT2JqZWN0Ojpz
X2luZm8gPSB7ICJSdW50aW1lT2JqZWN0IiwgJkJhc2U6CiAKIFJ1bnRpbWVPYmplY3Q6OlJ1bnRp
bWVPYmplY3QoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUmVmUHRyPEluc3RhbmNlPiYm
IGluc3RhbmNlKQogICAgIDogSlNEZXN0cnVjdGlibGVPYmplY3Qodm0sIHN0cnVjdHVyZSkKLSAg
ICAsIG1faW5zdGFuY2UoV1RGOjptb3ZlKGluc3RhbmNlKSkKKyAgICAsIG1faW5zdGFuY2UoV1RG
TW92ZShpbnN0YW5jZSkpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRn
ZS9ydW50aW1lX29iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0
LmgKaW5kZXggMDM1NjRhODM0ZmIxMjBlNDg1NmI0MzkwZDQwNmY0OWYxOGEzMDg2YS4uMGYwMjgz
Y2FjNGQ4Mjc1MjhmZDVhNTA1NjI5YzE5NGE2Nzg0N2NlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdl
L3J1bnRpbWVfb2JqZWN0LmgKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGlj
IFJ1bnRpbWVPYmplY3QqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBSZWZQ
dHI8SW5zdGFuY2U+JiYgaW5zdGFuY2UpCiAgICAgewotICAgICAgICBSdW50aW1lT2JqZWN0KiBv
YmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxSdW50aW1lT2JqZWN0Pih2bS5oZWFw
KSkgUnVudGltZU9iamVjdCh2bSwgc3RydWN0dXJlLCBXVEY6Om1vdmUoaW5zdGFuY2UpKTsKKyAg
ICAgICAgUnVudGltZU9iamVjdCogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8
UnVudGltZU9iamVjdD4odm0uaGVhcCkpIFJ1bnRpbWVPYmplY3Qodm0sIHN0cnVjdHVyZSwgV1RG
TW92ZShpbnN0YW5jZSkpOwogICAgICAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKHZtKTsKICAg
ICAgICAgcmV0dXJuIG9iamVjdDsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
b250ZW50ZXh0ZW5zaW9ucy9Db21iaW5lZEZpbHRlcnNBbHBoYWJldC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db21iaW5lZEZpbHRlcnNBbHBoYWJldC5jcHAKaW5kZXgg
OTM4MzE2OWRjYzNlNDEyYzRhODIzNjA0MTAzNzIxZGU1YTE1ODhlYS4uYzI4NTE4NDRmNWY2MDVm
ODgwNDJiMTk3YmE2ZDdhOGJhNjY1Nzc4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY29u
dGVudGV4dGVuc2lvbnMvQ29tYmluZWRGaWx0ZXJzQWxwaGFiZXQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbWJpbmVkRmlsdGVyc0FscGhhYmV0LmNwcApAQCAt
NTIsNyArNTIsNyBAQCBzdHJ1Y3QgVGVybUNyZWF0b3JUcmFuc2xhdG9yIHsKICAgICB7CiAgICAg
ICAgIHN0ZDo6dW5pcXVlX3B0cjxUZXJtPiBuZXdVbmlxdWVUZXJtKG5ldyBUZXJtKGlucHV0LnRl
cm0pKTsKICAgICAgICAgbG9jYXRpb24gPSBuZXdVbmlxdWVUZXJtLmdldCgpOwotICAgICAgICBp
bnB1dC5pbnRlcm5lZFRlcm1zU3RvcmFnZS5hcHBlbmQoV1RGOjptb3ZlKG5ld1VuaXF1ZVRlcm0p
KTsKKyAgICAgICAgaW5wdXQuaW50ZXJuZWRUZXJtc1N0b3JhZ2UuYXBwZW5kKFdURk1vdmUobmV3
VW5pcXVlVGVybSkpOwogICAgIH0KIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nv
bnRlbnRleHRlbnNpb25zL0NvbWJpbmVkVVJMRmlsdGVycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
b250ZW50ZXh0ZW5zaW9ucy9Db21iaW5lZFVSTEZpbHRlcnMuY3BwCmluZGV4IDJiNDA2NTczMGRi
OWJhNmQyMjFmNGZiMDZiZTQ5OWI3OGM1ZGE2YTMuLjU1NzNlNzZlNzZhM2ZjYjRjOGU1NWM4MjRi
ZDdiZjRmYTUxZTBjMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNp
b25zL0NvbWJpbmVkVVJMRmlsdGVycy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4
dGVuc2lvbnMvQ29tYmluZWRVUkxGaWx0ZXJzLmNwcApAQCAtMjIzLDcgKzIyMyw3IEBAIHZvaWQg
Q29tYmluZWRVUkxGaWx0ZXJzOjphZGRQYXR0ZXJuKHVpbnQ2NF90IGFjdGlvbklkLCBjb25zdCBW
ZWN0b3I8VGVybT4mIHBhdHRlCiBzdHJ1Y3QgQWN0aXZlU3VidHJlZSB7CiAgICAgQWN0aXZlU3Vi
dHJlZShQcmVmaXhUcmVlVmVydGV4JiB2ZXJ0ZXgsIEltbXV0YWJsZUNoYXJORkFOb2RlQnVpbGRl
ciYmIG5mYU5vZGUsIHVuc2lnbmVkIGVkZ2VJbmRleCkKICAgICAgICAgOiB2ZXJ0ZXgodmVydGV4
KQotICAgICAgICAsIG5mYU5vZGUoV1RGOjptb3ZlKG5mYU5vZGUpKQorICAgICAgICAsIG5mYU5v
ZGUoV1RGTW92ZShuZmFOb2RlKSkKICAgICAgICAgLCBlZGdlSW5kZXgoZWRnZUluZGV4KQogICAg
IHsKICAgICB9CkBAIC0zNDQsNyArMzQ0LDcgQEAgc3RhdGljIHZvaWQgZ2VuZXJhdGVTdWZmaXhX
aXRoUmV2ZXJzZVN1ZmZpeFRyZWUoTkZBJiBuZmEsIFZlY3RvcjxBY3RpdmVTdWJ0cmVlPiYKICAg
ICAgICAgICAgIG5ld1ZlcnRleC0+bm9kZUlkID0gbmV3Tm9kZS5ub2RlSWQoKTsKIAogICAgICAg
ICAgICAgUmV2ZXJzZVN1ZmZpeFRyZWVWZXJ0ZXgqIG5ld1ZlcnRleEFkZHJlc3MgPSBuZXdWZXJ0
ZXguZ2V0KCk7Ci0gICAgICAgICAgICBhY3RpdmVSZXZlcnNlU3VmZml4VHJlZVZlcnRleC0+ZWRn
ZXMuYXBwZW5kKFJldmVyc2VTdWZmaXhUcmVlRWRnZSh7IGVkZ2UudGVybSwgV1RGOjptb3ZlKG5l
d1ZlcnRleCkgfSkpOworICAgICAgICAgICAgYWN0aXZlUmV2ZXJzZVN1ZmZpeFRyZWVWZXJ0ZXgt
PmVkZ2VzLmFwcGVuZChSZXZlcnNlU3VmZml4VHJlZUVkZ2UoeyBlZGdlLnRlcm0sIFdURk1vdmUo
bmV3VmVydGV4KSB9KSk7CiAgICAgICAgICAgICBhY3RpdmVSZXZlcnNlU3VmZml4VHJlZVZlcnRl
eCA9IG5ld1ZlcnRleEFkZHJlc3M7CiAgICAgICAgIH0KICAgICAgICAgZGVzdGluYXRpb25Ob2Rl
SWQgPSBhY3RpdmVSZXZlcnNlU3VmZml4VHJlZVZlcnRleC0+bm9kZUlkOwpAQCAtMzg4LDcgKzM4
OCw3IEBAIHN0YXRpYyB2b2lkIGdlbmVyYXRlTkZBRm9yU3VidHJlZShORkEmIG5mYSwgSW1tdXRh
YmxlQ2hhck5GQU5vZGVCdWlsZGVyJiYgc3VidHJlCiAgICAgUmV2ZXJzZVN1ZmZpeFRyZWVSb290
cyByZXZlcnNlU3VmZml4VHJlZVJvb3RzOwogICAgIFZlY3RvcjxBY3RpdmVTdWJ0cmVlPiBzdGFj
azsKICAgICBpZiAoIXJvb3QuZWRnZXMuaXNFbXB0eSgpKQotICAgICAgICBzdGFjay5hcHBlbmQo
QWN0aXZlU3VidHJlZShyb290LCBXVEY6Om1vdmUoc3VidHJlZVJvb3QpLCAwKSk7CisgICAgICAg
IHN0YWNrLmFwcGVuZChBY3RpdmVTdWJ0cmVlKHJvb3QsIFdURk1vdmUoc3VidHJlZVJvb3QpLCAw
KSk7CiAKICAgICBib29sIG5mYVRvb0JpZyA9IGZhbHNlOwogICAgIApAQCAtNDE0LDcgKzQxNCw3
IEBAIHN0YXRpYyB2b2lkIGdlbmVyYXRlTkZBRm9yU3VidHJlZShORkEmIG5mYSwgSW1tdXRhYmxl
Q2hhck5GQU5vZGVCdWlsZGVyJiYgc3VidHJlCiAKICAgICAgICAgICAgIEFTU0VSVChlZGdlLmNo
aWxkLmdldCgpKTsKICAgICAgICAgICAgIEltbXV0YWJsZUNoYXJORkFOb2RlQnVpbGRlciBlbXB0
eUJ1aWxkZXI7Ci0gICAgICAgICAgICBzdGFjay5hcHBlbmQoQWN0aXZlU3VidHJlZSgqZWRnZS5j
aGlsZC5nZXQoKSwgV1RGOjptb3ZlKGVtcHR5QnVpbGRlciksIDApKTsKKyAgICAgICAgICAgIHN0
YWNrLmFwcGVuZChBY3RpdmVTdWJ0cmVlKCplZGdlLmNoaWxkLmdldCgpLCBXVEZNb3ZlKGVtcHR5
QnVpbGRlciksIDApKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGJvb2wgaXNMZWFm
ID0gdmVydGV4LmVkZ2VzLmlzRW1wdHkoKTsKIApAQCAtNDgyLDE2ICs0ODIsMTYgQEAgdm9pZCBD
b21iaW5lZFVSTEZpbHRlcnM6OnByb2Nlc3NORkFzKHNpemVfdCBtYXhORkFTaXplLCBzdGQ6OmZ1
bmN0aW9uPHZvaWQoTkZBJiYKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBz
dGFjay5zaXplKCkgLSAxOyArK2kpIHsKICAgICAgICAgICAgICAgICBjb25zdCBQcmVmaXhUcmVl
RWRnZSYgZWRnZSA9IHN0YWNrW2ldLT5lZGdlcy5sYXN0KCk7CiAgICAgICAgICAgICAgICAgSW1t
dXRhYmxlQ2hhck5GQU5vZGVCdWlsZGVyIG5ld05vZGUgPSBlZGdlLnRlcm0tPmdlbmVyYXRlR3Jh
cGgobmZhLCBsYXN0Tm9kZSwgbV9hY3Rpb25zLmdldChlZGdlLmNoaWxkLmdldCgpKSk7Ci0gICAg
ICAgICAgICAgICAgbGFzdE5vZGUgPSBXVEY6Om1vdmUobmV3Tm9kZSk7CisgICAgICAgICAgICAg
ICAgbGFzdE5vZGUgPSBXVEZNb3ZlKG5ld05vZGUpOwogICAgICAgICAgICAgfQogCiAgICAgICAg
ICAgICAvLyBQdXQgdGhlIG5vbi1xdWFudGlmaWVkIHZlcnRpY2VzIGluIHRoZSBzdWJ0cmVlIGlu
dG8gdGhlIE5GQSBhbmQgZGVsZXRlIHRoZW0uCiAgICAgICAgICAgICBBU1NFUlQoc3RhY2subGFz
dCgpKTsKLSAgICAgICAgICAgIGdlbmVyYXRlTkZBRm9yU3VidHJlZShuZmEsIFdURjo6bW92ZShs
YXN0Tm9kZSksICpzdGFjay5sYXN0KCksIG1fYWN0aW9ucywgbWF4TkZBU2l6ZSk7CisgICAgICAg
ICAgICBnZW5lcmF0ZU5GQUZvclN1YnRyZWUobmZhLCBXVEZNb3ZlKGxhc3ROb2RlKSwgKnN0YWNr
Lmxhc3QoKSwgbV9hY3Rpb25zLCBtYXhORkFTaXplKTsKICAgICAgICAgfQogICAgICAgICBuZmEu
ZmluYWxpemUoKTsKIAotICAgICAgICBoYW5kbGVyKFdURjo6bW92ZShuZmEpKTsKKyAgICAgICAg
aGFuZGxlcihXVEZNb3ZlKG5mYSkpOwogCiAgICAgICAgIC8vIENsZWFuIHVwIGFueSBwcm9jZXNz
ZWQgbGVhZiBub2Rlcy4KICAgICAgICAgd2hpbGUgKHRydWUpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbi5jcHAKaW5kZXggNzU5
M2E0YzY5MWExNmNmMjk0ZDU5ZWI5ZWFhY2VjYzUzYjhiNDIzMS4uZGFjYmVmZTJhMGE5MDM4MjFk
NDAyMmVjYWI1ZjkwYTMwOWJlMWQ4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVu
dGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY29u
dGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbi5jcHAKQEAgLTM4LDEyICszOCwxMiBAQCBu
YW1lc3BhY2UgQ29udGVudEV4dGVuc2lvbnMgewogCiBSZWZQdHI8Q29udGVudEV4dGVuc2lvbj4g
Q29udGVudEV4dGVuc2lvbjo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgUmVmPENv
bXBpbGVkQ29udGVudEV4dGVuc2lvbj4mJiBjb21waWxlZEV4dGVuc2lvbikKIHsKLSAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBDb250ZW50RXh0ZW5zaW9uKGlkZW50aWZpZXIsIFdURjo6bW92ZShj
b21waWxlZEV4dGVuc2lvbikpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDb250ZW50RXh0
ZW5zaW9uKGlkZW50aWZpZXIsIFdURk1vdmUoY29tcGlsZWRFeHRlbnNpb24pKSk7CiB9CiAKIENv
bnRlbnRFeHRlbnNpb246OkNvbnRlbnRFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBpZGVudGlmaWVy
LCBSZWY8Q29tcGlsZWRDb250ZW50RXh0ZW5zaW9uPiYmIGNvbXBpbGVkRXh0ZW5zaW9uKQogICAg
IDogbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCi0gICAgLCBtX2NvbXBpbGVkRXh0ZW5zaW9uKFdU
Rjo6bW92ZShjb21waWxlZEV4dGVuc2lvbikpCisgICAgLCBtX2NvbXBpbGVkRXh0ZW5zaW9uKFdU
Rk1vdmUoY29tcGlsZWRFeHRlbnNpb24pKQogewogICAgIERGQUJ5dGVjb2RlSW50ZXJwcmV0ZXIg
d2l0aG91dERvbWFpbnMobV9jb21waWxlZEV4dGVuc2lvbi0+ZmlsdGVyc1dpdGhvdXREb21haW5z
Qnl0ZWNvZGUoKSwgbV9jb21waWxlZEV4dGVuc2lvbi0+ZmlsdGVyc1dpdGhvdXREb21haW5zQnl0
ZWNvZGVMZW5ndGgoKSk7CiAgICAgREZBQnl0ZWNvZGVJbnRlcnByZXRlciB3aXRoRG9tYWlucyht
X2NvbXBpbGVkRXh0ZW5zaW9uLT5maWx0ZXJzV2l0aERvbWFpbnNCeXRlY29kZSgpLCBtX2NvbXBp
bGVkRXh0ZW5zaW9uLT5maWx0ZXJzV2l0aERvbWFpbnNCeXRlY29kZUxlbmd0aCgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25D
b21waWxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0
ZW5zaW9uQ29tcGlsZXIuY3BwCmluZGV4IDk1MDQzYjAzYjAyNDc2OWExNjI1YjNiN2NmMjZkMmFl
OGU0MjA0ZDEuLjkwYmZlZDJkYjJmZDA2MTk0NTIyYTU1ZWJmYjU4ODQ4MTBiNmFiNjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25D
b21waWxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVu
dEV4dGVuc2lvbkNvbXBpbGVyLmNwcApAQCAtMjE5LDcgKzIxOSw3IEBAIHN0ZDo6ZXJyb3JfY29k
ZSBjb21waWxlUnVsZUxpc3QoQ29udGVudEV4dGVuc2lvbkNvbXBpbGF0aW9uQ2xpZW50JiBjbGll
bnQsIFN0cmluCiAKICAgICBWZWN0b3I8U2VyaWFsaXplZEFjdGlvbkJ5dGU+IGFjdGlvbnM7CiAg
ICAgVmVjdG9yPHVuc2lnbmVkPiBhY3Rpb25Mb2NhdGlvbnMgPSBzZXJpYWxpemVBY3Rpb25zKHBh
cnNlZFJ1bGVMaXN0LCBhY3Rpb25zKTsKLSAgICBjbGllbnQud3JpdGVBY3Rpb25zKFdURjo6bW92
ZShhY3Rpb25zKSk7CisgICAgY2xpZW50LndyaXRlQWN0aW9ucyhXVEZNb3ZlKGFjdGlvbnMpKTsK
ICAgICBMT0dfTEFSR0VfU1RSVUNUVVJFUyhhY3Rpb25zLCBhY3Rpb25zLmNhcGFjaXR5KCkgKiBz
aXplb2YoU2VyaWFsaXplZEFjdGlvbkJ5dGUpKTsKICAgICBhY3Rpb25zLmNsZWFyKCk7CiAKQEAg
LTMyNSw3ICszMjUsNyBAQCBzdGQ6OmVycm9yX2NvZGUgY29tcGlsZVJ1bGVMaXN0KENvbnRlbnRF
eHRlbnNpb25Db21waWxhdGlvbkNsaWVudCYgY2xpZW50LCBTdHJpbgogICAgICAgICArK21hY2hp
bmVzV2l0aG91dERvbWFpbnNDb3VudDsKICAgICAgICAgdG90YWxCeXRlY29kZVNpemVGb3JNYWNo
aW5lc1dpdGhvdXREb21haW5zICs9IGJ5dGVjb2RlLnNpemUoKTsKICNlbmRpZgotICAgICAgICBj
bGllbnQud3JpdGVGaWx0ZXJzV2l0aG91dERvbWFpbnNCeXRlY29kZShXVEY6Om1vdmUoYnl0ZWNv
ZGUpKTsKKyAgICAgICAgY2xpZW50LndyaXRlRmlsdGVyc1dpdGhvdXREb21haW5zQnl0ZWNvZGUo
V1RGTW92ZShieXRlY29kZSkpOwogCiAgICAgICAgIGZpcnN0TkZBV2l0aG91dERvbWFpbnNTZWVu
ID0gdHJ1ZTsKICAgICB9OwpAQCAtMzQzLDE3ICszNDMsMTcgQEAgc3RkOjplcnJvcl9jb2RlIGNv
bXBpbGVSdWxlTGlzdChDb250ZW50RXh0ZW5zaW9uQ29tcGlsYXRpb25DbGllbnQmIGNsaWVudCwg
U3RyaW4KICAgICAgICAgTE9HX0xBUkdFX1NUUlVDVFVSRVMoZGZhLCBkZmEubWVtb3J5VXNlZCgp
KTsKIAogICAgICAgICBpZiAoZGZhLmdyYXBoU2l6ZSgpIDwgc21hbGxERkFTaXplKQotICAgICAg
ICAgICAgc21hbGxGaWx0ZXJzV2l0aG91dERvbWFpbnNERkFDb21iaW5lci5hZGRERkEoV1RGOjpt
b3ZlKGRmYSkpOworICAgICAgICAgICAgc21hbGxGaWx0ZXJzV2l0aG91dERvbWFpbnNERkFDb21i
aW5lci5hZGRERkEoV1RGTW92ZShkZmEpKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBk
ZmEubWluaW1pemUoKTsKLSAgICAgICAgICAgIGxvd2VyRmlsdGVyc1dpdGhvdXREb21haW5zREZB
VG9CeXRlY29kZShXVEY6Om1vdmUoZGZhKSk7CisgICAgICAgICAgICBsb3dlckZpbHRlcnNXaXRo
b3V0RG9tYWluc0RGQVRvQnl0ZWNvZGUoV1RGTW92ZShkZmEpKTsKICAgICAgICAgfQogICAgIH0p
OwogCiAKICAgICBzbWFsbEZpbHRlcnNXaXRob3V0RG9tYWluc0RGQUNvbWJpbmVyLmNvbWJpbmVE
RkFzKHNtYWxsREZBU2l6ZSwgWyZdKERGQSYmIGRmYSkgewogICAgICAgICBMT0dfTEFSR0VfU1RS
VUNUVVJFUyhkZmEsIGRmYS5tZW1vcnlVc2VkKCkpOwotICAgICAgICBsb3dlckZpbHRlcnNXaXRo
b3V0RG9tYWluc0RGQVRvQnl0ZWNvZGUoV1RGOjptb3ZlKGRmYSkpOworICAgICAgICBsb3dlckZp
bHRlcnNXaXRob3V0RG9tYWluc0RGQVRvQnl0ZWNvZGUoV1RGTW92ZShkZmEpKTsKICAgICB9KTsK
IAogICAgIEFTU0VSVChmaWx0ZXJzV2l0aG91dERvbWFpbnMuaXNFbXB0eSgpKTsKQEAgLTM2OSw3
ICszNjksNyBAQCBzdGQ6OmVycm9yX2NvZGUgY29tcGlsZVJ1bGVMaXN0KENvbnRlbnRFeHRlbnNp
b25Db21waWxhdGlvbkNsaWVudCYgY2xpZW50LCBTdHJpbgogICAgICAgICBERkFCeXRlY29kZUNv
bXBpbGVyIGNvbXBpbGVyKGR1bW15REZBLCBieXRlY29kZSk7CiAgICAgICAgIGNvbXBpbGVyLmNv
bXBpbGUoKTsKICAgICAgICAgTE9HX0xBUkdFX1NUUlVDVFVSRVMoYnl0ZWNvZGUsIGJ5dGVjb2Rl
LmNhcGFjaXR5KCkgKiBzaXplb2YodWludDhfdCkpOwotICAgICAgICBjbGllbnQud3JpdGVGaWx0
ZXJzV2l0aG91dERvbWFpbnNCeXRlY29kZShXVEY6Om1vdmUoYnl0ZWNvZGUpKTsKKyAgICAgICAg
Y2xpZW50LndyaXRlRmlsdGVyc1dpdGhvdXREb21haW5zQnl0ZWNvZGUoV1RGTW92ZShieXRlY29k
ZSkpOwogICAgIH0KICAgICBMT0dfTEFSR0VfU1RSVUNUVVJFUyh1bml2ZXJzYWxBY3Rpb25zV2l0
aG91dERvbWFpbnMsIHVuaXZlcnNhbEFjdGlvbnNXaXRob3V0RG9tYWlucy5jYXBhY2l0eSgpICog
c2l6ZW9mKHVuc2lnbmVkKSk7CiAgICAgdW5pdmVyc2FsQWN0aW9uc1dpdGhvdXREb21haW5zLmNs
ZWFyKCk7CkBAIC0zOTAsNyArMzkwLDcgQEAgc3RkOjplcnJvcl9jb2RlIGNvbXBpbGVSdWxlTGlz
dChDb250ZW50RXh0ZW5zaW9uQ29tcGlsYXRpb25DbGllbnQmIGNsaWVudCwgU3RyaW4KICAgICAg
ICAgKyttYWNoaW5lc1dpdGhEb21haW5zQ291bnQ7CiAgICAgICAgIHRvdGFsQnl0ZWNvZGVTaXpl
Rm9yTWFjaGluZXNXaXRoRG9tYWlucyArPSBieXRlY29kZS5zaXplKCk7CiAjZW5kaWYKLSAgICAg
ICAgY2xpZW50LndyaXRlRmlsdGVyc1dpdGhEb21haW5zQnl0ZWNvZGUoV1RGOjptb3ZlKGJ5dGVj
b2RlKSk7CisgICAgICAgIGNsaWVudC53cml0ZUZpbHRlcnNXaXRoRG9tYWluc0J5dGVjb2RlKFdU
Rk1vdmUoYnl0ZWNvZGUpKTsKIAogICAgICAgICBmaXJzdE5GQVdpdGhEb21haW5zU2VlbiA9IHRy
dWU7CiAgICAgfTsKQEAgLTQxMiwxNSArNDEyLDE1IEBAIHN0ZDo6ZXJyb3JfY29kZSBjb21waWxl
UnVsZUxpc3QoQ29udGVudEV4dGVuc2lvbkNvbXBpbGF0aW9uQ2xpZW50JiBjbGllbnQsIFN0cmlu
CiAgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIWRmYS5ub2Rlc1tkZmEucm9vdF0uaGFzQWN0
aW9ucygpLCAiRmlsdGVycyB3aXRoIGRvbWFpbnMgdGhhdCBtYXRjaCBldmVyeXRoaW5nIGFyZSBu
b3QgYWxsb3dlZCByaWdodCBub3cuIik7CiAKICAgICAgICAgaWYgKGRmYS5ncmFwaFNpemUoKSA8
IHNtYWxsREZBU2l6ZSkKLSAgICAgICAgICAgIHNtYWxsRmlsdGVyc1dpdGhEb21haW5zREZBQ29t
YmluZXIuYWRkREZBKFdURjo6bW92ZShkZmEpKTsKKyAgICAgICAgICAgIHNtYWxsRmlsdGVyc1dp
dGhEb21haW5zREZBQ29tYmluZXIuYWRkREZBKFdURk1vdmUoZGZhKSk7CiAgICAgICAgIGVsc2Ug
ewogICAgICAgICAgICAgZGZhLm1pbmltaXplKCk7Ci0gICAgICAgICAgICBsb3dlckZpbHRlcnNX
aXRoRG9tYWluc0RGQVRvQnl0ZWNvZGUoV1RGOjptb3ZlKGRmYSkpOworICAgICAgICAgICAgbG93
ZXJGaWx0ZXJzV2l0aERvbWFpbnNERkFUb0J5dGVjb2RlKFdURk1vdmUoZGZhKSk7CiAgICAgICAg
IH0KICAgICB9KTsKICAgICBzbWFsbEZpbHRlcnNXaXRoRG9tYWluc0RGQUNvbWJpbmVyLmNvbWJp
bmVERkFzKHNtYWxsREZBU2l6ZSwgWyZdKERGQSYmIGRmYSkgewogICAgICAgICBMT0dfTEFSR0Vf
U1RSVUNUVVJFUyhkZmEsIGRmYS5tZW1vcnlVc2VkKCkpOwotICAgICAgICBsb3dlckZpbHRlcnNX
aXRoRG9tYWluc0RGQVRvQnl0ZWNvZGUoV1RGOjptb3ZlKGRmYSkpOworICAgICAgICBsb3dlckZp
bHRlcnNXaXRoRG9tYWluc0RGQVRvQnl0ZWNvZGUoV1RGTW92ZShkZmEpKTsKICAgICB9KTsKICAg
ICBBU1NFUlQoZmlsdGVyc1dpdGhEb21haW5zLmlzRW1wdHkoKSk7CiAgICAgCkBAIC00MzUsNyAr
NDM1LDcgQEAgc3RkOjplcnJvcl9jb2RlIGNvbXBpbGVSdWxlTGlzdChDb250ZW50RXh0ZW5zaW9u
Q29tcGlsYXRpb25DbGllbnQmIGNsaWVudCwgU3RyaW4KICAgICAgICAgREZBQnl0ZWNvZGVDb21w
aWxlciBjb21waWxlcihkdW1teURGQSwgYnl0ZWNvZGUpOwogICAgICAgICBjb21waWxlci5jb21w
aWxlKCk7CiAgICAgICAgIExPR19MQVJHRV9TVFJVQ1RVUkVTKGJ5dGVjb2RlLCBieXRlY29kZS5j
YXBhY2l0eSgpICogc2l6ZW9mKHVpbnQ4X3QpKTsKLSAgICAgICAgY2xpZW50LndyaXRlRmlsdGVy
c1dpdGhEb21haW5zQnl0ZWNvZGUoV1RGOjptb3ZlKGJ5dGVjb2RlKSk7CisgICAgICAgIGNsaWVu
dC53cml0ZUZpbHRlcnNXaXRoRG9tYWluc0J5dGVjb2RlKFdURk1vdmUoYnl0ZWNvZGUpKTsKICAg
ICB9CiAgICAgTE9HX0xBUkdFX1NUUlVDVFVSRVModW5pdmVyc2FsQWN0aW9uc1dpdGhEb21haW5z
LCB1bml2ZXJzYWxBY3Rpb25zV2l0aERvbWFpbnMuY2FwYWNpdHkoKSAqIHNpemVvZih1bnNpZ25l
ZCkpOwogICAgIHVuaXZlcnNhbEFjdGlvbnNXaXRoRG9tYWlucy5jbGVhcigpOwpAQCAtNDYwLDcg
KzQ2MCw3IEBAIHN0ZDo6ZXJyb3JfY29kZSBjb21waWxlUnVsZUxpc3QoQ29udGVudEV4dGVuc2lv
bkNvbXBpbGF0aW9uQ2xpZW50JiBjbGllbnQsIFN0cmluCiAgICAgICAgIERGQUJ5dGVjb2RlQ29t
cGlsZXIgY29tcGlsZXIoZGZhLCBieXRlY29kZSk7CiAgICAgICAgIGNvbXBpbGVyLmNvbXBpbGUo
KTsKICAgICAgICAgTE9HX0xBUkdFX1NUUlVDVFVSRVMoYnl0ZWNvZGUsIGJ5dGVjb2RlLmNhcGFj
aXR5KCkgKiBzaXplb2YodWludDhfdCkpOwotICAgICAgICBjbGllbnQud3JpdGVEb21haW5GaWx0
ZXJzQnl0ZWNvZGUoV1RGOjptb3ZlKGJ5dGVjb2RlKSk7CisgICAgICAgIGNsaWVudC53cml0ZURv
bWFpbkZpbHRlcnNCeXRlY29kZShXVEZNb3ZlKGJ5dGVjb2RlKSk7CiAgICAgfSk7CiAgICAgQVNT
RVJUKGRvbWFpbkZpbHRlcnMuaXNFbXB0eSgpKTsgICAgCiAgICAgCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uUGFyc2VyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25QYXJzZXIu
Y3BwCmluZGV4IGM4NWQ3NDk2ZDE4Nzc0YWQyNDZhMTcwYjcwMjA5YjkxZWZjYzYyYjguLjY0OTFi
Nzg4M2RkZGY3NGRhOTBjOTM5Nzk5YjgwYTkyYjFkNjQ3ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25QYXJzZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25QYXJzZXIu
Y3BwCkBAIC0yODIsNyArMjgyLDcgQEAgc3RhdGljIHN0ZDo6ZXJyb3JfY29kZSBsb2FkRW5jb2Rl
ZFJ1bGVzKEV4ZWNTdGF0ZSYgZXhlYywgY29uc3QgU3RyaW5nJiBydWxlcywgVmUKICAgICAgICAg
ICAgIHJldHVybiBlcnJvcjsKICAgICB9CiAKLSAgICBydWxlTGlzdCA9IFdURjo6bW92ZShsb2Nh
bFJ1bGVMaXN0KTsKKyAgICBydWxlTGlzdCA9IFdURk1vdmUobG9jYWxSdWxlTGlzdCk7CiAgICAg
cmV0dXJuIHsgfTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVu
c2lvbnMvQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRl
bnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5jcHAKaW5kZXggOGRiN2NjNjQy
YmVhNDQ2YTVhZGIwYjg2MzViNDkzNGYwYTZmNmRiOS4uMTY2NGFmNmM5Njc3MTk4YjcwNDc1NmMw
MTdhOGZlOTk1ZTgyNGViMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVu
c2lvbnMvQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
b250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuY3BwCkBAIC02MCw3ICs2
MCw3IEBAIHZvaWQgQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kOjphZGRDb250ZW50RXh0ZW5zaW9u
KGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgUmVmCiAgICAgfQogCiAgICAgUmVmUHRyPENvbnRl
bnRFeHRlbnNpb24+IGV4dGVuc2lvbiA9IENvbnRlbnRFeHRlbnNpb246OmNyZWF0ZShpZGVudGlm
aWVyLCBhZG9wdFJlZigqY29tcGlsZWRDb250ZW50RXh0ZW5zaW9uLmxlYWtSZWYoKSkpOwotICAg
IG1fY29udGVudEV4dGVuc2lvbnMuc2V0KGlkZW50aWZpZXIsIFdURjo6bW92ZShleHRlbnNpb24p
KTsKKyAgICBtX2NvbnRlbnRFeHRlbnNpb25zLnNldChpZGVudGlmaWVyLCBXVEZNb3ZlKGV4dGVu
c2lvbikpOwogfQogCiB2b2lkIENvbnRlbnRFeHRlbnNpb25zQmFja2VuZDo6cmVtb3ZlQ29udGVu
dEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ERkFDb21iaW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jb250ZW50ZXh0ZW5zaW9ucy9ERkFDb21iaW5lci5jcHAKaW5kZXggNzgxODk0ZTgxODY3YjE4
NDZmMTg1YTg2NDljZDU4OTMxYmViNmEwNS4uNTEzNTY3NTQwNTQxM2YzYjRjZTA1ZTkxMGY1NGI2
NzA0MDZmZTRhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMv
REZBQ29tYmluZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0RG
QUNvbWJpbmVyLmNwcApAQCAtMTkxLDE0ICsxOTEsMTQgQEAgdm9pZCBERkFDb21iaW5lcjo6Y29t
YmluZURGQXModW5zaWduZWQgbWluaW11bVNpemUsIHN0ZDo6ZnVuY3Rpb248dm9pZChERkEmJik+
IGgKIAogICAgIGZvciAodW5zaWduZWQgaSA9IG1fZGZhcy5zaXplKCk7IGktLTspIHsKICAgICAg
ICAgaWYgKG1fZGZhc1tpXS5ncmFwaFNpemUoKSA+IG1pbmltdW1TaXplKSB7Ci0gICAgICAgICAg
ICBoYW5kbGVyKFdURjo6bW92ZShtX2RmYXNbaV0pKTsKKyAgICAgICAgICAgIGhhbmRsZXIoV1RG
TW92ZShtX2RmYXNbaV0pKTsKICAgICAgICAgICAgIG1fZGZhcy5yZW1vdmUoaSk7CiAgICAgICAg
IH0KICAgICB9CiAKICAgICB3aGlsZSAoIW1fZGZhcy5pc0VtcHR5KCkpIHsKICAgICAgICAgaWYg
KG1fZGZhcy5zaXplKCkgPT0gMSkgewotICAgICAgICAgICAgaGFuZGxlcihXVEY6Om1vdmUobV9k
ZmFzLmZpcnN0KCkpKTsKKyAgICAgICAgICAgIGhhbmRsZXIoV1RGTW92ZShtX2RmYXMuZmlyc3Qo
KSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTIxNCw3ICsyMTQsNyBA
QCB2b2lkIERGQUNvbWJpbmVyOjpjb21iaW5lREZBcyh1bnNpZ25lZCBtaW5pbXVtU2l6ZSwgc3Rk
OjpmdW5jdGlvbjx2b2lkKERGQSYmKT4gaAogICAgICAgICB9CiAKICAgICAgICAgaWYgKGMuZ3Jh
cGhTaXplKCkgPiBtaW5pbXVtU2l6ZSkKLSAgICAgICAgICAgIGhhbmRsZXIoV1RGOjptb3ZlKGMp
KTsKKyAgICAgICAgICAgIGhhbmRsZXIoV1RGTW92ZShjKSk7CiAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgIG1fZGZhcy5hcHBlbmQoYyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY29udGVudGV4dGVuc2lvbnMvREZBQ29tYmluZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRl
bnRleHRlbnNpb25zL0RGQUNvbWJpbmVyLmgKaW5kZXggOTdmZTQ1ZDkwMjc4NjhmYTUzMWFlZTMz
YzJiZDFjMmJlZjgxMzQ2MC4uYzE4ODg1ZTgyZjBiNWUyM2RhMDhhNjVjN2M0ZmRmMWIwNGU2NTc5
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvREZBQ29tYmlu
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ERkFDb21iaW5lci5o
CkBAIC00Nyw3ICs0Nyw3IEBAIHByaXZhdGU6CiBpbmxpbmUgdm9pZCBERkFDb21iaW5lcjo6YWRk
REZBKERGQSYmIGRmYSkKIHsKICAgICBkZmEubWluaW1pemUoKTsKLSAgICBtX2RmYXMuYXBwZW5k
KFdURjo6bW92ZShkZmEpKTsKKyAgICBtX2RmYXMuYXBwZW5kKFdURk1vdmUoZGZhKSk7CiB9CiAK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0ltbXV0YWJs
ZU5GQU5vZGVCdWlsZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9JbW11
dGFibGVORkFOb2RlQnVpbGRlci5oCmluZGV4IDc2NDI1YWZiOTE5MjBlNjBhMTAwYTc2ZTgyOWM3
YzE2OGYxMmUxMDAuLmY4ZDY3NTk2ZjIwOTJkMDM2OGQ1ODJlMTQyZWZkOTA0MjFhMzc0NWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0ltbXV0YWJsZU5GQU5v
ZGVCdWlsZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvSW1tdXRh
YmxlTkZBTm9kZUJ1aWxkZXIuaApAQCAtNTYsOSArNTYsOSBAQCBwdWJsaWM6CiAKICAgICBJbW11
dGFibGVORkFOb2RlQnVpbGRlcihJbW11dGFibGVORkFOb2RlQnVpbGRlciYmIG90aGVyKQogICAg
ICAgICA6IG1faW1tdXRhYmxlTkZBKG90aGVyLm1faW1tdXRhYmxlTkZBKQotICAgICAgICAsIG1f
cmFuZ2VzKFdURjo6bW92ZShvdGhlci5tX3JhbmdlcykpCi0gICAgICAgICwgbV9lcHNpbG9uVHJh
bnNpdGlvblRhcmdldHMoV1RGOjptb3ZlKG90aGVyLm1fZXBzaWxvblRyYW5zaXRpb25UYXJnZXRz
KSkKLSAgICAgICAgLCBtX2FjdGlvbnMoV1RGOjptb3ZlKG90aGVyLm1fYWN0aW9ucykpCisgICAg
ICAgICwgbV9yYW5nZXMoV1RGTW92ZShvdGhlci5tX3JhbmdlcykpCisgICAgICAgICwgbV9lcHNp
bG9uVHJhbnNpdGlvblRhcmdldHMoV1RGTW92ZShvdGhlci5tX2Vwc2lsb25UcmFuc2l0aW9uVGFy
Z2V0cykpCisgICAgICAgICwgbV9hY3Rpb25zKFdURk1vdmUob3RoZXIubV9hY3Rpb25zKSkKICAg
ICAgICAgLCBtX25vZGVJZChvdGhlci5tX25vZGVJZCkKICAgICAgICAgLCBtX2ZpbmFsaXplZChv
dGhlci5tX2ZpbmFsaXplZCkKICAgICB7CkBAIC0xNTYsOSArMTU2LDkgQEAgcHVibGljOgogICAg
ICAgICAgICAgZmluYWxpemUoKTsKIAogICAgICAgICBtX2ltbXV0YWJsZU5GQSA9IG90aGVyLm1f
aW1tdXRhYmxlTkZBOwotICAgICAgICBtX3JhbmdlcyA9IFdURjo6bW92ZShvdGhlci5tX3Jhbmdl
cyk7Ci0gICAgICAgIG1fZXBzaWxvblRyYW5zaXRpb25UYXJnZXRzID0gV1RGOjptb3ZlKG90aGVy
Lm1fZXBzaWxvblRyYW5zaXRpb25UYXJnZXRzKTsKLSAgICAgICAgbV9hY3Rpb25zID0gV1RGOjpt
b3ZlKG90aGVyLm1fYWN0aW9ucyk7CisgICAgICAgIG1fcmFuZ2VzID0gV1RGTW92ZShvdGhlci5t
X3Jhbmdlcyk7CisgICAgICAgIG1fZXBzaWxvblRyYW5zaXRpb25UYXJnZXRzID0gV1RGTW92ZShv
dGhlci5tX2Vwc2lsb25UcmFuc2l0aW9uVGFyZ2V0cyk7CisgICAgICAgIG1fYWN0aW9ucyA9IFdU
Rk1vdmUob3RoZXIubV9hY3Rpb25zKTsKICAgICAgICAgbV9ub2RlSWQgPSBvdGhlci5tX25vZGVJ
ZDsKICAgICAgICAgbV9maW5hbGl6ZWQgPSBvdGhlci5tX2ZpbmFsaXplZDsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvTXV0YWJsZVJhbmdlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9NdXRhYmxlUmFuZ2UuaAppbmRleCAzNGNlZWEx
MmZiMjJjYmQ4YWIyZWNkNzU2NGQzOGFkYjk1YzE4MTAzLi4yNjU4MDRiNTU3OWVlZDA2MTY4NTMw
MzEwMWY0NWZiMTg0NjhiZjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0
ZW5zaW9ucy9NdXRhYmxlUmFuZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5z
aW9ucy9NdXRhYmxlUmFuZ2UuaApAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAg
ICAgTXV0YWJsZVJhbmdlKERhdGFUeXBlJiYgZGF0YSwgdWludDMyX3QgbmV4dFJhbmdlSW5kZXgs
IENoYXJhY3RlclR5cGUgZmlyc3QsIENoYXJhY3RlclR5cGUgbGFzdCkKLSAgICAgICAgOiBkYXRh
KFdURjo6bW92ZShkYXRhKSkKKyAgICAgICAgOiBkYXRhKFdURk1vdmUoZGF0YSkpCiAgICAgICAg
ICwgbmV4dFJhbmdlSW5kZXgobmV4dFJhbmdlSW5kZXgpCiAgICAgICAgICwgZmlyc3QoZmlyc3Qp
CiAgICAgICAgICwgbGFzdChsYXN0KQpAQCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6CiAgICAgfQog
CiAgICAgTXV0YWJsZVJhbmdlKE11dGFibGVSYW5nZSYmIG90aGVyKQotICAgICAgICA6IGRhdGEo
V1RGOjptb3ZlKG90aGVyLmRhdGEpKQorICAgICAgICA6IGRhdGEoV1RGTW92ZShvdGhlci5kYXRh
KSkKICAgICAgICAgLCBuZXh0UmFuZ2VJbmRleChvdGhlci5uZXh0UmFuZ2VJbmRleCkKICAgICAg
ICAgLCBmaXJzdChvdGhlci5maXJzdCkKICAgICAgICAgLCBsYXN0KG90aGVyLmxhc3QpCkBAIC03
MywxMCArNzMsMTAgQEAgcHVibGljOgogCiAgICAgVHlwZWRNdXRhYmxlUmFuZ2UmIG9wZXJhdG9y
PShUeXBlZE11dGFibGVSYW5nZSYmIG90aGVyKQogICAgIHsKLSAgICAgICAgZGF0YSA9IFdURjo6
bW92ZShvdGhlci5kYXRhKTsKLSAgICAgICAgbmV4dFJhbmdlSW5kZXggPSBXVEY6Om1vdmUob3Ro
ZXIubmV4dFJhbmdlSW5kZXgpOwotICAgICAgICBmaXJzdCA9IFdURjo6bW92ZShvdGhlci5maXJz
dCk7Ci0gICAgICAgIGxhc3QgPSBXVEY6Om1vdmUob3RoZXIubGFzdCk7CisgICAgICAgIGRhdGEg
PSBXVEZNb3ZlKG90aGVyLmRhdGEpOworICAgICAgICBuZXh0UmFuZ2VJbmRleCA9IFdURk1vdmUo
b3RoZXIubmV4dFJhbmdlSW5kZXgpOworICAgICAgICBmaXJzdCA9IFdURk1vdmUob3RoZXIuZmly
c3QpOworICAgICAgICBsYXN0ID0gV1RGTW92ZShvdGhlci5sYXN0KTsKICAgICAgICAgcmV0dXJu
ICp0aGlzOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVu
c2lvbnMvTXV0YWJsZVJhbmdlTGlzdC5oIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lv
bnMvTXV0YWJsZVJhbmdlTGlzdC5oCmluZGV4IDBhZjBiZmZkNzI5MDk2NzU1NjM3YmNiMmU0ODk5
MmNmY2ZjNWFjNjkuLjZkMWI4OGU5NWU5MzBkMGZjY2VjMzU2Y2JmM2JiYWFmYWIyZTVmNDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL011dGFibGVSYW5nZUxp
c3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9NdXRhYmxlUmFuZ2VM
aXN0LmgKQEAgLTEzNCw3ICsxMzQsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgRGF0YVR5
cGUgY29waWVkRGF0YSA9IGFjdGl2ZVNlbGZSYW5nZS0+ZGF0YTsKICAgICAgICAgICAgICAgICBD
aGFyYWN0ZXJUeXBlIG5ld1JhbmdlRmlyc3RDaGFyYWN0ZXIgPSBhY3RpdmVTZWxmUmFuZ2UtPmZp
cnN0OwogICAgICAgICAgICAgICAgIGFjdGl2ZVNlbGZSYW5nZS0+Zmlyc3QgPSBvdGhlckl0ZXJh
dG9yLmZpcnN0KCkgKyBvdGhlclJhbmdlT2Zmc2V0OwotICAgICAgICAgICAgICAgIGluc2VydEJl
dHdlZW4obGFzdFNlbGZSYW5nZUluZGV4LCBzZWxmUmFuZ2VJbmRleCwgbmV3UmFuZ2VGaXJzdENo
YXJhY3Rlciwgb3RoZXJJdGVyYXRvci5maXJzdCgpICsgb3RoZXJSYW5nZU9mZnNldCAtIDEsIFdU
Rjo6bW92ZShjb3BpZWREYXRhKSk7CisgICAgICAgICAgICAgICAgaW5zZXJ0QmV0d2VlbihsYXN0
U2VsZlJhbmdlSW5kZXgsIHNlbGZSYW5nZUluZGV4LCBuZXdSYW5nZUZpcnN0Q2hhcmFjdGVyLCBv
dGhlckl0ZXJhdG9yLmZpcnN0KCkgKyBvdGhlclJhbmdlT2Zmc2V0IC0gMSwgV1RGTW92ZShjb3Bp
ZWREYXRhKSk7CiAgICAgICAgICAgICAgICAgYWN0aXZlU2VsZlJhbmdlID0gJm1fcmFuZ2VzW3Nl
bGZSYW5nZUluZGV4XTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAob3RoZXJJdGVyYXRvci5maXJz
dCgpICsgb3RoZXJSYW5nZU9mZnNldCA8IGFjdGl2ZVNlbGZSYW5nZS0+Zmlyc3QpIHsKICAgICAg
ICAgICAgICAgICBpbnNlcnRCZXR3ZWVuKGxhc3RTZWxmUmFuZ2VJbmRleCwgc2VsZlJhbmdlSW5k
ZXgsIG90aGVySXRlcmF0b3IuZmlyc3QoKSArIG90aGVyUmFuZ2VPZmZzZXQsIGFjdGl2ZVNlbGZS
YW5nZS0+Zmlyc3QgLSAxLCBkYXRhQ29udmVydGVyLmNvbnZlcnQob3RoZXJJdGVyYXRvci5kYXRh
KCkpKTsKQEAgLTE2OCw3ICsxNjgsNyBAQCBwdWJsaWM6CiAKICAgICAgICAgICAgICAgICBEYXRh
VHlwZSBjb21iaW5lZERhdGEgPSBhY3RpdmVTZWxmUmFuZ2UtPmRhdGE7CiAgICAgICAgICAgICAg
ICAgZGF0YUNvbnZlcnRlci5leHRlbmQoY29tYmluZWREYXRhLCBvdGhlckl0ZXJhdG9yLmRhdGEo
KSk7Ci0gICAgICAgICAgICAgICAgaW5zZXJ0QmV0d2VlbihsYXN0U2VsZlJhbmdlSW5kZXgsIHNl
bGZSYW5nZUluZGV4LCBjb21iaW5lZFBhcnRTdGFydCwgb3RoZXJJdGVyYXRvci5sYXN0KCksIFdU
Rjo6bW92ZShjb21iaW5lZERhdGEpKTsKKyAgICAgICAgICAgICAgICBpbnNlcnRCZXR3ZWVuKGxh
c3RTZWxmUmFuZ2VJbmRleCwgc2VsZlJhbmdlSW5kZXgsIGNvbWJpbmVkUGFydFN0YXJ0LCBvdGhl
ckl0ZXJhdG9yLmxhc3QoKSwgV1RGTW92ZShjb21iaW5lZERhdGEpKTsKIAogICAgICAgICAgICAg
ICAgICsrb3RoZXJJdGVyYXRvcjsKICAgICAgICAgICAgICAgICBvdGhlclJhbmdlT2Zmc2V0ID0g
MDsKQEAgLTIyNCw4ICsyMjQsOCBAQCBwcml2YXRlOgogICAgICAgICBpZiAoIXJpZ2h0UmFuZ2VJ
bmRleCkgewogICAgICAgICAgICAgLy8gVGhpcyBpcyBhIHNwZWNpYWwgY2FzZS4gV2UgYWx3YXlz
IGtlZXAgdGhlIGZpcnN0IHJhbmdlIGFzIHRoZSBmaXJzdCBlbGVtZW50IGluIHRoZSB2ZWN0b3Iu
CiAgICAgICAgICAgICB1aW50MzJfdCBtb3ZlZFJhbmdlSW5kZXggPSBtX3Jhbmdlcy5zaXplKCk7
Ci0gICAgICAgICAgICBtX3Jhbmdlcy5hcHBlbmQoV1RGOjptb3ZlKG1fcmFuZ2VzLmZpcnN0KCkp
KTsKLSAgICAgICAgICAgIG1fcmFuZ2VzWzBdID0gVHlwZWRNdXRhYmxlUmFuZ2UoV1RGOjptb3Zl
KGRhdGEpLCBtb3ZlZFJhbmdlSW5kZXgsIGZpcnN0LCBsYXN0KTsKKyAgICAgICAgICAgIG1fcmFu
Z2VzLmFwcGVuZChXVEZNb3ZlKG1fcmFuZ2VzLmZpcnN0KCkpKTsKKyAgICAgICAgICAgIG1fcmFu
Z2VzWzBdID0gVHlwZWRNdXRhYmxlUmFuZ2UoV1RGTW92ZShkYXRhKSwgbW92ZWRSYW5nZUluZGV4
LCBmaXJzdCwgbGFzdCk7CiAgICAgICAgICAgICBsZWZ0UmFuZ2VJbmRleCA9IDA7CiAgICAgICAg
ICAgICByaWdodFJhbmdlSW5kZXggPSBtb3ZlZFJhbmdlSW5kZXg7CiAgICAgICAgICAgICByZXR1
cm47CkBAIC0yMzUsNyArMjM1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgQVNTRVJUKG1fcmFuZ2Vz
W2xlZnRSYW5nZUluZGV4XS5sYXN0IDwgZmlyc3QpOwogCiAgICAgICAgIHVpbnQzMl90IG5ld1Jh
bmdlSW5kZXggPSBtX3Jhbmdlcy5zaXplKCk7Ci0gICAgICAgIG1fcmFuZ2VzLmFwcGVuZChUeXBl
ZE11dGFibGVSYW5nZShXVEY6Om1vdmUoZGF0YSksIHJpZ2h0UmFuZ2VJbmRleCwgZmlyc3QsIGxh
c3QpKTsKKyAgICAgICAgbV9yYW5nZXMuYXBwZW5kKFR5cGVkTXV0YWJsZVJhbmdlKFdURk1vdmUo
ZGF0YSksIHJpZ2h0UmFuZ2VJbmRleCwgZmlyc3QsIGxhc3QpKTsKICAgICAgICAgbV9yYW5nZXNb
bGVmdFJhbmdlSW5kZXhdLm5leHRSYW5nZUluZGV4ID0gbmV3UmFuZ2VJbmRleDsKICAgICAgICAg
bGVmdFJhbmdlSW5kZXggPSBuZXdSYW5nZUluZGV4OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL1Rlcm0uaCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRl
bnRleHRlbnNpb25zL1Rlcm0uaAppbmRleCAyZjVmZGQ4ODBhN2NlYWI0NTZmOGRkYTMzY2Q1N2Ew
MGJmYjBmMDM3Li4yZTllMWJhOTRmNjBlMmVjZTFjOTZkZWI2ZmJhNTcyMzA1YzU4ZmQ5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9UZXJtLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvVGVybS5oCkBAIC0zMTgsMTcgKzMxOCwxNyBA
QCBpbmxpbmUgVGVybTo6VGVybShjb25zdCBUZXJtJiBvdGhlcikKIH0KIAogaW5saW5lIFRlcm06
OlRlcm0oVGVybSYmIG90aGVyKQotICAgIDogbV90ZXJtVHlwZShXVEY6Om1vdmUob3RoZXIubV90
ZXJtVHlwZSkpCi0gICAgLCBtX3F1YW50aWZpZXIoV1RGOjptb3ZlKG90aGVyLm1fcXVhbnRpZmll
cikpCisgICAgOiBtX3Rlcm1UeXBlKFdURk1vdmUob3RoZXIubV90ZXJtVHlwZSkpCisgICAgLCBt
X3F1YW50aWZpZXIoV1RGTW92ZShvdGhlci5tX3F1YW50aWZpZXIpKQogewogICAgIHN3aXRjaCAo
bV90ZXJtVHlwZSkgewogICAgIGNhc2UgVGVybVR5cGU6OkVtcHR5OgogICAgICAgICBicmVhazsK
ICAgICBjYXNlIFRlcm1UeXBlOjpDaGFyYWN0ZXJTZXQ6Ci0gICAgICAgIG5ldyAoTm90TnVsbCwg
Jm1fYXRvbURhdGEuY2hhcmFjdGVyU2V0KSBDaGFyYWN0ZXJTZXQoV1RGOjptb3ZlKG90aGVyLm1f
YXRvbURhdGEuY2hhcmFjdGVyU2V0KSk7CisgICAgICAgIG5ldyAoTm90TnVsbCwgJm1fYXRvbURh
dGEuY2hhcmFjdGVyU2V0KSBDaGFyYWN0ZXJTZXQoV1RGTW92ZShvdGhlci5tX2F0b21EYXRhLmNo
YXJhY3RlclNldCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFRlcm1UeXBlOjpHcm91cDoK
LSAgICAgICAgbmV3IChOb3ROdWxsLCAmbV9hdG9tRGF0YS5ncm91cCkgR3JvdXAoV1RGOjptb3Zl
KG90aGVyLm1fYXRvbURhdGEuZ3JvdXApKTsKKyAgICAgICAgbmV3IChOb3ROdWxsLCAmbV9hdG9t
RGF0YS5ncm91cCkgR3JvdXAoV1RGTW92ZShvdGhlci5tX2F0b21EYXRhLmdyb3VwKSk7CiAgICAg
ICAgIGJyZWFrOwogICAgIH0KICAgICBvdGhlci5kZXN0cm95KCk7CkBAIC01MjUsNyArNTI1LDcg
QEAgaW5saW5lIFRlcm0mIFRlcm06Om9wZXJhdG9yPShjb25zdCBUZXJtJiBvdGhlcikKIGlubGlu
ZSBUZXJtJiBUZXJtOjpvcGVyYXRvcj0oVGVybSYmIG90aGVyKQogewogICAgIGRlc3Ryb3koKTsK
LSAgICBuZXcgKE5vdE51bGwsIHRoaXMpIFRlcm0oV1RGOjptb3ZlKG90aGVyKSk7CisgICAgbmV3
IChOb3ROdWxsLCB0aGlzKSBUZXJtKFdURk1vdmUob3RoZXIpKTsKICAgICByZXR1cm4gKnRoaXM7
CiB9CiAKQEAgLTY0Niw3ICs2NDYsNyBAQCBpbmxpbmUgdm9pZCBUZXJtOjpnZW5lcmF0ZVN1Ymdy
YXBoRm9yQXRvbShORkEmIG5mYSwgSW1tdXRhYmxlQ2hhck5GQU5vZGVCdWlsZGVyJgogICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDwgbV9hdG9tRGF0YS5ncm91cC50ZXJtcy5zaXplKCkg
LSAxOyArK2kpIHsKICAgICAgICAgICAgIGNvbnN0IFRlcm0mIGN1cnJlbnRUZXJtID0gbV9hdG9t
RGF0YS5ncm91cC50ZXJtc1tpXTsKICAgICAgICAgICAgIEltbXV0YWJsZUNoYXJORkFOb2RlQnVp
bGRlciBuZXdOb2RlID0gY3VycmVudFRlcm0uZ2VuZXJhdGVHcmFwaChuZmEsIGxhc3RUYXJnZXQs
IEFjdGlvbkxpc3QoKSk7Ci0gICAgICAgICAgICBsYXN0VGFyZ2V0ID0gV1RGOjptb3ZlKG5ld05v
ZGUpOworICAgICAgICAgICAgbGFzdFRhcmdldCA9IFdURk1vdmUobmV3Tm9kZSk7CiAgICAgICAg
IH0KICAgICAgICAgY29uc3QgVGVybSYgbGFzdFRlcm0gPSBtX2F0b21EYXRhLmdyb3VwLnRlcm1z
Lmxhc3QoKTsKICAgICAgICAgbGFzdFRlcm0uZ2VuZXJhdGVHcmFwaChuZmEsIGxhc3RUYXJnZXQs
IGRlc3RpbmF0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9B
bGdvcml0aG0uY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0FsZ29yaXRobS5jcHAK
aW5kZXggYzUwOGE0N2RkNTY2ZjdjMDI3MDMxYzQwN2YyMWRmNzA1ZGQ4NWEwZi4uNDRjYmIwMjll
ODc3NmQ3NjYwODFkNzdkMGRkNDI2M2NmZTE4NTA2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3J5cHRvL0NyeXB0b0FsZ29yaXRobS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRv
L0NyeXB0b0FsZ29yaXRobS5jcHAKQEAgLTg3LDEyICs4NywxMiBAQCB2b2lkIENyeXB0b0FsZ29y
aXRobTo6aW1wb3J0S2V5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmLCBjb25zdCBD
cnlwdG9LZQogCiB2b2lkIENyeXB0b0FsZ29yaXRobTo6ZW5jcnlwdEZvcldyYXBLZXkoY29uc3Qg
Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5JiBr
ZXksIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2Fs
bGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYgZWMp
CiB7Ci0gICAgZW5jcnlwdChwYXJhbWV0ZXJzLCBrZXksIGRhdGEsIFdURjo6bW92ZShjYWxsYmFj
ayksIFdURjo6bW92ZShmYWlsdXJlQ2FsbGJhY2spLCBlYyk7CisgICAgZW5jcnlwdChwYXJhbWV0
ZXJzLCBrZXksIGRhdGEsIFdURk1vdmUoY2FsbGJhY2spLCBXVEZNb3ZlKGZhaWx1cmVDYWxsYmFj
ayksIGVjKTsKIH0KIAogdm9pZCBDcnlwdG9BbGdvcml0aG06OmRlY3J5cHRGb3JVbndyYXBLZXko
Y29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRv
S2V5JiBrZXksIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIFZlY3RvckNhbGxiYWNr
JiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29k
ZSYgZWMpCiB7Ci0gICAgZGVjcnlwdChwYXJhbWV0ZXJzLCBrZXksIGRhdGEsIFdURjo6bW92ZShj
YWxsYmFjayksIFdURjo6bW92ZShmYWlsdXJlQ2FsbGJhY2spLCBlYyk7CisgICAgZGVjcnlwdChw
YXJhbWV0ZXJzLCBrZXksIGRhdGEsIFdURk1vdmUoY2FsbGJhY2spLCBXVEZNb3ZlKGZhaWx1cmVD
YWxsYmFjayksIGVjKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRv
L0NyeXB0b0tleVBhaXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0tleVBhaXIu
Y3BwCmluZGV4IGUwZTI3MzllOGMxNTk4YWE2YWIxNGFjODZiMTQ5Mzg5MWQ5N2IwMDIuLjU2NWFk
NGE3NzJkN2Y2YjljMDQ4ZWQyYzgxYjY0MmVhNTNiYmUxNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2NyeXB0by9DcnlwdG9LZXlQYWlyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlw
dG8vQ3J5cHRvS2V5UGFpci5jcHAKQEAgLTMxLDggKzMxLDggQEAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogQ3J5cHRvS2V5UGFpcjo6Q3J5cHRvS2V5UGFpcihSZWZQdHI8Q3J5cHRvS2V5PiYmIHB1
YmxpY0tleSwgUmVmUHRyPENyeXB0b0tleT4mJiBwcml2YXRlS2V5KQotICAgIDogbV9wdWJsaWNL
ZXkoV1RGOjptb3ZlKHB1YmxpY0tleSkpCi0gICAgLCBtX3ByaXZhdGVLZXkoV1RGOjptb3ZlKHBy
aXZhdGVLZXkpKQorICAgIDogbV9wdWJsaWNLZXkoV1RGTW92ZShwdWJsaWNLZXkpKQorICAgICwg
bV9wcml2YXRlS2V5KFdURk1vdmUocHJpdmF0ZUtleSkpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9LZXlQYWlyLmggYi9Tb3VyY2UvV2ViQ29yZS9jcnlw
dG8vQ3J5cHRvS2V5UGFpci5oCmluZGV4IDcxMzA5YzlmMjI2OTc1OTAyYTU0OTRlYzlkMGM2Y2Ez
MjM2MGI2MGIuLjZjYjliMTg5MTIxYzg1MjMzOGRlN2RjNDI4NTliMzZmMjIxYWYzYTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9LZXlQYWlyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvY3J5cHRvL0NyeXB0b0tleVBhaXIuaApAQCAtMzgsNyArMzgsNyBAQCBjbGFzcyBD
cnlwdG9LZXlQYWlyIDogcHVibGljIFJlZkNvdW50ZWQ8Q3J5cHRvS2V5UGFpcj4gewogcHVibGlj
OgogICAgIHN0YXRpYyBSZWY8Q3J5cHRvS2V5UGFpcj4gY3JlYXRlKFJlZlB0cjxDcnlwdG9LZXk+
JiYgcHVibGljS2V5LCBSZWZQdHI8Q3J5cHRvS2V5PiYmIHByaXZhdGVLZXkpCiAgICAgewotICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDcnlwdG9LZXlQYWlyKFdURjo6bW92ZShwdWJsaWNL
ZXkpLCBXVEY6Om1vdmUocHJpdmF0ZUtleSkpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgQ3J5cHRvS2V5UGFpcihXVEZNb3ZlKHB1YmxpY0tleSksIFdURk1vdmUocHJpdmF0ZUtleSkp
KTsKICAgICB9CiAgICAgfkNyeXB0b0tleVBhaXIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1BRVNfQ0JDLmNwcApp
bmRleCAyMTMzNzg3NTdjY2I0MzMyNWM2NTJjMGJlZjM0NzdkNTJjYWI4MmMxLi45MDJhMjBmNTk1
ZGYwMTc2NWMxZmQwYTU4M2ZlMzMxYTU0NTJmMWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1BRVNfQ0JDLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1BRVNfQ0JDLmNwcApA
QCAtNzQsNyArNzQsNyBAQCB2b2lkIENyeXB0b0FsZ29yaXRobUFFU19DQkM6OmVuY3J5cHQoY29u
c3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYgcGFyYW1ldGVycwogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgcGxhdGZvcm1FbmNyeXB0KGFlc0NCQ1BhcmFtZXRlcnMsIGRvd25jYXN0
PENyeXB0b0tleUFFUz4oa2V5KSwgZGF0YSwgV1RGOjptb3ZlKGNhbGxiYWNrKSwgV1RGOjptb3Zl
KGZhaWx1cmVDYWxsYmFjayksIGVjKTsKKyAgICBwbGF0Zm9ybUVuY3J5cHQoYWVzQ0JDUGFyYW1l
dGVycywgZG93bmNhc3Q8Q3J5cHRvS2V5QUVTPihrZXkpLCBkYXRhLCBXVEZNb3ZlKGNhbGxiYWNr
KSwgV1RGTW92ZShmYWlsdXJlQ2FsbGJhY2spLCBlYyk7CiB9CiAKIHZvaWQgQ3J5cHRvQWxnb3Jp
dGhtQUVTX0NCQzo6ZGVjcnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiBwYXJh
bWV0ZXJzLCBjb25zdCBDcnlwdG9LZXkmIGtleSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYg
ZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNh
bGxiYWNrLCBFeGNlcHRpb25Db2RlJiBlYykKQEAgLTg2LDcgKzg2LDcgQEAgdm9pZCBDcnlwdG9B
bGdvcml0aG1BRVNfQ0JDOjpkZWNyeXB0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMm
IHBhcmFtZXRlcnMKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHBsYXRmb3JtRGVjcnlw
dChhZXNDQkNQYXJhbWV0ZXJzLCBkb3duY2FzdDxDcnlwdG9LZXlBRVM+KGtleSksIGRhdGEsIFdU
Rjo6bW92ZShjYWxsYmFjayksIFdURjo6bW92ZShmYWlsdXJlQ2FsbGJhY2spLCBlYyk7CisgICAg
cGxhdGZvcm1EZWNyeXB0KGFlc0NCQ1BhcmFtZXRlcnMsIGRvd25jYXN0PENyeXB0b0tleUFFUz4o
a2V5KSwgZGF0YSwgV1RGTW92ZShjYWxsYmFjayksIFdURk1vdmUoZmFpbHVyZUNhbGxiYWNrKSwg
ZWMpOwogfQogCiB2b2lkIENyeXB0b0FsZ29yaXRobUFFU19DQkM6OmdlbmVyYXRlS2V5KGNvbnN0
IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIGJvb2wgZXh0cmFjdGFibGUs
IENyeXB0b0tleVVzYWdlIHVzYWdlcywgS2V5T3JLZXlQYWlyQ2FsbGJhY2smJiBjYWxsYmFjaywg
Vm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUFFU19L
Vy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1B
RVNfS1cuY3BwCmluZGV4IDM2MGQ4MDY5YmFmMDhmMjY5MTljN2MwNjBiZTAxNDg4NDM3Yzk0Njcu
LjQ1NWE5Mzk5YmIxMGYxYzNiODk1ZWRmMWQ3NTYzNDEyNzdmNjUwOTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUFFU19LVy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtQUVT
X0tXLmNwcApAQCAtNzEsNyArNzEsNyBAQCB2b2lkIENyeXB0b0FsZ29yaXRobUFFU19LVzo6ZW5j
cnlwdEZvcldyYXBLZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYsCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICBwbGF0Zm9ybUVuY3J5cHQoZG93bmNhc3Q8Q3J5cHRvS2V5
QUVTPihrZXkpLCBkYXRhLCBXVEY6Om1vdmUoY2FsbGJhY2spLCBXVEY6Om1vdmUoZmFpbHVyZUNh
bGxiYWNrKSwgZWMpOworICAgIHBsYXRmb3JtRW5jcnlwdChkb3duY2FzdDxDcnlwdG9LZXlBRVM+
KGtleSksIGRhdGEsIFdURk1vdmUoY2FsbGJhY2spLCBXVEZNb3ZlKGZhaWx1cmVDYWxsYmFjayks
IGVjKTsKIH0KIAogdm9pZCBDcnlwdG9BbGdvcml0aG1BRVNfS1c6OmRlY3J5cHRGb3JVbndyYXBL
ZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYsIGNvbnN0IENyeXB0b0tleSYga2V5
LCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBkYXRhLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxi
YWNrLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmIGVjKQpA
QCAtODEsNyArODEsNyBAQCB2b2lkIENyeXB0b0FsZ29yaXRobUFFU19LVzo6ZGVjcnlwdEZvclVu
d3JhcEtleShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJgogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgcGxhdGZvcm1EZWNyeXB0KGRvd25jYXN0PENyeXB0b0tleUFFUz4oa2V5
KSwgZGF0YSwgV1RGOjptb3ZlKGNhbGxiYWNrKSwgV1RGOjptb3ZlKGZhaWx1cmVDYWxsYmFjayks
IGVjKTsKKyAgICBwbGF0Zm9ybURlY3J5cHQoZG93bmNhc3Q8Q3J5cHRvS2V5QUVTPihrZXkpLCBk
YXRhLCBXVEZNb3ZlKGNhbGxiYWNrKSwgV1RGTW92ZShmYWlsdXJlQ2FsbGJhY2spLCBlYyk7CiB9
CiAKIHZvaWQgQ3J5cHRvQWxnb3JpdGhtQUVTX0tXOjpnZW5lcmF0ZUtleShjb25zdCBDcnlwdG9B
bGdvcml0aG1QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9L
ZXlVc2FnZSB1c2FnZXMsIEtleU9yS2V5UGFpckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxs
YmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1ITUFDLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUhNQUMuY3BwCmlu
ZGV4IGQ4OGRmNmViNTFmYWI0MzcwZTQwOGI4ZWRmMmYzN2UxNDZlZDNmMDUuLjdjYjMyOWVhNDg5
NTk0ZGJiYzliMDExYzI3YmI0MDJhMDhlNGNhNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUhNQUMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUhNQUMuY3BwCkBAIC03Niw3
ICs3Niw3IEBAIHZvaWQgQ3J5cHRvQWxnb3JpdGhtSE1BQzo6c2lnbihjb25zdCBDcnlwdG9BbGdv
cml0aG1QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBjb25zCiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBwbGF0Zm9ybVNpZ24oaG1hY1BhcmFtZXRlcnMsIGRvd25jYXN0PENyeXB0b0tleUhN
QUM+KGtleSksIGRhdGEsIFdURjo6bW92ZShjYWxsYmFjayksIFdURjo6bW92ZShmYWlsdXJlQ2Fs
bGJhY2spLCBlYyk7CisgICAgcGxhdGZvcm1TaWduKGhtYWNQYXJhbWV0ZXJzLCBkb3duY2FzdDxD
cnlwdG9LZXlITUFDPihrZXkpLCBkYXRhLCBXVEZNb3ZlKGNhbGxiYWNrKSwgV1RGTW92ZShmYWls
dXJlQ2FsbGJhY2spLCBlYyk7CiB9CiAKIHZvaWQgQ3J5cHRvQWxnb3JpdGhtSE1BQzo6dmVyaWZ5
KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0
b0tleSYga2V5LCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBleHBlY3RlZFNpZ25hdHVyZSwg
Y29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgQm9vbENhbGxiYWNrJiYgY2FsbGJhY2ss
IFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYgZWMpCkBAIC04
OCw3ICs4OCw3IEBAIHZvaWQgQ3J5cHRvQWxnb3JpdGhtSE1BQzo6dmVyaWZ5KGNvbnN0IENyeXB0
b0FsZ29yaXRobVBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIGNvCiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBwbGF0Zm9ybVZlcmlmeShobWFjUGFyYW1ldGVycywgZG93bmNhc3Q8Q3J5cHRv
S2V5SE1BQz4oa2V5KSwgZXhwZWN0ZWRTaWduYXR1cmUsIGRhdGEsIFdURjo6bW92ZShjYWxsYmFj
ayksIFdURjo6bW92ZShmYWlsdXJlQ2FsbGJhY2spLCBlYyk7CisgICAgcGxhdGZvcm1WZXJpZnko
aG1hY1BhcmFtZXRlcnMsIGRvd25jYXN0PENyeXB0b0tleUhNQUM+KGtleSksIGV4cGVjdGVkU2ln
bmF0dXJlLCBkYXRhLCBXVEZNb3ZlKGNhbGxiYWNrKSwgV1RGTW92ZShmYWlsdXJlQ2FsbGJhY2sp
LCBlYyk7CiB9CiAKIHZvaWQgQ3J5cHRvQWxnb3JpdGhtSE1BQzo6Z2VuZXJhdGVLZXkoY29uc3Qg
Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYgcGFyYW1ldGVycywgYm9vbCBleHRyYWN0YWJsZSwg
Q3J5cHRvS2V5VXNhZ2UgdXNhZ2VzLCBLZXlPcktleVBhaXJDYWxsYmFjayYmIGNhbGxiYWNrLCBW
b2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBRVNf
UEtDUzFfdjFfNS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9B
bGdvcml0aG1SU0FFU19QS0NTMV92MV81LmNwcAppbmRleCA0NzZiOTUxOWM3YWYyZGJlOGRlZGY2
YTU4MDA2YTRmMTMxODQ5ZDJmLi42YTgxZWVhMjFiYTYyNmE0OTk1MmE5OWExYjI1NDhhZjdhNmQz
MTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9B
bGdvcml0aG1SU0FFU19QS0NTMV92MV81LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
YWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81LmNwcApAQCAtNzIsNyAr
NzIsNyBAQCB2b2lkIENyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzU6OmVuY3J5cHQoY29u
c3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYsCiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBwbGF0Zm9ybUVuY3J5cHQoZG93bmNhc3Q8Q3J5cHRvS2V5UlNBPihrZXkpLCBkYXRhLCBX
VEY6Om1vdmUoY2FsbGJhY2spLCBXVEY6Om1vdmUoZmFpbHVyZUNhbGxiYWNrKSwgZWMpOworICAg
IHBsYXRmb3JtRW5jcnlwdChkb3duY2FzdDxDcnlwdG9LZXlSU0E+KGtleSksIGRhdGEsIFdURk1v
dmUoY2FsbGJhY2spLCBXVEZNb3ZlKGZhaWx1cmVDYWxsYmFjayksIGVjKTsKIH0KIAogdm9pZCBD
cnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81OjpkZWNyeXB0KGNvbnN0IENyeXB0b0FsZ29y
aXRobVBhcmFtZXRlcnMmLCBjb25zdCBDcnlwdG9LZXkmIGtleSwgY29uc3QgQ3J5cHRvT3BlcmF0
aW9uRGF0YSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYg
ZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJiBlYykKQEAgLTgyLDcgKzgyLDcgQEAgdm9p
ZCBDcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81OjpkZWNyeXB0KGNvbnN0IENyeXB0b0Fs
Z29yaXRobVBhcmFtZXRlcnMmLAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgcGxhdGZv
cm1EZWNyeXB0KGRvd25jYXN0PENyeXB0b0tleVJTQT4oa2V5KSwgZGF0YSwgV1RGOjptb3ZlKGNh
bGxiYWNrKSwgV1RGOjptb3ZlKGZhaWx1cmVDYWxsYmFjayksIGVjKTsKKyAgICBwbGF0Zm9ybURl
Y3J5cHQoZG93bmNhc3Q8Q3J5cHRvS2V5UlNBPihrZXkpLCBkYXRhLCBXVEZNb3ZlKGNhbGxiYWNr
KSwgV1RGTW92ZShmYWlsdXJlQ2FsbGJhY2spLCBlYyk7CiB9CiAKIHZvaWQgQ3J5cHRvQWxnb3Jp
dGhtUlNBRVNfUEtDUzFfdjFfNTo6Z2VuZXJhdGVLZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFy
YW1ldGVycyYgcGFyYW1ldGVycywgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2UgdXNh
Z2VzLCBLZXlPcktleVBhaXJDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2smJiBmYWls
dXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKQpAQCAtOTMsNyArOTMsNyBAQCB2b2lkIENyeXB0
b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzU6OmdlbmVyYXRlS2V5KGNvbnN0IENyeXB0b0FsZ29y
aXRobVBhcmFtZXRlcgogICAgICAgICBjYWxsYmFjayhudWxscHRyLCAmcGFpcik7CiAgICAgfTsK
IAotICAgIENyeXB0b0tleVJTQTo6Z2VuZXJhdGVQYWlyKENyeXB0b0FsZ29yaXRobUlkZW50aWZp
ZXI6OlJTQUVTX1BLQ1MxX3YxXzUsIHJzYVBhcmFtZXRlcnMuaGFzaCwgcnNhUGFyYW1ldGVycy5o
YXNIYXNoLCByc2FQYXJhbWV0ZXJzLm1vZHVsdXNMZW5ndGgsIHJzYVBhcmFtZXRlcnMucHVibGlj
RXhwb25lbnQsIGV4dHJhY3RhYmxlLCB1c2FnZXMsIFdURjo6bW92ZShrZXlQYWlyQ2FsbGJhY2sp
LCBXVEY6Om1vdmUoZmFpbHVyZUNhbGxiYWNrKSk7CisgICAgQ3J5cHRvS2V5UlNBOjpnZW5lcmF0
ZVBhaXIoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6UlNBRVNfUEtDUzFfdjFfNSwgcnNhUGFy
YW1ldGVycy5oYXNoLCByc2FQYXJhbWV0ZXJzLmhhc0hhc2gsIHJzYVBhcmFtZXRlcnMubW9kdWx1
c0xlbmd0aCwgcnNhUGFyYW1ldGVycy5wdWJsaWNFeHBvbmVudCwgZXh0cmFjdGFibGUsIHVzYWdl
cywgV1RGTW92ZShrZXlQYWlyQ2FsbGJhY2spLCBXVEZNb3ZlKGZhaWx1cmVDYWxsYmFjaykpOwog
fQogCiB2b2lkIENyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzU6OmltcG9ydEtleShjb25z
dCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXlE
YXRhJiBrZXlEYXRhLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZSB1c2FnZSwgS2V5
Q2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNl
cHRpb25Db2RlJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1z
L0NyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81LmNwcAppbmRl
eCAyZmJhY2Y1YmE4Njc5NDZiYzUxOTA1YjY2YWE4MmNmYzgyYWMwOGIwLi4zY2EyMzdlODFlM2Zl
ZTgzMjYyZmRiMGIyZDhlZjVkYjdhYTQ1ZTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
cnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBU1NB
X1BLQ1MxX3YxXzUuY3BwCkBAIC03OCw3ICs3OCw3IEBAIHZvaWQgQ3J5cHRvQWxnb3JpdGhtUlNB
U1NBX1BLQ1MxX3YxXzU6OnNpZ24oY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYgcGFy
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBwbGF0Zm9ybVNpZ24ocnNhU1NBUGFyYW1l
dGVycywgZG93bmNhc3Q8Q3J5cHRvS2V5UlNBPihrZXkpLCBkYXRhLCBXVEY6Om1vdmUoY2FsbGJh
Y2spLCBXVEY6Om1vdmUoZmFpbHVyZUNhbGxiYWNrKSwgZWMpOworICAgIHBsYXRmb3JtU2lnbihy
c2FTU0FQYXJhbWV0ZXJzLCBkb3duY2FzdDxDcnlwdG9LZXlSU0E+KGtleSksIGRhdGEsIFdURk1v
dmUoY2FsbGJhY2spLCBXVEZNb3ZlKGZhaWx1cmVDYWxsYmFjayksIGVjKTsKIH0KIAogdm9pZCBD
cnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNTo6dmVyaWZ5KGNvbnN0IENyeXB0b0FsZ29y
aXRobVBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleSYga2V5LCBjb25zdCBD
cnlwdG9PcGVyYXRpb25EYXRhJiBzaWduYXR1cmUsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEm
IGRhdGEsIEJvb2xDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2Fs
bGJhY2ssIEV4Y2VwdGlvbkNvZGUmIGVjKQpAQCAtOTAsNyArOTAsNyBAQCB2b2lkIENyeXB0b0Fs
Z29yaXRobVJTQVNTQV9QS0NTMV92MV81Ojp2ZXJpZnkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFy
YW1ldGVycyYgcAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgcGxhdGZvcm1WZXJpZnko
cnNhU1NBUGFyYW1ldGVycywgIGRvd25jYXN0PENyeXB0b0tleVJTQT4oa2V5KSwgc2lnbmF0dXJl
LCBkYXRhLCBXVEY6Om1vdmUoY2FsbGJhY2spLCBXVEY6Om1vdmUoZmFpbHVyZUNhbGxiYWNrKSwg
ZWMpOworICAgIHBsYXRmb3JtVmVyaWZ5KHJzYVNTQVBhcmFtZXRlcnMsICBkb3duY2FzdDxDcnlw
dG9LZXlSU0E+KGtleSksIHNpZ25hdHVyZSwgZGF0YSwgV1RGTW92ZShjYWxsYmFjayksIFdURk1v
dmUoZmFpbHVyZUNhbGxiYWNrKSwgZWMpOwogfQogCiB2b2lkIENyeXB0b0FsZ29yaXRobVJTQVNT
QV9QS0NTMV92MV81OjpnZW5lcmF0ZUtleShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJz
JiBwYXJhbWV0ZXJzLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZSB1c2FnZXMsIEtl
eU9yS2V5UGFpckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxs
YmFjaywgRXhjZXB0aW9uQ29kZSYpCkBAIC0xMDEsNyArMTAxLDcgQEAgdm9pZCBDcnlwdG9BbGdv
cml0aG1SU0FTU0FfUEtDUzFfdjFfNTo6Z2VuZXJhdGVLZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGht
UGFyYW1ldGUKICAgICAgICAgY2FsbGJhY2sobnVsbHB0ciwgJnBhaXIpOwogICAgIH07CiAKLSAg
ICBDcnlwdG9LZXlSU0E6OmdlbmVyYXRlUGFpcihDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpS
U0FTU0FfUEtDUzFfdjFfNSwgcnNhUGFyYW1ldGVycy5oYXNoLCByc2FQYXJhbWV0ZXJzLmhhc0hh
c2gsIHJzYVBhcmFtZXRlcnMubW9kdWx1c0xlbmd0aCwgcnNhUGFyYW1ldGVycy5wdWJsaWNFeHBv
bmVudCwgZXh0cmFjdGFibGUsIHVzYWdlcywgV1RGOjptb3ZlKGtleVBhaXJDYWxsYmFjayksIFdU
Rjo6bW92ZShmYWlsdXJlQ2FsbGJhY2spKTsKKyAgICBDcnlwdG9LZXlSU0E6OmdlbmVyYXRlUGFp
cihDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpSU0FTU0FfUEtDUzFfdjFfNSwgcnNhUGFyYW1l
dGVycy5oYXNoLCByc2FQYXJhbWV0ZXJzLmhhc0hhc2gsIHJzYVBhcmFtZXRlcnMubW9kdWx1c0xl
bmd0aCwgcnNhUGFyYW1ldGVycy5wdWJsaWNFeHBvbmVudCwgZXh0cmFjdGFibGUsIHVzYWdlcywg
V1RGTW92ZShrZXlQYWlyQ2FsbGJhY2spLCBXVEZNb3ZlKGZhaWx1cmVDYWxsYmFjaykpOwogfQog
CiB2b2lkIENyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81OjppbXBvcnRLZXkoY29uc3Qg
Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5RGF0
YSYga2V5RGF0YSwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2UgdXNhZ2UsIEtleUNh
bGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0
aW9uQ29kZSYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9D
cnlwdG9BbGdvcml0aG1SU0FfT0FFUC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3Jp
dGhtcy9DcnlwdG9BbGdvcml0aG1SU0FfT0FFUC5jcHAKaW5kZXggN2Y4MTlkMGUzOGE3ZjAwOWM1
ZTM3MzZkYWRiZTYwN2RlNGMzNzAwZi4uNTNlYmQ5Y2ExNGM3YTdmOTEwMWZmMGU0OWEzMGE3NzUx
Zjc1ZjMxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5
cHRvQWxnb3JpdGhtUlNBX09BRVAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdv
cml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQV9PQUVQLmNwcApAQCAtNzgsNyArNzgsNyBAQCB2b2lk
IENyeXB0b0FsZ29yaXRobVJTQV9PQUVQOjplbmNyeXB0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBh
cmFtZXRlcnMmIHBhcmFtZXRlcgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgcGxhdGZv
cm1FbmNyeXB0KHJzYU9BRVBQYXJhbWV0ZXJzLCBkb3duY2FzdDxDcnlwdG9LZXlSU0E+KGtleSks
IGRhdGEsIFdURjo6bW92ZShjYWxsYmFjayksIFdURjo6bW92ZShmYWlsdXJlQ2FsbGJhY2spLCBl
Yyk7CisgICAgcGxhdGZvcm1FbmNyeXB0KHJzYU9BRVBQYXJhbWV0ZXJzLCBkb3duY2FzdDxDcnlw
dG9LZXlSU0E+KGtleSksIGRhdGEsIFdURk1vdmUoY2FsbGJhY2spLCBXVEZNb3ZlKGZhaWx1cmVD
YWxsYmFjayksIGVjKTsKIH0KIAogdm9pZCBDcnlwdG9BbGdvcml0aG1SU0FfT0FFUDo6ZGVjcnlw
dChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlw
dG9LZXkmIGtleSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVjdG9yQ2FsbGJh
Y2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25D
b2RlJiBlYykKQEAgLTkwLDcgKzkwLDcgQEAgdm9pZCBDcnlwdG9BbGdvcml0aG1SU0FfT0FFUDo6
ZGVjcnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiBwYXJhbWV0ZXIKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIHBsYXRmb3JtRGVjcnlwdChyc2FPQUVQUGFyYW1ldGVy
cywgZG93bmNhc3Q8Q3J5cHRvS2V5UlNBPihrZXkpLCBkYXRhLCBXVEY6Om1vdmUoY2FsbGJhY2sp
LCBXVEY6Om1vdmUoZmFpbHVyZUNhbGxiYWNrKSwgZWMpOworICAgIHBsYXRmb3JtRGVjcnlwdChy
c2FPQUVQUGFyYW1ldGVycywgZG93bmNhc3Q8Q3J5cHRvS2V5UlNBPihrZXkpLCBkYXRhLCBXVEZN
b3ZlKGNhbGxiYWNrKSwgV1RGTW92ZShmYWlsdXJlQ2FsbGJhY2spLCBlYyk7CiB9CiAKIHZvaWQg
Q3J5cHRvQWxnb3JpdGhtUlNBX09BRVA6OmdlbmVyYXRlS2V5KGNvbnN0IENyeXB0b0FsZ29yaXRo
bVBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdl
IHVzYWdlcywgS2V5T3JLZXlQYWlyQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYg
ZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJikKQEAgLTEwMSw3ICsxMDEsNyBAQCB2b2lk
IENyeXB0b0FsZ29yaXRobVJTQV9PQUVQOjpnZW5lcmF0ZUtleShjb25zdCBDcnlwdG9BbGdvcml0
aG1QYXJhbWV0ZXJzJiBwYXJhbQogICAgICAgICBjYWxsYmFjayhudWxscHRyLCAmcGFpcik7CiAg
ICAgfTsKIAotICAgIENyeXB0b0tleVJTQTo6Z2VuZXJhdGVQYWlyKENyeXB0b0FsZ29yaXRobUlk
ZW50aWZpZXI6OlJTQV9PQUVQLCByc2FQYXJhbWV0ZXJzLmhhc2gsIHJzYVBhcmFtZXRlcnMuaGFz
SGFzaCwgcnNhUGFyYW1ldGVycy5tb2R1bHVzTGVuZ3RoLCByc2FQYXJhbWV0ZXJzLnB1YmxpY0V4
cG9uZW50LCBleHRyYWN0YWJsZSwgdXNhZ2VzLCBXVEY6Om1vdmUoa2V5UGFpckNhbGxiYWNrKSwg
V1RGOjptb3ZlKGZhaWx1cmVDYWxsYmFjaykpOworICAgIENyeXB0b0tleVJTQTo6Z2VuZXJhdGVQ
YWlyKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlJTQV9PQUVQLCByc2FQYXJhbWV0ZXJzLmhh
c2gsIHJzYVBhcmFtZXRlcnMuaGFzSGFzaCwgcnNhUGFyYW1ldGVycy5tb2R1bHVzTGVuZ3RoLCBy
c2FQYXJhbWV0ZXJzLnB1YmxpY0V4cG9uZW50LCBleHRyYWN0YWJsZSwgdXNhZ2VzLCBXVEZNb3Zl
KGtleVBhaXJDYWxsYmFjayksIFdURk1vdmUoZmFpbHVyZUNhbGxiYWNrKSk7CiB9CiAKIHZvaWQg
Q3J5cHRvQWxnb3JpdGhtUlNBX09BRVA6OmltcG9ydEtleShjb25zdCBDcnlwdG9BbGdvcml0aG1Q
YXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXlEYXRhJiBrZXlEYXRhLCBib29s
IGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZSB1c2FnZSwgS2V5Q2FsbGJhY2smJiBjYWxsYmFj
aywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQ01h
Yy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobUFFU19DQkNN
YWMuY3BwCmluZGV4IDg1MTRiZjIzYTZmOTM0MjFhNTQ5ZTk2MDFiYmIyM2Q1ZmZiNzQxNjYuLjE1
ODY5MDc5NmYyMDRjZjE4MzU0MzdkY2ExYjhkMDM5NThmMDRiYzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQ01hYy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1BRVNfQ0JDTWFjLmNwcApA
QCAtODQsMTIgKzg0LDEyIEBAIHN0YXRpYyB2b2lkIHRyYW5zZm9ybUFFU19DQkMoQ0NPcGVyYXRp
b24gb3BlcmF0aW9uLCBjb25zdCBDcnlwdG9BbGdvcml0aG1BZXNDYmNQCiAKIHZvaWQgQ3J5cHRv
QWxnb3JpdGhtQUVTX0NCQzo6cGxhdGZvcm1FbmNyeXB0KGNvbnN0IENyeXB0b0FsZ29yaXRobUFl
c0NiY1BhcmFtcyYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5QUVTJiBrZXksIGNvbnN0IENy
eXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRD
YWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpCiB7Ci0gICAgdHJhbnNm
b3JtQUVTX0NCQyhrQ0NFbmNyeXB0LCBwYXJhbWV0ZXJzLCBrZXksIGRhdGEsIFdURjo6bW92ZShj
YWxsYmFjayksIFdURjo6bW92ZShmYWlsdXJlQ2FsbGJhY2spKTsKKyAgICB0cmFuc2Zvcm1BRVNf
Q0JDKGtDQ0VuY3J5cHQsIHBhcmFtZXRlcnMsIGtleSwgZGF0YSwgV1RGTW92ZShjYWxsYmFjayks
IFdURk1vdmUoZmFpbHVyZUNhbGxiYWNrKSk7CiB9CiAKIHZvaWQgQ3J5cHRvQWxnb3JpdGhtQUVT
X0NCQzo6cGxhdGZvcm1EZWNyeXB0KGNvbnN0IENyeXB0b0FsZ29yaXRobUFlc0NiY1BhcmFtcyYg
cGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5QUVTJiBrZXksIGNvbnN0IENyeXB0b09wZXJhdGlv
bkRhdGEmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZh
aWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpCiB7Ci0gICAgdHJhbnNmb3JtQUVTX0NCQyhr
Q0NEZWNyeXB0LCBwYXJhbWV0ZXJzLCBrZXksIGRhdGEsIFdURjo6bW92ZShjYWxsYmFjayksIFdU
Rjo6bW92ZShmYWlsdXJlQ2FsbGJhY2spKTsKKyAgICB0cmFuc2Zvcm1BRVNfQ0JDKGtDQ0RlY3J5
cHQsIHBhcmFtZXRlcnMsIGtleSwgZGF0YSwgV1RGTW92ZShjYWxsYmFjayksIFdURk1vdmUoZmFp
bHVyZUNhbGxiYWNrKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvS2V5UlNBTWFjLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvS2V5UlNBTWFjLmNwcAppbmRleCBhZTVhZTFmMjAxZjEx
ZTY3MjM3NDIxZmI2MjkzODdhY2VmODFhZjUwLi4yMzM0YzEzODMzNDQ3MzdmMGQyZmVhNWIwNjc2
MTNhZjg2MjlmMjgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0
b0tleVJTQU1hYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9LZXlS
U0FNYWMuY3BwCkBAIC0yNDUsOCArMjQ1LDggQEAgdm9pZCBDcnlwdG9LZXlSU0E6OmdlbmVyYXRl
UGFpcihDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGFsZ29yaXRobSwgQ3J5cHRvQWxnb3IKICAg
ICB9CiAKICAgICAvLyBXZSBvbmx5IHVzZSB0aGUgY2FsbGJhY2sgZnVuY3Rpb25zIHdoZW4gYmFj
ayBvbiB0aGUgbWFpbiB0aHJlYWQsIGJ1dCBjYXB0dXJlZCB2YXJpYWJsZXMgYXJlIGNvcGllZCBv
biBhIHNlY29uZGFyeSB0aHJlYWQgdG9vLgotICAgIEtleVBhaXJDYWxsYmFjayogbG9jYWxDYWxs
YmFjayA9IG5ldyBLZXlQYWlyQ2FsbGJhY2soV1RGOjptb3ZlKGNhbGxiYWNrKSk7Ci0gICAgVm9p
ZENhbGxiYWNrKiBsb2NhbEZhaWx1cmVDYWxsYmFjayA9IG5ldyBWb2lkQ2FsbGJhY2soV1RGOjpt
b3ZlKGZhaWx1cmVDYWxsYmFjaykpOworICAgIEtleVBhaXJDYWxsYmFjayogbG9jYWxDYWxsYmFj
ayA9IG5ldyBLZXlQYWlyQ2FsbGJhY2soV1RGTW92ZShjYWxsYmFjaykpOworICAgIFZvaWRDYWxs
YmFjayogbG9jYWxGYWlsdXJlQ2FsbGJhY2sgPSBuZXcgVm9pZENhbGxiYWNrKFdURk1vdmUoZmFp
bHVyZUNhbGxiYWNrKSk7CiAKICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfZ2xvYmFs
X3F1ZXVlKERJU1BBVENIX1FVRVVFX1BSSU9SSVRZX0RFRkFVTFQsIDApLCBeewogICAgICAgICBD
Q1JTQUNyeXB0b3JSZWYgY2NQdWJsaWNLZXk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQmFzaWNTaGFwZUZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQmFzaWNTaGFw
ZUZ1bmN0aW9ucy5jcHAKaW5kZXggY2E5NmY5OWZlMjIwNWU0M2MyNmRlNjUyNTQ5NDlhYWVjMGEz
N2UwNS4uMGM5YzJkNmUzOTZlMjk2MDgyZDYyMDk4MjdkZDU2ZDRmMTgyZjg4NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL0Jhc2ljU2hhcGVGdW5jdGlvbnMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9CYXNpY1NoYXBlRnVuY3Rpb25zLmNwcApAQCAtNzksNyArNzksNyBAQCBS
ZWY8Q1NTVmFsdWU+IHZhbHVlRm9yQmFzaWNTaGFwZShjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUs
IGNvbnN0IEJhc2ljU2hhcGUmIGJhcwogICAgICAgICBjaXJjbGVWYWx1ZS0+c2V0Q2VudGVyWSh2
YWx1ZUZvckNlbnRlckNvb3JkaW5hdGUoY3NzVmFsdWVQb29sLCBzdHlsZSwgY2lyY2xlLmNlbnRl
clkoKSwgVkVSVElDQUwpKTsKICAgICAgICAgY2lyY2xlVmFsdWUtPnNldFJhZGl1cyhiYXNpY1No
YXBlUmFkaXVzVG9DU1NWYWx1ZShzdHlsZSwgY3NzVmFsdWVQb29sLCBjaXJjbGUucmFkaXVzKCkp
KTsKIAotICAgICAgICBiYXNpY1NoYXBlVmFsdWUgPSBXVEY6Om1vdmUoY2lyY2xlVmFsdWUpOwor
ICAgICAgICBiYXNpY1NoYXBlVmFsdWUgPSBXVEZNb3ZlKGNpcmNsZVZhbHVlKTsKICAgICAgICAg
YnJlYWs7CiAgICAgfQogICAgIGNhc2UgQmFzaWNTaGFwZTo6QmFzaWNTaGFwZUVsbGlwc2VUeXBl
OiB7CkBAIC05MSw3ICs5MSw3IEBAIFJlZjxDU1NWYWx1ZT4gdmFsdWVGb3JCYXNpY1NoYXBlKGNv
bnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgY29uc3QgQmFzaWNTaGFwZSYgYmFzCiAgICAgICAgIGVs
bGlwc2VWYWx1ZS0+c2V0UmFkaXVzWChiYXNpY1NoYXBlUmFkaXVzVG9DU1NWYWx1ZShzdHlsZSwg
Y3NzVmFsdWVQb29sLCBlbGxpcHNlLnJhZGl1c1goKSkpOwogICAgICAgICBlbGxpcHNlVmFsdWUt
PnNldFJhZGl1c1koYmFzaWNTaGFwZVJhZGl1c1RvQ1NTVmFsdWUoc3R5bGUsIGNzc1ZhbHVlUG9v
bCwgZWxsaXBzZS5yYWRpdXNZKCkpKTsKIAotICAgICAgICBiYXNpY1NoYXBlVmFsdWUgPSBXVEY6
Om1vdmUoZWxsaXBzZVZhbHVlKTsKKyAgICAgICAgYmFzaWNTaGFwZVZhbHVlID0gV1RGTW92ZShl
bGxpcHNlVmFsdWUpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBCYXNpY1NoYXBl
OjpCYXNpY1NoYXBlUG9seWdvblR5cGU6IHsKQEAgLTEwMyw3ICsxMDMsNyBAQCBSZWY8Q1NTVmFs
dWU+IHZhbHVlRm9yQmFzaWNTaGFwZShjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0IEJh
c2ljU2hhcGUmIGJhcwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdmFsdWVzLnNp
emUoKTsgaSArPSAyKQogICAgICAgICAgICAgcG9seWdvblZhbHVlLT5hcHBlbmRQb2ludChjc3NW
YWx1ZVBvb2wuY3JlYXRlVmFsdWUodmFsdWVzLmF0KGkpLCBzdHlsZSksIGNzc1ZhbHVlUG9vbC5j
cmVhdGVWYWx1ZSh2YWx1ZXMuYXQoaSArIDEpLCBzdHlsZSkpOwogCi0gICAgICAgIGJhc2ljU2hh
cGVWYWx1ZSA9IFdURjo6bW92ZShwb2x5Z29uVmFsdWUpOworICAgICAgICBiYXNpY1NoYXBlVmFs
dWUgPSBXVEZNb3ZlKHBvbHlnb25WYWx1ZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBj
YXNlIEJhc2ljU2hhcGU6OkJhc2ljU2hhcGVQYXRoVHlwZTogewpAQCAtMTExLDcgKzExMSw3IEBA
IFJlZjxDU1NWYWx1ZT4gdmFsdWVGb3JCYXNpY1NoYXBlKGNvbnN0IFJlbmRlclN0eWxlJiBzdHls
ZSwgY29uc3QgQmFzaWNTaGFwZSYgYmFzCiAgICAgICAgIGF1dG8gcGF0aFNoYXBlVmFsdWUgPSBD
U1NCYXNpY1NoYXBlUGF0aDo6Y3JlYXRlKHBhdGhTaGFwZS5wYXRoRGF0YSgpLT5jb3B5KCkpOwog
ICAgICAgICBwYXRoU2hhcGVWYWx1ZS0+c2V0V2luZFJ1bGUocGF0aFNoYXBlLndpbmRSdWxlKCkp
OwogCi0gICAgICAgIGJhc2ljU2hhcGVWYWx1ZSA9IFdURjo6bW92ZShwYXRoU2hhcGVWYWx1ZSk7
CisgICAgICAgIGJhc2ljU2hhcGVWYWx1ZSA9IFdURk1vdmUocGF0aFNoYXBlVmFsdWUpOwogICAg
ICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBCYXNpY1NoYXBlOjpCYXNpY1NoYXBlSW5zZXRU
eXBlOiB7CkBAIC0xMjgsNyArMTI4LDcgQEAgUmVmPENTU1ZhbHVlPiB2YWx1ZUZvckJhc2ljU2hh
cGUoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBCYXNpY1NoYXBlJiBiYXMKICAgICAg
ICAgaW5zZXRWYWx1ZS0+c2V0Qm90dG9tUmlnaHRSYWRpdXMoY3NzVmFsdWVQb29sLmNyZWF0ZVZh
bHVlKGluc2V0LmJvdHRvbVJpZ2h0UmFkaXVzKCksIHN0eWxlKSk7CiAgICAgICAgIGluc2V0VmFs
dWUtPnNldEJvdHRvbUxlZnRSYWRpdXMoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKGluc2V0LmJv
dHRvbUxlZnRSYWRpdXMoKSwgc3R5bGUpKTsKIAotICAgICAgICBiYXNpY1NoYXBlVmFsdWUgPSBX
VEY6Om1vdmUoaW5zZXRWYWx1ZSk7CisgICAgICAgIGJhc2ljU2hhcGVWYWx1ZSA9IFdURk1vdmUo
aW5zZXRWYWx1ZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICB9CkBAIC0yMjEsNyArMjIx
LDcgQEAgUmVmPEJhc2ljU2hhcGU+IGJhc2ljU2hhcGVGb3JWYWx1ZShjb25zdCBDU1NUb0xlbmd0
aENvbnZlcnNpb25EYXRhJiBjb252ZXJzaW9uRGEKICAgICAgICAgY2lyY2xlLT5zZXRDZW50ZXJZ
KGNvbnZlcnRUb0NlbnRlckNvb3JkaW5hdGUoY29udmVyc2lvbkRhdGEsIGNpcmNsZVZhbHVlLmNl
bnRlclkoKSkpOwogICAgICAgICBjaXJjbGUtPnNldFJhZGl1cyhjc3NWYWx1ZVRvQmFzaWNTaGFw
ZVJhZGl1cyhjb252ZXJzaW9uRGF0YSwgY2lyY2xlVmFsdWUucmFkaXVzKCkpKTsKIAotICAgICAg
ICBiYXNpY1NoYXBlID0gV1RGOjptb3ZlKGNpcmNsZSk7CisgICAgICAgIGJhc2ljU2hhcGUgPSBX
VEZNb3ZlKGNpcmNsZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIENTU0Jhc2lj
U2hhcGU6OkNTU0Jhc2ljU2hhcGVFbGxpcHNlVHlwZTogewpAQCAtMjM0LDcgKzIzNCw3IEBAIFJl
ZjxCYXNpY1NoYXBlPiBiYXNpY1NoYXBlRm9yVmFsdWUoY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJz
aW9uRGF0YSYgY29udmVyc2lvbkRhCiAgICAgICAgIGVsbGlwc2UtPnNldFJhZGl1c1goY3NzVmFs
dWVUb0Jhc2ljU2hhcGVSYWRpdXMoY29udmVyc2lvbkRhdGEsIGVsbGlwc2VWYWx1ZS5yYWRpdXNY
KCkpKTsKICAgICAgICAgZWxsaXBzZS0+c2V0UmFkaXVzWShjc3NWYWx1ZVRvQmFzaWNTaGFwZVJh
ZGl1cyhjb252ZXJzaW9uRGF0YSwgZWxsaXBzZVZhbHVlLnJhZGl1c1koKSkpOwogCi0gICAgICAg
IGJhc2ljU2hhcGUgPSBXVEY6Om1vdmUoZWxsaXBzZSk7CisgICAgICAgIGJhc2ljU2hhcGUgPSBX
VEZNb3ZlKGVsbGlwc2UpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBDU1NCYXNp
Y1NoYXBlOjpDU1NCYXNpY1NoYXBlUG9seWdvblR5cGU6IHsKQEAgLTI0Niw3ICsyNDYsNyBAQCBS
ZWY8QmFzaWNTaGFwZT4gYmFzaWNTaGFwZUZvclZhbHVlKGNvbnN0IENTU1RvTGVuZ3RoQ29udmVy
c2lvbkRhdGEmIGNvbnZlcnNpb25EYQogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
dmFsdWVzLnNpemUoKTsgaSArPSAyKQogICAgICAgICAgICAgcG9seWdvbi0+YXBwZW5kUG9pbnQo
Y29udmVydFRvTGVuZ3RoKGNvbnZlcnNpb25EYXRhLCB2YWx1ZXMuYXQoaSkuZ2V0KCkpLCBjb252
ZXJ0VG9MZW5ndGgoY29udmVyc2lvbkRhdGEsIHZhbHVlcy5hdChpICsgMSkuZ2V0KCkpKTsKIAot
ICAgICAgICBiYXNpY1NoYXBlID0gV1RGOjptb3ZlKHBvbHlnb24pOworICAgICAgICBiYXNpY1No
YXBlID0gV1RGTW92ZShwb2x5Z29uKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2Ug
Q1NTQmFzaWNTaGFwZTo6Q1NTQmFzaWNTaGFwZUluc2V0VHlwZTogewpAQCAtMjYzLDcgKzI2Myw3
IEBAIFJlZjxCYXNpY1NoYXBlPiBiYXNpY1NoYXBlRm9yVmFsdWUoY29uc3QgQ1NTVG9MZW5ndGhD
b252ZXJzaW9uRGF0YSYgY29udmVyc2lvbkRhCiAgICAgICAgIHJlY3QtPnNldEJvdHRvbVJpZ2h0
UmFkaXVzKGNvbnZlcnRUb0xlbmd0aFNpemUoY29udmVyc2lvbkRhdGEsIHJlY3RWYWx1ZS5ib3R0
b21SaWdodFJhZGl1cygpKSk7CiAgICAgICAgIHJlY3QtPnNldEJvdHRvbUxlZnRSYWRpdXMoY29u
dmVydFRvTGVuZ3RoU2l6ZShjb252ZXJzaW9uRGF0YSwgcmVjdFZhbHVlLmJvdHRvbUxlZnRSYWRp
dXMoKSkpOwogCi0gICAgICAgIGJhc2ljU2hhcGUgPSBXVEY6Om1vdmUocmVjdCk7CisgICAgICAg
IGJhc2ljU2hhcGUgPSBXVEZNb3ZlKHJlY3QpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAg
Y2FzZSBDU1NCYXNpY1NoYXBlOjpDU1NCYXNpY1NoYXBlUGF0aFR5cGU6IHsKQEAgLTI3MSw3ICsy
NzEsNyBAQCBSZWY8QmFzaWNTaGFwZT4gYmFzaWNTaGFwZUZvclZhbHVlKGNvbnN0IENTU1RvTGVu
Z3RoQ29udmVyc2lvbkRhdGEmIGNvbnZlcnNpb25EYQogICAgICAgICBhdXRvIHBhdGggPSBCYXNp
Y1NoYXBlUGF0aDo6Y3JlYXRlKHBhdGhWYWx1ZS5wYXRoRGF0YSgpLmNvcHkoKSk7CiAgICAgICAg
IHBhdGgtPnNldFdpbmRSdWxlKHBhdGhWYWx1ZS53aW5kUnVsZSgpKTsKIAotICAgICAgICBiYXNp
Y1NoYXBlID0gV1RGOjptb3ZlKHBhdGgpOworICAgICAgICBiYXNpY1NoYXBlID0gV1RGTW92ZShw
YXRoKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NCYXNpY1NoYXBlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQmFz
aWNTaGFwZXMuY3BwCmluZGV4IDQ1NTliOTYyYjgyMjRjOGY1NGMyZTRmNWJmYjFkMmIxM2U1NWMx
NmEuLjBmMzg3MjNhMzc1NzIwMzllOTE3M2JhNjQyYWI3YjU4ZDY2NzM3MGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCYXNpY1NoYXBlcy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0Jhc2ljU2hhcGVzLmNwcApAQCAtMjAyLDcgKzIwMiw3IEBAIGJvb2wgQ1NTQmFz
aWNTaGFwZUVsbGlwc2U6OmVxdWFscyhjb25zdCBDU1NCYXNpY1NoYXBlJiBzaGFwZSkgY29uc3QK
IH0KIAogQ1NTQmFzaWNTaGFwZVBhdGg6OkNTU0Jhc2ljU2hhcGVQYXRoKHN0ZDo6dW5pcXVlX3B0
cjxTVkdQYXRoQnl0ZVN0cmVhbT4mJiBwYXRoRGF0YSkKLSAgICA6IG1fYnl0ZVN0cmVhbShXVEY6
Om1vdmUocGF0aERhdGEpKQorICAgIDogbV9ieXRlU3RyZWFtKFdURk1vdmUocGF0aERhdGEpKQog
ewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQmFzaWNTaGFwZXMuaCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCYXNpY1NoYXBlcy5oCmluZGV4IGM4Y2QzMjczOTQxYzNk
MzMyYTI0ZTIwNjZlZTYzYjk0ZTM3ODgzMjEuLjgzNzNlOWRmYWNiYjJmYTVlN2Q1YTQyODlkZGJj
MzY5NzFlY2JlN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCYXNpY1NoYXBl
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCYXNpY1NoYXBlcy5oCkBAIC0yMTQsNyAr
MjE0LDcgQEAgY2xhc3MgQ1NTQmFzaWNTaGFwZVBhdGggZmluYWwgOiBwdWJsaWMgQ1NTQmFzaWNT
aGFwZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxDU1NCYXNpY1NoYXBlUGF0aD4gY3JlYXRl
KHN0ZDo6dW5pcXVlX3B0cjxTVkdQYXRoQnl0ZVN0cmVhbT4mJiBwYXRoRGF0YSkKICAgICB7Ci0g
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENTU0Jhc2ljU2hhcGVQYXRoKFdURjo6bW92ZShw
YXRoRGF0YSkpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTQmFzaWNTaGFwZVBh
dGgoV1RGTW92ZShwYXRoRGF0YSkpKTsKICAgICB9CiAKICAgICBjb25zdCBTVkdQYXRoQnl0ZVN0
cmVhbSYgcGF0aERhdGEoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0JvcmRlckltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCb3JkZXJJbWFnZS5jcHAK
aW5kZXggYmU3NDMyY2Q4YWVkYTBkNjczMmE5M2Y4N2EwZjJiMDIzNTk3MzdjMy4uMzgyMzQ1NTNm
YjA1MzJjM2FhOTE4OWU2MjY1ZjYxZWMzMjg2ZWViMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0JvcmRlckltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQm9y
ZGVySW1hZ2UuY3BwCkBAIC0zOSw3ICszOSw3IEBAIFJlZjxDU1NWYWx1ZUxpc3Q+IGNyZWF0ZUJv
cmRlckltYWdlVmFsdWUoUGFzc1JlZlB0cjxDU1NWYWx1ZT4gaW1hZ2UsIFBhc3NSZWZQdHI8CiAg
ICAgICAgIGlmIChvdXRzZXQpCiAgICAgICAgICAgICBsaXN0U2xhc2guZ2V0KCkuYXBwZW5kKCpv
dXRzZXQpOwogCi0gICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5kKFdURjo6bW92ZShsaXN0U2xhc2gp
KTsKKyAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoV1RGTW92ZShsaXN0U2xhc2gpKTsKICAgICB9
IGVsc2UgaWYgKGltYWdlU2xpY2UpCiAgICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5kKCppbWFnZVNs
aWNlKTsKICAgICBpZiAocmVwZWF0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0NhbGN1bGF0aW9uVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbGN1bGF0aW9u
VmFsdWUuY3BwCmluZGV4IDgwOGVjYTJkMzQ3N2UzMzAwYTFlMmU1ZmZiYTM4Y2IxM2M4N2I3YzYu
LjI0ZmY4MThjMGJhNzBkYzM0NWM1MWM1ZTk4ZmQzMzNmMjE4ZDg4Y2YgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5jcHAKQEAgLTQzNCw3ICs0MzQsNyBAQCBwcml2
YXRlOgogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q2FsY0V4cHJlc3Npb25Ob2RlPiByaWdodCht
X3JpZ2h0U2lkZS0+Y3JlYXRlQ2FsY0V4cHJlc3Npb24oY29udmVyc2lvbkRhdGEpKTsKICAgICAg
ICAgaWYgKCFyaWdodCkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxjRXhwcmVzc2lvbkJpbmFyeU9wZXJhdGlvbj4oV1RGOjpt
b3ZlKGxlZnQpLCBXVEY6Om1vdmUocmlnaHQpLCBtX29wZXJhdG9yKTsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8Q2FsY0V4cHJlc3Npb25CaW5hcnlPcGVyYXRpb24+KFdURk1vdmUo
bGVmdCksIFdURk1vdmUocmlnaHQpLCBtX29wZXJhdG9yKTsKICAgICB9CiAKICAgICB2aXJ0dWFs
IGRvdWJsZSBkb3VibGVWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0NhbGN1bGF0aW9uVmFsdWUuaAppbmRleCAxNjliNGE1MWQwNWUxZDEwNzc3NTc2NTc5YmJkZTAy
NGIzZjUzZDg1Li4zMGI0ODFkMTFmMzg3ZGQ3MDVlMmNjMmQ4Y2FiZjVlMzhiMTZjMzJmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmgKQEAgLTExMyw3ICsxMTMsNyBA
QCBwcml2YXRlOgogCiBpbmxpbmUgQ1NTQ2FsY1ZhbHVlOjpDU1NDYWxjVmFsdWUoUmVmPENTU0Nh
bGNFeHByZXNzaW9uTm9kZT4mJiBleHByZXNzaW9uLCBib29sIHNob3VsZENsYW1wVG9Ob25OZWdh
dGl2ZSkKICAgICA6IENTU1ZhbHVlKENhbGN1bGF0aW9uQ2xhc3MpCi0gICAgLCBtX2V4cHJlc3Np
b24oV1RGOjptb3ZlKGV4cHJlc3Npb24pKQorICAgICwgbV9leHByZXNzaW9uKFdURk1vdmUoZXhw
cmVzc2lvbikpCiAgICAgLCBtX3Nob3VsZENsYW1wVG9Ob25OZWdhdGl2ZShzaG91bGRDbGFtcFRv
Tm9uTmVnYXRpdmUpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29t
cHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRl
ZFN0eWxlRGVjbGFyYXRpb24uY3BwCmluZGV4IDQyYTQ0MGZjYjdlMmFkMTUwNDAwY2VmYzhjNTk0
MmZlYmM4ZWVkMGMuLjZiMWRhOTkyMWRlYzhjOWVkYTBjODk5YTc2Njc1ZGFiZjM5YzY0MDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24u
Y3BwCkBAIC01NDMsNyArNTQzLDcgQEAgc3RhdGljIFJlZjxDU1NCb3JkZXJJbWFnZVNsaWNlVmFs
dWU+IHZhbHVlRm9yTmluZVBpZWNlSW1hZ2VTbGljZShjb25zdCBOaW5lUGllY2UKICAgICBxdWFk
LT5zZXRCb3R0b20oYm90dG9tLnJlbGVhc2UoKSk7CiAgICAgcXVhZC0+c2V0TGVmdChsZWZ0LnJl
bGVhc2UoKSk7CiAKLSAgICByZXR1cm4gQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlOjpjcmVhdGUo
Q1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVWYWx1ZShXVEY6Om1vdmUocXVhZCkpLCBp
bWFnZS5maWxsKCkpOworICAgIHJldHVybiBDU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWU6OmNyZWF0
ZShDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZVZhbHVlKFdURk1vdmUocXVhZCkpLCBp
bWFnZS5maWxsKCkpOwogfQogCiBzdGF0aWMgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiB2YWx1ZUZv
ck5pbmVQaWVjZUltYWdlUXVhZChjb25zdCBMZW5ndGhCb3gmIGJveCkKQEAgLTU5Niw3ICs1OTYs
NyBAQCBzdGF0aWMgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiB2YWx1ZUZvck5pbmVQaWVjZUltYWdl
UXVhZChjb25zdCBMZW5ndGhCb3gmIGJveCkKICAgICBxdWFkLT5zZXRCb3R0b20oYm90dG9tKTsK
ICAgICBxdWFkLT5zZXRMZWZ0KGxlZnQpOwogCi0gICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVh
dGVWYWx1ZShXVEY6Om1vdmUocXVhZCkpOworICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRl
VmFsdWUoV1RGTW92ZShxdWFkKSk7CiB9CiAKIHN0YXRpYyBSZWY8Q1NTVmFsdWU+IHZhbHVlRm9y
TmluZVBpZWNlSW1hZ2VSZXBlYXQoY29uc3QgTmluZVBpZWNlSW1hZ2UmIGltYWdlKQpAQCAtODg0
LDcgKzg4NCw3IEBAIHN0YXRpYyBSZWY8Q1NTVmFsdWU+IGNvbXB1dGVkVHJhbnNmb3JtKFJlbmRl
ck9iamVjdCogcmVuZGVyZXIsIGNvbnN0IFJlbmRlclN0eWxlCiAgICAgLy8gRklYTUU6IE5lZWQg
dG8gcHJpbnQgb3V0IGluZGl2aWR1YWwgZnVuY3Rpb25zIChodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjM5MjQpCiAgICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVMaXN0Ojpj
cmVhdGVTcGFjZVNlcGFyYXRlZCgpOwogICAgIGxpc3QuZ2V0KCkuYXBwZW5kKG1hdHJpeFRyYW5z
Zm9ybVZhbHVlKHRyYW5zZm9ybSwgc3R5bGUpKTsKLSAgICByZXR1cm4gV1RGOjptb3ZlKGxpc3Qp
OworICAgIHJldHVybiBXVEZNb3ZlKGxpc3QpOwogfQogCiBzdGF0aWMgaW5saW5lIFJlZjxDU1NQ
cmltaXRpdmVWYWx1ZT4gYWRqdXN0TGVuZ3RoRm9yWm9vbShkb3VibGUgbGVuZ3RoLCBjb25zdCBS
ZW5kZXJTdHlsZSYgc3R5bGUsIEFkanVzdFBpeGVsVmFsdWVzRm9yQ29tcHV0ZWRTdHlsZSBhZGp1
c3QpCkBAIC05MTMsNyArOTEzLDcgQEAgUmVmPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFj
dG9yOjp2YWx1ZUZvclNoYWRvdyhjb25zdCBTaGFkb3dEYXRhKiBzaGFkb3csIEMKICAgICAgICAg
UmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjb2xvciA9IGNzc1ZhbHVlUG9vbC5jcmVhdGVDb2xv
clZhbHVlKGN1cnJTaGFkb3dEYXRhLT5jb2xvcigpLnJnYigpKTsKICAgICAgICAgbGlzdC5nZXQo
KS5wcmVwZW5kKENTU1NoYWRvd1ZhbHVlOjpjcmVhdGUoeC5yZWxlYXNlKCksIHkucmVsZWFzZSgp
LCBibHVyLnJlbGVhc2UoKSwgc3ByZWFkLnJlbGVhc2UoKSwgc3R5bGUucmVsZWFzZSgpLCBjb2xv
ci5yZWxlYXNlKCkpKTsKICAgICB9Ci0gICAgcmV0dXJuIFdURjo6bW92ZShsaXN0KTsKKyAgICBy
ZXR1cm4gV1RGTW92ZShsaXN0KTsKIH0KIAogUmVmPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0
cmFjdG9yOjp2YWx1ZUZvckZpbHRlcihjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0IEZp
bHRlck9wZXJhdGlvbnMmIGZpbHRlck9wZXJhdGlvbnMsIEFkanVzdFBpeGVsVmFsdWVzRm9yQ29t
cHV0ZWRTdHlsZSBhZGp1c3QpCkBAIC0xMDA1LDcgKzEwMDUsNyBAQCBSZWY8Q1NTVmFsdWU+IENv
bXB1dGVkU3R5bGVFeHRyYWN0b3I6OnZhbHVlRm9yRmlsdGVyKGNvbnN0IFJlbmRlclN0eWxlJiBz
dHlsZSwgYwogICAgICAgICBsaXN0LmdldCgpLmFwcGVuZChmaWx0ZXJWYWx1ZS5yZWxlYXNlTm9u
TnVsbCgpKTsKICAgICB9CiAKLSAgICByZXR1cm4gV1RGOjptb3ZlKGxpc3QpOworICAgIHJldHVy
biBXVEZNb3ZlKGxpc3QpOwogfQogCiAjaWYgRU5BQkxFKENTU19HUklEX0xBWU9VVCkKQEAgLTEw
OTUsNyArMTA5NSw3IEBAIHN0YXRpYyBSZWY8Q1NTVmFsdWU+IHZhbHVlRm9yR3JpZFRyYWNrTGlz
dChHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24gZGlyZWN0aW9uLCBSCiAKICAgICAvLyBUaG9zZSBh
cmUgdGhlIHRyYWlsaW5nIDxpZGVudD4qIGFsbG93ZWQgaW4gdGhlIHN5bnRheC4KICAgICBhZGRW
YWx1ZXNGb3JOYW1lZEdyaWRMaW5lc0F0SW5kZXgob3JkZXJlZE5hbWVkR3JpZExpbmVzLCBpbnNl
cnRpb25JbmRleCwgbGlzdC5nZXQoKSk7Ci0gICAgcmV0dXJuIFdURjo6bW92ZShsaXN0KTsKKyAg
ICByZXR1cm4gV1RGTW92ZShsaXN0KTsKIH0KIAogc3RhdGljIFJlZjxDU1NWYWx1ZT4gdmFsdWVG
b3JHcmlkUG9zaXRpb24oY29uc3QgR3JpZFBvc2l0aW9uJiBwb3NpdGlvbikKQEAgLTExMTYsNyAr
MTExNiw3IEBAIHN0YXRpYyBSZWY8Q1NTVmFsdWU+IHZhbHVlRm9yR3JpZFBvc2l0aW9uKGNvbnN0
IEdyaWRQb3NpdGlvbiYgcG9zaXRpb24pCiAKICAgICBpZiAoIXBvc2l0aW9uLm5hbWVkR3JpZExp
bmUoKS5pc051bGwoKSkKICAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoY3NzVmFsdWVQb29sLmNy
ZWF0ZVZhbHVlKHBvc2l0aW9uLm5hbWVkR3JpZExpbmUoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U19TVFJJTkcpKTsKLSAgICByZXR1cm4gV1RGOjptb3ZlKGxpc3QpOworICAgIHJldHVybiBXVEZN
b3ZlKGxpc3QpOwogfQogI2VuZGlmCiAKQEAgLTExNjEsNyArMTE2MSw3IEBAIHN0YXRpYyBSZWY8
Q1NTVmFsdWU+IHNjcm9sbFNuYXBQb2ludHMoUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBTY3Jv
bGxTbmFwUG9pbnRzCiAgICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5kKHpvb21BZGp1c3RlZFBpeGVs
VmFsdWVGb3JMZW5ndGgocG9pbnQsIHN0eWxlKSk7CiAgICAgaWYgKHBvaW50cy0+aGFzUmVwZWF0
KQogICAgICAgICBsaXN0LmdldCgpLmFwcGVuZChDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNy
ZWF0ZVZhbHVlKExlbmd0aFJlcGVhdDo6Y3JlYXRlKHpvb21BZGp1c3RlZFBpeGVsVmFsdWVGb3JM
ZW5ndGgocG9pbnRzLT5yZXBlYXRPZmZzZXQsIHN0eWxlKSkpKTsKLSAgICByZXR1cm4gV1RGOjpt
b3ZlKGxpc3QpOworICAgIHJldHVybiBXVEZNb3ZlKGxpc3QpOwogfQogCiBzdGF0aWMgUmVmPENT
U1ZhbHVlPiBzY3JvbGxTbmFwQ29vcmRpbmF0ZXMoUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBW
ZWN0b3I8TGVuZ3RoU2l6ZT4mIGNvb3JkaW5hdGVzKQpAQCAtMTE3NSwxMCArMTE3NSwxMCBAQCBz
dGF0aWMgUmVmPENTU1ZhbHVlPiBzY3JvbGxTbmFwQ29vcmRpbmF0ZXMoUmVuZGVyU3R5bGUmIHN0
eWxlLCBjb25zdCBWZWN0b3I8TGVuZwogICAgICAgICBhdXRvIHBhaXIgPSBDU1NWYWx1ZUxpc3Q6
OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CiAgICAgICAgIHBhaXIuZ2V0KCkuYXBwZW5kKHpvb21B
ZGp1c3RlZFBpeGVsVmFsdWVGb3JMZW5ndGgoY29vcmRpbmF0ZS53aWR0aCgpLCBzdHlsZSkpOwog
ICAgICAgICBwYWlyLmdldCgpLmFwcGVuZCh6b29tQWRqdXN0ZWRQaXhlbFZhbHVlRm9yTGVuZ3Ro
KGNvb3JkaW5hdGUuaGVpZ2h0KCksIHN0eWxlKSk7Ci0gICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5k
KFdURjo6bW92ZShwYWlyKSk7CisgICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5kKFdURk1vdmUocGFp
cikpOwogICAgIH0KIAotICAgIHJldHVybiBXVEY6Om1vdmUobGlzdCk7CisgICAgcmV0dXJuIFdU
Rk1vdmUobGlzdCk7CiB9CiAjZW5kaWYKIApAQCAtMTIwNyw3ICsxMjA3LDcgQEAgc3RhdGljIFJl
ZjxDU1NWYWx1ZT4gZ2V0V2lsbENoYW5nZVByb3BlcnR5VmFsdWUoY29uc3QgV2lsbENoYW5nZURh
dGEqIHdpbGxDaGFuZ2UKICAgICAgICAgfQogICAgIH0KIAotICAgIHJldHVybiBXVEY6Om1vdmUo
bGlzdCk7CisgICAgcmV0dXJuIFdURk1vdmUobGlzdCk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgdm9p
ZCBhcHBlbmRMaWdhdHVyZXNWYWx1ZShDU1NWYWx1ZUxpc3QmIGxpc3QsIEZvbnRWYXJpYW50TGln
YXR1cmVzIHZhbHVlLCBDU1NWYWx1ZUlEIHllc1ZhbHVlLCBDU1NWYWx1ZUlEIG5vVmFsdWUpCkBA
IC0xMjM4LDcgKzEyMzgsNyBAQCBzdGF0aWMgUmVmPENTU1ZhbHVlPiBmb250VmFyaWFudExpZ2F0
dXJlc1Byb3BlcnR5VmFsdWUoRm9udFZhcmlhbnRMaWdhdHVyZXMgY29tbQogICAgIGFwcGVuZExp
Z2F0dXJlc1ZhbHVlKHZhbHVlTGlzdCwgZGlzY3JldGlvbmFyeSwgQ1NTVmFsdWVEaXNjcmV0aW9u
YXJ5TGlnYXR1cmVzLCBDU1NWYWx1ZU5vRGlzY3JldGlvbmFyeUxpZ2F0dXJlcyk7CiAgICAgYXBw
ZW5kTGlnYXR1cmVzVmFsdWUodmFsdWVMaXN0LCBoaXN0b3JpY2FsLCBDU1NWYWx1ZUhpc3Rvcmlj
YWxMaWdhdHVyZXMsIENTU1ZhbHVlTm9IaXN0b3JpY2FsTGlnYXR1cmVzKTsKICAgICBhcHBlbmRM
aWdhdHVyZXNWYWx1ZSh2YWx1ZUxpc3QsIGNvbnRleHR1YWxBbHRlcm5hdGVzLCBDU1NWYWx1ZUNv
bnRleHR1YWwsIENTU1ZhbHVlTm9Db250ZXh0dWFsKTsKLSAgICByZXR1cm4gV1RGOjptb3ZlKHZh
bHVlTGlzdCk7CisgICAgcmV0dXJuIFdURk1vdmUodmFsdWVMaXN0KTsKIH0KIAogc3RhdGljIFJl
ZjxDU1NWYWx1ZT4gZm9udFZhcmlhbnRQb3NpdGlvblByb3BlcnR5VmFsdWUoRm9udFZhcmlhbnRQ
b3NpdGlvbiBwb3NpdGlvbikKQEAgLTEzMzIsNyArMTMzMiw3IEBAIHN0YXRpYyBSZWY8Q1NTVmFs
dWU+IGZvbnRWYXJpYW50TnVtZXJpY1Byb3BlcnR5VmFsdWUoRm9udFZhcmlhbnROdW1lcmljRmln
dXJlIGZpCiAgICAgaWYgKHNsYXNoZWRaZXJvID09IEZvbnRWYXJpYW50TnVtZXJpY1NsYXNoZWRa
ZXJvOjpZZXMpCiAgICAgICAgIHZhbHVlTGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVJ
ZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVTbGFzaGVkWmVybykpOwogCi0gICAgcmV0dXJuIFdURjo6
bW92ZSh2YWx1ZUxpc3QpOworICAgIHJldHVybiBXVEZNb3ZlKHZhbHVlTGlzdCk7CiB9CiAKIHN0
YXRpYyBSZWY8Q1NTVmFsdWU+IGZvbnRWYXJpYW50QWx0ZXJuYXRlc1Byb3BlcnR5VmFsdWUoRm9u
dFZhcmlhbnRBbHRlcm5hdGVzIGFsdGVybmF0ZXMpCkBAIC0xMzkzLDcgKzEzOTMsNyBAQCBzdGF0
aWMgUmVmPENTU1ZhbHVlPiBmb250VmFyaWFudEVhc3RBc2lhblByb3BlcnR5VmFsdWUoRm9udFZh
cmlhbnRFYXN0QXNpYW5WYXJpYQogICAgIGlmIChydWJ5ID09IEZvbnRWYXJpYW50RWFzdEFzaWFu
UnVieTo6WWVzKQogICAgICAgICB2YWx1ZUxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRl
SWRlbnRpZmllclZhbHVlKENTU1ZhbHVlUnVieSkpOwogCi0gICAgcmV0dXJuIFdURjo6bW92ZSh2
YWx1ZUxpc3QpOworICAgIHJldHVybiBXVEZNb3ZlKHZhbHVlTGlzdCk7CiB9CiAKIHN0YXRpYyBS
ZWY8Q1NTVmFsdWVMaXN0PiBnZXREZWxheVZhbHVlKGNvbnN0IEFuaW1hdGlvbkxpc3QqIGFuaW1M
aXN0KQpAQCAtMTcxMCw3ICsxNzEwLDcgQEAgc3RhdGljIFJlZjxDU1NWYWx1ZT4gZmlsbFJlcGVh
dFRvQ1NTVmFsdWUoRUZpbGxSZXBlYXQgeFJlcGVhdCwgRUZpbGxSZXBlYXQgeVJlcGUKICAgICBh
dXRvIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CiAgICAgbGlz
dC5nZXQoKS5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKHhSZXBlYXQpKTsKICAgICBs
aXN0LmdldCgpLmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoeVJlcGVhdCkpOwotICAg
IHJldHVybiBXVEY6Om1vdmUobGlzdCk7CisgICAgcmV0dXJuIFdURk1vdmUobGlzdCk7CiB9CiAK
IHN0YXRpYyBSZWY8Q1NTVmFsdWU+IGZpbGxTb3VyY2VUeXBlVG9DU1NWYWx1ZShFTWFza1NvdXJj
ZVR5cGUgdHlwZSkKQEAgLTE3MzgsNyArMTczOCw3IEBAIHN0YXRpYyBSZWY8Q1NTVmFsdWU+IGZp
bGxTaXplVG9DU1NWYWx1ZShjb25zdCBGaWxsU2l6ZSYgZmlsbFNpemUsIGNvbnN0IFJlbmRlclN0
CiAgICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOwog
ICAgIGxpc3QuZ2V0KCkuYXBwZW5kKHpvb21BZGp1c3RlZFBpeGVsVmFsdWVGb3JMZW5ndGgoZmls
bFNpemUuc2l6ZS53aWR0aCgpLCBzdHlsZSkpOwogICAgIGxpc3QuZ2V0KCkuYXBwZW5kKHpvb21B
ZGp1c3RlZFBpeGVsVmFsdWVGb3JMZW5ndGgoZmlsbFNpemUuc2l6ZS5oZWlnaHQoKSwgc3R5bGUp
KTsKLSAgICByZXR1cm4gV1RGOjptb3ZlKGxpc3QpOworICAgIHJldHVybiBXVEZNb3ZlKGxpc3Qp
OwogfQogCiBzdGF0aWMgUmVmPENTU1ZhbHVlPiBhbHRUZXh0VG9DU1NWYWx1ZShjb25zdCBSZW5k
ZXJTdHlsZSogc3R5bGUpCkBAIC0yMDA3LDcgKzIwMDcsNyBAQCBzdGF0aWMgUmVmPENTU1ZhbHVl
PiBmb250VmFyaWFudEZyb21TdHlsZShSZW5kZXJTdHlsZSogc3R5bGUpCiAgICAgICAgIGJyZWFr
OwogICAgIH0KIAotICAgIHJldHVybiBXVEY6Om1vdmUobGlzdCk7CisgICAgcmV0dXJuIFdURk1v
dmUobGlzdCk7CiB9CiAKIHN0YXRpYyBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IGZvbnRXZWlnaHRG
cm9tU3R5bGUoUmVuZGVyU3R5bGUqIHN0eWxlKQpAQCAtMjYzNCwxMCArMjYzNCwxMCBAQCBSZWZQ
dHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnByb3BlcnR5VmFsdWUoQ1NTUHJv
cGVydHlJRCBwcm9wZXJ0eUlELAogICAgICAgICAgICAgfQogICAgICAgICAgICAgYXV0byB2YWx1
ZSA9IGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShzdHlsZS0+Y3Vyc29yKCkpOwogICAgICAgICAg
ICAgaWYgKGxpc3QpIHsKLSAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoV1RGOjptb3ZlKHZh
bHVlKSk7CisgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKFdURk1vdmUodmFsdWUpKTsKICAg
ICAgICAgICAgICAgICByZXR1cm4gbGlzdDsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJl
dHVybiBXVEY6Om1vdmUodmFsdWUpOworICAgICAgICAgICAgcmV0dXJuIFdURk1vdmUodmFsdWUp
OwogICAgICAgICB9CiAjaWYgRU5BQkxFKENVUlNPUl9WSVNJQklMSVRZKQogICAgICAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0Q3Vyc29yVmlzaWJpbGl0eToKQEAgLTMxODUsNyArMzE4NSw3IEBA
IFJlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6cHJvcGVydHlWYWx1ZShD
U1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsCiAgICAgICAgICAgICAgICAgICAgIGZpcnN0UmVnaW9u
ID0gcmVnaW9uLmNvcHlSZWYoKTsKICAgICAgICAgICAgICAgICBwcmV2aW91c1JlZ2lvbiA9IHJl
Z2lvbi5wdHIoKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBv
b2wuY3JlYXRlVmFsdWUoV1RGOjptb3ZlKGZpcnN0UmVnaW9uKSk7CisgICAgICAgICAgICByZXR1
cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKFdURk1vdmUoZmlyc3RSZWdpb24pKTsKICAgICAg
ICAgfQogI2VuZGlmCiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlBbmltYXRpb25EZWxheToKQEAg
LTM0MDMsNyArMzQwMyw3IEBAIFJlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rv
cjo6cHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsCiAgICAgICAgICAgICBy
ZWN0LT5zZXRSaWdodChhdXRvT3Jab29tQWRqdXN0ZWRWYWx1ZShzdHlsZS0+Y2xpcCgpLnJpZ2h0
KCksICpzdHlsZSkpOwogICAgICAgICAgICAgcmVjdC0+c2V0Qm90dG9tKGF1dG9Pclpvb21BZGp1
c3RlZFZhbHVlKHN0eWxlLT5jbGlwKCkuYm90dG9tKCksICpzdHlsZSkpOwogICAgICAgICAgICAg
cmVjdC0+c2V0TGVmdChhdXRvT3Jab29tQWRqdXN0ZWRWYWx1ZShzdHlsZS0+Y2xpcCgpLmxlZnQo
KSwgKnN0eWxlKSk7Ci0gICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVl
KFdURjo6bW92ZShyZWN0KSk7CisgICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLmNyZWF0
ZVZhbHVlKFdURk1vdmUocmVjdCkpOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVy
dHlTcGVhazoKICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5
bGUtPnNwZWFrKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nyb3NzZmFk
ZVZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5jcHAKaW5k
ZXggMDczNTA4YjBhNjdkOWY1NDhmODA0ZjNmNDNhNTZhNWFiZTFiYTg3MC4uZmYwZTliYmRjNzk2
OGIyZjJjYWYxNzA4YzMyMDM5NTA1MjBkZDZlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Jv
c3NmYWRlVmFsdWUuY3BwCkBAIC0yMDAsNyArMjAwLDcgQEAgUmVmUHRyPENTU0Nyb3NzZmFkZVZh
bHVlPiBDU1NDcm9zc2ZhZGVWYWx1ZTo6YmxlbmQoY29uc3QgQ1NTQ3Jvc3NmYWRlVmFsdWUmIGZy
b20KICAgICBhdXRvIGZyb21JbWFnZVZhbHVlID0gQ1NTSW1hZ2VWYWx1ZTo6Y3JlYXRlKG1fY2Fj
aGVkRnJvbUltYWdlLT51cmwoKSwgZnJvbVN0eWxlZEltYWdlLmdldCgpKTsKICAgICBhdXRvIHRv
SW1hZ2VWYWx1ZSA9IENTU0ltYWdlVmFsdWU6OmNyZWF0ZShtX2NhY2hlZFRvSW1hZ2UtPnVybCgp
LCB0b1N0eWxlZEltYWdlLmdldCgpKTsKIAotICAgIFJlZlB0cjxDU1NDcm9zc2ZhZGVWYWx1ZT4g
Y3Jvc3NmYWRlVmFsdWUgPSBDU1NDcm9zc2ZhZGVWYWx1ZTo6Y3JlYXRlKFdURjo6bW92ZShmcm9t
SW1hZ2VWYWx1ZSksIFdURjo6bW92ZSh0b0ltYWdlVmFsdWUpKTsKKyAgICBSZWZQdHI8Q1NTQ3Jv
c3NmYWRlVmFsdWU+IGNyb3NzZmFkZVZhbHVlID0gQ1NTQ3Jvc3NmYWRlVmFsdWU6OmNyZWF0ZShX
VEZNb3ZlKGZyb21JbWFnZVZhbHVlKSwgV1RGTW92ZSh0b0ltYWdlVmFsdWUpKTsKIAogICAgIGRv
dWJsZSBmcm9tUGVyY2VudGFnZSA9IGZyb20ubV9wZXJjZW50YWdlVmFsdWUtPmdldERvdWJsZVZh
bHVlKCk7CiAgICAgaWYgKGZyb20ubV9wZXJjZW50YWdlVmFsdWUtPmlzUGVyY2VudGFnZSgpKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0N1cnNvckltYWdlVmFsdWUuY3BwIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0N1cnNvckltYWdlVmFsdWUuY3BwCmluZGV4IDc2NjdmOTQ2
OTUzYTA0N2Q2MmNhZDI1NzE5YzA0MmNjMWY0YzY2ZWQuLjdmODI3NzMxYTZlNTZmMTY2YTIwYjg5
ODM4Mjk0N2RjNTVmNDE0OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDdXJz
b3JJbWFnZVZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Vyc29ySW1hZ2VW
YWx1ZS5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgc3RhdGljIGlubGluZSBTVkdDdXJzb3JFbGVtZW50
KiByZXNvdXJjZVJlZmVyZW5jZWRCeUN1cnNvckVsZW1lbnQoY29uc3QgU3RyaW5nJgogCiBDU1ND
dXJzb3JJbWFnZVZhbHVlOjpDU1NDdXJzb3JJbWFnZVZhbHVlKFJlZjxDU1NWYWx1ZT4mJiBpbWFn
ZVZhbHVlLCBib29sIGhhc0hvdFNwb3QsIGNvbnN0IEludFBvaW50JiBob3RTcG90KQogICAgIDog
Q1NTVmFsdWUoQ3Vyc29ySW1hZ2VDbGFzcykKLSAgICAsIG1faW1hZ2VWYWx1ZShXVEY6Om1vdmUo
aW1hZ2VWYWx1ZSkpCisgICAgLCBtX2ltYWdlVmFsdWUoV1RGTW92ZShpbWFnZVZhbHVlKSkKICAg
ICAsIG1faGFzSG90U3BvdChoYXNIb3RTcG90KQogICAgICwgbV9ob3RTcG90KGhvdFNwb3QpCiAg
ICAgLCBtX2FjY2Vzc2VkSW1hZ2UoZmFsc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0N1cnNvcklt
YWdlVmFsdWUuaAppbmRleCBmOTNkZTE1OGIyOWJlYmVlZmM4YjkzMmM2MmU0Y2VlMDlhN2U4NmFh
Li5jYzBjYjFlNmViMDBhNWUxNWY0ZDA1YTY2NDdjYzEyY2I4ZjAzZDU4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NDdXJzb3JJbWFnZVZhbHVlLmgKQEAgLTM1LDcgKzM1LDcgQEAgY2xhc3MgQ1NT
Q3Vyc29ySW1hZ2VWYWx1ZSA6IHB1YmxpYyBDU1NWYWx1ZSB7CiBwdWJsaWM6CiAgICAgc3RhdGlj
IFJlZjxDU1NDdXJzb3JJbWFnZVZhbHVlPiBjcmVhdGUoUmVmPENTU1ZhbHVlPiYmIGltYWdlVmFs
dWUsIGJvb2wgaGFzSG90U3BvdCwgY29uc3QgSW50UG9pbnQmIGhvdFNwb3QpCiAgICAgewotICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NDdXJzb3JJbWFnZVZhbHVlKFdURjo6bW92ZShp
bWFnZVZhbHVlKSwgaGFzSG90U3BvdCwgaG90U3BvdCkpOworICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBDU1NDdXJzb3JJbWFnZVZhbHVlKFdURk1vdmUoaW1hZ2VWYWx1ZSksIGhhc0hvdFNw
b3QsIGhvdFNwb3QpKTsKICAgICB9CiAKICAgICB+Q1NTQ3Vyc29ySW1hZ2VWYWx1ZSgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuY3BwIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuY3BwCmluZGV4IDIzMWEzMmQ2YWE1
MGIzNTFjNWEzYTA5NjI4ZGI2OWE1MDcwOTRlNmQuLmFkZGY0YmFmZmUyM2FmODNiYzU5NzFkYTk2
NDA2MTU0NjEzNzJiMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGaWx0ZXJJ
bWFnZVZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRmlsdGVySW1hZ2VWYWx1
ZS5jcHAKQEAgLTEyOSw3ICsxMjksNyBAQCBSZWZQdHI8SW1hZ2U+IENTU0ZpbHRlckltYWdlVmFs
dWU6OmltYWdlKFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyLCBjb25zdCBGbG9hdFNpegogICAgIHRl
eHR1cmUtPmNvbnRleHQoKS5kcmF3SW1hZ2UoKmltYWdlLCBpbWFnZVJlY3QpOwogCiAgICAgUmVm
UHRyPEZpbHRlckVmZmVjdFJlbmRlcmVyPiBmaWx0ZXJSZW5kZXJlciA9IEZpbHRlckVmZmVjdFJl
bmRlcmVyOjpjcmVhdGUoKTsKLSAgICBmaWx0ZXJSZW5kZXJlci0+c2V0U291cmNlSW1hZ2UoV1RG
Ojptb3ZlKHRleHR1cmUpKTsKKyAgICBmaWx0ZXJSZW5kZXJlci0+c2V0U291cmNlSW1hZ2UoV1RG
TW92ZSh0ZXh0dXJlKSk7CiAgICAgZmlsdGVyUmVuZGVyZXItPnNldFNvdXJjZUltYWdlUmVjdChp
bWFnZVJlY3QpOwogICAgIGZpbHRlclJlbmRlcmVyLT5zZXRGaWx0ZXJSZWdpb24oaW1hZ2VSZWN0
KTsKICAgICBpZiAoIWZpbHRlclJlbmRlcmVyLT5idWlsZChyZW5kZXJlciwgbV9maWx0ZXJPcGVy
YXRpb25zLCBGaWx0ZXJGdW5jdGlvbikpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTRmlsdGVySW1hZ2VWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdl
VmFsdWUuaAppbmRleCAxMjk3MjRmZGUzNWU1ZGNhYWQ3NTcyYjg1MGViYTRlMDkwMGFjYTJiLi5k
MDlhOWY3MTRmZDg2YjM5N2YwY2Y1ODEzZmM0NDI0MTc2NTVlNjdmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTRmlsdGVySW1hZ2VWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgY2xhc3MgQ1NTRmls
dGVySW1hZ2VWYWx1ZSA6IHB1YmxpYyBDU1NJbWFnZUdlbmVyYXRvclZhbHVlIHsKIHB1YmxpYzoK
ICAgICBzdGF0aWMgUmVmPENTU0ZpbHRlckltYWdlVmFsdWU+IGNyZWF0ZShSZWY8Q1NTVmFsdWU+
JiYgaW1hZ2VWYWx1ZSwgUmVmPENTU1ZhbHVlPiYmIGZpbHRlclZhbHVlKQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTRmlsdGVySW1hZ2VWYWx1ZShXVEY6Om1vdmUoaW1h
Z2VWYWx1ZSksIFdURjo6bW92ZShmaWx0ZXJWYWx1ZSkpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgQ1NTRmlsdGVySW1hZ2VWYWx1ZShXVEZNb3ZlKGltYWdlVmFsdWUpLCBXVEZNb3Zl
KGZpbHRlclZhbHVlKSkpOwogICAgIH0KIAogICAgIH5DU1NGaWx0ZXJJbWFnZVZhbHVlKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0ZvbnRGYWNlLmNwcAppbmRleCBmYmFhZWVkNjk3MTAzNzdhNWIzNWVjY2Zm
ZTU3YWFmN2Y3NDAzM2QyLi42Nzg1NmVjNWI5ZjAwZTE3NGJkMzA4MWU1Y2I1YmExNDVkOTkyOGRl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5jcHAKQEAgLTcwLDcgKzcwLDcgQEAgdm9pZCBD
U1NGb250RmFjZTo6cmVtb3ZlZEZyb21TZWdtZW50ZWRGb250RmFjZShDU1NTZWdtZW50ZWRGb250
RmFjZSogc2VnbWVudGVkRm8KIHZvaWQgQ1NTRm9udEZhY2U6OmFkZFNvdXJjZShzdGQ6OnVuaXF1
ZV9wdHI8Q1NTRm9udEZhY2VTb3VyY2U+IHNvdXJjZSkKIHsKICAgICBzb3VyY2UtPnNldEZvbnRG
YWNlKHRoaXMpOwotICAgIG1fc291cmNlcy5hcHBlbmQoV1RGOjptb3ZlKHNvdXJjZSkpOworICAg
IG1fc291cmNlcy5hcHBlbmQoV1RGTW92ZShzb3VyY2UpKTsKIH0KIAogdm9pZCBDU1NGb250RmFj
ZTo6Zm9udExvYWRlZChDU1NGb250RmFjZVNvdXJjZSogc291cmNlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9u
dEZhY2UuaAppbmRleCAxOWNiNzllMTYwNDliYzE2OTgwYzg5Y2RlMDNiMjNjYmZmMmFjZDljLi4x
ZDcyNTlmYzM3ODE3MDZiZGMxNjNkYjI4YTE0YjZmMTRiYzJhYjA2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Rm9udEZhY2UuaApAQCAtNDUsNyArNDUsNyBAQCBjbGFzcyBGb250OwogCiBjbGFzcyBDU1NGb250
RmFjZSA6IHB1YmxpYyBSZWZDb3VudGVkPENTU0ZvbnRGYWNlPiB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFJlZjxDU1NGb250RmFjZT4gY3JlYXRlKEZvbnRUcmFpdHNNYXNrIHRyYWl0c01hc2ssIFJl
ZlB0cjxDU1NGb250RmFjZVJ1bGU+JiYgcnVsZSwgYm9vbCBpc0xvY2FsRmFsbGJhY2sgPSBmYWxz
ZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NGb250RmFjZSh0cmFpdHNNYXNrLCBXVEY6Om1v
dmUocnVsZSksIGlzTG9jYWxGYWxsYmFjaykpOyB9CisgICAgc3RhdGljIFJlZjxDU1NGb250RmFj
ZT4gY3JlYXRlKEZvbnRUcmFpdHNNYXNrIHRyYWl0c01hc2ssIFJlZlB0cjxDU1NGb250RmFjZVJ1
bGU+JiYgcnVsZSwgYm9vbCBpc0xvY2FsRmFsbGJhY2sgPSBmYWxzZSkgeyByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBDU1NGb250RmFjZSh0cmFpdHNNYXNrLCBXVEZNb3ZlKHJ1bGUpLCBpc0xvY2FsRmFs
bGJhY2spKTsgfQogCiAgICAgRm9udFRyYWl0c01hc2sgdHJhaXRzTWFzaygpIGNvbnN0IHsgcmV0
dXJuIG1fdHJhaXRzTWFzazsgfQogCkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IGFkZFJhbmdlKFVDaGFyMzIgZnJvbSwgVUNoYXIzMiB0bykgeyBtX3Jhbmdlcy5hcHBlbmQoVW5p
Y29kZVJhbmdlKGZyb20sIHRvKSk7IH0KICAgICBjb25zdCBWZWN0b3I8VW5pY29kZVJhbmdlPiYg
cmFuZ2VzKCkgY29uc3QgeyByZXR1cm4gbV9yYW5nZXM7IH0KIAotICAgIHZvaWQgaW5zZXJ0RmVh
dHVyZShGb250RmVhdHVyZSYmIGZlYXR1cmUpIHsgbV9mZWF0dXJlU2V0dGluZ3MuaW5zZXJ0KFdU
Rjo6bW92ZShmZWF0dXJlKSk7IH0KKyAgICB2b2lkIGluc2VydEZlYXR1cmUoRm9udEZlYXR1cmUm
JiBmZWF0dXJlKSB7IG1fZmVhdHVyZVNldHRpbmdzLmluc2VydChXVEZNb3ZlKGZlYXR1cmUpKTsg
fQogCiAgICAgdm9pZCBzZXRWYXJpYW50Q29tbW9uTGlnYXR1cmVzKEZvbnRWYXJpYW50TGlnYXR1
cmVzIGxpZ2F0dXJlcykgeyBtX3ZhcmlhbnRTZXR0aW5ncy5jb21tb25MaWdhdHVyZXMgPSBsaWdh
dHVyZXM7IH0KICAgICB2b2lkIHNldFZhcmlhbnREaXNjcmV0aW9uYXJ5TGlnYXR1cmVzKEZvbnRW
YXJpYW50TGlnYXR1cmVzIGxpZ2F0dXJlcykgeyBtX3ZhcmlhbnRTZXR0aW5ncy5kaXNjcmV0aW9u
YXJ5TGlnYXR1cmVzID0gbGlnYXR1cmVzOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNl
U291cmNlLmNwcAppbmRleCA1YjI1YTBiZmMxZDA1ZGI0ZWQ5ZjBmMDRhNWViNGZiZGU5MmQ3N2Ix
Li43ZWY5MmIzOTk2MDkyOTZlMTYwYzM5OGE4NDVmZDQ4MjEyZmM0NGU3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5jcHAKQEAgLTE2NSw3ICsxNjUsNyBAQCBSZWZQdHI8
Rm9udD4gQ1NTRm9udEZhY2VTb3VyY2U6OmZvbnQoY29uc3QgRm9udERlc2NyaXB0aW9uJiBmb250
RGVzY3JpcHRpb24sIGJvbwogCiAgICAgICAgIFJlZjxGb250PiBwbGFjZWhvbGRlckZvbnQgPSBG
b250Q2FjaGU6OnNpbmdsZXRvbigpLmxhc3RSZXNvcnRGYWxsYmFja0ZvbnQoZm9udERlc2NyaXB0
aW9uKTsKICAgICAgICAgUmVmPEZvbnQ+IHBsYWNlaG9sZGVyRm9udENvcHlJbkxvYWRpbmdTdGF0
ZSA9IEZvbnQ6OmNyZWF0ZShwbGFjZWhvbGRlckZvbnQtPnBsYXRmb3JtRGF0YSgpLCB0cnVlLCB0
cnVlKTsKLSAgICAgICAgcmV0dXJuIFdURjo6bW92ZShwbGFjZWhvbGRlckZvbnRDb3B5SW5Mb2Fk
aW5nU3RhdGUpOworICAgICAgICByZXR1cm4gV1RGTW92ZShwbGFjZWhvbGRlckZvbnRDb3B5SW5M
b2FkaW5nU3RhdGUpOwogICAgIH0KIAogICAgIHJldHVybiBmb250LnJlbGVhc2UoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmVhdHVyZVZhbHVlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NGb250RmVhdHVyZVZhbHVlLmNwcAppbmRleCAzZDg4YzU4MWFiYmVm
MTAyYmRjNDkzOGVkNzJlMjU5NzQwYjU1YTVhLi5jMTcwYjg5ZDJmMTM0ZjE2MTk2NDgxMzZjYWMw
MDM0NTE1ZDcxZDJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZlYXR1
cmVWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGZWF0dXJlVmFsdWUu
Y3BwCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogQ1NTRm9udEZlYXR1
cmVWYWx1ZTo6Q1NTRm9udEZlYXR1cmVWYWx1ZShGb250RmVhdHVyZVRhZyYmIHRhZywgaW50IHZh
bHVlKQogICAgIDogQ1NTVmFsdWUoRm9udEZlYXR1cmVDbGFzcykKLSAgICAsIG1fdGFnKFdURjo6
bW92ZSh0YWcpKQorICAgICwgbV90YWcoV1RGTW92ZSh0YWcpKQogICAgICwgbV92YWx1ZSh2YWx1
ZSkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmVhdHVyZVZh
bHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZlYXR1cmVWYWx1ZS5oCmluZGV4IGM5
N2MxYjg2YTcwYWY0YjNjN2VhNzlhOGE2MzgxMzdhZTNmZTFlYzIuLmE4ZmQ5NmZmMmUzNTM3MTRk
ZDU0Y2QyZjllOTA5MGE1MGU1MDYxMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NGb250RmVhdHVyZVZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGZWF0
dXJlVmFsdWUuaApAQCAtMzUsNyArMzUsNyBAQCBjbGFzcyBDU1NGb250RmVhdHVyZVZhbHVlIDog
cHVibGljIENTU1ZhbHVlIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPENTU0ZvbnRGZWF0dXJl
VmFsdWU+IGNyZWF0ZShGb250RmVhdHVyZVRhZyYmIHRhZywgaW50IHZhbHVlKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTRm9udEZlYXR1cmVWYWx1ZShXVEY6Om1vdmUo
dGFnKSwgdmFsdWUpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTRm9udEZlYXR1
cmVWYWx1ZShXVEZNb3ZlKHRhZyksIHZhbHVlKSk7CiAgICAgfQogCiAgICAgY29uc3QgRm9udEZl
YXR1cmVUYWcmIHRhZygpIGNvbnN0IHsgcmV0dXJuIG1fdGFnOyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NGb250U2VsZWN0b3IuY3BwCmluZGV4IDIzN2NhNDIyMzNkZTIwODg0YzBjZjc1M2U0NDAyMWNm
MDhjMDdmMmQuLmI5OTI4MDFiYjgxYjNlZjZkMGJhODc5NzdhYTAyMDUzNjhiZDI4YWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuY3BwCkBAIC0xNjIsNyArMTYyLDcgQEAgc3Rh
dGljIFJlZjxDU1NGb250RmFjZT4gY3JlYXRlRm9udEZhY2UoQ1NTVmFsdWVMaXN0JiBzcmNMaXN0
LCBGb250VHJhaXRzTWFzayB0cmEKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGZvbnRGYWNlUnVs
ZSk7CiAjZW5kaWYKLSAgICBSZWY8Q1NTRm9udEZhY2U+IGZvbnRGYWNlID0gQ1NTRm9udEZhY2U6
OmNyZWF0ZSh0cmFpdHNNYXNrLCBXVEY6Om1vdmUocnVsZSkpOworICAgIFJlZjxDU1NGb250RmFj
ZT4gZm9udEZhY2UgPSBDU1NGb250RmFjZTo6Y3JlYXRlKHRyYWl0c01hc2ssIFdURk1vdmUocnVs
ZSkpOwogCiAgICAgaW50IHNyY0xlbmd0aCA9IHNyY0xpc3QubGVuZ3RoKCk7CiAKQEAgLTE5Nyw3
ICsxOTcsNyBAQCBzdGF0aWMgUmVmPENTU0ZvbnRGYWNlPiBjcmVhdGVGb250RmFjZShDU1NWYWx1
ZUxpc3QmIHNyY0xpc3QsIEZvbnRUcmFpdHNNYXNrIHRyYQogI2lmIEVOQUJMRShTVkdfRk9OVFMp
CiAgICAgICAgICAgICBzb3VyY2UtPnNldFNWR0ZvbnRGYWNlRWxlbWVudChpdGVtLnN2Z0ZvbnRG
YWNlRWxlbWVudCgpKTsKICNlbmRpZgotICAgICAgICAgICAgZm9udEZhY2UtPmFkZFNvdXJjZShX
VEY6Om1vdmUoc291cmNlKSk7CisgICAgICAgICAgICBmb250RmFjZS0+YWRkU291cmNlKFdURk1v
dmUoc291cmNlKSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTI0NCw5ICsyNDQsOSBAQCBzdGF0
aWMgVmVjdG9yPFJlZjxDU1NGb250RmFjZT4+IGNvbnN0cnVjdEZhbWlseUZvbnRGYWNlcyhjb25z
dCBTdHJpbmcmIGZhbWlseU5hbQogICAgICAgICAgICAgUmVmPENTU0ZvbnRGYWNlPiBmYWNlID0g
Q1NTRm9udEZhY2U6OmNyZWF0ZShtYXNrLCBudWxscHRyLCB0cnVlKTsKICAgICAgICAgICAgIGZh
Y2UtPmFkZFNvdXJjZShzdGQ6Om1ha2VfdW5pcXVlPENTU0ZvbnRGYWNlU291cmNlPihmYW1pbHlO
YW1lKSk7CiAgICAgICAgICAgICBBU1NFUlQoZmFjZS0+aXNWYWxpZCgpKTsKLSAgICAgICAgICAg
IGZhY2VzLmFwcGVuZChXVEY6Om1vdmUoZmFjZSkpOworICAgICAgICAgICAgZmFjZXMuYXBwZW5k
KFdURk1vdmUoZmFjZSkpOwogICAgICAgICB9Ci0gICAgICAgIGxvY2FsbHlJbnN0YWxsZWRGb250
RmFjZXMuYWRkKGZhbWlseU5hbWUsIFdURjo6bW92ZShmYWNlcykpOworICAgICAgICBsb2NhbGx5
SW5zdGFsbGVkRm9udEZhY2VzLmFkZChmYW1pbHlOYW1lLCBXVEZNb3ZlKGZhY2VzKSk7CiAgICAg
fQogICAgIHJldHVybiByZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTR3JhbW1hci55LmluIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueS5pbgppbmRl
eCA1OTNmZDU5MjAyYzUxY2I0NzY5ZjFkN2Q1NGQ3ZGU3ZGVkNjY5ODVkLi42NWQ0OGE5Yjk1ZTI0
OTgyNzlmZDk3MDNkNzU5MDIyNDMwZjE5MWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTR3JhbW1hci55LmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnku
aW4KQEAgLTY2MSw3ICs2NjEsNyBAQCBtZWRpYV9saXN0OgogICAgICAgICAkJCA9ICQxOwogICAg
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFRdWVyeT4gbWVkaWFRdWVyeSgkNCk7CiAgICAgICAg
IGlmICgkJCkgewotICAgICAgICAgICAgJCQtPmFkZE1lZGlhUXVlcnkoV1RGOjptb3ZlKG1lZGlh
UXVlcnkpKTsKKyAgICAgICAgICAgICQkLT5hZGRNZWRpYVF1ZXJ5KFdURk1vdmUobWVkaWFRdWVy
eSkpOwogICAgICAgICAgICAgcGFyc2VyLT51cGRhdGVMYXN0TWVkaWFMaW5lKCQkKTsKICAgICAg
ICAgfQogICAgIH0KQEAgLTc2Myw3ICs3NjMsNyBAQCBzdXBwb3J0c19kZWNsYXJhdGlvbl9jb25k
aXRpb246CiAgICAgICAgIENTU1BhcnNlciogcCA9IHN0YXRpY19jYXN0PENTU1BhcnNlcio+KHBh
cnNlcik7CiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxDU1NQYXJzZXJWYWx1ZUxpc3Q+IHByb3Bl
cnR5VmFsdWUoJDYpOwogICAgICAgICBpZiAoJDMgJiYgcHJvcGVydHlWYWx1ZSkgewotICAgICAg
ICAgICAgcC0+bV92YWx1ZUxpc3QgPSBXVEY6Om1vdmUocHJvcGVydHlWYWx1ZSk7CisgICAgICAg
ICAgICBwLT5tX3ZhbHVlTGlzdCA9IFdURk1vdmUocHJvcGVydHlWYWx1ZSk7CiAgICAgICAgICAg
ICBpbnQgb2xkUGFyc2VkUHJvcGVydGllcyA9IHAtPm1fcGFyc2VkUHJvcGVydGllcy5zaXplKCk7
CiAgICAgICAgICAgICAkJCA9IHAtPnBhcnNlVmFsdWUoJDMsICQ3KTsKICAgICAgICAgICAgIC8v
IFdlIGp1c3QgbmVlZCB0byBrbm93IGlmIHRoZSBkZWNsYXJhdGlvbiBpcyBzdXBwb3J0ZWQgYXMg
aXQgaXMgd3JpdHRlbi4gUm9sbGJhY2sgYW55IGFkZGl0aW9ucy4KQEAgLTc3OSw3ICs3NzksNyBA
QCBzdXBwb3J0c19kZWNsYXJhdGlvbl9jb25kaXRpb246CiAgICAgICAgIENTU1BhcnNlciogcCA9
IHN0YXRpY19jYXN0PENTU1BhcnNlcio+KHBhcnNlcik7CiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0
cjxDU1NQYXJzZXJWYWx1ZUxpc3Q+IHByb3BlcnR5VmFsdWUoJDYpOwogICAgICAgICBpZiAocHJv
cGVydHlWYWx1ZSkgewotICAgICAgICAgICAgcGFyc2VyLT5tX3ZhbHVlTGlzdCA9IFdURjo6bW92
ZShwcm9wZXJ0eVZhbHVlKTsKKyAgICAgICAgICAgIHBhcnNlci0+bV92YWx1ZUxpc3QgPSBXVEZN
b3ZlKHByb3BlcnR5VmFsdWUpOwogICAgICAgICAgICAgaW50IG9sZFBhcnNlZFByb3BlcnRpZXMg
PSBwLT5tX3BhcnNlZFByb3BlcnRpZXMuc2l6ZSgpOwogICAgICAgICAgICAgcC0+c2V0Q3VzdG9t
UHJvcGVydHlOYW1lKCQzKTsKICAgICAgICAgICAgICQkID0gcC0+cGFyc2VWYWx1ZShDU1NQcm9w
ZXJ0eUN1c3RvbSwgJDcpOwpAQCAtMTA3OCw3ICsxMDc4LDcgQEAgc2VsZWN0b3JfbGlzdDoKICAg
ICAgICAgJCQgPSBudWxscHRyOwogICAgICAgICBpZiAoc2VsZWN0b3JMaXN0ICYmIHNlbGVjdG9y
KSB7CiAgICAgICAgICAgICAkJCA9IHNlbGVjdG9yTGlzdC5yZWxlYXNlKCk7Ci0gICAgICAgICAg
ICAkJC0+YXBwZW5kKFdURjo6bW92ZShzZWxlY3RvcikpOworICAgICAgICAgICAgJCQtPmFwcGVu
ZChXVEZNb3ZlKHNlbGVjdG9yKSk7CiAgICAgICAgICAgICBwYXJzZXItPnVwZGF0ZUxhc3RTZWxl
Y3RvckxpbmVBbmRQb3NpdGlvbigpOwogICAgICAgICB9CiAgICAgfQpAQCAtMTEyNiw3ICsxMTI2
LDcgQEAgY29tcGxleF9zZWxlY3RvcjoKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPENTU1BhcnNl
clNlbGVjdG9yPiByaWdodCgkMik7CiAgICAgICAgICQkID0gbnVsbHB0cjsKICAgICAgICAgaWYg
KGxlZnQgJiYgcmlnaHQpIHsKLSAgICAgICAgICAgIHJpZ2h0LT5hcHBlbmRUYWdIaXN0b3J5KENT
U1BhcnNlclNlbGVjdG9yQ29tYmluYXRvcjo6RGVzY2VuZGFudFNwYWNlLCBXVEY6Om1vdmUobGVm
dCkpOworICAgICAgICAgICAgcmlnaHQtPmFwcGVuZFRhZ0hpc3RvcnkoQ1NTUGFyc2VyU2VsZWN0
b3JDb21iaW5hdG9yOjpEZXNjZW5kYW50U3BhY2UsIFdURk1vdmUobGVmdCkpOwogICAgICAgICAg
ICAgJCQgPSByaWdodC5yZWxlYXNlKCk7CiAgICAgICAgIH0KICAgICB9CkBAIC0xMTM1LDcgKzEx
MzUsNyBAQCBjb21wbGV4X3NlbGVjdG9yOgogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q1NTUGFy
c2VyU2VsZWN0b3I+IHJpZ2h0KCQzKTsKICAgICAgICAgJCQgPSBudWxscHRyOwogICAgICAgICBp
ZiAobGVmdCAmJiByaWdodCkgewotICAgICAgICAgICAgcmlnaHQtPmFwcGVuZFRhZ0hpc3Rvcnko
JDIsIFdURjo6bW92ZShsZWZ0KSk7CisgICAgICAgICAgICByaWdodC0+YXBwZW5kVGFnSGlzdG9y
eSgkMiwgV1RGTW92ZShsZWZ0KSk7CiAgICAgICAgICAgICAkJCA9IHJpZ2h0LnJlbGVhc2UoKTsK
ICAgICAgICAgfQogICAgIH0KQEAgLTExOTQsNyArMTE5NCw3IEBAIHNpbXBsZV9zZWxlY3Rvcl9s
aXN0OgogICAgICAgICAkJCA9IG51bGxwdHI7CiAgICAgICAgIGlmIChsaXN0ICYmIHNlbGVjdG9y
KSB7CiAgICAgICAgICAgICAkJCA9IGxpc3QucmVsZWFzZSgpOwotICAgICAgICAgICAgJCQtPmFw
cGVuZChXVEY6Om1vdmUoc2VsZWN0b3IpKTsKKyAgICAgICAgICAgICQkLT5hcHBlbmQoV1RGTW92
ZShzZWxlY3RvcikpOwogICAgICAgICB9CiAgICAgfQogICAgIHwgc2ltcGxlX3NlbGVjdG9yX2xp
c3QgZXJyb3IgewpAQCAtMTIyMCw3ICsxMjIwLDcgQEAgc3BlY2lmaWVyX2xpc3Q6CiAgICAgICAg
IHN0ZDo6dW5pcXVlX3B0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gc3BlY2lmaWVyKCQyKTsKICAgICAg
ICAgJCQgPSBudWxscHRyOwogICAgICAgICBpZiAobGlzdCAmJiBzcGVjaWZpZXIpCi0gICAgICAg
ICAgICAkJCA9IHBhcnNlci0+cmV3cml0ZVNwZWNpZmllcnMoV1RGOjptb3ZlKGxpc3QpLCBXVEY6
Om1vdmUoc3BlY2lmaWVyKSkucmVsZWFzZSgpOworICAgICAgICAgICAgJCQgPSBwYXJzZXItPnJl
d3JpdGVTcGVjaWZpZXJzKFdURk1vdmUobGlzdCksIFdURk1vdmUoc3BlY2lmaWVyKSkucmVsZWFz
ZSgpOwogICAgIH0KICAgICB8IHNwZWNpZmllcl9saXN0IGVycm9yIHsKICAgICAgICAgJCQgPSBu
dWxscHRyOwpAQCAtMTU2MSw3ICsxNTYxLDcgQEAgZGVjbGFyYXRpb246CiAgICAgICAgIGJvb2wg
aXNQcm9wZXJ0eVBhcnNlZCA9IGZhbHNlOwogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q1NTUGFy
c2VyVmFsdWVMaXN0PiBwcm9wZXJ0eVZhbHVlKCQ0KTsKICAgICAgICAgaWYgKHByb3BlcnR5VmFs
dWUpIHsKLSAgICAgICAgICAgIHBhcnNlci0+bV92YWx1ZUxpc3QgPSBXVEY6Om1vdmUocHJvcGVy
dHlWYWx1ZSk7CisgICAgICAgICAgICBwYXJzZXItPm1fdmFsdWVMaXN0ID0gV1RGTW92ZShwcm9w
ZXJ0eVZhbHVlKTsKICAgICAgICAgICAgIGludCBvbGRQYXJzZWRQcm9wZXJ0aWVzID0gcGFyc2Vy
LT5tX3BhcnNlZFByb3BlcnRpZXMuc2l6ZSgpOwogICAgICAgICAgICAgcGFyc2VyLT5zZXRDdXN0
b21Qcm9wZXJ0eU5hbWUoJDEpOwogICAgICAgICAgICAgJCQgPSBwYXJzZXItPnBhcnNlVmFsdWUo
Q1NTUHJvcGVydHlDdXN0b20sICQ1KTsKQEAgLTE1NzgsNyArMTU3OCw3IEBAIGRlY2xhcmF0aW9u
OgogICAgICAgICBib29sIGlzUHJvcGVydHlQYXJzZWQgPSBmYWxzZTsKICAgICAgICAgc3RkOjp1
bmlxdWVfcHRyPENTU1BhcnNlclZhbHVlTGlzdD4gcHJvcGVydHlWYWx1ZSgkNCk7CiAgICAgICAg
IGlmICgkMSAmJiBwcm9wZXJ0eVZhbHVlKSB7Ci0gICAgICAgICAgICBwYXJzZXItPm1fdmFsdWVM
aXN0ID0gV1RGOjptb3ZlKHByb3BlcnR5VmFsdWUpOworICAgICAgICAgICAgcGFyc2VyLT5tX3Zh
bHVlTGlzdCA9IFdURk1vdmUocHJvcGVydHlWYWx1ZSk7CiAgICAgICAgICAgICBpbnQgb2xkUGFy
c2VkUHJvcGVydGllcyA9IHBhcnNlci0+bV9wYXJzZWRQcm9wZXJ0aWVzLnNpemUoKTsKICAgICAg
ICAgICAgICQkID0gcGFyc2VyLT5wYXJzZVZhbHVlKCQxLCAkNSk7CiAgICAgICAgICAgICBpZiAo
ISQkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlVmFsdWUuY3BwIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlVmFsdWUuY3BwCmluZGV4IGFiNjY3ZDE0ZDE1NjU1
OTU1OWFjY2U0MWQ3ODU1ZTNlZGNiYWI0ZGQuLmQwYjYyNzQ3ZjI0M2I5MmI3YTgwYzA5NzRjOTM0
NjZlODE3NDQzM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVZhbHVl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5jcHAKQEAgLTExOCw3
ICsxMTgsNyBAQCBSZWY8Q1NTVmFsdWU+IENTU0ltYWdlVmFsdWU6OmNsb25lRm9yQ1NTT00oKSBj
b25zdAogICAgIC8vIE5PVEU6IFdlIGV4cG9zZSBDU1NJbWFnZVZhbHVlcyBhcyBVUkkgcHJpbWl0
aXZlIHZhbHVlcyBpbiBDU1NPTSB0byBtYWludGFpbiBvbGQgYmVoYXZpb3IuCiAgICAgUmVmPENT
U1ByaW1pdGl2ZVZhbHVlPiB1cmlWYWx1ZSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUobV91
cmwsIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfVVJJKTsKICAgICB1cmlWYWx1ZS0+c2V0Q1NTT01T
YWZlKCk7Ci0gICAgcmV0dXJuIFdURjo6bW92ZSh1cmlWYWx1ZSk7CisgICAgcmV0dXJuIFdURk1v
dmUodXJpVmFsdWUpOwogfQogCiBib29sIENTU0ltYWdlVmFsdWU6Omtub3duVG9CZU9wYXF1ZShj
b25zdCBSZW5kZXJFbGVtZW50KiByZW5kZXJlcikgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NLZXlmcmFtZVJ1bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0tl
eWZyYW1lUnVsZS5jcHAKaW5kZXggM2MzOTkwMTk2YzRkZjQ3ZGVmZjFmYzU3ZDQyODUxOWYxMDlj
NDMwMS4uZTM2N2YwYTRlMTcxMWM2NTM4YzIxYjQ3OTZlZjgxNzMyNTk5Y2Y5ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0tleWZyYW1lUnVsZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0tleWZyYW1lUnVsZS5jcHAKQEAgLTM0LDcgKzM0LDcgQEAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogU3R5bGVLZXlmcmFtZTo6U3R5bGVLZXlmcmFtZShSZWY8U3R5bGVQcm9w
ZXJ0aWVzPiYmIHByb3BlcnRpZXMpCi0gICAgOiBtX3Byb3BlcnRpZXMoV1RGOjptb3ZlKHByb3Bl
cnRpZXMpKQorICAgIDogbV9wcm9wZXJ0aWVzKFdURk1vdmUocHJvcGVydGllcykpCiB7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NLZXlmcmFtZVJ1bGUuaCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NLZXlmcmFtZVJ1bGUuaAppbmRleCBhZDhiZTNkZjZiZmRjNzJjZmNm
YzdjMTM5MzVjNjhjYjQwNWQ0YWU3Li5hOTViYTY2MDkzMmQ3YTg1ZTQ3Y2ZiMDZmYmNmMmIyMjI5
YWE3NDllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTS2V5ZnJhbWVSdWxlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0tleWZyYW1lUnVsZS5oCkBAIC00MSw3ICs0MSw3
IEBAIGNsYXNzIFN0eWxlS2V5ZnJhbWUgOiBwdWJsaWMgUmVmQ291bnRlZDxTdHlsZUtleWZyYW1l
PiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxTdHlsZUtleWZyYW1lPiBjcmVhdGUoUmVmPFN0
eWxlUHJvcGVydGllcz4mJiBwcm9wZXJ0aWVzKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgU3R5bGVLZXlmcmFtZShXVEY6Om1vdmUocHJvcGVydGllcykpKTsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVLZXlmcmFtZShXVEZNb3ZlKHByb3BlcnRpZXMpKSk7
CiAgICAgfQogICAgIH5TdHlsZUtleWZyYW1lKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAK
aW5kZXggNDZhOTUyZTg4YWUzMGU4MDI5ZTczMjNkNWNmZmQ3OGFlM2UwMmU5NS4uZDI4Njk2YzJi
M2FmYzM5YjA0ZTRmMTlmZjYzYzY3OGRkNWU0NmM4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1BhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5j
cHAKQEAgLTEzNDAsNyArMTM0MCw3IEBAIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IENTU1BhcnNlcjo6
cGFyc2VGb250RmFjZVZhbHVlKGNvbnN0IEF0b21pY1N0cmluZyYgc3RyaW5nKQogICAgICAgICB2
YWx1ZUxpc3QtPmFwcGVuZCh2YWx1ZS5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICB9CiAKLSAgICBy
ZXR1cm4gV1RGOjptb3ZlKHZhbHVlTGlzdCk7CisgICAgcmV0dXJuIFdURk1vdmUodmFsdWVMaXN0
KTsKIH0KIAogQ1NTUGFyc2VyOjpQYXJzZVJlc3VsdCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoTXV0
YWJsZVN0eWxlUHJvcGVydGllcyogZGVjbGFyYXRpb24sIENTU1Byb3BlcnR5SUQgcHJvcGVydHlJ
RCwgY29uc3QgU3RyaW5nJiBzdHJpbmcsIGJvb2wgaW1wb3J0YW50LCBDU1NQYXJzZXJNb2RlIGNz
c1BhcnNlck1vZGUsIFN0eWxlU2hlZXRDb250ZW50cyogY29udGV4dFN0eWxlU2hlZXQpCkBAIC0x
NTUwLDcgKzE1NTAsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFRdWVyeT4gQ1NTUGFyc2VyOjpw
YXJzZU1lZGlhUXVlcnkoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAgICAgc2V0dXBQYXJzZXIoIkAt
d2Via2l0LW1lZGlhcXVlcnkgIiwgc3RyaW5nLCAifSAiKTsKICAgICBjc3N5eXBhcnNlKHRoaXMp
OwogCi0gICAgcmV0dXJuIFdURjo6bW92ZShtX21lZGlhUXVlcnkpOworICAgIHJldHVybiBXVEZN
b3ZlKG1fbWVkaWFRdWVyeSk7CiB9CiAKIFZlY3RvcjxDU1NQYXJzZXI6OlNvdXJjZVNpemU+IENT
U1BhcnNlcjo6cGFyc2VTaXplc0F0dHJpYnV0ZShTdHJpbmdWaWV3IHN0cmluZykKQEAgLTE1Njgs
NyArMTU2OCw3IEBAIFZlY3RvcjxDU1NQYXJzZXI6OlNvdXJjZVNpemU+IENTU1BhcnNlcjo6cGFy
c2VTaXplc0F0dHJpYnV0ZShTdHJpbmdWaWV3IHN0cmluZykKICAgICBpZiAoIW1fc291cmNlU2l6
ZUxpc3QpCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAKLSAgICByZXN1bHQgPSBXVEY6Om1vdmUo
Km1fc291cmNlU2l6ZUxpc3QpOworICAgIHJlc3VsdCA9IFdURk1vdmUoKm1fc291cmNlU2l6ZUxp
c3QpOwogICAgIG1fc291cmNlU2l6ZUxpc3QgPSBudWxscHRyOwogICAgIHJldHVybiByZXN1bHQ7
CiB9CkBAIC0xNTc2LDEzICsxNTc2LDEzIEBAIFZlY3RvcjxDU1NQYXJzZXI6OlNvdXJjZVNpemU+
IENTU1BhcnNlcjo6cGFyc2VTaXplc0F0dHJpYnV0ZShTdHJpbmdWaWV3IHN0cmluZykKIC8vIEZJ
WE1FKDE0MTI4OSk6IFRoZSBmb2xsb3dpbmcgdHdvIGNvbnN0cnVjdG9ycyBhcmUgb25seSBuZWVk
ZWQgYmVjYXVzZSBvZiBhIGJ1ZyBpbiBNU1ZDIDIwMTMgKGFuZCBwcmlvcikuCiAvLyBXZSBzaG91
bGQgcmVtb3ZlIHRoaXMgY29kZSBhcyBzb29uIGFzIGEgVmlzdWFsIFN0dWRpbyB1cGRhdGUgdGhh
dCBmaXhlcyB0aGlzIHByb2JsZW0gaXMgcmVsZWFzZWQuCiBDU1NQYXJzZXI6OlNvdXJjZVNpemU6
OlNvdXJjZVNpemUoQ1NTUGFyc2VyOjpTb3VyY2VTaXplJiYgb3JpZ2luYWwpCi0gICAgOiBleHBy
ZXNzaW9uKFdURjo6bW92ZShvcmlnaW5hbC5leHByZXNzaW9uKSkKKyAgICA6IGV4cHJlc3Npb24o
V1RGTW92ZShvcmlnaW5hbC5leHByZXNzaW9uKSkKICAgICAsIGxlbmd0aChvcmlnaW5hbC5sZW5n
dGgpCiB7CiB9CiAKIENTU1BhcnNlcjo6U291cmNlU2l6ZTo6U291cmNlU2l6ZShzdGQ6OnVuaXF1
ZV9wdHI8TWVkaWFRdWVyeUV4cD4mJiBvcmlnRXhwLCBSZWZQdHI8Q1NTVmFsdWU+IHZhbHVlKQot
ICAgIDogZXhwcmVzc2lvbihXVEY6Om1vdmUob3JpZ0V4cCkpCisgICAgOiBleHByZXNzaW9uKFdU
Rk1vdmUob3JpZ0V4cCkpCiAgICAgLCBsZW5ndGgodmFsdWUpCiB7CiB9CkBAIC0xNjAwLDcgKzE2
MDAsNyBAQCBDU1NQYXJzZXI6OlNvdXJjZVNpemUgQ1NTUGFyc2VyOjpzb3VyY2VTaXplKHN0ZDo6
dW5pcXVlX3B0cjxNZWRpYVF1ZXJ5RXhwPiYmIGV4cAogICAgIGRlc3Ryb3kocGFyc2VyVmFsdWUp
OwogICAgIC8vIEZJWE1FOiBDYWxsaW5nIHRoZSBjb25zdHJ1Y3RvciBleHBsaWNpdGx5IGhlcmUg
dG8gd29yayBhcm91bmQgYW4gTVNWQyBidWcuCiAgICAgLy8gRm9yIG90aGVyIGNvbXBpbGVycywg
d2UgZGlkIG5vdCBuZWVkIHRvIGRlZmluZSB0aGUgY29uc3RydWN0b3JzIGFuZCB3ZSBjb3VsZCB1
c2UgYWdncmVnYXRlIGluaXRpYWxpemF0aW9uIHN5bnRheC4KLSAgICByZXR1cm4gU291cmNlU2l6
ZShXVEY6Om1vdmUoZXhwcmVzc2lvbiksIFdURjo6bW92ZSh2YWx1ZSkpOworICAgIHJldHVybiBT
b3VyY2VTaXplKFdURk1vdmUoZXhwcmVzc2lvbiksIFdURk1vdmUodmFsdWUpKTsKIH0KIAogc3Rh
dGljIGlubGluZSB2b2lkIGZpbHRlclByb3BlcnRpZXMoYm9vbCBpbXBvcnRhbnQsIGNvbnN0IENT
U1BhcnNlcjo6UGFyc2VkUHJvcGVydHlWZWN0b3ImIGlucHV0LCBWZWN0b3I8Q1NTUHJvcGVydHks
IDI1Nj4mIG91dHB1dCwgc2l6ZV90JiB1bnVzZWRFbnRyaWVzLCBzdGQ6OmJpdHNldDxudW1DU1NQ
cm9wZXJ0aWVzPiYgc2VlblByb3BlcnRpZXMsIEhhc2hTZXQ8QXRvbWljU3RyaW5nPiYgc2VlbkN1
c3RvbVByb3BlcnRpZXMpCkBAIC0zMzQwLDE5ICszMzQwLDE5IEBAIGJvb2wgQ1NTUGFyc2VyOjpw
YXJzZVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcElkLCBib29sIGltcG9ydGFudCkKIHZvaWQgQ1NT
UGFyc2VyOjphZGRGaWxsVmFsdWUoUmVmUHRyPENTU1ZhbHVlPiYgbHZhbCwgUmVmPENTU1ZhbHVl
PiYmIHJ2YWwpCiB7CiAgICAgaWYgKCFsdmFsKSB7Ci0gICAgICAgIGx2YWwgPSBXVEY6Om1vdmUo
cnZhbCk7CisgICAgICAgIGx2YWwgPSBXVEZNb3ZlKHJ2YWwpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCiAgICAgaWYgKGx2YWwtPmlzQmFzZVZhbHVlTGlzdCgpKSB7Ci0gICAgICAgIGRvd25j
YXN0PENTU1ZhbHVlTGlzdD4oKmx2YWwpLmFwcGVuZChXVEY6Om1vdmUocnZhbCkpOworICAgICAg
ICBkb3duY2FzdDxDU1NWYWx1ZUxpc3Q+KCpsdmFsKS5hcHBlbmQoV1RGTW92ZShydmFsKSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNy
ZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CiAgICAgbGlzdC5nZXQoKS5hcHBlbmQobHZhbC5yZWxlYXNl
Tm9uTnVsbCgpKTsKLSAgICBsaXN0LmdldCgpLmFwcGVuZChXVEY6Om1vdmUocnZhbCkpOwotICAg
IGx2YWwgPSBXVEY6Om1vdmUobGlzdCk7CisgICAgbGlzdC5nZXQoKS5hcHBlbmQoV1RGTW92ZShy
dmFsKSk7CisgICAgbHZhbCA9IFdURk1vdmUobGlzdCk7CiB9CiAKIHN0YXRpYyBib29sIGlzQ29u
dGVudERpc3RyaWJ1dGlvbktleXdvcmQoQ1NTVmFsdWVJRCBpZCkKQEAgLTM3NjIsMTkgKzM3NjIs
MTkgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlRmlsbFNob3J0aGFuZChDU1NQcm9wZXJ0eUlEIHBy
b3BJZCwgY29uc3QgQ1NTUHJvcGVydHlJRCogcHIKIHZvaWQgQ1NTUGFyc2VyOjphZGRBbmltYXRp
b25WYWx1ZShSZWZQdHI8Q1NTVmFsdWU+JiBsdmFsLCBSZWY8Q1NTVmFsdWU+JiYgcnZhbCkKIHsK
ICAgICBpZiAoIWx2YWwpIHsKLSAgICAgICAgbHZhbCA9IFdURjo6bW92ZShydmFsKTsKKyAgICAg
ICAgbHZhbCA9IFdURk1vdmUocnZhbCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBp
ZiAoaXM8Q1NTVmFsdWVMaXN0PigqbHZhbCkpIHsKLSAgICAgICAgZG93bmNhc3Q8Q1NTVmFsdWVM
aXN0PigqbHZhbCkuYXBwZW5kKFdURjo6bW92ZShydmFsKSk7CisgICAgICAgIGRvd25jYXN0PENT
U1ZhbHVlTGlzdD4oKmx2YWwpLmFwcGVuZChXVEZNb3ZlKHJ2YWwpKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAogICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBh
cmF0ZWQoKTsKICAgICBsaXN0LmdldCgpLmFwcGVuZChsdmFsLnJlbGVhc2VOb25OdWxsKCkpOwot
ICAgIGxpc3QuZ2V0KCkuYXBwZW5kKFdURjo6bW92ZShydmFsKSk7Ci0gICAgbHZhbCA9IFdURjo6
bW92ZShsaXN0KTsKKyAgICBsaXN0LmdldCgpLmFwcGVuZChXVEZNb3ZlKHJ2YWwpKTsKKyAgICBs
dmFsID0gV1RGTW92ZShsaXN0KTsKIH0KIAogYm9vbCBDU1NQYXJzZXI6OnBhcnNlQW5pbWF0aW9u
U2hvcnRoYW5kKENTU1Byb3BlcnR5SUQgcHJvcElkLCBib29sIGltcG9ydGFudCkKQEAgLTQ1MjYs
NyArNDUyNiw3IEBAIHZvaWQgQ1NTUGFyc2VyOjpwYXJzZTRWYWx1ZXNGaWxsUG9zaXRpb24oQ1NT
UGFyc2VyVmFsdWVMaXN0JiB2YWx1ZUxpc3QsIFJlZlB0cjxDCiAgICAgaWYgKGlzRmlsbFBvc2l0
aW9uS2V5d29yZCh2YWx1ZTQtPmdldFZhbHVlSUQoKSkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IHZhbHVlMSA9IGNyZWF0ZVByaW1pdGl2ZVZhbHVlUGFpcihXVEY6Om1vdmUocGFyc2VkVmFsdWUx
KSwgV1RGOjptb3ZlKHBhcnNlZFZhbHVlMikpOworICAgIHZhbHVlMSA9IGNyZWF0ZVByaW1pdGl2
ZVZhbHVlUGFpcihXVEZNb3ZlKHBhcnNlZFZhbHVlMSksIFdURk1vdmUocGFyc2VkVmFsdWUyKSk7
CiAgICAgdmFsdWUyID0gY3JlYXRlUHJpbWl0aXZlVmFsdWVQYWlyKHZhbHVlMy5jb3B5UmVmKCks
IHZhbHVlNC5jb3B5UmVmKCkpOwogCiAgICAgaWYgKGlkZW50MSA9PSBDU1NWYWx1ZVRvcCB8fCBp
ZGVudDEgPT0gQ1NTVmFsdWVCb3R0b20pCkBAIC00NTcwLDcgKzQ1NzAsNyBAQCB2b2lkIENTU1Bh
cnNlcjo6cGFyc2UzVmFsdWVzRmlsbFBvc2l0aW9uKENTU1BhcnNlclZhbHVlTGlzdCYgdmFsdWVM
aXN0LCBSZWZQdHI8QwogICAgICAgICAgICAgc3dhcE5lZWRlZCA9IHRydWU7CiAgICAgICAgIH0K
ICAgICAgICAgdmFsdWUxID0gY3JlYXRlUHJpbWl0aXZlVmFsdWVQYWlyKGNzc1ZhbHVlUG9vbC5j
cmVhdGVJZGVudGlmaWVyVmFsdWUoZmlyc3RQb3NpdGlvbktleXdvcmQpLCBjc3NWYWx1ZVBvb2wu
Y3JlYXRlVmFsdWUoNTAsIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSkpOwotICAg
ICAgICB2YWx1ZTIgPSBjcmVhdGVQcmltaXRpdmVWYWx1ZVBhaXIoV1RGOjptb3ZlKHBhcnNlZFZh
bHVlMiksIHZhbHVlMy5jb3B5UmVmKCkpOworICAgICAgICB2YWx1ZTIgPSBjcmVhdGVQcmltaXRp
dmVWYWx1ZVBhaXIoV1RGTW92ZShwYXJzZWRWYWx1ZTIpLCB2YWx1ZTMuY29weVJlZigpKTsKICAg
ICB9IGVsc2UgaWYgKGlkZW50MyA9PSBDU1NWYWx1ZUNlbnRlcikgewogICAgICAgICBpZiAoaXNG
aWxsUG9zaXRpb25LZXl3b3JkKGlkZW50MikpCiAgICAgICAgICAgICByZXR1cm47CkBAIC00NTgw
LDcgKzQ1ODAsNyBAQCB2b2lkIENTU1BhcnNlcjo6cGFyc2UzVmFsdWVzRmlsbFBvc2l0aW9uKENT
U1BhcnNlclZhbHVlTGlzdCYgdmFsdWVMaXN0LCBSZWZQdHI8QwogICAgICAgICAgICAgc2Vjb25k
UG9zaXRpb25LZXl3b3JkID0gQ1NTVmFsdWVMZWZ0OwogICAgICAgICAgICAgc3dhcE5lZWRlZCA9
IHRydWU7CiAgICAgICAgIH0KLSAgICAgICAgdmFsdWUxID0gY3JlYXRlUHJpbWl0aXZlVmFsdWVQ
YWlyKFdURjo6bW92ZShwYXJzZWRWYWx1ZTEpLCBwYXJzZWRWYWx1ZTIuY29weVJlZigpKTsKKyAg
ICAgICAgdmFsdWUxID0gY3JlYXRlUHJpbWl0aXZlVmFsdWVQYWlyKFdURk1vdmUocGFyc2VkVmFs
dWUxKSwgcGFyc2VkVmFsdWUyLmNvcHlSZWYoKSk7CiAgICAgICAgIHZhbHVlMiA9IGNyZWF0ZVBy
aW1pdGl2ZVZhbHVlUGFpcihjc3NWYWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKHNlY29u
ZFBvc2l0aW9uS2V5d29yZCksIGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZSg1MCwgQ1NTUHJpbWl0
aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFKSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgUmVmUHRy
PENTU1ByaW1pdGl2ZVZhbHVlPiBmaXJzdFBvc2l0aW9uVmFsdWU7CkBAIC00NjA5LDcgKzQ2MDks
NyBAQCB2b2lkIENTU1BhcnNlcjo6cGFyc2UzVmFsdWVzRmlsbFBvc2l0aW9uKENTU1BhcnNlclZh
bHVlTGlzdCYgdmFsdWVMaXN0LCBSZWZQdHI8QwogICAgICAgICBpZiAoaXNWYWx1ZUNvbmZsaWN0
aW5nV2l0aEN1cnJlbnRFZGdlKGlkZW50MSwgc2Vjb25kUG9zaXRpb25LZXl3b3JkKSkKICAgICAg
ICAgICAgIHJldHVybjsKIAotICAgICAgICB2YWx1ZTEgPSBjcmVhdGVQcmltaXRpdmVWYWx1ZVBh
aXIoV1RGOjptb3ZlKHBhcnNlZFZhbHVlMSksIGZpcnN0UG9zaXRpb25WYWx1ZS5jb3B5UmVmKCkp
OworICAgICAgICB2YWx1ZTEgPSBjcmVhdGVQcmltaXRpdmVWYWx1ZVBhaXIoV1RGTW92ZShwYXJz
ZWRWYWx1ZTEpLCBmaXJzdFBvc2l0aW9uVmFsdWUuY29weVJlZigpKTsKICAgICAgICAgdmFsdWUy
ID0gY3JlYXRlUHJpbWl0aXZlVmFsdWVQYWlyKGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlmaWVy
VmFsdWUoc2Vjb25kUG9zaXRpb25LZXl3b3JkKSwgc2Vjb25kUG9zaXRpb25WYWx1ZS5jb3B5UmVm
KCkpOwogICAgIH0KIApAQCAtNDY5Miw5ICs0NjkyLDkgQEAgdm9pZCBDU1NQYXJzZXI6OnBhcnNl
RmlsbFBvc2l0aW9uKENTU1BhcnNlclZhbHVlTGlzdCYgdmFsdWVMaXN0LCBSZWZQdHI8Q1NTVmFs
dWUKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG51bWJlck9mVmFsdWVzID09IDMpCi0gICAg
ICAgIHBhcnNlM1ZhbHVlc0ZpbGxQb3NpdGlvbih2YWx1ZUxpc3QsIHZhbHVlMSwgdmFsdWUyLCBX
VEY6Om1vdmUocGFyc2VkVmFsdWUxKSwgV1RGOjptb3ZlKHBhcnNlZFZhbHVlMikpOworICAgICAg
ICBwYXJzZTNWYWx1ZXNGaWxsUG9zaXRpb24odmFsdWVMaXN0LCB2YWx1ZTEsIHZhbHVlMiwgV1RG
TW92ZShwYXJzZWRWYWx1ZTEpLCBXVEZNb3ZlKHBhcnNlZFZhbHVlMikpOwogICAgIGVsc2UKLSAg
ICAgICAgcGFyc2U0VmFsdWVzRmlsbFBvc2l0aW9uKHZhbHVlTGlzdCwgdmFsdWUxLCB2YWx1ZTIs
IFdURjo6bW92ZShwYXJzZWRWYWx1ZTEpLCBXVEY6Om1vdmUocGFyc2VkVmFsdWUyKSk7CisgICAg
ICAgIHBhcnNlNFZhbHVlc0ZpbGxQb3NpdGlvbih2YWx1ZUxpc3QsIHZhbHVlMSwgdmFsdWUyLCBX
VEZNb3ZlKHBhcnNlZFZhbHVlMSksIFdURk1vdmUocGFyc2VkVmFsdWUyKSk7CiB9CiAKIHZvaWQg
Q1NTUGFyc2VyOjpwYXJzZTJWYWx1ZXNGaWxsUG9zaXRpb24oQ1NTUGFyc2VyVmFsdWVMaXN0JiB2
YWx1ZUxpc3QsIFJlZlB0cjxDU1NWYWx1ZT4mIHZhbHVlMSwgUmVmUHRyPENTU1ZhbHVlPiYgdmFs
dWUyKQpAQCAtNDgyNCw3ICs0ODI0LDcgQEAgUmVmUHRyPENTU1ZhbHVlPiBDU1NQYXJzZXI6OnBh
cnNlRmlsbFNpemUoQ1NTUHJvcGVydHlJRCBwcm9wSWQsIGJvb2wmIGFsbG93Q29tbWEKIAogICAg
IGlmICghcGFyc2VkVmFsdWUyKQogICAgICAgICByZXR1cm4gcGFyc2VkVmFsdWUxOwotICAgIHJl
dHVybiBjcmVhdGVQcmltaXRpdmVWYWx1ZVBhaXIoV1RGOjptb3ZlKHBhcnNlZFZhbHVlMSksIFdU
Rjo6bW92ZShwYXJzZWRWYWx1ZTIpLCBwcm9wSWQgPT0gQ1NTUHJvcGVydHlXZWJraXRCYWNrZ3Jv
dW5kU2l6ZSA/IFBhaXI6OklkZW50aWNhbFZhbHVlRW5jb2Rpbmc6OkNvYWxlc2NlIDogUGFpcjo6
SWRlbnRpY2FsVmFsdWVFbmNvZGluZzo6RG9Ob3RDb2FsZXNjZSk7CisgICAgcmV0dXJuIGNyZWF0
ZVByaW1pdGl2ZVZhbHVlUGFpcihXVEZNb3ZlKHBhcnNlZFZhbHVlMSksIFdURk1vdmUocGFyc2Vk
VmFsdWUyKSwgcHJvcElkID09IENTU1Byb3BlcnR5V2Via2l0QmFja2dyb3VuZFNpemUgPyBQYWly
OjpJZGVudGljYWxWYWx1ZUVuY29kaW5nOjpDb2FsZXNjZSA6IFBhaXI6OklkZW50aWNhbFZhbHVl
RW5jb2Rpbmc6OkRvTm90Q29hbGVzY2UpOwogfQogCiBib29sIENTU1BhcnNlcjo6cGFyc2VGaWxs
UHJvcGVydHkoQ1NTUHJvcGVydHlJRCBwcm9wSWQsIENTU1Byb3BlcnR5SUQmIHByb3BJZDEsIENT
U1Byb3BlcnR5SUQmIHByb3BJZDIsCkBAIC02MTQ1LDcgKzYxNDUsNyBAQCBib29sIENTU1BhcnNl
cjo6cGFyc2VEYXNoYm9hcmRSZWdpb25zKENTU1Byb3BlcnR5SUQgcHJvcElkLCBib29sIGltcG9y
dGFudCkKICAgICB9CiAKICAgICBpZiAodmFsaWQpCi0gICAgICAgIGFkZFByb3BlcnR5KHByb3BJ
ZCwgQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVWYWx1ZShSZWZQdHI8RGFzaGJvYXJk
UmVnaW9uPihXVEY6Om1vdmUoZmlyc3RSZWdpb24pKSksIGltcG9ydGFudCk7CisgICAgICAgIGFk
ZFByb3BlcnR5KHByb3BJZCwgQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVWYWx1ZShS
ZWZQdHI8RGFzaGJvYXJkUmVnaW9uPihXVEZNb3ZlKGZpcnN0UmVnaW9uKSkpLCBpbXBvcnRhbnQp
OwogCiAgICAgcmV0dXJuIHZhbGlkOwogfQpAQCAtNjM2MSw3ICs2MzYxLDcgQEAgYm9vbCBDU1NQ
YXJzZXI6OnBhcnNlQ2xpcFNoYXBlKENTU1Byb3BlcnR5SUQgcHJvcElkLCBib29sIGltcG9ydGFu
dCkKICAgICAgICAgaSsrOwogICAgIH0KICAgICBpZiAodmFsaWQpIHsKLSAgICAgICAgYWRkUHJv
cGVydHkocHJvcElkLCBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZVZhbHVlKFdURjo6
bW92ZShyZWN0KSksIGltcG9ydGFudCk7CisgICAgICAgIGFkZFByb3BlcnR5KHByb3BJZCwgQ1NT
VmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVWYWx1ZShXVEZNb3ZlKHJlY3QpKSwgaW1wb3J0
YW50KTsKICAgICAgICAgbV92YWx1ZUxpc3QtPm5leHQoKTsKICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgfQpAQCAtNjY2OCw3ICs2NjY4LDcgQEAgUmVmUHRyPENTU0Jhc2ljU2hhcGU+IENTU1Bh
cnNlcjo6cGFyc2VCYXNpY1NoYXBlUGF0aChDU1NQYXJzZXJWYWx1ZUxpc3QmIGFyZ3MpCiAgICAg
aWYgKCFidWlsZFNWR1BhdGhCeXRlU3RyZWFtRnJvbVN0cmluZyhhcmd1bWVudC0+c3RyaW5nLCAq
Ynl0ZVN0cmVhbSwgVW5hbHRlcmVkUGFyc2luZykpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
Ci0gICAgUmVmUHRyPENTU0Jhc2ljU2hhcGVQYXRoPiBzaGFwZSA9IENTU0Jhc2ljU2hhcGVQYXRo
OjpjcmVhdGUoV1RGOjptb3ZlKGJ5dGVTdHJlYW0pKTsKKyAgICBSZWZQdHI8Q1NTQmFzaWNTaGFw
ZVBhdGg+IHNoYXBlID0gQ1NTQmFzaWNTaGFwZVBhdGg6OmNyZWF0ZShXVEZNb3ZlKGJ5dGVTdHJl
YW0pKTsKICAgICBzaGFwZS0+c2V0V2luZFJ1bGUod2luZFJ1bGUpOwogCiAgICAgYXJncy5uZXh0
KCk7CkBAIC02ODkxLDcgKzY4OTEsNyBAQCB2b2lkIENTU1BhcnNlcjo6cGFyc2VTeXN0ZW1Gb250
KGJvb2wgaW1wb3J0YW50KQogICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5Rm9udFNpemUsIENT
U1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlVmFsdWUoZm9udERlc2NyaXB0aW9uLnNwZWNp
ZmllZFNpemUoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCksIGltcG9ydGFudCk7CiAgICAg
UmVmPENTU1ZhbHVlTGlzdD4gZm9udEZhbWlseUxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNv
bW1hU2VwYXJhdGVkKCk7CiAgICAgZm9udEZhbWlseUxpc3QtPmFwcGVuZChDU1NWYWx1ZVBvb2w6
OnNpbmdsZXRvbigpLmNyZWF0ZUZvbnRGYW1pbHlWYWx1ZShmb250RGVzY3JpcHRpb24uZmFtaWx5
QXQoMCksIEZyb21TeXN0ZW1Gb250SUQ6OlllcykpOwotICAgIGFkZFByb3BlcnR5KENTU1Byb3Bl
cnR5Rm9udEZhbWlseSwgV1RGOjptb3ZlKGZvbnRGYW1pbHlMaXN0KSwgaW1wb3J0YW50KTsKKyAg
ICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRGYW1pbHksIFdURk1vdmUoZm9udEZhbWlseUxp
c3QpLCBpbXBvcnRhbnQpOwogICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5Rm9udFZhcmlhbnRD
YXBzLCBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NW
YWx1ZU5vcm1hbCksIGltcG9ydGFudCk7CiAgICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlMaW5l
SGVpZ2h0LCBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShD
U1NWYWx1ZU5vcm1hbCksIGltcG9ydGFudCk7CiB9CkBAIC04MjY1LDcgKzgyNjUsNyBAQCBib29s
IENTU1BhcnNlcjo6cGFyc2VCb3JkZXJJbWFnZVJlcGVhdChSZWZQdHI8Q1NTVmFsdWU+JiByZXN1
bHQpCiAgICAgfSBlbHNlCiAgICAgICAgIHNlY29uZFZhbHVlID0gZmlyc3RWYWx1ZTsKIAotICAg
IHJlc3VsdCA9IGNyZWF0ZVByaW1pdGl2ZVZhbHVlUGFpcihXVEY6Om1vdmUoZmlyc3RWYWx1ZSks
IFdURjo6bW92ZShzZWNvbmRWYWx1ZSkpOworICAgIHJlc3VsdCA9IGNyZWF0ZVByaW1pdGl2ZVZh
bHVlUGFpcihXVEZNb3ZlKGZpcnN0VmFsdWUpLCBXVEZNb3ZlKHNlY29uZFZhbHVlKSk7CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKQEAgLTgzMjgsNyArODMyOCw3IEBAIHB1YmxpYzoKICAgICAgICAg
cXVhZC0+c2V0TGVmdChtX2xlZnQpOwogCiAgICAgICAgIC8vIE1ha2Ugb3VyIG5ldyBib3JkZXIg
aW1hZ2UgdmFsdWUgbm93LgotICAgICAgICByZXR1cm4gQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVl
OjpjcmVhdGUoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVWYWx1ZShXVEY6Om1vdmUo
cXVhZCkpLCBtX2ZpbGwpOworICAgICAgICByZXR1cm4gQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVl
OjpjcmVhdGUoQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVWYWx1ZShXVEZNb3ZlKHF1
YWQpKSwgbV9maWxsKTsKICAgICB9CiAKIHByaXZhdGU6CkBAIC04NDQ2LDcgKzg0NDYsNyBAQCBw
dWJsaWM6CiAgICAgICAgIHF1YWQtPnNldExlZnQobV9sZWZ0KTsKIAogICAgICAgICAvLyBNYWtl
IG91ciBuZXcgdmFsdWUgbm93LgotICAgICAgICByZXR1cm4gQ1NTVmFsdWVQb29sOjpzaW5nbGV0
b24oKS5jcmVhdGVWYWx1ZShXVEY6Om1vdmUocXVhZCkpOworICAgICAgICByZXR1cm4gQ1NTVmFs
dWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVWYWx1ZShXVEZNb3ZlKHF1YWQpKTsKICAgICB9CiAK
IHByaXZhdGU6CkBAIC0xMDAxMSw3ICsxMDAxMSw3IEBAIFJlZlB0cjxXZWJLaXRDU1NGaWx0ZXJW
YWx1ZT4gQ1NTUGFyc2VyOjpwYXJzZUJ1aWx0aW5GaWx0ZXJBcmd1bWVudHMoQ1NTUGFyc2VyVmFs
CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICAgICAgfQogCi0g
ICAgICAgICAgICBmaWx0ZXJWYWx1ZS0+YXBwZW5kKFdURjo6bW92ZShwcmltaXRpdmVWYWx1ZSkp
OworICAgICAgICAgICAgZmlsdGVyVmFsdWUtPmFwcGVuZChXVEZNb3ZlKHByaW1pdGl2ZVZhbHVl
KSk7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMTA1ODksNyArMTA1ODks
NyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VGb250RmVhdHVyZVRhZyhDU1NWYWx1ZUxpc3QmIHNl
dHRpbmdzKQogICAgICAgICAgICAgbV92YWx1ZUxpc3QtPm5leHQoKTsKICAgICAgICAgfQogICAg
IH0KLSAgICBzZXR0aW5ncy5hcHBlbmQoQ1NTRm9udEZlYXR1cmVWYWx1ZTo6Y3JlYXRlKFdURjo6
bW92ZSh0YWcpLCB0YWdWYWx1ZSkpOworICAgIHNldHRpbmdzLmFwcGVuZChDU1NGb250RmVhdHVy
ZVZhbHVlOjpjcmVhdGUoV1RGTW92ZSh0YWcpLCB0YWdWYWx1ZSkpOwogICAgIHJldHVybiB0cnVl
OwogfQogCkBAIC0xMDcxMCw3ICsxMDcxMCw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZUZvbnRW
YXJpYW50TGlnYXR1cmVzKGJvb2wgaW1wb3J0YW50LCBib29sIHVua25vd25Jc0ZhaWx1cmUsCiAg
ICAgaWYgKCF2YWx1ZXMtPmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gIXVua25vd25Jc0ZhaWx1
cmU7CiAKLSAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRWYXJpYW50TGlnYXR1cmVzLCBX
VEY6Om1vdmUodmFsdWVzKSwgaW1wb3J0YW50LCBpbXBsaWNpdCk7CisgICAgYWRkUHJvcGVydHko
Q1NTUHJvcGVydHlGb250VmFyaWFudExpZ2F0dXJlcywgV1RGTW92ZSh2YWx1ZXMpLCBpbXBvcnRh
bnQsIGltcGxpY2l0KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMTA4MTEsNyArMTA4MTEs
NyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VGb250VmFyaWFudE51bWVyaWMoYm9vbCBpbXBvcnRh
bnQsIGJvb2wgdW5rbm93bklzRmFpbHVyZSwgYgogICAgIGlmICghdmFsdWVzLT5sZW5ndGgoKSkK
ICAgICAgICAgcmV0dXJuICF1bmtub3duSXNGYWlsdXJlOwogCi0gICAgYWRkUHJvcGVydHkoQ1NT
UHJvcGVydHlGb250VmFyaWFudE51bWVyaWMsIFdURjo6bW92ZSh2YWx1ZXMpLCBpbXBvcnRhbnQs
IGltcGxpY2l0KTsKKyAgICBhZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRWYXJpYW50TnVtZXJp
YywgV1RGTW92ZSh2YWx1ZXMpLCBpbXBvcnRhbnQsIGltcGxpY2l0KTsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIApAQCAtMTA5MDUsNyArMTA5MDUsNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VGb250
VmFyaWFudEVhc3RBc2lhbihib29sIGltcG9ydGFudCwgYm9vbCB1bmtub3duSXNGYWlsdXJlLAog
ICAgIGlmICghdmFsdWVzLT5sZW5ndGgoKSkKICAgICAgICAgcmV0dXJuICF1bmtub3duSXNGYWls
dXJlOwogCi0gICAgYWRkUHJvcGVydHkoQ1NTUHJvcGVydHlGb250VmFyaWFudEVhc3RBc2lhbiwg
V1RGOjptb3ZlKHZhbHVlcyksIGltcG9ydGFudCwgaW1wbGljaXQpOworICAgIGFkZFByb3BlcnR5
KENTU1Byb3BlcnR5Rm9udFZhcmlhbnRFYXN0QXNpYW4sIFdURk1vdmUodmFsdWVzKSwgaW1wb3J0
YW50LCBpbXBsaWNpdCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTEyODM5LDcgKzEyODM5
LDcgQEAgdm9pZCBDU1NQYXJzZXI6OmxvZ0Vycm9yKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgaW50
IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIKIAogUmVmUHRyPFN0eWxlUnVsZUtleWZyYW1l
cz4gQ1NTUGFyc2VyOjpjcmVhdGVLZXlmcmFtZXNSdWxlKGNvbnN0IFN0cmluZyYgbmFtZSwgc3Rk
Ojp1bmlxdWVfcHRyPFZlY3RvcjxSZWZQdHI8U3R5bGVLZXlmcmFtZT4+PiBwb3BLZXlmcmFtZXMp
CiB7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxSZWZQdHI8U3R5bGVLZXlmcmFtZT4+PiBr
ZXlmcmFtZXMgPSBXVEY6Om1vdmUocG9wS2V5ZnJhbWVzKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
VmVjdG9yPFJlZlB0cjxTdHlsZUtleWZyYW1lPj4+IGtleWZyYW1lcyA9IFdURk1vdmUocG9wS2V5
ZnJhbWVzKTsKICAgICBtX2FsbG93SW1wb3J0UnVsZXMgPSBtX2FsbG93TmFtZXNwYWNlRGVjbGFy
YXRpb25zID0gZmFsc2U7CiAgICAgUmVmUHRyPFN0eWxlUnVsZUtleWZyYW1lcz4gcnVsZSA9IFN0
eWxlUnVsZUtleWZyYW1lczo6Y3JlYXRlKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBr
ZXlmcmFtZXMtPnNpemUoKTsgKytpKQpAQCAtMTI5NDUsMTUgKzEyOTQ1LDE1IEBAIHN0ZDo6dW5p
cXVlX3B0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gQ1NTUGFyc2VyOjpyZXdyaXRlU3BlY2lmaWVycyhz
dGQ6OnVuaXF1ZV9wdHI8CiB7CiAgICAgaWYgKG5ld1NwZWNpZmllci0+aXNDdXN0b21Qc2V1ZG9F
bGVtZW50KCkgfHwgbmV3U3BlY2lmaWVyLT5pc1BzZXVkb0VsZW1lbnRDdWVGdW5jdGlvbigpKSB7
CiAgICAgICAgIC8vIFVua25vd24gcHNldWRvIGVsZW1lbnQgYWx3YXlzIGdvZXMgYXQgdGhlIHRv
cCBvZiBzZWxlY3RvciBjaGFpbi4KLSAgICAgICAgbmV3U3BlY2lmaWVyLT5hcHBlbmRUYWdIaXN0
b3J5KENTU1NlbGVjdG9yOjpTaGFkb3dEZXNjZW5kYW50LCBXVEY6Om1vdmUoc3BlY2lmaWVycykp
OworICAgICAgICBuZXdTcGVjaWZpZXItPmFwcGVuZFRhZ0hpc3RvcnkoQ1NTU2VsZWN0b3I6OlNo
YWRvd0Rlc2NlbmRhbnQsIFdURk1vdmUoc3BlY2lmaWVycykpOwogICAgICAgICByZXR1cm4gbmV3
U3BlY2lmaWVyOwogICAgIH0KICAgICBpZiAoc3BlY2lmaWVycy0+aXNDdXN0b21Qc2V1ZG9FbGVt
ZW50KCkpIHsKICAgICAgICAgLy8gU3BlY2lmaWVycyBmb3IgdW5rbm93biBwc2V1ZG8gZWxlbWVu
dCBnbyByaWdodCBiZWhpbmQgaXQgaW4gdGhlIGNoYWluLgotICAgICAgICBzcGVjaWZpZXJzLT5p
bnNlcnRUYWdIaXN0b3J5KENTU1NlbGVjdG9yOjpTdWJTZWxlY3RvciwgV1RGOjptb3ZlKG5ld1Nw
ZWNpZmllciksIENTU1NlbGVjdG9yOjpTaGFkb3dEZXNjZW5kYW50KTsKKyAgICAgICAgc3BlY2lm
aWVycy0+aW5zZXJ0VGFnSGlzdG9yeShDU1NTZWxlY3Rvcjo6U3ViU2VsZWN0b3IsIFdURk1vdmUo
bmV3U3BlY2lmaWVyKSwgQ1NTU2VsZWN0b3I6OlNoYWRvd0Rlc2NlbmRhbnQpOwogICAgICAgICBy
ZXR1cm4gc3BlY2lmaWVyczsKICAgICB9Ci0gICAgc3BlY2lmaWVycy0+YXBwZW5kVGFnSGlzdG9y
eShDU1NTZWxlY3Rvcjo6U3ViU2VsZWN0b3IsIFdURjo6bW92ZShuZXdTcGVjaWZpZXIpKTsKKyAg
ICBzcGVjaWZpZXJzLT5hcHBlbmRUYWdIaXN0b3J5KENTU1NlbGVjdG9yOjpTdWJTZWxlY3Rvciwg
V1RGTW92ZShuZXdTcGVjaWZpZXIpKTsKICAgICByZXR1cm4gc3BlY2lmaWVyczsKIH0KIApAQCAt
MTI5NjUsNyArMTI5NjUsNyBAQCBSZWZQdHI8U3R5bGVSdWxlQmFzZT4gQ1NTUGFyc2VyOjpjcmVh
dGVQYWdlUnVsZShzdGQ6OnVuaXF1ZV9wdHI8Q1NTUGFyc2VyU2VsZWN0bwogICAgIGlmIChwYWdl
U2VsZWN0b3IpIHsKICAgICAgICAgcnVsZSA9IFN0eWxlUnVsZVBhZ2U6OmNyZWF0ZShjcmVhdGVT
dHlsZVByb3BlcnRpZXMoKSk7CiAgICAgICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Q1NTUGFy
c2VyU2VsZWN0b3I+PiBzZWxlY3RvclZlY3RvcjsKLSAgICAgICAgc2VsZWN0b3JWZWN0b3IuYXBw
ZW5kKFdURjo6bW92ZShwYWdlU2VsZWN0b3IpKTsKKyAgICAgICAgc2VsZWN0b3JWZWN0b3IuYXBw
ZW5kKFdURk1vdmUocGFnZVNlbGVjdG9yKSk7CiAgICAgICAgIHJ1bGUtPnBhcnNlckFkb3B0U2Vs
ZWN0b3JWZWN0b3Ioc2VsZWN0b3JWZWN0b3IpOwogICAgICAgICBwcm9jZXNzQW5kQWRkTmV3UnVs
ZVRvU291cmNlVHJlZUlmTmVlZGVkKCk7CiAgICAgfSBlbHNlCkBAIC0xMjk3OCw3ICsxMjk3OCw3
IEBAIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPENTU1BhcnNlclNlbGVj
dG9yPj4+IENTU1BhcnNlcjo6Y3JlYXRlU2VsCiB7CiAgICAgaWYgKG1fcmVjeWNsZWRTZWxlY3Rv
clZlY3RvcikgewogICAgICAgICBtX3JlY3ljbGVkU2VsZWN0b3JWZWN0b3ItPnNocmluaygwKTsK
LSAgICAgICAgcmV0dXJuIFdURjo6bW92ZShtX3JlY3ljbGVkU2VsZWN0b3JWZWN0b3IpOworICAg
ICAgICByZXR1cm4gV1RGTW92ZShtX3JlY3ljbGVkU2VsZWN0b3JWZWN0b3IpOwogICAgIH0KICAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPENTU1BhcnNl
clNlbGVjdG9yPj4+KCk7CiB9CkBAIC0xMjk4Niw3ICsxMjk4Niw3IEBAIHN0ZDo6dW5pcXVlX3B0
cjxWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPENTU1BhcnNlclNlbGVjdG9yPj4+IENTU1BhcnNlcjo6
Y3JlYXRlU2VsCiB2b2lkIENTU1BhcnNlcjo6cmVjeWNsZVNlbGVjdG9yVmVjdG9yKHN0ZDo6dW5p
cXVlX3B0cjxWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPENTU1BhcnNlclNlbGVjdG9yPj4+IHZlY3Rv
cikKIHsKICAgICBpZiAodmVjdG9yICYmICFtX3JlY3ljbGVkU2VsZWN0b3JWZWN0b3IpCi0gICAg
ICAgIG1fcmVjeWNsZWRTZWxlY3RvclZlY3RvciA9IFdURjo6bW92ZSh2ZWN0b3IpOworICAgICAg
ICBtX3JlY3ljbGVkU2VsZWN0b3JWZWN0b3IgPSBXVEZNb3ZlKHZlY3Rvcik7CiB9CiAKIFJlZlB0
cjxTdHlsZVJ1bGVCYXNlPiBDU1NQYXJzZXI6OmNyZWF0ZVJlZ2lvblJ1bGUoVmVjdG9yPHN0ZDo6
dW5pcXVlX3B0cjxDU1NQYXJzZXJTZWxlY3Rvcj4+KiByZWdpb25TZWxlY3RvciwgUnVsZUxpc3Qq
IHJ1bGVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlclZhbHVlcy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyVmFsdWVzLmNwcAppbmRleCA3Y2MzOTNm
ZDYxNjE5ZDQ1ZWI3NjBjMzljZjY4M2VkNzVkNDEzOTE5Li5mZDliOWQ1NGQwNDc4YjhmOWQ3YjJm
NzQ2YTQ1MjY3MjBjNmFmYjRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFy
c2VyVmFsdWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyVmFsdWVzLmNw
cApAQCAtMjY5LDEzICsyNjksMTMgQEAgQ1NTUGFyc2VyU2VsZWN0b3I6On5DU1NQYXJzZXJTZWxl
Y3RvcigpCiAgICAgaWYgKCFtX3RhZ0hpc3RvcnkpCiAgICAgICAgIHJldHVybjsKICAgICBWZWN0
b3I8c3RkOjp1bmlxdWVfcHRyPENTU1BhcnNlclNlbGVjdG9yPiwgMTY+IHRvRGVsZXRlOwotICAg
IHN0ZDo6dW5pcXVlX3B0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gc2VsZWN0b3IgPSBXVEY6Om1vdmUo
bV90YWdIaXN0b3J5KTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q1NTUGFyc2VyU2VsZWN0b3I+IHNl
bGVjdG9yID0gV1RGTW92ZShtX3RhZ0hpc3RvcnkpOwogICAgIHdoaWxlICh0cnVlKSB7Ci0gICAg
ICAgIHN0ZDo6dW5pcXVlX3B0cjxDU1NQYXJzZXJTZWxlY3Rvcj4gbmV4dCA9IFdURjo6bW92ZShz
ZWxlY3Rvci0+bV90YWdIaXN0b3J5KTsKLSAgICAgICAgdG9EZWxldGUuYXBwZW5kKFdURjo6bW92
ZShzZWxlY3RvcikpOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q1NTUGFyc2VyU2VsZWN0b3I+
IG5leHQgPSBXVEZNb3ZlKHNlbGVjdG9yLT5tX3RhZ0hpc3RvcnkpOworICAgICAgICB0b0RlbGV0
ZS5hcHBlbmQoV1RGTW92ZShzZWxlY3RvcikpOwogICAgICAgICBpZiAoIW5leHQpCiAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgc2VsZWN0b3IgPSBXVEY6Om1vdmUobmV4dCk7CisgICAgICAg
IHNlbGVjdG9yID0gV1RGTW92ZShuZXh0KTsKICAgICB9CiB9CiAKQEAgLTI4Myw3ICsyODMsNyBA
QCB2b2lkIENTU1BhcnNlclNlbGVjdG9yOjphZG9wdFNlbGVjdG9yVmVjdG9yKFZlY3RvcjxzdGQ6
OnVuaXF1ZV9wdHI8Q1NTUGFyc2VyU2VsZQogewogICAgIGF1dG8gc2VsZWN0b3JMaXN0ID0gc3Rk
OjptYWtlX3VuaXF1ZTxDU1NTZWxlY3Rvckxpc3Q+KCk7CiAgICAgc2VsZWN0b3JMaXN0LT5hZG9w
dFNlbGVjdG9yVmVjdG9yKHNlbGVjdG9yVmVjdG9yKTsKLSAgICBtX3NlbGVjdG9yLT5zZXRTZWxl
Y3Rvckxpc3QoV1RGOjptb3ZlKHNlbGVjdG9yTGlzdCkpOworICAgIG1fc2VsZWN0b3ItPnNldFNl
bGVjdG9yTGlzdChXVEZNb3ZlKHNlbGVjdG9yTGlzdCkpOwogfQogCiB2b2lkIENTU1BhcnNlclNl
bGVjdG9yOjpzZXRMYW5nQXJndW1lbnRMaXN0KGNvbnN0IFZlY3RvcjxDU1NQYXJzZXJTdHJpbmc+
JiBzdHJpbmdWZWN0b3IpCkBAIC0yOTMsNyArMjkzLDcgQEAgdm9pZCBDU1NQYXJzZXJTZWxlY3Rv
cjo6c2V0TGFuZ0FyZ3VtZW50TGlzdChjb25zdCBWZWN0b3I8Q1NTUGFyc2VyU3RyaW5nPiYgc3Ry
aW4KICAgICBhcmd1bWVudExpc3QtPnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoc3RyaW5nVmVjdG9y
LnNpemUoKSk7CiAgICAgZm9yIChjb25zdCBBdG9taWNTdHJpbmcmIGxhbmd1YWdlQXJndW1lbnQg
OiBzdHJpbmdWZWN0b3IpCiAgICAgICAgIGFyZ3VtZW50TGlzdC0+YXBwZW5kKGxhbmd1YWdlQXJn
dW1lbnQpOwotICAgIG1fc2VsZWN0b3ItPnNldExhbmdBcmd1bWVudExpc3QoV1RGOjptb3ZlKGFy
Z3VtZW50TGlzdCkpOworICAgIG1fc2VsZWN0b3ItPnNldExhbmdBcmd1bWVudExpc3QoV1RGTW92
ZShhcmd1bWVudExpc3QpKTsKIH0KIAogdm9pZCBDU1NQYXJzZXJTZWxlY3Rvcjo6c2V0UHNldWRv
Q2xhc3NWYWx1ZShjb25zdCBDU1NQYXJzZXJTdHJpbmcmIHBzZXVkb0NsYXNzU3RyaW5nKQpAQCAt
MzMwLDEwICszMzAsMTAgQEAgYm9vbCBDU1NQYXJzZXJTZWxlY3Rvcjo6bWF0Y2hlc1BzZXVkb0Vs
ZW1lbnQoKSBjb25zdAogdm9pZCBDU1NQYXJzZXJTZWxlY3Rvcjo6aW5zZXJ0VGFnSGlzdG9yeShD
U1NTZWxlY3Rvcjo6UmVsYXRpb24gYmVmb3JlLCBzdGQ6OnVuaXF1ZV9wdHI8Q1NTUGFyc2VyU2Vs
ZWN0b3I+IHNlbGVjdG9yLCBDU1NTZWxlY3Rvcjo6UmVsYXRpb24gYWZ0ZXIpCiB7CiAgICAgaWYg
KG1fdGFnSGlzdG9yeSkKLSAgICAgICAgc2VsZWN0b3ItPnNldFRhZ0hpc3RvcnkoV1RGOjptb3Zl
KG1fdGFnSGlzdG9yeSkpOworICAgICAgICBzZWxlY3Rvci0+c2V0VGFnSGlzdG9yeShXVEZNb3Zl
KG1fdGFnSGlzdG9yeSkpOwogICAgIHNldFJlbGF0aW9uKGJlZm9yZSk7CiAgICAgc2VsZWN0b3It
PnNldFJlbGF0aW9uKGFmdGVyKTsKLSAgICBtX3RhZ0hpc3RvcnkgPSBXVEY6Om1vdmUoc2VsZWN0
b3IpOworICAgIG1fdGFnSGlzdG9yeSA9IFdURk1vdmUoc2VsZWN0b3IpOwogfQogCiB2b2lkIENT
U1BhcnNlclNlbGVjdG9yOjphcHBlbmRUYWdIaXN0b3J5KENTU1NlbGVjdG9yOjpSZWxhdGlvbiBy
ZWxhdGlvbiwgc3RkOjp1bmlxdWVfcHRyPENTU1BhcnNlclNlbGVjdG9yPiBzZWxlY3RvcikKQEAg
LTM0Myw3ICszNDMsNyBAQCB2b2lkIENTU1BhcnNlclNlbGVjdG9yOjphcHBlbmRUYWdIaXN0b3J5
KENTU1NlbGVjdG9yOjpSZWxhdGlvbiByZWxhdGlvbiwgc3RkOjp1bgogICAgICAgICBlbmQgPSBl
bmQtPnRhZ0hpc3RvcnkoKTsKIAogICAgIGVuZC0+c2V0UmVsYXRpb24ocmVsYXRpb24pOwotICAg
IGVuZC0+c2V0VGFnSGlzdG9yeShXVEY6Om1vdmUoc2VsZWN0b3IpKTsKKyAgICBlbmQtPnNldFRh
Z0hpc3RvcnkoV1RGTW92ZShzZWxlY3RvcikpOwogfQogCiB2b2lkIENTU1BhcnNlclNlbGVjdG9y
OjphcHBlbmRUYWdIaXN0b3J5KENTU1BhcnNlclNlbGVjdG9yQ29tYmluYXRvciByZWxhdGlvbiwg
c3RkOjp1bmlxdWVfcHRyPENTU1BhcnNlclNlbGVjdG9yPiBzZWxlY3RvcikKQEAgLTM3OSwxNSAr
Mzc5LDE1IEBAIHZvaWQgQ1NTUGFyc2VyU2VsZWN0b3I6OmFwcGVuZFRhZ0hpc3RvcnkoQ1NTUGFy
c2VyU2VsZWN0b3JDb21iaW5hdG9yIHJlbGF0aW9uLCBzCiAgICAgICAgIGVuZC0+c2V0RGVzY2Vu
ZGFudFVzZURvdWJsZUNoaWxkU3ludGF4KCk7CiAjZW5kaWYKIAotICAgIGVuZC0+c2V0VGFnSGlz
dG9yeShXVEY6Om1vdmUoc2VsZWN0b3IpKTsKKyAgICBlbmQtPnNldFRhZ0hpc3RvcnkoV1RGTW92
ZShzZWxlY3RvcikpOwogfQogCiB2b2lkIENTU1BhcnNlclNlbGVjdG9yOjpwcmVwZW5kVGFnU2Vs
ZWN0b3IoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnUU5hbWUsIGJvb2wgdGFnSXNGb3JOYW1lc3Bh
Y2VSdWxlKQogewogICAgIGF1dG8gc2Vjb25kID0gc3RkOjptYWtlX3VuaXF1ZTxDU1NQYXJzZXJT
ZWxlY3Rvcj4oKTsKLSAgICBzZWNvbmQtPm1fc2VsZWN0b3IgPSBXVEY6Om1vdmUobV9zZWxlY3Rv
cik7Ci0gICAgc2Vjb25kLT5tX3RhZ0hpc3RvcnkgPSBXVEY6Om1vdmUobV90YWdIaXN0b3J5KTsK
LSAgICBtX3RhZ0hpc3RvcnkgPSBXVEY6Om1vdmUoc2Vjb25kKTsKKyAgICBzZWNvbmQtPm1fc2Vs
ZWN0b3IgPSBXVEZNb3ZlKG1fc2VsZWN0b3IpOworICAgIHNlY29uZC0+bV90YWdIaXN0b3J5ID0g
V1RGTW92ZShtX3RhZ0hpc3RvcnkpOworICAgIG1fdGFnSGlzdG9yeSA9IFdURk1vdmUoc2Vjb25k
KTsKIAogICAgIG1fc2VsZWN0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPENTU1NlbGVjdG9yPih0YWdR
TmFtZSwgdGFnSXNGb3JOYW1lc3BhY2VSdWxlKTsKICAgICBtX3NlbGVjdG9yLT5zZXRSZWxhdGlv
bihDU1NTZWxlY3Rvcjo6U3ViU2VsZWN0b3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1BhcnNlclZhbHVlcy5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlclZhbHVl
cy5oCmluZGV4IDc2NmEwYmViMGQzZDViMGE3NDRhMDdmYTcwNjAzN2YyN2QzMGRjODguLmNlOWI1
MzIwNzFjNTdiNWQwNGI5MTliNjUwZTIxYzljNjQ4MzFhZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NQYXJzZXJWYWx1ZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
UGFyc2VyVmFsdWVzLmgKQEAgLTIxOCw3ICsyMTgsNyBAQCBwdWJsaWM6CiAgICAgZXhwbGljaXQg
Q1NTUGFyc2VyU2VsZWN0b3IoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIH5DU1NQYXJzZXJT
ZWxlY3RvcigpOwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPENTU1NlbGVjdG9yPiByZWxlYXNlU2Vs
ZWN0b3IoKSB7IHJldHVybiBXVEY6Om1vdmUobV9zZWxlY3Rvcik7IH0KKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8Q1NTU2VsZWN0b3I+IHJlbGVhc2VTZWxlY3RvcigpIHsgcmV0dXJuIFdURk1vdmUobV9z
ZWxlY3Rvcik7IH0KIAogICAgIHZvaWQgc2V0VmFsdWUoY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1
ZSkgeyBtX3NlbGVjdG9yLT5zZXRWYWx1ZSh2YWx1ZSk7IH0KICAgICB2b2lkIHNldEF0dHJpYnV0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiB2YWx1ZSwgYm9vbCBpc0Nhc2VJbnNlbnNpdGl2ZSkgeyBt
X3NlbGVjdG9yLT5zZXRBdHRyaWJ1dGUodmFsdWUsIGlzQ2FzZUluc2Vuc2l0aXZlKTsgfQpAQCAt
MjQ4LDcgKzI0OCw3IEBAIHB1YmxpYzoKICAgICBib29sIG1hdGNoZXNQc2V1ZG9FbGVtZW50KCkg
Y29uc3Q7CiAKICAgICBDU1NQYXJzZXJTZWxlY3RvciogdGFnSGlzdG9yeSgpIGNvbnN0IHsgcmV0
dXJuIG1fdGFnSGlzdG9yeS5nZXQoKTsgfQotICAgIHZvaWQgc2V0VGFnSGlzdG9yeShzdGQ6OnVu
aXF1ZV9wdHI8Q1NTUGFyc2VyU2VsZWN0b3I+IHNlbGVjdG9yKSB7IG1fdGFnSGlzdG9yeSA9IFdU
Rjo6bW92ZShzZWxlY3Rvcik7IH0KKyAgICB2b2lkIHNldFRhZ0hpc3Rvcnkoc3RkOjp1bmlxdWVf
cHRyPENTU1BhcnNlclNlbGVjdG9yPiBzZWxlY3RvcikgeyBtX3RhZ0hpc3RvcnkgPSBXVEZNb3Zl
KHNlbGVjdG9yKTsgfQogICAgIHZvaWQgY2xlYXJUYWdIaXN0b3J5KCkgeyBtX3RhZ0hpc3Rvcnku
cmVzZXQoKTsgfQogICAgIHZvaWQgaW5zZXJ0VGFnSGlzdG9yeShDU1NTZWxlY3Rvcjo6UmVsYXRp
b24gYmVmb3JlLCBzdGQ6OnVuaXF1ZV9wdHI8Q1NTUGFyc2VyU2VsZWN0b3I+LCBDU1NTZWxlY3Rv
cjo6UmVsYXRpb24gYWZ0ZXIpOwogICAgIHZvaWQgYXBwZW5kVGFnSGlzdG9yeShDU1NTZWxlY3Rv
cjo6UmVsYXRpb24sIHN0ZDo6dW5pcXVlX3B0cjxDU1NQYXJzZXJTZWxlY3Rvcj4pOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuaAppbmRleCBjMGQxYmQ5MzA1OTkxYWQ4NzgzNmU0
NGNmYWU3ZjAyNGMwMWIxYTk2Li45YTQyY2JlZTM0YWJhYmY2OTNiODZkOTNhZWNhODM1ZDM4ZmY5
OWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuaApAQCAtMzk5LDEzICsz
OTksMTMgQEAgcHJpdmF0ZToKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBDU1NQcmltaXRpdmVW
YWx1ZShSZWZQdHI8VD4mJiB2YWx1ZSkKICAgICAgICAgOiBDU1NWYWx1ZShQcmltaXRpdmVDbGFz
cykKICAgICB7Ci0gICAgICAgIGluaXQoV1RGOjptb3ZlKHZhbHVlKSk7CisgICAgICAgIGluaXQo
V1RGTW92ZSh2YWx1ZSkpOwogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IENTU1By
aW1pdGl2ZVZhbHVlKFJlZjxUPiYmIHZhbHVlKQogICAgICAgICA6IENTU1ZhbHVlKFByaW1pdGl2
ZUNsYXNzKQogICAgIHsKLSAgICAgICAgaW5pdChXVEY6Om1vdmUodmFsdWUpKTsKKyAgICAgICAg
aW5pdChXVEZNb3ZlKHZhbHVlKSk7CiAgICAgfQogCiAgICAgc3RhdGljIHZvaWQgY3JlYXRlKGlu
dCk7IC8vIGNvbXBpbGUtdGltZSBndWFyZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmlt
aXRpdmVWYWx1ZU1hcHBpbmdzLmgKaW5kZXggZTUzMTVlNDJiZGJhMDk5Zjg2ZDdmN2QzODAwNTgx
MmNhMWZkN2RhMC4uNTI4MzhkNWVjNzRjMjgyNjhjOTQ1NDY1NjI2NmI1OWJmOTUwYjExYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oCkBAIC00
ODIyLDcgKzQ4MjIsNyBAQCB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NT
UHJpbWl0aXZlVmFsdWUoQ1NTRm9udEZhbWlseSBmb250RmFtaWx5KQogICAgIDogQ1NTVmFsdWUo
UHJpbWl0aXZlQ2xhc3MpCiB7CiAgICAgbV9wcmltaXRpdmVVbml0VHlwZSA9IENTU19GT05UX0ZB
TUlMWTsKLSAgICBtX3ZhbHVlLmZvbnRGYW1pbHkgPSBuZXcgQ1NTRm9udEZhbWlseShXVEY6Om1v
dmUoZm9udEZhbWlseSkpOworICAgIG1fdmFsdWUuZm9udEZhbWlseSA9IG5ldyBDU1NGb250RmFt
aWx5KFdURk1vdmUoZm9udEZhbWlseSkpOwogfQogCiB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmlt
aXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoRVZlY3RvckVmZmVjdCBlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NQcm9wZXJ0eS5jcHAKaW5kZXggYWVhODc5ODI5ODA4N2E2NDJmMzg4NmI1NDFkMjNkNTM1
NzE0M2Y2NS4uNWM3MWQ1YzQ1Y2QwNDExYzk1NTZjMzRkYWFkZWM0MzAwOWZjZGRhYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTUHJvcGVydHkuY3BwCkBAIC01MSw3ICs1MSw3IEBAIHZvaWQgQ1NTUHJvcGVy
dHk6OndyYXBWYWx1ZUluQ29tbWFTZXBhcmF0ZWRMaXN0KCkKIHsKICAgICBhdXRvIGxpc3QgPSBD
U1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CiAgICAgbGlzdC5nZXQoKS5hcHBl
bmQobV92YWx1ZS5yZWxlYXNlTm9uTnVsbCgpKTsKLSAgICBtX3ZhbHVlID0gV1RGOjptb3ZlKGxp
c3QpOworICAgIG1fdmFsdWUgPSBXVEZNb3ZlKGxpc3QpOwogfQogCiBzdGF0aWMgQ1NTUHJvcGVy
dHlJRCByZXNvbHZlVG9QaHlzaWNhbFByb3BlcnR5KFRleHREaXJlY3Rpb24gZGlyZWN0aW9uLCBX
cml0aW5nTW9kZSB3cml0aW5nTW9kZSwgTG9naWNhbEJveFNpZGUgbG9naWNhbFNpZGUsIGNvbnN0
IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmIHNob3J0aGFuZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NTZWdtZW50ZWRGb250RmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTU2VnbWVudGVkRm9udEZhY2UuY3BwCmluZGV4IDVjYmZjYTRlN2I3MjAxMDk5NWE4MTEyYmRi
NDc2YjVkZGVhNWRkYTIuLmYxODgwNWRkZTRhYTg1M2U4NTRiMmMyNmNmZTM2NDg1OTAxNTU3ZGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWdtZW50ZWRGb250RmFjZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlZ21lbnRlZEZvbnRGYWNlLmNwcApAQCAtODYs
MTkgKzg2LDE5IEBAIHZvaWQgQ1NTU2VnbWVudGVkRm9udEZhY2U6OmFwcGVuZEZvbnRGYWNlKFJl
ZjxDU1NGb250RmFjZT4mJiBmb250RmFjZSkKIHsKICAgICBwcnVuZVRhYmxlKCk7CiAgICAgZm9u
dEZhY2UtPmFkZGVkVG9TZWdtZW50ZWRGb250RmFjZSh0aGlzKTsKLSAgICBtX2ZvbnRGYWNlcy5h
cHBlbmQoV1RGOjptb3ZlKGZvbnRGYWNlKSk7CisgICAgbV9mb250RmFjZXMuYXBwZW5kKFdURk1v
dmUoZm9udEZhY2UpKTsKIH0KIAogc3RhdGljIHZvaWQgYXBwZW5kRm9udFdpdGhJbnZhbGlkVW5p
Y29kZVJhbmdlSWZMb2FkaW5nKEZvbnRSYW5nZXMmIHJhbmdlcywgUmVmPEZvbnQ+JiYgZm9udCwg
Y29uc3QgVmVjdG9yPENTU0ZvbnRGYWNlOjpVbmljb2RlUmFuZ2U+JiB1bmljb2RlUmFuZ2VzKQog
ewogICAgIGlmIChmb250LT5pc0xvYWRpbmcoKSkgewotICAgICAgICByYW5nZXMuYXBwZW5kUmFu
Z2UoRm9udFJhbmdlczo6UmFuZ2UoMCwgMCwgV1RGOjptb3ZlKGZvbnQpKSk7CisgICAgICAgIHJh
bmdlcy5hcHBlbmRSYW5nZShGb250UmFuZ2VzOjpSYW5nZSgwLCAwLCBXVEZNb3ZlKGZvbnQpKSk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICB1bnNpZ25lZCBudW1SYW5nZXMgPSB1bmlj
b2RlUmFuZ2VzLnNpemUoKTsKICAgICBpZiAoIW51bVJhbmdlcykgewotICAgICAgICByYW5nZXMu
YXBwZW5kUmFuZ2UoRm9udFJhbmdlczo6UmFuZ2UoMCwgMHg3RkZGRkZGRiwgV1RGOjptb3ZlKGZv
bnQpKSk7CisgICAgICAgIHJhbmdlcy5hcHBlbmRSYW5nZShGb250UmFuZ2VzOjpSYW5nZSgwLCAw
eDdGRkZGRkZGLCBXVEZNb3ZlKGZvbnQpKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTU2VsZWN0b3IuY3BwCmluZGV4IGRlMDEyNDViNWU2NDIwNzk5MDk4NmZjMDNk
ZWY2MzgyMzMyNDI4MDAuLmJiMzM5OGM3MGNiMzcxMzk5NjNjNWRjY2U1NzEzMzgyODEyYmFlMDQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmNwcApAQCAtNzQ4LDEzICs3NDgsMTMgQEAgdm9p
ZCBDU1NTZWxlY3Rvcjo6c2V0QXJndW1lbnQoY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKIHZv
aWQgQ1NTU2VsZWN0b3I6OnNldExhbmdBcmd1bWVudExpc3Qoc3RkOjp1bmlxdWVfcHRyPFZlY3Rv
cjxBdG9taWNTdHJpbmc+PiBhcmd1bWVudExpc3QpCiB7CiAgICAgY3JlYXRlUmFyZURhdGEoKTsK
LSAgICBtX2RhdGEubV9yYXJlRGF0YS0+bV9sYW5nQXJndW1lbnRMaXN0ID0gV1RGOjptb3ZlKGFy
Z3VtZW50TGlzdCk7CisgICAgbV9kYXRhLm1fcmFyZURhdGEtPm1fbGFuZ0FyZ3VtZW50TGlzdCA9
IFdURk1vdmUoYXJndW1lbnRMaXN0KTsKIH0KIAogdm9pZCBDU1NTZWxlY3Rvcjo6c2V0U2VsZWN0
b3JMaXN0KHN0ZDo6dW5pcXVlX3B0cjxDU1NTZWxlY3Rvckxpc3Q+IHNlbGVjdG9yTGlzdCkKIHsK
ICAgICBjcmVhdGVSYXJlRGF0YSgpOwotICAgIG1fZGF0YS5tX3JhcmVEYXRhLT5tX3NlbGVjdG9y
TGlzdCA9IFdURjo6bW92ZShzZWxlY3Rvckxpc3QpOworICAgIG1fZGF0YS5tX3JhcmVEYXRhLT5t
X3NlbGVjdG9yTGlzdCA9IFdURk1vdmUoc2VsZWN0b3JMaXN0KTsKIH0KIAogYm9vbCBDU1NTZWxl
Y3Rvcjo6cGFyc2VOdGgoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1N0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuY3BwCmlu
ZGV4IDk4MDEyYmU2NWRjMjgxYjE2NzQ4ZWUyMDRjMTNiNWNhYmEzMDczMjYuLjFmYzg5MzkyNWFj
ZjBhOTdjMjE3MDM5MTAxYTc4ZDM2Yzk0ZWJmZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NTdHlsZVNoZWV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVT
aGVldC5jcHAKQEAgLTc4LDEyICs3OCwxMiBAQCBzdGF0aWMgYm9vbCBpc0FjY2VwdGFibGVDU1NT
dHlsZVNoZWV0UGFyZW50KE5vZGUqIHBhcmVudE5vZGUpCiAKIFJlZjxDU1NTdHlsZVNoZWV0PiBD
U1NTdHlsZVNoZWV0OjpjcmVhdGUoUmVmPFN0eWxlU2hlZXRDb250ZW50cz4mJiBzaGVldCwgQ1NT
SW1wb3J0UnVsZSogb3duZXJSdWxlKQogeyAKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NT
dHlsZVNoZWV0KFdURjo6bW92ZShzaGVldCksIG93bmVyUnVsZSkpOworICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IENTU1N0eWxlU2hlZXQoV1RGTW92ZShzaGVldCksIG93bmVyUnVsZSkpOwogfQog
CiBSZWY8Q1NTU3R5bGVTaGVldD4gQ1NTU3R5bGVTaGVldDo6Y3JlYXRlKFJlZjxTdHlsZVNoZWV0
Q29udGVudHM+JiYgc2hlZXQsIE5vZGUqIG93bmVyTm9kZSkKIHsgCi0gICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgQ1NTU3R5bGVTaGVldChXVEY6Om1vdmUoc2hlZXQpLCBvd25lck5vZGUsIFRleHRQ
b3NpdGlvbjo6bWluaW11bVBvc2l0aW9uKCksIGZhbHNlKSk7CisgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgQ1NTU3R5bGVTaGVldChXVEZNb3ZlKHNoZWV0KSwgb3duZXJOb2RlLCBUZXh0UG9zaXRp
b246Om1pbmltdW1Qb3NpdGlvbigpLCBmYWxzZSkpOwogfQogCiBSZWY8Q1NTU3R5bGVTaGVldD4g
Q1NTU3R5bGVTaGVldDo6Y3JlYXRlSW5saW5lKE5vZGUmIG93bmVyTm9kZSwgY29uc3QgVVJMJiBi
YXNlVVJMLCBjb25zdCBUZXh0UG9zaXRpb24mIHN0YXJ0UG9zaXRpb24sIGNvbnN0IFN0cmluZyYg
ZW5jb2RpbmcpCkBAIC05Myw3ICs5Myw3IEBAIFJlZjxDU1NTdHlsZVNoZWV0PiBDU1NTdHlsZVNo
ZWV0OjpjcmVhdGVJbmxpbmUoTm9kZSYgb3duZXJOb2RlLCBjb25zdCBVUkwmIGJhc2VVCiB9CiAK
IENTU1N0eWxlU2hlZXQ6OkNTU1N0eWxlU2hlZXQoUmVmPFN0eWxlU2hlZXRDb250ZW50cz4mJiBj
b250ZW50cywgQ1NTSW1wb3J0UnVsZSogb3duZXJSdWxlKQotICAgIDogbV9jb250ZW50cyhXVEY6
Om1vdmUoY29udGVudHMpKQorICAgIDogbV9jb250ZW50cyhXVEZNb3ZlKGNvbnRlbnRzKSkKICAg
ICAsIG1faXNJbmxpbmVTdHlsZXNoZWV0KGZhbHNlKQogICAgICwgbV9pc0Rpc2FibGVkKGZhbHNl
KQogICAgICwgbV9tdXRhdGVkUnVsZXMoZmFsc2UpCkBAIC0xMDUsNyArMTA1LDcgQEAgQ1NTU3R5
bGVTaGVldDo6Q1NTU3R5bGVTaGVldChSZWY8U3R5bGVTaGVldENvbnRlbnRzPiYmIGNvbnRlbnRz
LCBDU1NJbXBvcnRSdWxlKgogfQogCiBDU1NTdHlsZVNoZWV0OjpDU1NTdHlsZVNoZWV0KFJlZjxT
dHlsZVNoZWV0Q29udGVudHM+JiYgY29udGVudHMsIE5vZGUqIG93bmVyTm9kZSwgY29uc3QgVGV4
dFBvc2l0aW9uJiBzdGFydFBvc2l0aW9uLCBib29sIGlzSW5saW5lU3R5bGVzaGVldCkKLSAgICA6
IG1fY29udGVudHMoV1RGOjptb3ZlKGNvbnRlbnRzKSkKKyAgICA6IG1fY29udGVudHMoV1RGTW92
ZShjb250ZW50cykpCiAgICAgLCBtX2lzSW5saW5lU3R5bGVzaGVldChpc0lubGluZVN0eWxlc2hl
ZXQpCiAgICAgLCBtX2lzRGlzYWJsZWQoZmFsc2UpCiAgICAgLCBtX211dGF0ZWRSdWxlcyhmYWxz
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUxpc3QuaCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUxpc3QuaAppbmRleCBkZDljNWVmZGZkZGRmMmIyMjI4ODk3
ZDBiOGIwOWY5NzBlNDc5YTM4Li5jZWU0NGExZmQyMDVhMzdjNWZjY2YwNzJiZmNhOGVjMTQ3MjY5
NDZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVMaXN0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlTGlzdC5oCkBAIC05OCwxMiArOTgsMTIgQEAgcHJp
dmF0ZToKIAogaW5saW5lIHZvaWQgQ1NTVmFsdWVMaXN0OjphcHBlbmQoUmVmPENTU1ZhbHVlPiYm
IHZhbHVlKQogewotICAgIG1fdmFsdWVzLmFwcGVuZChXVEY6Om1vdmUodmFsdWUpKTsKKyAgICBt
X3ZhbHVlcy5hcHBlbmQoV1RGTW92ZSh2YWx1ZSkpOwogfQogCiBpbmxpbmUgdm9pZCBDU1NWYWx1
ZUxpc3Q6OnByZXBlbmQoUmVmPENTU1ZhbHVlPiYmIHZhbHVlKQogewotICAgIG1fdmFsdWVzLmlu
c2VydCgwLCBXVEY6Om1vdmUodmFsdWUpKTsKKyAgICBtX3ZhbHVlcy5pbnNlcnQoMCwgV1RGTW92
ZSh2YWx1ZSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvRG9jdW1lbnRSdWxlU2V0cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
RG9jdW1lbnRSdWxlU2V0cy5jcHAKaW5kZXggYjVmOTBjNjFjYjIxOGI5ZTY4Njg0N2QxMzlhMGY4
MTNkYjYxOTRiNS4uMzcwYzBjMDJiYWE3N2EzMzAyNGE5YWE2NzgwN2VlMzQzZmVmMWJmMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0RvY3VtZW50UnVsZVNldHMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9Eb2N1bWVudFJ1bGVTZXRzLmNwcApAQCAtNTQsNyArNTQsNyBAQCB2
b2lkIERvY3VtZW50UnVsZVNldHM6OmluaXRVc2VyU3R5bGUoRXh0ZW5zaW9uU3R5bGVTaGVldHMm
IGV4dGVuc2lvblN0eWxlU2hlZXRzLAogICAgIGNvbGxlY3RSdWxlc0Zyb21Vc2VyU3R5bGVTaGVl
dHMoZXh0ZW5zaW9uU3R5bGVTaGVldHMuaW5qZWN0ZWRVc2VyU3R5bGVTaGVldHMoKSwgKnRlbXBV
c2VyU3R5bGUsIG1lZGl1bSwgcmVzb2x2ZXIpOwogICAgIGNvbGxlY3RSdWxlc0Zyb21Vc2VyU3R5
bGVTaGVldHMoZXh0ZW5zaW9uU3R5bGVTaGVldHMuZG9jdW1lbnRVc2VyU3R5bGVTaGVldHMoKSwg
KnRlbXBVc2VyU3R5bGUsIG1lZGl1bSwgcmVzb2x2ZXIpOwogICAgIGlmICh0ZW1wVXNlclN0eWxl
LT5ydWxlQ291bnQoKSA+IDAgfHwgdGVtcFVzZXJTdHlsZS0+cGFnZVJ1bGVzKCkuc2l6ZSgpID4g
MCkKLSAgICAgICAgbV91c2VyU3R5bGUgPSBXVEY6Om1vdmUodGVtcFVzZXJTdHlsZSk7CisgICAg
ICAgIG1fdXNlclN0eWxlID0gV1RGTW92ZSh0ZW1wVXNlclN0eWxlKTsKIH0KIAogdm9pZCBEb2N1
bWVudFJ1bGVTZXRzOjpjb2xsZWN0UnVsZXNGcm9tVXNlclN0eWxlU2hlZXRzKGNvbnN0IFZlY3Rv
cjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4+JiB1c2VyU2hlZXRzLCBSdWxlU2V0JiB1c2VyU3R5bGUs
IGNvbnN0IE1lZGlhUXVlcnlFdmFsdWF0b3ImIG1lZGl1bSwgU3R5bGVSZXNvbHZlciYgcmVzb2x2
ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udExvYWRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvRm9udExvYWRlci5jcHAKaW5kZXggOTMzYjRhMzgyNDBjMGFiMjRhZDM2
MmNkMTA0ZTVlOTNhNDMwZmI3Zi4uZTFiZTQ3NDhlYmFmZWNlNzI1NDc5ZmZmMzU1YmVjODdlYmFh
YTA5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRMb2FkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250TG9hZGVyLmNwcApAQCAtMTY4LDcgKzE2OCw3IEBAIGJv
b2wgRm9udExvYWRlcjo6Y2FuU3VzcGVuZEZvckRvY3VtZW50U3VzcGVuc2lvbigpIGNvbnN0CiAK
IHZvaWQgRm9udExvYWRlcjo6c2NoZWR1bGVFdmVudChSZWY8RXZlbnQ+JiYgZXZlbnQpCiB7Ci0g
ICAgbV9wZW5kaW5nRXZlbnRzLmFwcGVuZChXVEY6Om1vdmUoZXZlbnQpKTsKKyAgICBtX3BlbmRp
bmdFdmVudHMuYXBwZW5kKFdURk1vdmUoZXZlbnQpKTsKICAgICBpZiAoIW1fcGVuZGluZ0V2ZW50
c1RpbWVyLmlzQWN0aXZlKCkpCiAgICAgICAgIG1fcGVuZGluZ0V2ZW50c1RpbWVyLnN0YXJ0T25l
U2hvdCgwKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYUxpc3QuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhTGlzdC5jcHAKaW5kZXggMzc2MjdkYWQ4YjBlNzQx
ZWU2YWQyYTAwODdlMDhhMDAxNDI5NmY3NS4uYzU1NzdiN2YyYTkzNGM4ZTI2NDJhNDFmMjZiY2I4
ZGI4NTVhN2I0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhTGlzdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhTGlzdC5jcHAKQEAgLTE0Myw3ICsxNDMsNyBA
QCBib29sIE1lZGlhUXVlcnlTZXQ6OnBhcnNlKGNvbnN0IFN0cmluZyYgbWVkaWFTdHJpbmcpCiAg
ICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICBtZWRpYVF1ZXJ5ID0gc3RkOjpt
YWtlX3VuaXF1ZTxNZWRpYVF1ZXJ5PihNZWRpYVF1ZXJ5OjpOb25lLCBtZWRpYURlc2NyaXB0b3Is
IG51bGxwdHIpOwogICAgICAgICB9Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQoV1RGOjptb3ZlKG1l
ZGlhUXVlcnkpKTsKKyAgICAgICAgcmVzdWx0LmFwcGVuZChXVEZNb3ZlKG1lZGlhUXVlcnkpKTsK
ICAgICB9CiAgICAgLy8gIiwsLCwiIGZhbGxzIHN0cmFpZ2h0IHRocm91Z2gsIGJ1dCBpcyBub3Qg
dmFsaWQgdW5sZXNzIGZhbGxiYWNrCiAgICAgaWYgKCFtX2ZhbGxiYWNrVG9EZXNjcmlwdG9yICYm
IGxpc3QuaXNFbXB0eSgpKSB7CkBAIC0xNTEsNyArMTUxLDcgQEAgYm9vbCBNZWRpYVF1ZXJ5U2V0
OjpwYXJzZShjb25zdCBTdHJpbmcmIG1lZGlhU3RyaW5nKQogICAgICAgICBpZiAoIXN0cmlwcGVk
TWVkaWFTdHJpbmcuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
LSAgICBtX3F1ZXJpZXMgPSBXVEY6Om1vdmUocmVzdWx0KTsKKyAgICBtX3F1ZXJpZXMgPSBXVEZN
b3ZlKHJlc3VsdCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTE2OCw3ICsxNjgsNyBAQCBi
b29sIE1lZGlhUXVlcnlTZXQ6OmFkZChjb25zdCBTdHJpbmcmIHF1ZXJ5U3RyaW5nKQogICAgIGlm
ICghcGFyc2VkUXVlcnkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIG1fcXVlcmllcy5h
cHBlbmQoV1RGOjptb3ZlKHBhcnNlZFF1ZXJ5KSk7CisgICAgbV9xdWVyaWVzLmFwcGVuZChXVEZN
b3ZlKHBhcnNlZFF1ZXJ5KSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTE5Miw3ICsxOTIs
NyBAQCBib29sIE1lZGlhUXVlcnlTZXQ6OnJlbW92ZShjb25zdCBTdHJpbmcmIHF1ZXJ5U3RyaW5n
VG9SZW1vdmUpCiAKIHZvaWQgTWVkaWFRdWVyeVNldDo6YWRkTWVkaWFRdWVyeShzdGQ6OnVuaXF1
ZV9wdHI8TWVkaWFRdWVyeT4gbWVkaWFRdWVyeSkKIHsKLSAgICBtX3F1ZXJpZXMuYXBwZW5kKFdU
Rjo6bW92ZShtZWRpYVF1ZXJ5KSk7CisgICAgbV9xdWVyaWVzLmFwcGVuZChXVEZNb3ZlKG1lZGlh
UXVlcnkpKTsKIH0KIAogU3RyaW5nIE1lZGlhUXVlcnlTZXQ6Om1lZGlhVGV4dCgpIGNvbnN0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvTWVkaWFRdWVyeS5jcHAKaW5kZXggYWViYzBlYjQ5MmYzNWM2NmU1YTY3OTRjYTVm
M2IxZWNkOGQ1Y2Y3MS4uYjQ2YTk3ZjBiMDI2NmZkZmI3ZjZjZmFkNTRmNThjZjdiN2EzY2M4ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5LmNwcApAQCAtNzUsNyArNzUsNyBAQCBTdHJpbmcgTWVk
aWFRdWVyeTo6c2VyaWFsaXplKCkgY29uc3QKIE1lZGlhUXVlcnk6Ok1lZGlhUXVlcnkoUmVzdHJp
Y3RvciByLCBjb25zdCBTdHJpbmcmIG1lZGlhVHlwZSwgc3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Np
b25WZWN0b3I+IGV4cHJzKQogICAgIDogbV9yZXN0cmljdG9yKHIpCiAgICAgLCBtX21lZGlhVHlw
ZShtZWRpYVR5cGUubG93ZXIoKSkKLSAgICAsIG1fZXhwcmVzc2lvbnMoV1RGOjptb3ZlKGV4cHJz
KSkKKyAgICAsIG1fZXhwcmVzc2lvbnMoV1RGTW92ZShleHBycykpCiAgICAgLCBtX2lnbm9yZWQo
ZmFsc2UpCiB7CiAgICAgaWYgKCFtX2V4cHJlc3Npb25zKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvUGFpci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1BhaXIuaAppbmRleCBlMzZl
YmYxMTJlYTU1YmYyNGRiMDQzY2I0YjYyYzcyOTExNzQ1NmE1Li5jYzhkZTFjYjA2MWFiYzlhNzY4
ODAzYzliYTc4ZTYxNTg0MTM2NzA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvUGFp
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9QYWlyLmgKQEAgLTQxLDExICs0MSwxMSBAQCBw
dWJsaWM6CiAKICAgICBzdGF0aWMgUmVmPFBhaXI+IGNyZWF0ZShSZWZQdHI8Q1NTUHJpbWl0aXZl
VmFsdWU+JiYgZmlyc3QsIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4mJiBzZWNvbmQpCiAgICAg
ewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQYWlyKFdURjo6bW92ZShmaXJzdCksIFdU
Rjo6bW92ZShzZWNvbmQpKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFBhaXIoV1RG
TW92ZShmaXJzdCksIFdURk1vdmUoc2Vjb25kKSkpOwogICAgIH0KICAgICBzdGF0aWMgUmVmPFBh
aXI+IGNyZWF0ZShSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+JiYgZmlyc3QsIFJlZlB0cjxDU1NQ
cmltaXRpdmVWYWx1ZT4mJiBzZWNvbmQsIElkZW50aWNhbFZhbHVlRW5jb2RpbmcgZW5jb2Rpbmcp
CiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQYWlyKFdURjo6bW92ZShmaXJz
dCksIFdURjo6bW92ZShzZWNvbmQpLCBlbmNvZGluZykpOworICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBQYWlyKFdURk1vdmUoZmlyc3QpLCBXVEZNb3ZlKHNlY29uZCksIGVuY29kaW5nKSk7
CiAgICAgfQogICAgIHZpcnR1YWwgflBhaXIoKSB7IH0KIApAQCAtNjQsOCArNjQsOCBAQCBwdWJs
aWM6CiAgICAgYm9vbCBlcXVhbHMoY29uc3QgUGFpciYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIGNv
bXBhcmVDU1NWYWx1ZVB0cihtX2ZpcnN0LCBvdGhlci5tX2ZpcnN0KSAmJiBjb21wYXJlQ1NTVmFs
dWVQdHIobV9zZWNvbmQsIG90aGVyLm1fc2Vjb25kKTsgfQogCiBwcml2YXRlOgotICAgIFBhaXIo
UmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiYmIGZpcnN0LCBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFs
dWU+JiYgc2Vjb25kKSA6IG1fZmlyc3QoV1RGOjptb3ZlKGZpcnN0KSksIG1fc2Vjb25kKFdURjo6
bW92ZShzZWNvbmQpKSB7IH0KLSAgICBQYWlyKFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4mJiBm
aXJzdCwgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiYmIHNlY29uZCwgSWRlbnRpY2FsVmFsdWVF
bmNvZGluZyBlbmNvZGluZykgOiBtX2ZpcnN0KFdURjo6bW92ZShmaXJzdCkpLCBtX3NlY29uZChX
VEY6Om1vdmUoc2Vjb25kKSksIG1fZW5jb2RpbmcoZW5jb2RpbmcpIHsgfQorICAgIFBhaXIoUmVm
UHRyPENTU1ByaW1pdGl2ZVZhbHVlPiYmIGZpcnN0LCBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+
JiYgc2Vjb25kKSA6IG1fZmlyc3QoV1RGTW92ZShmaXJzdCkpLCBtX3NlY29uZChXVEZNb3ZlKHNl
Y29uZCkpIHsgfQorICAgIFBhaXIoUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiYmIGZpcnN0LCBS
ZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+JiYgc2Vjb25kLCBJZGVudGljYWxWYWx1ZUVuY29kaW5n
IGVuY29kaW5nKSA6IG1fZmlyc3QoV1RGTW92ZShmaXJzdCkpLCBtX3NlY29uZChXVEZNb3ZlKHNl
Y29uZCkpLCBtX2VuY29kaW5nKGVuY29kaW5nKSB7IH0KIAogICAgIFJlZlB0cjxDU1NQcmltaXRp
dmVWYWx1ZT4gbV9maXJzdDsKICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IG1fc2Vjb25k
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1J1bGVTZXQuY3BwIGIvU291cmNlL1dl
YkNvcmUvY3NzL1J1bGVTZXQuY3BwCmluZGV4IGJkMjcyMzQ5OGRmNjgxMGYxNDc3NDNmMDE3ZjM3
NWY0NDQ1NmExOTAuLjM2YTI0ZWRhOWQ4Y2MyMzNmNjVlNTZmMDZkZjM5NjYzNWFlNDg3MDggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlU2V0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvUnVsZVNldC5jcHAKQEAgLTMyMyw3ICszMjMsNyBAQCB2b2lkIFJ1bGVTZXQ6OmFk
ZFJlZ2lvblJ1bGUoU3R5bGVSdWxlUmVnaW9uKiByZWdpb25SdWxlLCBib29sIGhhc0RvY3VtZW50
U2VjdXJpdAogICAgIC8vIFVwZGF0ZSB0aGUgImdsb2JhbCIgcnVsZSBjb3VudCBzbyB0aGF0IHBy
b3BlciBvcmRlciBpcyBtYWludGFpbmVkCiAgICAgbV9ydWxlQ291bnQgPSByZWdpb25SdWxlU2V0
LT5tX3J1bGVDb3VudDsKIAotICAgIG1fcmVnaW9uU2VsZWN0b3JzQW5kUnVsZVNldHMuYXBwZW5k
KFJ1bGVTZXRTZWxlY3RvclBhaXIocmVnaW9uUnVsZS0+c2VsZWN0b3JMaXN0KCkuZmlyc3QoKSwg
V1RGOjptb3ZlKHJlZ2lvblJ1bGVTZXQpKSk7CisgICAgbV9yZWdpb25TZWxlY3RvcnNBbmRSdWxl
U2V0cy5hcHBlbmQoUnVsZVNldFNlbGVjdG9yUGFpcihyZWdpb25SdWxlLT5zZWxlY3Rvckxpc3Qo
KS5maXJzdCgpLCBXVEZNb3ZlKHJlZ2lvblJ1bGVTZXQpKSk7CiB9CiAKIHZvaWQgUnVsZVNldDo6
YWRkQ2hpbGRSdWxlcyhjb25zdCBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZUJhc2U+PiYgcnVsZXMs
IGNvbnN0IE1lZGlhUXVlcnlFdmFsdWF0b3ImIG1lZGl1bSwgU3R5bGVSZXNvbHZlciogcmVzb2x2
ZXIsIGJvb2wgaGFzRG9jdW1lbnRTZWN1cml0eU9yaWdpbiwgYm9vbCBpc0luaXRpYXRpbmdFbGVt
ZW50SW5Vc2VyQWdlbnRTaGFkb3dUcmVlLCBBZGRSdWxlRmxhZ3MgYWRkUnVsZUZsYWdzKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1J1bGVTZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9SdWxlU2V0LmgKaW5kZXggM2U2MTkwYThhYzQwZWJjZGEwNTNlMmMxOTQwYzU1YTg3ZTViZWMw
Ny4uZTBiMzMzNjA2MTRkZTAyZmM0NWUxZGNmODA1ODA5NWY0Yjk5MDBiMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL1J1bGVTZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvUnVs
ZVNldC5oCkBAIC0xNDcsNyArMTQ3LDcgQEAgY2xhc3MgUnVsZVNldCB7CiAgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoUnVsZVNldCk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgog
ICAgIHN0cnVjdCBSdWxlU2V0U2VsZWN0b3JQYWlyIHsKLSAgICAgICAgUnVsZVNldFNlbGVjdG9y
UGFpcihjb25zdCBDU1NTZWxlY3Rvciogc2VsZWN0b3IsIHN0ZDo6dW5pcXVlX3B0cjxSdWxlU2V0
PiBydWxlU2V0KSA6IHNlbGVjdG9yKHNlbGVjdG9yKSwgcnVsZVNldChXVEY6Om1vdmUocnVsZVNl
dCkpIHsgfQorICAgICAgICBSdWxlU2V0U2VsZWN0b3JQYWlyKGNvbnN0IENTU1NlbGVjdG9yKiBz
ZWxlY3Rvciwgc3RkOjp1bmlxdWVfcHRyPFJ1bGVTZXQ+IHJ1bGVTZXQpIDogc2VsZWN0b3Ioc2Vs
ZWN0b3IpLCBydWxlU2V0KFdURk1vdmUocnVsZVNldCkpIHsgfQogICAgICAgICBSdWxlU2V0U2Vs
ZWN0b3JQYWlyKGNvbnN0IFJ1bGVTZXRTZWxlY3RvclBhaXImIHBhaXIpIDogc2VsZWN0b3IocGFp
ci5zZWxlY3RvciksIHJ1bGVTZXQoY29uc3RfY2FzdDxSdWxlU2V0U2VsZWN0b3JQYWlyKj4oJnBh
aXIpLT5ydWxlU2V0LnJlbGVhc2UoKSkgeyB9CiAKICAgICAgICAgY29uc3QgQ1NTU2VsZWN0b3Iq
IHNlbGVjdG9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1NWR0NTU0NvbXB1dGVk
U3R5bGVEZWNsYXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTQ29tcHV0ZWRT
dHlsZURlY2xhcmF0aW9uLmNwcAppbmRleCA4YTkwYzhhOGY2Y2RjNzhlMTYwNGMyN2JjZTc3ZjBl
NWQ4ZjQ5ZjhlLi44OTM3YTg4YWFiNjQxYjE4ODM5MGI3MWE5MmQ4ZjJhZjAwNjM3MTVjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0
aW9uLmNwcApAQCAtNDAsMjggKzQwLDI4IEBAIHN0YXRpYyBSZWY8Q1NTVmFsdWU+IHBhaW50T3Jk
ZXIoUGFpbnRPcmRlciBwYWludE9yZGVyKQogICAgIGNhc2UgUGFpbnRPcmRlck5vcm1hbDoKICAg
ICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKENTU1ZhbHVl
Tm9ybWFsKTsKICAgICBjYXNlIFBhaW50T3JkZXJGaWxsOgotICAgICAgICBwYWludE9yZGVyTGlz
dC0+YXBwZW5kKFdURjo6bW92ZShmaWxsKSk7CisgICAgICAgIHBhaW50T3JkZXJMaXN0LT5hcHBl
bmQoV1RGTW92ZShmaWxsKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUGFpbnRPcmRlckZp
bGxNYXJrZXJzOgotICAgICAgICBwYWludE9yZGVyTGlzdC0+YXBwZW5kKFdURjo6bW92ZShmaWxs
KSk7Ci0gICAgICAgIHBhaW50T3JkZXJMaXN0LT5hcHBlbmQoV1RGOjptb3ZlKG1hcmtlcnMpKTsK
KyAgICAgICAgcGFpbnRPcmRlckxpc3QtPmFwcGVuZChXVEZNb3ZlKGZpbGwpKTsKKyAgICAgICAg
cGFpbnRPcmRlckxpc3QtPmFwcGVuZChXVEZNb3ZlKG1hcmtlcnMpKTsKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBQYWludE9yZGVyU3Ryb2tlOgotICAgICAgICBwYWludE9yZGVyTGlzdC0+YXBw
ZW5kKFdURjo6bW92ZShzdHJva2UpKTsKKyAgICAgICAgcGFpbnRPcmRlckxpc3QtPmFwcGVuZChX
VEZNb3ZlKHN0cm9rZSkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFBhaW50T3JkZXJTdHJv
a2VNYXJrZXJzOgotICAgICAgICBwYWludE9yZGVyTGlzdC0+YXBwZW5kKFdURjo6bW92ZShzdHJv
a2UpKTsKLSAgICAgICAgcGFpbnRPcmRlckxpc3QtPmFwcGVuZChXVEY6Om1vdmUobWFya2Vycykp
OworICAgICAgICBwYWludE9yZGVyTGlzdC0+YXBwZW5kKFdURk1vdmUoc3Ryb2tlKSk7CisgICAg
ICAgIHBhaW50T3JkZXJMaXN0LT5hcHBlbmQoV1RGTW92ZShtYXJrZXJzKSk7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgUGFpbnRPcmRlck1hcmtlcnM6Ci0gICAgICAgIHBhaW50T3JkZXJMaXN0
LT5hcHBlbmQoV1RGOjptb3ZlKG1hcmtlcnMpKTsKKyAgICAgICAgcGFpbnRPcmRlckxpc3QtPmFw
cGVuZChXVEZNb3ZlKG1hcmtlcnMpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQYWludE9y
ZGVyTWFya2Vyc1N0cm9rZToKLSAgICAgICAgcGFpbnRPcmRlckxpc3QtPmFwcGVuZChXVEY6Om1v
dmUobWFya2VycykpOwotICAgICAgICBwYWludE9yZGVyTGlzdC0+YXBwZW5kKFdURjo6bW92ZShz
dHJva2UpKTsKKyAgICAgICAgcGFpbnRPcmRlckxpc3QtPmFwcGVuZChXVEZNb3ZlKG1hcmtlcnMp
KTsKKyAgICAgICAgcGFpbnRPcmRlckxpc3QtPmFwcGVuZChXVEZNb3ZlKHN0cm9rZSkpOwogICAg
ICAgICBicmVhazsKICAgICB9Ci0gICAgcmV0dXJuIFdURjo6bW92ZShwYWludE9yZGVyTGlzdCk7
CisgICAgcmV0dXJuIFdURk1vdmUocGFpbnRPcmRlckxpc3QpOwogfQogCiBzdGF0aWMgUmVmUHRy
PENTU1ByaW1pdGl2ZVZhbHVlPiBnbHlwaE9yaWVudGF0aW9uVG9DU1NQcmltaXRpdmVWYWx1ZShF
R2x5cGhPcmllbnRhdGlvbiBvcmllbnRhdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9Tb3VyY2VTaXplTGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU291cmNlU2l6ZUxp
c3QuY3BwCmluZGV4IDE5MzY3MDUwYzAxMmE0NTE1N2NlMjdkNDExNDc0MDhkMmYwZGViMzguLjhk
MWQwMTZiNzQ5MjRhYTE3ZTEwYTliMWNkMTQyMmMxYmU0NGYzNGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9Tb3VyY2VTaXplTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L1NvdXJjZVNpemVMaXN0LmNwcApAQCAtMzgsMTAgKzM4LDEwIEBAIHN0YXRpYyBib29sIG1hdGNo
KHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVF1ZXJ5RXhwPiYmIGV4cHJlc3Npb24sIFJlbmRlclN0eWxl
JiBzdHlsCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgYXV0byBleHBMaXN0ID0gc3RkOjpt
YWtlX3VuaXF1ZTxWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPE1lZGlhUXVlcnlFeHA+Pj4oKTsKLSAg
ICBleHBMaXN0LT5hcHBlbmQoV1RGOjptb3ZlKGV4cHJlc3Npb24pKTsKKyAgICBleHBMaXN0LT5h
cHBlbmQoV1RGTW92ZShleHByZXNzaW9uKSk7CiAKICAgICBSZWZQdHI8TWVkaWFRdWVyeVNldD4g
bWVkaWFRdWVyeVNldCA9IE1lZGlhUXVlcnlTZXQ6OmNyZWF0ZSgpOwotICAgIG1lZGlhUXVlcnlT
ZXQtPmFkZE1lZGlhUXVlcnkoc3RkOjptYWtlX3VuaXF1ZTxNZWRpYVF1ZXJ5PihNZWRpYVF1ZXJ5
OjpOb25lLCAiYWxsIiwgV1RGOjptb3ZlKGV4cExpc3QpKSk7CisgICAgbWVkaWFRdWVyeVNldC0+
YWRkTWVkaWFRdWVyeShzdGQ6Om1ha2VfdW5pcXVlPE1lZGlhUXVlcnk+KE1lZGlhUXVlcnk6Ok5v
bmUsICJhbGwiLCBXVEZNb3ZlKGV4cExpc3QpKSk7CiAKICAgICBNZWRpYVF1ZXJ5RXZhbHVhdG9y
IG1lZGlhUXVlcnlFdmFsdWF0b3IoInNjcmVlbiIsIGZyYW1lLCAmc3R5bGUpOwogICAgIHJldHVy
biBtZWRpYVF1ZXJ5RXZhbHVhdG9yLmV2YWwobWVkaWFRdWVyeVNldC5nZXQoKSk7CkBAIC03Miw3
ICs3Miw3IEBAIGZsb2F0IHBhcnNlU2l6ZXNBdHRyaWJ1dGUoU3RyaW5nVmlldyBzaXplc0F0dHJp
YnV0ZSwgUmVuZGVyVmlldyogdmlldywgRnJhbWUqIGZyCiAgICAgICAgIHJldHVybiAwOwogICAg
IFJlbmRlclN0eWxlJiBzdHlsZSA9IHZpZXctPnN0eWxlKCk7CiAgICAgZm9yIChhdXRvJiBzb3Vy
Y2VTaXplIDogQ1NTUGFyc2VyKENTU1N0cmljdE1vZGUpLnBhcnNlU2l6ZXNBdHRyaWJ1dGUoc2l6
ZXNBdHRyaWJ1dGUpKSB7Ci0gICAgICAgIGlmIChtYXRjaChXVEY6Om1vdmUoc291cmNlU2l6ZS5l
eHByZXNzaW9uKSwgc3R5bGUsIGZyYW1lKSkKKyAgICAgICAgaWYgKG1hdGNoKFdURk1vdmUoc291
cmNlU2l6ZS5leHByZXNzaW9uKSwgc3R5bGUsIGZyYW1lKSkKICAgICAgICAgICAgIHJldHVybiBj
b21wdXRlTGVuZ3RoKHNvdXJjZVNpemUubGVuZ3RoLmdldCgpLCBzdHlsZSwgdmlldyk7CiAgICAg
fQogICAgIHJldHVybiBkZWZhdWx0TGVuZ3RoKHN0eWxlLCB2aWV3KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDdXN0b20uaCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9TdHlsZUJ1aWxkZXJDdXN0b20uaAppbmRleCA1Y2I4YTY3YjJiNTE5ZDVkNmMxOTg0Zjc1ODhj
NTkzZTgwMDY5ZDM5Li4zODQyYTJmOWQ0MDQ0ODI3N2U0NDIxMGNmNTkzOTgxOTRlNWUyMGE3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ3VzdG9tLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckN1c3RvbS5oCkBAIC03NzIsOSArNzcyLDkg
QEAgaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVRleHRPckJveFNoYWRvd1Zh
bHVlKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmUKICAgICAgICAgICAgIGNvbG9yID0gc3R5bGVSZXNv
bHZlci5zdHlsZSgpLT5jb2xvcigpOwogICAgICAgICBhdXRvIHNoYWRvd0RhdGEgPSBzdGQ6Om1h
a2VfdW5pcXVlPFNoYWRvd0RhdGE+KEludFBvaW50KHgsIHkpLCBibHVyLCBzcHJlYWQsIHNoYWRv
d1N0eWxlLCBpZCA9PSBDU1NQcm9wZXJ0eVdlYmtpdEJveFNoYWRvdywgY29sb3IuaXNWYWxpZCgp
ID8gY29sb3IgOiBDb2xvcjo6dHJhbnNwYXJlbnQpOwogICAgICAgICBpZiAoaWQgPT0gQ1NTUHJv
cGVydHlUZXh0U2hhZG93KQotICAgICAgICAgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRU
ZXh0U2hhZG93KFdURjo6bW92ZShzaGFkb3dEYXRhKSwgIWlzRmlyc3RFbnRyeSk7IC8vIGFkZCB0
byB0aGUgbGlzdCBpZiB0aGlzIGlzIG5vdCB0aGUgZmlyc3QgZW50cnkKKyAgICAgICAgICAgIHN0
eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0VGV4dFNoYWRvdyhXVEZNb3ZlKHNoYWRvd0RhdGEpLCAh
aXNGaXJzdEVudHJ5KTsgLy8gYWRkIHRvIHRoZSBsaXN0IGlmIHRoaXMgaXMgbm90IHRoZSBmaXJz
dCBlbnRyeQogICAgICAgICBlbHNlCi0gICAgICAgICAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCkt
PnNldEJveFNoYWRvdyhXVEY6Om1vdmUoc2hhZG93RGF0YSksICFpc0ZpcnN0RW50cnkpOyAvLyBh
ZGQgdG8gdGhlIGxpc3QgaWYgdGhpcyBpcyBub3QgdGhlIGZpcnN0IGVudHJ5CisgICAgICAgICAg
ICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldEJveFNoYWRvdyhXVEZNb3ZlKHNoYWRvd0RhdGEp
LCAhaXNGaXJzdEVudHJ5KTsgLy8gYWRkIHRvIHRoZSBsaXN0IGlmIHRoaXMgaXMgbm90IHRoZSBm
aXJzdCBlbnRyeQogICAgICAgICBpc0ZpcnN0RW50cnkgPSBmYWxzZTsKICAgICB9CiB9CkBAIC0x
MzYxLDcgKzEzNjEsNyBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFs
dWVDb250ZW50KFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsCiAgICAgICAgICAgICBpZiAo
bGlzdFN0eWxlSWRlbnQgIT0gQ1NTVmFsdWVOb25lKQogICAgICAgICAgICAgICAgIGxpc3RTdHls
ZVR5cGUgPSBzdGF0aWNfY2FzdDxFTGlzdFN0eWxlVHlwZT4obGlzdFN0eWxlSWRlbnQgLSBDU1NW
YWx1ZURpc2MpOwogICAgICAgICAgICAgYXV0byBjb3VudGVyID0gc3RkOjptYWtlX3VuaXF1ZTxD
b3VudGVyQ29udGVudD4oY291bnRlclZhbHVlLT5pZGVudGlmaWVyKCksIGxpc3RTdHlsZVR5cGUs
IGNvdW50ZXJWYWx1ZS0+c2VwYXJhdG9yKCkpOwotICAgICAgICAgICAgc3R5bGVSZXNvbHZlci5z
dHlsZSgpLT5zZXRDb250ZW50KFdURjo6bW92ZShjb3VudGVyKSwgZGlkU2V0KTsKKyAgICAgICAg
ICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0Q29udGVudChXVEZNb3ZlKGNvdW50ZXIpLCBk
aWRTZXQpOwogICAgICAgICAgICAgZGlkU2V0ID0gdHJ1ZTsKICAgICAgICAgfSBlbHNlIHsKICAg
ICAgICAgICAgIHN3aXRjaCAoY29udGVudFZhbHVlLmdldFZhbHVlSUQoKSkgewpAQCAtMTc2Niw3
ICsxNzY2LDcgQEAgaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlV2ls
bENoYW5nZShTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmUKICAgICAgICAgfQogICAgIH0KIAot
ICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0V2lsbENoYW5nZShXVEY6Om1vdmUod2lsbENo
YW5nZSkpOworICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0V2lsbENoYW5nZShXVEZNb3Zl
KHdpbGxDaGFuZ2UpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3Nz
L1N0eWxlUmVzb2x2ZXIuY3BwCmluZGV4IDFhNzMyMTBiNTgxZGRjN2M2ZTY3NjFmZTEzZDdlNjgx
Y2I3NTBlOGIuLjU3OTJhNzAyZGU3YWQ0YTkwNGVjMmEwYTllZWMzODhlNjZlYWY2YzIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKQEAgLTQxMyw3ICs0MTMsNyBAQCBpbmxpbmUg
dm9pZCBTdHlsZVJlc29sdmVyOjpTdGF0ZTo6aW5pdEZvclN0eWxlUmVzb2x2ZShEb2N1bWVudCYg
ZG9jdW1lbnQsIEVsZW1lbgogCiBpbmxpbmUgdm9pZCBTdHlsZVJlc29sdmVyOjpTdGF0ZTo6c2V0
U3R5bGUoUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQogewotICAgIG1fc3R5bGUgPSBXVEY6Om1v
dmUoc3R5bGUpOworICAgIG1fc3R5bGUgPSBXVEZNb3ZlKHN0eWxlKTsKICAgICB1cGRhdGVDb252
ZXJzaW9uRGF0YSgpOwogfQogCkBAIC0xNTU0LDcgKzE1NTQsNyBAQCB2b2lkIFN0eWxlUmVzb2x2
ZXI6OmFkZFRvTWF0Y2hlZFByb3BlcnRpZXNDYWNoZShjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUs
IGNvbnN0CiAgICAgLy8gVGhlIFJlbmRlclN0eWxlIGluIHRoZSBjYWNoZSBpcyByZWFsbHkganVz
dCBhIGhvbGRlciBmb3IgdGhlIHN1YnN0cnVjdHVyZXMgYW5kIG5ldmVyIHVzZWQgYXMtaXMuCiAg
ICAgY2FjaGVJdGVtLnJlbmRlclN0eWxlID0gUmVuZGVyU3R5bGU6OmNsb25lKHN0eWxlKTsKICAg
ICBjYWNoZUl0ZW0ucGFyZW50UmVuZGVyU3R5bGUgPSBSZW5kZXJTdHlsZTo6Y2xvbmUocGFyZW50
U3R5bGUpOwotICAgIG1fbWF0Y2hlZFByb3BlcnRpZXNDYWNoZS5hZGQoaGFzaCwgV1RGOjptb3Zl
KGNhY2hlSXRlbSkpOworICAgIG1fbWF0Y2hlZFByb3BlcnRpZXNDYWNoZS5hZGQoaGFzaCwgV1RG
TW92ZShjYWNoZUl0ZW0pKTsKIH0KIAogdm9pZCBTdHlsZVJlc29sdmVyOjppbnZhbGlkYXRlTWF0
Y2hlZFByb3BlcnRpZXNDYWNoZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVSZXNvbHZlci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaAppbmRleCBj
NzFhMjFkMWJkMDlkY2M5NGFmN2E0ZmZiMzk4ODczOTAzNGQzMTIzLi5jYzZiMjI1OGUzNmZlN2Fl
MTIxZjUxMTIyNjE4MDI2ZjRjNjk4ZDc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U3R5bGVSZXNvbHZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmgK
QEAgLTM5NSw3ICszOTUsNyBAQCBwdWJsaWM6CiAgICAgICAgIFJlbmRlclN0eWxlKiBzdHlsZSgp
IGNvbnN0IHsgcmV0dXJuIG1fc3R5bGUuZ2V0KCk7IH0KICAgICAgICAgUmVmPFJlbmRlclN0eWxl
PiB0YWtlU3R5bGUoKSB7IHJldHVybiBtX3N0eWxlLnJlbGVhc2VOb25OdWxsKCk7IH0KIAotICAg
ICAgICB2b2lkIHNldFBhcmVudFN0eWxlKFJlZjxSZW5kZXJTdHlsZT4mJiBwYXJlbnRTdHlsZSkg
eyBtX3BhcmVudFN0eWxlID0gV1RGOjptb3ZlKHBhcmVudFN0eWxlKTsgfQorICAgICAgICB2b2lk
IHNldFBhcmVudFN0eWxlKFJlZjxSZW5kZXJTdHlsZT4mJiBwYXJlbnRTdHlsZSkgeyBtX3BhcmVu
dFN0eWxlID0gV1RGTW92ZShwYXJlbnRTdHlsZSk7IH0KICAgICAgICAgUmVuZGVyU3R5bGUqIHBh
cmVudFN0eWxlKCkgY29uc3QgeyByZXR1cm4gbV9wYXJlbnRTdHlsZS5nZXQoKTsgfQogICAgICAg
ICBSZW5kZXJTdHlsZSogcm9vdEVsZW1lbnRTdHlsZSgpIGNvbnN0IHsgcmV0dXJuIG1fcm9vdEVs
ZW1lbnRTdHlsZTsgfQogCkBAIC00NDEsOCArNDQxLDggQEAgcHVibGljOgogICAgICAgICBDYXNj
YWRlZFByb3BlcnRpZXMqIGF1dGhvclJvbGxiYWNrKCkgY29uc3QgeyByZXR1cm4gbV9hdXRob3JS
b2xsYmFjay5nZXQoKTsgfQogICAgICAgICBDYXNjYWRlZFByb3BlcnRpZXMqIHVzZXJSb2xsYmFj
aygpIGNvbnN0IHsgcmV0dXJuIG1fdXNlclJvbGxiYWNrLmdldCgpOyB9CiAgICAgICAgIAotICAg
ICAgICB2b2lkIHNldEF1dGhvclJvbGxiYWNrKHN0ZDo6dW5pcXVlX3B0cjxDYXNjYWRlZFByb3Bl
cnRpZXM+JiByb2xsYmFjaykgeyBtX2F1dGhvclJvbGxiYWNrID0gV1RGOjptb3ZlKHJvbGxiYWNr
KTsgfQotICAgICAgICB2b2lkIHNldFVzZXJSb2xsYmFjayhzdGQ6OnVuaXF1ZV9wdHI8Q2FzY2Fk
ZWRQcm9wZXJ0aWVzPiYgcm9sbGJhY2spIHsgbV91c2VyUm9sbGJhY2sgPSBXVEY6Om1vdmUocm9s
bGJhY2spOyB9CisgICAgICAgIHZvaWQgc2V0QXV0aG9yUm9sbGJhY2soc3RkOjp1bmlxdWVfcHRy
PENhc2NhZGVkUHJvcGVydGllcz4mIHJvbGxiYWNrKSB7IG1fYXV0aG9yUm9sbGJhY2sgPSBXVEZN
b3ZlKHJvbGxiYWNrKTsgfQorICAgICAgICB2b2lkIHNldFVzZXJSb2xsYmFjayhzdGQ6OnVuaXF1
ZV9wdHI8Q2FzY2FkZWRQcm9wZXJ0aWVzPiYgcm9sbGJhY2spIHsgbV91c2VyUm9sbGJhY2sgPSBX
VEZNb3ZlKHJvbGxiYWNrKTsgfQogICAgICAgICAKICAgICBwcml2YXRlOgogICAgICAgICB2b2lk
IHVwZGF0ZUNvbnZlcnNpb25EYXRhKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U3R5bGVSdWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuY3BwCmluZGV4IGE1
ZjQ5YzBmYmZlZjM2ZjgxNDhiY2NjNjE1N2Y1YTlmMDYzNTVjM2UuLjExNmMxMjk3NWU5ZWI4M2I1
NDhkNDUyYTIzODBhOTFlOWNkMmMwZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
dHlsZVJ1bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuY3BwCkBAIC0x
OTcsNyArMTk3LDcgQEAgdW5zaWduZWQgU3R5bGVSdWxlOjphdmVyYWdlU2l6ZUluQnl0ZXMoKQog
CiBTdHlsZVJ1bGU6OlN0eWxlUnVsZShpbnQgc291cmNlTGluZSwgUmVmPFN0eWxlUHJvcGVydGll
cz4mJiBwcm9wZXJ0aWVzKQogICAgIDogU3R5bGVSdWxlQmFzZShTdHlsZSwgc291cmNlTGluZSkK
LSAgICAsIG1fcHJvcGVydGllcyhXVEY6Om1vdmUocHJvcGVydGllcykpCisgICAgLCBtX3Byb3Bl
cnRpZXMoV1RGTW92ZShwcm9wZXJ0aWVzKSkKIHsKIH0KIApAQCAtMjI2LDcgKzIyNiw3IEBAIFJl
ZjxTdHlsZVJ1bGU+IFN0eWxlUnVsZTo6Y3JlYXRlKGludCBzb3VyY2VMaW5lLCBjb25zdCBWZWN0
b3I8Y29uc3QgQ1NTU2VsZWN0b3IqCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNlbGVj
dG9ycy5zaXplKCk7ICsraSkKICAgICAgICAgbmV3IChOb3ROdWxsLCAmc2VsZWN0b3JMaXN0QXJy
YXlbaV0pIENTU1NlbGVjdG9yKCpzZWxlY3RvcnMuYXQoaSkpOwogICAgIHNlbGVjdG9yTGlzdEFy
cmF5W3NlbGVjdG9ycy5zaXplKCkgLSAxXS5zZXRMYXN0SW5TZWxlY3Rvckxpc3QoKTsKLSAgICBh
dXRvIHJ1bGUgPSBTdHlsZVJ1bGU6OmNyZWF0ZShzb3VyY2VMaW5lLCBXVEY6Om1vdmUocHJvcGVy
dGllcykpOworICAgIGF1dG8gcnVsZSA9IFN0eWxlUnVsZTo6Y3JlYXRlKHNvdXJjZUxpbmUsIFdU
Rk1vdmUocHJvcGVydGllcykpOwogICAgIHJ1bGUuZ2V0KCkucGFyc2VyQWRvcHRTZWxlY3RvckFy
cmF5KHNlbGVjdG9yTGlzdEFycmF5KTsKICAgICByZXR1cm4gcnVsZTsKIH0KQEAgLTI1OSw3ICsy
NTksNyBAQCBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZT4+IFN0eWxlUnVsZTo6c3BsaXRJbnRvTXVs
dGlwbGVSdWxlc1dpdGhNYXhpbXVtU2VsZWN0b3JDbwogCiBTdHlsZVJ1bGVQYWdlOjpTdHlsZVJ1
bGVQYWdlKFJlZjxTdHlsZVByb3BlcnRpZXM+JiYgcHJvcGVydGllcykKICAgICA6IFN0eWxlUnVs
ZUJhc2UoUGFnZSkKLSAgICAsIG1fcHJvcGVydGllcyhXVEY6Om1vdmUocHJvcGVydGllcykpCisg
ICAgLCBtX3Byb3BlcnRpZXMoV1RGTW92ZShwcm9wZXJ0aWVzKSkKIHsKIH0KIApAQCAtMjgzLDcg
KzI4Myw3IEBAIE11dGFibGVTdHlsZVByb3BlcnRpZXMmIFN0eWxlUnVsZVBhZ2U6Om11dGFibGVQ
cm9wZXJ0aWVzKCkKIAogU3R5bGVSdWxlRm9udEZhY2U6OlN0eWxlUnVsZUZvbnRGYWNlKFJlZjxT
dHlsZVByb3BlcnRpZXM+JiYgcHJvcGVydGllcykKICAgICA6IFN0eWxlUnVsZUJhc2UoRm9udEZh
Y2UsIDApCi0gICAgLCBtX3Byb3BlcnRpZXMoV1RGOjptb3ZlKHByb3BlcnRpZXMpKQorICAgICwg
bV9wcm9wZXJ0aWVzKFdURk1vdmUocHJvcGVydGllcykpCiB7CiB9CiAKQEAgLTMyMCw3ICszMjAs
NyBAQCBTdHlsZVJ1bGVHcm91cDo6U3R5bGVSdWxlR3JvdXAoY29uc3QgU3R5bGVSdWxlR3JvdXAm
IG8pCiAKIHZvaWQgU3R5bGVSdWxlR3JvdXA6OndyYXBwZXJJbnNlcnRSdWxlKHVuc2lnbmVkIGlu
ZGV4LCBSZWY8U3R5bGVSdWxlQmFzZT4mJiBydWxlKQogewotICAgIG1fY2hpbGRSdWxlcy5pbnNl
cnQoaW5kZXgsIFdURjo6bW92ZShydWxlKSk7CisgICAgbV9jaGlsZFJ1bGVzLmluc2VydChpbmRl
eCwgV1RGTW92ZShydWxlKSk7CiB9CiAgICAgCiB2b2lkIFN0eWxlUnVsZUdyb3VwOjp3cmFwcGVy
UmVtb3ZlUnVsZSh1bnNpZ25lZCBpbmRleCkKQEAgLTM3Myw3ICszNzMsNyBAQCBTdHlsZVJ1bGVS
ZWdpb246OlN0eWxlUnVsZVJlZ2lvbihjb25zdCBTdHlsZVJ1bGVSZWdpb24mIG8pCiAjaWYgRU5B
QkxFKENTU19ERVZJQ0VfQURBUFRBVElPTikKIFN0eWxlUnVsZVZpZXdwb3J0OjpTdHlsZVJ1bGVW
aWV3cG9ydChSZWY8U3R5bGVQcm9wZXJ0aWVzPiYmIHByb3BlcnRpZXMpCiAgICAgOiBTdHlsZVJ1
bGVCYXNlKFZpZXdwb3J0LCAwKQotICAgICwgbV9wcm9wZXJ0aWVzKFdURjo6bW92ZShwcm9wZXJ0
aWVzKSkKKyAgICAsIG1fcHJvcGVydGllcyhXVEZNb3ZlKHByb3BlcnRpZXMpKQogewogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVSdWxlLmgKaW5kZXggZTlhNjM2NmU0ZTQ1ZTk1N2YyZjE0NmY2NTQ5NzJlNmY3
MGJlNzVmOS4uZTJmODk3MjhkMDljMTBmOTliODljOTY4Njg2MWUzMzBjZDIzNzE4MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9TdHlsZVJ1bGUuaApAQCAtMTA1LDcgKzEwNSw3IEBAIGNsYXNzIFN0eWxlUnVsZSA6IHB1
YmxpYyBTdHlsZVJ1bGVCYXNlIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFN0eWxlUnVsZT4g
Y3JlYXRlKGludCBzb3VyY2VMaW5lLCBSZWY8U3R5bGVQcm9wZXJ0aWVzPiYmIHByb3BlcnRpZXMp
CiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHlsZVJ1bGUoc291cmNlTGlu
ZSwgV1RGOjptb3ZlKHByb3BlcnRpZXMpKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFN0eWxlUnVsZShzb3VyY2VMaW5lLCBXVEZNb3ZlKHByb3BlcnRpZXMpKSk7CiAgICAgfQogICAg
IAogICAgIH5TdHlsZVJ1bGUoKTsKQEAgLTExNSw3ICsxMTUsNyBAQCBwdWJsaWM6CiAgICAgTXV0
YWJsZVN0eWxlUHJvcGVydGllcyYgbXV0YWJsZVByb3BlcnRpZXMoKTsKICAgICAKICAgICB2b2lk
IHBhcnNlckFkb3B0U2VsZWN0b3JWZWN0b3IoVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxDU1NQYXJz
ZXJTZWxlY3Rvcj4+JiBzZWxlY3RvcnMpIHsgbV9zZWxlY3Rvckxpc3QuYWRvcHRTZWxlY3RvclZl
Y3RvcihzZWxlY3RvcnMpOyB9Ci0gICAgdm9pZCB3cmFwcGVyQWRvcHRTZWxlY3Rvckxpc3QoQ1NT
U2VsZWN0b3JMaXN0JiBzZWxlY3RvcnMpIHsgbV9zZWxlY3Rvckxpc3QgPSBXVEY6Om1vdmUoc2Vs
ZWN0b3JzKTsgfQorICAgIHZvaWQgd3JhcHBlckFkb3B0U2VsZWN0b3JMaXN0KENTU1NlbGVjdG9y
TGlzdCYgc2VsZWN0b3JzKSB7IG1fc2VsZWN0b3JMaXN0ID0gV1RGTW92ZShzZWxlY3RvcnMpOyB9
CiAgICAgdm9pZCBwYXJzZXJBZG9wdFNlbGVjdG9yQXJyYXkoQ1NTU2VsZWN0b3IqIHNlbGVjdG9y
cykgeyBtX3NlbGVjdG9yTGlzdC5hZG9wdFNlbGVjdG9yQXJyYXkoc2VsZWN0b3JzKTsgfQogCiAg
ICAgUmVmPFN0eWxlUnVsZT4gY29weSgpIGNvbnN0IHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5
bGVSdWxlKCp0aGlzKSk7IH0KQEAgLTEzNiw3ICsxMzYsNyBAQCBwcml2YXRlOgogCiBjbGFzcyBT
dHlsZVJ1bGVGb250RmFjZSA6IHB1YmxpYyBTdHlsZVJ1bGVCYXNlIHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUmVmPFN0eWxlUnVsZUZvbnRGYWNlPiBjcmVhdGUoUmVmPFN0eWxlUHJvcGVydGllcz4m
JiBwcm9wZXJ0aWVzKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxlUnVsZUZvbnRGYWNlKFdU
Rjo6bW92ZShwcm9wZXJ0aWVzKSkpOyB9CisgICAgc3RhdGljIFJlZjxTdHlsZVJ1bGVGb250RmFj
ZT4gY3JlYXRlKFJlZjxTdHlsZVByb3BlcnRpZXM+JiYgcHJvcGVydGllcykgeyByZXR1cm4gYWRv
cHRSZWYoKm5ldyBTdHlsZVJ1bGVGb250RmFjZShXVEZNb3ZlKHByb3BlcnRpZXMpKSk7IH0KICAg
ICAKICAgICB+U3R5bGVSdWxlRm9udEZhY2UoKTsKIApAQCAtMTU1LDcgKzE1NSw3IEBAIHByaXZh
dGU6CiAKIGNsYXNzIFN0eWxlUnVsZVBhZ2UgOiBwdWJsaWMgU3R5bGVSdWxlQmFzZSB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFJlZjxTdHlsZVJ1bGVQYWdlPiBjcmVhdGUoUmVmPFN0eWxlUHJvcGVy
dGllcz4mJiBwcm9wZXJ0aWVzKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxlUnVsZVBhZ2Uo
V1RGOjptb3ZlKHByb3BlcnRpZXMpKSk7IH0KKyAgICBzdGF0aWMgUmVmPFN0eWxlUnVsZVBhZ2U+
IGNyZWF0ZShSZWY8U3R5bGVQcm9wZXJ0aWVzPiYmIHByb3BlcnRpZXMpIHsgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgU3R5bGVSdWxlUGFnZShXVEZNb3ZlKHByb3BlcnRpZXMpKSk7IH0KIAogICAgIH5T
dHlsZVJ1bGVQYWdlKCk7CiAKQEAgLTE2NCw3ICsxNjQsNyBAQCBwdWJsaWM6CiAgICAgTXV0YWJs
ZVN0eWxlUHJvcGVydGllcyYgbXV0YWJsZVByb3BlcnRpZXMoKTsKIAogICAgIHZvaWQgcGFyc2Vy
QWRvcHRTZWxlY3RvclZlY3RvcihWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPENTU1BhcnNlclNlbGVj
dG9yPj4mIHNlbGVjdG9ycykgeyBtX3NlbGVjdG9yTGlzdC5hZG9wdFNlbGVjdG9yVmVjdG9yKHNl
bGVjdG9ycyk7IH0KLSAgICB2b2lkIHdyYXBwZXJBZG9wdFNlbGVjdG9yTGlzdChDU1NTZWxlY3Rv
ckxpc3QmIHNlbGVjdG9ycykgeyBtX3NlbGVjdG9yTGlzdCA9IFdURjo6bW92ZShzZWxlY3RvcnMp
OyB9CisgICAgdm9pZCB3cmFwcGVyQWRvcHRTZWxlY3Rvckxpc3QoQ1NTU2VsZWN0b3JMaXN0JiBz
ZWxlY3RvcnMpIHsgbV9zZWxlY3Rvckxpc3QgPSBXVEZNb3ZlKHNlbGVjdG9ycyk7IH0KIAogICAg
IFJlZjxTdHlsZVJ1bGVQYWdlPiBjb3B5KCkgY29uc3QgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBT
dHlsZVJ1bGVQYWdlKCp0aGlzKSk7IH0KIApAQCAtMjQ5LDcgKzI0OSw3IEBAIHByaXZhdGU6CiAj
aWYgRU5BQkxFKENTU19ERVZJQ0VfQURBUFRBVElPTikKIGNsYXNzIFN0eWxlUnVsZVZpZXdwb3J0
IDogcHVibGljIFN0eWxlUnVsZUJhc2UgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8U3R5bGVS
dWxlVmlld3BvcnQ+IGNyZWF0ZShSZWY8U3R5bGVQcm9wZXJ0aWVzPiYmIHByb3BlcnRpZXMpIHsg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVSdWxlVmlld3BvcnQoV1RGOjptb3ZlKHByb3BlcnRp
ZXMpKSk7IH0KKyAgICBzdGF0aWMgUmVmPFN0eWxlUnVsZVZpZXdwb3J0PiBjcmVhdGUoUmVmPFN0
eWxlUHJvcGVydGllcz4mJiBwcm9wZXJ0aWVzKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxl
UnVsZVZpZXdwb3J0KFdURk1vdmUocHJvcGVydGllcykpKTsgfQogCiAgICAgflN0eWxlUnVsZVZp
ZXdwb3J0KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzc2ppdC9TZWxlY3RvckNv
bXBpbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzc2ppdC9TZWxlY3RvckNvbXBpbGVyLmNwcApp
bmRleCBhZmIxYmI2ZDAyNDllNGFjNTRhZGJjYWQwYzcxNmJlNTI5YjRmNGM1Li4xZTk2ZjU0MThm
YWY2YzI1YTU1ZWYwYzA1NmIzOWNlYWNjNTBlNmZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3NqaXQvU2VsZWN0b3JDb21waWxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nzaml0
L1NlbGVjdG9yQ29tcGlsZXIuY3BwCkBAIC0xODMwLDcgKzE4MzAsNyBAQCB2b2lkIFNlbGVjdG9y
Q29kZUdlbmVyYXRvcjo6Z2VuZXJhdGVTZWxlY3RvckNoZWNrZXIoKQogICAgICAgICAgICAgfSBl
bHNlCiAgICAgICAgICAgICAgICAgZmFpbHVyZVN0YWNrID0gc3VjY2Vzc1N0YWNrOwogCi0gICAg
ICAgICAgICBtX3N0YWNrQWxsb2NhdG9yLm1lcmdlKFdURjo6bW92ZShzdWNjZXNzU3RhY2spLCBX
VEY6Om1vdmUoZmFpbHVyZVN0YWNrKSk7CisgICAgICAgICAgICBtX3N0YWNrQWxsb2NhdG9yLm1l
cmdlKFdURk1vdmUoc3VjY2Vzc1N0YWNrKSwgV1RGTW92ZShmYWlsdXJlU3RhY2spKTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KQEAgLTE4NjUsNyArMTg2NSw3IEBAIHZv
aWQgU2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZVNlbGVjdG9yQ2hlY2tlcigpCiAgICAg
ICAgIG1fYXNzZW1ibGVyLnJldCgpOwogICAgIH0gZWxzZQogICAgICAgICBlYXJseUZhaWx1cmVT
dGFjayA9IHN1Y2Nlc3NTdGFjazsKLSAgICBtX3N0YWNrQWxsb2NhdG9yLm1lcmdlKFdURjo6bW92
ZShzdWNjZXNzU3RhY2spLCBXVEY6Om1vdmUoZWFybHlGYWlsdXJlU3RhY2spKTsKKyAgICBtX3N0
YWNrQWxsb2NhdG9yLm1lcmdlKFdURk1vdmUoc3VjY2Vzc1N0YWNrKSwgV1RGTW92ZShlYXJseUZh
aWx1cmVTdGFjaykpOwogfQogCiB2b2lkIFNlbGVjdG9yQ29kZUdlbmVyYXRvcjo6Z2VuZXJhdGVT
ZWxlY3RvckNoZWNrZXJFeGNsdWRpbmdQc2V1ZG9FbGVtZW50cyhBc3NlbWJsZXI6Okp1bXBMaXN0
JiBmYWlsdXJlQ2FzZXMsIGNvbnN0IFNlbGVjdG9yRnJhZ21lbnRMaXN0JiBzZWxlY3RvckZyYWdt
ZW50TGlzdCkKQEAgLTIwMTIsNyArMjAxMiw3IEBAIHZvaWQgU2VsZWN0b3JDb2RlR2VuZXJhdG9y
OjpnZW5lcmF0ZUVsZW1lbnRNYXRjaGVzU2VsZWN0b3JMaXN0KEFzc2VtYmxlcjo6SnVtcExpCiAK
ICAgICAgICAgc2tpcEZhaWx1cmVDYXNlLmxpbmsoJm1fYXNzZW1ibGVyKTsKIAotICAgICAgICBt
X3N0YWNrQWxsb2NhdG9yLm1lcmdlKFdURjo6bW92ZShzdWNjZXNzU3RhY2spLCBXVEY6Om1vdmUo
ZmFpbHVyZVN0YWNrKSk7CisgICAgICAgIG1fc3RhY2tBbGxvY2F0b3IubWVyZ2UoV1RGTW92ZShz
dWNjZXNzU3RhY2spLCBXVEZNb3ZlKGZhaWx1cmVTdGFjaykpOwogICAgIH0KIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0FjdGl2ZURPTUNhbGxiYWNrTWljcm90YXNrLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9BY3RpdmVET01DYWxsYmFja01pY3JvdGFzay5jcHAKaW5kZXgg
ZjIzMDdjYzk3OTEyOTBmNGRkMWEzODJjZjI3NTQ0MDYzZDQwMTc4Yi4uM2QyM2VlZjk3MDk0MGNl
ZTUxZmRhZDI2ZjhlMjQ0YTkxYTFhYzlmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0FjdGl2ZURPTUNhbGxiYWNrTWljcm90YXNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
QWN0aXZlRE9NQ2FsbGJhY2tNaWNyb3Rhc2suY3BwCkBAIC0zMSw3ICszMSw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIEFjdGl2ZURPTUNhbGxiYWNrTWljcm90YXNrOjpBY3RpdmVET01DYWxsYmFj
a01pY3JvdGFzayhNaWNyb3Rhc2tRdWV1ZSYgcXVldWUsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiYmIHRhc2spCiAg
ICAgOiBBY3RpdmVET01DYWxsYmFjaygmc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKICAgICAsIG1f
cXVldWUocXVldWUpCi0gICAgLCBtX3Rhc2soV1RGOjptb3ZlKHRhc2spKQorICAgICwgbV90YXNr
KFdURk1vdmUodGFzaykpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9B
dHRyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9BdHRyLmNwcAppbmRleCBhMGVhNDM3N2U2MmEy
MzZkN2JkNzAzOGIzYWZjMzJmNGRmZDI2ZDg3Li40YThkZDQzOTA0Yjc3ZjllMzVkYTE4ZTVhM2I5
NGVhY2ExODRmMjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQXR0ci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0F0dHIuY3BwCkBAIC0xMzksNyArMTM5LDcgQEAgUmVmPE5v
ZGU+IEF0dHI6OmNsb25lTm9kZUludGVybmFsKERvY3VtZW50JiB0YXJnZXREb2N1bWVudCwgQ2xv
bmluZ09wZXJhdGlvbikKIHsKICAgICBSZWY8QXR0cj4gY2xvbmUgPSBhZG9wdFJlZigqbmV3IEF0
dHIodGFyZ2V0RG9jdW1lbnQsIHF1YWxpZmllZE5hbWUoKSwgdmFsdWUoKSkpOwogICAgIGNsb25l
Q2hpbGROb2RlcyhjbG9uZSk7Ci0gICAgcmV0dXJuIFdURjo6bW92ZShjbG9uZSk7CisgICAgcmV0
dXJuIFdURk1vdmUoY2xvbmUpOwogfQogCiAvLyBET00gU2VjdGlvbiAxLjEuMQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0NoaWxkTGlzdE11dGF0aW9uU2NvcGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL0NoaWxkTGlzdE11dGF0aW9uU2NvcGUuY3BwCmluZGV4IDA5YmUzODBiN2Nk
NmUzZjExYmRhOTg1MmY1ZjM5MGVhZjY4ZjE5N2IuLjMxZTVmMzE5MDdiNTc2YTljYmIxOWI0YzYx
NzQ5OWJiMzczM2RmM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGlsZExpc3RN
dXRhdGlvblNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hpbGRMaXN0TXV0YXRp
b25TY29wZS5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgc3RhdGljIEFjY3VtdWxhdG9yTWFwJiBhY2N1
bXVsYXRvck1hcCgpCiBDaGlsZExpc3RNdXRhdGlvbkFjY3VtdWxhdG9yOjpDaGlsZExpc3RNdXRh
dGlvbkFjY3VtdWxhdG9yKENvbnRhaW5lck5vZGUmIHRhcmdldCwgc3RkOjp1bmlxdWVfcHRyPE11
dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwPiBvYnNlcnZlcnMpCiAgICAgOiBtX3RhcmdldCh0
YXJnZXQpCiAgICAgLCBtX2xhc3RBZGRlZChudWxscHRyKQotICAgICwgbV9vYnNlcnZlcnMoV1RG
Ojptb3ZlKG9ic2VydmVycykpCisgICAgLCBtX29ic2VydmVycyhXVEZNb3ZlKG9ic2VydmVycykp
CiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAppbmRleCA5OGFkMmRjYmJl
ODU3Yjk2NmE0MDIzMGI5ZTQ2OTkzNTNjMzJhY2VhLi42MGY5M2JmMzZlYTU3MzgzYjY5ZjI0ZDYx
MWM4NDJjZjIxNmJiNDZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVy
Tm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCkBAIC0y
NDAsNyArMjQwLDcgQEAgYm9vbCBDb250YWluZXJOb2RlOjppbnNlcnRCZWZvcmUoUmVmPE5vZGU+
JiYgbmV3Q2hpbGQsIE5vZGUqIHJlZkNoaWxkLCBFeGNlcHRpb24KIAogICAgIC8vIGluc2VydEJl
Zm9yZShub2RlLCAwKSBpcyBlcXVpdmFsZW50IHRvIGFwcGVuZENoaWxkKG5vZGUpCiAgICAgaWYg
KCFyZWZDaGlsZCkKLSAgICAgICAgcmV0dXJuIGFwcGVuZENoaWxkKFdURjo6bW92ZShuZXdDaGls
ZCksIGVjKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENoaWxkKFdURk1vdmUobmV3Q2hpbGQpLCBl
Yyk7CiAKICAgICAvLyBNYWtlIHN1cmUgYWRkaW5nIHRoZSBuZXcgY2hpbGQgaXMgT0suCiAgICAg
aWYgKCFlbnN1cmVQcmVJbnNlcnRpb25WYWxpZGl0eShuZXdDaGlsZCwgcmVmQ2hpbGQsIGVjKSkK
QEAgLTkyNCw3ICs5MjQsNyBAQCB1bnNpZ25lZCBDb250YWluZXJOb2RlOjpjaGlsZEVsZW1lbnRD
b3VudCgpIGNvbnN0CiAKIHZvaWQgQ29udGFpbmVyTm9kZTo6YXBwZW5kKFZlY3RvcjxOb2RlT3JT
dHJpbmc+JiYgbm9kZU9yU3RyaW5nVmVjdG9yLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICBS
ZWZQdHI8Tm9kZT4gbm9kZSA9IGNvbnZlcnROb2Rlc09yU3RyaW5nc0ludG9Ob2RlKCp0aGlzLCBX
VEY6Om1vdmUobm9kZU9yU3RyaW5nVmVjdG9yKSwgZWMpOworICAgIFJlZlB0cjxOb2RlPiBub2Rl
ID0gY29udmVydE5vZGVzT3JTdHJpbmdzSW50b05vZGUoKnRoaXMsIFdURk1vdmUobm9kZU9yU3Ry
aW5nVmVjdG9yKSwgZWMpOwogICAgIGlmIChlYyB8fCAhbm9kZSkKICAgICAgICAgcmV0dXJuOwog
CkBAIC05MzMsNyArOTMzLDcgQEAgdm9pZCBDb250YWluZXJOb2RlOjphcHBlbmQoVmVjdG9yPE5v
ZGVPclN0cmluZz4mJiBub2RlT3JTdHJpbmdWZWN0b3IsIEV4Y2VwdGlvbkMKIAogdm9pZCBDb250
YWluZXJOb2RlOjpwcmVwZW5kKFZlY3RvcjxOb2RlT3JTdHJpbmc+JiYgbm9kZU9yU3RyaW5nVmVj
dG9yLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICBSZWZQdHI8Tm9kZT4gbm9kZSA9IGNvbnZl
cnROb2Rlc09yU3RyaW5nc0ludG9Ob2RlKCp0aGlzLCBXVEY6Om1vdmUobm9kZU9yU3RyaW5nVmVj
dG9yKSwgZWMpOworICAgIFJlZlB0cjxOb2RlPiBub2RlID0gY29udmVydE5vZGVzT3JTdHJpbmdz
SW50b05vZGUoKnRoaXMsIFdURk1vdmUobm9kZU9yU3RyaW5nVmVjdG9yKSwgZWMpOwogICAgIGlm
IChlYyB8fCAhbm9kZSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRGF0YVRyYW5zZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNm
ZXIuY3BwCmluZGV4IDg1ZmNlNzU4ZjQ3NjNhNzI4OTEyMzI2OTFhMTQ0ZTNiOTg1MThkNzcuLjJm
M2IwNTAzZDYxMGVhMTRiMTZhZGMyNWJmYjU1YjdmZDBlMDEwOTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9E
YXRhVHJhbnNmZXIuY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIHByaXZhdGU6CiAKIERhdGFUcmFuc2Zl
cjo6RGF0YVRyYW5zZmVyKERhdGFUcmFuc2ZlckFjY2Vzc1BvbGljeSBwb2xpY3ksIHN0ZDo6dW5p
cXVlX3B0cjxQYXN0ZWJvYXJkPiBwYXN0ZWJvYXJkLCBUeXBlIHR5cGUsIGJvb2wgZm9yRmlsZURy
YWcpCiAgICAgOiBtX3BvbGljeShwb2xpY3kpCi0gICAgLCBtX3Bhc3RlYm9hcmQoV1RGOjptb3Zl
KHBhc3RlYm9hcmQpKQorICAgICwgbV9wYXN0ZWJvYXJkKFdURk1vdmUocGFzdGVib2FyZCkpCiAj
aWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKICAgICAsIG1fZm9yRHJhZyh0eXBlICE9IENvcHlBbmRQ
YXN0ZSkKICAgICAsIG1fZm9yRmlsZURyYWcoZm9yRmlsZURyYWcpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmNwcAppbmRleCBiMzFkZjRiYTMyY2E2MmFlNzc0OWQxZTNmNzIxMmVhMjFkNTM1Y2M4Li43YjY3
NjRkYTQ5MGRkMDNkZDNhYTQ3NmI5ZGUwNTQ2YWUxNDJmNzBmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAKQEAgLTE3MTUsNyArMTcxNSw3IEBAIFJlZjxSYW5nZT4gRG9jdW1lbnQ6OmNyZWF0ZVJh
bmdlKCkKIAogUmVmUHRyPE5vZGVJdGVyYXRvcj4gRG9jdW1lbnQ6OmNyZWF0ZU5vZGVJdGVyYXRv
cihOb2RlKiByb290LCB1bnNpZ25lZCBsb25nIHdoYXRUb1Nob3csIFJlZlB0cjxOb2RlRmlsdGVy
PiYmIGZpbHRlciwgYm9vbCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgcmV0dXJuIGNyZWF0
ZU5vZGVJdGVyYXRvcihyb290LCB3aGF0VG9TaG93LCBXVEY6Om1vdmUoZmlsdGVyKSwgZWMpOwor
ICAgIHJldHVybiBjcmVhdGVOb2RlSXRlcmF0b3Iocm9vdCwgd2hhdFRvU2hvdywgV1RGTW92ZShm
aWx0ZXIpLCBlYyk7CiB9CiAKIFJlZlB0cjxOb2RlSXRlcmF0b3I+IERvY3VtZW50OjpjcmVhdGVO
b2RlSXRlcmF0b3IoTm9kZSogcm9vdCwgdW5zaWduZWQgbG9uZyB3aGF0VG9TaG93LCBSZWZQdHI8
Tm9kZUZpbHRlcj4mJiBmaWx0ZXIsIEV4Y2VwdGlvbkNvZGUmIGVjKQpAQCAtMTcyNCw3ICsxNzI0
LDcgQEAgUmVmUHRyPE5vZGVJdGVyYXRvcj4gRG9jdW1lbnQ6OmNyZWF0ZU5vZGVJdGVyYXRvcihO
b2RlKiByb290LCB1bnNpZ25lZCBsb25nIHdoYXQKICAgICAgICAgZWMgPSBUeXBlRXJyb3I7CiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KLSAgICByZXR1cm4gTm9kZUl0ZXJhdG9yOjpj
cmVhdGUocm9vdCwgd2hhdFRvU2hvdywgV1RGOjptb3ZlKGZpbHRlcikpOworICAgIHJldHVybiBO
b2RlSXRlcmF0b3I6OmNyZWF0ZShyb290LCB3aGF0VG9TaG93LCBXVEZNb3ZlKGZpbHRlcikpOwog
fQogCiBSZWZQdHI8Tm9kZUl0ZXJhdG9yPiBEb2N1bWVudDo6Y3JlYXRlTm9kZUl0ZXJhdG9yKE5v
ZGUqIHJvb3QsIHVuc2lnbmVkIGxvbmcgd2hhdFRvU2hvdywgRXhjZXB0aW9uQ29kZSYgZWMpCkBA
IC0xNzM5LDcgKzE3MzksNyBAQCBSZWZQdHI8Tm9kZUl0ZXJhdG9yPiBEb2N1bWVudDo6Y3JlYXRl
Tm9kZUl0ZXJhdG9yKE5vZGUqIHJvb3QsIEV4Y2VwdGlvbkNvZGUmIGVjKQogCiBSZWZQdHI8VHJl
ZVdhbGtlcj4gRG9jdW1lbnQ6OmNyZWF0ZVRyZWVXYWxrZXIoTm9kZSogcm9vdCwgdW5zaWduZWQg
bG9uZyB3aGF0VG9TaG93LCBSZWZQdHI8Tm9kZUZpbHRlcj4mJiBmaWx0ZXIsIGJvb2wsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQogewotICAgIHJldHVybiBjcmVhdGVUcmVlV2Fsa2VyKHJvb3QsIHdoYXRU
b1Nob3csIFdURjo6bW92ZShmaWx0ZXIpLCBlYyk7CisgICAgcmV0dXJuIGNyZWF0ZVRyZWVXYWxr
ZXIocm9vdCwgd2hhdFRvU2hvdywgV1RGTW92ZShmaWx0ZXIpLCBlYyk7CiB9CiAKIFJlZlB0cjxU
cmVlV2Fsa2VyPiBEb2N1bWVudDo6Y3JlYXRlVHJlZVdhbGtlcihOb2RlKiByb290LCB1bnNpZ25l
ZCBsb25nIHdoYXRUb1Nob3csIFJlZlB0cjxOb2RlRmlsdGVyPiYmIGZpbHRlciwgRXhjZXB0aW9u
Q29kZSYgZWMpCkBAIC0xNzQ4LDcgKzE3NDgsNyBAQCBSZWZQdHI8VHJlZVdhbGtlcj4gRG9jdW1l
bnQ6OmNyZWF0ZVRyZWVXYWxrZXIoTm9kZSogcm9vdCwgdW5zaWduZWQgbG9uZyB3aGF0VG9TaAog
ICAgICAgICBlYyA9IFR5cGVFcnJvcjsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQot
ICAgIHJldHVybiBUcmVlV2Fsa2VyOjpjcmVhdGUoKnJvb3QsIHdoYXRUb1Nob3csIFdURjo6bW92
ZShmaWx0ZXIpKTsKKyAgICByZXR1cm4gVHJlZVdhbGtlcjo6Y3JlYXRlKCpyb290LCB3aGF0VG9T
aG93LCBXVEZNb3ZlKGZpbHRlcikpOwogfQogCiBSZWZQdHI8VHJlZVdhbGtlcj4gRG9jdW1lbnQ6
OmNyZWF0ZVRyZWVXYWxrZXIoTm9kZSogcm9vdCwgdW5zaWduZWQgbG9uZyB3aGF0VG9TaG93LCBF
eGNlcHRpb25Db2RlJiBlYykKQEAgLTI4ODMsNyArMjg4Myw3IEBAIEV2ZW50VGFyZ2V0KiBEb2N1
bWVudDo6ZXJyb3JFdmVudFRhcmdldCgpCiAKIHZvaWQgRG9jdW1lbnQ6OmxvZ0V4Y2VwdGlvblRv
Q29uc29sZShjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VV
UkwsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBSZWZQdHI8SW5zcGVjdG9yOjpT
Y3JpcHRDYWxsU3RhY2s+JiYgY2FsbFN0YWNrKQogewotICAgIGFkZE1lc3NhZ2UoTWVzc2FnZVNv
dXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIGVycm9yTWVzc2FnZSwgc291cmNlVVJMLCBs
aW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIFdURjo6bW92ZShjYWxsU3RhY2spKTsKKyAgICBhZGRN
ZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBlcnJvck1lc3Nh
Z2UsIHNvdXJjZVVSTCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBXVEZNb3ZlKGNhbGxTdGFj
aykpOwogfQogCiB2b2lkIERvY3VtZW50OjpzZXRVUkwoY29uc3QgVVJMJiB1cmwpCkBAIC0zNDc5
LDcgKzM0NzksNyBAQCBSZWY8Tm9kZT4gRG9jdW1lbnQ6OmNsb25lTm9kZUludGVybmFsKERvY3Vt
ZW50JiwgQ2xvbmluZ09wZXJhdGlvbiB0eXBlKQogICAgICAgICBjbG9uZUNoaWxkTm9kZXMoY2xv
bmUpOwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgcmV0dXJuIFdURjo6bW92ZShjbG9uZSk7
CisgICAgcmV0dXJuIFdURk1vdmUoY2xvbmUpOwogfQogCiBSZWY8RG9jdW1lbnQ+IERvY3VtZW50
OjpjbG9uZURvY3VtZW50V2l0aG91dENoaWxkcmVuKCkgY29uc3QKQEAgLTQxMTIsMTggKzQxMTIs
MTggQEAgdm9pZCBEb2N1bWVudDo6ZGlzcGF0Y2hXaW5kb3dMb2FkRXZlbnQoKQogdm9pZCBEb2N1
bWVudDo6ZW5xdWV1ZVdpbmRvd0V2ZW50KFJlZjxFdmVudD4mJiBldmVudCkKIHsKICAgICBldmVu
dC0+c2V0VGFyZ2V0KG1fZG9tV2luZG93LmdldCgpKTsKLSAgICBtX2V2ZW50UXVldWUuZW5xdWV1
ZUV2ZW50KFdURjo6bW92ZShldmVudCkpOworICAgIG1fZXZlbnRRdWV1ZS5lbnF1ZXVlRXZlbnQo
V1RGTW92ZShldmVudCkpOwogfQogCiB2b2lkIERvY3VtZW50OjplbnF1ZXVlRG9jdW1lbnRFdmVu
dChSZWY8RXZlbnQ+JiYgZXZlbnQpCiB7CiAgICAgZXZlbnQtPnNldFRhcmdldCh0aGlzKTsKLSAg
ICBtX2V2ZW50UXVldWUuZW5xdWV1ZUV2ZW50KFdURjo6bW92ZShldmVudCkpOworICAgIG1fZXZl
bnRRdWV1ZS5lbnF1ZXVlRXZlbnQoV1RGTW92ZShldmVudCkpOwogfQogCiB2b2lkIERvY3VtZW50
OjplbnF1ZXVlT3ZlcmZsb3dFdmVudChSZWY8RXZlbnQ+JiYgZXZlbnQpCiB7Ci0gICAgbV9ldmVu
dFF1ZXVlLmVucXVldWVFdmVudChXVEY6Om1vdmUoZXZlbnQpKTsKKyAgICBtX2V2ZW50UXVldWUu
ZW5xdWV1ZUV2ZW50KFdURk1vdmUoZXZlbnQpKTsKIH0KIAogUmVmUHRyPEV2ZW50PiBEb2N1bWVu
dDo6Y3JlYXRlRXZlbnQoY29uc3QgU3RyaW5nJiB0eXBlLCBFeGNlcHRpb25Db2RlJiBlYykKQEAg
LTQ4MzksNyArNDgzOSw3IEBAIHZvaWQgRG9jdW1lbnQ6OmFwcGx5WFNMVHJhbnNmb3JtKFByb2Nl
c3NpbmdJbnN0cnVjdGlvbiogcGkpCiAKIHZvaWQgRG9jdW1lbnQ6OnNldFRyYW5zZm9ybVNvdXJj
ZShzdGQ6OnVuaXF1ZV9wdHI8VHJhbnNmb3JtU291cmNlPiBzb3VyY2UpCiB7Ci0gICAgbV90cmFu
c2Zvcm1Tb3VyY2UgPSBXVEY6Om1vdmUoc291cmNlKTsKKyAgICBtX3RyYW5zZm9ybVNvdXJjZSA9
IFdURk1vdmUoc291cmNlKTsKIH0KIAogI2VuZGlmCkBAIC01MzQyLDcgKzUzNDIsNyBAQCB2b2lk
IERvY3VtZW50OjphZGRNZXNzYWdlKE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlTGV2ZWwg
bGV2ZWwsIGNvbnN0IFN0cmluZwogICAgIH0KIAogICAgIGlmIChQYWdlKiBwYWdlID0gdGhpcy0+
cGFnZSgpKQotICAgICAgICBwYWdlLT5jb25zb2xlKCkuYWRkTWVzc2FnZShzb3VyY2UsIGxldmVs
LCBtZXNzYWdlLCBzb3VyY2VVUkwsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgV1RGOjptb3Zl
KGNhbGxTdGFjayksIHN0YXRlLCByZXF1ZXN0SWRlbnRpZmllcik7CisgICAgICAgIHBhZ2UtPmNv
bnNvbGUoKS5hZGRNZXNzYWdlKHNvdXJjZSwgbGV2ZWwsIG1lc3NhZ2UsIHNvdXJjZVVSTCwgbGlu
ZU51bWJlciwgY29sdW1uTnVtYmVyLCBXVEZNb3ZlKGNhbGxTdGFjayksIHN0YXRlLCByZXF1ZXN0
SWRlbnRpZmllcik7CiB9CiAKIFNlY3VyaXR5T3JpZ2luKiBEb2N1bWVudDo6dG9wT3JpZ2luKCkg
Y29uc3QKQEAgLTUzNTIsNyArNTM1Miw3IEBAIFNlY3VyaXR5T3JpZ2luKiBEb2N1bWVudDo6dG9w
T3JpZ2luKCkgY29uc3QKIAogdm9pZCBEb2N1bWVudDo6cG9zdFRhc2soVGFzayB0YXNrKQogewot
ICAgIFRhc2sqIHRhc2tQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPFRhc2s+KFdURjo6bW92ZSh0YXNr
KSkucmVsZWFzZSgpOworICAgIFRhc2sqIHRhc2tQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPFRhc2s+
KFdURk1vdmUodGFzaykpLnJlbGVhc2UoKTsKICAgICBXZWFrUHRyPERvY3VtZW50PiBkb2N1bWVu
dFJlZmVyZW5jZShtX3dlYWtGYWN0b3J5LmNyZWF0ZVdlYWtQdHIoKSk7CiAKICAgICBjYWxsT25N
YWluVGhyZWFkKFs9XSB7CkBAIC01MzY1LDcgKzUzNjUsNyBAQCB2b2lkIERvY3VtZW50Ojpwb3N0
VGFzayhUYXNrIHRhc2spCiAKICAgICAgICAgUGFnZSogcGFnZSA9IGRvY3VtZW50LT5wYWdlKCk7
CiAgICAgICAgIGlmICgocGFnZSAmJiBwYWdlLT5kZWZlcnNMb2FkaW5nKCkgJiYgZG9jdW1lbnQt
PmFjdGl2ZURPTU9iamVjdHNBcmVTdXNwZW5kZWQoKSkgfHwgIWRvY3VtZW50LT5tX3BlbmRpbmdU
YXNrcy5pc0VtcHR5KCkpCi0gICAgICAgICAgICBkb2N1bWVudC0+bV9wZW5kaW5nVGFza3MuYXBw
ZW5kKFdURjo6bW92ZSgqdGFzay5yZWxlYXNlKCkpKTsKKyAgICAgICAgICAgIGRvY3VtZW50LT5t
X3BlbmRpbmdUYXNrcy5hcHBlbmQoV1RGTW92ZSgqdGFzay5yZWxlYXNlKCkpKTsKICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgdGFzay0+cGVyZm9ybVRhc2soKmRvY3VtZW50KTsKICAgICB9KTsK
QEAgLTUzNzMsNyArNTM3Myw3IEBAIHZvaWQgRG9jdW1lbnQ6OnBvc3RUYXNrKFRhc2sgdGFzaykK
IAogdm9pZCBEb2N1bWVudDo6cGVuZGluZ1Rhc2tzVGltZXJGaXJlZCgpCiB7Ci0gICAgVmVjdG9y
PFRhc2s+IHBlbmRpbmdUYXNrcyA9IFdURjo6bW92ZShtX3BlbmRpbmdUYXNrcyk7CisgICAgVmVj
dG9yPFRhc2s+IHBlbmRpbmdUYXNrcyA9IFdURk1vdmUobV9wZW5kaW5nVGFza3MpOwogICAgIGZv
ciAoYXV0byYgdGFzayA6IHBlbmRpbmdUYXNrcykKICAgICAgICAgdGFzay5wZXJmb3JtVGFzaygq
dGhpcyk7CiB9CkBAIC02MTA3LDEwICs2MTA3LDEwIEBAIHZvaWQgRG9jdW1lbnQ6OnNlbmRXaWxs
UmV2ZWFsRWRnZUV2ZW50c0lmTmVlZGVkKGNvbnN0IEludFBvaW50JiBvbGRQb3NpdGlvbiwgY29u
CiAgICAgICAgICYmIHdpbGxSZXZlYWxCb3R0b21Ob3RpZmljYXRpb25Qb2ludCA+PSBvbGRQb3Np
dGlvbi55KCkpIHsKICAgICAgICAgUmVmPEV2ZW50PiB3aWxsUmV2ZWFsRXZlbnQgPSBFdmVudDo6
Y3JlYXRlKGV2ZW50TmFtZXMoKS53ZWJraXR3aWxscmV2ZWFsYm90dG9tRXZlbnQsIGZhbHNlLCBm
YWxzZSk7CiAgICAgICAgIGlmICghdGFyZ2V0KQotICAgICAgICAgICAgZW5xdWV1ZVdpbmRvd0V2
ZW50KFdURjo6bW92ZSh3aWxsUmV2ZWFsRXZlbnQpKTsKKyAgICAgICAgICAgIGVucXVldWVXaW5k
b3dFdmVudChXVEZNb3ZlKHdpbGxSZXZlYWxFdmVudCkpOwogICAgICAgICBlbHNlIHsKICAgICAg
ICAgICAgIHdpbGxSZXZlYWxFdmVudC0+c2V0VGFyZ2V0KHRhcmdldCk7Ci0gICAgICAgICAgICBt
X2V2ZW50UXVldWUuZW5xdWV1ZUV2ZW50KFdURjo6bW92ZSh3aWxsUmV2ZWFsRXZlbnQpKTsKKyAg
ICAgICAgICAgIG1fZXZlbnRRdWV1ZS5lbnF1ZXVlRXZlbnQoV1RGTW92ZSh3aWxsUmV2ZWFsRXZl
bnQpKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtNjExOSwxMCArNjExOSwxMCBAQCB2b2lkIERv
Y3VtZW50OjpzZW5kV2lsbFJldmVhbEVkZ2VFdmVudHNJZk5lZWRlZChjb25zdCBJbnRQb2ludCYg
b2xkUG9zaXRpb24sIGNvbgogICAgICAgICAmJiB3aWxsUmV2ZWFsVG9wTm90aWZpY2F0aW9uUG9p
bnQgPD0gb2xkUG9zaXRpb24ueSgpKSB7CiAgICAgICAgIFJlZjxFdmVudD4gd2lsbFJldmVhbEV2
ZW50ID0gRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkud2Via2l0d2lsbHJldmVhbHRvcEV2ZW50
LCBmYWxzZSwgZmFsc2UpOwogICAgICAgICBpZiAoIXRhcmdldCkKLSAgICAgICAgICAgIGVucXVl
dWVXaW5kb3dFdmVudChXVEY6Om1vdmUod2lsbFJldmVhbEV2ZW50KSk7CisgICAgICAgICAgICBl
bnF1ZXVlV2luZG93RXZlbnQoV1RGTW92ZSh3aWxsUmV2ZWFsRXZlbnQpKTsKICAgICAgICAgZWxz
ZSB7CiAgICAgICAgICAgICB3aWxsUmV2ZWFsRXZlbnQtPnNldFRhcmdldCh0YXJnZXQpOwotICAg
ICAgICAgICAgbV9ldmVudFF1ZXVlLmVucXVldWVFdmVudChXVEY6Om1vdmUod2lsbFJldmVhbEV2
ZW50KSk7CisgICAgICAgICAgICBtX2V2ZW50UXVldWUuZW5xdWV1ZUV2ZW50KFdURk1vdmUod2ls
bFJldmVhbEV2ZW50KSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTYxMzQsMTAgKzYxMzQsMTAg
QEAgdm9pZCBEb2N1bWVudDo6c2VuZFdpbGxSZXZlYWxFZGdlRXZlbnRzSWZOZWVkZWQoY29uc3Qg
SW50UG9pbnQmIG9sZFBvc2l0aW9uLCBjb24KICAgICAgICAgJiYgd2lsbFJldmVhbFJpZ2h0Tm90
aWZpY2F0aW9uUG9pbnQgPj0gb2xkUG9zaXRpb24ueCgpKSB7CiAgICAgICAgIFJlZjxFdmVudD4g
d2lsbFJldmVhbEV2ZW50ID0gRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkud2Via2l0d2lsbHJl
dmVhbHJpZ2h0RXZlbnQsIGZhbHNlLCBmYWxzZSk7CiAgICAgICAgIGlmICghdGFyZ2V0KQotICAg
ICAgICAgICAgZW5xdWV1ZVdpbmRvd0V2ZW50KFdURjo6bW92ZSh3aWxsUmV2ZWFsRXZlbnQpKTsK
KyAgICAgICAgICAgIGVucXVldWVXaW5kb3dFdmVudChXVEZNb3ZlKHdpbGxSZXZlYWxFdmVudCkp
OwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIHdpbGxSZXZlYWxFdmVudC0+c2V0VGFyZ2V0
KHRhcmdldCk7Ci0gICAgICAgICAgICBtX2V2ZW50UXVldWUuZW5xdWV1ZUV2ZW50KFdURjo6bW92
ZSh3aWxsUmV2ZWFsRXZlbnQpKTsKKyAgICAgICAgICAgIG1fZXZlbnRRdWV1ZS5lbnF1ZXVlRXZl
bnQoV1RGTW92ZSh3aWxsUmV2ZWFsRXZlbnQpKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtNjE0
NiwxMCArNjE0NiwxMCBAQCB2b2lkIERvY3VtZW50OjpzZW5kV2lsbFJldmVhbEVkZ2VFdmVudHNJ
Zk5lZWRlZChjb25zdCBJbnRQb2ludCYgb2xkUG9zaXRpb24sIGNvbgogICAgICAgICAmJiB3aWxs
UmV2ZWFsTGVmdE5vdGlmaWNhdGlvblBvaW50IDw9IG9sZFBvc2l0aW9uLngoKSkgewogICAgICAg
ICBSZWY8RXZlbnQ+IHdpbGxSZXZlYWxFdmVudCA9IEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygp
LndlYmtpdHdpbGxyZXZlYWxsZWZ0RXZlbnQsIGZhbHNlLCBmYWxzZSk7CiAgICAgICAgIGlmICgh
dGFyZ2V0KQotICAgICAgICAgICAgZW5xdWV1ZVdpbmRvd0V2ZW50KFdURjo6bW92ZSh3aWxsUmV2
ZWFsRXZlbnQpKTsKKyAgICAgICAgICAgIGVucXVldWVXaW5kb3dFdmVudChXVEZNb3ZlKHdpbGxS
ZXZlYWxFdmVudCkpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIHdpbGxSZXZlYWxFdmVu
dC0+c2V0VGFyZ2V0KHRhcmdldCk7Ci0gICAgICAgICAgICBtX2V2ZW50UXVldWUuZW5xdWV1ZUV2
ZW50KFdURjo6bW92ZSh3aWxsUmV2ZWFsRXZlbnQpKTsKKyAgICAgICAgICAgIG1fZXZlbnRRdWV1
ZS5lbnF1ZXVlRXZlbnQoV1RGTW92ZSh3aWxsUmV2ZWFsRXZlbnQpKTsKICAgICAgICAgfQogICAg
IH0KICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRFdmVudFF1
ZXVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEV2ZW50UXVldWUuY3BwCmluZGV4
IDhlYTVlYzAzNzRiZDEzNzg4NzFkMmE2MmQ5NGE5Yjk3ODIwYmM2YzIuLmQ0ZjAwZGFlYTVkMzRm
OGM2N2M1NDhmZjA4MzU5MGNjMDQ0MjVkODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudEV2ZW50UXVldWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dEV2ZW50UXVldWUuY3BwCkBAIC0xMDEsNyArMTAxLDcgQEAgdm9pZCBEb2N1bWVudEV2ZW50UXVl
dWU6OmVucXVldWVPckRpc3BhdGNoU2Nyb2xsRXZlbnQoTm9kZSYgdGFyZ2V0KQogCiAgICAgUmVm
PEV2ZW50PiBzY3JvbGxFdmVudCA9IEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLnNjcm9sbEV2
ZW50LCBidWJibGVzLCBjYW5jZWxhYmxlKTsKICAgICBzY3JvbGxFdmVudC0+c2V0VGFyZ2V0KCZ0
YXJnZXQpOwotICAgIGVucXVldWVFdmVudChXVEY6Om1vdmUoc2Nyb2xsRXZlbnQpKTsKKyAgICBl
bnF1ZXVlRXZlbnQoV1RGTW92ZShzY3JvbGxFdmVudCkpOwogfQogCiBib29sIERvY3VtZW50RXZl
bnRRdWV1ZTo6Y2FuY2VsRXZlbnQoRXZlbnQmIGV2ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50RnJhZ21lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50RnJhZ21lbnQuY3BwCmluZGV4IGE2NzAwMmM0YmY5ODc0NGEyOTUzZjQ5ZTI2ZTYxYmEwY2Fk
MzcxYTguLjMzMTgxZTA0NjlmYTUzNjFkYTdjZWJiNWIyNmQ0MjYwZGUzZWU0NjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnRGcmFnbWVudC5jcHAKQEAgLTc3LDcgKzc3LDcgQEAgUmVmPE5v
ZGU+IERvY3VtZW50RnJhZ21lbnQ6OmNsb25lTm9kZUludGVybmFsKERvY3VtZW50JiB0YXJnZXRE
b2N1bWVudCwgQ2xvbmluZ08KICAgICAgICAgY2xvbmVDaGlsZE5vZGVzKGNsb25lKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQotICAgIHJldHVybiBXVEY6Om1vdmUoY2xvbmUpOworICAgIHJldHVy
biBXVEZNb3ZlKGNsb25lKTsKIH0KIAogdm9pZCBEb2N1bWVudEZyYWdtZW50OjpwYXJzZUhUTUwo
Y29uc3QgU3RyaW5nJiBzb3VyY2UsIEVsZW1lbnQqIGNvbnRleHRFbGVtZW50LCBQYXJzZXJDb250
ZW50UG9saWN5IHBhcnNlckNvbnRlbnRQb2xpY3kpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXgg
NmIzOGEzZWY3NzcyOWFkNjAxYThkMDc4YmQ1ZTFjY2I3ZDBiMjVkMi4uYzlhNzM3MjdlZGM1YjY3
ZDdkN2E1NWFiZTMxNmQ5NjU2MmI4NjZhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtMTUx
Myw3ICsxNTEzLDcgQEAgYm9vbCBFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRl
clN0eWxlJiBzdHlsZSkKIAogUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEVsZW1lbnQ6OmNyZWF0
ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUsIGNvbnN0IFJlbmRlclRy
ZWVQb3NpdGlvbiYpCiB7Ci0gICAgcmV0dXJuIFJlbmRlckVsZW1lbnQ6OmNyZWF0ZUZvcigqdGhp
cywgV1RGOjptb3ZlKHN0eWxlKSk7CisgICAgcmV0dXJuIFJlbmRlckVsZW1lbnQ6OmNyZWF0ZUZv
cigqdGhpcywgV1RGTW92ZShzdHlsZSkpOwogfQogCiBOb2RlOjpJbnNlcnRpb25Ob3RpZmljYXRp
b25SZXF1ZXN0IEVsZW1lbnQ6Omluc2VydGVkSW50byhDb250YWluZXJOb2RlJiBpbnNlcnRpb25Q
b2ludCkKQEAgLTE2MzcsNyArMTYzNyw3IEBAIHZvaWQgRWxlbWVudDo6YWRkU2hhZG93Um9vdChS
ZWY8U2hhZG93Um9vdD4mJiBuZXdTaGFkb3dSb290KQogICAgIEFTU0VSVCghc2hhZG93Um9vdCgp
KTsKIAogICAgIFNoYWRvd1Jvb3QmIHNoYWRvd1Jvb3QgPSBuZXdTaGFkb3dSb290LmdldCgpOwot
ICAgIGVuc3VyZUVsZW1lbnRSYXJlRGF0YSgpLnNldFNoYWRvd1Jvb3QoV1RGOjptb3ZlKG5ld1No
YWRvd1Jvb3QpKTsKKyAgICBlbnN1cmVFbGVtZW50UmFyZURhdGEoKS5zZXRTaGFkb3dSb290KFdU
Rk1vdmUobmV3U2hhZG93Um9vdCkpOwogCiAgICAgc2hhZG93Um9vdC5zZXRIb3N0KHRoaXMpOwog
ICAgIHNoYWRvd1Jvb3Quc2V0UGFyZW50VHJlZVNjb3BlKCZ0cmVlU2NvcGUoKSk7CkBAIC0yMjg4
LDE0ICsyMjg4LDE0IEBAIHZvaWQgRWxlbWVudDo6ZGlzcGF0Y2hGb2N1c0luRXZlbnQoY29uc3Qg
QXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZlB0cjxFbGVtZW50CiB7CiAgICAgQVNTRVJUX1dJ
VEhfU0VDVVJJVFlfSU1QTElDQVRJT04oIU5vRXZlbnREaXNwYXRjaEFzc2VydGlvbjo6aXNFdmVu
dERpc3BhdGNoRm9yYmlkZGVuKCkpOwogICAgIEFTU0VSVChldmVudFR5cGUgPT0gZXZlbnROYW1l
cygpLmZvY3VzaW5FdmVudCB8fCBldmVudFR5cGUgPT0gZXZlbnROYW1lcygpLkRPTUZvY3VzSW5F
dmVudCk7Ci0gICAgZGlzcGF0Y2hTY29wZWRFdmVudChGb2N1c0V2ZW50OjpjcmVhdGUoZXZlbnRU
eXBlLCB0cnVlLCBmYWxzZSwgZG9jdW1lbnQoKS5kZWZhdWx0VmlldygpLCAwLCBXVEY6Om1vdmUo
b2xkRm9jdXNlZEVsZW1lbnQpKSk7CisgICAgZGlzcGF0Y2hTY29wZWRFdmVudChGb2N1c0V2ZW50
OjpjcmVhdGUoZXZlbnRUeXBlLCB0cnVlLCBmYWxzZSwgZG9jdW1lbnQoKS5kZWZhdWx0Vmlldygp
LCAwLCBXVEZNb3ZlKG9sZEZvY3VzZWRFbGVtZW50KSkpOwogfQogCiB2b2lkIEVsZW1lbnQ6OmRp
c3BhdGNoRm9jdXNPdXRFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRy
PEVsZW1lbnQ+JiYgbmV3Rm9jdXNlZEVsZW1lbnQpCiB7CiAgICAgQVNTRVJUX1dJVEhfU0VDVVJJ
VFlfSU1QTElDQVRJT04oIU5vRXZlbnREaXNwYXRjaEFzc2VydGlvbjo6aXNFdmVudERpc3BhdGNo
Rm9yYmlkZGVuKCkpOwogICAgIEFTU0VSVChldmVudFR5cGUgPT0gZXZlbnROYW1lcygpLmZvY3Vz
b3V0RXZlbnQgfHwgZXZlbnRUeXBlID09IGV2ZW50TmFtZXMoKS5ET01Gb2N1c091dEV2ZW50KTsK
LSAgICBkaXNwYXRjaFNjb3BlZEV2ZW50KEZvY3VzRXZlbnQ6OmNyZWF0ZShldmVudFR5cGUsIHRy
dWUsIGZhbHNlLCBkb2N1bWVudCgpLmRlZmF1bHRWaWV3KCksIDAsIFdURjo6bW92ZShuZXdGb2N1
c2VkRWxlbWVudCkpKTsKKyAgICBkaXNwYXRjaFNjb3BlZEV2ZW50KEZvY3VzRXZlbnQ6OmNyZWF0
ZShldmVudFR5cGUsIHRydWUsIGZhbHNlLCBkb2N1bWVudCgpLmRlZmF1bHRWaWV3KCksIDAsIFdU
Rk1vdmUobmV3Rm9jdXNlZEVsZW1lbnQpKSk7CiB9CiAKIHZvaWQgRWxlbWVudDo6ZGlzcGF0Y2hG
b2N1c0V2ZW50KFJlZlB0cjxFbGVtZW50PiYmIG9sZEZvY3VzZWRFbGVtZW50LCBGb2N1c0RpcmVj
dGlvbikKQEAgLTIzMDMsNyArMjMwMyw3IEBAIHZvaWQgRWxlbWVudDo6ZGlzcGF0Y2hGb2N1c0V2
ZW50KFJlZlB0cjxFbGVtZW50PiYmIG9sZEZvY3VzZWRFbGVtZW50LCBGb2N1c0RpcmVjCiAgICAg
aWYgKGRvY3VtZW50KCkucGFnZSgpKQogICAgICAgICBkb2N1bWVudCgpLnBhZ2UoKS0+Y2hyb21l
KCkuY2xpZW50KCkuZWxlbWVudERpZEZvY3VzKHRoaXMpOwogCi0gICAgRXZlbnREaXNwYXRjaGVy
OjpkaXNwYXRjaEV2ZW50KHRoaXMsIEZvY3VzRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZm9j
dXNFdmVudCwgZmFsc2UsIGZhbHNlLCBkb2N1bWVudCgpLmRlZmF1bHRWaWV3KCksIDAsIFdURjo6
bW92ZShvbGRGb2N1c2VkRWxlbWVudCkpKTsKKyAgICBFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNo
RXZlbnQodGhpcywgRm9jdXNFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5mb2N1c0V2ZW50LCBm
YWxzZSwgZmFsc2UsIGRvY3VtZW50KCkuZGVmYXVsdFZpZXcoKSwgMCwgV1RGTW92ZShvbGRGb2N1
c2VkRWxlbWVudCkpKTsKIH0KIAogdm9pZCBFbGVtZW50OjpkaXNwYXRjaEJsdXJFdmVudChSZWZQ
dHI8RWxlbWVudD4mJiBuZXdGb2N1c2VkRWxlbWVudCkKQEAgLTIzMTEsNyArMjMxMSw3IEBAIHZv
aWQgRWxlbWVudDo6ZGlzcGF0Y2hCbHVyRXZlbnQoUmVmUHRyPEVsZW1lbnQ+JiYgbmV3Rm9jdXNl
ZEVsZW1lbnQpCiAgICAgaWYgKGRvY3VtZW50KCkucGFnZSgpKQogICAgICAgICBkb2N1bWVudCgp
LnBhZ2UoKS0+Y2hyb21lKCkuY2xpZW50KCkuZWxlbWVudERpZEJsdXIodGhpcyk7CiAKLSAgICBF
dmVudERpc3BhdGNoZXI6OmRpc3BhdGNoRXZlbnQodGhpcywgRm9jdXNFdmVudDo6Y3JlYXRlKGV2
ZW50TmFtZXMoKS5ibHVyRXZlbnQsIGZhbHNlLCBmYWxzZSwgZG9jdW1lbnQoKS5kZWZhdWx0Vmll
dygpLCAwLCBXVEY6Om1vdmUobmV3Rm9jdXNlZEVsZW1lbnQpKSk7CisgICAgRXZlbnREaXNwYXRj
aGVyOjpkaXNwYXRjaEV2ZW50KHRoaXMsIEZvY3VzRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCku
Ymx1ckV2ZW50LCBmYWxzZSwgZmFsc2UsIGRvY3VtZW50KCkuZGVmYXVsdFZpZXcoKSwgMCwgV1RG
TW92ZShuZXdGb2N1c2VkRWxlbWVudCkpKTsKIH0KIAogI2lmIEVOQUJMRShNT1VTRV9GT1JDRV9F
VkVOVFMpCkBAIC0yNDk3LDcgKzI0OTcsNyBAQCBSZW5kZXJTdHlsZSYgRWxlbWVudDo6cmVzb2x2
ZUNvbXB1dGVkU3R5bGUoKQogICAgICAgICBhdXRvIHN0eWxlID0gZG9jdW1lbnQoKS5zdHlsZUZv
ckVsZW1lbnRJZ25vcmluZ1BlbmRpbmdTdHlsZXNoZWV0cygqZWxlbWVudCwgY29tcHV0ZWRTdHls
ZSk7CiAgICAgICAgIGNvbXB1dGVkU3R5bGUgPSBzdHlsZS5wdHIoKTsKICAgICAgICAgRWxlbWVu
dFJhcmVEYXRhJiByYXJlRGF0YSA9IGVsZW1lbnQtPmVuc3VyZUVsZW1lbnRSYXJlRGF0YSgpOwot
ICAgICAgICByYXJlRGF0YS5zZXRDb21wdXRlZFN0eWxlKFdURjo6bW92ZShzdHlsZSkpOworICAg
ICAgICByYXJlRGF0YS5zZXRDb21wdXRlZFN0eWxlKFdURk1vdmUoc3R5bGUpKTsKICAgICB9CiAK
ICAgICByZXR1cm4gKmNvbXB1dGVkU3R5bGU7CkBAIC0yNjgxLDEyICsyNjgxLDEyIEBAIFBzZXVk
b0VsZW1lbnQqIEVsZW1lbnQ6OmFmdGVyUHNldWRvRWxlbWVudCgpIGNvbnN0CiAKIHZvaWQgRWxl
bWVudDo6c2V0QmVmb3JlUHNldWRvRWxlbWVudChSZWY8UHNldWRvRWxlbWVudD4mJiBlbGVtZW50
KQogewotICAgIGVuc3VyZUVsZW1lbnRSYXJlRGF0YSgpLnNldEJlZm9yZVBzZXVkb0VsZW1lbnQo
V1RGOjptb3ZlKGVsZW1lbnQpKTsKKyAgICBlbnN1cmVFbGVtZW50UmFyZURhdGEoKS5zZXRCZWZv
cmVQc2V1ZG9FbGVtZW50KFdURk1vdmUoZWxlbWVudCkpOwogfQogCiB2b2lkIEVsZW1lbnQ6OnNl
dEFmdGVyUHNldWRvRWxlbWVudChSZWY8UHNldWRvRWxlbWVudD4mJiBlbGVtZW50KQogewotICAg
IGVuc3VyZUVsZW1lbnRSYXJlRGF0YSgpLnNldEFmdGVyUHNldWRvRWxlbWVudChXVEY6Om1vdmUo
ZWxlbWVudCkpOworICAgIGVuc3VyZUVsZW1lbnRSYXJlRGF0YSgpLnNldEFmdGVyUHNldWRvRWxl
bWVudChXVEZNb3ZlKGVsZW1lbnQpKTsKIH0KIAogc3RhdGljIHZvaWQgZGlzY29ubmVjdFBzZXVk
b0VsZW1lbnQoUHNldWRvRWxlbWVudCogcHNldWRvRWxlbWVudCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50UmFyZURhdGEuaAppbmRleCBiYWU3NWQ2MzkwN2MwM2M4NTU3M2QxY2Q1YjU0ZWJjYmY2NWE3
NWRkLi42YTE2NmMzYmQxMGU3ZDc1N2QxZjVlNGVhMGY0Mjg2YjRjMTg5ZGE0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnRSYXJlRGF0YS5oCkBAIC04NCwxOSArODQsMTkgQEAgcHVibGljOgogCiAg
ICAgdm9pZCBjbGVhclNoYWRvd1Jvb3QoKSB7IG1fc2hhZG93Um9vdCA9IG51bGxwdHI7IH0KICAg
ICBTaGFkb3dSb290KiBzaGFkb3dSb290KCkgY29uc3QgeyByZXR1cm4gbV9zaGFkb3dSb290Lmdl
dCgpOyB9Ci0gICAgdm9pZCBzZXRTaGFkb3dSb290KFJlZlB0cjxTaGFkb3dSb290PiYmIHNoYWRv
d1Jvb3QpIHsgbV9zaGFkb3dSb290ID0gV1RGOjptb3ZlKHNoYWRvd1Jvb3QpOyB9CisgICAgdm9p
ZCBzZXRTaGFkb3dSb290KFJlZlB0cjxTaGFkb3dSb290PiYmIHNoYWRvd1Jvb3QpIHsgbV9zaGFk
b3dSb290ID0gV1RGTW92ZShzaGFkb3dSb290KTsgfQogCiAgICAgTmFtZWROb2RlTWFwKiBhdHRy
aWJ1dGVNYXAoKSBjb25zdCB7IHJldHVybiBtX2F0dHJpYnV0ZU1hcC5nZXQoKTsgfQotICAgIHZv
aWQgc2V0QXR0cmlidXRlTWFwKHN0ZDo6dW5pcXVlX3B0cjxOYW1lZE5vZGVNYXA+IGF0dHJpYnV0
ZU1hcCkgeyBtX2F0dHJpYnV0ZU1hcCA9IFdURjo6bW92ZShhdHRyaWJ1dGVNYXApOyB9CisgICAg
dm9pZCBzZXRBdHRyaWJ1dGVNYXAoc3RkOjp1bmlxdWVfcHRyPE5hbWVkTm9kZU1hcD4gYXR0cmli
dXRlTWFwKSB7IG1fYXR0cmlidXRlTWFwID0gV1RGTW92ZShhdHRyaWJ1dGVNYXApOyB9CiAKICAg
ICBSZW5kZXJTdHlsZSogY29tcHV0ZWRTdHlsZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29tcHV0ZWRT
dHlsZS5nZXQoKTsgfQotICAgIHZvaWQgc2V0Q29tcHV0ZWRTdHlsZShSZWY8UmVuZGVyU3R5bGU+
JiYgY29tcHV0ZWRTdHlsZSkgeyBtX2NvbXB1dGVkU3R5bGUgPSBXVEY6Om1vdmUoY29tcHV0ZWRT
dHlsZSk7IH0KKyAgICB2b2lkIHNldENvbXB1dGVkU3R5bGUoUmVmPFJlbmRlclN0eWxlPiYmIGNv
bXB1dGVkU3R5bGUpIHsgbV9jb21wdXRlZFN0eWxlID0gV1RGTW92ZShjb21wdXRlZFN0eWxlKTsg
fQogCiAgICAgQXR0cmlidXRlRE9NVG9rZW5MaXN0KiBjbGFzc0xpc3QoKSBjb25zdCB7IHJldHVy
biBtX2NsYXNzTGlzdC5nZXQoKTsgfQotICAgIHZvaWQgc2V0Q2xhc3NMaXN0KHN0ZDo6dW5pcXVl
X3B0cjxBdHRyaWJ1dGVET01Ub2tlbkxpc3Q+IGNsYXNzTGlzdCkgeyBtX2NsYXNzTGlzdCA9IFdU
Rjo6bW92ZShjbGFzc0xpc3QpOyB9CisgICAgdm9pZCBzZXRDbGFzc0xpc3Qoc3RkOjp1bmlxdWVf
cHRyPEF0dHJpYnV0ZURPTVRva2VuTGlzdD4gY2xhc3NMaXN0KSB7IG1fY2xhc3NMaXN0ID0gV1RG
TW92ZShjbGFzc0xpc3QpOyB9CiAKICAgICBEYXRhc2V0RE9NU3RyaW5nTWFwKiBkYXRhc2V0KCkg
Y29uc3QgeyByZXR1cm4gbV9kYXRhc2V0LmdldCgpOyB9Ci0gICAgdm9pZCBzZXREYXRhc2V0KHN0
ZDo6dW5pcXVlX3B0cjxEYXRhc2V0RE9NU3RyaW5nTWFwPiBkYXRhc2V0KSB7IG1fZGF0YXNldCA9
IFdURjo6bW92ZShkYXRhc2V0KTsgfQorICAgIHZvaWQgc2V0RGF0YXNldChzdGQ6OnVuaXF1ZV9w
dHI8RGF0YXNldERPTVN0cmluZ01hcD4gZGF0YXNldCkgeyBtX2RhdGFzZXQgPSBXVEZNb3ZlKGRh
dGFzZXQpOyB9CiAKICAgICBMYXlvdXRTaXplIG1pbmltdW1TaXplRm9yUmVzaXppbmcoKSBjb25z
dCB7IHJldHVybiBtX21pbmltdW1TaXplRm9yUmVzaXppbmc7IH0KICAgICB2b2lkIHNldE1pbmlt
dW1TaXplRm9yUmVzaXppbmcoTGF5b3V0U2l6ZSBzaXplKSB7IG1fbWluaW11bVNpemVGb3JSZXNp
emluZyA9IHNpemU7IH0KQEAgLTE4MSwxMyArMTgxLDEzIEBAIGlubGluZSBFbGVtZW50UmFyZURh
dGE6On5FbGVtZW50UmFyZURhdGEoKQogaW5saW5lIHZvaWQgRWxlbWVudFJhcmVEYXRhOjpzZXRC
ZWZvcmVQc2V1ZG9FbGVtZW50KFJlZlB0cjxQc2V1ZG9FbGVtZW50PiYmIHBzZXVkb0VsZW1lbnQp
CiB7CiAgICAgQVNTRVJUKCFtX2JlZm9yZVBzZXVkb0VsZW1lbnQgfHwgIXBzZXVkb0VsZW1lbnQp
OwotICAgIG1fYmVmb3JlUHNldWRvRWxlbWVudCA9IFdURjo6bW92ZShwc2V1ZG9FbGVtZW50KTsK
KyAgICBtX2JlZm9yZVBzZXVkb0VsZW1lbnQgPSBXVEZNb3ZlKHBzZXVkb0VsZW1lbnQpOwogfQog
CiBpbmxpbmUgdm9pZCBFbGVtZW50UmFyZURhdGE6OnNldEFmdGVyUHNldWRvRWxlbWVudChSZWZQ
dHI8UHNldWRvRWxlbWVudD4mJiBwc2V1ZG9FbGVtZW50KQogewogICAgIEFTU0VSVCghbV9hZnRl
clBzZXVkb0VsZW1lbnQgfHwgIXBzZXVkb0VsZW1lbnQpOwotICAgIG1fYWZ0ZXJQc2V1ZG9FbGVt
ZW50ID0gV1RGOjptb3ZlKHBzZXVkb0VsZW1lbnQpOworICAgIG1fYWZ0ZXJQc2V1ZG9FbGVtZW50
ID0gV1RGTW92ZShwc2V1ZG9FbGVtZW50KTsKIH0KIAogaW5saW5lIHZvaWQgRWxlbWVudFJhcmVE
YXRhOjpyZXNldENvbXB1dGVkU3R5bGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0V2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudC5jcHAKaW5kZXggNWMxZTZmZTcw
MTI3OGNkZTVhZTZlMDNlZDg1YTVlMjc0ZDc5YTBjMC4uYWM1NjVmYmUxZTI0MTBjYzgzMjliOWI1
NGQ0YTIxY2E2ZTA0OWI0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQuY3BwCkBAIC0xNjcsNyArMTY3LDcgQEAg
dm9pZCBFdmVudDo6c2V0VGFyZ2V0KFJlZlB0cjxFdmVudFRhcmdldD4mJiB0YXJnZXQpCiAgICAg
aWYgKG1fdGFyZ2V0ID09IHRhcmdldCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV90YXJnZXQg
PSBXVEY6Om1vdmUodGFyZ2V0KTsKKyAgICBtX3RhcmdldCA9IFdURk1vdmUodGFyZ2V0KTsKICAg
ICBpZiAobV90YXJnZXQpCiAgICAgICAgIHJlY2VpdmVkVGFyZ2V0KCk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9t
L0V2ZW50VGFyZ2V0LmNwcAppbmRleCBmZmRkZWE5NDc1ZTY5OWFlZWRkYTI0YmJmYTFhOGQ0MWU5
NDYzYjAyLi5kYzQ1ZWI3NzdkMGQ2YzQzMWZiMzgzNTFkMjczZDQ0YTA5ODQxZWMzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9FdmVudFRhcmdldC5jcHAKQEAgLTc2LDcgKzc2LDcgQEAgYm9vbCBFdmVudFRhcmdl
dDo6aXNNZXNzYWdlUG9ydCgpIGNvbnN0CiAKIGJvb2wgRXZlbnRUYXJnZXQ6OmFkZEV2ZW50TGlz
dGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZlB0cjxFdmVudExpc3RlbmVy
PiYmIGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCiB7Ci0gICAgcmV0dXJuIGVuc3VyZUV2ZW50
VGFyZ2V0RGF0YSgpLmV2ZW50TGlzdGVuZXJNYXAuYWRkKGV2ZW50VHlwZSwgV1RGOjptb3ZlKGxp
c3RlbmVyKSwgdXNlQ2FwdHVyZSk7CisgICAgcmV0dXJuIGVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgp
LmV2ZW50TGlzdGVuZXJNYXAuYWRkKGV2ZW50VHlwZSwgV1RGTW92ZShsaXN0ZW5lciksIHVzZUNh
cHR1cmUpOwogfQogCiBib29sIEV2ZW50VGFyZ2V0OjpyZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0
IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyKiBsaXN0ZW5lciwgYm9vbCB1
c2VDYXB0dXJlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V4dGVuc2lvblN0eWxl
U2hlZXRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FeHRlbnNpb25TdHlsZVNoZWV0cy5jcHAK
aW5kZXggYjQ1YmRmODQxY2RhMzA0YjEyMDBjNjAzZTRiYTdjZmY1NWIyMDA2Zi4uMTA0YjMxZmVk
YzJjOTU4Nzc4MGM2MzY3ODNkYjViNDQ1ZTgzNzYyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0V4dGVuc2lvblN0eWxlU2hlZXRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RXh0ZW5zaW9uU3R5bGVTaGVldHMuY3BwCkBAIC0xNTksMTQgKzE1OSwxNCBAQCB2b2lkIEV4dGVu
c2lvblN0eWxlU2hlZXRzOjppbnZhbGlkYXRlSW5qZWN0ZWRTdHlsZVNoZWV0Q2FjaGUoKQogdm9p
ZCBFeHRlbnNpb25TdHlsZVNoZWV0czo6YWRkVXNlclN0eWxlU2hlZXQoUmVmPFN0eWxlU2hlZXRD
b250ZW50cz4mJiB1c2VyU2hlZXQpCiB7CiAgICAgQVNTRVJUKHVzZXJTaGVldC5nZXQoKS5pc1Vz
ZXJTdHlsZVNoZWV0KCkpOwotICAgIG1fdXNlclN0eWxlU2hlZXRzLmFwcGVuZChDU1NTdHlsZVNo
ZWV0OjpjcmVhdGUoV1RGOjptb3ZlKHVzZXJTaGVldCksICZtX2RvY3VtZW50KSk7CisgICAgbV91
c2VyU3R5bGVTaGVldHMuYXBwZW5kKENTU1N0eWxlU2hlZXQ6OmNyZWF0ZShXVEZNb3ZlKHVzZXJT
aGVldCksICZtX2RvY3VtZW50KSk7CiAgICAgbV9kb2N1bWVudC5zdHlsZVJlc29sdmVyQ2hhbmdl
ZChSZWNhbGNTdHlsZUltbWVkaWF0ZWx5KTsKIH0KIAogdm9pZCBFeHRlbnNpb25TdHlsZVNoZWV0
czo6YWRkQXV0aG9yU3R5bGVTaGVldEZvclRlc3RpbmcoUmVmPFN0eWxlU2hlZXRDb250ZW50cz4m
JiBhdXRob3JTaGVldCkKIHsKICAgICBBU1NFUlQoIWF1dGhvclNoZWV0LmdldCgpLmlzVXNlclN0
eWxlU2hlZXQoKSk7Ci0gICAgbV9hdXRob3JTdHlsZVNoZWV0c0ZvclRlc3RpbmcuYXBwZW5kKENT
U1N0eWxlU2hlZXQ6OmNyZWF0ZShXVEY6Om1vdmUoYXV0aG9yU2hlZXQpLCAmbV9kb2N1bWVudCkp
OworICAgIG1fYXV0aG9yU3R5bGVTaGVldHNGb3JUZXN0aW5nLmFwcGVuZChDU1NTdHlsZVNoZWV0
OjpjcmVhdGUoV1RGTW92ZShhdXRob3JTaGVldCksICZtX2RvY3VtZW50KSk7CiAgICAgbV9kb2N1
bWVudC5zdHlsZVJlc29sdmVyQ2hhbmdlZChSZWNhbGNTdHlsZUltbWVkaWF0ZWx5KTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0ZvY3VzRXZlbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL0ZvY3VzRXZlbnQuY3BwCmluZGV4IDlmMjA4OWUxOThhODk0NzU1NTYyOGMxNWUx
OTdhZjRhN2Y1ODYxOGEuLjBhN2NlYWMwZjUxMjBhMTVmNzliOGRkMjRiNzYwNWZmMDM4NTZjODcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Gb2N1c0V2ZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRm9jdXNFdmVudC5jcHAKQEAgLTQ5LDggKzQ5LDggQEAgRm9jdXNFdmVu
dDo6Rm9jdXNFdmVudCgpCiB9CiAKIEZvY3VzRXZlbnQ6OkZvY3VzRXZlbnQoY29uc3QgQXRvbWlj
U3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBSZWZQdHI8QWJz
dHJhY3RWaWV3PiYmIHZpZXcsIGludCBkZXRhaWwsIFJlZlB0cjxFdmVudFRhcmdldD4mJiByZWxh
dGVkVGFyZ2V0KQotICAgIDogVUlFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIFdU
Rjo6bW92ZSh2aWV3KSwgZGV0YWlsKQotICAgICwgbV9yZWxhdGVkVGFyZ2V0KFdURjo6bW92ZShy
ZWxhdGVkVGFyZ2V0KSkKKyAgICA6IFVJRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxl
LCBXVEZNb3ZlKHZpZXcpLCBkZXRhaWwpCisgICAgLCBtX3JlbGF0ZWRUYXJnZXQoV1RGTW92ZShy
ZWxhdGVkVGFyZ2V0KSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0Zv
Y3VzRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Gb2N1c0V2ZW50LmgKaW5kZXggZTgyNTg2
YWE1YzRmZjFlZThkOTMzYmE1NzAxYTVkNTZhOGI4MWM0Yi4uNTE4ZGFiNDZhMzZjYzY4ZTAwYjVk
NjYxMzQzY2NhYjEzNjhhNGEyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0ZvY3Vz
RXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRm9jdXNFdmVudC5oCkBAIC00OCw3ICs0
OCw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBSZWY8Rm9jdXNFdmVudD4gY3JlYXRlKGNvbnN0
IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUmVm
UHRyPEFic3RyYWN0Vmlldz4mJiB2aWV3LCBpbnQgZGV0YWlsLCBSZWZQdHI8RXZlbnRUYXJnZXQ+
JiYgcmVsYXRlZFRhcmdldCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZv
Y3VzRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCBXVEY6Om1vdmUodmlldyksIGRl
dGFpbCwgV1RGOjptb3ZlKHJlbGF0ZWRUYXJnZXQpKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IEZvY3VzRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCBXVEZNb3ZlKHZp
ZXcpLCBkZXRhaWwsIFdURk1vdmUocmVsYXRlZFRhcmdldCkpKTsKICAgICB9CiAKICAgICBzdGF0
aWMgUmVmPEZvY3VzRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0
IEZvY3VzRXZlbnRJbml0JiBpbml0aWFsaXplcikKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgog
ICAgIH0KIAogICAgIHZpcnR1YWwgRXZlbnRUYXJnZXQqIHJlbGF0ZWRUYXJnZXQoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBtX3JlbGF0ZWRUYXJnZXQuZ2V0KCk7IH0KLSAgICB2b2lkIHNldFJl
bGF0ZWRUYXJnZXQoUmVmUHRyPEV2ZW50VGFyZ2V0PiYmIHJlbGF0ZWRUYXJnZXQpIHsgbV9yZWxh
dGVkVGFyZ2V0ID0gV1RGOjptb3ZlKHJlbGF0ZWRUYXJnZXQpOyB9CisgICAgdm9pZCBzZXRSZWxh
dGVkVGFyZ2V0KFJlZlB0cjxFdmVudFRhcmdldD4mJiByZWxhdGVkVGFyZ2V0KSB7IG1fcmVsYXRl
ZFRhcmdldCA9IFdURk1vdmUocmVsYXRlZFRhcmdldCk7IH0KIAogICAgIHZpcnR1YWwgRXZlbnRJ
bnRlcmZhY2UgZXZlbnRJbnRlcmZhY2UoKSBjb25zdCBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
TWVzc2FnZUV2ZW50LmNwcAppbmRleCA1ZGUzMjU5YTgwYWUxOGIwNGIwYzQ1ZTA3MDMxOGE2N2Ix
MzVhOWE4Li44ZjU2M2I5NmQwYTI0MzUzYWZiM2JhNDU0OTU0ZjhjZTliMDExNmMxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vTWVzc2FnZUV2ZW50LmNwcApAQCAtNjQsNyArNjQsNyBAQCBNZXNzYWdlRXZlbnQ6
Ok1lc3NhZ2VFdmVudChjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgZGF0YSwgY29uc3Qg
U3RyaW5nJiBvcgogICAgICwgbV9vcmlnaW4ob3JpZ2luKQogICAgICwgbV9sYXN0RXZlbnRJZChs
YXN0RXZlbnRJZCkKICAgICAsIG1fc291cmNlKHNvdXJjZSkKLSAgICAsIG1fcG9ydHMoV1RGOjpt
b3ZlKHBvcnRzKSkKKyAgICAsIG1fcG9ydHMoV1RGTW92ZShwb3J0cykpCiB7CiAgICAgQVNTRVJU
KGlzVmFsaWRTb3VyY2UobV9zb3VyY2UuZ2V0KCkpKTsKIH0KQEAgLTc2LDcgKzc2LDcgQEAgTWVz
c2FnZUV2ZW50OjpNZXNzYWdlRXZlbnQoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+
IGRhdGEsIGNvbnN0IFN0cmluZyYKICAgICAsIG1fb3JpZ2luKG9yaWdpbikKICAgICAsIG1fbGFz
dEV2ZW50SWQobGFzdEV2ZW50SWQpCiAgICAgLCBtX3NvdXJjZShzb3VyY2UpCi0gICAgLCBtX3Bv
cnRzKFdURjo6bW92ZShwb3J0cykpCisgICAgLCBtX3BvcnRzKFdURk1vdmUocG9ydHMpKQogewog
ICAgIEFTU0VSVChpc1ZhbGlkU291cmNlKG1fc291cmNlLmdldCgpKSk7CiB9CkBAIC0xMjMsNyAr
MTIzLDcgQEAgdm9pZCBNZXNzYWdlRXZlbnQ6OmluaXRNZXNzYWdlRXZlbnQoY29uc3QgQXRvbWlj
U3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm8KICAgICBtX29yaWdpbiA9IG9yaWdpbjsK
ICAgICBtX2xhc3RFdmVudElkID0gbGFzdEV2ZW50SWQ7CiAgICAgbV9zb3VyY2UgPSBzb3VyY2U7
Ci0gICAgbV9wb3J0cyA9IFdURjo6bW92ZShwb3J0cyk7CisgICAgbV9wb3J0cyA9IFdURk1vdmUo
cG9ydHMpOwogfQogCiB2b2lkIE1lc3NhZ2VFdmVudDo6aW5pdE1lc3NhZ2VFdmVudChjb25zdCBB
dG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFBhc3NS
ZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwg
Y29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCwgRE9NV2luZG93KiBzb3VyY2UsIHN0ZDo6dW5pcXVl
X3B0cjxNZXNzYWdlUG9ydEFycmF5PiBwb3J0cykKQEAgLTEzOCw3ICsxMzgsNyBAQCB2b2lkIE1l
c3NhZ2VFdmVudDo6aW5pdE1lc3NhZ2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJv
b2wgY2FuQnViYmxlLCBibwogICAgIG1fb3JpZ2luID0gb3JpZ2luOwogICAgIG1fbGFzdEV2ZW50
SWQgPSBsYXN0RXZlbnRJZDsKICAgICBtX3NvdXJjZSA9IHNvdXJjZTsKLSAgICBtX3BvcnRzID0g
V1RGOjptb3ZlKHBvcnRzKTsKKyAgICBtX3BvcnRzID0gV1RGTW92ZShwb3J0cyk7CiB9CiAgICAg
CiBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBNZXNzYWdlRXZlbnQ6OnRyeVNlcmlhbGl6
ZURhdGEoSlNDOjpFeGVjU3RhdGUqIGV4ZWMpCkBAIC0xNzYsNyArMTc2LDcgQEAgdm9pZCBNZXNz
YWdlRXZlbnQ6OmluaXRNZXNzYWdlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29s
IGNhbkJ1YmJsZSwgYm8KICAgICAgICAgcG9ydHMgPSBzdGQ6Om1ha2VfdW5pcXVlPE1lc3NhZ2VQ
b3J0QXJyYXk+KCk7CiAgICAgICAgIHBvcnRzLT5hcHBlbmQocG9ydCk7CiAgICAgfQotICAgIGlu
aXRNZXNzYWdlRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCBkYXRhLCBvcmlnaW4s
IGxhc3RFdmVudElkLCBzb3VyY2UsIFdURjo6bW92ZShwb3J0cykpOworICAgIGluaXRNZXNzYWdl
RXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCBkYXRhLCBvcmlnaW4sIGxhc3RFdmVu
dElkLCBzb3VyY2UsIFdURk1vdmUocG9ydHMpKTsKIH0KIAogRXZlbnRJbnRlcmZhY2UgTWVzc2Fn
ZUV2ZW50OjpldmVudEludGVyZmFjZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vTWVzc2FnZUV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmgK
aW5kZXggZTQyNThlMTQ5MGM4NmU1YzAwMWFmYmUzMDgzMzdlY2QwNGU1MTdlOS4uZDU4NzNkNGFk
YzFkYzE5ODI3NTYxMGQ3ODlhYjdiMGI4MmNmM2MwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL01lc3NhZ2VFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZl
bnQuaApAQCAtNTksMTEgKzU5LDExIEBAIHB1YmxpYzoKICAgICB9CiAgICAgc3RhdGljIFJlZjxN
ZXNzYWdlRXZlbnQ+IGNyZWF0ZShzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZVBvcnRBcnJheT4gcG9y
dHMsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBkYXRhID0gRGVwcmVjYXRlZDo6U2Ny
aXB0VmFsdWUoKSwgY29uc3QgU3RyaW5nJiBvcmlnaW4gPSBTdHJpbmcoKSwgY29uc3QgU3RyaW5n
JiBsYXN0RXZlbnRJZCA9IFN0cmluZygpLCBQYXNzUmVmUHRyPEV2ZW50VGFyZ2V0PiBzb3VyY2Ug
PSBudWxscHRyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVzc2FnZUV2
ZW50KGRhdGEsIG9yaWdpbiwgbGFzdEV2ZW50SWQsIHNvdXJjZSwgV1RGOjptb3ZlKHBvcnRzKSkp
OworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZXNzYWdlRXZlbnQoZGF0YSwgb3JpZ2lu
LCBsYXN0RXZlbnRJZCwgc291cmNlLCBXVEZNb3ZlKHBvcnRzKSkpOwogICAgIH0KICAgICBzdGF0
aWMgUmVmPE1lc3NhZ2VFdmVudD4gY3JlYXRlKHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlUG9ydEFy
cmF5PiBwb3J0cywgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGRhdGEsIGNvbnN0
IFN0cmluZyYgb3JpZ2luID0gU3RyaW5nKCksIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQgPSBT
dHJpbmcoKSwgUGFzc1JlZlB0cjxFdmVudFRhcmdldD4gc291cmNlID0gbnVsbHB0cikKICAgICB7
Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1lc3NhZ2VFdmVudChkYXRhLCBvcmlnaW4s
IGxhc3RFdmVudElkLCBzb3VyY2UsIFdURjo6bW92ZShwb3J0cykpKTsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgTWVzc2FnZUV2ZW50KGRhdGEsIG9yaWdpbiwgbGFzdEV2ZW50SWQsIHNv
dXJjZSwgV1RGTW92ZShwb3J0cykpKTsKICAgICB9CiAgICAgc3RhdGljIFJlZjxNZXNzYWdlRXZl
bnQ+IGNyZWF0ZShjb25zdCBTdHJpbmcmIGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luID0gU3Ry
aW5nKCkpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5jcHAKaW5kZXggYTNhYjg5NmJm
NTNjZjhhMDdkZTVlOTJmZTk2Nzc0OTNhNmY5NDNmMi4uZTBjMmQwMjViZTQwMWFlMDY5OGJkNzE0
YTJjZjYzZGE4OWFlMmQ5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQ
b3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuY3BwCkBAIC03OSw3
ICs3OSw3IEBAIHZvaWQgTWVzc2FnZVBvcnQ6OnBvc3RNZXNzYWdlKFBhc3NSZWZQdHI8U2VyaWFs
aXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlLCBjb25zdCBNCiAgICAgICAgIGlmIChlYykKICAgICAg
ICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgbV9lbnRhbmdsZWRDaGFubmVsLT5wb3N0TWVzc2Fn
ZVRvUmVtb3RlKG1lc3NhZ2UsIFdURjo6bW92ZShjaGFubmVscykpOworICAgIG1fZW50YW5nbGVk
Q2hhbm5lbC0+cG9zdE1lc3NhZ2VUb1JlbW90ZShtZXNzYWdlLCBXVEZNb3ZlKGNoYW5uZWxzKSk7
CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlUG9ydENoYW5uZWw+IE1lc3NhZ2VQb3J0Ojpk
aXNlbnRhbmdsZSgpCkBAIC05Myw3ICs5Myw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlUG9y
dENoYW5uZWw+IE1lc3NhZ2VQb3J0OjpkaXNlbnRhbmdsZSgpCiAgICAgbV9zY3JpcHRFeGVjdXRp
b25Db250ZXh0LT5kZXN0cm95ZWRNZXNzYWdlUG9ydCgqdGhpcyk7CiAgICAgbV9zY3JpcHRFeGVj
dXRpb25Db250ZXh0ID0gbnVsbHB0cjsKIAotICAgIHJldHVybiBXVEY6Om1vdmUobV9lbnRhbmds
ZWRDaGFubmVsKTsKKyAgICByZXR1cm4gV1RGTW92ZShtX2VudGFuZ2xlZENoYW5uZWwpOwogfQog
CiAvLyBJbnZva2VkIHRvIG5vdGlmeSB1cyB0aGF0IHRoZXJlIGFyZSBtZXNzYWdlcyBhdmFpbGFi
bGUgZm9yIHRoaXMgcG9ydC4KQEAgLTEzMyw3ICsxMzMsNyBAQCB2b2lkIE1lc3NhZ2VQb3J0Ojpl
bnRhbmdsZShzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZVBvcnRDaGFubmVsPiByZW1vdGUpCiAKICAg
ICAvLyBEb24ndCBlbnRhbmdsZSB0aGUgcG9ydHMgaWYgdGhlIGNoYW5uZWwgaXMgY2xvc2VkLgog
ICAgIGlmIChyZW1vdGUtPmVudGFuZ2xlSWZPcGVuKHRoaXMpKQotICAgICAgICBtX2VudGFuZ2xl
ZENoYW5uZWwgPSBXVEY6Om1vdmUocmVtb3RlKTsKKyAgICAgICAgbV9lbnRhbmdsZWRDaGFubmVs
ID0gV1RGTW92ZShyZW1vdGUpOwogfQogCiB2b2lkIE1lc3NhZ2VQb3J0Ojpjb250ZXh0RGVzdHJv
eWVkKCkKQEAgLTE1OSw4ICsxNTksOCBAQCB2b2lkIE1lc3NhZ2VQb3J0OjpkaXNwYXRjaE1lc3Nh
Z2VzKCkKICAgICAgICAgaWYgKGlzPFdvcmtlckdsb2JhbFNjb3BlPigqbV9zY3JpcHRFeGVjdXRp
b25Db250ZXh0KSAmJiBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oKm1fc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCkuaXNDbG9zaW5nKCkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAg
c3RkOjp1bmlxdWVfcHRyPE1lc3NhZ2VQb3J0QXJyYXk+IHBvcnRzID0gTWVzc2FnZVBvcnQ6OmVu
dGFuZ2xlUG9ydHMoKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgV1RGOjptb3ZlKGNoYW5uZWxz
KSk7Ci0gICAgICAgIFJlZjxFdmVudD4gZXZlbnQgPSBNZXNzYWdlRXZlbnQ6OmNyZWF0ZShXVEY6
Om1vdmUocG9ydHMpLCBtZXNzYWdlLnJlbGVhc2UoKSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0
cjxNZXNzYWdlUG9ydEFycmF5PiBwb3J0cyA9IE1lc3NhZ2VQb3J0OjplbnRhbmdsZVBvcnRzKCpt
X3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIFdURk1vdmUoY2hhbm5lbHMpKTsKKyAgICAgICAgUmVm
PEV2ZW50PiBldmVudCA9IE1lc3NhZ2VFdmVudDo6Y3JlYXRlKFdURk1vdmUocG9ydHMpLCBtZXNz
YWdlLnJlbGVhc2UoKSk7CiAgICAgICAgIGRpc3BhdGNoRXZlbnQoZXZlbnQpOwogICAgIH0KIH0K
QEAgLTIwMiw3ICsyMDIsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJy
YXk+IE1lc3NhZ2VQb3J0OjpkaXNlbnRhbmdsZVBvcnRzKGNvbnN0IE1lcwogICAgIGF1dG8gcG9y
dEFycmF5ID0gc3RkOjptYWtlX3VuaXF1ZTxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4ocG9ydHMt
PnNpemUoKSk7CiAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDAgOyBpIDwgcG9ydHMtPnNpemUo
KSA7ICsraSkgewogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZVBvcnRDaGFubmVsPiBj
aGFubmVsID0gKCpwb3J0cylbaV0tPmRpc2VudGFuZ2xlKCk7Ci0gICAgICAgICgqcG9ydEFycmF5
KVtpXSA9IFdURjo6bW92ZShjaGFubmVsKTsKKyAgICAgICAgKCpwb3J0QXJyYXkpW2ldID0gV1RG
TW92ZShjaGFubmVsKTsKICAgICB9CiAgICAgcmV0dXJuIHBvcnRBcnJheTsKIH0KQEAgLTIxNSw3
ICsyMTUsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZVBvcnRBcnJheT4gTWVzc2FnZVBvcnQ6
OmVudGFuZ2xlUG9ydHMoU2NyaXB0RXhlY3V0aW9uQ29udAogICAgIGF1dG8gcG9ydEFycmF5ID0g
c3RkOjptYWtlX3VuaXF1ZTxNZXNzYWdlUG9ydEFycmF5PihjaGFubmVscy0+c2l6ZSgpKTsKICAg
ICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IGNoYW5uZWxzLT5zaXplKCk7ICsraSkgewog
ICAgICAgICBSZWZQdHI8TWVzc2FnZVBvcnQ+IHBvcnQgPSBNZXNzYWdlUG9ydDo6Y3JlYXRlKGNv
bnRleHQpOwotICAgICAgICBwb3J0LT5lbnRhbmdsZShXVEY6Om1vdmUoKCpjaGFubmVscylbaV0p
KTsKKyAgICAgICAgcG9ydC0+ZW50YW5nbGUoV1RGTW92ZSgoKmNoYW5uZWxzKVtpXSkpOwogICAg
ICAgICAoKnBvcnRBcnJheSlbaV0gPSBwb3J0LnJlbGVhc2UoKTsKICAgICB9CiAgICAgcmV0dXJu
IHBvcnRBcnJheTsKQEAgLTIyNSw3ICsyMjUsNyBAQCBib29sIE1lc3NhZ2VQb3J0OjphZGRFdmVu
dExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8RXZlbnRMaQog
ewogICAgIGlmIChsaXN0ZW5lciAmJiBsaXN0ZW5lci0+aXNBdHRyaWJ1dGUoKSAmJiBldmVudFR5
cGUgPT0gZXZlbnROYW1lcygpLm1lc3NhZ2VFdmVudCkKICAgICAgICAgc3RhcnQoKTsKLSAgICBy
ZXR1cm4gRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YTo6YWRkRXZlbnRMaXN0ZW5lcihldmVudFR5
cGUsIFdURjo6bW92ZShsaXN0ZW5lciksIHVzZUNhcHR1cmUpOworICAgIHJldHVybiBFdmVudFRh
cmdldFdpdGhJbmxpbmVEYXRhOjphZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgV1RGTW92ZShs
aXN0ZW5lciksIHVzZUNhcHR1cmUpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWljcm90YXNrcy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vTWljcm90YXNrcy5jcHAKaW5kZXggZDY5MGE3OTAyZWJlZWQ4YjkwMTMzMzg1NTY0NWU4
MzMxNWMzNTAyZS4uY2I0ZjM0Yzg4ZmVjZTM1ZDNmZTA2OWUxNWY4NzNjOTgyM2I3NmE2MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01pY3JvdGFza3MuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9NaWNyb3Rhc2tzLmNwcApAQCAtNTEsOSArNTEsOSBAQCBNaWNyb3Rhc2tRdWV1
ZSYgTWljcm90YXNrUXVldWU6Om1haW5UaHJlYWRRdWV1ZSgpCiB2b2lkIE1pY3JvdGFza1F1ZXVl
OjphcHBlbmQoc3RkOjp1bmlxdWVfcHRyPE1pY3JvdGFzaz4mJiB0YXNrKQogewogICAgIGlmICht
X3BlcmZvcm1pbmdNaWNyb3Rhc2tDaGVja3BvaW50KQotICAgICAgICBtX3Rhc2tzQXBwZW5kZWRE
dXJpbmdNaWNyb3Rhc2tDaGVja3BvaW50LmFwcGVuZChXVEY6Om1vdmUodGFzaykpOworICAgICAg
ICBtX3Rhc2tzQXBwZW5kZWREdXJpbmdNaWNyb3Rhc2tDaGVja3BvaW50LmFwcGVuZChXVEZNb3Zl
KHRhc2spKTsKICAgICBlbHNlCi0gICAgICAgIG1fbWljcm90YXNrUXVldWUuYXBwZW5kKFdURjo6
bW92ZSh0YXNrKSk7CisgICAgICAgIG1fbWljcm90YXNrUXVldWUuYXBwZW5kKFdURk1vdmUodGFz
aykpOwogCiAgICAgbV90aW1lci5zdGFydE9uZVNob3QoMCk7CiB9CkBAIC04NiwyMCArODYsMjAg
QEAgdm9pZCBNaWNyb3Rhc2tRdWV1ZTo6cGVyZm9ybU1pY3JvdGFza0NoZWNrcG9pbnQoKQogCiAg
ICAgVGVtcG9yYXJ5Q2hhbmdlPGJvb2w+IGNoYW5nZShtX3BlcmZvcm1pbmdNaWNyb3Rhc2tDaGVj
a3BvaW50LCB0cnVlKTsKIAotICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8TWljcm90YXNrPj4g
cXVldWUgPSBXVEY6Om1vdmUobV9taWNyb3Rhc2tRdWV1ZSk7CisgICAgVmVjdG9yPHN0ZDo6dW5p
cXVlX3B0cjxNaWNyb3Rhc2s+PiBxdWV1ZSA9IFdURk1vdmUobV9taWNyb3Rhc2tRdWV1ZSk7CiAg
ICAgZm9yIChhdXRvJiB0YXNrIDogcXVldWUpIHsKICAgICAgICAgYXV0byByZXN1bHQgPSB0YXNr
LT5ydW4oKTsKICAgICAgICAgc3dpdGNoIChyZXN1bHQpIHsKICAgICAgICAgY2FzZSBNaWNyb3Rh
c2s6OlJlc3VsdDo6RG9uZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIE1pY3Jv
dGFzazo6UmVzdWx0OjpLZWVwSW5RdWV1ZToKLSAgICAgICAgICAgIG1fbWljcm90YXNrUXVldWUu
YXBwZW5kKFdURjo6bW92ZSh0YXNrKSk7CisgICAgICAgICAgICBtX21pY3JvdGFza1F1ZXVlLmFw
cGVuZChXVEZNb3ZlKHRhc2spKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAg
fQogCiAgICAgZm9yIChhdXRvJiB0YXNrIDogbV90YXNrc0FwcGVuZGVkRHVyaW5nTWljcm90YXNr
Q2hlY2twb2ludCkKLSAgICAgICAgbV9taWNyb3Rhc2tRdWV1ZS5hcHBlbmQoV1RGOjptb3ZlKHRh
c2spKTsKKyAgICAgICAgbV9taWNyb3Rhc2tRdWV1ZS5hcHBlbmQoV1RGTW92ZSh0YXNrKSk7CiAg
ICAgbV90YXNrc0FwcGVuZGVkRHVyaW5nTWljcm90YXNrQ2hlY2twb2ludC5jbGVhcigpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlci5jcHAKaW5kZXggODJmMjU4OWExYjBm
ZGJhNmM2MGY0OTFiODEyNmNjYmU5M2RkYjY0Yi4uZmMxNzA4YzkyNjdlODIwM2JkZGM3ODM3Mjhh
ZGZkYjcyZTY5ZDU5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2Jz
ZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyLmNwcApA
QCAtMTg1LDcgKzE4NSw3IEBAIHN0YXRpYyB2b2lkIHF1ZXVlTXV0YXRpb25PYnNlcnZlckNvbXBv
dW5kTWljcm90YXNrKCkKICAgICBtdXRhdGlvbk9ic2VydmVyQ29tcG91bmRNaWNyb3Rhc2tRdWV1
ZWRGbGFnID0gdHJ1ZTsKIAogICAgIGF1dG8gbWljcm90YXNrID0gc3RkOjptYWtlX3VuaXF1ZTxN
dXRhdGlvbk9ic2VydmVyTWljcm90YXNrPigpOwotICAgIE1pY3JvdGFza1F1ZXVlOjptYWluVGhy
ZWFkUXVldWUoKS5hcHBlbmQoV1RGOjptb3ZlKG1pY3JvdGFzaykpOworICAgIE1pY3JvdGFza1F1
ZXVlOjptYWluVGhyZWFkUXVldWUoKS5hcHBlbmQoV1RGTW92ZShtaWNyb3Rhc2spKTsKIH0KIAog
dm9pZCBNdXRhdGlvbk9ic2VydmVyOjplbnF1ZXVlTXV0YXRpb25SZWNvcmQoUGFzc1JlZlB0cjxN
dXRhdGlvblJlY29yZD4gbXV0YXRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
TmF0aXZlTm9kZUZpbHRlci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05hdGl2ZU5vZGVGaWx0ZXIu
aAppbmRleCA3YjA3OGVhYmM0NjAzNjUwZjM1MzRhNzdlYjJmNDgxMzMxZjI0YTk3Li4xNjEwODgy
OTIyZjg2OTQ1YjQ0ODA1ZDdiNjM0ODUxZjJlYzJhYTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vTmF0aXZlTm9kZUZpbHRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9OYXRp
dmVOb2RlRmlsdGVyLmgKQEAgLTM1LDcgKzM1LDcgQEAgY2xhc3MgTmF0aXZlTm9kZUZpbHRlciBm
aW5hbCA6IHB1YmxpYyBOb2RlRmlsdGVyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPE5hdGl2
ZU5vZGVGaWx0ZXI+IGNyZWF0ZShSZWZQdHI8Tm9kZUZpbHRlckNvbmRpdGlvbj4mJiBjb25kaXRp
b24pCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBOYXRpdmVOb2RlRmlsdGVy
KFdURjo6bW92ZShjb25kaXRpb24pKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE5h
dGl2ZU5vZGVGaWx0ZXIoV1RGTW92ZShjb25kaXRpb24pKSk7CiAgICAgfQogCiAgICAgc3RhdGlj
IFJlZjxOYXRpdmVOb2RlRmlsdGVyPiBjcmVhdGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCmluZGV4IDUwMmQz
ZDNhZTcyYzU4YzFmNzYzNDJjYmIzYjc1ODI5ODgyNTI5ZTcuLjU5NDBhNzhiN2YzYzIxMzdkZTE5
NTRkODFmNzg2YmJhNGVlMDZlZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2Rl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKQEAgLTQ5Miw3ICs0OTIsNyBA
QCB2b2lkIE5vZGU6OmJlZm9yZShWZWN0b3I8Tm9kZU9yU3RyaW5nPiYmIG5vZGVPclN0cmluZ1Zl
Y3RvciwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgYXV0byBub2RlU2V0ID0gbm9kZVNldFByZVRy
YW5zZm9ybWVkRnJvbU5vZGVPclN0cmluZ1ZlY3Rvcihub2RlT3JTdHJpbmdWZWN0b3IpOwogICAg
IGF1dG8gdmlhYmxlUHJldmlvdXNTaWJsaW5nID0gZmlyc3RQcmVjZWRpbmdTaWJsaW5nTm90SW5O
b2RlU2V0KCp0aGlzLCBub2RlU2V0KTsKIAotICAgIGF1dG8gbm9kZSA9IGNvbnZlcnROb2Rlc09y
U3RyaW5nc0ludG9Ob2RlKCp0aGlzLCBXVEY6Om1vdmUobm9kZU9yU3RyaW5nVmVjdG9yKSwgZWMp
OworICAgIGF1dG8gbm9kZSA9IGNvbnZlcnROb2Rlc09yU3RyaW5nc0ludG9Ob2RlKCp0aGlzLCBX
VEZNb3ZlKG5vZGVPclN0cmluZ1ZlY3RvciksIGVjKTsKICAgICBpZiAoZWMgfHwgIW5vZGUpCiAg
ICAgICAgIHJldHVybjsKIApAQCAtNTEzLDcgKzUxMyw3IEBAIHZvaWQgTm9kZTo6YWZ0ZXIoVmVj
dG9yPE5vZGVPclN0cmluZz4mJiBub2RlT3JTdHJpbmdWZWN0b3IsIEV4Y2VwdGlvbkNvZGUmIGVj
KQogICAgIGF1dG8gbm9kZVNldCA9IG5vZGVTZXRQcmVUcmFuc2Zvcm1lZEZyb21Ob2RlT3JTdHJp
bmdWZWN0b3Iobm9kZU9yU3RyaW5nVmVjdG9yKTsKICAgICBhdXRvIHZpYWJsZU5leHRTaWJsaW5n
ID0gZmlyc3RGb2xsb3dpbmdTaWJsaW5nTm90SW5Ob2RlU2V0KCp0aGlzLCBub2RlU2V0KTsKIAot
ICAgIGF1dG8gbm9kZSA9IGNvbnZlcnROb2Rlc09yU3RyaW5nc0ludG9Ob2RlKCp0aGlzLCBXVEY6
Om1vdmUobm9kZU9yU3RyaW5nVmVjdG9yKSwgZWMpOworICAgIGF1dG8gbm9kZSA9IGNvbnZlcnRO
b2Rlc09yU3RyaW5nc0ludG9Ob2RlKCp0aGlzLCBXVEZNb3ZlKG5vZGVPclN0cmluZ1ZlY3Rvciks
IGVjKTsKICAgICBpZiAoZWMgfHwgIW5vZGUpCiAgICAgICAgIHJldHVybjsKIApAQCAtNTI5LDcg
KzUyOSw3IEBAIHZvaWQgTm9kZTo6cmVwbGFjZVdpdGgoVmVjdG9yPE5vZGVPclN0cmluZz4mJiBu
b2RlT3JTdHJpbmdWZWN0b3IsIEV4Y2VwdGlvbkNvZGUmCiAgICAgYXV0byBub2RlU2V0ID0gbm9k
ZVNldFByZVRyYW5zZm9ybWVkRnJvbU5vZGVPclN0cmluZ1ZlY3Rvcihub2RlT3JTdHJpbmdWZWN0
b3IpOwogICAgIGF1dG8gdmlhYmxlTmV4dFNpYmxpbmcgPSBmaXJzdEZvbGxvd2luZ1NpYmxpbmdO
b3RJbk5vZGVTZXQoKnRoaXMsIG5vZGVTZXQpOwogCi0gICAgYXV0byBub2RlID0gY29udmVydE5v
ZGVzT3JTdHJpbmdzSW50b05vZGUoKnRoaXMsIFdURjo6bW92ZShub2RlT3JTdHJpbmdWZWN0b3Ip
LCBlYyk7CisgICAgYXV0byBub2RlID0gY29udmVydE5vZGVzT3JTdHJpbmdzSW50b05vZGUoKnRo
aXMsIFdURk1vdmUobm9kZU9yU3RyaW5nVmVjdG9yKSwgZWMpOwogICAgIGlmIChlYykKICAgICAg
ICAgcmV0dXJuOwogCkBAIC04MTEsMTEgKzgxMSwxMSBAQCB2b2lkIERvY3VtZW50OjppbnZhbGlk
YXRlTm9kZUxpc3RBbmRDb2xsZWN0aW9uQ2FjaGVzKGNvbnN0IFF1YWxpZmllZE5hbWUqIGF0dHJO
YQogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICBtX2luSW52YWxpZGF0ZU5vZGVMaXN0QW5kQ29s
bGVjdGlvbkNhY2hlcyA9IHRydWU7CiAjZW5kaWYKLSAgICBIYXNoU2V0PExpdmVOb2RlTGlzdCo+
IGxpc3RzID0gV1RGOjptb3ZlKG1fbGlzdHNJbnZhbGlkYXRlZEF0RG9jdW1lbnQpOworICAgIEhh
c2hTZXQ8TGl2ZU5vZGVMaXN0Kj4gbGlzdHMgPSBXVEZNb3ZlKG1fbGlzdHNJbnZhbGlkYXRlZEF0
RG9jdW1lbnQpOwogICAgIG1fbGlzdHNJbnZhbGlkYXRlZEF0RG9jdW1lbnQuY2xlYXIoKTsKICAg
ICBmb3IgKGF1dG8qIGxpc3QgOiBsaXN0cykKICAgICAgICAgbGlzdC0+aW52YWxpZGF0ZUNhY2hl
Rm9yQXR0cmlidXRlKGF0dHJOYW1lKTsKLSAgICBIYXNoU2V0PEhUTUxDb2xsZWN0aW9uKj4gY29s
bGVjdGlvbnMgPSBXVEY6Om1vdmUobV9jb2xsZWN0aW9uc0ludmFsaWRhdGVkQXREb2N1bWVudCk7
CisgICAgSGFzaFNldDxIVE1MQ29sbGVjdGlvbio+IGNvbGxlY3Rpb25zID0gV1RGTW92ZShtX2Nv
bGxlY3Rpb25zSW52YWxpZGF0ZWRBdERvY3VtZW50KTsKICAgICBmb3IgKGF1dG8qIGNvbGxlY3Rp
b24gOiBjb2xsZWN0aW9ucykKICAgICAgICAgY29sbGVjdGlvbi0+aW52YWxpZGF0ZUNhY2hlRm9y
QXR0cmlidXRlKGF0dHJOYW1lKTsKICNpZiAhQVNTRVJUX0RJU0FCTEVECkBAIC0xODc5LDcgKzE4
NzksNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgdHJ5QWRkRXZlbnRMaXN0ZW5lcihOb2RlKiB0YXJn
ZXROb2RlLCBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZQogICAgIC8vIFRoaXMgY29kZSB3YXMgYWRk
ZWQgdG8gYWRkcmVzcyA8cmRhcjovL3Byb2JsZW0vNTg0NjQ5Mj4gT25vcmllbnRhdGlvbmNoYW5n
ZSBldmVudCBub3Qgd29ya2luZyBmb3IgZG9jdW1lbnQuYm9keS4KICAgICAvLyBGb3J3YXJkIHRo
aXMgY2FsbCB0byBhZGRFdmVudExpc3RlbmVyKCkgdG8gdGhlIHdpbmRvdyBzaW5jZSB0aGVzZSBh
cmUgd2luZG93LW9ubHkgZXZlbnRzLgogICAgIGlmIChldmVudFR5cGUgPT0gZXZlbnROYW1lcygp
Lm9yaWVudGF0aW9uY2hhbmdlRXZlbnQgfHwgZXZlbnRUeXBlID09IGV2ZW50TmFtZXMoKS5yZXNp
emVFdmVudCkKLSAgICAgICAgdGFyZ2V0Tm9kZS0+ZG9jdW1lbnQoKS5kb21XaW5kb3coKS0+YWRk
RXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIFdURjo6bW92ZShsaXN0ZW5lciksIHVzZUNhcHR1cmUp
OworICAgICAgICB0YXJnZXROb2RlLT5kb2N1bWVudCgpLmRvbVdpbmRvdygpLT5hZGRFdmVudExp
c3RlbmVyKGV2ZW50VHlwZSwgV1RGTW92ZShsaXN0ZW5lciksIHVzZUNhcHR1cmUpOwogCiAjaWYg
RU5BQkxFKFRPVUNIX0VWRU5UUykKICAgICBpZiAoZXZlbnROYW1lcygpLmlzVG91Y2hFdmVudFR5
cGUoZXZlbnRUeXBlKSkKQEAgLTE4OTcsNyArMTg5Nyw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCB0
cnlBZGRFdmVudExpc3RlbmVyKE5vZGUqIHRhcmdldE5vZGUsIGNvbnN0IEF0b21pY1N0cmluZyYg
ZXZlCiAKIGJvb2wgTm9kZTo6YWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2
ZW50VHlwZSwgUmVmUHRyPEV2ZW50TGlzdGVuZXI+JiYgbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVy
ZSkKIHsKLSAgICByZXR1cm4gdHJ5QWRkRXZlbnRMaXN0ZW5lcih0aGlzLCBldmVudFR5cGUsIFdU
Rjo6bW92ZShsaXN0ZW5lciksIHVzZUNhcHR1cmUpOworICAgIHJldHVybiB0cnlBZGRFdmVudExp
c3RlbmVyKHRoaXMsIGV2ZW50VHlwZSwgV1RGTW92ZShsaXN0ZW5lciksIHVzZUNhcHR1cmUpOwog
fQogCiBzdGF0aWMgaW5saW5lIGJvb2wgdHJ5UmVtb3ZlRXZlbnRMaXN0ZW5lcihOb2RlKiB0YXJn
ZXROb2RlLCBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciogbGlz
dGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9O
b2RlSXRlcmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVJdGVyYXRvci5jcHAKaW5k
ZXggMDM4ZWZjOGI3YmQ2NjU3M2Y1OTBkNmQ0ZmZjYTNiNjllMTNkOGI2MS4uYTc5ZjU1ZGZjMjFl
ZTcwMDhlMmIwY2NjYWYxN2EwYjg4M2E2ZDRhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL05vZGVJdGVyYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVJdGVyYXRv
ci5jcHAKQEAgLTc3LDcgKzc3LDcgQEAgYm9vbCBOb2RlSXRlcmF0b3I6Ok5vZGVQb2ludGVyOjpt
b3ZlVG9QcmV2aW91cyhOb2RlKiByb290KQogfQogCiBOb2RlSXRlcmF0b3I6Ok5vZGVJdGVyYXRv
cihQYXNzUmVmUHRyPE5vZGU+IHJvb3ROb2RlLCB1bnNpZ25lZCBsb25nIHdoYXRUb1Nob3csIFJl
ZlB0cjxOb2RlRmlsdGVyPiYmIGZpbHRlcikKLSAgICA6IE5vZGVJdGVyYXRvckJhc2UoKnJvb3RO
b2RlLCB3aGF0VG9TaG93LCBXVEY6Om1vdmUoZmlsdGVyKSkKKyAgICA6IE5vZGVJdGVyYXRvckJh
c2UoKnJvb3ROb2RlLCB3aGF0VG9TaG93LCBXVEZNb3ZlKGZpbHRlcikpCiAgICAgLCBtX3JlZmVy
ZW5jZU5vZGUocm9vdCgpLCB0cnVlKQogewogICAgIHJvb3QoKS0+ZG9jdW1lbnQoKS5hdHRhY2hO
b2RlSXRlcmF0b3IodGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZUl0
ZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZUl0ZXJhdG9yLmgKaW5kZXggNGYxNTA3
ZGUwM2FjMzAzZTVmMTgwYjMzMTEyNjgwNzRjNjk4MDg5ZC4uNWM0MjIzMDJhMWIzMmZmYTEyNjUz
ODQ2NmJjNDIxNWUxYmYyZTI3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVJ
dGVyYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlSXRlcmF0b3IuaApAQCAtMzks
NyArMzksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgcHVibGljOgogICAgICAgICBzdGF0
aWMgUmVmPE5vZGVJdGVyYXRvcj4gY3JlYXRlKFBhc3NSZWZQdHI8Tm9kZT4gcm9vdE5vZGUsIHVu
c2lnbmVkIGxvbmcgd2hhdFRvU2hvdywgUmVmUHRyPE5vZGVGaWx0ZXI+JiYgZmlsdGVyKQogICAg
ICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBOb2RlSXRlcmF0b3Iocm9v
dE5vZGUsIHdoYXRUb1Nob3csIFdURjo6bW92ZShmaWx0ZXIpKSk7CisgICAgICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBOb2RlSXRlcmF0b3Iocm9vdE5vZGUsIHdoYXRUb1Nob3csIFdURk1v
dmUoZmlsdGVyKSkpOwogICAgICAgICB9CiAgICAgICAgIH5Ob2RlSXRlcmF0b3IoKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmNwcAppbmRleCA2YTZhMWMw
YmE1ZjNjODBiMjcxYTAyYWExYjIwMDQxNWViYzAzYmI0Li5kMzEwYzgwNzUxYjZiYjUwZTU4ZGEz
NzYzNjMyY2MzMTIxMDRlZmU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vz
c2luZ0luc3RydWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vzc2luZ0lu
c3RydWN0aW9uLmNwcApAQCAtMTk1LDcgKzE5NSw3IEBAIHZvaWQgUHJvY2Vzc2luZ0luc3RydWN0
aW9uOjpzZXRDU1NTdHlsZVNoZWV0KGNvbnN0IFN0cmluZyYgaHJlZiwgY29uc3QgVVJMJiBiYXNl
CiAgICAgY3NzU2hlZXQuZ2V0KCkuc2V0VGl0bGUobV90aXRsZSk7CiAgICAgY3NzU2hlZXQuZ2V0
KCkuc2V0TWVkaWFRdWVyaWVzKE1lZGlhUXVlcnlTZXQ6OmNyZWF0ZShtX21lZGlhKSk7CiAKLSAg
ICBtX3NoZWV0ID0gV1RGOjptb3ZlKGNzc1NoZWV0KTsKKyAgICBtX3NoZWV0ID0gV1RGTW92ZShj
c3NTaGVldCk7CiAKICAgICAvLyBXZSBkb24ndCBuZWVkIHRoZSBjcm9zcy1vcmlnaW4gc2VjdXJp
dHkgY2hlY2sgaGVyZSBiZWNhdXNlIHdlIGFyZQogICAgIC8vIGdldHRpbmcgdGhlIHNoZWV0IHRl
eHQgaW4gInN0cmljdCIgbW9kZS4gVGhpcyBlbmZvcmNlcyBhIHZhbGlkIENTUyBNSU1FCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUHNldWRvRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vUHNldWRvRWxlbWVudC5jcHAKaW5kZXggZmUxMWZlZDg1NjdlOWRiOGI4OTFjNmM2
ZmVkOGEzNzViNDg2OTU0MC4uYjI0OTI0MTQ1Y2I5MjJmMmZkYTM4OWQzYTAxMjBlNWQ2OTFmMTdk
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1BzZXVkb0VsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Qc2V1ZG9FbGVtZW50LmNwcApAQCAtMTE5LDcgKzExOSw3IEBA
IHZvaWQgUHNldWRvRWxlbWVudDo6ZGlkUmVjYWxjU3R5bGUoU3R5bGU6OkNoYW5nZSkKICAgICAg
ICAgaWYgKCFpczxSZW5kZXJJbWFnZT4oKmNoaWxkKSAmJiAhaXM8UmVuZGVyUXVvdGU+KCpjaGls
ZCkpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgUmVmPFJlbmRlclN0eWxlPiBjcmVh
dGVkU3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRlU3R5bGVJbmhlcml0aW5nRnJvbVBzZXVkb1N0
eWxlKHJlbmRlcmVyLnN0eWxlKCkpOwotICAgICAgICBkb3duY2FzdDxSZW5kZXJFbGVtZW50Pigq
Y2hpbGQpLnNldFN0eWxlKFdURjo6bW92ZShjcmVhdGVkU3R5bGUpKTsKKyAgICAgICAgZG93bmNh
c3Q8UmVuZGVyRWxlbWVudD4oKmNoaWxkKS5zZXRTdHlsZShXVEZNb3ZlKGNyZWF0ZWRTdHlsZSkp
OwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Njb3BlZEV2ZW50
UXVldWUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1Njb3BlZEV2ZW50UXVldWUuY3BwCmluZGV4
IDkzNTAxMzIzNDg0YTM1NDQzOGY0MWRhMWIzOTcwMDNhYTlkOTdhMjcuLmY2MzQyM2VmNjg2ZDVj
ZDdlNzBiOWI2YWMyZjc0M2VkMmE0OTlhYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TY29wZWRFdmVudFF1ZXVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NvcGVkRXZl
bnRRdWV1ZS5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgU2NvcGVkRXZlbnRRdWV1ZSYgU2NvcGVkRXZl
bnRRdWV1ZTo6c2luZ2xldG9uKCkKIHZvaWQgU2NvcGVkRXZlbnRRdWV1ZTo6ZW5xdWV1ZUV2ZW50
KFJlZjxFdmVudD4mJiBldmVudCkKIHsKICAgICBpZiAobV9zY29waW5nTGV2ZWwpCi0gICAgICAg
IG1fcXVldWVkRXZlbnRzLmFwcGVuZChXVEY6Om1vdmUoZXZlbnQpKTsKKyAgICAgICAgbV9xdWV1
ZWRFdmVudHMuYXBwZW5kKFdURk1vdmUoZXZlbnQpKTsKICAgICBlbHNlCiAgICAgICAgIGRpc3Bh
dGNoRXZlbnQoZXZlbnQpOwogfQpAQCAtNjEsNyArNjEsNyBAQCB2b2lkIFNjb3BlZEV2ZW50UXVl
dWU6OmRpc3BhdGNoRXZlbnQoRXZlbnQmIGV2ZW50KSBjb25zdAogCiB2b2lkIFNjb3BlZEV2ZW50
UXVldWU6OmRpc3BhdGNoQWxsRXZlbnRzKCkKIHsKLSAgICBWZWN0b3I8UmVmPEV2ZW50Pj4gcXVl
dWVkRXZlbnRzID0gV1RGOjptb3ZlKG1fcXVldWVkRXZlbnRzKTsKKyAgICBWZWN0b3I8UmVmPEV2
ZW50Pj4gcXVldWVkRXZlbnRzID0gV1RGTW92ZShtX3F1ZXVlZEV2ZW50cyk7CiAgICAgZm9yIChh
dXRvJiBxdWV1ZWRFdmVudCA6IHF1ZXVlZEV2ZW50cykKICAgICAgICAgZGlzcGF0Y2hFdmVudChx
dWV1ZWRFdmVudCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC5jcHAKaW5kZXggYThhYTBiZmFiZGE3NDdhOTkxOWFmNWQwZWQxN2M1ZTkxZGQxMzliNS4u
NDNmYWZhZTE1NmMyNTZkNmZjMjhhZTI3MWI2ZmI3ZDNjNzM2ZDAwZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcApAQCAtMzczLDcgKzM3Myw3IEBA
IHZvaWQgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6cmVwb3J0RXhjZXB0aW9uKGNvbnN0IFN0cmlu
ZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluCiAgICAgaWYgKCFtX3BlbmRpbmdFeGNlcHRpb25zKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPHN0ZDo6dW5pcXVl
X3B0cjxQZW5kaW5nRXhjZXB0aW9uPj4+IHBlbmRpbmdFeGNlcHRpb25zID0gV1RGOjptb3ZlKG1f
cGVuZGluZ0V4Y2VwdGlvbnMpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8c3RkOjp1bmlx
dWVfcHRyPFBlbmRpbmdFeGNlcHRpb24+Pj4gcGVuZGluZ0V4Y2VwdGlvbnMgPSBXVEZNb3ZlKG1f
cGVuZGluZ0V4Y2VwdGlvbnMpOwogICAgIGZvciAoYXV0byYgZXhjZXB0aW9uIDogKnBlbmRpbmdF
eGNlcHRpb25zKQogICAgICAgICBsb2dFeGNlcHRpb25Ub0NvbnNvbGUoZXhjZXB0aW9uLT5tX2Vy
cm9yTWVzc2FnZSwgZXhjZXB0aW9uLT5tX3NvdXJjZVVSTCwgZXhjZXB0aW9uLT5tX2xpbmVOdW1i
ZXIsIGV4Y2VwdGlvbi0+bV9jb2x1bW5OdW1iZXIsIGV4Y2VwdGlvbi0+bV9jYWxsU3RhY2suY29w
eVJlZigpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRp
b25Db250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5o
CmluZGV4IDlkMDA1OGNiM2EzMjMzNjA5YWE4NmVlZDdlMWZkMWYwOGU1ODZjNjQuLmMxYjFkMGJl
N2YwZjI1YzRhNzA0OWVkNGMwMzJiMDI2OTY1MDY3NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaApAQCAtMTI0LDcgKzEyNCw3IEBAIHB1YmxpYzoKIAog
ICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSA9IHR5cGVuYW1lIHN0ZDo6ZW5h
YmxlX2lmPCFzdGQ6OmlzX2Jhc2Vfb2Y8VGFzaywgVD46OnZhbHVlICYmIHN0ZDo6aXNfY29udmVy
dGlibGU8VCwgc3RkOjpmdW5jdGlvbjx2b2lkIChTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik+Pjo6
dmFsdWU+Ojp0eXBlPgogICAgICAgICBUYXNrKFQgdGFzaykKLSAgICAgICAgICAgIDogbV90YXNr
KFdURjo6bW92ZSh0YXNrKSkKKyAgICAgICAgICAgIDogbV90YXNrKFdURk1vdmUodGFzaykpCiAg
ICAgICAgICAgICAsIG1faXNDbGVhbnVwVGFzayhmYWxzZSkKICAgICAgICAgewogICAgICAgICB9
CkBAIC0xMzcsMTMgKzEzNywxMyBAQCBwdWJsaWM6CiAKICAgICAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2NvbnZlcnRp
YmxlPFQsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpPj46OnZh
bHVlPjo6dHlwZT4KICAgICAgICAgVGFzayhDbGVhbnVwVGFza1RhZywgVCB0YXNrKQotICAgICAg
ICAgICAgOiBtX3Rhc2soV1RGOjptb3ZlKHRhc2spKQorICAgICAgICAgICAgOiBtX3Rhc2soV1RG
TW92ZSh0YXNrKSkKICAgICAgICAgICAgICwgbV9pc0NsZWFudXBUYXNrKHRydWUpCiAgICAgICAg
IHsKICAgICAgICAgfQogCiAgICAgICAgIFRhc2soVGFzayYmIG90aGVyKQotICAgICAgICAgICAg
OiBtX3Rhc2soV1RGOjptb3ZlKG90aGVyLm1fdGFzaykpCisgICAgICAgICAgICA6IG1fdGFzayhX
VEZNb3ZlKG90aGVyLm1fdGFzaykpCiAgICAgICAgICAgICAsIG1faXNDbGVhbnVwVGFzayhvdGhl
ci5tX2lzQ2xlYW51cFRhc2spCiAgICAgICAgIHsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL1NlY3VyaXR5Q29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
U2VjdXJpdHlDb250ZXh0LmNwcAppbmRleCA0MzNhNmViZDYzODYyN2FiNjhkZDA5MTZiZGE4NGE4
YzY4NmQ1NjFmLi5jNWQ0MTI0YzUzNWU4MjNkNWRiZjdiNzYxNTU5ZjRhZDhlNDI1MzQ1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2VjdXJpdHlDb250ZXh0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vU2VjdXJpdHlDb250ZXh0LmNwcApAQCAtNDcsNyArNDcsNyBAQCBTZWN1
cml0eUNvbnRleHQ6On5TZWN1cml0eUNvbnRleHQoKQogCiB2b2lkIFNlY3VyaXR5Q29udGV4dDo6
c2V0U2VjdXJpdHlPcmlnaW5Qb2xpY3koUmVmUHRyPFNlY3VyaXR5T3JpZ2luUG9saWN5PiYmIHNl
Y3VyaXR5T3JpZ2luUG9saWN5KQogewotICAgIG1fc2VjdXJpdHlPcmlnaW5Qb2xpY3kgPSBXVEY6
Om1vdmUoc2VjdXJpdHlPcmlnaW5Qb2xpY3kpOworICAgIG1fc2VjdXJpdHlPcmlnaW5Qb2xpY3kg
PSBXVEZNb3ZlKHNlY3VyaXR5T3JpZ2luUG9saWN5KTsKICAgICBtX2hhdmVJbml0aWFsaXplZFNl
Y3VyaXR5T3JpZ2luID0gdHJ1ZTsKIH0KIApAQCAtNjEsNyArNjEsNyBAQCBTZWN1cml0eU9yaWdp
biogU2VjdXJpdHlDb250ZXh0OjpzZWN1cml0eU9yaWdpbigpIGNvbnN0CiAKIHZvaWQgU2VjdXJp
dHlDb250ZXh0OjpzZXRDb250ZW50U2VjdXJpdHlQb2xpY3koc3RkOjp1bmlxdWVfcHRyPENvbnRl
bnRTZWN1cml0eVBvbGljeT4gY29udGVudFNlY3VyaXR5UG9saWN5KQogewotICAgIG1fY29udGVu
dFNlY3VyaXR5UG9saWN5ID0gV1RGOjptb3ZlKGNvbnRlbnRTZWN1cml0eVBvbGljeSk7CisgICAg
bV9jb250ZW50U2VjdXJpdHlQb2xpY3kgPSBXVEZNb3ZlKGNvbnRlbnRTZWN1cml0eVBvbGljeSk7
CiB9CiAKIGJvb2wgU2VjdXJpdHlDb250ZXh0Ojppc1NlY3VyZVRyYW5zaXRpb25Ubyhjb25zdCBV
UkwmIHVybCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TZWN1cml0eU9y
aWdpblBvbGljeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2VjdXJpdHlPcmlnaW5Qb2xpY3ku
Y3BwCmluZGV4IGRjNDFlNjg3YWViMGRhYjk1N2E1NzA0OWRjODVhNzFlY2M3ZDM5NDQuLmY0OTA0
NDVmNjdiYWNlMmFkODFiNzA4N2U2NGZmOTVjZGM5YjU1YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TZWN1cml0eU9yaWdpblBvbGljeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1NlY3VyaXR5T3JpZ2luUG9saWN5LmNwcApAQCAtMzIsMTEgKzMyLDExIEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogUmVmPFNlY3VyaXR5T3JpZ2luUG9saWN5PiBTZWN1cml0eU9yaWdpblBv
bGljeTo6Y3JlYXRlKFJlZjxTZWN1cml0eU9yaWdpbj4mJiBzZWN1cml0eU9yaWdpbikKIHsKLSAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTZWN1cml0eU9yaWdpblBvbGljeShXVEY6Om1vdmUoc2Vj
dXJpdHlPcmlnaW4pKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2VjdXJpdHlPcmlnaW5Q
b2xpY3koV1RGTW92ZShzZWN1cml0eU9yaWdpbikpKTsKIH0KIAogU2VjdXJpdHlPcmlnaW5Qb2xp
Y3k6OlNlY3VyaXR5T3JpZ2luUG9saWN5KFJlZjxTZWN1cml0eU9yaWdpbj4mJiBzZWN1cml0eU9y
aWdpbikKLSAgICA6IG1fc2VjdXJpdHlPcmlnaW4oV1RGOjptb3ZlKHNlY3VyaXR5T3JpZ2luKSkK
KyAgICA6IG1fc2VjdXJpdHlPcmlnaW4oV1RGTW92ZShzZWN1cml0eU9yaWdpbikpCiB7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TZWxlY3RvclF1ZXJ5LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9TZWxlY3RvclF1ZXJ5LmNwcAppbmRleCBkN2NhODRmMGEwZGRkMWRiZmUx
MjViYTJlNTIxNTRmMDc0ODJkNDMxLi41NDc0ZjJiZDZiMDMxZjcwYjcxMzNmNDQ5NzhiYTliNTlj
YjEwYzA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2VsZWN0b3JRdWVyeS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NlbGVjdG9yUXVlcnkuY3BwCkBAIC02MDQsNyArNjA0
LDcgQEAgQUxXQVlTX0lOTElORSB2b2lkIFNlbGVjdG9yRGF0YUxpc3Q6OmV4ZWN1dGUoQ29udGFp
bmVyTm9kZSYgcm9vdE5vZGUsIHR5cGVuYW1lIFMKIH0KIAogU2VsZWN0b3JRdWVyeTo6U2VsZWN0
b3JRdWVyeShDU1NTZWxlY3Rvckxpc3QmJiBzZWxlY3Rvckxpc3QpCi0gICAgOiBtX3NlbGVjdG9y
TGlzdChXVEY6Om1vdmUoc2VsZWN0b3JMaXN0KSkKKyAgICA6IG1fc2VsZWN0b3JMaXN0KFdURk1v
dmUoc2VsZWN0b3JMaXN0KSkKICAgICAsIG1fc2VsZWN0b3JzKG1fc2VsZWN0b3JMaXN0KQogewog
fQpAQCAtNjM0LDcgKzYzNCw3IEBAIFNlbGVjdG9yUXVlcnkqIFNlbGVjdG9yUXVlcnlDYWNoZTo6
YWRkKGNvbnN0IFN0cmluZyYgc2VsZWN0b3JzLCBEb2N1bWVudCYgZG9jdW1lCiAgICAgaWYgKG1f
ZW50cmllcy5zaXplKCkgPT0gbWF4aW11bVNlbGVjdG9yUXVlcnlDYWNoZVNpemUpCiAgICAgICAg
IG1fZW50cmllcy5yZW1vdmUobV9lbnRyaWVzLmJlZ2luKCkpOwogCi0gICAgcmV0dXJuIG1fZW50
cmllcy5hZGQoc2VsZWN0b3JzLCBzdGQ6Om1ha2VfdW5pcXVlPFNlbGVjdG9yUXVlcnk+KFdURjo6
bW92ZShzZWxlY3Rvckxpc3QpKSkuaXRlcmF0b3ItPnZhbHVlLmdldCgpOworICAgIHJldHVybiBt
X2VudHJpZXMuYWRkKHNlbGVjdG9ycywgc3RkOjptYWtlX3VuaXF1ZTxTZWxlY3RvclF1ZXJ5PihX
VEZNb3ZlKHNlbGVjdG9yTGlzdCkpKS5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7CiB9CiAKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9TaGFkb3dSb290LmNwcAppbmRleCBiMTk4ZWJmOGVmODY1ZGZkYWJlNDY1Y2U0ODlj
NDUyMTI4OWQyNzg2Li40NjFlNmRlMGM1MmE5MDVkMTVjNDgyZTExYWM0ODYxMWMxZTBiZmE2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCkBAIC02NCw3ICs2NCw3IEBAIFNoYWRvd1Jvb3Q6
OlNoYWRvd1Jvb3QoRG9jdW1lbnQmIGRvY3VtZW50LCBzdGQ6OnVuaXF1ZV9wdHI8U2xvdEFzc2ln
bm1lbnQ+JiYgc2xvCiAgICAgOiBEb2N1bWVudEZyYWdtZW50KGRvY3VtZW50LCBDcmVhdGVTaGFk
b3dSb290KQogICAgICwgVHJlZVNjb3BlKCp0aGlzLCBkb2N1bWVudCkKICAgICAsIG1fdHlwZShU
eXBlOjpVc2VyQWdlbnQpCi0gICAgLCBtX3Nsb3RBc3NpZ25tZW50KFdURjo6bW92ZShzbG90QXNz
aWdubWVudCkpCisgICAgLCBtX3Nsb3RBc3NpZ25tZW50KFdURk1vdmUoc2xvdEFzc2lnbm1lbnQp
KQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaAppbmRleCA2YjJlNmUzOTQ1MWM0NjgwOGY3
NWUxMGY3NzQzMTFhNzExNzMzZmJjLi44YTUxYjcwMDgyODAzMGVhZjQ3ZGZmYTJhZTMyZTkwMTYz
YTQyZTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmgKQEAgLTU2LDcgKzU2LDcgQEAgcHVibGlj
OgogI2lmIEVOQUJMRShTSEFET1dfRE9NKSB8fCBFTkFCTEUoREVUQUlMU19FTEVNRU5UKQogICAg
IHN0YXRpYyBSZWY8U2hhZG93Um9vdD4gY3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgc3RkOjp1
bmlxdWVfcHRyPFNsb3RBc3NpZ25tZW50PiYmIGFzc2lnbm1lbnQpCiAgICAgewotICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFkb3dSb290KGRvY3VtZW50LCBXVEY6Om1vdmUoYXNzaWdu
bWVudCkpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhZG93Um9vdChkb2N1bWVu
dCwgV1RGTW92ZShhc3NpZ25tZW50KSkpOwogICAgIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vU2xvdEFzc2lnbm1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9t
L1Nsb3RBc3NpZ25tZW50LmNwcAppbmRleCAzYzU4ODBjNmNkMzBmMWZjYjA5Y2VhMTRiYzU1NmQ1
NTBjNjkzM2RmLi4yYzQ1YjUzMGU0ZDg2ZDIyNzExNmQxZDY1OWZjYmJjZTQ4ZTM2YTY3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2xvdEFzc2lnbm1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9TbG90QXNzaWdubWVudC5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgU2xvdEFz
c2lnbm1lbnQ6OlNsb3RBc3NpZ25tZW50KCkKIH0KIAogU2xvdEFzc2lnbm1lbnQ6OlNsb3RBc3Np
Z25tZW50KFNsb3ROYW1lRnVuY3Rpb24gZnVuY3Rpb24pCi0gICAgOiBtX3Nsb3ROYW1lRnVuY3Rp
b24oV1RGOjptb3ZlKGZ1bmN0aW9uKSkKKyAgICA6IG1fc2xvdE5hbWVGdW5jdGlvbihXVEZNb3Zl
KGZ1bmN0aW9uKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1N0eWxl
ZEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuY3BwCmluZGV4
IDg3ZGViNGJjM2Q2MjY0ZGQyNDQ2MDcyZmNkOTFhZmYxOWExZDM5MzEuLjJkZDQ3YWIzNWY2NDFj
NDkxMTZiMzVkMTcwYTJjM2JjYTM2MTIzNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TdHlsZWRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVu
dC5jcHAKQEAgLTM1Myw5ICszNTMsOSBAQCB2b2lkIFN0eWxlZEVsZW1lbnQ6OnJlYnVpbGRQcmVz
ZW50YXRpb25BdHRyaWJ1dGVTdHlsZSgpCiAgICAgaWYgKHByZXNlbnRhdGlvbkF0dHJpYnV0ZUNh
Y2hlKCkuc2l6ZSgpID4gcHJlc2VudGF0aW9uQXR0cmlidXRlQ2FjaGVNYXhpbXVtU2l6ZSkgewog
ICAgICAgICAvLyBTdGFydCBidWlsZGluZyBmcm9tIHNjcmF0Y2ggaWYgdGhlIGNhY2hlIGV2ZXIg
Z2V0cyBiaWcuCiAgICAgICAgIHByZXNlbnRhdGlvbkF0dHJpYnV0ZUNhY2hlKCkuY2xlYXIoKTsK
LSAgICAgICAgcHJlc2VudGF0aW9uQXR0cmlidXRlQ2FjaGUoKS5zZXQoY2FjaGVIYXNoLCBXVEY6
Om1vdmUobmV3RW50cnkpKTsKKyAgICAgICAgcHJlc2VudGF0aW9uQXR0cmlidXRlQ2FjaGUoKS5z
ZXQoY2FjaGVIYXNoLCBXVEZNb3ZlKG5ld0VudHJ5KSk7CiAgICAgfSBlbHNlCi0gICAgICAgIGNh
Y2hlSXRlcmF0b3ItPnZhbHVlID0gV1RGOjptb3ZlKG5ld0VudHJ5KTsKKyAgICAgICAgY2FjaGVJ
dGVyYXRvci0+dmFsdWUgPSBXVEZNb3ZlKG5ld0VudHJ5KTsKIH0KIAogdm9pZCBTdHlsZWRFbGVt
ZW50OjphZGRQcm9wZXJ0eVRvUHJlc2VudGF0aW9uQXR0cmlidXRlU3R5bGUoTXV0YWJsZVN0eWxl
UHJvcGVydGllcyYgc3R5bGUsIENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwgQ1NTVmFsdWVJRCBp
ZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1RleHQuY3BwIGIvU291
cmNlL1dlYkNvcmUvZG9tL1RleHQuY3BwCmluZGV4IDZjNGM4OWRhOWViNmVmY2YwNmFiODQyOWVh
NWM0ZDEyMjNlZTM0NjguLjU4NTMxMjk0YjVhOTk2YzAyMGZkNzEyZWQ0MWEyNjY5ZDk3MDQ4Yjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vVGV4dC5jcHAKQEAgLTgzLDcgKzgzLDcgQEAgUmVmUHRyPFRleHQ+IFRleHQ6OnNw
bGl0VGV4dCh1bnNpZ25lZCBvZmZzZXQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIGlmIChyZW5k
ZXJlcigpKQogICAgICAgICByZW5kZXJlcigpLT5zZXRUZXh0V2l0aE9mZnNldChkYXRhKCksIDAs
IG9sZFN0ci5sZW5ndGgoKSk7CiAKLSAgICByZXR1cm4gV1RGOjptb3ZlKG5ld1RleHQpOworICAg
IHJldHVybiBXVEZNb3ZlKG5ld1RleHQpOwogfQogCiBzdGF0aWMgY29uc3QgVGV4dCogZWFybGll
c3RMb2dpY2FsbHlBZGphY2VudFRleHROb2RlKGNvbnN0IFRleHQqIHRleHQpCkBAIC0xMzQsNyAr
MTM0LDcgQEAgUmVmUHRyPFRleHQ+IFRleHQ6OnJlcGxhY2VXaG9sZVRleHQoY29uc3QgU3RyaW5n
JiBuZXdUZXh0LCBFeGNlcHRpb25Db2RlJikKICAgICBmb3IgKFJlZlB0cjxOb2RlPiBuID0gc3Rh
cnRUZXh0OyBuICYmIG4gIT0gdGhpcyAmJiBuLT5pc1RleHROb2RlKCkgJiYgbi0+cGFyZW50Tm9k
ZSgpID09IHBhcmVudDspIHsKICAgICAgICAgUmVmPE5vZGU+IG5vZGVUb1JlbW92ZShuLnJlbGVh
c2VOb25OdWxsKCkpOwogICAgICAgICBuID0gbm9kZVRvUmVtb3ZlLT5uZXh0U2libGluZygpOwot
ICAgICAgICBwYXJlbnQtPnJlbW92ZUNoaWxkKFdURjo6bW92ZShub2RlVG9SZW1vdmUpLCBJR05P
UkVfRVhDRVBUSU9OKTsKKyAgICAgICAgcGFyZW50LT5yZW1vdmVDaGlsZChXVEZNb3ZlKG5vZGVU
b1JlbW92ZSksIElHTk9SRV9FWENFUFRJT04pOwogICAgIH0KIAogICAgIGlmICh0aGlzICE9IGVu
ZFRleHQpIHsKQEAgLTE0Miw3ICsxNDIsNyBAQCBSZWZQdHI8VGV4dD4gVGV4dDo6cmVwbGFjZVdo
b2xlVGV4dChjb25zdCBTdHJpbmcmIG5ld1RleHQsIEV4Y2VwdGlvbkNvZGUmKQogICAgICAgICBm
b3IgKFJlZlB0cjxOb2RlPiBuID0gbmV4dFNpYmxpbmcoKTsgbiAmJiBuICE9IG9uZVBhc3RFbmRU
ZXh0ICYmIG4tPmlzVGV4dE5vZGUoKSAmJiBuLT5wYXJlbnROb2RlKCkgPT0gcGFyZW50Oykgewog
ICAgICAgICAgICAgUmVmPE5vZGU+IG5vZGVUb1JlbW92ZShuLnJlbGVhc2VOb25OdWxsKCkpOwog
ICAgICAgICAgICAgbiA9IG5vZGVUb1JlbW92ZS0+bmV4dFNpYmxpbmcoKTsKLSAgICAgICAgICAg
IHBhcmVudC0+cmVtb3ZlQ2hpbGQoV1RGOjptb3ZlKG5vZGVUb1JlbW92ZSksIElHTk9SRV9FWENF
UFRJT04pOworICAgICAgICAgICAgcGFyZW50LT5yZW1vdmVDaGlsZChXVEZNb3ZlKG5vZGVUb1Jl
bW92ZSksIElHTk9SRV9FWENFUFRJT04pOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJhdmVyc2FsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9U
cmF2ZXJzYWwuY3BwCmluZGV4IDNjNmM5OTc3YmJhMmQ1N2Y5YzRlY2YxZmYzZWFlZTdmNDY4NWQy
ZTAuLjMzMTRiMzk4ZTU0ZDE5ZDFkNTlmOTUxMDU4NzgxMzllN2YzMmUxY2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9UcmF2ZXJzYWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9UcmF2ZXJzYWwuY3BwCkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIE5v
ZGVJdGVyYXRvckJhc2U6Ok5vZGVJdGVyYXRvckJhc2UoTm9kZSYgcm9vdE5vZGUsIHVuc2lnbmVk
IGxvbmcgd2hhdFRvU2hvdywgUmVmUHRyPE5vZGVGaWx0ZXI+JiYgbm9kZUZpbHRlcikKICAgICA6
IG1fcm9vdCgmcm9vdE5vZGUpCiAgICAgLCBtX3doYXRUb1Nob3cod2hhdFRvU2hvdykKLSAgICAs
IG1fZmlsdGVyKFdURjo6bW92ZShub2RlRmlsdGVyKSkKKyAgICAsIG1fZmlsdGVyKFdURk1vdmUo
bm9kZUZpbHRlcikpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVl
V2Fsa2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlV2Fsa2VyLmNwcAppbmRleCBiZTE2
ZWExYjhiZGU4Mjg2NzVkZWEwY2Y1NzE3ZDMxZjUxYjA1MDEyLi5jY2JlMDkyOTViOGQ3YzAyZWFk
Njg3ZjZlYzk4MDA4Mjk2Mzg5OTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJl
ZVdhbGtlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVXYWxrZXIuY3BwCkBAIC0z
NCw3ICszNCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFRyZWVXYWxrZXI6OlRyZWVXYWxr
ZXIoTm9kZSYgcm9vdE5vZGUsIHVuc2lnbmVkIGxvbmcgd2hhdFRvU2hvdywgUmVmUHRyPE5vZGVG
aWx0ZXI+JiYgZmlsdGVyKQotICAgIDogTm9kZUl0ZXJhdG9yQmFzZShyb290Tm9kZSwgd2hhdFRv
U2hvdywgV1RGOjptb3ZlKGZpbHRlcikpCisgICAgOiBOb2RlSXRlcmF0b3JCYXNlKHJvb3ROb2Rl
LCB3aGF0VG9TaG93LCBXVEZNb3ZlKGZpbHRlcikpCiAgICAgLCBtX2N1cnJlbnQocm9vdCgpKQog
ewogfQpAQCAtMTQxLDcgKzE0MSw3IEBAIHRlbXBsYXRlPFRyZWVXYWxrZXI6OlNpYmxpbmdUcmF2
ZXJzYWxUeXBlIHR5cGU+IE5vZGUqIFRyZWVXYWxrZXI6OnRyYXZlcnNlU2libGluCiAgICAgICAg
IGZvciAoUmVmUHRyPE5vZGU+IHNpYmxpbmcgPSBpc05leHQgPyBub2RlLT5uZXh0U2libGluZygp
IDogbm9kZS0+cHJldmlvdXNTaWJsaW5nKCk7IHNpYmxpbmc7ICkgewogICAgICAgICAgICAgc2hv
cnQgYWNjZXB0Tm9kZVJlc3VsdCA9IGFjY2VwdE5vZGUoc2libGluZy5nZXQoKSk7CiAgICAgICAg
ICAgICBpZiAoYWNjZXB0Tm9kZVJlc3VsdCA9PSBOb2RlRmlsdGVyOjpGSUxURVJfQUNDRVBUKSB7
Ci0gICAgICAgICAgICAgICAgbV9jdXJyZW50ID0gV1RGOjptb3ZlKHNpYmxpbmcpOworICAgICAg
ICAgICAgICAgIG1fY3VycmVudCA9IFdURk1vdmUoc2libGluZyk7CiAgICAgICAgICAgICAgICAg
cmV0dXJuIG1fY3VycmVudC5nZXQoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIG5vZGUg
PSBzaWJsaW5nOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVXYWxrZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlV2Fsa2VyLmgKaW5kZXggMWRiZjVjZTQ2NGNjODEzNWM2
ZTc4NjU0YzhiYmMwODNiZTlmNGQ2My4uOGU4MTUwODYxNDZiZGM2YjhkMmJhNWYzODE2MmJkZGVj
ZDg0Y2UyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVXYWxrZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVdhbGtlci5oCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBSZWY8VHJlZVdhbGtl
cj4gY3JlYXRlKE5vZGUmIHJvb3ROb2RlLCB1bnNpZ25lZCBsb25nIHdoYXRUb1Nob3csIFJlZlB0
cjxOb2RlRmlsdGVyPiYmIGZpbHRlcikKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgVHJlZVdhbGtlcihyb290Tm9kZSwgd2hhdFRvU2hvdywgV1RGOjptb3ZlKGZp
bHRlcikpKTsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFRyZWVXYWxrZXIocm9v
dE5vZGUsIHdoYXRUb1Nob3csIFdURk1vdmUoZmlsdGVyKSkpOwogICAgICAgICB9ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIAogCiAgICAgICAgIE5vZGUqIGN1cnJlbnROb2RlKCkgY29uc3Qg
eyByZXR1cm4gbV9jdXJyZW50LmdldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20v
VHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmgKaW5kZXggMTE1YmM4NmI0MjMyYWU1YThl
YjM5OGUzYjZmYTA4MGYwNTY0NWY1MS4uNjZkMzhjZDkxYmM0Nzg5NzBjZTY5NmI5ZDgwNDhjYmJm
ZTM0Yjc3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1R5cGVkRWxlbWVudERlc2Nl
bmRhbnRJdGVyYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UeXBlZEVsZW1lbnREZXNj
ZW5kYW50SXRlcmF0b3IuaApAQCAtMjU3LDcgKzI1Nyw3IEBAIGlubGluZSBjb25zdCBFbGVtZW50
VHlwZSogVHlwZWRFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRU
eXBlCiAvLyBEb3VibGVUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVyCiAKIHRl
bXBsYXRlPHR5cGVuYW1lIEVsZW1lbnRUeXBlPiBpbmxpbmUgRG91YmxlVHlwZWRFbGVtZW50RGVz
Y2VuZGFudEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT46OkRvdWJsZVR5cGVkRWxlbWVudERl
c2NlbmRhbnRJdGVyYXRvckFkYXB0ZXIoU2luZ2xlQWRhcHRlciYmIGZpcnN0LCBTaW5nbGVBZGFw
dGVyJiYgc2Vjb25kKQotICAgIDogbV9wYWlyKFdURjo6bW92ZShmaXJzdCksIFdURjo6bW92ZShz
ZWNvbmQpKQorICAgIDogbV9wYWlyKFdURk1vdmUoZmlyc3QpLCBXVEZNb3ZlKHNlY29uZCkpCiB7
CiB9CiAKQEAgLTI3NCw3ICsyNzQsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBFbGVtZW50VHlwZT4g
aW5saW5lIGF1dG8gRG91YmxlVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yQQogLy8gRG91
YmxlVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yCiAKIHRlbXBsYXRlPHR5cGVuYW1lIEVs
ZW1lbnRUeXBlPiBpbmxpbmUgRG91YmxlVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVs
ZW1lbnRUeXBlPjo6RG91YmxlVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yKFNpbmdsZUl0
ZXJhdG9yJiYgZmlyc3QsIFNpbmdsZUl0ZXJhdG9yJiYgc2Vjb25kKQotICAgIDogbV9wYWlyKFdU
Rjo6bW92ZShmaXJzdCksIFdURjo6bW92ZShzZWNvbmQpKQorICAgIDogbV9wYWlyKFdURk1vdmUo
Zmlyc3QpLCBXVEZNb3ZlKHNlY29uZCkpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9kZWZhdWx0L1BsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9kZWZhdWx0L1BsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsLmNwcAppbmRleCA1
MGNkNTljZTY0ZDcwMjUzN2RmNjJmM2MyMjg5YmUzYjAyMjUxYTc1Li45NjMzNzk1ZWQyYzE5NDk2
MDkwMTVjOTJlZmJkZGUzYWJiMmRlZmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
ZGVmYXVsdC9QbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL2RlZmF1bHQvUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwuY3BwCkBAIC0zOSw3ICsz
OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWw6
OkV2ZW50RGF0YTo6RXZlbnREYXRhKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBt
ZXNzYWdlLCBzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+IGNoYW5uZWxz
KQogICAgIDogbV9tZXNzYWdlKG1lc3NhZ2UpCi0gICAgLCBtX2NoYW5uZWxzKFdURjo6bW92ZShj
aGFubmVscykpCisgICAgLCBtX2NoYW5uZWxzKFdURk1vdmUoY2hhbm5lbHMpKQogewogfQogCkBA
IC01NCw4ICs1NCw4IEBAIHZvaWQgTWVzc2FnZVBvcnRDaGFubmVsOjpjcmVhdGVDaGFubmVsKFBh
c3NSZWZQdHI8TWVzc2FnZVBvcnQ+IHBvcnQxLCBQYXNzUmVmUHRyCiAgICAgY2hhbm5lbDEtPm1f
Y2hhbm5lbC0+bV9lbnRhbmdsZWRDaGFubmVsID0gY2hhbm5lbDItPm1fY2hhbm5lbDsKICAgICBj
aGFubmVsMi0+bV9jaGFubmVsLT5tX2VudGFuZ2xlZENoYW5uZWwgPSBjaGFubmVsMS0+bV9jaGFu
bmVsOwogCi0gICAgcG9ydDEtPmVudGFuZ2xlKFdURjo6bW92ZShjaGFubmVsMikpOwotICAgIHBv
cnQyLT5lbnRhbmdsZShXVEY6Om1vdmUoY2hhbm5lbDEpKTsKKyAgICBwb3J0MS0+ZW50YW5nbGUo
V1RGTW92ZShjaGFubmVsMikpOworICAgIHBvcnQyLT5lbnRhbmdsZShXVEZNb3ZlKGNoYW5uZWwx
KSk7CiB9CiAKIE1lc3NhZ2VQb3J0Q2hhbm5lbDo6TWVzc2FnZVBvcnRDaGFubmVsKFBhc3NSZWZQ
dHI8UGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWw+IGNoYW5uZWwpCkBAIC05MSw3ICs5MSw3IEBA
IHZvaWQgTWVzc2FnZVBvcnRDaGFubmVsOjpwb3N0TWVzc2FnZVRvUmVtb3RlKFBhc3NSZWZQdHI8
U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtCiAgICAgTG9ja0hvbGRlciBsb2NrKG1fY2hhbm5lbC0+
bV9tdXRleCk7CiAgICAgaWYgKCFtX2NoYW5uZWwtPm1fb3V0Z29pbmdRdWV1ZSkKICAgICAgICAg
cmV0dXJuOwotICAgIGJvb2wgd2FzRW1wdHkgPSBtX2NoYW5uZWwtPm1fb3V0Z29pbmdRdWV1ZS0+
YXBwZW5kQW5kQ2hlY2tFbXB0eShzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtTWVzc2FnZVBvcnRD
aGFubmVsOjpFdmVudERhdGE+KG1lc3NhZ2UsIFdURjo6bW92ZShjaGFubmVscykpKTsKKyAgICBi
b29sIHdhc0VtcHR5ID0gbV9jaGFubmVsLT5tX291dGdvaW5nUXVldWUtPmFwcGVuZEFuZENoZWNr
RW1wdHkoc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbDo6RXZlbnRE
YXRhPihtZXNzYWdlLCBXVEZNb3ZlKGNoYW5uZWxzKSkpOwogICAgIGlmICh3YXNFbXB0eSAmJiBt
X2NoYW5uZWwtPm1fcmVtb3RlUG9ydCkKICAgICAgICAgbV9jaGFubmVsLT5tX3JlbW90ZVBvcnQt
Pm1lc3NhZ2VBdmFpbGFibGUoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9k
ZWZhdWx0L1BsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20v
ZGVmYXVsdC9QbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbC5oCmluZGV4IDRjMDIyNjFkNWRiNGY3
MWY2OTQ3NDY4ZGVjMjVjYTIwOGQyZDBlYWIuLjcxMDQ0OTJkMWYyMjU2OWQzZDc2MzgwMjAyYmQy
MTIxMDU0ZmI1ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9kZWZhdWx0L1BsYXRm
b3JtTWVzc2FnZVBvcnRDaGFubmVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL2RlZmF1bHQv
UGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwuaApAQCAtNTIsNyArNTIsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgICAgICBFdmVudERhdGEoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+IG1lc3NhZ2UsIHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJh
eT4pOwogCiAgICAgICAgICAgICBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVz
c2FnZSgpIHsgcmV0dXJuIG1fbWVzc2FnZTsgfQotICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRy
PE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBjaGFubmVscygpIHsgcmV0dXJuIFdURjo6bW92ZSht
X2NoYW5uZWxzKTsgfQorICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPE1lc3NhZ2VQb3J0Q2hh
bm5lbEFycmF5PiBjaGFubmVscygpIHsgcmV0dXJuIFdURk1vdmUobV9jaGFubmVscyk7IH0KIAog
ICAgICAgICBwcml2YXRlOgogICAgICAgICAgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4gbV9tZXNzYWdlOwpAQCAtNzEsNyArNzEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAg
ICAgICAgICAgIGJvb2wgYXBwZW5kQW5kQ2hlY2tFbXB0eShzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZv
cm1NZXNzYWdlUG9ydENoYW5uZWw6OkV2ZW50RGF0YT4gbWVzc2FnZSkKICAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICByZXR1cm4gbV9xdWV1ZS5hcHBlbmRBbmRDaGVja0VtcHR5KFdURjo6
bW92ZShtZXNzYWdlKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIG1fcXVldWUuYXBwZW5kQW5k
Q2hlY2tFbXB0eShXVEZNb3ZlKG1lc3NhZ2UpKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAg
ICAgYm9vbCBpc0VtcHR5KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBw
ZW5kTm9kZUNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBlbmROb2RlQ29t
bWFuZC5jcHAKaW5kZXggYjkzNTMxMjE3Mjg3ZWIyMjYwYWM2NzEwZmZkN2UzYzBmODY3Nzg2ZS4u
OGFhOGI3MThlNTMzYjk4MDBhMjI5MWIzN2VjMjIwNzY1NDdjZjhhNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBlbmROb2RlQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9BcHBlbmROb2RlQ29tbWFuZC5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogQXBwZW5kTm9kZUNvbW1hbmQ6OkFwcGVuZE5vZGVDb21tYW5kKFBh
c3NSZWZQdHI8Q29udGFpbmVyTm9kZT4gcGFyZW50LCBSZWY8Tm9kZT4mJiBub2RlLCBFZGl0QWN0
aW9uIGVkaXRpbmdBY3Rpb24pCiAgICAgOiBTaW1wbGVFZGl0Q29tbWFuZChwYXJlbnQtPmRvY3Vt
ZW50KCksIGVkaXRpbmdBY3Rpb24pCiAgICAgLCBtX3BhcmVudChwYXJlbnQpCi0gICAgLCBtX25v
ZGUoV1RGOjptb3ZlKG5vZGUpKQorICAgICwgbV9ub2RlKFdURk1vdmUobm9kZSkpCiB7CiAgICAg
QVNTRVJUKG1fcGFyZW50KTsKICAgICBBU1NFUlQoIW1fbm9kZS0+cGFyZW50Tm9kZSgpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwZW5kTm9kZUNvbW1hbmQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwZW5kTm9kZUNvbW1hbmQuaAppbmRleCA2NDBmYTc1YTJm
Zjg2ODE2NzE3ZjZhZmEwYjkzMmMzZjAwZTQ0OTVlLi45NjdlMDJmNzlhZjIyM2Y0NTQ5YjA1OTQ4
OGZkMzNiNDBjMzliMGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGVu
ZE5vZGVDb21tYW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBlbmROb2RlQ29t
bWFuZC5oCkBAIC0zNCw3ICszNCw3IEBAIGNsYXNzIEFwcGVuZE5vZGVDb21tYW5kIDogcHVibGlj
IFNpbXBsZUVkaXRDb21tYW5kIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPEFwcGVuZE5vZGVD
b21tYW5kPiBjcmVhdGUoUGFzc1JlZlB0cjxDb250YWluZXJOb2RlPiBwYXJlbnQsIFJlZjxOb2Rl
PiYmIG5vZGUsIEVkaXRBY3Rpb24gZWRpdGluZ0FjdGlvbikKICAgICB7Ci0gICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IEFwcGVuZE5vZGVDb21tYW5kKHBhcmVudCwgV1RGOjptb3ZlKG5vZGUp
LCBlZGl0aW5nQWN0aW9uKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEFwcGVuZE5v
ZGVDb21tYW5kKHBhcmVudCwgV1RGTW92ZShub2RlKSwgZWRpdGluZ0FjdGlvbikpOwogICAgIH0K
IAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRl
RWRpdENvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29t
bWFuZC5jcHAKaW5kZXggNWUyNGFlMjEwZmI1ODAyZjk5NTkxNTFmM2M1Nzk0MjU0ZWFiNDYzYy4u
ZWQ0MTc1NjY0MWRlMGQ2ZTNkMWY2OWIxMzcxODQ2MTFkMTlmN2Q5MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAKQEAgLTU1OCwxMCArNTU4
LDEwIEBAIHZvaWQgQ29tcG9zaXRlRWRpdENvbW1hbmQ6OmRlbGV0ZVRleHRGcm9tTm9kZShQYXNz
UmVmUHRyPFRleHQ+IG5vZGUsIHVuc2lnbmVkIG9mCiB2b2lkIENvbXBvc2l0ZUVkaXRDb21tYW5k
OjpyZXBsYWNlVGV4dEluTm9kZShQYXNzUmVmUHRyPFRleHQ+IHBycE5vZGUsIHVuc2lnbmVkIG9m
ZnNldCwgdW5zaWduZWQgY291bnQsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRUZXh0KQogewog
ICAgIFJlZlB0cjxUZXh0PiBub2RlKHBycE5vZGUpOwotICAgIFJlZlB0cjxEZWxldGVGcm9tVGV4
dE5vZGVDb21tYW5kPiBkZWxldGVDb21tYW5kID0gUmVwbGFjZURlbGV0ZUZyb21UZXh0Tm9kZUNv
bW1hbmQ6OmNyZWF0ZShXVEY6Om1vdmUobm9kZSksIG9mZnNldCwgY291bnQpOworICAgIFJlZlB0
cjxEZWxldGVGcm9tVGV4dE5vZGVDb21tYW5kPiBkZWxldGVDb21tYW5kID0gUmVwbGFjZURlbGV0
ZUZyb21UZXh0Tm9kZUNvbW1hbmQ6OmNyZWF0ZShXVEZNb3ZlKG5vZGUpLCBvZmZzZXQsIGNvdW50
KTsKICAgICBhcHBseUNvbW1hbmRUb0NvbXBvc2l0ZShkZWxldGVDb21tYW5kKTsKICAgICBpZiAo
IXJlcGxhY2VtZW50VGV4dC5pc0VtcHR5KCkpCi0gICAgICAgIGFwcGx5Q29tbWFuZFRvQ29tcG9z
aXRlKFJlcGxhY2VJbnNlcnRJbnRvVGV4dE5vZGVDb21tYW5kOjpjcmVhdGUoV1RGOjptb3ZlKG5v
ZGUpLCBvZmZzZXQsIHJlcGxhY2VtZW50VGV4dCwgZGVsZXRlQ29tbWFuZC0+ZGVsZXRlZFRleHQo
KSwgZWRpdGluZ0FjdGlvbigpKSk7CisgICAgICAgIGFwcGx5Q29tbWFuZFRvQ29tcG9zaXRlKFJl
cGxhY2VJbnNlcnRJbnRvVGV4dE5vZGVDb21tYW5kOjpjcmVhdGUoV1RGTW92ZShub2RlKSwgb2Zm
c2V0LCByZXBsYWNlbWVudFRleHQsIGRlbGV0ZUNvbW1hbmQtPmRlbGV0ZWRUZXh0KCksIGVkaXRp
bmdBY3Rpb24oKSkpOwogfQogCiBQb3NpdGlvbiBDb21wb3NpdGVFZGl0Q29tbWFuZDo6cmVwbGFj
ZVNlbGVjdGVkVGV4dEluTm9kZShjb25zdCBTdHJpbmcmIHRleHQpCkBAIC0xMzE5LDcgKzEzMTks
NyBAQCB2b2lkIENvbXBvc2l0ZUVkaXRDb21tYW5kOjptb3ZlUGFyYWdyYXBocyhjb25zdCBWaXNp
YmxlUG9zaXRpb24mIHN0YXJ0T2ZQYXJhZ3JhcAogICAgIFJlcGxhY2VTZWxlY3Rpb25Db21tYW5k
OjpDb21tYW5kT3B0aW9ucyBvcHRpb25zID0gUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OlNlbGVj
dFJlcGxhY2VtZW50IHwgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6Ok1vdmluZ1BhcmFncmFwaDsK
ICAgICBpZiAoIXByZXNlcnZlU3R5bGUpCiAgICAgICAgIG9wdGlvbnMgfD0gUmVwbGFjZVNlbGVj
dGlvbkNvbW1hbmQ6Ok1hdGNoU3R5bGU7Ci0gICAgYXBwbHlDb21tYW5kVG9Db21wb3NpdGUoUmVw
bGFjZVNlbGVjdGlvbkNvbW1hbmQ6OmNyZWF0ZShkb2N1bWVudCgpLCBXVEY6Om1vdmUoZnJhZ21l
bnQpLCBvcHRpb25zKSk7CisgICAgYXBwbHlDb21tYW5kVG9Db21wb3NpdGUoUmVwbGFjZVNlbGVj
dGlvbkNvbW1hbmQ6OmNyZWF0ZShkb2N1bWVudCgpLCBXVEZNb3ZlKGZyYWdtZW50KSwgb3B0aW9u
cykpOwogCiAgICAgZnJhbWUoKS5lZGl0b3IoKS5tYXJrTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1h
cihlbmRpbmdTZWxlY3Rpb24oKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRGVsZXRlRnJvbVRleHROb2RlQ29tbWFuZC5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9E
ZWxldGVGcm9tVGV4dE5vZGVDb21tYW5kLmgKaW5kZXggNGU2MTk2OWYwYzNkNWI1MTIyYjgwZWMz
ZTU0ZDVhZTNlNTUxNmM3OC4uYjA3YmRmMGM5NjFhMzAzMjBjYmI3YTgxZTg0NTM3ODdjOGE3YWVl
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9EZWxldGVGcm9tVGV4dE5vZGVD
b21tYW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9EZWxldGVGcm9tVGV4dE5vZGVD
b21tYW5kLmgKQEAgLTM2LDcgKzM2LDcgQEAgY2xhc3MgRGVsZXRlRnJvbVRleHROb2RlQ29tbWFu
ZCA6IHB1YmxpYyBTaW1wbGVFZGl0Q29tbWFuZCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxE
ZWxldGVGcm9tVGV4dE5vZGVDb21tYW5kPiBjcmVhdGUoUmVmUHRyPFRleHQ+JiYgbm9kZSwgdW5z
aWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBjb3VudCwgRWRpdEFjdGlvbiBlZGl0aW5nQWN0aW9uID0g
RWRpdEFjdGlvbkRlbGV0ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERl
bGV0ZUZyb21UZXh0Tm9kZUNvbW1hbmQoV1RGOjptb3ZlKG5vZGUpLCBvZmZzZXQsIGNvdW50LCBl
ZGl0aW5nQWN0aW9uKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERlbGV0ZUZyb21U
ZXh0Tm9kZUNvbW1hbmQoV1RGTW92ZShub2RlKSwgb2Zmc2V0LCBjb3VudCwgZWRpdGluZ0FjdGlv
bikpOwogICAgIH0KIAogICAgIGNvbnN0IFN0cmluZyYgZGVsZXRlZFRleHQoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcAppbmRleCAxMTA5ZWI1OTYzOWRhZDQ1NzRhN2Ez
MjBjODlmOTMyZTZiMWJiYTJmLi40Yzc5MTAzMzRhZGVmMGE5NjRhYjY4OWE3NDM3MGNlNzM5Zjg4
Nzk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwCkBAIC01OTMsNyAr
NTkzLDcgQEAgc3RhdGljIHZvaWQgYXBwbHlUZXh0RGVjb3JhdGlvbkNoYW5nZVRvVmFsdWVMaXN0
KENTU1ZhbHVlTGlzdCYgdmFsdWVMaXN0LCBUZXh0RGUKICAgICBjYXNlIFRleHREZWNvcmF0aW9u
Q2hhbmdlOjpOb25lOgogICAgICAgICBicmVhazsKICAgICBjYXNlIFRleHREZWNvcmF0aW9uQ2hh
bmdlOjpBZGQ6Ci0gICAgICAgIHZhbHVlTGlzdC5hcHBlbmQoV1RGOjptb3ZlKHZhbHVlKSk7Cisg
ICAgICAgIHZhbHVlTGlzdC5hcHBlbmQoV1RGTW92ZSh2YWx1ZSkpOwogICAgICAgICBicmVhazsK
ICAgICBjYXNlIFRleHREZWNvcmF0aW9uQ2hhbmdlOjpSZW1vdmU6CiAgICAgICAgIHZhbHVlTGlz
dC5yZW1vdmVBbGwoJnZhbHVlLmdldCgpKTsKQEAgLTYyNCwxNCArNjI0LDE0IEBAIHZvaWQgRWRp
dGluZ1N0eWxlOjpvdmVycmlkZVR5cGluZ1N0eWxlQXQoY29uc3QgRWRpdGluZ1N0eWxlJiBzdHls
ZSwgY29uc3QgUG9zaXRpCiAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gdmFsdWVMaXN0OwogICAg
IGlmICh2YWx1ZSAmJiB2YWx1ZS0+aXNWYWx1ZUxpc3QoKSkgewogICAgICAgICB2YWx1ZUxpc3Qg
PSBkb3duY2FzdDxDU1NWYWx1ZUxpc3Q+KCp2YWx1ZSkuY29weSgpOwotICAgICAgICBhcHBseVRl
eHREZWNvcmF0aW9uQ2hhbmdlVG9WYWx1ZUxpc3QoKnZhbHVlTGlzdCwgdW5kZXJsaW5lQ2hhbmdl
LCBXVEY6Om1vdmUodW5kZXJsaW5lKSk7Ci0gICAgICAgIGFwcGx5VGV4dERlY29yYXRpb25DaGFu
Z2VUb1ZhbHVlTGlzdCgqdmFsdWVMaXN0LCBzdHJpa2VUaHJvdWdoQ2hhbmdlLCBXVEY6Om1vdmUo
bGluZVRocm91Z2gpKTsKKyAgICAgICAgYXBwbHlUZXh0RGVjb3JhdGlvbkNoYW5nZVRvVmFsdWVM
aXN0KCp2YWx1ZUxpc3QsIHVuZGVybGluZUNoYW5nZSwgV1RGTW92ZSh1bmRlcmxpbmUpKTsKKyAg
ICAgICAgYXBwbHlUZXh0RGVjb3JhdGlvbkNoYW5nZVRvVmFsdWVMaXN0KCp2YWx1ZUxpc3QsIHN0
cmlrZVRocm91Z2hDaGFuZ2UsIFdURk1vdmUobGluZVRocm91Z2gpKTsKICAgICB9IGVsc2Ugewog
ICAgICAgICB2YWx1ZUxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7
CiAgICAgICAgIGlmICh1bmRlcmxpbmVDaGFuZ2UgPT0gVGV4dERlY29yYXRpb25DaGFuZ2U6OkFk
ZCkKLSAgICAgICAgICAgIHZhbHVlTGlzdC0+YXBwZW5kKFdURjo6bW92ZSh1bmRlcmxpbmUpKTsK
KyAgICAgICAgICAgIHZhbHVlTGlzdC0+YXBwZW5kKFdURk1vdmUodW5kZXJsaW5lKSk7CiAgICAg
ICAgIGlmIChzdHJpa2VUaHJvdWdoQ2hhbmdlID09IFRleHREZWNvcmF0aW9uQ2hhbmdlOjpBZGQp
Ci0gICAgICAgICAgICB2YWx1ZUxpc3QtPmFwcGVuZChXVEY6Om1vdmUobGluZVRocm91Z2gpKTsK
KyAgICAgICAgICAgIHZhbHVlTGlzdC0+YXBwZW5kKFdURk1vdmUobGluZVRocm91Z2gpKTsKICAg
ICB9CiAgICAgbV9tdXRhYmxlU3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0VGV4
dERlY29yYXRpb25zSW5FZmZlY3QsIHZhbHVlTGlzdC5nZXQoKSk7CiB9CkBAIC04MzEsNyArODMx
LDcgQEAgYm9vbCBFZGl0aW5nU3R5bGU6OmNvbmZsaWN0c1dpdGhJbmxpbmVTdHlsZU9mRWxlbWVu
dChTdHlsZWRFbGVtZW50KiBlbGVtZW50LCBSZWYKICAgICAgICAgICAgICAgICBpZiAoIW5ld0lu
bGluZVN0eWxlKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAg
ICAgICBuZXdWYWx1ZUxpc3QtPnJlbW92ZUFsbCh1bmRlcmxpbmUucHRyKCkpOwotICAgICAgICAg
ICAgICAgIGV4dHJhY3RlZFZhbHVlTGlzdC0+YXBwZW5kKFdURjo6bW92ZSh1bmRlcmxpbmUpKTsK
KyAgICAgICAgICAgICAgICBleHRyYWN0ZWRWYWx1ZUxpc3QtPmFwcGVuZChXVEZNb3ZlKHVuZGVy
bGluZSkpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBSZWY8Q1NTUHJpbWl0aXZlVmFs
dWU+IGxpbmVUaHJvdWdoID0gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlm
aWVyVmFsdWUoQ1NTVmFsdWVMaW5lVGhyb3VnaCk7CkBAIC04MzksNyArODM5LDcgQEAgYm9vbCBF
ZGl0aW5nU3R5bGU6OmNvbmZsaWN0c1dpdGhJbmxpbmVTdHlsZU9mRWxlbWVudChTdHlsZWRFbGVt
ZW50KiBlbGVtZW50LCBSZWYKICAgICAgICAgICAgICAgICBpZiAoIW5ld0lubGluZVN0eWxlKQog
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgICAgICBuZXdWYWx1
ZUxpc3QtPnJlbW92ZUFsbChsaW5lVGhyb3VnaC5wdHIoKSk7Ci0gICAgICAgICAgICAgICAgZXh0
cmFjdGVkVmFsdWVMaXN0LT5hcHBlbmQoV1RGOjptb3ZlKGxpbmVUaHJvdWdoKSk7CisgICAgICAg
ICAgICAgICAgZXh0cmFjdGVkVmFsdWVMaXN0LT5hcHBlbmQoV1RGTW92ZShsaW5lVGhyb3VnaCkp
OwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoZXh0cmFjdGVkVmFsdWVMaXN0LT5s
ZW5ndGgoKSkgewpAQCAtMTIyMywxMCArMTIyMywxMCBAQCBzdGF0aWMgdm9pZCBtZXJnZVRleHRE
ZWNvcmF0aW9uVmFsdWVzKENTU1ZhbHVlTGlzdCYgbWVyZ2VkVmFsdWUsIGNvbnN0IENTU1ZhbHVl
TAogICAgIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gbGluZVRocm91Z2ggPSBjc3NWYWx1ZVBvb2wu
Y3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlTGluZVRocm91Z2gpOwogCiAgICAgaWYgKHZh
bHVlVG9NZXJnZS5oYXNWYWx1ZSh1bmRlcmxpbmUucHRyKCkpICYmICFtZXJnZWRWYWx1ZS5oYXNW
YWx1ZSh1bmRlcmxpbmUucHRyKCkpKQotICAgICAgICBtZXJnZWRWYWx1ZS5hcHBlbmQoV1RGOjpt
b3ZlKHVuZGVybGluZSkpOworICAgICAgICBtZXJnZWRWYWx1ZS5hcHBlbmQoV1RGTW92ZSh1bmRl
cmxpbmUpKTsKIAogICAgIGlmICh2YWx1ZVRvTWVyZ2UuaGFzVmFsdWUobGluZVRocm91Z2gucHRy
KCkpICYmICFtZXJnZWRWYWx1ZS5oYXNWYWx1ZShsaW5lVGhyb3VnaC5wdHIoKSkpCi0gICAgICAg
IG1lcmdlZFZhbHVlLmFwcGVuZChXVEY6Om1vdmUobGluZVRocm91Z2gpKTsKKyAgICAgICAgbWVy
Z2VkVmFsdWUuYXBwZW5kKFdURk1vdmUobGluZVRocm91Z2gpKTsKIH0KIAogdm9pZCBFZGl0aW5n
U3R5bGU6Om1lcmdlU3R5bGUoY29uc3QgU3R5bGVQcm9wZXJ0aWVzKiBzdHlsZSwgQ1NTUHJvcGVy
dHlPdmVycmlkZU1vZGUgbW9kZSkKQEAgLTE2MDgsOSArMTYwOCw5IEBAIFN0eWxlQ2hhbmdlOjpT
dHlsZUNoYW5nZShFZGl0aW5nU3R5bGUqIHN0eWxlLCBjb25zdCBQb3NpdGlvbiYgcG9zaXRpb24p
CiAgICAgICAgIGlmIChzaG91bGRTdHlsZVdpdGhDU1MpIHsKICAgICAgICAgICAgIHZhbHVlTGlz
dCA9IHZhbHVlTGlzdCA/IHZhbHVlTGlzdC0+Y29weSgpIDogQ1NTVmFsdWVMaXN0OjpjcmVhdGVT
cGFjZVNlcGFyYXRlZCgpOwogICAgICAgICAgICAgaWYgKHNob3VsZEFkZFVuZGVybGluZSAmJiAh
aGFzVW5kZXJsaW5lKQotICAgICAgICAgICAgICAgIHZhbHVlTGlzdC0+YXBwZW5kKFdURjo6bW92
ZSh1bmRlcmxpbmUpKTsKKyAgICAgICAgICAgICAgICB2YWx1ZUxpc3QtPmFwcGVuZChXVEZNb3Zl
KHVuZGVybGluZSkpOwogICAgICAgICAgICAgaWYgKHNob3VsZEFkZFN0cmlrZVRocm91Z2ggJiYg
IWhhc0xpbmVUaHJvdWdoKQotICAgICAgICAgICAgICAgIHZhbHVlTGlzdC0+YXBwZW5kKFdURjo6
bW92ZShsaW5lVGhyb3VnaCkpOworICAgICAgICAgICAgICAgIHZhbHVlTGlzdC0+YXBwZW5kKFdU
Rk1vdmUobGluZVRocm91Z2gpKTsKICAgICAgICAgICAgIG11dGFibGVTdHlsZS0+c2V0UHJvcGVy
dHkoQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvbiwgdmFsdWVMaXN0LmdldCgpKTsKICAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgICAgIG1fYXBwbHlVbmRlcmxpbmUgPSBzaG91bGRBZGRVbmRlcmxp
bmUgJiYgIWhhc1VuZGVybGluZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAppbmRleCA3NTdl
ZDgzNjFhOWQwNjc0Y2U5ZDc3ZjZlZjJhNWI1OTgzZTg0Y2Y2Li44ZWVkN2EwODg5NjY1ZGVkOWZi
NWRkMWY1N2VkOGE3YmUyODc5ZjhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCkBAIC0z
OTYsNyArMzk2LDcgQEAgdm9pZCBFZGl0b3I6Omluc2VydERpY3RhdGlvblBocmFzZXMoVmVjdG9y
PFZlY3RvcjxTdHJpbmc+PiYmIGRpY3RhdGlvblBocmFzZXMsIFIKICAgICBpZiAoZGljdGF0aW9u
UGhyYXNlcy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGFwcGx5Q29tbWFuZChE
aWN0YXRpb25Db21tYW5kSU9TOjpjcmVhdGUoZG9jdW1lbnQoKSwgV1RGOjptb3ZlKGRpY3RhdGlv
blBocmFzZXMpLCBXVEY6Om1vdmUobWV0YWRhdGEpKSk7CisgICAgYXBwbHlDb21tYW5kKERpY3Rh
dGlvbkNvbW1hbmRJT1M6OmNyZWF0ZShkb2N1bWVudCgpLCBXVEZNb3ZlKGRpY3RhdGlvblBocmFz
ZXMpLCBXVEZNb3ZlKG1ldGFkYXRhKSkpOwogfQogCiB2b2lkIEVkaXRvcjo6c2V0RGljdGF0aW9u
UGhyYXNlc0FzQ2hpbGRPZkVsZW1lbnQoY29uc3QgVmVjdG9yPFZlY3RvcjxTdHJpbmc+PiYgZGlj
dGF0aW9uUGhyYXNlcywgUmV0YWluUHRyPGlkPiBtZXRhZGF0YSwgRWxlbWVudCYgZWxlbWVudCkK
QEAgLTYxNCw3ICs2MTQsNyBAQCB2b2lkIEVkaXRvcjo6c2V0VGV4dEFzQ2hpbGRPZkVsZW1lbnQo
Y29uc3QgU3RyaW5nJiB0ZXh0LCBFbGVtZW50KiBlbGVtKQogICAgICAgICBSZWZQdHI8UmFuZ2U+
IGNvbnRleHQgPSBkb2N1bWVudCgpLmNyZWF0ZVJhbmdlKCk7CiAgICAgICAgIGNvbnRleHQtPnNl
bGVjdE5vZGVDb250ZW50cyhlbGVtLCBlYyk7CiAgICAgICAgIFJlZjxEb2N1bWVudEZyYWdtZW50
PiBmcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50RnJvbVRleHQoKmNvbnRleHQuZ2V0KCksIHRleHQp
OwotICAgICAgICBlbGVtLT5hcHBlbmRDaGlsZChXVEY6Om1vdmUoZnJhZ21lbnQpLCBlYyk7Cisg
ICAgICAgIGVsZW0tPmFwcGVuZENoaWxkKFdURk1vdmUoZnJhZ21lbnQpLCBlYyk7CiAgICAgCiAg
ICAgICAgIC8vIHJlc3RvcmUgZWxlbWVudCB0byBkb2N1bWVudAogICAgICAgICBpZiAocGFyZW50
KSB7CkBAIC05NTIsNyArOTUyLDcgQEAgdm9pZCBFZGl0b3I6OmFwcGx5U3R5bGVUb1NlbGVjdGlv
bihSZWY8RWRpdGluZ1N0eWxlPiYmIHN0eWxlLCBFZGl0QWN0aW9uIGVkaXRpbmcKICAgICBpZiAo
IWNsaWVudCgpIHx8ICFjbGllbnQoKS0+c2hvdWxkQXBwbHlTdHlsZShzdHlsZS0+c3R5bGVXaXRo
UmVzb2x2ZWRUZXh0RGVjb3JhdGlvbnMoKS5wdHIoKSwgbV9mcmFtZS5zZWxlY3Rpb24oKS50b05v
cm1hbGl6ZWRSYW5nZSgpLmdldCgpKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXBwbHlTdHls
ZShXVEY6Om1vdmUoc3R5bGUpLCBlZGl0aW5nQWN0aW9uKTsKKyAgICBhcHBseVN0eWxlKFdURk1v
dmUoc3R5bGUpLCBlZGl0aW5nQWN0aW9uKTsKIH0KIAogdm9pZCBFZGl0b3I6OmFwcGx5UGFyYWdy
YXBoU3R5bGVUb1NlbGVjdGlvbihTdHlsZVByb3BlcnRpZXMqIHN0eWxlLCBFZGl0QWN0aW9uIGVk
aXRpbmdBY3Rpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNv
bW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcAppbmRl
eCBiZWQ4NWYxMzk0MDVjNmFlMjc5M2I3Mzc0ZWMwYTE4NjcyMGMzYTgxLi5jOTIzNTk4YTQ3NDRk
MDBhMzYwZTQ4YmU5ZTAzZWNlNWRkNWY5NTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRp
dG9yQ29tbWFuZC5jcHAKQEAgLTEwMywxMSArMTAzLDExIEBAIHN0YXRpYyBib29sIGFwcGx5Q29t
bWFuZFRvRnJhbWUoRnJhbWUmIGZyYW1lLCBFZGl0b3JDb21tYW5kU291cmNlIHNvdXJjZSwgRWRp
dEFjCiAgICAgLy8gRklYTUU6IFdlIGRvbid0IGNhbGwgc2hvdWxkQXBwbHlTdHlsZSB3aGVuIHRo
ZSBzb3VyY2UgaXMgRE9NOyBpcyB0aGVyZSBhIGdvb2QgcmVhc29uIGZvciB0aGF0PwogICAgIHN3
aXRjaCAoc291cmNlKSB7CiAgICAgY2FzZSBDb21tYW5kRnJvbU1lbnVPcktleUJpbmRpbmc6Ci0g
ICAgICAgIGZyYW1lLmVkaXRvcigpLmFwcGx5U3R5bGVUb1NlbGVjdGlvbihXVEY6Om1vdmUoc3R5
bGUpLCBhY3Rpb24pOworICAgICAgICBmcmFtZS5lZGl0b3IoKS5hcHBseVN0eWxlVG9TZWxlY3Rp
b24oV1RGTW92ZShzdHlsZSksIGFjdGlvbik7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGNh
c2UgQ29tbWFuZEZyb21ET006CiAgICAgY2FzZSBDb21tYW5kRnJvbURPTVdpdGhVc2VySW50ZXJm
YWNlOgotICAgICAgICBmcmFtZS5lZGl0b3IoKS5hcHBseVN0eWxlKFdURjo6bW92ZShzdHlsZSks
IEVkaXRBY3Rpb25VbnNwZWNpZmllZCk7CisgICAgICAgIGZyYW1lLmVkaXRvcigpLmFwcGx5U3R5
bGUoV1RGTW92ZShzdHlsZSksIEVkaXRBY3Rpb25VbnNwZWNpZmllZCk7CiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTE2OSw3ICsxNjks
NyBAQCBzdGF0aWMgYm9vbCBleGVjdXRlSW5zZXJ0Tm9kZShGcmFtZSYgZnJhbWUsIFJlZjxOb2Rl
PiYmIGNvbnRlbnQpCiB7CiAgICAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0g
RG9jdW1lbnRGcmFnbWVudDo6Y3JlYXRlKCpmcmFtZS5kb2N1bWVudCgpKTsKICAgICBFeGNlcHRp
b25Db2RlIGVjID0gMDsKLSAgICBmcmFnbWVudC0+YXBwZW5kQ2hpbGQoV1RGOjptb3ZlKGNvbnRl
bnQpLCBlYyk7CisgICAgZnJhZ21lbnQtPmFwcGVuZENoaWxkKFdURk1vdmUoY29udGVudCksIGVj
KTsKICAgICBpZiAoZWMpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1cm4gZXhlY3V0
ZUluc2VydEZyYWdtZW50KGZyYW1lLCBmcmFnbWVudC5yZWxlYXNlKCkpOwpAQCAtNDY3LDcgKzQ2
Nyw3IEBAIHN0YXRpYyBib29sIGV4ZWN1dGVJbnNlcnRIb3Jpem9udGFsUnVsZShGcmFtZSYgZnJh
bWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjCiAgICAgUmVmPEhUTUxIUkVsZW1lbnQ+IHJ1
bGUgPSBIVE1MSFJFbGVtZW50OjpjcmVhdGUoKmZyYW1lLmRvY3VtZW50KCkpOwogICAgIGlmICgh
dmFsdWUuaXNFbXB0eSgpKQogICAgICAgICBydWxlLT5zZXRJZEF0dHJpYnV0ZSh2YWx1ZSk7Ci0g
ICAgcmV0dXJuIGV4ZWN1dGVJbnNlcnROb2RlKGZyYW1lLCBXVEY6Om1vdmUocnVsZSkpOworICAg
IHJldHVybiBleGVjdXRlSW5zZXJ0Tm9kZShmcmFtZSwgV1RGTW92ZShydWxlKSk7CiB9CiAKIHN0
YXRpYyBib29sIGV4ZWN1dGVJbnNlcnRIVE1MKEZyYW1lJiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JD
b21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmIHZhbHVlKQpAQCAtNDgwLDcgKzQ4MCw3IEBAIHN0
YXRpYyBib29sIGV4ZWN1dGVJbnNlcnRJbWFnZShGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9y
Q29tbWFuZFNvdXJjZSwgY29uc3QKICAgICAvLyBGSVhNRTogSWYgdXNlckludGVyZmFjZSBpcyB0
cnVlLCB3ZSBzaG91bGQgZGlzcGxheSBhIGRpYWxvZyBib3ggYW5kIGxldCB0aGUgdXNlciBjaG9v
c2UgYSBsb2NhbCBpbWFnZS4KICAgICBSZWY8SFRNTEltYWdlRWxlbWVudD4gaW1hZ2UgPSBIVE1M
SW1hZ2VFbGVtZW50OjpjcmVhdGUoKmZyYW1lLmRvY3VtZW50KCkpOwogICAgIGltYWdlLT5zZXRT
cmModmFsdWUpOwotICAgIHJldHVybiBleGVjdXRlSW5zZXJ0Tm9kZShmcmFtZSwgV1RGOjptb3Zl
KGltYWdlKSk7CisgICAgcmV0dXJuIGV4ZWN1dGVJbnNlcnROb2RlKGZyYW1lLCBXVEZNb3ZlKGlt
YWdlKSk7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVJbnNlcnRMaW5lQnJlYWsoRnJhbWUmIGZy
YW1lLCBFdmVudCogZXZlbnQsIEVkaXRvckNvbW1hbmRTb3VyY2Ugc291cmNlLCBjb25zdCBTdHJp
bmcmKQpAQCAtMTAzNyw3ICsxMDM3LDcgQEAgc3RhdGljIGJvb2wgZXhlY3V0ZVN0cmlrZXRocm91
Z2goRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2Ugc291cmMKICAgICBS
ZWY8RWRpdGluZ1N0eWxlPiBzdHlsZSA9IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKCk7CiAgICAgc3R5
bGUtPnNldFN0cmlrZVRocm91Z2hDaGFuZ2UodGV4dERlY29yYXRpb25DaGFuZ2VGb3JUb2dnbGlu
ZyhmcmFtZS5lZGl0b3IoKSwgQ1NTUHJvcGVydHlXZWJraXRUZXh0RGVjb3JhdGlvbnNJbkVmZmVj
dCwgImxpbmUtdGhyb3VnaCIpKTsKICAgICAvLyBGSVhNRTogTmVlZHMgYSBuZXcgRWRpdEFjdGlv
biEKLSAgICByZXR1cm4gYXBwbHlDb21tYW5kVG9GcmFtZShmcmFtZSwgc291cmNlLCBFZGl0QWN0
aW9uVW5kZXJsaW5lLCBXVEY6Om1vdmUoc3R5bGUpKTsKKyAgICByZXR1cm4gYXBwbHlDb21tYW5k
VG9GcmFtZShmcmFtZSwgc291cmNlLCBFZGl0QWN0aW9uVW5kZXJsaW5lLCBXVEZNb3ZlKHN0eWxl
KSk7CiB9CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVTdHlsZVdpdGhDU1MoRnJhbWUmIGZyYW1lLCBF
dmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYgdmFsdWUpCkBAIC0xMTA0
LDcgKzExMDQsNyBAQCBzdGF0aWMgYm9vbCBleGVjdXRlVW5kZXJsaW5lKEZyYW1lJiBmcmFtZSwg
RXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlIHNvdXJjZSwgYwogICAgIFJlZjxFZGl0aW5nU3R5
bGU+IHN0eWxlID0gRWRpdGluZ1N0eWxlOjpjcmVhdGUoKTsKICAgICBUZXh0RGVjb3JhdGlvbkNo
YW5nZSBjaGFuZ2UgPSB0ZXh0RGVjb3JhdGlvbkNoYW5nZUZvclRvZ2dsaW5nKGZyYW1lLmVkaXRv
cigpLCBDU1NQcm9wZXJ0eVdlYmtpdFRleHREZWNvcmF0aW9uc0luRWZmZWN0LCAidW5kZXJsaW5l
Iik7CiAgICAgc3R5bGUtPnNldFVuZGVybGluZUNoYW5nZShjaGFuZ2UpOwotICAgIHJldHVybiBh
cHBseUNvbW1hbmRUb0ZyYW1lKGZyYW1lLCBzb3VyY2UsIEVkaXRBY3Rpb25VbmRlcmxpbmUsIFdU
Rjo6bW92ZShzdHlsZSkpOworICAgIHJldHVybiBhcHBseUNvbW1hbmRUb0ZyYW1lKGZyYW1lLCBz
b3VyY2UsIEVkaXRBY3Rpb25VbmRlcmxpbmUsIFdURk1vdmUoc3R5bGUpKTsKIH0KIAogc3RhdGlj
IGJvb2wgZXhlY3V0ZVVuZG8oRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3Vy
Y2UsIGNvbnN0IFN0cmluZyYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0lu
c2VydEludG9UZXh0Tm9kZUNvbW1hbmQuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0
SW50b1RleHROb2RlQ29tbWFuZC5oCmluZGV4IDA3NjA5MDk2MGM4YTA1ODY1YmUxZGIxMDk5ZTkx
YTFiYTg2OTNmODkuLjU1NWU0OGEzN2RhYzU1ZGIwMjMzYTAwNjYxMjFkYTZmM2ZmMDU2YzkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0SW50b1RleHROb2RlQ29tbWFu
ZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0SW50b1RleHROb2RlQ29tbWFu
ZC5oCkBAIC0zNiw3ICszNiw3IEBAIGNsYXNzIEluc2VydEludG9UZXh0Tm9kZUNvbW1hbmQgOiBw
dWJsaWMgU2ltcGxlRWRpdENvbW1hbmQgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8SW5zZXJ0
SW50b1RleHROb2RlQ29tbWFuZD4gY3JlYXRlKFJlZlB0cjxUZXh0PiYmIG5vZGUsIHVuc2lnbmVk
IG9mZnNldCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBFZGl0QWN0aW9uIGVkaXRpbmdBY3Rpb24gPSBF
ZGl0QWN0aW9uSW5zZXJ0KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW5z
ZXJ0SW50b1RleHROb2RlQ29tbWFuZChXVEY6Om1vdmUobm9kZSksIG9mZnNldCwgdGV4dCwgZWRp
dGluZ0FjdGlvbikpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbnNlcnRJbnRvVGV4
dE5vZGVDb21tYW5kKFdURk1vdmUobm9kZSksIG9mZnNldCwgdGV4dCwgZWRpdGluZ0FjdGlvbikp
OwogICAgIH0KIAogICAgIGNvbnN0IFN0cmluZyYgaW5zZXJ0ZWRUZXh0KCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydE5vZGVCZWZvcmVDb21tYW5kLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydE5vZGVCZWZvcmVDb21tYW5kLmgKaW5kZXggNWNlYTIx
Y2Q5ZmIxZjc0MmE5MjhkOGM3YzE2YTU1NjIyMjc1YTA2Ni4uZTY2NTc0MDY5YmExNmFlZjM5MjAy
ZTczMmZmYWEwNTliMDM3NmE4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9J
bnNlcnROb2RlQmVmb3JlQ29tbWFuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5z
ZXJ0Tm9kZUJlZm9yZUNvbW1hbmQuaApAQCAtMzUsNyArMzUsNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIFJlZjxJbnNlcnROb2RlQmVmb3JlQ29tbWFuZD4gY3JlYXRlKFJlZlB0cjxOb2RlPiYmIGNo
aWxkVG9JbnNlcnQsIFJlZlB0cjxOb2RlPiYmIGNoaWxkVG9JbnNlcnRCZWZvcmUsCiAgICAgICAg
IFNob3VsZEFzc3VtZUNvbnRlbnRJc0Fsd2F5c0VkaXRhYmxlIHNob3VsZEFzc3VtZUNvbnRlbnRJ
c0Fsd2F5c0VkaXRhYmxlLCBFZGl0QWN0aW9uIGVkaXRpbmdBY3Rpb24gPSBFZGl0QWN0aW9uSW5z
ZXJ0KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW5zZXJ0Tm9kZUJlZm9y
ZUNvbW1hbmQoV1RGOjptb3ZlKGNoaWxkVG9JbnNlcnQpLCBXVEY6Om1vdmUoY2hpbGRUb0luc2Vy
dEJlZm9yZSksIHNob3VsZEFzc3VtZUNvbnRlbnRJc0Fsd2F5c0VkaXRhYmxlLCBlZGl0aW5nQWN0
aW9uKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEluc2VydE5vZGVCZWZvcmVDb21t
YW5kKFdURk1vdmUoY2hpbGRUb0luc2VydCksIFdURk1vdmUoY2hpbGRUb0luc2VydEJlZm9yZSks
IHNob3VsZEFzc3VtZUNvbnRlbnRJc0Fsd2F5c0VkaXRhYmxlLCBlZGl0aW5nQWN0aW9uKSk7CiAg
ICAgfQogCiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01l
cmdlSWRlbnRpY2FsRWxlbWVudHNDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
TWVyZ2VJZGVudGljYWxFbGVtZW50c0NvbW1hbmQuY3BwCmluZGV4IDRiMzAwM2YyOGRjNThkZWE4
ODk5ODQwYzVkNTQ3YTI5NTBhZWJmZGYuLjZkNGQ3NDVjZWUwMDBkYTRmMGIwOWM5YzI5ZGMyYmEy
YTdjZDk5MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTWVyZ2VJZGVudGlj
YWxFbGVtZW50c0NvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTWVyZ2VJ
ZGVudGljYWxFbGVtZW50c0NvbW1hbmQuY3BwCkBAIC01Miw3ICs1Miw3IEBAIHZvaWQgTWVyZ2VJ
ZGVudGljYWxFbGVtZW50c0NvbW1hbmQ6OmRvQXBwbHkoKQogICAgICAgICBjaGlsZHJlbi5hcHBl
bmQoKmNoaWxkKTsKIAogICAgIGZvciAoYXV0byYgY2hpbGQgOiBjaGlsZHJlbikKLSAgICAgICAg
bV9lbGVtZW50Mi0+aW5zZXJ0QmVmb3JlKFdURjo6bW92ZShjaGlsZCksIG1fYXRDaGlsZC5nZXQo
KSwgSUdOT1JFX0VYQ0VQVElPTik7CisgICAgICAgIG1fZWxlbWVudDItPmluc2VydEJlZm9yZShX
VEZNb3ZlKGNoaWxkKSwgbV9hdENoaWxkLmdldCgpLCBJR05PUkVfRVhDRVBUSU9OKTsKIAogICAg
IG1fZWxlbWVudDEtPnJlbW92ZShJR05PUkVfRVhDRVBUSU9OKTsKIH0KQEAgLTc5LDcgKzc5LDcg
QEAgdm9pZCBNZXJnZUlkZW50aWNhbEVsZW1lbnRzQ29tbWFuZDo6ZG9VbmFwcGx5KCkKICAgICAg
ICAgY2hpbGRyZW4uYXBwZW5kKCpjaGlsZCk7CiAKICAgICBmb3IgKGF1dG8mIGNoaWxkIDogY2hp
bGRyZW4pCi0gICAgICAgIG1fZWxlbWVudDEtPmFwcGVuZENoaWxkKFdURjo6bW92ZShjaGlsZCks
IGVjKTsKKyAgICAgICAgbV9lbGVtZW50MS0+YXBwZW5kQ2hpbGQoV1RGTW92ZShjaGlsZCksIGVj
KTsKIH0KIAogI2lmbmRlZiBOREVCVUcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvTW92ZVNlbGVjdGlvbkNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Nb3Zl
U2VsZWN0aW9uQ29tbWFuZC5jcHAKaW5kZXggZDZlY2Y2ZWU2M2Q4Njg0YjFhMTkzMTU4ZWEwNzUy
M2ViNjY1YmU2ZS4uMWE0MTliYTI4ZDUyYzVjMzY1MTcwMDA3YWQzM2ViY2Y0YTQxM2MyNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Nb3ZlU2VsZWN0aW9uQ29tbWFuZC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Nb3ZlU2VsZWN0aW9uQ29tbWFuZC5jcHAKQEAg
LTc5LDcgKzc5LDcgQEAgdm9pZCBNb3ZlU2VsZWN0aW9uQ29tbWFuZDo6ZG9BcHBseSgpCiAgICAg
UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OkNvbW1hbmRPcHRpb25zIG9wdGlvbnMgPSBSZXBsYWNl
U2VsZWN0aW9uQ29tbWFuZDo6U2VsZWN0UmVwbGFjZW1lbnQgfCBSZXBsYWNlU2VsZWN0aW9uQ29t
bWFuZDo6UHJldmVudE5lc3Rpbmc7CiAgICAgaWYgKG1fc21hcnRJbnNlcnQpCiAgICAgICAgIG9w
dGlvbnMgfD0gUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OlNtYXJ0UmVwbGFjZTsKLSAgICBhcHBs
eUNvbW1hbmRUb0NvbXBvc2l0ZShSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6Y3JlYXRlKGRvY3Vt
ZW50KCksIFdURjo6bW92ZShtX2ZyYWdtZW50KSwgb3B0aW9ucykpOworICAgIGFwcGx5Q29tbWFu
ZFRvQ29tcG9zaXRlKFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpjcmVhdGUoZG9jdW1lbnQoKSwg
V1RGTW92ZShtX2ZyYWdtZW50KSwgb3B0aW9ucykpOwogfQogCiBFZGl0QWN0aW9uIE1vdmVTZWxl
Y3Rpb25Db21tYW5kOjplZGl0aW5nQWN0aW9uKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvUmVtb3ZlTm9kZUNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9SZW1vdmVOb2RlQ29tbWFuZC5jcHAKaW5kZXggOWNhNWY4YmZlOTMxNjUwYjQ1MTdhODE0
MmUyMjhkNmFjODY1ZDBkMC4uZjk4ZDAzYTQxMGIxMjZjZmFiOTlmYWM5N2FmODY4NzcyMjFlZTMy
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW1vdmVOb2RlQ29tbWFuZC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW1vdmVOb2RlQ29tbWFuZC5jcHAKQEAg
LTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBSZW1vdmVOb2RlQ29tbWFuZDo6
UmVtb3ZlTm9kZUNvbW1hbmQoUmVmPE5vZGU+JiYgbm9kZSwgU2hvdWxkQXNzdW1lQ29udGVudElz
QWx3YXlzRWRpdGFibGUgc2hvdWxkQXNzdW1lQ29udGVudElzQWx3YXlzRWRpdGFibGUpCiAgICAg
OiBTaW1wbGVFZGl0Q29tbWFuZChub2RlLT5kb2N1bWVudCgpKQotICAgICwgbV9ub2RlKFdURjo6
bW92ZShub2RlKSkKKyAgICAsIG1fbm9kZShXVEZNb3ZlKG5vZGUpKQogICAgICwgbV9zaG91bGRB
c3N1bWVDb250ZW50SXNBbHdheXNFZGl0YWJsZShzaG91bGRBc3N1bWVDb250ZW50SXNBbHdheXNF
ZGl0YWJsZSkKIHsKICAgICBBU1NFUlQobV9ub2RlLT5wYXJlbnROb2RlKCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW1vdmVOb2RlQ29tbWFuZC5oIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9SZW1vdmVOb2RlQ29tbWFuZC5oCmluZGV4IDMzYTFmOGMwNWMxM2JlOGM4
YzUyYjQzNTAyYjM3NWFlYjYxOTllODQuLjM3N2YyMTI2MDBiODE3MTcwNWM5ZTQxMjNmMWY2YmNh
Yjg5MzdhY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVtb3ZlTm9kZUNv
bW1hbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbW92ZU5vZGVDb21tYW5kLmgK
QEAgLTM0LDcgKzM0LDcgQEAgY2xhc3MgUmVtb3ZlTm9kZUNvbW1hbmQgOiBwdWJsaWMgU2ltcGxl
RWRpdENvbW1hbmQgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8UmVtb3ZlTm9kZUNvbW1hbmQ+
IGNyZWF0ZShSZWY8Tm9kZT4mJiBub2RlLCBTaG91bGRBc3N1bWVDb250ZW50SXNBbHdheXNFZGl0
YWJsZSBzaG91bGRBc3N1bWVDb250ZW50SXNBbHdheXNFZGl0YWJsZSkKICAgICB7Ci0gICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW92ZU5vZGVDb21tYW5kKFdURjo6bW92ZShub2RlKSwg
c2hvdWxkQXNzdW1lQ29udGVudElzQWx3YXlzRWRpdGFibGUpKTsKKyAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgUmVtb3ZlTm9kZUNvbW1hbmQoV1RGTW92ZShub2RlKSwgc2hvdWxkQXNzdW1l
Q29udGVudElzQWx3YXlzRWRpdGFibGUpKTsKICAgICB9CiAKIHByaXZhdGU6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VEZWxldGVGcm9tVGV4dE5vZGVDb21tYW5k
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZURlbGV0ZUZyb21UZXh0Tm9kZUNv
bW1hbmQuY3BwCmluZGV4IGE5OGE5OWRhNzI4N2YyZjc0Zjg5NjdmMDQyODVlY2E0ZDc1Njk3OWUu
LjE0NjRjNzM2MjAwMTY2NGU4Y2FjNmY0ZTY4NmNiYjg1YTllYzU2NGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZURlbGV0ZUZyb21UZXh0Tm9kZUNvbW1hbmQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZURlbGV0ZUZyb21UZXh0Tm9kZUNv
bW1hbmQuY3BwCkBAIC0zMSw3ICszMSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCiBS
ZXBsYWNlRGVsZXRlRnJvbVRleHROb2RlQ29tbWFuZDo6UmVwbGFjZURlbGV0ZUZyb21UZXh0Tm9k
ZUNvbW1hbmQoUmVmUHRyPFRleHQ+JiYgdGV4dCwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBj
b3VudCkKLSAgICA6IERlbGV0ZUZyb21UZXh0Tm9kZUNvbW1hbmQoV1RGOjptb3ZlKHRleHQpLCBv
ZmZzZXQsIGNvdW50LCBFZGl0QWN0aW9uRGVsZXRlKQorICAgIDogRGVsZXRlRnJvbVRleHROb2Rl
Q29tbWFuZChXVEZNb3ZlKHRleHQpLCBvZmZzZXQsIGNvdW50LCBFZGl0QWN0aW9uRGVsZXRlKQog
ewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VEZWxldGVG
cm9tVGV4dE5vZGVDb21tYW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VEZWxl
dGVGcm9tVGV4dE5vZGVDb21tYW5kLmgKaW5kZXggMmM3MjEyOTEwYzE1M2EzZGVjMjY5NGMxODZl
MjU4YzUzNTQ0NThmNC4uMmIwOGY1MGQyYzAzNWJmMzQ5MWE5MWM3YzExYzNhZjUyZjQ0MDg5YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlRGVsZXRlRnJvbVRleHRO
b2RlQ29tbWFuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZURlbGV0ZUZy
b21UZXh0Tm9kZUNvbW1hbmQuaApAQCAtMzQsNyArMzQsNyBAQCBjbGFzcyBSZXBsYWNlRGVsZXRl
RnJvbVRleHROb2RlQ29tbWFuZCBmaW5hbCA6IHB1YmxpYyBEZWxldGVGcm9tVGV4dE5vZGVDb21t
YW5kCiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxSZXBsYWNlRGVsZXRlRnJvbVRleHROb2RlQ29t
bWFuZD4gY3JlYXRlKFJlZlB0cjxUZXh0PiYmIHRleHQsIHVuc2lnbmVkIG9mZnNldCwgdW5zaWdu
ZWQgY291bnQpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZXBsYWNlRGVs
ZXRlRnJvbVRleHROb2RlQ29tbWFuZChXVEY6Om1vdmUodGV4dCksIG9mZnNldCwgY291bnQpKTsK
KyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVwbGFjZURlbGV0ZUZyb21UZXh0Tm9kZUNv
bW1hbmQoV1RGTW92ZSh0ZXh0KSwgb2Zmc2V0LCBjb3VudCkpOwogICAgIH0KIAogcHJpdmF0ZToK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZUluc2VydEludG9UZXh0
Tm9kZUNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlSW5zZXJ0SW50
b1RleHROb2RlQ29tbWFuZC5jcHAKaW5kZXggMDVhMzZkYzgzOWZlMzVjZDU1ZGM4YTFkNmUzOWRh
Y2NlNGYxZDg3My4uYWYwNTI1NWQ5OGQzOGZlNzM1YTA0MTBiOTFlYzIzYzJlY2IzZWIyNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlSW5zZXJ0SW50b1RleHROb2Rl
Q29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlSW5zZXJ0SW50
b1RleHROb2RlQ29tbWFuZC5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogUmVwbGFjZUluc2VydEludG9UZXh0Tm9kZUNvbW1hbmQ6OlJlcGxhY2VJbnNlcnRJbnRv
VGV4dE5vZGVDb21tYW5kKFJlZlB0cjxUZXh0PiYmIG5vZGUsIHVuc2lnbmVkIG9mZnNldCwgY29u
c3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBTdHJpbmcmIGRlbGV0ZWRUZXh0LCBFZGl0QWN0aW9uIGVk
aXRpbmdBY3Rpb24pCi0gICAgOiBJbnNlcnRJbnRvVGV4dE5vZGVDb21tYW5kKFdURjo6bW92ZShu
b2RlKSwgb2Zmc2V0LCB0ZXh0LCBlZGl0aW5nQWN0aW9uKQorICAgIDogSW5zZXJ0SW50b1RleHRO
b2RlQ29tbWFuZChXVEZNb3ZlKG5vZGUpLCBvZmZzZXQsIHRleHQsIGVkaXRpbmdBY3Rpb24pCiAg
ICAgLCBtX2RlbGV0ZWRUZXh0KGRlbGV0ZWRUZXh0KQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlSW5zZXJ0SW50b1RleHROb2RlQ29tbWFuZC5oIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlSW5zZXJ0SW50b1RleHROb2RlQ29tbWFuZC5oCmlu
ZGV4IGUyNjNiMmI2MTkwODBlZGIxMDZjOTkwOTc5Y2ViZGI0Yzc0ZDM0NDkuLjZjNDgzYjJmYjFi
OGVhNDUxMjI2NjA0N2U2NTk3YWNmM2EwY2M2MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvUmVwbGFjZUluc2VydEludG9UZXh0Tm9kZUNvbW1hbmQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VJbnNlcnRJbnRvVGV4dE5vZGVDb21tYW5kLmgKQEAgLTM0
LDcgKzM0LDcgQEAgY2xhc3MgUmVwbGFjZUluc2VydEludG9UZXh0Tm9kZUNvbW1hbmQgZmluYWwg
OiBwdWJsaWMgSW5zZXJ0SW50b1RleHROb2RlQ29tbWFuZAogcHVibGljOgogICAgIHN0YXRpYyBS
ZWY8UmVwbGFjZUluc2VydEludG9UZXh0Tm9kZUNvbW1hbmQ+IGNyZWF0ZShSZWZQdHI8VGV4dD4m
JiBub2RlLCB1bnNpZ25lZCBvZmZzZXQsIGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgU3RyaW5n
JiBkZWxldGVkVGV4dCwgRWRpdEFjdGlvbiBlZGl0aW5nQWN0aW9uKQogICAgIHsKLSAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVwbGFjZUluc2VydEludG9UZXh0Tm9kZUNvbW1hbmQoV1RG
Ojptb3ZlKG5vZGUpLCBvZmZzZXQsIHRleHQsIGRlbGV0ZWRUZXh0LCBlZGl0aW5nQWN0aW9uKSk7
CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlcGxhY2VJbnNlcnRJbnRvVGV4dE5vZGVD
b21tYW5kKFdURk1vdmUobm9kZSksIG9mZnNldCwgdGV4dCwgZGVsZXRlZFRleHQsIGVkaXRpbmdB
Y3Rpb24pKTsKICAgICB9CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1JlcGxhY2VOb2RlV2l0aFNwYW5Db21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvUmVwbGFjZU5vZGVXaXRoU3BhbkNvbW1hbmQuY3BwCmluZGV4IDEwYmVmM2EwOWExY2M0
MjFjYjc3ZTlhYjc4ZTAwY2Q2ZTIyMjMwYTguLmE0YzY4NThlMzU3NjI1ODlmMDIyMWQyZWU5YmI5
NGM3NzkwOWY1Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZU5v
ZGVXaXRoU3BhbkNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFj
ZU5vZGVXaXRoU3BhbkNvbW1hbmQuY3BwCkBAIC01OCw3ICs1OCw3IEBAIHN0YXRpYyB2b2lkIHN3
YXBJbk5vZGVQcmVzZXJ2aW5nQXR0cmlidXRlc0FuZENoaWxkcmVuKEhUTUxFbGVtZW50JiBuZXdO
b2RlLCBIVE1MCiAgICAgTm9kZVZlY3RvciBjaGlsZHJlbjsKICAgICBnZXRDaGlsZE5vZGVzKG5v
ZGVUb1JlcGxhY2UsIGNoaWxkcmVuKTsKICAgICBmb3IgKGF1dG8mIGNoaWxkIDogY2hpbGRyZW4p
Ci0gICAgICAgIG5ld05vZGUuYXBwZW5kQ2hpbGQoV1RGOjptb3ZlKGNoaWxkKSwgQVNTRVJUX05P
X0VYQ0VQVElPTik7CisgICAgICAgIG5ld05vZGUuYXBwZW5kQ2hpbGQoV1RGTW92ZShjaGlsZCks
IEFTU0VSVF9OT19FWENFUFRJT04pOwogCiAgICAgcGFyZW50Tm9kZS0+aW5zZXJ0QmVmb3JlKG5l
d05vZGUsICZub2RlVG9SZXBsYWNlLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKICAgICBwYXJlbnRO
b2RlLT5yZW1vdmVDaGlsZChub2RlVG9SZXBsYWNlLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQu
aCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuaAppbmRl
eCA3MzYyMGZkMjNjZGRhYTZiZjljZDhhMTRhNTExZjQ2YWEyNTVjODYzLi43YWE1ODA5MDA1ZmU2
NDc5YjUwMzg3OTkyODZiOTgyZGViMmQ4ODk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5oCkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoK
IAogICAgIHN0YXRpYyBSZWY8UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ+IGNyZWF0ZShEb2N1bWVu
dCYgZG9jdW1lbnQsIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiYmIGZyYWdtZW50LCBDb21tYW5k
T3B0aW9ucyBvcHRpb25zLCBFZGl0QWN0aW9uIGVkaXRpbmdBY3Rpb24gPSBFZGl0QWN0aW9uSW5z
ZXJ0KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVwbGFjZVNlbGVjdGlv
bkNvbW1hbmQoZG9jdW1lbnQsIFdURjo6bW92ZShmcmFnbWVudCksIG9wdGlvbnMsIGVkaXRpbmdB
Y3Rpb24pKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVwbGFjZVNlbGVjdGlvbkNv
bW1hbmQoZG9jdW1lbnQsIFdURk1vdmUoZnJhZ21lbnQpLCBvcHRpb25zLCBlZGl0aW5nQWN0aW9u
KSk7CiAgICAgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9TcGxpdEVsZW1lbnRDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BsaXRF
bGVtZW50Q29tbWFuZC5jcHAKaW5kZXggMmZlNGRiMjI4MzI1YTI3MjU0NTc2MjIwNzZhZjliZGQ5
MTE3MWFlNS4uYWU0ODgwOTlmNDhlMzM1NzEyM2UyYjlhYTcyM2RhYTE1YzFmN2MxZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGxpdEVsZW1lbnRDb21tYW5kLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwbGl0RWxlbWVudENvbW1hbmQuY3BwCkBAIC02NCw3
ICs2NCw3IEBAIHZvaWQgU3BsaXRFbGVtZW50Q29tbWFuZDo6ZXhlY3V0ZUFwcGx5KCkKICAgICBt
X2VsZW1lbnQyLT5yZW1vdmVBdHRyaWJ1dGUoSFRNTE5hbWVzOjppZEF0dHIpOwogCiAgICAgZm9y
IChhdXRvJiBjaGlsZCA6IGNoaWxkcmVuKQotICAgICAgICBtX2VsZW1lbnQxLT5hcHBlbmRDaGls
ZChXVEY6Om1vdmUoY2hpbGQpLCBlYyk7CisgICAgICAgIG1fZWxlbWVudDEtPmFwcGVuZENoaWxk
KFdURk1vdmUoY2hpbGQpLCBlYyk7CiB9CiAgICAgCiB2b2lkIFNwbGl0RWxlbWVudENvbW1hbmQ6
OmRvQXBwbHkoKQpAQCAtODYsNyArODYsNyBAQCB2b2lkIFNwbGl0RWxlbWVudENvbW1hbmQ6OmRv
VW5hcHBseSgpCiAgICAgUmVmUHRyPE5vZGU+IHJlZkNoaWxkID0gbV9lbGVtZW50Mi0+Zmlyc3RD
aGlsZCgpOwogCiAgICAgZm9yIChhdXRvJiBjaGlsZCA6IGNoaWxkcmVuKQotICAgICAgICBtX2Vs
ZW1lbnQyLT5pbnNlcnRCZWZvcmUoV1RGOjptb3ZlKGNoaWxkKSwgcmVmQ2hpbGQuZ2V0KCksIElH
Tk9SRV9FWENFUFRJT04pOworICAgICAgICBtX2VsZW1lbnQyLT5pbnNlcnRCZWZvcmUoV1RGTW92
ZShjaGlsZCksIHJlZkNoaWxkLmdldCgpLCBJR05PUkVfRVhDRVBUSU9OKTsKIAogICAgIC8vIFJl
Y292ZXIgdGhlIGlkIGF0dHJpYnV0ZSBvZiB0aGUgb3JpZ2luYWwgZWxlbWVudC4KICAgICBjb25z
dCBBdG9taWNTdHJpbmcmIGlkID0gbV9lbGVtZW50MS0+Z2V0SWRBdHRyaWJ1dGUoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmNwcAppbmRleCAyYzg1NWFk
NGNiMzgyMDJjY2M1MGQzZGNmZmI2ODQzNzQzODE3NjU2Li45MDBlY2U1NGZmMmI5N2E2OTNiM2Rl
ODYwMTVhNGRlNDU3NDA1NTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Rl
eHRDaGVja2luZ0hlbHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hl
Y2tpbmdIZWxwZXIuY3BwCkBAIC02Myw3ICs2Myw3IEBAIHN0YXRpYyB2b2lkIGZpbmRHcmFtbWF0
aWNhbEVycm9ycyhUZXh0Q2hlY2tlckNsaWVudCYgY2xpZW50LCBTdHJpbmdWaWV3IHRleHQsIFZl
CiAgICAgICAgIGJhZEdyYW1tYXIudHlwZSA9IFRleHRDaGVja2luZ1R5cGVHcmFtbWFyOwogICAg
ICAgICBiYWRHcmFtbWFyLmxvY2F0aW9uID0gY2hlY2tMb2NhdGlvbiArIGJhZEdyYW1tYXJMb2Nh
dGlvbjsKICAgICAgICAgYmFkR3JhbW1hci5sZW5ndGggPSBiYWRHcmFtbWFyTGVuZ3RoOwotICAg
ICAgICBiYWRHcmFtbWFyLmRldGFpbHMgPSBXVEY6Om1vdmUoYmFkR3JhbW1hckRldGFpbHMpOwor
ICAgICAgICBiYWRHcmFtbWFyLmRldGFpbHMgPSBXVEZNb3ZlKGJhZEdyYW1tYXJEZXRhaWxzKTsK
ICAgICAgICAgcmVzdWx0cy5hcHBlbmQoYmFkR3JhbW1hcik7CiAKICAgICAgICAgY2hlY2tMb2Nh
dGlvbiArPSBiYWRHcmFtbWFyTG9jYXRpb24gKyBiYWRHcmFtbWFyTGVuZ3RoOwpAQCAtNjU3LDEx
ICs2NTcsMTEgQEAgdm9pZCBjaGVja1RleHRPZlBhcmFncmFwaChUZXh0Q2hlY2tlckNsaWVudCYg
Y2xpZW50LCBTdHJpbmdWaWV3IHRleHQsIFRleHRDaGVja2kKICAgICAgICAgZmluZEdyYW1tYXRp
Y2FsRXJyb3JzKGNsaWVudCwgdGV4dC5zdWJzdHJpbmcoMCwgZ3JhbW1hckNoZWNrTGVuZ3RoKSwg
Z3JhbW1hdGljYWxFcnJvcnMpOwogICAgIH0KIAotICAgIHJlc3VsdHMgPSBXVEY6Om1vdmUoZ3Jh
bW1hdGljYWxFcnJvcnMpOworICAgIHJlc3VsdHMgPSBXVEZNb3ZlKGdyYW1tYXRpY2FsRXJyb3Jz
KTsKICNlbmRpZgogCiAgICAgaWYgKHJlc3VsdHMuaXNFbXB0eSgpKQotICAgICAgICByZXN1bHRz
ID0gV1RGOjptb3ZlKG1pc3BlbGxpbmdzKTsKKyAgICAgICAgcmVzdWx0cyA9IFdURk1vdmUobWlz
cGVsbGluZ3MpOwogICAgIGVsc2UKICAgICAgICAgcmVzdWx0cy5hcHBlbmRWZWN0b3IobWlzcGVs
bGluZ3MpOwogI2VuZGlmIC8vIFVTRShVTklGSUVEX1RFWFRfQ0hFQ0tJTkcpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKaW5kZXggNjQyYWQwZTlhZGQxZGY1ZDg0ZTA3MTk2
MjYzNmQxNDI4YWRiY2M5Ny4uMWNjOWE5ZGVhZjA3NzM4NzQyYTBhNjAxYjlkYWIyZDMyY2JkZTM1
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcApAQCAtMjgxLDcgKzI4
MSw3IEBAIGlubGluZSB2b2lkIFRleHRJdGVyYXRvckNvcHlhYmxlVGV4dDo6cmVzZXQoKQogaW5s
aW5lIHZvaWQgVGV4dEl0ZXJhdG9yQ29weWFibGVUZXh0OjpzZXQoU3RyaW5nJiYgc3RyaW5nKQog
ewogICAgIG1fc2luZ2xlQ2hhcmFjdGVyID0gMDsKLSAgICBtX3N0cmluZyA9IFdURjo6bW92ZShz
dHJpbmcpOworICAgIG1fc3RyaW5nID0gV1RGTW92ZShzdHJpbmcpOwogICAgIG1fb2Zmc2V0ID0g
MDsKICAgICBtX2xlbmd0aCA9IG1fc3RyaW5nLmxlbmd0aCgpOwogfQpAQCAtMjkzLDcgKzI5Myw3
IEBAIGlubGluZSB2b2lkIFRleHRJdGVyYXRvckNvcHlhYmxlVGV4dDo6c2V0KFN0cmluZyYmIHN0
cmluZywgdW5zaWduZWQgb2Zmc2V0LCB1bnNpCiAgICAgQVNTRVJUKGxlbmd0aCA8PSBzdHJpbmcu
bGVuZ3RoKCkgLSBvZmZzZXQpOwogCiAgICAgbV9zaW5nbGVDaGFyYWN0ZXIgPSAwOwotICAgIG1f
c3RyaW5nID0gV1RGOjptb3ZlKHN0cmluZyk7CisgICAgbV9zdHJpbmcgPSBXVEZNb3ZlKHN0cmlu
Zyk7CiAgICAgbV9vZmZzZXQgPSBvZmZzZXQ7CiAgICAgbV9sZW5ndGggPSBsZW5ndGg7CiB9CkBA
IC04MjcsNyArODI3LDcgQEAgYm9vbCBUZXh0SXRlcmF0b3I6OmhhbmRsZVJlcGxhY2VkRWxlbWVu
dCgpCiAgICAgICAgIFN0cmluZyBhbHRUZXh0ID0gZG93bmNhc3Q8UmVuZGVySW1hZ2U+KHJlbmRl
cmVyKS5hbHRUZXh0KCk7CiAgICAgICAgIGlmICh1bnNpZ25lZCBsZW5ndGggPSBhbHRUZXh0Lmxl
bmd0aCgpKSB7CiAgICAgICAgICAgICBtX2xhc3RDaGFyYWN0ZXIgPSBhbHRUZXh0W2xlbmd0aCAt
IDFdOwotICAgICAgICAgICAgbV9jb3B5YWJsZVRleHQuc2V0KFdURjo6bW92ZShhbHRUZXh0KSk7
CisgICAgICAgICAgICBtX2NvcHlhYmxlVGV4dC5zZXQoV1RGTW92ZShhbHRUZXh0KSk7CiAgICAg
ICAgICAgICBtX3RleHQgPSBtX2NvcHlhYmxlVGV4dC50ZXh0KCk7CiAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICAgICAgfQpAQCAtMTE0OSw3ICsxMTQ5LDcgQEAgdm9pZCBUZXh0SXRlcmF0
b3I6OmVtaXRUZXh0KFRleHQmIHRleHROb2RlLCBSZW5kZXJUZXh0JiByZW5kZXJlciwgaW50IHRl
eHRTdGFydE8KICAgICBtX3Bvc2l0aW9uRW5kT2Zmc2V0ID0gdGV4dEVuZE9mZnNldDsKIAogICAg
IG1fbGFzdENoYXJhY3RlciA9IHN0cmluZ1t0ZXh0RW5kT2Zmc2V0IC0gMV07Ci0gICAgbV9jb3B5
YWJsZVRleHQuc2V0KFdURjo6bW92ZShzdHJpbmcpLCB0ZXh0U3RhcnRPZmZzZXQsIHRleHRFbmRP
ZmZzZXQgLSB0ZXh0U3RhcnRPZmZzZXQpOworICAgIG1fY29weWFibGVUZXh0LnNldChXVEZNb3Zl
KHN0cmluZyksIHRleHRTdGFydE9mZnNldCwgdGV4dEVuZE9mZnNldCAtIHRleHRTdGFydE9mZnNl
dCk7CiAgICAgbV90ZXh0ID0gbV9jb3B5YWJsZVRleHQudGV4dCgpOwogCiAgICAgbV9sYXN0VGV4
dE5vZGVFbmRlZFdpdGhDb2xsYXBzZWRTcGFjZSA9IGZhbHNlOwpAQCAtMTM1Niw3ICsxMzU2LDcg
QEAgYm9vbCBTaW1wbGlmaWVkQmFja3dhcmRzVGV4dEl0ZXJhdG9yOjpoYW5kbGVUZXh0Tm9kZSgp
CiAgICAgQVNTRVJUKG1fcG9zaXRpb25FbmRPZmZzZXQgLSBvZmZzZXRJbk5vZGUgPD0gc3RhdGlj
X2Nhc3Q8aW50Pih0ZXh0Lmxlbmd0aCgpKSk7CiAKICAgICBtX2xhc3RDaGFyYWN0ZXIgPSB0ZXh0
W21fcG9zaXRpb25FbmRPZmZzZXQgLSBvZmZzZXRJbk5vZGUgLSAxXTsKLSAgICBtX2NvcHlhYmxl
VGV4dC5zZXQoV1RGOjptb3ZlKHRleHQpLCBtX3Bvc2l0aW9uU3RhcnRPZmZzZXQgLSBvZmZzZXRJ
bk5vZGUsIG1fcG9zaXRpb25FbmRPZmZzZXQgLSBtX3Bvc2l0aW9uU3RhcnRPZmZzZXQpOworICAg
IG1fY29weWFibGVUZXh0LnNldChXVEZNb3ZlKHRleHQpLCBtX3Bvc2l0aW9uU3RhcnRPZmZzZXQg
LSBvZmZzZXRJbk5vZGUsIG1fcG9zaXRpb25FbmRPZmZzZXQgLSBtX3Bvc2l0aW9uU3RhcnRPZmZz
ZXQpOwogICAgIG1fdGV4dCA9IG1fY29weWFibGVUZXh0LnRleHQoKTsKIAogICAgIHJldHVybiAh
bV9zaG91bGRIYW5kbGVGaXJzdExldHRlcjsKQEAgLTI0NzYsNyArMjQ3Niw3IEBAIFJlZlB0cjxS
YW5nZT4gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChDb250YWluZXJO
b2RlKiBzY29wZSwgaW50CiAgICAgaWYgKCFyYW5nZUxvY2F0aW9uICYmICFyYW5nZUxlbmd0aCAm
JiBpdC5hdEVuZCgpKSB7CiAgICAgICAgIHJlc3VsdFJhbmdlLT5zZXRTdGFydCgmdGV4dFJ1blJh
bmdlLT5zdGFydENvbnRhaW5lcigpLCAwKTsKICAgICAgICAgcmVzdWx0UmFuZ2UtPnNldEVuZCgm
dGV4dFJ1blJhbmdlLT5zdGFydENvbnRhaW5lcigpLCAwKTsKLSAgICAgICAgcmV0dXJuIFdURjo6
bW92ZShyZXN1bHRSYW5nZSk7CisgICAgICAgIHJldHVybiBXVEZNb3ZlKHJlc3VsdFJhbmdlKTsK
ICAgICB9CiAKICAgICBmb3IgKDsgIWl0LmF0RW5kKCk7IGl0LmFkdmFuY2UoKSkgewpAQCAtMjUz
OSw3ICsyNTM5LDcgQEAgUmVmUHRyPFJhbmdlPiBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0
aW9uQW5kTGVuZ3RoKENvbnRhaW5lck5vZGUqIHNjb3BlLCBpbnQKICAgICBpZiAocmFuZ2VMZW5n
dGggJiYgcmFuZ2VFbmQgPiBkb2NUZXh0UG9zaXRpb24pIC8vIHJhbmdlRW5kIGlzIG91dCBvZiBi
b3VuZHMKICAgICAgICAgcmVzdWx0UmFuZ2UtPnNldEVuZCgmdGV4dFJ1blJhbmdlLT5lbmRDb250
YWluZXIoKSwgdGV4dFJ1blJhbmdlLT5lbmRPZmZzZXQoKSk7CiAgICAgCi0gICAgcmV0dXJuIFdU
Rjo6bW92ZShyZXN1bHRSYW5nZSk7CisgICAgcmV0dXJuIFdURk1vdmUocmVzdWx0UmFuZ2UpOwog
fQogCiBib29sIFRleHRJdGVyYXRvcjo6Z2V0TG9jYXRpb25BbmRMZW5ndGhGcm9tUmFuZ2UoTm9k
ZSogc2NvcGUsIGNvbnN0IFJhbmdlKiByYW5nZSwgc2l6ZV90JiBsb2NhdGlvbiwgc2l6ZV90JiBs
ZW5ndGgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dyYXBDb250ZW50c0lu
RHVtbXlTcGFuQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dyYXBDb250ZW50
c0luRHVtbXlTcGFuQ29tbWFuZC5jcHAKaW5kZXggNjBkYjA4NGZhY2Y2NTQzODFjY2JjM2RhY2M2
NDg1ZDM4NWQwYmMzMC4uODhjMDdiOTUwMDMwMGQzNWI4MWJkM2U4OTczM2I2NDRmMzRhZTA0NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9XcmFwQ29udGVudHNJbkR1bW15U3Bh
bkNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV3JhcENvbnRlbnRzSW5E
dW1teVNwYW5Db21tYW5kLmNwcApAQCAtNDUsNyArNDUsNyBAQCB2b2lkIFdyYXBDb250ZW50c0lu
RHVtbXlTcGFuQ29tbWFuZDo6ZXhlY3V0ZUFwcGx5KCkKICAgICAgICAgY2hpbGRyZW4uYXBwZW5k
KCpjaGlsZCk7CiAKICAgICBmb3IgKGF1dG8mIGNoaWxkIDogY2hpbGRyZW4pCi0gICAgICAgIG1f
ZHVtbXlTcGFuLT5hcHBlbmRDaGlsZChXVEY6Om1vdmUoY2hpbGQpLCBJR05PUkVfRVhDRVBUSU9O
KTsKKyAgICAgICAgbV9kdW1teVNwYW4tPmFwcGVuZENoaWxkKFdURk1vdmUoY2hpbGQpLCBJR05P
UkVfRVhDRVBUSU9OKTsKIAogICAgIG1fZWxlbWVudC0+YXBwZW5kQ2hpbGQoKm1fZHVtbXlTcGFu
LCBJR05PUkVfRVhDRVBUSU9OKTsKIH0KQEAgLTY5LDcgKzY5LDcgQEAgdm9pZCBXcmFwQ29udGVu
dHNJbkR1bW15U3BhbkNvbW1hbmQ6OmRvVW5hcHBseSgpCiAgICAgICAgIGNoaWxkcmVuLmFwcGVu
ZCgqY2hpbGQpOwogCiAgICAgZm9yIChhdXRvJiBjaGlsZCA6IGNoaWxkcmVuKQotICAgICAgICBt
X2VsZW1lbnQtPmFwcGVuZENoaWxkKFdURjo6bW92ZShjaGlsZCksIElHTk9SRV9FWENFUFRJT04p
OworICAgICAgICBtX2VsZW1lbnQtPmFwcGVuZENoaWxkKFdURk1vdmUoY2hpbGQpLCBJR05PUkVf
RVhDRVBUSU9OKTsKIAogICAgIG1fZHVtbXlTcGFuLT5yZW1vdmUoSUdOT1JFX0VYQ0VQVElPTik7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9EaWN0YXRpb25Db21t
YW5kSU9TLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0RpY3RhdGlvbkNvbW1hbmRJ
T1MuY3BwCmluZGV4IDEzNGIyMzlkNDk5Y2QwMmUxNzhmMmQ4MTFiYWVhYzQ1MWIxNWEyOTIuLmMx
OTMyZGVlMWRhNGE4ZDJhYWJlMjY2MjAxZmYwMDQxMTk0NjI2ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0RpY3RhdGlvbkNvbW1hbmRJT1MuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0RpY3RhdGlvbkNvbW1hbmRJT1MuY3BwCkBAIC0zOSw4ICsz
OSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogRGljdGF0aW9uQ29tbWFuZElPUzo6RGljdGF0
aW9uQ29tbWFuZElPUyhEb2N1bWVudCYgZG9jdW1lbnQsIFZlY3RvcjxWZWN0b3I8U3RyaW5nPj4m
JiBkaWN0YXRpb25QaHJhc2VzLCBSZXRhaW5QdHI8aWQ+IG1ldGFkYXRhKQogICAgIDogQ29tcG9z
aXRlRWRpdENvbW1hbmQoZG9jdW1lbnQsIEVkaXRBY3Rpb25EaWN0YXRpb24pCi0gICAgLCBtX2Rp
Y3RhdGlvblBocmFzZXMoV1RGOjptb3ZlKGRpY3RhdGlvblBocmFzZXMpKQotICAgICwgbV9tZXRh
ZGF0YShXVEY6Om1vdmUobWV0YWRhdGEpKQorICAgICwgbV9kaWN0YXRpb25QaHJhc2VzKFdURk1v
dmUoZGljdGF0aW9uUGhyYXNlcykpCisgICAgLCBtX21ldGFkYXRhKFdURk1vdmUobWV0YWRhdGEp
KQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9EaWN0YXRp
b25Db21tYW5kSU9TLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9EaWN0YXRpb25Db21t
YW5kSU9TLmgKaW5kZXggYWM1Y2IyMTUwZTg0NzE3ZDNjMDg0NDE5ZWMxOGZlMzY1MTQ1NGRmZS4u
ODc3YTQ2ZDNhOWM1OTIwZmJlMzk0ODE0M2M3NzA3NzEzNDkxYjdlYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRGljdGF0aW9uQ29tbWFuZElPUy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0RpY3RhdGlvbkNvbW1hbmRJT1MuaApAQCAtMzcsNyArMzcs
NyBAQCBjbGFzcyBEaWN0YXRpb25Db21tYW5kSU9TIDogcHVibGljIENvbXBvc2l0ZUVkaXRDb21t
YW5kIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPERpY3RhdGlvbkNvbW1hbmRJT1M+IGNyZWF0
ZShEb2N1bWVudCYgZG9jdW1lbnQsIFZlY3RvcjxWZWN0b3I8U3RyaW5nPj4mJiBkaWN0YXRpb25Q
aHJhc2VzLCBSZXRhaW5QdHI8aWQ+IG1ldGFkYXRhKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgRGljdGF0aW9uQ29tbWFuZElPUyhkb2N1bWVudCwgV1RGOjptb3ZlKGRpY3Rh
dGlvblBocmFzZXMpLCBXVEY6Om1vdmUobWV0YWRhdGEpKSk7CisgICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IERpY3RhdGlvbkNvbW1hbmRJT1MoZG9jdW1lbnQsIFdURk1vdmUoZGljdGF0aW9u
UGhyYXNlcyksIFdURk1vdmUobWV0YWRhdGEpKSk7CiAgICAgfQogCiBwcml2YXRlOgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tCmluZGV4IDVjZTk4YmI0NDIxN2VkODVlOWU5
NGI2Y2JhMTRiZjU2OWZkNjdkZjQuLjEyYTEzNzE0Y2ZjYTE5MmI0ZDUwOGIxN2U3NGY4YmM5NjUy
ZjZiOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRvcklPUy5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0KQEAgLTQ5Niw3
ICs0OTYsNyBAQCBib29sIEVkaXRvcjo6V2ViQ29udGVudFJlYWRlcjo6cmVhZFVSTChjb25zdCBV
UkwmIHVybCwgY29uc3QgU3RyaW5nJikKICAgICAgICAgYW5jaG9yLT5hcHBlbmRDaGlsZChmcmFt
ZS5kb2N1bWVudCgpLT5jcmVhdGVUZXh0Tm9kZShbWyhOU1VSTCAqKXVybCBhYnNvbHV0ZVN0cmlu
Z10gcHJlY29tcG9zZWRTdHJpbmdXaXRoQ2Fub25pY2FsTWFwcGluZ10pKTsKIAogICAgICAgICBS
ZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gbmV3RnJhZ21lbnQgPSBmcmFtZS5kb2N1bWVudCgpLT5j
cmVhdGVEb2N1bWVudEZyYWdtZW50KCk7Ci0gICAgICAgIG5ld0ZyYWdtZW50LT5hcHBlbmRDaGls
ZChXVEY6Om1vdmUoYW5jaG9yKSk7CisgICAgICAgIG5ld0ZyYWdtZW50LT5hcHBlbmRDaGlsZChX
VEZNb3ZlKGFuY2hvcikpOwogICAgICAgICBhZGRGcmFnbWVudChuZXdGcmFnbWVudCk7CiAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTU4OSw3ICs1ODksNyBAQCBQYXNzUmVmUHRyPERv
Y3VtZW50RnJhZ21lbnQ+IEVkaXRvcjo6Y3JlYXRlRnJhZ21lbnRGb3JJbWFnZVJlc291cmNlQW5k
QWRkUmVzb3VyYwogICAgIGltYWdlRWxlbWVudC0+c2V0QXR0cmlidXRlKEhUTUxOYW1lczo6c3Jj
QXR0ciwgW1VSTCBpc0ZpbGVVUkxdID8gW1VSTCBhYnNvbHV0ZVN0cmluZ10gOiByZXNvdXJjZS0+
dXJsKCkpOwogCiAgICAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gbV9mcmFt
ZS5kb2N1bWVudCgpLT5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7Ci0gICAgZnJhZ21lbnQtPmFw
cGVuZENoaWxkKFdURjo6bW92ZShpbWFnZUVsZW1lbnQpKTsKKyAgICBmcmFnbWVudC0+YXBwZW5k
Q2hpbGQoV1RGTW92ZShpbWFnZUVsZW1lbnQpKTsKIAogICAgIHJldHVybiBmcmFnbWVudC5yZWxl
YXNlKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JN
YWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KaW5kZXggNWIz
MzRiYTRmMjEzYTIyMmQzMmFlZWY2NTJjODkyOGQxNzkxMzEyYi4uNGIzYzY0MjkxMmQ5M2Y2ZjE4
ZjhkYzQ2MmU3ZDczNGQxZmRmMTg4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9tYWMvRWRpdG9yTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRv
ck1hYy5tbQpAQCAtNTI2LDExICs1MjYsMTEgQEAgYm9vbCBFZGl0b3I6OldlYkNvbnRlbnRSZWFk
ZXI6OnJlYWRGaWxlbmFtZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhdGhzKQogI2lmIEVOQUJM
RShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAgICAgICAgIFJlZjxIVE1MQXR0YWNobWVudEVsZW1lbnQ+
IGF0dGFjaG1lbnQgPSBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OmNyZWF0ZShhdHRhY2htZW50VGFn
LCBkb2N1bWVudCk7CiAgICAgICAgIGF0dGFjaG1lbnQtPnNldEZpbGUoRmlsZTo6Y3JlYXRlKFtb
TlNVUkwgZmlsZVVSTFdpdGhQYXRoOnRleHRdIHBhdGhdKS5wdHIoKSk7Ci0gICAgICAgIGZyYWdt
ZW50LT5hcHBlbmRDaGlsZChXVEY6Om1vdmUoYXR0YWNobWVudCkpOworICAgICAgICBmcmFnbWVu
dC0+YXBwZW5kQ2hpbGQoV1RGTW92ZShhdHRhY2htZW50KSk7CiAjZWxzZQogICAgICAgICBSZWY8
SFRNTEVsZW1lbnQ+IHBhcmFncmFwaCA9IGNyZWF0ZURlZmF1bHRQYXJhZ3JhcGhFbGVtZW50KGRv
Y3VtZW50KTsKICAgICAgICAgcGFyYWdyYXBoLT5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVU
ZXh0Tm9kZShmcmFtZS5lZGl0b3IoKS5jbGllbnQoKS0+dXNlclZpc2libGVTdHJpbmcoW05TVVJM
IGZpbGVVUkxXaXRoUGF0aDp0ZXh0XSkpKTsKLSAgICAgICAgZnJhZ21lbnQtPmFwcGVuZENoaWxk
KFdURjo6bW92ZShwYXJhZ3JhcGgpKTsKKyAgICAgICAgZnJhZ21lbnQtPmFwcGVuZENoaWxkKFdU
Rk1vdmUocGFyYWdyYXBoKSk7CiAjZW5kaWYKICAgICB9CiAKQEAgLTU5NCw3ICs1OTQsNyBAQCBi
b29sIEVkaXRvcjo6V2ViQ29udGVudFJlYWRlcjo6cmVhZFVSTChjb25zdCBVUkwmIHVybCwgY29u
c3QgU3RyaW5nJiB0aXRsZSkKICAgICBhbmNob3ItPmFwcGVuZENoaWxkKGZyYW1lLmRvY3VtZW50
KCktPmNyZWF0ZVRleHROb2RlKFt0aXRsZSBwcmVjb21wb3NlZFN0cmluZ1dpdGhDYW5vbmljYWxN
YXBwaW5nXSkpOwogCiAgICAgZnJhZ21lbnQgPSBmcmFtZS5kb2N1bWVudCgpLT5jcmVhdGVEb2N1
bWVudEZyYWdtZW50KCk7Ci0gICAgZnJhZ21lbnQtPmFwcGVuZENoaWxkKFdURjo6bW92ZShhbmNo
b3IpKTsKKyAgICBmcmFnbWVudC0+YXBwZW5kQ2hpbGQoV1RGTW92ZShhbmNob3IpKTsKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNjM0LDcgKzYzNCw3IEBAIFBhc3NSZWZQdHI8RG9jdW1lbnRG
cmFnbWVudD4gRWRpdG9yOjpjcmVhdGVGcmFnbWVudEZvckltYWdlUmVzb3VyY2VBbmRBZGRSZXNv
dXJjCiAgICAgaW1hZ2VFbGVtZW50LT5zZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjpzcmNBdHRyLCBy
ZXNvdXJjZS0+dXJsKCkuc3RyaW5nKCkpOwogCiAgICAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+
IGZyYWdtZW50ID0gZG9jdW1lbnQoKS5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7Ci0gICAgZnJh
Z21lbnQtPmFwcGVuZENoaWxkKFdURjo6bW92ZShpbWFnZUVsZW1lbnQpKTsKKyAgICBmcmFnbWVu
dC0+YXBwZW5kQ2hpbGQoV1RGTW92ZShpbWFnZUVsZW1lbnQpKTsKIAogICAgIHJldHVybiBmcmFn
bWVudC5yZWxlYXNlKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21h
cmt1cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKaW5kZXggMzdjYjJl
ZmNjZmVjMTY2OWI2OThlYmZjMTUwNWZkZDNlZDNjOWI2MC4uNmQzMjY1NmRkN2NlOWU5Y2UzOTA5
OTYxYzRlOTJlZjE1ZTljNDcwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9t
YXJrdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcApAQCAtNzI5
LDcgKzcyOSw3IEBAIHN0YXRpYyB2b2lkIGZpbGxDb250YWluZXJGcm9tU3RyaW5nKENvbnRhaW5l
ck5vZGUmIHBhcmFncmFwaCwgY29uc3QgU3RyaW5nJiBzdHJpCiAgICAgICAgICAgICAgICAgdGFi
VGV4dCA9IGVtcHR5U3RyaW5nKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBSZWY8Tm9k
ZT4gdGV4dE5vZGUgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShzdHJpbmdXaXRoUmViYWxhbmNl
ZFdoaXRlc3BhY2UocywgZmlyc3QsIGkgKyAxID09IG51bUVudHJpZXMpKTsKLSAgICAgICAgICAg
IHBhcmFncmFwaC5hcHBlbmRDaGlsZChXVEY6Om1vdmUodGV4dE5vZGUpLCBBU1NFUlRfTk9fRVhD
RVBUSU9OKTsKKyAgICAgICAgICAgIHBhcmFncmFwaC5hcHBlbmRDaGlsZChXVEZNb3ZlKHRleHRO
b2RlKSwgQVNTRVJUX05PX0VYQ0VQVElPTik7CiAgICAgICAgIH0KIAogICAgICAgICAvLyB0aGVy
ZSBpcyBhIHRhYiBhZnRlciBldmVyeSBlbnRyeSwgZXhjZXB0IHRoZSBsYXN0IGVudHJ5CkBAIC03
OTQsNyArNzk0LDcgQEAgUmVmPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50RnJvbVRl
eHQoUmFuZ2UmIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgdGV4dCkKICAgICAgICAgaWYgKHN0cmlu
Zy5lbmRzV2l0aCgnXG4nKSkgewogICAgICAgICAgICAgUmVmPEVsZW1lbnQ+IGVsZW1lbnQgPSBj
cmVhdGVCcmVha0VsZW1lbnQoZG9jdW1lbnQpOwogICAgICAgICAgICAgZWxlbWVudC0+c2V0QXR0
cmlidXRlKGNsYXNzQXR0ciwgQXBwbGVJbnRlcmNoYW5nZU5ld2xpbmUpOyAgICAgICAgICAgIAot
ICAgICAgICAgICAgZnJhZ21lbnQtPmFwcGVuZENoaWxkKFdURjo6bW92ZShlbGVtZW50KSwgQVNT
RVJUX05PX0VYQ0VQVElPTik7CisgICAgICAgICAgICBmcmFnbWVudC0+YXBwZW5kQ2hpbGQoV1RG
TW92ZShlbGVtZW50KSwgQVNTRVJUX05PX0VYQ0VQVElPTik7CiAgICAgICAgIH0KICAgICAgICAg
cmV0dXJuIGZyYWdtZW50OwogICAgIH0KQEAgLTEwMDUsMTIgKzEwMDUsMTIgQEAgdm9pZCByZXBs
YWNlQ2hpbGRyZW5XaXRoRnJhZ21lbnQoQ29udGFpbmVyTm9kZSYgY29udGFpbmVyLCBSZWY8RG9j
dW1lbnRGcmFnbWVudD4KICAgICB9CiAKICAgICBpZiAoaGFzT25lQ2hpbGQoY29udGFpbmVyTm9k
ZSkpIHsKLSAgICAgICAgY29udGFpbmVyTm9kZS0+cmVwbGFjZUNoaWxkKFdURjo6bW92ZShmcmFn
bWVudCksICpjb250YWluZXJOb2RlLT5maXJzdENoaWxkKCksIGVjKTsKKyAgICAgICAgY29udGFp
bmVyTm9kZS0+cmVwbGFjZUNoaWxkKFdURk1vdmUoZnJhZ21lbnQpLCAqY29udGFpbmVyTm9kZS0+
Zmlyc3RDaGlsZCgpLCBlYyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBjb250YWlu
ZXJOb2RlLT5yZW1vdmVDaGlsZHJlbigpOwotICAgIGNvbnRhaW5lck5vZGUtPmFwcGVuZENoaWxk
KFdURjo6bW92ZShmcmFnbWVudCksIGVjKTsKKyAgICBjb250YWluZXJOb2RlLT5hcHBlbmRDaGls
ZChXVEZNb3ZlKGZyYWdtZW50KSwgZWMpOwogfQogCiB2b2lkIHJlcGxhY2VDaGlsZHJlbldpdGhU
ZXh0KENvbnRhaW5lck5vZGUmIGNvbnRhaW5lciwgY29uc3QgU3RyaW5nJiB0ZXh0LCBFeGNlcHRp
b25Db2RlJiBlYykKQEAgLTEwMjYsMTIgKzEwMjYsMTIgQEAgdm9pZCByZXBsYWNlQ2hpbGRyZW5X
aXRoVGV4dChDb250YWluZXJOb2RlJiBjb250YWluZXIsIGNvbnN0IFN0cmluZyYgdGV4dCwgRXhj
ZXAKICAgICBSZWY8VGV4dD4gdGV4dE5vZGUgPSBUZXh0OjpjcmVhdGUoY29udGFpbmVyTm9kZS0+
ZG9jdW1lbnQoKSwgdGV4dCk7CiAKICAgICBpZiAoaGFzT25lQ2hpbGQoY29udGFpbmVyTm9kZSkp
IHsKLSAgICAgICAgY29udGFpbmVyTm9kZS0+cmVwbGFjZUNoaWxkKFdURjo6bW92ZSh0ZXh0Tm9k
ZSksICpjb250YWluZXJOb2RlLT5maXJzdENoaWxkKCksIGVjKTsKKyAgICAgICAgY29udGFpbmVy
Tm9kZS0+cmVwbGFjZUNoaWxkKFdURk1vdmUodGV4dE5vZGUpLCAqY29udGFpbmVyTm9kZS0+Zmly
c3RDaGlsZCgpLCBlYyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBjb250YWluZXJO
b2RlLT5yZW1vdmVDaGlsZHJlbigpOwotICAgIGNvbnRhaW5lck5vZGUtPmFwcGVuZENoaWxkKFdU
Rjo6bW92ZSh0ZXh0Tm9kZSksIGVjKTsKKyAgICBjb250YWluZXJOb2RlLT5hcHBlbmRDaGlsZChX
VEZNb3ZlKHRleHROb2RlKSwgZWMpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9maWxlYXBpL0FzeW5jRmlsZVN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Fz
eW5jRmlsZVN0cmVhbS5jcHAKaW5kZXggNGY1OWFhZjZmOGQ5NmNiMzM2NDE2ZmRiMTBjZWZhZmMw
ZGJmYWNhNS4uMGZiOTEyNGUxZjYzODQ5Njk3Y2VhYzAzZmRhYTYxMmZhNmUxZTI1ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2ZpbGVhcGkvQXN5bmNGaWxlU3RyZWFtLmNwcApAQCAtODksNyArODksNyBA
QCBzdGF0aWMgdm9pZCBjYWxsT25GaWxlVGhyZWFkKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiYmIGZ1
bmN0aW9uKQogICAgICAgICB9KTsKICAgICB9KTsKIAotICAgIHF1ZXVlLmdldCgpLmFwcGVuZChz
dGQ6Om1ha2VfdW5pcXVlPHN0ZDo6ZnVuY3Rpb248dm9pZCgpPj4oV1RGOjptb3ZlKGZ1bmN0aW9u
KSkpOworICAgIHF1ZXVlLmdldCgpLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPHN0ZDo6ZnVuY3Rp
b248dm9pZCgpPj4oV1RGTW92ZShmdW5jdGlvbikpKTsKIH0KIAogQXN5bmNGaWxlU3RyZWFtOjpB
c3luY0ZpbGVTdHJlYW0oRmlsZVN0cmVhbUNsaWVudCYgY2xpZW50KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxv
Yi5jcHAKaW5kZXggMDFkMzMwZWI2MDY5NDZmOWVlMWJlMmVhNTVjMjBlZTU0NDY1ODZkMy4uNmIw
MzNiMDYxMDlmMjE5NjZhMjBkMzY2M2IzZmYwZGUzMTY1NzQzMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9CbG9iLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Js
b2IuY3BwCkBAIC04Miw5ICs4Miw5IEBAIEJsb2I6OkJsb2IoVmVjdG9yPGNoYXI+IGRhdGEsIGNv
bnN0IFN0cmluZyYgY29udGVudFR5cGUpCiAgICAgLCBtX3NpemUoZGF0YS5zaXplKCkpCiB7CiAg
ICAgVmVjdG9yPEJsb2JQYXJ0PiBibG9iUGFydHM7Ci0gICAgYmxvYlBhcnRzLmFwcGVuZChCbG9i
UGFydChXVEY6Om1vdmUoZGF0YSkpKTsKKyAgICBibG9iUGFydHMuYXBwZW5kKEJsb2JQYXJ0KFdU
Rk1vdmUoZGF0YSkpKTsKICAgICBtX2ludGVybmFsVVJMID0gQmxvYlVSTDo6Y3JlYXRlSW50ZXJu
YWxVUkwoKTsKLSAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwobV9p
bnRlcm5hbFVSTCwgV1RGOjptb3ZlKGJsb2JQYXJ0cyksIGNvbnRlbnRUeXBlKTsKKyAgICBUaHJl
YWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwobV9pbnRlcm5hbFVSTCwgV1RGTW92
ZShibG9iUGFydHMpLCBjb250ZW50VHlwZSk7CiB9CiAKIEJsb2I6OkJsb2IoVmVjdG9yPEJsb2JQ
YXJ0PiBibG9iUGFydHMsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCkBAIC05Miw3ICs5Miw3
IEBAIEJsb2I6OkJsb2IoVmVjdG9yPEJsb2JQYXJ0PiBibG9iUGFydHMsIGNvbnN0IFN0cmluZyYg
Y29udGVudFR5cGUpCiAgICAgLCBtX3NpemUoLTEpCiB7CiAgICAgbV9pbnRlcm5hbFVSTCA9IEJs
b2JVUkw6OmNyZWF0ZUludGVybmFsVVJMKCk7Ci0gICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6
cmVnaXN0ZXJCbG9iVVJMKG1faW50ZXJuYWxVUkwsIFdURjo6bW92ZShibG9iUGFydHMpLCBjb250
ZW50VHlwZSk7CisgICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKG1f
aW50ZXJuYWxVUkwsIFdURk1vdmUoYmxvYlBhcnRzKSwgY29udGVudFR5cGUpOwogfQogCiBCbG9i
OjpCbG9iKERlc2VyaWFsaXphdGlvbkNvbnRydWN0b3IsIGNvbnN0IFVSTCYgc3JjVVJMLCBjb25z
dCBTdHJpbmcmIHR5cGUsIGxvbmcgbG9uZyBzaXplKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9CbG9iLmggYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuaAppbmRleCA0
OTU4M2VmN2JhZGQ3Yzk1MjQ3YjY3OGNiZGI5MmYyZGU4NDc3YzY5Li41ZWE2MWU0ZWU0MGNkZGE2
YzRhNDQ3ODA5MzljNzg4OWEyZTc3MmRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxl
YXBpL0Jsb2IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuaApAQCAtNTAsMTIg
KzUwLDEyIEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBSZWY8QmxvYj4gY3JlYXRlKFZlY3Rvcjxj
aGFyPiBkYXRhLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQogICAgIHsKLSAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgQmxvYihXVEY6Om1vdmUoZGF0YSksIGNvbnRlbnRUeXBlKSk7Cisg
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEJsb2IoV1RGTW92ZShkYXRhKSwgY29udGVudFR5
cGUpKTsKICAgICB9CiAKICAgICBzdGF0aWMgUmVmPEJsb2I+IGNyZWF0ZShWZWN0b3I8QmxvYlBh
cnQ+IGJsb2JQYXJ0cywgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKICAgICB7Ci0gICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IEJsb2IoV1RGOjptb3ZlKGJsb2JQYXJ0cyksIGNvbnRlbnRU
eXBlKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEJsb2IoV1RGTW92ZShibG9iUGFy
dHMpLCBjb250ZW50VHlwZSkpOwogICAgIH0KIAogICAgIHN0YXRpYyBSZWY8QmxvYj4gZGVzZXJp
YWxpemUoY29uc3QgVVJMJiBzcmNVUkwsIGNvbnN0IFN0cmluZyYgdHlwZSwgbG9uZyBsb25nIHNp
emUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVMaXN0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVMaXN0LmgKaW5kZXggNmE3ZDM1YTUwMjVhOGE1ZDk5MTlm
OTQ0MjBlYjViNGRkZGI1NDcxNy4uOTM5MDEzZmVmZWQ4YzM0NjRkYjAxMDBkZWRlZDNjMWRjYTA1
Nzc2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlTGlzdC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZUxpc3QuaApAQCAtNDMsNyArNDMsNyBAQCBwdWJs
aWM6CiAKICAgICBzdGF0aWMgUmVmPEZpbGVMaXN0PiBjcmVhdGUoVmVjdG9yPFJlZlB0cjxGaWxl
Pj4mJiBmaWxlcykKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZpbGVMaXN0
KFdURjo6bW92ZShmaWxlcykpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRmlsZUxp
c3QoV1RGTW92ZShmaWxlcykpKTsKICAgICB9CiAKICAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25z
dCB7IHJldHVybiBtX2ZpbGVzLnNpemUoKTsgfQpAQCAtNTUsMTMgKzU1LDEzIEBAIHB1YmxpYzoK
IHByaXZhdGU6CiAgICAgRmlsZUxpc3QoKTsKICAgICBGaWxlTGlzdChWZWN0b3I8UmVmUHRyPEZp
bGU+PiYmIGZpbGVzKQotICAgICAgICA6IG1fZmlsZXMoV1RGOjptb3ZlKGZpbGVzKSkKKyAgICAg
ICAgOiBtX2ZpbGVzKFdURk1vdmUoZmlsZXMpKQogICAgIHsgfQogCiAgICAgLy8gRmlsZUxpc3Rz
IGNhbiBvbmx5IGJlIGNoYW5nZWQgYnkgdGhlaXIgb3duZXJzLgogICAgIGZyaWVuZCBjbGFzcyBE
YXRhVHJhbnNmZXI7CiAgICAgZnJpZW5kIGNsYXNzIEZpbGVJbnB1dFR5cGU7Ci0gICAgdm9pZCBh
cHBlbmQoUmVmUHRyPEZpbGU+JiYgZmlsZSkgeyBtX2ZpbGVzLmFwcGVuZChXVEY6Om1vdmUoZmls
ZSkpOyB9CisgICAgdm9pZCBhcHBlbmQoUmVmUHRyPEZpbGU+JiYgZmlsZSkgeyBtX2ZpbGVzLmFw
cGVuZChXVEZNb3ZlKGZpbGUpKTsgfQogICAgIHZvaWQgY2xlYXIoKSB7IG1fZmlsZXMuY2xlYXIo
KTsgfQogCiAgICAgVmVjdG9yPFJlZlB0cjxGaWxlPj4gbV9maWxlczsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9maWxlYXBpL1RocmVhZGFibGVCbG9iUmVnaXN0cnkuY3BwCmluZGV4IDg1NDc5MTlj
ZWNkZDc2MmMxMDk2YjM0ZTU5YmEwNGRlZGI5YjY3MmMuLjcxODgwY2FiZWU2NWJhMTk0YjQ4MmRh
YWJjMDc2OGNkMTNiMzMzOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhy
ZWFkYWJsZUJsb2JSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9UaHJl
YWRhYmxlQmxvYlJlZ2lzdHJ5LmNwcApAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAgQmxv
YlJlZ2lzdHJ5Q29udGV4dChjb25zdCBVUkwmIHVybCwgVmVjdG9yPEJsb2JQYXJ0PiBibG9iUGFy
dHMsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCiAgICAgICAgIDogdXJsKHVybC5pc29sYXRl
ZENvcHkoKSkKICAgICAgICAgLCBjb250ZW50VHlwZShjb250ZW50VHlwZS5pc29sYXRlZENvcHko
KSkKLSAgICAgICAgLCBibG9iUGFydHMoV1RGOjptb3ZlKGJsb2JQYXJ0cykpCisgICAgICAgICwg
YmxvYlBhcnRzKFdURk1vdmUoYmxvYlBhcnRzKSkKICAgICB7CiAgICAgICAgIGZvciAoQmxvYlBh
cnQmIHBhcnQgOiBibG9iUGFydHMpCiAgICAgICAgICAgICBwYXJ0LmRldGFjaEZyb21DdXJyZW50
VGhyZWFkKCk7CkBAIC0xMTUsMTMgKzExNSwxMyBAQCB2b2lkIFRocmVhZGFibGVCbG9iUmVnaXN0
cnk6OnJlZ2lzdGVyRmlsZUJsb2JVUkwoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcAog
dm9pZCBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiB1
cmwsIFZlY3RvcjxCbG9iUGFydD4gYmxvYlBhcnRzLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBl
KQogewogICAgIGlmIChpc01haW5UaHJlYWQoKSkKLSAgICAgICAgYmxvYlJlZ2lzdHJ5KCkucmVn
aXN0ZXJCbG9iVVJMKHVybCwgV1RGOjptb3ZlKGJsb2JQYXJ0cyksIGNvbnRlbnRUeXBlKTsKKyAg
ICAgICAgYmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJCbG9iVVJMKHVybCwgV1RGTW92ZShibG9iUGFy
dHMpLCBjb250ZW50VHlwZSk7CiAgICAgZWxzZSB7CiAgICAgICAgIC8vIEJsb2JSZWdpc3RyeUNv
bnRleHQgcGVyZm9ybXMgYW4gaXNvbGF0ZWQgY29weSBvZiBkYXRhLgotICAgICAgICBCbG9iUmVn
aXN0cnlDb250ZXh0KiBjb250ZXh0ID0gbmV3IEJsb2JSZWdpc3RyeUNvbnRleHQodXJsLCBXVEY6
Om1vdmUoYmxvYlBhcnRzKSwgY29udGVudFR5cGUpOworICAgICAgICBCbG9iUmVnaXN0cnlDb250
ZXh0KiBjb250ZXh0ID0gbmV3IEJsb2JSZWdpc3RyeUNvbnRleHQodXJsLCBXVEZNb3ZlKGJsb2JQ
YXJ0cyksIGNvbnRlbnRUeXBlKTsKICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbY29udGV4dF0g
ewogICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEJsb2JSZWdpc3RyeUNvbnRleHQ+IGJsb2JS
ZWdpc3RyeUNvbnRleHQoY29udGV4dCk7Ci0gICAgICAgICAgICBibG9iUmVnaXN0cnkoKS5yZWdp
c3RlckJsb2JVUkwoYmxvYlJlZ2lzdHJ5Q29udGV4dC0+dXJsLCBXVEY6Om1vdmUoYmxvYlJlZ2lz
dHJ5Q29udGV4dC0+YmxvYlBhcnRzKSwgYmxvYlJlZ2lzdHJ5Q29udGV4dC0+Y29udGVudFR5cGUp
OworICAgICAgICAgICAgYmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJCbG9iVVJMKGJsb2JSZWdpc3Ry
eUNvbnRleHQtPnVybCwgV1RGTW92ZShibG9iUmVnaXN0cnlDb250ZXh0LT5ibG9iUGFydHMpLCBi
bG9iUmVnaXN0cnlDb250ZXh0LT5jb250ZW50VHlwZSk7CiAgICAgICAgIH0pOwogICAgIH0KIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvV2ViS2l0QmxvYkJ1aWxkZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9XZWJLaXRCbG9iQnVpbGRlci5jcHAKaW5kZXggYzMy
YzM5NzY0M2I2YjNjZjZjZTVlOTU2Yzg0M2UzMzZhNDEwYzk0NS4uODY2MDhjNjk1ZDY3M2ExNThh
YWU2NmNmOTY2YWUxYzllNWU4MTNkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFw
aS9XZWJLaXRCbG9iQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9XZWJL
aXRCbG9iQnVpbGRlci5jcHAKQEAgLTg5LDE1ICs4OSwxNSBAQCB2b2lkIEJsb2JCdWlsZGVyOjph
cHBlbmQoQmxvYiogYmxvYikKICAgICBpZiAoIWJsb2IpCiAgICAgICAgIHJldHVybjsKICAgICBp
ZiAoIW1fYXBwZW5kYWJsZURhdGEuaXNFbXB0eSgpKQotICAgICAgICBtX2l0ZW1zLmFwcGVuZChC
bG9iUGFydChXVEY6Om1vdmUobV9hcHBlbmRhYmxlRGF0YSkpKTsKKyAgICAgICAgbV9pdGVtcy5h
cHBlbmQoQmxvYlBhcnQoV1RGTW92ZShtX2FwcGVuZGFibGVEYXRhKSkpOwogICAgIG1faXRlbXMu
YXBwZW5kKEJsb2JQYXJ0KGJsb2ItPnVybCgpKSk7CiB9CiAKIFZlY3RvcjxCbG9iUGFydD4gQmxv
YkJ1aWxkZXI6OmZpbmFsaXplKCkKIHsKICAgICBpZiAoIW1fYXBwZW5kYWJsZURhdGEuaXNFbXB0
eSgpKQotICAgICAgICBtX2l0ZW1zLmFwcGVuZChCbG9iUGFydChXVEY6Om1vdmUobV9hcHBlbmRh
YmxlRGF0YSkpKTsKLSAgICByZXR1cm4gV1RGOjptb3ZlKG1faXRlbXMpOworICAgICAgICBtX2l0
ZW1zLmFwcGVuZChCbG9iUGFydChXVEZNb3ZlKG1fYXBwZW5kYWJsZURhdGEpKSk7CisgICAgcmV0
dXJuIFdURk1vdmUobV9pdGVtcyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQmFja0ZvcndhcmRDb250cm9sbGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQmFja0ZvcndhcmRDb250cm9sbGVyLmNwcAppbmRleCBi
Zjk2Y2IyN2RjYzRjZjI4NDIzZTcxODc3ZTg5Y2NlN2E4NzgzOWQ3Li4yMzE3YWQ3MjY1OWNiY2Iy
YzFkODA1MmIzZGJkNTNhZjQyZTI1ZTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9oaXN0
b3J5L0JhY2tGb3J3YXJkQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaGlzdG9y
eS9CYWNrRm9yd2FyZENvbnRyb2xsZXIuY3BwCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogQmFja0ZvcndhcmRDb250cm9sbGVyOjpCYWNrRm9yd2FyZENvbnRyb2xsZXIo
UGFnZSYgcGFnZSwgUmVmUHRyPEJhY2tGb3J3YXJkQ2xpZW50PiYmIGNsaWVudCkKICAgICA6IG1f
cGFnZShwYWdlKQotICAgICwgbV9jbGllbnQoV1RGOjptb3ZlKGNsaWVudCkpCisgICAgLCBtX2Ns
aWVudChXVEZNb3ZlKGNsaWVudCkpCiB7CiAgICAgaWYgKCFtX2NsaWVudCkKICAgICAgICAgbV9j
bGllbnQgPSBCYWNrRm9yd2FyZExpc3Q6OmNyZWF0ZSgmcGFnZSk7CkBAIC05OSw3ICs5OSw3IEBA
IGJvb2wgQmFja0ZvcndhcmRDb250cm9sbGVyOjpnb0ZvcndhcmQoKQogCiB2b2lkIEJhY2tGb3J3
YXJkQ29udHJvbGxlcjo6YWRkSXRlbShSZWY8SGlzdG9yeUl0ZW0+JiYgaXRlbSkKIHsKLSAgICBt
X2NsaWVudC0+YWRkSXRlbShXVEY6Om1vdmUoaXRlbSkpOworICAgIG1fY2xpZW50LT5hZGRJdGVt
KFdURk1vdmUoaXRlbSkpOwogfQogCiB2b2lkIEJhY2tGb3J3YXJkQ29udHJvbGxlcjo6c2V0Q3Vy
cmVudEl0ZW0oSGlzdG9yeUl0ZW0qIGl0ZW0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
aXN0b3J5L0JhY2tGb3J3YXJkTGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tG
b3J3YXJkTGlzdC5jcHAKaW5kZXggMDEwNGQyNmY2MjM0OWFkMzU4YjZlMGUyMWY3OTI1NzY4ODll
NzNmNy4uNWEzNzhkNzVkY2FlNGM1OWNjODhhZmJkNGEyYmQ1ZDYwYTlmZmZhOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9yd2FyZExpc3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2hpc3RvcnkvQmFja0ZvcndhcmRMaXN0LmNwcApAQCAtNzMsNyArNzMsNyBAQCB2
b2lkIEJhY2tGb3J3YXJkTGlzdDo6YWRkSXRlbShSZWY8SGlzdG9yeUl0ZW0+JiYgbmV3SXRlbSkK
ICAgICAvLyBUb3NzIHRoZSBmaXJzdCBpdGVtIGlmIHRoZSBsaXN0IGlzIGdldHRpbmcgdG9vIGJp
ZywgYXMgbG9uZyBhcyB3ZSdyZSBub3QgdXNpbmcgaXQKICAgICAvLyAob3IgZXZlbiBpZiB3ZSBh
cmUsIGlmIHdlIG9ubHkgd2FudCAxIGVudHJ5KS4KICAgICBpZiAobV9lbnRyaWVzLnNpemUoKSA9
PSBtX2NhcGFjaXR5ICYmIChtX2N1cnJlbnQgfHwgbV9jYXBhY2l0eSA9PSAxKSkgewotICAgICAg
ICBSZWY8SGlzdG9yeUl0ZW0+IGl0ZW0gPSBXVEY6Om1vdmUobV9lbnRyaWVzWzBdKTsKKyAgICAg
ICAgUmVmPEhpc3RvcnlJdGVtPiBpdGVtID0gV1RGTW92ZShtX2VudHJpZXNbMF0pOwogICAgICAg
ICBtX2VudHJpZXMucmVtb3ZlKDApOwogICAgICAgICBtX2VudHJ5SGFzaC5yZW1vdmUoaXRlbS5w
dHIoKSk7CiAgICAgICAgIFBhZ2VDYWNoZTo6c2luZ2xldG9uKCkucmVtb3ZlKGl0ZW0pOwpAQCAt
ODEsNyArODEsNyBAQCB2b2lkIEJhY2tGb3J3YXJkTGlzdDo6YWRkSXRlbShSZWY8SGlzdG9yeUl0
ZW0+JiYgbmV3SXRlbSkKICAgICB9CiAKICAgICBtX2VudHJ5SGFzaC5hZGQobmV3SXRlbS5wdHIo
KSk7Ci0gICAgbV9lbnRyaWVzLmluc2VydChtX2N1cnJlbnQgKyAxLCBXVEY6Om1vdmUobmV3SXRl
bSkpOworICAgIG1fZW50cmllcy5pbnNlcnQobV9jdXJyZW50ICsgMSwgV1RGTW92ZShuZXdJdGVt
KSk7CiAgICAgKyttX2N1cnJlbnQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2hp
c3RvcnkvQ2FjaGVkRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRGcmFt
ZS5jcHAKaW5kZXggNzIxODdjNGE0OTgyODgxYmI0ZmJmOTI3Njk0NmM5OGU1OTBjNGI1NS4uNzQx
Mjg4ZDYzOWQ0NmUyMzdkYzNmNjY5ODMwMTZjNWMzOTgyYmRjNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaGlz
dG9yeS9DYWNoZWRGcmFtZS5jcHAKQEAgLTI4MCw3ICsyODAsNyBAQCB2b2lkIENhY2hlZEZyYW1l
OjpkZXN0cm95KCkKIAogdm9pZCBDYWNoZWRGcmFtZTo6c2V0Q2FjaGVkRnJhbWVQbGF0Zm9ybURh
dGEoc3RkOjp1bmlxdWVfcHRyPENhY2hlZEZyYW1lUGxhdGZvcm1EYXRhPiBkYXRhKQogewotICAg
IG1fY2FjaGVkRnJhbWVQbGF0Zm9ybURhdGEgPSBXVEY6Om1vdmUoZGF0YSk7CisgICAgbV9jYWNo
ZWRGcmFtZVBsYXRmb3JtRGF0YSA9IFdURk1vdmUoZGF0YSk7CiB9CiAKIENhY2hlZEZyYW1lUGxh
dGZvcm1EYXRhKiBDYWNoZWRGcmFtZTo6Y2FjaGVkRnJhbWVQbGF0Zm9ybURhdGEoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9IaXN0b3J5SXRlbS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9oaXN0b3J5L0hpc3RvcnlJdGVtLmNwcAppbmRleCAyZjMwMWNjMDM0MTQ5YWMzOTdhMDRm
N2Q5ODUzZTRhYWE2NDk1N2U0Li44OGIyYjY4NjljZGQ1N2IxMTM0ZjNmMDAwMmMwYzJmMDU1ODhk
ZTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0hpc3RvcnlJdGVtLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0hpc3RvcnlJdGVtLmNwcApAQCAtMzQwLDEzICsz
NDAsMTMgQEAgdm9pZCBIaXN0b3J5SXRlbTo6c2V0SXNUYXJnZXRJdGVtKGJvb2wgZmxhZykKIAog
dm9pZCBIaXN0b3J5SXRlbTo6c2V0U3RhdGVPYmplY3QoUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4mJiBvYmplY3QpCiB7Ci0gICAgbV9zdGF0ZU9iamVjdCA9IFdURjo6bW92ZShvYmplY3Qp
OworICAgIG1fc3RhdGVPYmplY3QgPSBXVEZNb3ZlKG9iamVjdCk7CiB9CiAKIHZvaWQgSGlzdG9y
eUl0ZW06OmFkZENoaWxkSXRlbShSZWY8SGlzdG9yeUl0ZW0+JiYgY2hpbGQpCiB7CiAgICAgQVNT
RVJUKCFjaGlsZEl0ZW1XaXRoVGFyZ2V0KGNoaWxkLT50YXJnZXQoKSkpOwotICAgIG1fY2hpbGRy
ZW4uYXBwZW5kKFdURjo6bW92ZShjaGlsZCkpOworICAgIG1fY2hpbGRyZW4uYXBwZW5kKFdURk1v
dmUoY2hpbGQpKTsKIH0KIAogdm9pZCBIaXN0b3J5SXRlbTo6c2V0Q2hpbGRJdGVtKFJlZjxIaXN0
b3J5SXRlbT4mJiBjaGlsZCkKQEAgLTM1NiwxMSArMzU2LDExIEBAIHZvaWQgSGlzdG9yeUl0ZW06
OnNldENoaWxkSXRlbShSZWY8SGlzdG9yeUl0ZW0+JiYgY2hpbGQpCiAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IHNpemU7ICsraSkgIHsKICAgICAgICAgaWYgKG1fY2hpbGRyZW5baV0tPnRh
cmdldCgpID09IGNoaWxkLT50YXJnZXQoKSkgewogICAgICAgICAgICAgY2hpbGQtPnNldElzVGFy
Z2V0SXRlbShtX2NoaWxkcmVuW2ldLT5pc1RhcmdldEl0ZW0oKSk7Ci0gICAgICAgICAgICBtX2No
aWxkcmVuW2ldID0gV1RGOjptb3ZlKGNoaWxkKTsKKyAgICAgICAgICAgIG1fY2hpbGRyZW5baV0g
PSBXVEZNb3ZlKGNoaWxkKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0K
LSAgICBtX2NoaWxkcmVuLmFwcGVuZChXVEY6Om1vdmUoY2hpbGQpKTsKKyAgICBtX2NoaWxkcmVu
LmFwcGVuZChXVEZNb3ZlKGNoaWxkKSk7CiB9CiAKIEhpc3RvcnlJdGVtKiBIaXN0b3J5SXRlbTo6
Y2hpbGRJdGVtV2l0aFRhcmdldChjb25zdCBTdHJpbmcmIHRhcmdldCkKQEAgLTQ4Nyw3ICs0ODcs
NyBAQCB2b2lkIEhpc3RvcnlJdGVtOjpzZXRGb3JtSW5mb0Zyb21SZXF1ZXN0KGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCkKIAogdm9pZCBIaXN0b3J5SXRlbTo6c2V0Rm9ybURhdGEoUmVm
UHRyPEZvcm1EYXRhPiYmIGZvcm1EYXRhKQogewotICAgIG1fZm9ybURhdGEgPSBXVEY6Om1vdmUo
Zm9ybURhdGEpOworICAgIG1fZm9ybURhdGEgPSBXVEZNb3ZlKGZvcm1EYXRhKTsKIH0KIAogdm9p
ZCBIaXN0b3J5SXRlbTo6c2V0Rm9ybUNvbnRlbnRUeXBlKGNvbnN0IFN0cmluZyYgZm9ybUNvbnRl
bnRUeXBlKQpAQCAtNTI0LDcgKzUyNCw3IEBAIFZlY3RvcjxTdHJpbmc+KiBIaXN0b3J5SXRlbTo6
cmVkaXJlY3RVUkxzKCkgY29uc3QKIAogdm9pZCBIaXN0b3J5SXRlbTo6c2V0UmVkaXJlY3RVUkxz
KHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8U3RyaW5nPj4gcmVkaXJlY3RVUkxzKQogewotICAgIG1f
cmVkaXJlY3RVUkxzID0gV1RGOjptb3ZlKHJlZGlyZWN0VVJMcyk7CisgICAgbV9yZWRpcmVjdFVS
THMgPSBXVEZNb3ZlKHJlZGlyZWN0VVJMcyk7CiB9CiAKIHZvaWQgSGlzdG9yeUl0ZW06Om5vdGlm
eUNoYW5nZWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9QYWdlQ2FjaGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9QYWdlQ2FjaGUuY3BwCmluZGV4IDU5NjEwNTZj
MDc2ZTQ3MjQyNjM0OGRlMmYwYzYzOTMwNGExMGYwZmMuLjk1ZTY5YTcyMTljOWM4MGVlYjI5Zjdm
MWYwYzFmMjI0ZGRhMzE2Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvUGFn
ZUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L1BhZ2VDYWNoZS5jcHAKQEAg
LTM5Nyw3ICszOTcsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Q2FjaGVkUGFnZT4gUGFnZUNhY2hlOjp0
YWtlKEhpc3RvcnlJdGVtJiBpdGVtLCBQYWdlKiBwYWdlKQogICAgIH0KIAogICAgIG1faXRlbXMu
cmVtb3ZlKCZpdGVtKTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Q2FjaGVkUGFnZT4gY2FjaGVkUGFn
ZSA9IFdURjo6bW92ZShpdGVtLm1fY2FjaGVkUGFnZSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPENh
Y2hlZFBhZ2U+IGNhY2hlZFBhZ2UgPSBXVEZNb3ZlKGl0ZW0ubV9jYWNoZWRQYWdlKTsKIAogICAg
IGlmIChjYWNoZWRQYWdlLT5oYXNFeHBpcmVkKCkpIHsKICAgICAgICAgTE9HKFBhZ2VDYWNoZSwg
Ik5vdCByZXN0b3JpbmcgcGFnZSBmb3IgJXMgZnJvbSBiYWNrL2ZvcndhcmQgY2FjaGUgYmVjYXVz
ZSBjYWNoZSBlbnRyeSBoYXMgZXhwaXJlZCIsIGl0ZW0udXJsKCkuc3RyaW5nKCkuYXNjaWkoKS5k
YXRhKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlQnV0dG9uSW5wdXRU
eXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZUJ1dHRvbklucHV0VHlwZS5jcHAKaW5k
ZXggMzY0MjIxOTA0Y2E4M2RkZGZjMzZjMWIyZjc0Njg0OTg1N2EyZWIyNS4uMGJlZDk1NzQwYzY5
YjNhMmNkNjJjYTQ4NmQxNmY2N2U1OWY4MGUzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9CYXNlQnV0dG9uSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jh
c2VCdXR0b25JbnB1dFR5cGUuY3BwCkBAIC01NCw3ICs1NCw3IEBAIGJvb2wgQmFzZUJ1dHRvbklu
cHV0VHlwZTo6YXBwZW5kRm9ybURhdGEoRm9ybURhdGFMaXN0JiwgYm9vbCkgY29uc3QKIAogUmVu
ZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEJhc2VCdXR0b25JbnB1dFR5cGU6OmNyZWF0ZUlucHV0UmVu
ZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQogewotICAgIHJldHVybiBjcmVhdGVSZW5k
ZXJlcjxSZW5kZXJCdXR0b24+KGVsZW1lbnQoKSwgV1RGOjptb3ZlKHN0eWxlKSk7CisgICAgcmV0
dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlckJ1dHRvbj4oZWxlbWVudCgpLCBXVEZNb3ZlKHN0eWxl
KSk7CiB9CiAKIGJvb2wgQmFzZUJ1dHRvbklucHV0VHlwZTo6c3RvcmVzVmFsdWVTZXBhcmF0ZUZy
b21BdHRyaWJ1dGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlQ2hvb3Nl
ck9ubHlEYXRlQW5kVGltZUlucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VD
aG9vc2VyT25seURhdGVBbmRUaW1lSW5wdXRUeXBlLmNwcAppbmRleCA1N2UzODhiZjFkY2VhNGI4
MTk2YjQ2MGYwY2MzNzExZmYwZjg3MzRjLi5hMzJhMGI3YzE3YzA2M2MyYjk5OTFmOTBhMTc4ODE3
NWZmZDI2OWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VDaG9vc2VyT25s
eURhdGVBbmRUaW1lSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VD
aG9vc2VyT25seURhdGVBbmRUaW1lSW5wdXRUeXBlLmNwcApAQCAtNjIsNyArNjIsNyBAQCB2b2lk
IEJhc2VDaG9vc2VyT25seURhdGVBbmRUaW1lSW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVl
KCkKIAogICAgIFJlZjxIVE1MRGl2RWxlbWVudD4gdmFsdWVDb250YWluZXIgPSBIVE1MRGl2RWxl
bWVudDo6Y3JlYXRlKGVsZW1lbnQoKS5kb2N1bWVudCgpKTsKICAgICB2YWx1ZUNvbnRhaW5lci0+
c2V0UHNldWRvKHZhbHVlQ29udGFpbmVyUHNldWRvKTsKLSAgICBlbGVtZW50KCkudXNlckFnZW50
U2hhZG93Um9vdCgpLT5hcHBlbmRDaGlsZChXVEY6Om1vdmUodmFsdWVDb250YWluZXIpKTsKKyAg
ICBlbGVtZW50KCkudXNlckFnZW50U2hhZG93Um9vdCgpLT5hcHBlbmRDaGlsZChXVEZNb3ZlKHZh
bHVlQ29udGFpbmVyKSk7CiAgICAgdXBkYXRlQXBwZWFyYW5jZSgpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0NvbG9ySW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvQ29sb3JJbnB1dFR5cGUuY3BwCmluZGV4IDkyYzIwNDBmOGVjNWZlMGVjNzUyYmQzN2Yz
NTFhZTU0MzM5YjMwNzUuLjVhNjQ3OGMzMGY1MjE1NDUxZmNlZWE4YTMwYzMxOGM2NWZiYjg4Nzkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ29sb3JJbnB1dFR5cGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvQ29sb3JJbnB1dFR5cGUuY3BwCkBAIC0xMTQsOCArMTE0LDgg
QEAgdm9pZCBDb2xvcklucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZSgpCiAgICAgd3JhcHBl
ckVsZW1lbnQtPnNldFBzZXVkbyhBdG9taWNTdHJpbmcoIi13ZWJraXQtY29sb3Itc3dhdGNoLXdy
YXBwZXIiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CiAgICAgUmVmPEhU
TUxEaXZFbGVtZW50PiBjb2xvclN3YXRjaCA9IEhUTUxEaXZFbGVtZW50OjpjcmVhdGUoZG9jdW1l
bnQpOwogICAgIGNvbG9yU3dhdGNoLT5zZXRQc2V1ZG8oQXRvbWljU3RyaW5nKCItd2Via2l0LWNv
bG9yLXN3YXRjaCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKLSAgICB3
cmFwcGVyRWxlbWVudC0+YXBwZW5kQ2hpbGQoV1RGOjptb3ZlKGNvbG9yU3dhdGNoKSwgQVNTRVJU
X05PX0VYQ0VQVElPTik7Ci0gICAgZWxlbWVudCgpLnVzZXJBZ2VudFNoYWRvd1Jvb3QoKS0+YXBw
ZW5kQ2hpbGQoV1RGOjptb3ZlKHdyYXBwZXJFbGVtZW50KSwgQVNTRVJUX05PX0VYQ0VQVElPTik7
CisgICAgd3JhcHBlckVsZW1lbnQtPmFwcGVuZENoaWxkKFdURk1vdmUoY29sb3JTd2F0Y2gpLCBB
U1NFUlRfTk9fRVhDRVBUSU9OKTsKKyAgICBlbGVtZW50KCkudXNlckFnZW50U2hhZG93Um9vdCgp
LT5hcHBlbmRDaGlsZChXVEZNb3ZlKHdyYXBwZXJFbGVtZW50KSwgQVNTRVJUX05PX0VYQ0VQVElP
Tik7CiAgICAgCiAgICAgdXBkYXRlQ29sb3JTd2F0Y2goKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAKaW5kZXggYjVkMWQxODg5NWU3YWY4OWUyNTli
NTI1MzM1MjZiZTQ0ZTc0ZjJhZi4uNTRlYjc5MDU5Y2I5ZTMyYjcwNjJmYzliMWRlNjQ4YjA3YTgx
ZmNjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAK
QEAgLTExMCwyMSArMTEwLDIxIEBAIHZvaWQgRlRQRGlyZWN0b3J5RG9jdW1lbnRQYXJzZXI6OmFw
cGVuZEVudHJ5KGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluCiAgICAgICAgIGVs
ZW1lbnQtPnNldEF0dHJpYnV0ZShIVE1MTmFtZXM6OmNsYXNzQXR0ciwgImZ0cERpcmVjdG9yeUlj
b24gZnRwRGlyZWN0b3J5VHlwZURpcmVjdG9yeSIpOwogICAgIGVsc2UKICAgICAgICAgZWxlbWVu
dC0+c2V0QXR0cmlidXRlKEhUTUxOYW1lczo6Y2xhc3NBdHRyLCAiZnRwRGlyZWN0b3J5SWNvbiBm
dHBEaXJlY3RvcnlUeXBlRmlsZSIpOwotICAgIHJvd0VsZW1lbnQtPmFwcGVuZENoaWxkKFdURjo6
bW92ZShlbGVtZW50KSwgSUdOT1JFX0VYQ0VQVElPTik7CisgICAgcm93RWxlbWVudC0+YXBwZW5k
Q2hpbGQoV1RGTW92ZShlbGVtZW50KSwgSUdOT1JFX0VYQ0VQVElPTik7CiAKICAgICBlbGVtZW50
ID0gY3JlYXRlVERGb3JGaWxlbmFtZShmaWxlbmFtZSk7CiAgICAgZWxlbWVudC0+c2V0QXR0cmli
dXRlKEhUTUxOYW1lczo6Y2xhc3NBdHRyLCAiZnRwRGlyZWN0b3J5RmlsZU5hbWUiKTsKLSAgICBy
b3dFbGVtZW50LT5hcHBlbmRDaGlsZChXVEY6Om1vdmUoZWxlbWVudCksIElHTk9SRV9FWENFUFRJ
T04pOworICAgIHJvd0VsZW1lbnQtPmFwcGVuZENoaWxkKFdURk1vdmUoZWxlbWVudCksIElHTk9S
RV9FWENFUFRJT04pOwogCiAgICAgZWxlbWVudCA9IGRvY3VtZW50KCktPmNyZWF0ZUVsZW1lbnQo
dGRUYWcsIGZhbHNlKTsKICAgICBlbGVtZW50LT5hcHBlbmRDaGlsZChUZXh0OjpjcmVhdGUoKmRv
Y3VtZW50KCksIGRhdGUpLCBJR05PUkVfRVhDRVBUSU9OKTsKICAgICBlbGVtZW50LT5zZXRBdHRy
aWJ1dGUoSFRNTE5hbWVzOjpjbGFzc0F0dHIsICJmdHBEaXJlY3RvcnlGaWxlRGF0ZSIpOwotICAg
IHJvd0VsZW1lbnQtPmFwcGVuZENoaWxkKFdURjo6bW92ZShlbGVtZW50KSwgSUdOT1JFX0VYQ0VQ
VElPTik7CisgICAgcm93RWxlbWVudC0+YXBwZW5kQ2hpbGQoV1RGTW92ZShlbGVtZW50KSwgSUdO
T1JFX0VYQ0VQVElPTik7CiAKICAgICBlbGVtZW50ID0gZG9jdW1lbnQoKS0+Y3JlYXRlRWxlbWVu
dCh0ZFRhZywgZmFsc2UpOwogICAgIGVsZW1lbnQtPmFwcGVuZENoaWxkKFRleHQ6OmNyZWF0ZSgq
ZG9jdW1lbnQoKSwgc2l6ZSksIElHTk9SRV9FWENFUFRJT04pOwogICAgIGVsZW1lbnQtPnNldEF0
dHJpYnV0ZShIVE1MTmFtZXM6OmNsYXNzQXR0ciwgImZ0cERpcmVjdG9yeUZpbGVTaXplIik7Ci0g
ICAgcm93RWxlbWVudC0+YXBwZW5kQ2hpbGQoV1RGOjptb3ZlKGVsZW1lbnQpLCBJR05PUkVfRVhD
RVBUSU9OKTsKKyAgICByb3dFbGVtZW50LT5hcHBlbmRDaGlsZChXVEZNb3ZlKGVsZW1lbnQpLCBJ
R05PUkVfRVhDRVBUSU9OKTsKIH0KIAogUmVmPEVsZW1lbnQ+IEZUUERpcmVjdG9yeURvY3VtZW50
UGFyc2VyOjpjcmVhdGVUREZvckZpbGVuYW1lKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUpCkBAIC0x
NDAsNyArMTQwLDcgQEAgUmVmPEVsZW1lbnQ+IEZUUERpcmVjdG9yeURvY3VtZW50UGFyc2VyOjpj
cmVhdGVUREZvckZpbGVuYW1lKGNvbnN0IFN0cmluZyYgZmlsZW4KICAgICBhbmNob3JFbGVtZW50
LT5hcHBlbmRDaGlsZChUZXh0OjpjcmVhdGUoKmRvY3VtZW50KCksIGZpbGVuYW1lKSwgSUdOT1JF
X0VYQ0VQVElPTik7CiAKICAgICBSZWY8RWxlbWVudD4gdGRFbGVtZW50ID0gZG9jdW1lbnQoKS0+
Y3JlYXRlRWxlbWVudCh0ZFRhZywgZmFsc2UpOwotICAgIHRkRWxlbWVudC0+YXBwZW5kQ2hpbGQo
V1RGOjptb3ZlKGFuY2hvckVsZW1lbnQpLCBJR05PUkVfRVhDRVBUSU9OKTsKKyAgICB0ZEVsZW1l
bnQtPmFwcGVuZENoaWxkKFdURk1vdmUoYW5jaG9yRWxlbWVudCksIElHTk9SRV9FWENFUFRJT04p
OwogCiAgICAgcmV0dXJuIHRkRWxlbWVudDsKIH0KQEAgLTMzNCwxNCArMzM0LDE0IEBAIHZvaWQg
RlRQRGlyZWN0b3J5RG9jdW1lbnRQYXJzZXI6OmNyZWF0ZUJhc2ljRG9jdW1lbnQoKQogICAgIG1f
dGFibGVFbGVtZW50LT5zZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjppZEF0dHIsICJmdHBEaXJlY3Rv
cnlUYWJsZSIpOwogICAgIG1fdGFibGVFbGVtZW50LT5zZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjpz
dHlsZUF0dHIsICJ3aWR0aDoxMDAlIik7CiAKLSAgICBib2R5RWxlbWVudC0+YXBwZW5kQ2hpbGQo
V1RGOjptb3ZlKHRhYmxlRWxlbWVudCksIElHTk9SRV9FWENFUFRJT04pOworICAgIGJvZHlFbGVt
ZW50LT5hcHBlbmRDaGlsZChXVEZNb3ZlKHRhYmxlRWxlbWVudCksIElHTk9SRV9FWENFUFRJT04p
OwogCiAgICAgZG9jdW1lbnQoKS0+cHJvY2Vzc1ZpZXdwb3J0KCJ3aWR0aD1kZXZpY2Utd2lkdGgi
LCBWaWV3cG9ydEFyZ3VtZW50czo6Vmlld3BvcnRNZXRhKTsKIH0KIAogdm9pZCBGVFBEaXJlY3Rv
cnlEb2N1bWVudFBhcnNlcjo6YXBwZW5kKFJlZlB0cjxTdHJpbmdJbXBsPiYmIGlucHV0U291cmNl
KQogewotICAgIFN0cmluZyBzb3VyY2UoV1RGOjptb3ZlKGlucHV0U291cmNlKSk7CisgICAgU3Ry
aW5nIHNvdXJjZShXVEZNb3ZlKGlucHV0U291cmNlKSk7CiAKICAgICAvLyBNYWtlIHN1cmUgd2Ug
aGF2ZSB0aGUgdGFibGUgZWxlbWVudCB0byBhcHBlbmQgdG8gYnkgbG9hZGluZyB0aGUgdGVtcGxh
dGUgc2V0IGluIHRoZSBwcmVmLCBvcgogICAgIC8vIGNyZWF0aW5nIGEgdmVyeSBiYXNpYyBkb2N1
bWVudCB3aXRoIHRoZSBhcHByb3ByaWF0ZSB0YWJsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0
VHlwZS5jcHAKaW5kZXggMjFkNWVlMzMwZWE3MzdmOTc1MGZmNTE2ZDAzMDEzMDAwMDdmOWMxOS4u
YzA0ODAwMWY0ZjkyZGVlNzVkMDhmZmM5NmNjZTJiNjc2ZjkyNDdlZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0ZpbGVJbnB1dFR5cGUuY3BwCkBAIC0xOTcsNyArMTk3LDcgQEAgdm9pZCBGaWxlSW5wdXRU
eXBlOjpoYW5kbGVET01BY3RpdmF0ZUV2ZW50KEV2ZW50KiBldmVudCkKIAogUmVuZGVyUHRyPFJl
bmRlckVsZW1lbnQ+IEZpbGVJbnB1dFR5cGU6OmNyZWF0ZUlucHV0UmVuZGVyZXIoUmVmPFJlbmRl
clN0eWxlPiYmIHN0eWxlKQogewotICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJGaWxl
VXBsb2FkQ29udHJvbD4oZWxlbWVudCgpLCBXVEY6Om1vdmUoc3R5bGUpKTsKKyAgICByZXR1cm4g
Y3JlYXRlUmVuZGVyZXI8UmVuZGVyRmlsZVVwbG9hZENvbnRyb2w+KGVsZW1lbnQoKSwgV1RGTW92
ZShzdHlsZSkpOwogfQogCiBib29sIEZpbGVJbnB1dFR5cGU6OmNhblNldFN0cmluZ1ZhbHVlKCkg
Y29uc3QKQEAgLTI2MCw3ICsyNjAsNyBAQCBQYXNzUmVmUHRyPEZpbGVMaXN0PiBGaWxlSW5wdXRU
eXBlOjpjcmVhdGVGaWxlTGlzdChjb25zdCBWZWN0b3I8RmlsZUNob29zZXJGaWxlSQogICAgIGZv
ciAoY29uc3QgRmlsZUNob29zZXJGaWxlSW5mbyYgaW5mbyA6IGZpbGVzKQogICAgICAgICBmaWxl
T2JqZWN0cy5hcHBlbmQoRmlsZTo6Y3JlYXRlV2l0aE5hbWUoaW5mby5wYXRoLCBpbmZvLmRpc3Bs
YXlOYW1lKSk7CiAKLSAgICByZXR1cm4gRmlsZUxpc3Q6OmNyZWF0ZShXVEY6Om1vdmUoZmlsZU9i
amVjdHMpKTsKKyAgICByZXR1cm4gRmlsZUxpc3Q6OmNyZWF0ZShXVEZNb3ZlKGZpbGVPYmplY3Rz
KSk7CiB9CiAKIGJvb2wgRmlsZUlucHV0VHlwZTo6aXNGaWxlVXBsb2FkKCkgY29uc3QKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9Gb3JtQ29udHJvbGxlci5jcHAKaW5kZXggNjNlZjA3MzRkMjFkOTNiM2Q2NDMz
MDBjM2RhNzViMjYzZDA1YTc2NS4uYjBmM2E5MjFmY2E3NDA3OTAxMzYwYWIwY2Q4MWEyNDVjZmQw
M2FkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQ29udHJvbGxlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQ29udHJvbGxlci5jcHAKQEAgLTQ1Niw3ICs0
NTYsNyBAQCB2b2lkIEZvcm1Db250cm9sbGVyOjpmb3JtU3RhdGVzRnJvbVN0YXRlVmVjdG9yKGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBzdGF0ZVZlY3RvcgogICAgICAgICAgICAgaSA9IDA7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBtYXAuYWRkKGZvcm1LZXkuaW1wbCgp
LCBXVEY6Om1vdmUoc3RhdGUpKTsKKyAgICAgICAgbWFwLmFkZChmb3JtS2V5LmltcGwoKSwgV1RG
TW92ZShzdGF0ZSkpOwogICAgIH0KICAgICBpZiAoaSAhPSBzdGF0ZVZlY3Rvci5zaXplKCkpCiAg
ICAgICAgIG1hcC5jbGVhcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
QXBwbGV0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBcHBsZXRFbGVtZW50
LmNwcAppbmRleCBhOTcxNzE5MmEyMWEzODQxMjJhYzAxMjA3ZDc5YzAwMzJjODczZjUyLi4zNzRl
NGEzMzViMjI4MmNmOTY0Y2RjNTJmZDRmYmUwODMyZDdmMzljIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxBcHBsZXRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxBcHBsZXRFbGVtZW50LmNwcApAQCAtNzgsOSArNzgsOSBAQCBib29sIEhUTUxBcHBs
ZXRFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKIFJl
bmRlclB0cjxSZW5kZXJFbGVtZW50PiBIVE1MQXBwbGV0RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJl
bmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9u
JikKIHsKICAgICBpZiAoIWNhbkVtYmVkSmF2YSgpKQotICAgICAgICByZXR1cm4gUmVuZGVyRWxl
bWVudDo6Y3JlYXRlRm9yKCp0aGlzLCBXVEY6Om1vdmUoc3R5bGUpKTsKKyAgICAgICAgcmV0dXJu
IFJlbmRlckVsZW1lbnQ6OmNyZWF0ZUZvcigqdGhpcywgV1RGTW92ZShzdHlsZSkpOwogCi0gICAg
cmV0dXJuIFJlbmRlckVtYmVkZGVkT2JqZWN0OjpjcmVhdGVGb3JBcHBsZXQoKnRoaXMsIFdURjo6
bW92ZShzdHlsZSkpOworICAgIHJldHVybiBSZW5kZXJFbWJlZGRlZE9iamVjdDo6Y3JlYXRlRm9y
QXBwbGV0KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7CiB9CiAKIFJlbmRlcldpZGdldCogSFRNTEFw
cGxldEVsZW1lbnQ6OnJlbmRlcldpZGdldExvYWRpbmdQbHVnaW4oKSBjb25zdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwCmluZGV4IDJmMjYxYTU5MmVi
ODc2ZGI1Y2NhY2M0YjZkOWJiODdkOGI2M2U3M2UuLmZjN2I1MmJhODQ1ZjUzZDA2Y2Y2YThkNzc3
Y2VjNGU0M2ExNWVhNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFj
aG1lbnRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50
RWxlbWVudC5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgUmVmPEhUTUxBdHRhY2htZW50RWxlbWVudD4g
SFRNTEF0dGFjaG1lbnRFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGEKIAog
UmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxBdHRhY2htZW50RWxlbWVudDo6Y3JlYXRlRWxl
bWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBv
c2l0aW9uJikKIHsKLSAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyQXR0YWNobWVudD4o
KnRoaXMsIFdURjo6bW92ZShzdHlsZSkpOworICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5k
ZXJBdHRhY2htZW50PigqdGhpcywgV1RGTW92ZShzdHlsZSkpOwogfQogCiBGaWxlKiBIVE1MQXR0
YWNobWVudEVsZW1lbnQ6OmZpbGUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQlJFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJSRWxlbWVu
dC5jcHAKaW5kZXggNWJiY2ZmN2Y0YzMyMTM4ZDI2ZjA1Zjc1OGI5OGQ1MDdmNDhkODdlNi4uOWEx
ODJiZWIxYWM1NTc3NmVhM2RjODdhN2NlODU2MDdlOWRlMzkxMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQlJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxCUkVsZW1lbnQuY3BwCkBAIC03Myw5ICs3Myw5IEBAIHZvaWQgSFRNTEJSRWxlbWVudDo6
Y29sbGVjdFN0eWxlRm9yUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
IG5hCiBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRNTEJSRWxlbWVudDo6Y3JlYXRlRWxlbWVu
dFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0
aW9uJikKIHsKICAgICBpZiAoc3R5bGUuZ2V0KCkuaGFzQ29udGVudCgpKQotICAgICAgICByZXR1
cm4gUmVuZGVyRWxlbWVudDo6Y3JlYXRlRm9yKCp0aGlzLCBXVEY6Om1vdmUoc3R5bGUpKTsKKyAg
ICAgICAgcmV0dXJuIFJlbmRlckVsZW1lbnQ6OmNyZWF0ZUZvcigqdGhpcywgV1RGTW92ZShzdHls
ZSkpOwogCi0gICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlckxpbmVCcmVhaz4oKnRoaXMs
IFdURjo6bW92ZShzdHlsZSkpOworICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJMaW5l
QnJlYWs+KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEJvZHlFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEJvZHlFbGVtZW50LmNwcAppbmRleCA0ZGY2ZTJiMDMyYjVkODJkZTQwYzhjNDc3YjVkM2U0
NjY4MzYwNTZiLi43NzI1ODYwMzc0MzYzMTkzNGM1ZWM4NGRkMTgwNDI3YjhhYzhmMjc2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCb2R5RWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MQm9keUVsZW1lbnQuY3BwCkBAIC04Miw3ICs4Miw3IEBAIHZv
aWQgSFRNTEJvZHlFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYKICAgICAgICAgaWYgKCF1cmwuaXNFbXB0eSgpKSB7CiAgICAg
ICAgICAgICBhdXRvIGltYWdlVmFsdWUgPSBDU1NJbWFnZVZhbHVlOjpjcmVhdGUoZG9jdW1lbnQo
KS5jb21wbGV0ZVVSTCh1cmwpLnN0cmluZygpKTsKICAgICAgICAgICAgIGltYWdlVmFsdWUuZ2V0
KCkuc2V0SW5pdGlhdG9yKGxvY2FsTmFtZSgpKTsKLSAgICAgICAgICAgIHN0eWxlLnNldFByb3Bl
cnR5KENTU1Byb3BlcnR5KENTU1Byb3BlcnR5QmFja2dyb3VuZEltYWdlLCBXVEY6Om1vdmUoaW1h
Z2VWYWx1ZSkpKTsKKyAgICAgICAgICAgIHN0eWxlLnNldFByb3BlcnR5KENTU1Byb3BlcnR5KENT
U1Byb3BlcnR5QmFja2dyb3VuZEltYWdlLCBXVEZNb3ZlKGltYWdlVmFsdWUpKSk7CiAgICAgICAg
IH0KICAgICB9IGVsc2UgaWYgKG5hbWUgPT0gbWFyZ2lud2lkdGhBdHRyIHx8IG5hbWUgPT0gbGVm
dG1hcmdpbkF0dHIpIHsKICAgICAgICAgYWRkSFRNTExlbmd0aFRvU3R5bGUoc3R5bGUsIENTU1By
b3BlcnR5TWFyZ2luUmlnaHQsIHZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEJ1dHRvbkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQnV0dG9u
RWxlbWVudC5jcHAKaW5kZXggOTYzZmQ4MGM2ZTFhOGZkZDU5YTJlYmNmZjFjYjc5MmNjYjU5ODdl
YS4uMmU3M2RlZDM4ZDJhOGRmZDc5MDdlYzk2ZjViN2QxMzU1NTcxYjg1YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQnV0dG9uRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MQnV0dG9uRWxlbWVudC5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgdm9pZCBI
VE1MQnV0dG9uRWxlbWVudDo6c2V0VHlwZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUpCiAKIFJl
bmRlclB0cjxSZW5kZXJFbGVtZW50PiBIVE1MQnV0dG9uRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJl
bmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9u
JikKIHsKLSAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyQnV0dG9uPigqdGhpcywgV1RG
Ojptb3ZlKHN0eWxlKSk7CisgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlckJ1dHRvbj4o
KnRoaXMsIFdURk1vdmUoc3R5bGUpKTsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBIVE1MQnV0
dG9uRWxlbWVudDo6Zm9ybUNvbnRyb2xUeXBlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQ2FudmFzRWxlbWVudC5jcHAKaW5kZXggMmM4MzNjNTI2Njg1MTZmMmYwODYyZjFiYTkxNTBl
ODJlNTlmMTY0MC4uZmI5ZDJjMTE4ZWY3ZmQ1OTRkNGJkNTZiZjI4NDE4MDgzYTBkMGMxYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKQEAgLTEzMywxMSArMTMz
LDExIEBAIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBIVE1MQ2FudmFzRWxlbWVudDo6Y3JlYXRl
RWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsCiAgICAgRnJhbWUqIGZyYW1lID0gZG9jdW1l
bnQoKS5mcmFtZSgpOwogICAgIGlmIChmcmFtZSAmJiBmcmFtZS0+c2NyaXB0KCkuY2FuRXhlY3V0
ZVNjcmlwdHMoTm90QWJvdXRUb0V4ZWN1dGVTY3JpcHQpKSB7CiAgICAgICAgIG1fcmVuZGVyZXJJ
c0NhbnZhcyA9IHRydWU7Ci0gICAgICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJIVE1M
Q2FudmFzPigqdGhpcywgV1RGOjptb3ZlKHN0eWxlKSk7CisgICAgICAgIHJldHVybiBjcmVhdGVS
ZW5kZXJlcjxSZW5kZXJIVE1MQ2FudmFzPigqdGhpcywgV1RGTW92ZShzdHlsZSkpOwogICAgIH0K
IAogICAgIG1fcmVuZGVyZXJJc0NhbnZhcyA9IGZhbHNlOwotICAgIHJldHVybiBIVE1MRWxlbWVu
dDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFdURjo6bW92ZShzdHlsZSksIGluc2VydGlvblBvc2l0
aW9uKTsKKyAgICByZXR1cm4gSFRNTEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihXVEZN
b3ZlKHN0eWxlKSwgaW5zZXJ0aW9uUG9zaXRpb24pOwogfQogCiBib29sIEhUTUxDYW52YXNFbGVt
ZW50OjpjYW5Db250YWluUmFuZ2VFbmRQb2ludCgpIGNvbnN0CkBAIC02NTYsNyArNjU2LDcgQEAg
dm9pZCBIVE1MQ2FudmFzRWxlbWVudDo6c2V0SW1hZ2VCdWZmZXIoc3RkOjp1bmlxdWVfcHRyPElt
YWdlQnVmZmVyPiBidWZmZXIpIGNvbnMKIHsKICAgICByZW1vdmVGcm9tQWN0aXZlUGl4ZWxNZW1v
cnkobWVtb3J5Q29zdCgpKTsKIAotICAgIG1faW1hZ2VCdWZmZXIgPSBXVEY6Om1vdmUoYnVmZmVy
KTsKKyAgICBtX2ltYWdlQnVmZmVyID0gV1RGTW92ZShidWZmZXIpOwogCiAgICAgYWN0aXZlUGl4
ZWxNZW1vcnkgKz0gbWVtb3J5Q29zdCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQ29sbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0
aW9uLmNwcAppbmRleCBlNzgwMWJmNzFjMTI4MThhYWYxOGFkNmFkY2UzYTU3NmY3YjhhYmRkLi42
YTJmMTVmNmQwOTBkZTU5NjhmYzljNWM5ZTJiNzllOWVlYWNmNGY2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxDb2xsZWN0aW9uLmNwcApAQCAtMTk1LDcgKzE5NSw3IEBAIHZvaWQgSFRNTENvbGxl
Y3Rpb246OnVwZGF0ZU5hbWVkRWxlbWVudENhY2hlKCkgY29uc3QKICAgICAgICAgICAgIGNhY2hl
LT5hcHBlbmRUb05hbWVDYWNoZShuYW1lLCBlbGVtZW50KTsKICAgICB9CiAKLSAgICBzZXROYW1l
ZEl0ZW1DYWNoZShXVEY6Om1vdmUoY2FjaGUpKTsKKyAgICBzZXROYW1lZEl0ZW1DYWNoZShXVEZN
b3ZlKGNhY2hlKSk7CiB9CiAKIFZlY3RvcjxSZWY8RWxlbWVudD4+IEhUTUxDb2xsZWN0aW9uOjpu
YW1lZEl0ZW1zKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkgY29uc3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTENvbGxlY3Rpb24uaAppbmRleCA4MTFhNDE4ZTE4MzFjYjlkYmY3NzM3MDRmYmM5NTE0NmM5
ZTc1ZWIwLi5iN2Y0Zjc4N2QxNTVhOTUzMWM1MGJkNDA5OTJmNjY5NTk3ZjUyMzkzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5oCkBAIC0yMTQsNyArMjE0LDcgQEAgaW5saW5lIHZv
aWQgSFRNTENvbGxlY3Rpb246OnNldE5hbWVkSXRlbUNhY2hlKHN0ZDo6dW5pcXVlX3B0cjxDb2xs
ZWN0aW9uTmFtZWRFbGUKICAgICBBU1NFUlQoY2FjaGUpOwogICAgIEFTU0VSVCghbV9uYW1lZEVs
ZW1lbnRDYWNoZSk7CiAgICAgY2FjaGUtPmRpZFBvcHVsYXRlKCk7Ci0gICAgbV9uYW1lZEVsZW1l
bnRDYWNoZSA9IFdURjo6bW92ZShjYWNoZSk7CisgICAgbV9uYW1lZEVsZW1lbnRDYWNoZSA9IFdU
Rk1vdmUoY2FjaGUpOwogICAgIGRvY3VtZW50KCkuY29sbGVjdGlvbkNhY2hlZElkTmFtZU1hcCgq
dGhpcyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERldGFpbHNF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERldGFpbHNFbGVtZW50LmNwcApp
bmRleCBlODQ5OWE4ZTAyNDU0Y2Q3ZWY2YTMzMWQyNmM1OWU2Zjk2OTc3NWViLi40Y2U0OTFlMDZl
MTBlYTdlMDA3OWY1MzY4Mjg0YjQxMmE2MmMyNGFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxEZXRhaWxzRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRGV0YWlsc0VsZW1lbnQuY3BwCkBAIC03OCw3ICs3OCw3IEBAIEhUTUxEZXRhaWxzRWxlbWVu
dDo6SFRNTERldGFpbHNFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3Vt
ZW50JiBkCiAKIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBIVE1MRGV0YWlsc0VsZW1lbnQ6OmNy
ZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUsIGNvbnN0IFJlbmRl
clRyZWVQb3NpdGlvbiYpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlckJsb2Nr
Rmxvdz4oKnRoaXMsIFdURjo6bW92ZShzdHlsZSkpOworICAgIHJldHVybiBjcmVhdGVSZW5kZXJl
cjxSZW5kZXJCbG9ja0Zsb3c+KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7CiB9CiAKIHZvaWQgSFRN
TERldGFpbHNFbGVtZW50OjpkaWRBZGRVc2VyQWdlbnRTaGFkb3dSb290KFNoYWRvd1Jvb3QqIHJv
b3QpCkBAIC05MSwxMSArOTEsMTEgQEAgdm9pZCBIVE1MRGV0YWlsc0VsZW1lbnQ6OmRpZEFkZFVz
ZXJBZ2VudFNoYWRvd1Jvb3QoU2hhZG93Um9vdCogcm9vdCkKICAgICBkZWZhdWx0U3VtbWFyeS0+
YXBwZW5kQ2hpbGQoVGV4dDo6Y3JlYXRlKGRvY3VtZW50KCksIGRlZmF1bHREZXRhaWxzU3VtbWFy
eVRleHQoKSksIEFTU0VSVF9OT19FWENFUFRJT04pOwogICAgIG1fZGVmYXVsdFN1bW1hcnkgPSBk
ZWZhdWx0U3VtbWFyeS5wdHIoKTsKIAotICAgIHN1bW1hcnlTbG90LT5hcHBlbmRDaGlsZChXVEY6
Om1vdmUoZGVmYXVsdFN1bW1hcnkpKTsKLSAgICByb290LT5hcHBlbmRDaGlsZChXVEY6Om1vdmUo
c3VtbWFyeVNsb3QpKTsKKyAgICBzdW1tYXJ5U2xvdC0+YXBwZW5kQ2hpbGQoV1RGTW92ZShkZWZh
dWx0U3VtbWFyeSkpOworICAgIHJvb3QtPmFwcGVuZENoaWxkKFdURk1vdmUoc3VtbWFyeVNsb3Qp
KTsKIAogICAgIGF1dG8gZGVmYXVsdFNsb3QgPSBIVE1MU2xvdEVsZW1lbnQ6OmNyZWF0ZShzbG90
VGFnLCBkb2N1bWVudCgpKTsKLSAgICByb290LT5hcHBlbmRDaGlsZChXVEY6Om1vdmUoZGVmYXVs
dFNsb3QpKTsKKyAgICByb290LT5hcHBlbmRDaGlsZChXVEZNb3ZlKGRlZmF1bHRTbG90KSk7CiB9
CiAKIGJvb2wgSFRNTERldGFpbHNFbGVtZW50Ojppc0FjdGl2ZVN1bW1hcnkoY29uc3QgSFRNTFN1
bW1hcnlFbGVtZW50JiBzdW1tYXJ5KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNw
cAppbmRleCAwZDJiZjg3NTRjYTIyMWM1ZDAxZmY0ZWZlOGE0NThhMzg2ODQ0YzYzLi43OTJkMmY2
NDUxYmNmNDJiNDQ3ZmRiMDMxN2VkNDg1MzVjOWU4OWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxF
bGVtZW50LmNwcApAQCAtMzg2LDcgKzM4Niw3IEBAIHZvaWQgSFRNTEVsZW1lbnQ6OnBvcHVsYXRl
RXZlbnRIYW5kbGVyTmFtZU1hcChFdmVudEhhbmRsZXJOYW1lTWFwJiBtYXAsIGNvbnN0IFF1CiAg
ICAgICAgIC8vIHVzaW5nIHBvaW50ZXJzIGZyb20gZXZlbnROYW1lcygpLCB0aGUgcGFzc2VkLWlu
IHRhYmxlIGNhbiBiZSBpbml0aWFsaXplZCBhdCBjb21waWxlIHRpbWUuCiAgICAgICAgIEF0b21p
Y1N0cmluZyBldmVudE5hbWUgPSBhdHRyaWJ1dGVOYW1lLnN0cmluZygpLnN1YnN0cmluZygyKTsK
IAotICAgICAgICBtYXAuYWRkKGF0dHJpYnV0ZU5hbWUuaW1wbCgpLCBXVEY6Om1vdmUoZXZlbnRO
YW1lKSk7CisgICAgICAgIG1hcC5hZGQoYXR0cmlidXRlTmFtZS5pbXBsKCksIFdURk1vdmUoZXZl
bnROYW1lKSk7CiAgICAgfQogfQogCkBAIC01ODgsNyArNTg4LDcgQEAgdm9pZCBIVE1MRWxlbWVu
dDo6c2V0SW5uZXJUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgRXhjZXB0aW9uQ29kZSYgZWMpCiAg
ICAgZWMgPSAwOwogICAgIFJlZjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IHRleHRUb0Zy
YWdtZW50KHRleHQsIGVjKTsKICAgICBpZiAoIWVjKQotICAgICAgICByZXBsYWNlQ2hpbGRyZW5X
aXRoRnJhZ21lbnQoKnRoaXMsIFdURjo6bW92ZShmcmFnbWVudCksIGVjKTsKKyAgICAgICAgcmVw
bGFjZUNoaWxkcmVuV2l0aEZyYWdtZW50KCp0aGlzLCBXVEZNb3ZlKGZyYWdtZW50KSwgZWMpOwog
fQogCiB2b2lkIEhUTUxFbGVtZW50OjpzZXRPdXRlclRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBF
eGNlcHRpb25Db2RlJiBlYykKQEAgLTg3OCw3ICs4NzgsNyBAQCBib29sIEhUTUxFbGVtZW50Ojpy
ZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKIAogUmVuZGVyUHRyPFJl
bmRlckVsZW1lbnQ+IEhUTUxFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRl
clN0eWxlPiYmIHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQogewotICAgIHJldHVy
biBSZW5kZXJFbGVtZW50OjpjcmVhdGVGb3IoKnRoaXMsIFdURjo6bW92ZShzdHlsZSkpOworICAg
IHJldHVybiBSZW5kZXJFbGVtZW50OjpjcmVhdGVGb3IoKnRoaXMsIFdURk1vdmUoc3R5bGUpKTsK
IH0KIAogSFRNTEZvcm1FbGVtZW50KiBIVE1MRWxlbWVudDo6dmlydHVhbEZvcm0oKSBjb25zdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZpZWxkU2V0RWxlbWVudC5jcHAKaW5kZXggMjYwZWY2
ODhiMzc0YzY1MmUzZTExYmFhYTU1ZjE2YzNlYzk0NDFkMS4uOTE2MmFmYzZjNDViZDg2OGE5ZDI1
ODBhNmM4MTY0N2JlMWRkNGYwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RmllbGRTZXRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGaWVsZFNl
dEVsZW1lbnQuY3BwCkBAIC0xNTIsNyArMTUyLDcgQEAgY29uc3QgQXRvbWljU3RyaW5nJiBIVE1M
RmllbGRTZXRFbGVtZW50Ojpmb3JtQ29udHJvbFR5cGUoKSBjb25zdAogCiBSZW5kZXJQdHI8UmVu
ZGVyRWxlbWVudD4gSFRNTEZpZWxkU2V0RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJl
ZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKIHsKLSAg
ICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyRmllbGRzZXQ+KCp0aGlzLCBXVEY6Om1vdmUo
c3R5bGUpKTsKKyAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyRmllbGRzZXQ+KCp0aGlz
LCBXVEZNb3ZlKHN0eWxlKSk7CiB9CiAKIEhUTUxMZWdlbmRFbGVtZW50KiBIVE1MRmllbGRTZXRF
bGVtZW50OjpsZWdlbmQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1D
b250cm9sRWxlbWVudC5jcHAKaW5kZXggODczZTM3NTcxYzA3MGFmODlmMTYwZTQ0M2EyMzBiZTE1
MTg0YmJlYS4uMDBlYTFmMGI0NjcwZDkxMWE2OGVmZjJmOTVmOWViZjNkMjg2ZTFhMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCkBAIC01MzMs
NyArNTMzLDcgQEAgYm9vbCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50Ojp2YWxpZGF0aW9uTWVzc2Fn
ZVNoYWRvd1RyZWVDb250YWlucyhjb25zdCBOb2RlJiBub2QKIAogdm9pZCBIVE1MRm9ybUNvbnRy
b2xFbGVtZW50OjpkaXNwYXRjaEJsdXJFdmVudChSZWZQdHI8RWxlbWVudD4mJiBuZXdGb2N1c2Vk
RWxlbWVudCkKIHsKLSAgICBIVE1MRWxlbWVudDo6ZGlzcGF0Y2hCbHVyRXZlbnQoV1RGOjptb3Zl
KG5ld0ZvY3VzZWRFbGVtZW50KSk7CisgICAgSFRNTEVsZW1lbnQ6OmRpc3BhdGNoQmx1ckV2ZW50
KFdURk1vdmUobmV3Rm9jdXNlZEVsZW1lbnQpKTsKICAgICBoaWRlVmlzaWJsZVZhbGlkYXRpb25N
ZXNzYWdlKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1D
b250cm9sc0NvbGxlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRy
b2xzQ29sbGVjdGlvbi5jcHAKaW5kZXggODQwMmFhNjdlNThmNWVmNzljMDI2NDliOGI1M2NhM2M0
MDg4Nzc5Ni4uMmI1NDA5MzY3Zjk2NDk0ZmM0MjMwMzBkMjBkYjk5OTZjMGNhMjM2ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5jcHAK
QEAgLTEzOCw3ICsxMzgsNyBAQCB2b2lkIEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uOjp1cGRh
dGVOYW1lZEVsZW1lbnRDYWNoZSgpIGNvbnN0CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBzZXRO
YW1lZEl0ZW1DYWNoZShXVEY6Om1vdmUoY2FjaGUpKTsKKyAgICBzZXROYW1lZEl0ZW1DYWNoZShX
VEZNb3ZlKGNhY2hlKSk7CiB9CiAKIHZvaWQgSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246Omlu
dmFsaWRhdGVDYWNoZShEb2N1bWVudCYgZG9jdW1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RnJhbWVFbGVtZW50LmNwcAppbmRleCBhZjFhNTIyYmNhYzkyMzQyOGEwNTlhMDFlMmRhZDlmY2I3
Y2Y1YzBkLi5lZjBkYTM4ZDE4MGQ2ZjVjOTdjNTlhNmM0ZTQ5OGE5Y2RhMTdkNTY2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudC5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgYm9v
bCBIVE1MRnJhbWVFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJikK
IAogUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxGcmFtZUVsZW1lbnQ6OmNyZWF0ZUVsZW1l
bnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3Np
dGlvbiYpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlckZyYW1lPigqdGhpcywg
V1RGOjptb3ZlKHN0eWxlKSk7CisgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlckZyYW1l
PigqdGhpcywgV1RGTW92ZShzdHlsZSkpOwogfQogCiBib29sIEhUTUxGcmFtZUVsZW1lbnQ6Om5v
UmVzaXplKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1l
U2V0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQu
Y3BwCmluZGV4IDFiN2RkMThkNGY3MDQ2ZmVmODI5MDAyZjc3MDdjYWNhMDBjNDlmOTIuLmRiODY5
N2Y0ZGZhMDZiNjU2Y2Q3MzRkYzVkOTgxZWU4NGZmMWI1ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmNwcApAQCAtMTYwLDkgKzE2MCw5IEBAIGJvb2wgSFRN
TEZyYW1lU2V0RWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChjb25zdCBSZW5kZXJTdHlsZSYgc3R5
bGUpCiBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRNTEZyYW1lU2V0RWxlbWVudDo6Y3JlYXRl
RWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSwgY29uc3QgUmVuZGVyVHJl
ZVBvc2l0aW9uJikKIHsKICAgICBpZiAoc3R5bGUuZ2V0KCkuaGFzQ29udGVudCgpKQotICAgICAg
ICByZXR1cm4gUmVuZGVyRWxlbWVudDo6Y3JlYXRlRm9yKCp0aGlzLCBXVEY6Om1vdmUoc3R5bGUp
KTsKKyAgICAgICAgcmV0dXJuIFJlbmRlckVsZW1lbnQ6OmNyZWF0ZUZvcigqdGhpcywgV1RGTW92
ZShzdHlsZSkpOwogICAgIAotICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJGcmFtZVNl
dD4oKnRoaXMsIFdURjo6bW92ZShzdHlsZSkpOworICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxS
ZW5kZXJGcmFtZVNldD4oKnRoaXMsIFdURk1vdmUoc3R5bGUpKTsKIH0KIAogSFRNTEZyYW1lU2V0
RWxlbWVudCogSFRNTEZyYW1lU2V0RWxlbWVudDo6ZmluZENvbnRhaW5pbmcoRWxlbWVudCogZGVz
Y2VuZGFudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5jcHAKaW5kZXgg
ZmFhOTYzZDA2YTNkMzc0YTE3MTVkN2FkMmE0NTk3NDM3OTg4OGNhYi4uZmI3OGVhYTg5ZWM3YTgz
OWZjM2M1OWMyYjI1ZTgzNTNlYTE5OGQxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MSUZyYW1lRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZy
YW1lRWxlbWVudC5jcHAKQEAgLTEwMiw3ICsxMDIsNyBAQCBib29sIEhUTUxJRnJhbWVFbGVtZW50
OjpyZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKIAogUmVuZGVyUHRy
PFJlbmRlckVsZW1lbnQ+IEhUTUxJRnJhbWVFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIo
UmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQogewot
ICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJJRnJhbWU+KCp0aGlzLCBXVEY6Om1vdmUo
c3R5bGUpKTsKKyAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVySUZyYW1lPigqdGhpcywg
V1RGTW92ZShzdHlsZSkpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxJbWFnZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVt
ZW50LmNwcAppbmRleCA2NTg3ZTZlMWJlNWNhN2E3NWI5OWU2MjU3YmVmMWYxMGE4YzBmNGMwLi43
ZmI4OTNlNzRhMDhjNDZjNGQ5MDYwYzY4Mzc1NGMzMjJlMTNlMjFmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKQEAgLTI1Nyw5ICsyNTcsOSBAQCBjb25zdCBBdG9t
aWNTdHJpbmcmIEhUTUxJbWFnZUVsZW1lbnQ6OmFsdFRleHQoKSBjb25zdAogUmVuZGVyUHRyPFJl
bmRlckVsZW1lbnQ+IEhUTUxJbWFnZUVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8
UmVuZGVyU3R5bGU+JiYgc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCiB7CiAgICAg
aWYgKHN0eWxlLmdldCgpLmhhc0NvbnRlbnQoKSkKLSAgICAgICAgcmV0dXJuIFJlbmRlckVsZW1l
bnQ6OmNyZWF0ZUZvcigqdGhpcywgV1RGOjptb3ZlKHN0eWxlKSk7CisgICAgICAgIHJldHVybiBS
ZW5kZXJFbGVtZW50OjpjcmVhdGVGb3IoKnRoaXMsIFdURk1vdmUoc3R5bGUpKTsKIAotICAgIHJl
dHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJJbWFnZT4oKnRoaXMsIFdURjo6bW92ZShzdHlsZSks
IG51bGxwdHIsIG1faW1hZ2VEZXZpY2VQaXhlbFJhdGlvKTsKKyAgICByZXR1cm4gY3JlYXRlUmVu
ZGVyZXI8UmVuZGVySW1hZ2U+KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSwgbnVsbHB0ciwgbV9pbWFn
ZURldmljZVBpeGVsUmF0aW8pOwogfQogCiBib29sIEhUTUxJbWFnZUVsZW1lbnQ6OmNhblN0YXJ0
U2VsZWN0aW9uKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElu
cHV0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3Bw
CmluZGV4IDk3MDY5NDFmNGE0YjRjYjdlOGJkYTUwNWNhNGEyYWI1MWViZTNjNTkuLjE5N2M0M2M4
YWQ0NzkxZTdjYzE4MzhlMmNjMmNiYjQ0NjE1NmYzMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MSW5wdXRFbGVtZW50LmNwcApAQCAtNDY0LDcgKzQ2NCw3IEBAIHZvaWQgSFRNTElucHV0RWxl
bWVudDo6dXBkYXRlVHlwZSgpCiAKICAgICBtX2lucHV0VHlwZS0+ZGVzdHJveVNoYWRvd1N1YnRy
ZWUoKTsKIAotICAgIG1faW5wdXRUeXBlID0gV1RGOjptb3ZlKG5ld1R5cGUpOworICAgIG1faW5w
dXRUeXBlID0gV1RGTW92ZShuZXdUeXBlKTsKICAgICBtX2lucHV0VHlwZS0+Y3JlYXRlU2hhZG93
U3VidHJlZSgpOwogICAgIHVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eSgpOwogCkBA
IC03NjUsNyArNzY1LDcgQEAgYm9vbCBIVE1MSW5wdXRFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVk
KGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKIAogUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhU
TUxJbnB1dEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYg
c3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCiB7Ci0gICAgcmV0dXJuIG1faW5wdXRU
eXBlLT5jcmVhdGVJbnB1dFJlbmRlcmVyKFdURjo6bW92ZShzdHlsZSkpOworICAgIHJldHVybiBt
X2lucHV0VHlwZS0+Y3JlYXRlSW5wdXRSZW5kZXJlcihXVEZNb3ZlKHN0eWxlKSk7CiB9CiAKIHZv
aWQgSFRNTElucHV0RWxlbWVudDo6d2lsbEF0dGFjaFJlbmRlcmVycygpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxLZXlnZW5FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEtleWdlbkVsZW1lbnQuY3BwCmluZGV4IDdiZTAyZTY0NmE5NzU0Y2U5ZjAzMWEy
YTIwOWNmYWZhNjE2MDJlZmUuLmFhMDkxZmI4OGQ1NzIzODdmZWYyNGJhNGYyZDM0OTIyMjgzYThl
MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEtleWdlbkVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEtleWdlbkVsZW1lbnQuY3BwCkBAIC04MCw3
ICs4MCw3IEBAIGlubGluZSBIVE1MS2V5Z2VuRWxlbWVudDo6SFRNTEtleWdlbkVsZW1lbnQoY29u
c3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lCiAgICAgICAgIG9wdGlvbi0+YXBwZW5k
Q2hpbGQoVGV4dDo6Y3JlYXRlKGRvY3VtZW50LCBrZXkpLCBJR05PUkVfRVhDRVBUSU9OKTsKICAg
ICB9CiAKLSAgICBlbnN1cmVVc2VyQWdlbnRTaGFkb3dSb290KCkuYXBwZW5kQ2hpbGQoV1RGOjpt
b3ZlKHNlbGVjdCksIElHTk9SRV9FWENFUFRJT04pOworICAgIGVuc3VyZVVzZXJBZ2VudFNoYWRv
d1Jvb3QoKS5hcHBlbmRDaGlsZChXVEZNb3ZlKHNlbGVjdCksIElHTk9SRV9FWENFUFRJT04pOwog
fQogCiBSZWY8SFRNTEtleWdlbkVsZW1lbnQ+IEhUTUxLZXlnZW5FbGVtZW50OjpjcmVhdGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50LCBIVE1MRm9ybUVs
ZW1lbnQqIGZvcm0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAKaW5kZXgg
NDA0NTQzOTNmMTI5ZDZjNGY3OTc0MzQ1Y2E0ZGRkZWI2YzE3ZjU2MS4uYjU4MzIyM2Q4MDAzZDFk
YmE5YWRhMDhhYWQ4ZTZkMWZjY2MxNjFmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTGlua0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtF
bGVtZW50LmNwcApAQCAtMzU1LDcgKzM1NSw3IEBAIHZvaWQgSFRNTExpbmtFbGVtZW50OjpzZXRD
U1NTdHlsZVNoZWV0KGNvbnN0IFN0cmluZyYgaHJlZiwgY29uc3QgVVJMJiBiYXNlVVJMLCBjCiAg
ICAgc3R5bGVTaGVldC5nZXQoKS5jaGVja0xvYWRlZCgpOwogCiAgICAgaWYgKHN0eWxlU2hlZXQu
Z2V0KCkuaXNDYWNoZWFibGUoKSkKLSAgICAgICAgY29uc3RfY2FzdDxDYWNoZWRDU1NTdHlsZVNo
ZWV0Kj4oY2FjaGVkU3R5bGVTaGVldCktPnNhdmVQYXJzZWRTdHlsZVNoZWV0KFdURjo6bW92ZShz
dHlsZVNoZWV0KSk7CisgICAgICAgIGNvbnN0X2Nhc3Q8Q2FjaGVkQ1NTU3R5bGVTaGVldCo+KGNh
Y2hlZFN0eWxlU2hlZXQpLT5zYXZlUGFyc2VkU3R5bGVTaGVldChXVEZNb3ZlKHN0eWxlU2hlZXQp
KTsKIH0KIAogYm9vbCBIVE1MTGlua0VsZW1lbnQ6OnN0eWxlU2hlZXRJc0xvYWRpbmcoKSBjb25z
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggM2VhZjFhZmFl
MzFkYzQwMmUxNjcyMjEyN2Q0NTQzNjBlMGM2NDQ3OS4uODVhMjQ3YzI0YmY0MzhiZTlmNGY2Yzhi
NzNhNWM3MmVhODAyZTM0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
Y3BwCkBAIC03MDAsNyArNzAwLDcgQEAgYm9vbCBIVE1MTWVkaWFFbGVtZW50OjpyZW5kZXJlcklz
TmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKIAogUmVuZGVyUHRyPFJlbmRlckVsZW1l
bnQ+IEhUTUxNZWRpYUVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5
bGU+JiYgc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCiB7Ci0gICAgcmV0dXJuIGNy
ZWF0ZVJlbmRlcmVyPFJlbmRlck1lZGlhPigqdGhpcywgV1RGOjptb3ZlKHN0eWxlKSk7CisgICAg
cmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlck1lZGlhPigqdGhpcywgV1RGTW92ZShzdHlsZSkp
OwogfQogCiBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OmNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIo
Y29uc3QgTm9kZSYgY2hpbGQpIGNvbnN0CkBAIC01MTYyLDEwICs1MTYyLDEwIEBAIGJvb2wgSFRN
TE1lZGlhRWxlbWVudDo6ZGlzcGF0Y2hFdmVudChFdmVudCYgZXZlbnQpCiBib29sIEhUTUxNZWRp
YUVsZW1lbnQ6OmFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUs
IFJlZlB0cjxFdmVudExpc3RlbmVyPiYmIGxpc3RlbmVyLCBib29sIHVzZUNhcHR1cmUpCiB7CiAg
ICAgaWYgKGV2ZW50VHlwZSAhPSBldmVudE5hbWVzKCkud2Via2l0cGxheWJhY2t0YXJnZXRhdmFp
bGFiaWxpdHljaGFuZ2VkRXZlbnQpCi0gICAgICAgIHJldHVybiBOb2RlOjphZGRFdmVudExpc3Rl
bmVyKGV2ZW50VHlwZSwgV1RGOjptb3ZlKGxpc3RlbmVyKSwgdXNlQ2FwdHVyZSk7CisgICAgICAg
IHJldHVybiBOb2RlOjphZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgV1RGTW92ZShsaXN0ZW5l
ciksIHVzZUNhcHR1cmUpOwogCiAgICAgYm9vbCBpc0ZpcnN0QXZhaWxhYmlsaXR5Q2hhbmdlZExp
c3RlbmVyID0gIWhhc0V2ZW50TGlzdGVuZXJzKGV2ZW50TmFtZXMoKS53ZWJraXRwbGF5YmFja3Rh
cmdldGF2YWlsYWJpbGl0eWNoYW5nZWRFdmVudCk7Ci0gICAgaWYgKCFOb2RlOjphZGRFdmVudExp
c3RlbmVyKGV2ZW50VHlwZSwgV1RGOjptb3ZlKGxpc3RlbmVyKSwgdXNlQ2FwdHVyZSkpCisgICAg
aWYgKCFOb2RlOjphZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgV1RGTW92ZShsaXN0ZW5lciks
IHVzZUNhcHR1cmUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoaXNGaXJzdEF2
YWlsYWJpbGl0eUNoYW5nZWRMaXN0ZW5lcikgewpAQCAtNTIxMiw3ICs1MjEyLDcgQEAgdm9pZCBI
VE1MTWVkaWFFbGVtZW50OjpzZXRXaXJlbGVzc1BsYXliYWNrVGFyZ2V0KFJlZjxNZWRpYVBsYXli
YWNrVGFyZ2V0PiYmIGRldmkKIHsKICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50Ojpz
ZXRXaXJlbGVzc1BsYXliYWNrVGFyZ2V0KCVwKSIsIHRoaXMpOwogICAgIGlmIChtX3BsYXllcikK
LSAgICAgICAgbV9wbGF5ZXItPnNldFdpcmVsZXNzUGxheWJhY2tUYXJnZXQoV1RGOjptb3ZlKGRl
dmljZSkpOworICAgICAgICBtX3BsYXllci0+c2V0V2lyZWxlc3NQbGF5YmFja1RhcmdldChXVEZN
b3ZlKGRldmljZSkpOwogfQogCiBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OmNhblBsYXlUb1dpcmVs
ZXNzUGxheWJhY2tUYXJnZXQoKSBjb25zdApAQCAtNjExMiw3ICs2MTEyLDcgQEAgQ2FjaGVkUmVz
b3VyY2VMb2FkZXIqIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyQ2FjaGVkUmVzb3VyY2VM
b2FkZXIoKQogCiBSZWZQdHI8UGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyPiBIVE1MTWVkaWFF
bGVtZW50OjptZWRpYVBsYXllckNyZWF0ZVJlc291cmNlTG9hZGVyKHN0ZDo6dW5pcXVlX3B0cjxQ
bGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXJDbGllbnQ+IGNsaWVudCkKIHsKLSAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBNZWRpYVJlc291cmNlTG9hZGVyKGRvY3VtZW50KCksIGZhc3RHZXRBdHRy
aWJ1dGUoSFRNTE5hbWVzOjpjcm9zc29yaWdpbkF0dHIpLCBXVEY6Om1vdmUoY2xpZW50KSkpOwor
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1lZGlhUmVzb3VyY2VMb2FkZXIoZG9jdW1lbnQoKSwg
ZmFzdEdldEF0dHJpYnV0ZShIVE1MTmFtZXM6OmNyb3Nzb3JpZ2luQXR0ciksIFdURk1vdmUoY2xp
ZW50KSkpOwogfQogCiBib29sIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyU2hvdWxkV2Fp
dEZvclJlc3BvbnNlVG9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjb25zdCBBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSYgY2hhbGxlbmdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWV0ZXJFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1ldGVyRWxlbWVu
dC5jcHAKaW5kZXggZTVlM2RlMDM2ODM4MTU0NWVhNzg1MGMwOGY5NmE3ZjFiYzA3NTk5ZS4uMzZk
MjdhNzJiODEyYWM3ZGEyYmU4YmMwZGVmMWQ1YTY4NTdiMGI5YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWV0ZXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZXRlckVsZW1lbnQuY3BwCkBAIC02MCw5ICs2MCw5IEBAIFJlZjxIVE1MTWV0ZXJF
bGVtZW50PiBIVE1MTWV0ZXJFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFn
TmFtZSwgRG9jCiBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRNTE1ldGVyRWxlbWVudDo6Y3Jl
YXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSwgY29uc3QgUmVuZGVy
VHJlZVBvc2l0aW9uJikKIHsKICAgICBpZiAoIWRvY3VtZW50KCkucGFnZSgpLT50aGVtZSgpLnN1
cHBvcnRzTWV0ZXIoc3R5bGUuZ2V0KCkuYXBwZWFyYW5jZSgpKSkKLSAgICAgICAgcmV0dXJuIFJl
bmRlckVsZW1lbnQ6OmNyZWF0ZUZvcigqdGhpcywgV1RGOjptb3ZlKHN0eWxlKSk7CisgICAgICAg
IHJldHVybiBSZW5kZXJFbGVtZW50OjpjcmVhdGVGb3IoKnRoaXMsIFdURk1vdmUoc3R5bGUpKTsK
IAotICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJNZXRlcj4oKnRoaXMsIFdURjo6bW92
ZShzdHlsZSkpOworICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJNZXRlcj4oKnRoaXMs
IFdURk1vdmUoc3R5bGUpKTsKIH0KIAogYm9vbCBIVE1MTWV0ZXJFbGVtZW50OjpjaGlsZFNob3Vs
ZENyZWF0ZVJlbmRlcmVyKGNvbnN0IE5vZGUmIGNoaWxkKSBjb25zdApAQCAtMjM4LDcgKzIzOCw3
IEBAIHZvaWQgSFRNTE1ldGVyRWxlbWVudDo6ZGlkQWRkVXNlckFnZW50U2hhZG93Um9vdChTaGFk
b3dSb290KiByb290KQogICAgIG1fdmFsdWUtPnVwZGF0ZVBzZXVkbygpOwogICAgIGJhci0+YXBw
ZW5kQ2hpbGQoKm1fdmFsdWUsIEFTU0VSVF9OT19FWENFUFRJT04pOwogCi0gICAgaW5uZXItPmFw
cGVuZENoaWxkKFdURjo6bW92ZShiYXIpLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKKyAgICBpbm5l
ci0+YXBwZW5kQ2hpbGQoV1RGTW92ZShiYXIpLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlv
bkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5jcHAK
aW5kZXggYWE0ZDdmY2IyMWE2ZWQ5Y2M3ZjVmZTllM2FlMmVlOGVjNGViYTM2NS4uZmU4MjI1YTMw
ZmU4NTNhYjcyNmM0NTRmMTMwMjBkZjg3MzNkZjk1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MT3B0aW9uRWxlbWVudC5jcHAKQEAgLTc0LDcgKzc0LDcgQEAgUmVmUHRyPEhUTUxPcHRpb25F
bGVtZW50PiBIVE1MT3B0aW9uRWxlbWVudDo6Y3JlYXRlRm9ySlNDb25zdHJ1Y3RvcihEb2N1bWVu
dCYgZG8KICAgICBSZWY8VGV4dD4gdGV4dCA9IFRleHQ6OmNyZWF0ZShkb2N1bWVudCwgZGF0YS5p
c051bGwoKSA/ICIiIDogZGF0YSk7CiAKICAgICBlYyA9IDA7Ci0gICAgZWxlbWVudC0+YXBwZW5k
Q2hpbGQoV1RGOjptb3ZlKHRleHQpLCBlYyk7CisgICAgZWxlbWVudC0+YXBwZW5kQ2hpbGQoV1RG
TW92ZSh0ZXh0KSwgZWMpOwogICAgIGlmIChlYykKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHAKaW5kZXggZDc4NmRmNGZl
ODcxMDNmNTIwMTNhYjdkNzc5OTcxMDQ1ZGEyYzk2MS4uMDExNzVkOTU4MDRhMzRkZTk0YjBlZDhh
NWViMzg4ZmIzNDc1MmZlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1
Z0luRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVu
dC5jcHAKQEAgLTI5NCw5ICsyOTQsOSBAQCBOUE9iamVjdCogSFRNTFBsdWdJbkVsZW1lbnQ6Omdl
dE5QT2JqZWN0KCkKIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBIVE1MUGx1Z0luRWxlbWVudDo6
Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSwgY29uc3QgUmVu
ZGVyVHJlZVBvc2l0aW9uJiBpbnNlcnRpb25Qb3NpdGlvbikKIHsKICAgICBpZiAobV9wbHVnaW5S
ZXBsYWNlbWVudCAmJiBtX3BsdWdpblJlcGxhY2VtZW50LT53aWxsQ3JlYXRlUmVuZGVyZXIoKSkK
LSAgICAgICAgcmV0dXJuIG1fcGx1Z2luUmVwbGFjZW1lbnQtPmNyZWF0ZUVsZW1lbnRSZW5kZXJl
cigqdGhpcywgV1RGOjptb3ZlKHN0eWxlKSwgaW5zZXJ0aW9uUG9zaXRpb24pOworICAgICAgICBy
ZXR1cm4gbV9wbHVnaW5SZXBsYWNlbWVudC0+Y3JlYXRlRWxlbWVudFJlbmRlcmVyKCp0aGlzLCBX
VEZNb3ZlKHN0eWxlKSwgaW5zZXJ0aW9uUG9zaXRpb24pOwogCi0gICAgcmV0dXJuIGNyZWF0ZVJl
bmRlcmVyPFJlbmRlckVtYmVkZGVkT2JqZWN0PigqdGhpcywgV1RGOjptb3ZlKHN0eWxlKSk7Cisg
ICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlckVtYmVkZGVkT2JqZWN0PigqdGhpcywgV1RG
TW92ZShzdHlsZSkpOwogfQogCiB2b2lkIEhUTUxQbHVnSW5FbGVtZW50Ojpzd2FwUmVuZGVyZXJU
aW1lckZpcmVkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbklt
YWdlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1l
bnQuY3BwCmluZGV4IGVlMjY5NmZkMDlmZmZjZDgwMGFhNTFkZWM2MmJiNjgxNWFkZTk5NzguLjhk
NzE0YThjYTU5NTk0ZjA5ZGRiZDBlNDZmNDcxNjA1Y2QwYmI4MGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcApAQCAtMTk0LDcgKzE5NCw3IEBA
IFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpjcmVhdGVF
bGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlCiAgICAgQVNTRVJUKCFkb2N1bWVudCgpLmluUGFnZUNh
Y2hlKCkpOwogCiAgICAgaWYgKGRpc3BsYXlTdGF0ZSgpID49IFByZXBhcmluZ1BsdWdpblJlcGxh
Y2VtZW50KQotICAgICAgICByZXR1cm4gSFRNTFBsdWdJbkVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRS
ZW5kZXJlcihXVEY6Om1vdmUoc3R5bGUpLCBpbnNlcnRpb25Qb3NpdGlvbik7CisgICAgICAgIHJl
dHVybiBIVE1MUGx1Z0luRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFdURk1vdmUoc3R5
bGUpLCBpbnNlcnRpb25Qb3NpdGlvbik7CiAKICAgICAvLyBPbmNlIGEgUGx1Z0luIEVsZW1lbnQg
Y3JlYXRlcyBpdHMgcmVuZGVyZXIsIGl0IG5lZWRzIHRvIGJlIHRvbGQgd2hlbiB0aGUgRG9jdW1l
bnQgZ29lcwogICAgIC8vIGluYWN0aXZlIG9yIHJlYWN0aXZhdGVzIHNvIGl0IGNhbiBjbGVhciB0
aGUgcmVuZGVyZXIgYmVmb3JlIGdvaW5nIGludG8gdGhlIHBhZ2UgY2FjaGUuCkBAIC0yMDQsMjEg
KzIwNCwyMSBAQCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRNTFBsdWdJbkltYWdlRWxlbWVu
dDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZQogICAgIH0KIAogICAgIGlmIChkaXNw
bGF5U3RhdGUoKSA9PSBEaXNwbGF5aW5nU25hcHNob3QpIHsKLSAgICAgICAgYXV0byByZW5kZXJT
bmFwc2hvdHRlZFBsdWdJbiA9IGNyZWF0ZVJlbmRlcmVyPFJlbmRlclNuYXBzaG90dGVkUGx1Z0lu
PigqdGhpcywgV1RGOjptb3ZlKHN0eWxlKSk7CisgICAgICAgIGF1dG8gcmVuZGVyU25hcHNob3R0
ZWRQbHVnSW4gPSBjcmVhdGVSZW5kZXJlcjxSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbj4oKnRoaXMs
IFdURk1vdmUoc3R5bGUpKTsKICAgICAgICAgcmVuZGVyU25hcHNob3R0ZWRQbHVnSW4tPnVwZGF0
ZVNuYXBzaG90KG1fc25hcHNob3RJbWFnZSk7Ci0gICAgICAgIHJldHVybiBXVEY6Om1vdmUocmVu
ZGVyU25hcHNob3R0ZWRQbHVnSW4pOworICAgICAgICByZXR1cm4gV1RGTW92ZShyZW5kZXJTbmFw
c2hvdHRlZFBsdWdJbik7CiAgICAgfQogCiAgICAgLy8gRmFsbGJhY2sgY29udGVudCBicmVha3Mg
dGhlIERPTS0+UmVuZGVyZXIgY2xhc3MgcmVsYXRpb25zaGlwIG9mIHRoaXMKICAgICAvLyBjbGFz
cyBhbmQgYWxsIHN1cGVyY2xhc3NlcyBiZWNhdXNlIGNyZWF0ZU9iamVjdCB3b24ndCBuZWNlc3Nh
cmlseQogICAgIC8vIHJldHVybiBhIFJlbmRlckVtYmVkZGVkT2JqZWN0IG9yIFJlbmRlcldpZGdl
dC4KICAgICBpZiAodXNlRmFsbGJhY2tDb250ZW50KCkpCi0gICAgICAgIHJldHVybiBSZW5kZXJF
bGVtZW50OjpjcmVhdGVGb3IoKnRoaXMsIFdURjo6bW92ZShzdHlsZSkpOworICAgICAgICByZXR1
cm4gUmVuZGVyRWxlbWVudDo6Y3JlYXRlRm9yKCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7CiAKICAg
ICBpZiAoaXNJbWFnZVR5cGUoKSkKLSAgICAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRl
ckltYWdlPigqdGhpcywgV1RGOjptb3ZlKHN0eWxlKSk7CisgICAgICAgIHJldHVybiBjcmVhdGVS
ZW5kZXJlcjxSZW5kZXJJbWFnZT4oKnRoaXMsIFdURk1vdmUoc3R5bGUpKTsKIAotICAgIHJldHVy
biBIVE1MUGx1Z0luRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFdURjo6bW92ZShzdHls
ZSksIGluc2VydGlvblBvc2l0aW9uKTsKKyAgICByZXR1cm4gSFRNTFBsdWdJbkVsZW1lbnQ6OmNy
ZWF0ZUVsZW1lbnRSZW5kZXJlcihXVEZNb3ZlKHN0eWxlKSwgaW5zZXJ0aW9uUG9zaXRpb24pOwog
fQogCiBib29sIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OmNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVy
ZXIoY29uc3QgTm9kZSYgY2hpbGQpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxQcm9ncmVzc0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUHJv
Z3Jlc3NFbGVtZW50LmNwcAppbmRleCBkYjdkMDZhOGI3OTMwNTIzZWFjNjljOTA3ZTQ3ZGM0ODI5
NzMyYzEyLi45MWMxNWYxOGY3MDE1ZDNkNTNhZmU2NzIwZTJmYTU2MWNiNWQyNTMyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQcm9ncmVzc0VsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFByb2dyZXNzRWxlbWVudC5jcHAKQEAgLTU5LDkgKzU5LDkg
QEAgUmVmPEhUTUxQcm9ncmVzc0VsZW1lbnQ+IEhUTUxQcm9ncmVzc0VsZW1lbnQ6OmNyZWF0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW0KIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBIVE1M
UHJvZ3Jlc3NFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYm
IHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQogewogICAgIGlmICghc3R5bGUuZ2V0
KCkuaGFzQXBwZWFyYW5jZSgpKQotICAgICAgICByZXR1cm4gUmVuZGVyRWxlbWVudDo6Y3JlYXRl
Rm9yKCp0aGlzLCBXVEY6Om1vdmUoc3R5bGUpKTsKKyAgICAgICAgcmV0dXJuIFJlbmRlckVsZW1l
bnQ6OmNyZWF0ZUZvcigqdGhpcywgV1RGTW92ZShzdHlsZSkpOwogCi0gICAgcmV0dXJuIGNyZWF0
ZVJlbmRlcmVyPFJlbmRlclByb2dyZXNzPigqdGhpcywgV1RGOjptb3ZlKHN0eWxlKSk7CisgICAg
cmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlclByb2dyZXNzPigqdGhpcywgV1RGTW92ZShzdHls
ZSkpOwogfQogCiBib29sIEhUTUxQcm9ncmVzc0VsZW1lbnQ6OmNoaWxkU2hvdWxkQ3JlYXRlUmVu
ZGVyZXIoY29uc3QgTm9kZSYgY2hpbGQpIGNvbnN0CkBAIC0xNTgsNyArMTU4LDcgQEAgdm9pZCBI
VE1MUHJvZ3Jlc3NFbGVtZW50OjpkaWRBZGRVc2VyQWdlbnRTaGFkb3dSb290KFNoYWRvd1Jvb3Qq
IHJvb3QpCiAgICAgbV92YWx1ZS0+c2V0V2lkdGhQZXJjZW50YWdlKEhUTUxQcm9ncmVzc0VsZW1l
bnQ6OkluZGV0ZXJtaW5hdGVQb3NpdGlvbiAqIDEwMCk7CiAgICAgYmFyLT5hcHBlbmRDaGlsZCgq
bV92YWx1ZSwgQVNTRVJUX05PX0VYQ0VQVElPTik7CiAKLSAgICBpbm5lci0+YXBwZW5kQ2hpbGQo
V1RGOjptb3ZlKGJhciksIEFTU0VSVF9OT19FWENFUFRJT04pOworICAgIGlubmVyLT5hcHBlbmRD
aGlsZChXVEZNb3ZlKGJhciksIEFTU0VSVF9OT19FWENFUFRJT04pOwogfQogCiBib29sIEhUTUxQ
cm9ncmVzc0VsZW1lbnQ6OnNob3VsZEFwcGVhckluZGV0ZXJtaW5hdGUoKSBjb25zdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcAppbmRleCA3NTQyZmJhZGVjYTgyYzZm
NWI5OGYyYjlhYjRiYWVhNTgwMjAxMzkzLi41NzMwNDdmMmE3YzE3MzNmM2FjNzI2YzU1NDQ5ZDc0
N2FmZjkyY2U1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcApA
QCAtMzU2LDEwICszNTYsMTAgQEAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEhUTUxTZWxlY3RF
bGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWwKIHsKICNpZiAhUExB
VEZPUk0oSU9TKQogICAgIGlmICh1c2VzTWVudUxpc3QoKSkKLSAgICAgICAgcmV0dXJuIGNyZWF0
ZVJlbmRlcmVyPFJlbmRlck1lbnVMaXN0PigqdGhpcywgV1RGOjptb3ZlKHN0eWxlKSk7Ci0gICAg
cmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlckxpc3RCb3g+KCp0aGlzLCBXVEY6Om1vdmUoc3R5
bGUpKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlck1lbnVMaXN0PigqdGhp
cywgV1RGTW92ZShzdHlsZSkpOworICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJMaXN0
Qm94PigqdGhpcywgV1RGTW92ZShzdHlsZSkpOwogI2Vsc2UKLSAgICByZXR1cm4gY3JlYXRlUmVu
ZGVyZXI8UmVuZGVyTWVudUxpc3Q+KCp0aGlzLCBXVEY6Om1vdmUoc3R5bGUpKTsKKyAgICByZXR1
cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyTWVudUxpc3Q+KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7
CiAjZW5kaWYKIH0KIApAQCAtOTQ5LDcgKzk0OSw3IEBAIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6
OmRpc3BhdGNoRm9jdXNFdmVudChSZWZQdHI8RWxlbWVudD4mJiBvbGRGb2N1c2VkRWxlbWVudCwK
ICAgICAvLyBkaXNwYXRjaGluZyBjaGFuZ2UgZXZlbnRzIGR1cmluZyBibHVyIGV2ZW50IGRpc3Bh
dGNoLgogICAgIGlmICh1c2VzTWVudUxpc3QoKSkKICAgICAgICAgc2F2ZUxhc3RTZWxlY3Rpb24o
KTsKLSAgICBIVE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0YXRlOjpkaXNwYXRjaEZvY3VzRXZl
bnQoV1RGOjptb3ZlKG9sZEZvY3VzZWRFbGVtZW50KSwgZGlyZWN0aW9uKTsKKyAgICBIVE1MRm9y
bUNvbnRyb2xFbGVtZW50V2l0aFN0YXRlOjpkaXNwYXRjaEZvY3VzRXZlbnQoV1RGTW92ZShvbGRG
b2N1c2VkRWxlbWVudCksIGRpcmVjdGlvbik7CiB9CiAKIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6
OmRpc3BhdGNoQmx1ckV2ZW50KFJlZlB0cjxFbGVtZW50PiYmIG5ld0ZvY3VzZWRFbGVtZW50KQpA
QCAtOTU5LDcgKzk1OSw3IEBAIHZvaWQgSFRNTFNlbGVjdEVsZW1lbnQ6OmRpc3BhdGNoQmx1ckV2
ZW50KFJlZlB0cjxFbGVtZW50PiYmIG5ld0ZvY3VzZWRFbGVtZW50KQogICAgIC8vIFRoaXMgbWF0
Y2hlcyBvdGhlciBicm93c2VycycgYmVoYXZpb3IuCiAgICAgaWYgKHVzZXNNZW51TGlzdCgpKQog
ICAgICAgICBkaXNwYXRjaENoYW5nZUV2ZW50Rm9yTWVudUxpc3QoKTsKLSAgICBIVE1MRm9ybUNv
bnRyb2xFbGVtZW50V2l0aFN0YXRlOjpkaXNwYXRjaEJsdXJFdmVudChXVEY6Om1vdmUobmV3Rm9j
dXNlZEVsZW1lbnQpKTsKKyAgICBIVE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0YXRlOjpkaXNw
YXRjaEJsdXJFdmVudChXVEZNb3ZlKG5ld0ZvY3VzZWRFbGVtZW50KSk7CiB9CiAKIHZvaWQgSFRN
TFNlbGVjdEVsZW1lbnQ6OmRlc2VsZWN0SXRlbXNXaXRob3V0VmFsaWRhdGlvbihIVE1MRWxlbWVu
dCogZXhjbHVkZUVsZW1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxT
dW1tYXJ5RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdW1tYXJ5RWxlbWVu
dC5jcHAKaW5kZXggZjU5ZDhjMDUzYTljZDFlZmJhNDI0YTQwMjkyNzAyMzc0ZWNlNDY4My4uMTNk
M2NmNDgzODQxMDcxMjM5ZTY3NTgwODcyZWU2MDZlYmI5ZDIwZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MU3VtbWFyeUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFN1bW1hcnlFbGVtZW50LmNwcApAQCAtNTEsNyArNTEsNyBAQCBIVE1MU3VtbWFy
eUVsZW1lbnQ6OkhUTUxTdW1tYXJ5RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1l
LCBEb2N1bWVudCYgZAogCiBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRNTFN1bW1hcnlFbGVt
ZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlLCBjb25z
dCBSZW5kZXJUcmVlUG9zaXRpb24mKQogewotICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5k
ZXJCbG9ja0Zsb3c+KCp0aGlzLCBXVEY6Om1vdmUoc3R5bGUpKTsKKyAgICByZXR1cm4gY3JlYXRl
UmVuZGVyZXI8UmVuZGVyQmxvY2tGbG93PigqdGhpcywgV1RGTW92ZShzdHlsZSkpOwogfQogCiB2
b2lkIEhUTUxTdW1tYXJ5RWxlbWVudDo6ZGlkQWRkVXNlckFnZW50U2hhZG93Um9vdChTaGFkb3dS
b290KiByb290KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVudC5jcHAKaW5kZXgg
MGUyODdiNjlkOWU0Y2NjYmVhZjg2NzY3ZWU3YTZkYWIzNmI4NTJhMy4uZWM2ODkxN2YzNzVmMjQ4
ZjdjMzM1NWMyMWQxOWUyYzMwNTIwYTdiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVGFibGVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJs
ZUVsZW1lbnQuY3BwCkBAIC0yNDAsMTQgKzI0MCwxNCBAQCBSZWZQdHI8SFRNTEVsZW1lbnQ+IEhU
TUxUYWJsZUVsZW1lbnQ6Omluc2VydFJvdyhpbnQgaW5kZXgsIEV4Y2VwdGlvbkNvZGUmIGVjKQog
ICAgICAgICAgICAgUmVmPEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50PiBuZXdCb2R5ID0gSFRNTFRh
YmxlU2VjdGlvbkVsZW1lbnQ6OmNyZWF0ZSh0Ym9keVRhZywgZG9jdW1lbnQoKSk7CiAgICAgICAg
ICAgICBSZWY8SFRNTFRhYmxlUm93RWxlbWVudD4gbmV3Um93ID0gSFRNTFRhYmxlUm93RWxlbWVu
dDo6Y3JlYXRlKGRvY3VtZW50KCkpOwogICAgICAgICAgICAgbmV3Qm9keS0+YXBwZW5kQ2hpbGQo
bmV3Um93LmNvcHlSZWYoKSwgZWMpOwotICAgICAgICAgICAgYXBwZW5kQ2hpbGQoV1RGOjptb3Zl
KG5ld0JvZHkpLCBlYyk7Ci0gICAgICAgICAgICByZXR1cm4gV1RGOjptb3ZlKG5ld1Jvdyk7Cisg
ICAgICAgICAgICBhcHBlbmRDaGlsZChXVEZNb3ZlKG5ld0JvZHkpLCBlYyk7CisgICAgICAgICAg
ICByZXR1cm4gV1RGTW92ZShuZXdSb3cpOwogICAgICAgICB9CiAgICAgfQogCiAgICAgUmVmPEhU
TUxUYWJsZVJvd0VsZW1lbnQ+IG5ld1JvdyA9IEhUTUxUYWJsZVJvd0VsZW1lbnQ6OmNyZWF0ZShk
b2N1bWVudCgpKTsKICAgICBwYXJlbnQtPmluc2VydEJlZm9yZShuZXdSb3cuY29weVJlZigpLCBy
b3cuZ2V0KCksIGVjKTsKLSAgICByZXR1cm4gV1RGOjptb3ZlKG5ld1Jvdyk7CisgICAgcmV0dXJu
IFdURk1vdmUobmV3Um93KTsKIH0KIAogdm9pZCBIVE1MVGFibGVFbGVtZW50OjpkZWxldGVSb3co
aW50IGluZGV4LCBFeGNlcHRpb25Db2RlJiBlYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFRhYmxlUm93RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxU
YWJsZVJvd0VsZW1lbnQuY3BwCmluZGV4IGRkMGJiYmZhNjMwMDhmNWJmYmFkNmU0MmVmMDM4ZmJi
NzhmOWI0MTkuLjc2NmJkMGMzMTg3M2NmZTMxOTUxNmRmZmJmOTUyZmVhZmFkYzE1OWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlUm93RWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVSb3dFbGVtZW50LmNwcApAQCAtMTIzLDcgKzEy
Myw3IEBAIFJlZlB0cjxIVE1MVGFibGVDZWxsRWxlbWVudD4gSFRNTFRhYmxlUm93RWxlbWVudDo6
aW5zZXJ0Q2VsbChpbnQgaW5kZXgsIEV4Y2VwdGlvCiAgICAgICAgICAgICBuID0gY2hpbGRyZW4t
Pml0ZW0oaW5kZXgpOwogICAgICAgICBpbnNlcnRCZWZvcmUoY2VsbC5jb3B5UmVmKCksIG4sIGVj
KTsKICAgICB9Ci0gICAgcmV0dXJuIFdURjo6bW92ZShjZWxsKTsKKyAgICByZXR1cm4gV1RGTW92
ZShjZWxsKTsKIH0KIAogdm9pZCBIVE1MVGFibGVSb3dFbGVtZW50OjpkZWxldGVDZWxsKGludCBp
bmRleCwgRXhjZXB0aW9uQ29kZSYgZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFy
ZWFFbGVtZW50LmNwcAppbmRleCAxZDM5MDA2ZTBmMmY0M2FlZDEzOGQ3MDkxZmNkY2E0OTZjNjM2
N2M3Li43ODk0MzdjNzg0MjZiMDlkODQwNGM1ZGU1YTYzNWQ2OWJjMTJjZGIxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAKQEAgLTIxMSw3ICsyMTEsNyBA
QCB2b2lkIEhUTUxUZXh0QXJlYUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pYwogCiBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRN
TFRleHRBcmVhRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4m
JiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKIHsKLSAgICByZXR1cm4gY3JlYXRl
UmVuZGVyZXI8UmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmU+KCp0aGlzLCBXVEY6Om1vdmUoc3R5
bGUpKTsKKyAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyVGV4dENvbnRyb2xNdWx0aUxp
bmU+KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7CiB9CiAKIGJvb2wgSFRNTFRleHRBcmVhRWxlbWVu
dDo6YXBwZW5kRm9ybURhdGEoRm9ybURhdGFMaXN0JiBlbmNvZGluZywgYm9vbCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAKaW5kZXgg
ZDY2NWNhMzFiZDM0MTg2OWNiOTk2MzMxZWM0MjgxYzY4OWE5NjFmYS4uZDdmMDczN2JmNmEwMTE0
OWNhMmFiZGFmMTY3M2RiOTljMDcxNWQ2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAKQEAgLTkxLDcgKzkxLDcgQEAgdm9pZCBI
VE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6ZGlzcGF0Y2hGb2N1c0V2ZW50KFJlZlB0cjxFbGVt
ZW50PiYmIG9sZEZvY3VzZWQKICAgICBpZiAoc3VwcG9ydHNQbGFjZWhvbGRlcigpKQogICAgICAg
ICB1cGRhdGVQbGFjZWhvbGRlclZpc2liaWxpdHkoKTsKICAgICBoYW5kbGVGb2N1c0V2ZW50KG9s
ZEZvY3VzZWRFbGVtZW50LmdldCgpLCBkaXJlY3Rpb24pOwotICAgIEhUTUxGb3JtQ29udHJvbEVs
ZW1lbnRXaXRoU3RhdGU6OmRpc3BhdGNoRm9jdXNFdmVudChXVEY6Om1vdmUob2xkRm9jdXNlZEVs
ZW1lbnQpLCBkaXJlY3Rpb24pOworICAgIEhUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRoU3RhdGU6
OmRpc3BhdGNoRm9jdXNFdmVudChXVEZNb3ZlKG9sZEZvY3VzZWRFbGVtZW50KSwgZGlyZWN0aW9u
KTsKIH0KIAogdm9pZCBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6ZGlzcGF0Y2hCbHVyRXZl
bnQoUmVmUHRyPEVsZW1lbnQ+JiYgbmV3Rm9jdXNlZEVsZW1lbnQpCkBAIC05OSw3ICs5OSw3IEBA
IHZvaWQgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OmRpc3BhdGNoQmx1ckV2ZW50KFJlZlB0
cjxFbGVtZW50PiYmIG5ld0ZvY3VzZWRFCiAgICAgaWYgKHN1cHBvcnRzUGxhY2Vob2xkZXIoKSkK
ICAgICAgICAgdXBkYXRlUGxhY2Vob2xkZXJWaXNpYmlsaXR5KCk7CiAgICAgaGFuZGxlQmx1ckV2
ZW50KCk7Ci0gICAgSFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhTdGF0ZTo6ZGlzcGF0Y2hCbHVy
RXZlbnQoV1RGOjptb3ZlKG5ld0ZvY3VzZWRFbGVtZW50KSk7CisgICAgSFRNTEZvcm1Db250cm9s
RWxlbWVudFdpdGhTdGF0ZTo6ZGlzcGF0Y2hCbHVyRXZlbnQoV1RGTW92ZShuZXdGb2N1c2VkRWxl
bWVudCkpOwogfQogCiB2b2lkIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjpkaWRFZGl0SW5u
ZXJUZXh0VmFsdWUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9F
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKaW5k
ZXggNDI1NmY0NDlhNzBlNzBiYTkxMGNiYzQyNGQ3NmRjYzMzMzk1MTdkOS4uMWE4MWNlYWQ1NjNl
NDcyNjk5ODU4YTY2ZTZiZDkwNWJlMWM0Yzk3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxW
aWRlb0VsZW1lbnQuY3BwCkBAIC03NSw3ICs3NSw3IEBAIGJvb2wgSFRNTFZpZGVvRWxlbWVudDo6
cmVuZGVyZXJJc05lZWRlZChjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCiAKIFJlbmRlclB0cjxS
ZW5kZXJFbGVtZW50PiBIVE1MVmlkZW9FbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVm
PFJlbmRlclN0eWxlPiYmIHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQogewotICAg
IHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJWaWRlbz4oKnRoaXMsIFdURjo6bW92ZShzdHls
ZSkpOworICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJWaWRlbz4oKnRoaXMsIFdURk1v
dmUoc3R5bGUpKTsKIH0KIAogdm9pZCBIVE1MVmlkZW9FbGVtZW50OjpkaWRBdHRhY2hSZW5kZXJl
cnMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MV0JSRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxXQlJFbGVtZW50LmNwcAppbmRleCA0ZTllNjMwZjM0
ZWQ0ZWM2MzE3ZmY5NjM1MzMzZjE1ZTdmM2IwZWNlLi43NTdiMjZlNmUzMjgxNWEzMzgxZTRkZTJm
ZGFmY2Q3ODZmMTEwZDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxXQlJF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxXQlJFbGVtZW50LmNwcApA
QCAtNDYsNyArNDYsNyBAQCBIVE1MV0JSRWxlbWVudDo6SFRNTFdCUkVsZW1lbnQoY29uc3QgUXVh
bGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50KQogCiBSZW5kZXJQdHI8UmVu
ZGVyRWxlbWVudD4gSFRNTFdCUkVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVu
ZGVyU3R5bGU+JiYgc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCiB7Ci0gICAgcmV0
dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlckxpbmVCcmVhaz4oKnRoaXMsIFdURjo6bW92ZShzdHls
ZSkpOworICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJMaW5lQnJlYWs+KCp0aGlzLCBX
VEZNb3ZlKHN0eWxlKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0ltYWdlRG9jdW1lbnQuY3BwCmluZGV4IDBkMWFiODA5M2JmNTU5NDZhMTVjZDg3NDFkYzgy
N2RiNjdmMjMwOWUuLmY5NmU0YzBkYjgxYWUyM2QyMWU4YjMxYzgzYzY2YjhiYWIyNjQzN2MgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcApAQCAtMjQwLDcgKzI0MCw3IEBAIHZv
aWQgSW1hZ2VEb2N1bWVudDo6Y3JlYXRlRG9jdW1lbnRTdHJ1Y3R1cmUoKQogICAgICAgICBSZWZQ
dHI8RXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIgPSBJbWFnZUV2ZW50TGlzdGVuZXI6OmNyZWF0ZSgq
dGhpcyk7CiAgICAgICAgIGlmIChET01XaW5kb3cqIHdpbmRvdyA9IHRoaXMtPmRvbVdpbmRvdygp
KQogICAgICAgICAgICAgd2luZG93LT5hZGRFdmVudExpc3RlbmVyKCJyZXNpemUiLCBsaXN0ZW5l
ci5jb3B5UmVmKCksIGZhbHNlKTsKLSAgICAgICAgaW1hZ2VFbGVtZW50LT5hZGRFdmVudExpc3Rl
bmVyKCJjbGljayIsIFdURjo6bW92ZShsaXN0ZW5lciksIGZhbHNlKTsKKyAgICAgICAgaW1hZ2VF
bGVtZW50LT5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIFdURk1vdmUobGlzdGVuZXIpLCBmYWxz
ZSk7CiAjZW5kaWYKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1h
Z2VJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUlucHV0VHlwZS5jcHAK
aW5kZXggOTU0OGM5YzAyYzIwMjZlMjBlMTFkNjYyYzhjYzNiNGZlNGEzZmJjNC4uMTMxMGNlOWVj
OTI2MDgyZWI4MzFlYTdjOTgwYmUxMDVjZjU2OGI2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9JbWFnZUlucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFn
ZUlucHV0VHlwZS5jcHAKQEAgLTEwMyw3ICsxMDMsNyBAQCB2b2lkIEltYWdlSW5wdXRUeXBlOjpo
YW5kbGVET01BY3RpdmF0ZUV2ZW50KEV2ZW50KiBldmVudCkKIAogUmVuZGVyUHRyPFJlbmRlckVs
ZW1lbnQ+IEltYWdlSW5wdXRUeXBlOjpjcmVhdGVJbnB1dFJlbmRlcmVyKFJlZjxSZW5kZXJTdHls
ZT4mJiBzdHlsZSkKIHsKLSAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVySW1hZ2U+KGVs
ZW1lbnQoKSwgV1RGOjptb3ZlKHN0eWxlKSk7CisgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJl
bmRlckltYWdlPihlbGVtZW50KCksIFdURk1vdmUoc3R5bGUpKTsKIH0KIAogdm9pZCBJbWFnZUlu
cHV0VHlwZTo6YWx0QXR0cmlidXRlQ2hhbmdlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0lucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAK
aW5kZXggZGM0NTEyYzU5ZTA4NTdmYzllZWI5YmUxMzBjNGMxMTM3OWE0YTRhOC4uNmE3YmE1ZWJk
ZTQxMjI5MDQzMjUzYjkwZDU1YjNmYmFjZmI5YzRkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9JbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBl
LmNwcApAQCAtNDgxLDcgKzQ4MSw3IEBAIFBhc3NSZWZQdHI8SFRNTEZvcm1FbGVtZW50PiBJbnB1
dFR5cGU6OmZvcm1Gb3JTdWJtaXNzaW9uKCkgY29uc3QKIAogUmVuZGVyUHRyPFJlbmRlckVsZW1l
bnQ+IElucHV0VHlwZTo6Y3JlYXRlSW5wdXRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYgc3R5
bGUpCiB7Ci0gICAgcmV0dXJuIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PihSZW5kZXJFbGVtZW50
OjpjcmVhdGVGb3IoZWxlbWVudCgpLCBXVEY6Om1vdmUoc3R5bGUpKSk7CisgICAgcmV0dXJuIFJl
bmRlclB0cjxSZW5kZXJFbGVtZW50PihSZW5kZXJFbGVtZW50OjpjcmVhdGVGb3IoZWxlbWVudCgp
LCBXVEZNb3ZlKHN0eWxlKSkpOwogfQogCiB2b2lkIElucHV0VHlwZTo6Ymx1cigpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9NZWRpYURvY3VtZW50LmNwcAppbmRleCBkNzYyNDUyYzI1MGU5OGY5NmMxYzM1NTBm
YWUxODFmODVlMDJiNWFmLi5lNjljNTNlZGM0OWRmMDA2N2YxYmE0OTk3MWY0NzM3YzY1ZjY0ODNi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRG9jdW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFEb2N1bWVudC5jcHAKQEAgLTkzLDcgKzkzLDcgQEAg
dm9pZCBNZWRpYURvY3VtZW50UGFyc2VyOjpjcmVhdGVEb2N1bWVudFN0cnVjdHVyZSgpCiAgICAg
UmVmPEVsZW1lbnQ+IG1ldGFFbGVtZW50ID0gZG9jdW1lbnQoKS0+Y3JlYXRlRWxlbWVudChtZXRh
VGFnLCBmYWxzZSk7CiAgICAgbWV0YUVsZW1lbnQtPnNldEF0dHJpYnV0ZShuYW1lQXR0ciwgInZp
ZXdwb3J0Iik7CiAgICAgbWV0YUVsZW1lbnQtPnNldEF0dHJpYnV0ZShjb250ZW50QXR0ciwgIndp
ZHRoPWRldmljZS13aWR0aCxpbml0aWFsLXNjYWxlPTEsdXNlci1zY2FsYWJsZT1ubyIpOwotICAg
IGhlYWRFbGVtZW50LT5hcHBlbmRDaGlsZChXVEY6Om1vdmUobWV0YUVsZW1lbnQpLCBJR05PUkVf
RVhDRVBUSU9OKTsKKyAgICBoZWFkRWxlbWVudC0+YXBwZW5kQ2hpbGQoV1RGTW92ZShtZXRhRWxl
bWVudCksIElHTk9SRV9FWENFUFRJT04pOwogI2VuZGlmCiAKICAgICBSZWY8RWxlbWVudD4gYm9k
eSA9IGRvY3VtZW50KCktPmNyZWF0ZUVsZW1lbnQoYm9keVRhZywgZmFsc2UpOwpAQCAtMTIxLDgg
KzEyMSw4IEBAIHZvaWQgTWVkaWFEb2N1bWVudFBhcnNlcjo6Y3JlYXRlRG9jdW1lbnRTdHJ1Y3R1
cmUoKQogICAgIGlmIChEb2N1bWVudExvYWRlciogbG9hZGVyID0gZG9jdW1lbnQoKS0+bG9hZGVy
KCkpCiAgICAgICAgIHNvdXJjZS5zZXRUeXBlKGxvYWRlci0+cmVzcG9uc2VNSU1FVHlwZSgpKTsK
IAotICAgIG1fbWVkaWFFbGVtZW50LT5hcHBlbmRDaGlsZChXVEY6Om1vdmUoc291cmNlRWxlbWVu
dCksIElHTk9SRV9FWENFUFRJT04pOwotICAgIGJvZHktPmFwcGVuZENoaWxkKFdURjo6bW92ZSht
ZWRpYUVsZW1lbnQpLCBJR05PUkVfRVhDRVBUSU9OKTsKKyAgICBtX21lZGlhRWxlbWVudC0+YXBw
ZW5kQ2hpbGQoV1RGTW92ZShzb3VyY2VFbGVtZW50KSwgSUdOT1JFX0VYQ0VQVElPTik7CisgICAg
Ym9keS0+YXBwZW5kQ2hpbGQoV1RGTW92ZShtZWRpYUVsZW1lbnQpLCBJR05PUkVfRVhDRVBUSU9O
KTsKIAogICAgIEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50KCktPmZyYW1lKCk7CiAgICAgaWYgKCFm
cmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vzc2lv
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRWxlbWVudFNlc3Npb24uY3BwCmluZGV4
IGY0ZThmNDAwMzMwYjYyZWM1NmEzZTQxODc4NjFlNjM5YjI3OWFjYjQuLmJiNTgwYzMyYjJkZWQ3
ZDBhNzhlNTI2YTEzMzRmYzU3Y2IzZTQzYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRp
YUVsZW1lbnRTZXNzaW9uLmNwcApAQCAtMjg4LDcgKzI4OCw3IEBAIHZvaWQgTWVkaWFFbGVtZW50
U2Vzc2lvbjo6c2V0SGFzUGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlMaXN0ZW5lcnMoY29uc3Qg
SFRNTE1lCiAKIHZvaWQgTWVkaWFFbGVtZW50U2Vzc2lvbjo6c2V0UGxheWJhY2tUYXJnZXQoUmVm
PE1lZGlhUGxheWJhY2tUYXJnZXQ+JiYgZGV2aWNlKQogewotICAgIG1fcGxheWJhY2tUYXJnZXQg
PSBXVEY6Om1vdmUoZGV2aWNlKTsKKyAgICBtX3BsYXliYWNrVGFyZ2V0ID0gV1RGTW92ZShkZXZp
Y2UpOwogICAgIGNsaWVudCgpLnNldFdpcmVsZXNzUGxheWJhY2tUYXJnZXQoKm1fcGxheWJhY2tU
YXJnZXQuY29weVJlZigpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9Q
bHVnaW5Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1BsdWdpbkRvY3VtZW50LmNw
cAppbmRleCBjMGE4MGJhNTU3MTM5MDliOTNiMThiMWJkYTg4MDNmZjE1Mjc1YmZiLi5lNzgzYTlk
M2Y5ZGEyYmQ4MjlkMDg5ZDRjYzY4N2Q2Y2VhMDMyYzQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL1BsdWdpbkRvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1Bs
dWdpbkRvY3VtZW50LmNwcApAQCAtMTA2LDcgKzEwNiw3IEBAIHZvaWQgUGx1Z2luRG9jdW1lbnRQ
YXJzZXI6OmNyZWF0ZURvY3VtZW50U3RydWN0dXJlKCkKIAogICAgIGRvd25jYXN0PFBsdWdpbkRv
Y3VtZW50PigqZG9jdW1lbnQoKSkuc2V0UGx1Z2luRWxlbWVudChtX2VtYmVkRWxlbWVudCk7CiAK
LSAgICBib2R5LT5hcHBlbmRDaGlsZChXVEY6Om1vdmUoZW1iZWRFbGVtZW50KSwgSUdOT1JFX0VY
Q0VQVElPTik7CisgICAgYm9keS0+YXBwZW5kQ2hpbGQoV1RGTW92ZShlbWJlZEVsZW1lbnQpLCBJ
R05PUkVfRVhDRVBUSU9OKTsKIH0KIAogdm9pZCBQbHVnaW5Eb2N1bWVudFBhcnNlcjo6YXBwZW5k
Qnl0ZXMoRG9jdW1lbnRXcml0ZXImLCBjb25zdCBjaGFyKiwgc2l6ZV90KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL1JhbmdlSW5wdXRUeXBlLmNwcAppbmRleCA2NmE3NDE1ZThhNGNmMTFmOTFkYzY3YzE2YTFk
OTA2MDI1Y2ZmZmQyLi4yNGY3YmJjZjMwOGRhZTA1ZTUxYzlmMDI5YjZhYWNiNDM3MTI1YmE2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhbmdlSW5wdXRUeXBlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL1JhbmdlSW5wdXRUeXBlLmNwcApAQCAtMjU3LDggKzI1Nyw4IEBA
IHZvaWQgUmFuZ2VJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWUoKQogICAgIHRyYWNrLT5z
ZXRQc2V1ZG8oQXRvbWljU3RyaW5nKCItd2Via2l0LXNsaWRlci1ydW5uYWJsZS10cmFjayIsIEF0
b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKICAgICB0cmFjay0+YXBwZW5kQ2hp
bGQoU2xpZGVyVGh1bWJFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpLCBJR05PUkVfRVhDRVBUSU9O
KTsKICAgICBSZWY8SFRNTEVsZW1lbnQ+IGNvbnRhaW5lciA9IFNsaWRlckNvbnRhaW5lckVsZW1l
bnQ6OmNyZWF0ZShkb2N1bWVudCk7Ci0gICAgY29udGFpbmVyLT5hcHBlbmRDaGlsZChXVEY6Om1v
dmUodHJhY2spLCBJR05PUkVfRVhDRVBUSU9OKTsKLSAgICBlbGVtZW50KCkudXNlckFnZW50U2hh
ZG93Um9vdCgpLT5hcHBlbmRDaGlsZChXVEY6Om1vdmUoY29udGFpbmVyKSwgSUdOT1JFX0VYQ0VQ
VElPTik7CisgICAgY29udGFpbmVyLT5hcHBlbmRDaGlsZChXVEZNb3ZlKHRyYWNrKSwgSUdOT1JF
X0VYQ0VQVElPTik7CisgICAgZWxlbWVudCgpLnVzZXJBZ2VudFNoYWRvd1Jvb3QoKS0+YXBwZW5k
Q2hpbGQoV1RGTW92ZShjb250YWluZXIpLCBJR05PUkVfRVhDRVBUSU9OKTsKIH0KIAogSFRNTEVs
ZW1lbnQqIFJhbmdlSW5wdXRUeXBlOjpzbGlkZXJUcmFja0VsZW1lbnQoKSBjb25zdApAQCAtMjg2
LDcgKzI4Niw3IEBAIEhUTUxFbGVtZW50KiBSYW5nZUlucHV0VHlwZTo6c2xpZGVyVGh1bWJFbGVt
ZW50KCkgY29uc3QKIAogUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFJhbmdlSW5wdXRUeXBlOjpj
cmVhdGVJbnB1dFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkKIHsKLSAgICByZXR1
cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyU2xpZGVyPihlbGVtZW50KCksIFdURjo6bW92ZShzdHls
ZSkpOworICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJTbGlkZXI+KGVsZW1lbnQoKSwg
V1RGTW92ZShzdHlsZSkpOwogfQogCiBEZWNpbWFsIFJhbmdlSW5wdXRUeXBlOjpwYXJzZVRvTnVt
YmVyKGNvbnN0IFN0cmluZyYgc3JjLCBjb25zdCBEZWNpbWFsJiBkZWZhdWx0VmFsdWUpIGNvbnN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1J1YnlFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvUnVieUVsZW1lbnQuY3BwCmluZGV4IDA5NTc4OTNiNWNlZmIxNjQzOTIz
NGY3ZDNmOWVmYjg5ZWE5ZTQ0MTcuLjYyZWUxMjlmY2QwNTczZDdjMzBkYWYyMzg0YTllYWNlYzAz
MDcwNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUnVieUVsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUnVieUVsZW1lbnQuY3BwCkBAIC00NiwxMCArNDYsMTAg
QEAgUmVmPFJ1YnlFbGVtZW50PiBSdWJ5RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2MKIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBSdWJ5
RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSwg
Y29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJiBpbnNlcnRpb25Qb3NpdGlvbikKIHsKICAgICBpZiAo
c3R5bGUtPmRpc3BsYXkoKSA9PSBJTkxJTkUpCi0gICAgICAgIHJldHVybiBjcmVhdGVSZW5kZXJl
cjxSZW5kZXJSdWJ5QXNJbmxpbmU+KCp0aGlzLCBXVEY6Om1vdmUoc3R5bGUpKTsKKyAgICAgICAg
cmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlclJ1YnlBc0lubGluZT4oKnRoaXMsIFdURk1vdmUo
c3R5bGUpKTsKICAgICBpZiAoc3R5bGUtPmRpc3BsYXkoKSA9PSBCTE9DSyB8fCBzdHlsZS5nZXQo
KS5kaXNwbGF5KCkgPT0gSU5MSU5FX0JMT0NLKQotICAgICAgICByZXR1cm4gY3JlYXRlUmVuZGVy
ZXI8UmVuZGVyUnVieUFzQmxvY2s+KCp0aGlzLCBXVEY6Om1vdmUoc3R5bGUpKTsKLSAgICByZXR1
cm4gSFRNTEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihXVEY6Om1vdmUoc3R5bGUpLCBp
bnNlcnRpb25Qb3NpdGlvbik7CisgICAgICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJS
dWJ5QXNCbG9jaz4oKnRoaXMsIFdURk1vdmUoc3R5bGUpKTsKKyAgICByZXR1cm4gSFRNTEVsZW1l
bnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihXVEZNb3ZlKHN0eWxlKSwgaW5zZXJ0aW9uUG9zaXRp
b24pOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1J1YnlUZXh0RWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1J1YnlUZXh0RWxlbWVudC5jcHAKaW5kZXgg
Yzg3OGIyMTFjYjYzNmU3MmYyODc4Mjk0OTI0OWI1NmViZGYyYzhhNy4uODUxNGI0NzQxMmY4Zjkx
MzljMmZhYjY5MTlmNDBkYzA2ZDlkYjA3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9SdWJ5VGV4dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUnVieVRleHRF
bGVtZW50LmNwcApAQCAtNDksOCArNDksOCBAQCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gUnVi
eVRleHRFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPgogewog
ICAgIC8vIFJlbmRlclJ1YnlUZXh0IHJlcXVpcmVzIGl0cyBwYXJlbnQgdG8gYmUgUmVuZGVyUnVi
eVJ1bi4KICAgICBpZiAoaXNSdWJ5KGluc2VydGlvblBvc2l0aW9uLnBhcmVudCgpKSAmJiBzdHls
ZS0+ZGlzcGxheSgpID09IEJMT0NLKQotICAgICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVu
ZGVyUnVieVRleHQ+KCp0aGlzLCBXVEY6Om1vdmUoc3R5bGUpKTsKLSAgICByZXR1cm4gSFRNTEVs
ZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihXVEY6Om1vdmUoc3R5bGUpLCBpbnNlcnRpb25Q
b3NpdGlvbik7CisgICAgICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJSdWJ5VGV4dD4o
KnRoaXMsIFdURk1vdmUoc3R5bGUpKTsKKyAgICByZXR1cm4gSFRNTEVsZW1lbnQ6OmNyZWF0ZUVs
ZW1lbnRSZW5kZXJlcihXVEZNb3ZlKHN0eWxlKSwgaW5zZXJ0aW9uUG9zaXRpb24pOwogfQogCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1NlYXJjaElucHV0VHlwZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL1NlYXJjaElucHV0VHlwZS5jcHAKaW5kZXggMzU3YzdhNjA1YjRk
YjcyYzAwZTdiOTZkZWQ2ZGQ2NDYyMGU4ZDZmZC4uMjI2YjEzZTAzNmJmNTM4MDYwOTBhYTAxMzNj
MmNlMzUzMGY0ODU2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9TZWFyY2hJbnB1
dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvU2VhcmNoSW5wdXRUeXBlLmNwcApA
QCAtNzgsNyArNzgsNyBAQCB2b2lkIFNlYXJjaElucHV0VHlwZTo6bWF4UmVzdWx0c0F0dHJpYnV0
ZUNoYW5nZWQoKQogCiBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gU2VhcmNoSW5wdXRUeXBlOjpj
cmVhdGVJbnB1dFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkKIHsKLSAgICByZXR1
cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyU2VhcmNoRmllbGQ+KGVsZW1lbnQoKSwgV1RGOjptb3Zl
KHN0eWxlKSk7CisgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlclNlYXJjaEZpZWxkPihl
bGVtZW50KCksIFdURk1vdmUoc3R5bGUpKTsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBTZWFy
Y2hJbnB1dFR5cGU6OmZvcm1Db250cm9sVHlwZSgpIGNvbnN0CkBAIC0xMTAsMTEgKzExMCwxMSBA
QCB2b2lkIFNlYXJjaElucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZSgpCiAgICAgUmVmPFNl
YXJjaEZpZWxkUmVzdWx0c0J1dHRvbkVsZW1lbnQ+IHJlc3VsdHNCdXR0b24gPSBTZWFyY2hGaWVs
ZFJlc3VsdHNCdXR0b25FbGVtZW50OjpjcmVhdGUoZWxlbWVudCgpLmRvY3VtZW50KCkpOwogICAg
IG1fcmVzdWx0c0J1dHRvbiA9IHJlc3VsdHNCdXR0b24ucHRyKCk7CiAgICAgdXBkYXRlUmVzdWx0
QnV0dG9uUHNldWRvVHlwZShyZXN1bHRzQnV0dG9uLmdldCgpLCBlbGVtZW50KCkubWF4UmVzdWx0
cygpKTsKLSAgICBjb250YWluZXItPmluc2VydEJlZm9yZShXVEY6Om1vdmUocmVzdWx0c0J1dHRv
biksIHRleHRXcmFwcGVyLCBJR05PUkVfRVhDRVBUSU9OKTsKKyAgICBjb250YWluZXItPmluc2Vy
dEJlZm9yZShXVEZNb3ZlKHJlc3VsdHNCdXR0b24pLCB0ZXh0V3JhcHBlciwgSUdOT1JFX0VYQ0VQ
VElPTik7CiAKICAgICBSZWY8U2VhcmNoRmllbGRDYW5jZWxCdXR0b25FbGVtZW50PiBjYW5jZWxC
dXR0b24gPSBTZWFyY2hGaWVsZENhbmNlbEJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZShlbGVtZW50KCku
ZG9jdW1lbnQoKSk7CiAgICAgbV9jYW5jZWxCdXR0b24gPSBjYW5jZWxCdXR0b24ucHRyKCk7Ci0g
ICAgY29udGFpbmVyLT5pbnNlcnRCZWZvcmUoV1RGOjptb3ZlKGNhbmNlbEJ1dHRvbiksIHRleHRX
cmFwcGVyLT5uZXh0U2libGluZygpLCBJR05PUkVfRVhDRVBUSU9OKTsKKyAgICBjb250YWluZXIt
Pmluc2VydEJlZm9yZShXVEZNb3ZlKGNhbmNlbEJ1dHRvbiksIHRleHRXcmFwcGVyLT5uZXh0U2li
bGluZygpLCBJR05PUkVfRVhDRVBUSU9OKTsKIH0KIAogSFRNTEVsZW1lbnQqIFNlYXJjaElucHV0
VHlwZTo6cmVzdWx0c0J1dHRvbkVsZW1lbnQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9U
ZXh0RmllbGRJbnB1dFR5cGUuY3BwCmluZGV4IDQ1ZTBlY2U2OGE0ODgwYjRiZmNiMGYzYmU3Mzk3
MDc0MWU0YjA3NzcuLmE5ZTNhNWM4YzE0ZmMyZGUyZTkxZGUwZTU1OTEzYzgxZWIxMTliYWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHAKQEAgLTIzMiw3ICsy
MzIsNyBAQCBib29sIFRleHRGaWVsZElucHV0VHlwZTo6c2hvdWxkU3VibWl0SW1wbGljaXRseShF
dmVudCogZXZlbnQpCiAKIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBUZXh0RmllbGRJbnB1dFR5
cGU6OmNyZWF0ZUlucHV0UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQogewotICAg
IHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU+KGVsZW1l
bnQoKSwgV1RGOjptb3ZlKHN0eWxlKSk7CisgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRl
clRleHRDb250cm9sU2luZ2xlTGluZT4oZWxlbWVudCgpLCBXVEZNb3ZlKHN0eWxlKSk7CiB9CiAK
IGJvb2wgVGV4dEZpZWxkSW5wdXRUeXBlOjpuZWVkc0NvbnRhaW5lcigpIGNvbnN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1ZhbGlkYXRpb25NZXNzYWdlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvVmFsaWRhdGlvbk1lc3NhZ2UuY3BwCmluZGV4IDkwNjI5NWUxOThmNzg0NTY1
NjEyYWE1MmNiOWU2YWM0ZDUzMGZhZGEuLmM3NTc1YmZjNjQyYzk0OTM4MGEwZDM3Yzc0NmNjYWUy
OTNmMDIwMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVmFsaWRhdGlvbk1lc3Nh
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVmFsaWRhdGlvbk1lc3NhZ2UuY3BwCkBA
IC0xODgsMTQgKzE4OCwxNCBAQCB2b2lkIFZhbGlkYXRpb25NZXNzYWdlOjpidWlsZEJ1YmJsZVRy
ZWUoKQogICAgIGNsaXBwZXItPnNldFBzZXVkbyhBdG9taWNTdHJpbmcoIi13ZWJraXQtdmFsaWRh
dGlvbi1idWJibGUtYXJyb3ctY2xpcHBlciIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxp
dGVyYWwpKTsKICAgICBSZWY8SFRNTERpdkVsZW1lbnQ+IGJ1YmJsZUFycm93ID0gSFRNTERpdkVs
ZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7CiAgICAgYnViYmxlQXJyb3ctPnNldFBzZXVkbyhBdG9t
aWNTdHJpbmcoIi13ZWJraXQtdmFsaWRhdGlvbi1idWJibGUtYXJyb3ciLCBBdG9taWNTdHJpbmc6
OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Ci0gICAgY2xpcHBlci0+YXBwZW5kQ2hpbGQoV1RGOjpt
b3ZlKGJ1YmJsZUFycm93KSwgQVNTRVJUX05PX0VYQ0VQVElPTik7Ci0gICAgbV9idWJibGUtPmFw
cGVuZENoaWxkKFdURjo6bW92ZShjbGlwcGVyKSwgQVNTRVJUX05PX0VYQ0VQVElPTik7CisgICAg
Y2xpcHBlci0+YXBwZW5kQ2hpbGQoV1RGTW92ZShidWJibGVBcnJvdyksIEFTU0VSVF9OT19FWENF
UFRJT04pOworICAgIG1fYnViYmxlLT5hcHBlbmRDaGlsZChXVEZNb3ZlKGNsaXBwZXIpLCBBU1NF
UlRfTk9fRVhDRVBUSU9OKTsKIAogICAgIFJlZjxIVE1MRWxlbWVudD4gbWVzc2FnZSA9IEhUTUxE
aXZFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwogICAgIG1lc3NhZ2UtPnNldFBzZXVkbyhBdG9t
aWNTdHJpbmcoIi13ZWJraXQtdmFsaWRhdGlvbi1idWJibGUtbWVzc2FnZSIsIEF0b21pY1N0cmlu
Zzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKICAgICBSZWY8SFRNTEVsZW1lbnQ+IGljb24gPSBI
VE1MRGl2RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKICAgICBpY29uLT5zZXRQc2V1ZG8oQXRv
bWljU3RyaW5nKCItd2Via2l0LXZhbGlkYXRpb24tYnViYmxlLWljb24iLCBBdG9taWNTdHJpbmc6
OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Ci0gICAgbWVzc2FnZS0+YXBwZW5kQ2hpbGQoV1RGOjpt
b3ZlKGljb24pLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKKyAgICBtZXNzYWdlLT5hcHBlbmRDaGls
ZChXVEZNb3ZlKGljb24pLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKICAgICBSZWY8SFRNTEVsZW1l
bnQ+IHRleHRCbG9jayA9IEhUTUxEaXZFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwogICAgIHRl
eHRCbG9jay0+c2V0UHNldWRvKEF0b21pY1N0cmluZygiLXdlYmtpdC12YWxpZGF0aW9uLWJ1YmJs
ZS10ZXh0LWJsb2NrIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwogICAg
IG1fbWVzc2FnZUhlYWRpbmcgPSBIVE1MRGl2RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKQEAg
LTIwNCw4ICsyMDQsOCBAQCB2b2lkIFZhbGlkYXRpb25NZXNzYWdlOjpidWlsZEJ1YmJsZVRyZWUo
KQogICAgIG1fbWVzc2FnZUJvZHkgPSBIVE1MRGl2RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsK
ICAgICBtX21lc3NhZ2VCb2R5LT5zZXRQc2V1ZG8oQXRvbWljU3RyaW5nKCItd2Via2l0LXZhbGlk
YXRpb24tYnViYmxlLWJvZHkiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7
CiAgICAgdGV4dEJsb2NrLT5hcHBlbmRDaGlsZCgqbV9tZXNzYWdlQm9keSwgQVNTRVJUX05PX0VY
Q0VQVElPTik7Ci0gICAgbWVzc2FnZS0+YXBwZW5kQ2hpbGQoV1RGOjptb3ZlKHRleHRCbG9jayks
IEFTU0VSVF9OT19FWENFUFRJT04pOwotICAgIG1fYnViYmxlLT5hcHBlbmRDaGlsZChXVEY6Om1v
dmUobWVzc2FnZSksIEFTU0VSVF9OT19FWENFUFRJT04pOworICAgIG1lc3NhZ2UtPmFwcGVuZENo
aWxkKFdURk1vdmUodGV4dEJsb2NrKSwgQVNTRVJUX05PX0VYQ0VQVElPTik7CisgICAgbV9idWJi
bGUtPmFwcGVuZENoaWxkKFdURk1vdmUobWVzc2FnZSksIEFTU0VSVF9OT19FWENFUFRJT04pOwog
CiAgICAgc2V0TWVzc2FnZURPTUFuZFN0YXJ0VGltZXIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKaW5kZXgg
MjljMDVlYmJkNWJiOGI1M2UxZTZiOTI5NjM3NzY0ZmYwMDFjNmI1Yi4uMmM3ZWZmMTExMTdiODMx
ZjllNGM5MzE0NmI1NzE5NmMxNjJhNDRmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCkBAIC0xNzc3LDcgKzE3
NzcsNyBAQCBSZWZQdHI8Q2FudmFzR3JhZGllbnQ+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6
Y3JlYXRlTGluZWFyR3JhZGllbnQoZmxvYXQgeDAsCiAKICAgICBSZWY8Q2FudmFzR3JhZGllbnQ+
IGdyYWRpZW50ID0gQ2FudmFzR3JhZGllbnQ6OmNyZWF0ZShGbG9hdFBvaW50KHgwLCB5MCksIEZs
b2F0UG9pbnQoeDEsIHkxKSk7CiAgICAgcHJlcGFyZUdyYWRpZW50Rm9yRGFzaGJvYXJkKGdyYWRp
ZW50LmdldCgpKTsKLSAgICByZXR1cm4gV1RGOjptb3ZlKGdyYWRpZW50KTsKKyAgICByZXR1cm4g
V1RGTW92ZShncmFkaWVudCk7CiB9CiAKIFJlZlB0cjxDYW52YXNHcmFkaWVudD4gQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEOjpjcmVhdGVSYWRpYWxHcmFkaWVudChmbG9hdCB4MCwgZmxvYXQgeTAs
IGZsb2F0IHIwLCBmbG9hdCB4MSwgZmxvYXQgeTEsIGZsb2F0IHIxLCBFeGNlcHRpb25Db2RlJiBl
YykKQEAgLTE3OTQsNyArMTc5NCw3IEBAIFJlZlB0cjxDYW52YXNHcmFkaWVudD4gQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEOjpjcmVhdGVSYWRpYWxHcmFkaWVudChmbG9hdCB4MCwKIAogICAgIFJl
ZjxDYW52YXNHcmFkaWVudD4gZ3JhZGllbnQgPSBDYW52YXNHcmFkaWVudDo6Y3JlYXRlKEZsb2F0
UG9pbnQoeDAsIHkwKSwgcjAsIEZsb2F0UG9pbnQoeDEsIHkxKSwgcjEpOwogICAgIHByZXBhcmVH
cmFkaWVudEZvckRhc2hib2FyZChncmFkaWVudC5nZXQoKSk7Ci0gICAgcmV0dXJuIFdURjo6bW92
ZShncmFkaWVudCk7CisgICAgcmV0dXJuIFdURk1vdmUoZ3JhZGllbnQpOwogfQogCiBSZWZQdHI8
Q2FudmFzUGF0dGVybj4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpjcmVhdGVQYXR0ZXJuKEhU
TUxJbWFnZUVsZW1lbnQqIGltYWdlRWxlbWVudCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKaW5kZXggOTQ0ZDVm
ZjFjMjIyOTk1MmE0YmNmNTViMDM0MGM3YzI5N2VhYjA0MS4uZjQ0YTRjNWQ0NGUyZTM1ODQ1ZTY5
OGViZWIxOGRkMzQ5NzkwOGQ0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKQEAgLTQ4MDcsNyArNDgwNyw3
IEBAIEltYWdlQnVmZmVyKiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpMUlVJbWFnZUJ1ZmZl
ckNhY2hlOjppbWFnZUJ1ZmZlcihjb25zdCBJCiAgICAgaWYgKCF0ZW1wKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICBpID0gc3RkOjptaW4obV9jYXBhY2l0eSAtIDEsIGkpOwotICAgIG1f
YnVmZmVyc1tpXSA9IFdURjo6bW92ZSh0ZW1wKTsKKyAgICBtX2J1ZmZlcnNbaV0gPSBXVEZNb3Zl
KHRlbXApOwogCiAgICAgSW1hZ2VCdWZmZXIqIGJ1ZiA9IG1fYnVmZmVyc1tpXS5nZXQoKTsKICAg
ICBidWJibGVUb0Zyb250KGkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvQXRvbWljSFRNTFRva2VuLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9BdG9taWNI
VE1MVG9rZW4uaAppbmRleCA5OGVhMGQ4MThkNGNkNzNiZGY0OGQ4Zjc4MTBjZWJkNDE0NDFlYjE5
Li4yNGEzMjkyY2EyYTMzYzkzZDkwOWFiOTg0MGJiODA3YjI2ZWQ3NDU3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9BdG9taWNIVE1MVG9rZW4uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3BhcnNlci9BdG9taWNIVE1MVG9rZW4uaApAQCAtMjM2LDcgKzIzNiw3IEBA
IGlubGluZSBBdG9taWNIVE1MVG9rZW46OkF0b21pY0hUTUxUb2tlbihIVE1MVG9rZW46OlR5cGUg
dHlwZSwgY29uc3QgQXRvbWljU3RyaW5nCiAgICAgOiBtX3R5cGUodHlwZSkKICAgICAsIG1fbmFt
ZShuYW1lKQogICAgICwgbV9zZWxmQ2xvc2luZyhmYWxzZSkKLSAgICAsIG1fYXR0cmlidXRlcyhX
VEY6Om1vdmUoYXR0cmlidXRlcykpCisgICAgLCBtX2F0dHJpYnV0ZXMoV1RGTW92ZShhdHRyaWJ1
dGVzKSkKIHsKICAgICBBU1NFUlQodHlwZSA9PSBIVE1MVG9rZW46OlN0YXJ0VGFnIHx8IHR5cGUg
PT0gSFRNTFRva2VuOjpFbmRUYWcpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwCmluZGV4IDQyMGMwZjE1N2Y2MjFhMjgxNTU2
Yzk2MWMzNjA3NWNkYzlmZjFkNTkuLjhmMjgzZGE5ZjI2YzNlM2Y5NzljY2NiN2UxOTlmMzc5ODU5
YWI3NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1
Y3Rpb25TaXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MQ29uc3Ry
dWN0aW9uU2l0ZS5jcHAKQEAgLTE5Niw3ICsxOTYsNyBAQCB2b2lkIEhUTUxDb25zdHJ1Y3Rpb25T
aXRlOjpleGVjdXRlUXVldWVkVGFza3MoKQogCiAgICAgLy8gQ29weSB0aGUgdGFzayBxdWV1ZSBp
bnRvIGEgbG9jYWwgdmFyaWFibGUgaW4gY2FzZSBleGVjdXRlVGFzawogICAgIC8vIHJlLWVudGVy
cyB0aGUgcGFyc2VyLgotICAgIFRhc2tRdWV1ZSBxdWV1ZSA9IFdURjo6bW92ZShtX3Rhc2tRdWV1
ZSk7CisgICAgVGFza1F1ZXVlIHF1ZXVlID0gV1RGTW92ZShtX3Rhc2tRdWV1ZSk7CiAKICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkKICAgICAgICAgZXhlY3V0ZVRhc2socXVl
dWVbaV0pOwpAQCAtNTcwLDcgKzU3MCw3IEBAIHZvaWQgSFRNTENvbnN0cnVjdGlvblNpdGU6Omlu
c2VydFRleHROb2RlKGNvbnN0IFN0cmluZyYgY2hhcmFjdGVycywgV2hpdGVzcGFjZU1vCiAKICAg
ICAgICAgY3VycmVudFBvc2l0aW9uICs9IHRleHROb2RlLT5sZW5ndGgoKTsKICAgICAgICAgQVNT
RVJUKGN1cnJlbnRQb3NpdGlvbiA8PSBjaGFyYWN0ZXJzLmxlbmd0aCgpKTsKLSAgICAgICAgdGFz
ay5jaGlsZCA9IFdURjo6bW92ZSh0ZXh0Tm9kZSk7CisgICAgICAgIHRhc2suY2hpbGQgPSBXVEZN
b3ZlKHRleHROb2RlKTsKIAogICAgICAgICBleGVjdXRlVGFzayh0YXNrKTsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcAppbmRl
eCBmNmZhZWJkOGM3MjE0MjVhYTAyY2I3M2MyMDc2ZDUwM2E5NzY1M2M3Li5lZGRjYzhkOGYxMzFk
MTAxODUzMTE4Yjk0NDMzMDRmNGI0YzY4MGNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAKQEAgLTM1Niw3ICszNTYsNyBAQCB2b2lk
IEhUTUxEb2N1bWVudFBhcnNlcjo6YXBwZW5kKFJlZlB0cjxTdHJpbmdJbXBsPiYmIGlucHV0U291
cmNlKQogICAgIC8vIGJ1dCB3ZSBuZWVkIHRvIGVuc3VyZSBpdCBpc24ndCBkZWxldGVkIHlldC4K
ICAgICBSZWY8SFRNTERvY3VtZW50UGFyc2VyPiBwcm90ZWN0KCp0aGlzKTsKIAotICAgIFN0cmlu
ZyBzb3VyY2UoV1RGOjptb3ZlKGlucHV0U291cmNlKSk7CisgICAgU3RyaW5nIHNvdXJjZShXVEZN
b3ZlKGlucHV0U291cmNlKSk7CiAKICAgICBpZiAobV9wcmVsb2FkU2Nhbm5lcikgewogICAgICAg
ICBpZiAobV9pbnB1dC5jdXJyZW50KCkuaXNFbXB0eSgpICYmICFpc1dhaXRpbmdGb3JTY3JpcHRz
KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxFbGVtZW50
U3RhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTEVsZW1lbnRTdGFjay5j
cHAKaW5kZXggZWQ1YTQ1NmIwZTU4NjM2NWMxNzU4MDY2NjdjNWRiNjhiY2EyYTE1Yy4uMTM4OTdi
ZmU0NTRmM2VjMGIyOThlNmFjYzk0YmFiMjA2YWYxZTY2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvSFRNTEVsZW1lbnRTdGFjay5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvSFRNTEVsZW1lbnRTdGFjay5jcHAKQEAgLTEyNiw3ICsxMjYsNyBAQCBp
bmxpbmUgYm9vbCBpc1NlbGVjdFNjb3BlTWFya2VyKEhUTUxTdGFja0l0ZW0mIGl0ZW0pCiAKIEhU
TUxFbGVtZW50U3RhY2s6OkVsZW1lbnRSZWNvcmQ6OkVsZW1lbnRSZWNvcmQoUGFzc1JlZlB0cjxI
VE1MU3RhY2tJdGVtPiBpdGVtLCBzdGQ6OnVuaXF1ZV9wdHI8RWxlbWVudFJlY29yZD4gbmV4dCkK
ICAgICA6IG1faXRlbShpdGVtKQotICAgICwgbV9uZXh0KFdURjo6bW92ZShuZXh0KSkKKyAgICAs
IG1fbmV4dChXVEZNb3ZlKG5leHQpKQogewogICAgIEFTU0VSVChtX2l0ZW0pOwogfQpAQCAtNTYw
LDcgKzU2MCw3IEBAIHZvaWQgSFRNTEVsZW1lbnRTdGFjazo6cHVzaENvbW1vbihQYXNzUmVmUHRy
PEhUTUxTdGFja0l0ZW0+IGl0ZW0pCiAgICAgQVNTRVJUKG1fcm9vdE5vZGUpOwogCiAgICAgbV9z
dGFja0RlcHRoKys7Ci0gICAgbV90b3AgPSBzdGQ6Om1ha2VfdW5pcXVlPEVsZW1lbnRSZWNvcmQ+
KGl0ZW0sIFdURjo6bW92ZShtX3RvcCkpOworICAgIG1fdG9wID0gc3RkOjptYWtlX3VuaXF1ZTxF
bGVtZW50UmVjb3JkPihpdGVtLCBXVEZNb3ZlKG1fdG9wKSk7CiB9CiAKIHZvaWQgSFRNTEVsZW1l
bnRTdGFjazo6cG9wQ29tbW9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL0hUTUxFbGVtZW50U3RhY2suaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxF
bGVtZW50U3RhY2suaAppbmRleCA4NjU4YzA5ZjJhZjBlYTNkZDQ4ZGIwZmNhNDRjYzgxMGQ4ZDYw
ZjJiLi4wNzE3YTg3YmUzMjg0ZWM1Nzc0NmE3YWQ4OTQ5NmZkZGRiNWJmYjBiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRWxlbWVudFN0YWNrLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTEVsZW1lbnRTdGFjay5oCkBAIC02Niw4ICs2Niw4
IEBAIHB1YmxpYzoKICAgICBwcml2YXRlOgogICAgICAgICBmcmllbmQgY2xhc3MgSFRNTEVsZW1l
bnRTdGFjazsKIAotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8RWxlbWVudFJlY29yZD4gcmVsZWFz
ZU5leHQoKSB7IHJldHVybiBXVEY6Om1vdmUobV9uZXh0KTsgfQotICAgICAgICB2b2lkIHNldE5l
eHQoc3RkOjp1bmlxdWVfcHRyPEVsZW1lbnRSZWNvcmQ+IG5leHQpIHsgbV9uZXh0ID0gV1RGOjpt
b3ZlKG5leHQpOyB9CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxFbGVtZW50UmVjb3JkPiByZWxl
YXNlTmV4dCgpIHsgcmV0dXJuIFdURk1vdmUobV9uZXh0KTsgfQorICAgICAgICB2b2lkIHNldE5l
eHQoc3RkOjp1bmlxdWVfcHRyPEVsZW1lbnRSZWNvcmQ+IG5leHQpIHsgbV9uZXh0ID0gV1RGTW92
ZShuZXh0KTsgfQogCiAgICAgICAgIFJlZlB0cjxIVE1MU3RhY2tJdGVtPiBtX2l0ZW07CiAgICAg
ICAgIHN0ZDo6dW5pcXVlX3B0cjxFbGVtZW50UmVjb3JkPiBtX25leHQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNwcAppbmRleCBhNDAyYjk5
OGU3ODNiMWM2ZTE0MzY1MDk2YzJhN2IwN2E5MjUxYWE0Li40ZjE1ZWY5ZDkxZWFmYWQxZWRiOTRl
MTIwMWJhNzQ1YWNkNmU4YzA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9IVE1MUHJlbG9hZFNjYW5uZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0hUTUxQcmVsb2FkU2Nhbm5lci5jcHAKQEAgLTM0OCw3ICszNDgsNyBAQCB2b2lkIFRva2VuUHJl
bG9hZFNjYW5uZXI6OnNjYW4oY29uc3QgSFRNTFRva2VuJiB0b2tlbiwgVmVjdG9yPHN0ZDo6dW5p
cXVlX3B0cjxQcgogICAgICAgICBTdGFydFRhZ1NjYW5uZXIgc2Nhbm5lcih0YWdJZCwgbV9kZXZp
Y2VTY2FsZUZhY3Rvcik7CiAgICAgICAgIHNjYW5uZXIucHJvY2Vzc0F0dHJpYnV0ZXModG9rZW4u
YXR0cmlidXRlcygpLCBkb2N1bWVudCk7CiAgICAgICAgIGlmIChhdXRvIHJlcXVlc3QgPSBzY2Fu
bmVyLmNyZWF0ZVByZWxvYWRSZXF1ZXN0KG1fcHJlZGljdGVkQmFzZUVsZW1lbnRVUkwpKQotICAg
ICAgICAgICAgcmVxdWVzdHMuYXBwZW5kKFdURjo6bW92ZShyZXF1ZXN0KSk7CisgICAgICAgICAg
ICByZXF1ZXN0cy5hcHBlbmQoV1RGTW92ZShyZXF1ZXN0KSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKQEAgLTM5Myw3ICszOTMsNyBAQCB2b2lkIEhUTUxQcmVsb2FkU2Nhbm5lcjo6c2NhbihI
VE1MUmVzb3VyY2VQcmVsb2FkZXImIHByZWxvYWRlciwgRG9jdW1lbnQmIGRvY3VtZQogICAgICAg
ICBtX3NjYW5uZXIuc2NhbigqdG9rZW4sIHJlcXVlc3RzLCBkb2N1bWVudCk7CiAgICAgfQogCi0g
ICAgcHJlbG9hZGVyLnByZWxvYWQoV1RGOjptb3ZlKHJlcXVlc3RzKSk7CisgICAgcHJlbG9hZGVy
LnByZWxvYWQoV1RGTW92ZShyZXF1ZXN0cykpOwogfQogCiBib29sIHRlc3RQcmVsb2FkU2Nhbm5l
clZpZXdwb3J0U3VwcG9ydChEb2N1bWVudCogZG9jdW1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUmVzb3VyY2VQcmVsb2FkZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvSFRNTFJlc291cmNlUHJlbG9hZGVyLmNwcAppbmRleCA0NmQ4ZGI2
MzZkZmRmZDQ3MzYwZGVjOGU2NTQzYzYzNDZlNGEyZTFlLi5kZTQ0ZGQwYjFkZTgwNzBjMjgyNGI0
MDg3ZDAyNjRjYTkyZTFjYjRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9IVE1MUmVzb3VyY2VQcmVsb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL0hUTUxSZXNvdXJjZVByZWxvYWRlci5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgQ2FjaGVkUmVz
b3VyY2VSZXF1ZXN0IFByZWxvYWRSZXF1ZXN0OjpyZXNvdXJjZVJlcXVlc3QoRG9jdW1lbnQmIGRv
Y3VtZW50KQogdm9pZCBIVE1MUmVzb3VyY2VQcmVsb2FkZXI6OnByZWxvYWQoUHJlbG9hZFJlcXVl
c3RTdHJlYW0gcmVxdWVzdHMpCiB7CiAgICAgZm9yIChhdXRvJiByZXF1ZXN0IDogcmVxdWVzdHMp
Ci0gICAgICAgIHByZWxvYWQoV1RGOjptb3ZlKHJlcXVlc3QpKTsKKyAgICAgICAgcHJlbG9hZChX
VEZNb3ZlKHJlcXVlc3QpKTsKIH0KIAogc3RhdGljIGJvb2wgbWVkaWFBdHRyaWJ1dGVNYXRjaGVz
KEZyYW1lKiBmcmFtZSwgUmVuZGVyU3R5bGUqIHJlbmRlclN0eWxlLCBjb25zdCBTdHJpbmcmIGF0
dHJpYnV0ZVZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRN
TFN0YWNrSXRlbS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFN0YWNrSXRlbS5o
CmluZGV4IGMwMmIzYTljZWM1ODJiNmMwZjM1YzA2MDRmZGZjNWMwYmY5YmNjMjYuLmMxODllMjJk
YWE4YWMwOTNlNjI2ZGJlNThmNDMxM2I1NDVmZjBkZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxTdGFja0l0ZW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9IVE1MU3RhY2tJdGVtLmgKQEAgLTc2LDcgKzc2LDcgQEAgYm9vbCBpc051bWJlcmVk
SGVhZGVyRWxlbWVudChjb25zdCBIVE1MU3RhY2tJdGVtJik7CiBib29sIGlzU3BlY2lhbE5vZGUo
Y29uc3QgSFRNTFN0YWNrSXRlbSYpOwogCiBpbmxpbmUgSFRNTFN0YWNrSXRlbTo6SFRNTFN0YWNr
SXRlbShSZWY8RWxlbWVudD4mJiBlbGVtZW50LCBBdG9taWNIVE1MVG9rZW4mIHRva2VuLCBjb25z
dCBBdG9taWNTdHJpbmcmIG5hbWVzcGFjZVVSSSA9IEhUTUxOYW1lczo6eGh0bWxOYW1lc3BhY2VV
UkkpCi0gICAgOiBtX25vZGUoV1RGOjptb3ZlKGVsZW1lbnQpKQorICAgIDogbV9ub2RlKFdURk1v
dmUoZWxlbWVudCkpCiAgICAgLCBtX25hbWVzcGFjZVVSSShuYW1lc3BhY2VVUkkpCiAgICAgLCBt
X2xvY2FsTmFtZSh0b2tlbi5uYW1lKCkpCiAgICAgLCBtX2F0dHJpYnV0ZXModG9rZW4uYXR0cmli
dXRlcygpKQpAQCAtODYsNyArODYsNyBAQCBpbmxpbmUgSFRNTFN0YWNrSXRlbTo6SFRNTFN0YWNr
SXRlbShSZWY8RWxlbWVudD4mJiBlbGVtZW50LCBBdG9taWNIVE1MVG9rZW4mIHRvawogCiBpbmxp
bmUgUmVmPEhUTUxTdGFja0l0ZW0+IEhUTUxTdGFja0l0ZW06OmNyZWF0ZShSZWY8RWxlbWVudD4m
JiBlbGVtZW50LCBBdG9taWNIVE1MVG9rZW4mIHRva2VuLCBjb25zdCBBdG9taWNTdHJpbmcmIG5h
bWVzcGFjZVVSSSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBIVE1MU3RhY2tJdGVtKFdU
Rjo6bW92ZShlbGVtZW50KSwgdG9rZW4sIG5hbWVzcGFjZVVSSSkpOworICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IEhUTUxTdGFja0l0ZW0oV1RGTW92ZShlbGVtZW50KSwgdG9rZW4sIG5hbWVzcGFj
ZVVSSSkpOwogfQogCiBpbmxpbmUgSFRNTFN0YWNrSXRlbTo6SFRNTFN0YWNrSXRlbShFbGVtZW50
JiBlbGVtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRv
a2VuLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVG9rZW4uaAppbmRleCA2MTcx
NzIxODFkODNkNzZlMjNhZTljYjkxYTkzMDU0YWYwZGVlYzY0Li5lZTg3ZWRjNmMxYTA1ZGJhYmVi
MTgwMGJmZWRmZmE0MWUyZmY0YjIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9IVE1MVG9rZW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVG9r
ZW4uaApAQCAtMjQ2LDcgKzI0Niw3IEBAIGlubGluZSB2b2lkIEhUTUxUb2tlbjo6YXBwZW5kVG9T
eXN0ZW1JZGVudGlmaWVyKFVDaGFyIGNoYXJhY3RlcikKIAogaW5saW5lIHN0ZDo6dW5pcXVlX3B0
cjxEb2N0eXBlRGF0YT4gSFRNTFRva2VuOjpyZWxlYXNlRG9jdHlwZURhdGEoKQogewotICAgIHJl
dHVybiBXVEY6Om1vdmUobV9kb2N0eXBlRGF0YSk7CisgICAgcmV0dXJuIFdURk1vdmUobV9kb2N0
eXBlRGF0YSk7CiB9CiAKIGlubGluZSBib29sIEhUTUxUb2tlbjo6c2VsZkNsb3NpbmcoKSBjb25z
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHAKaW5k
ZXggMjk0NTU5ZDQ0NDBkZGNkOWUxZjQ3OTM2YWI4NGEyODViNTZiM2Y4OC4uZWYyOWI0YmJiYWJi
NThiY2NjMGMwN2MzZDZiOThmODUxOGJhY2I4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuY3BwCkBAIC0zMjQsNyArMzI0LDcgQEAgUmVmUHRyPEVs
ZW1lbnQ+IEhUTUxUcmVlQnVpbGRlcjo6dGFrZVNjcmlwdFRvUHJvY2VzcyhUZXh0UG9zaXRpb24m
IHNjcmlwdFN0YXJ0UG8KICAgICAvLyBXZSBwYXVzZSB0aGUgcGFyc2VyIHRvIGV4aXQgdGhlIHRy
ZWUgYnVpbGRlciwgYW5kIHRoZW4gcmVzdW1lIGJlZm9yZSBydW5uaW5nIHNjcmlwdHMuCiAgICAg
c2NyaXB0U3RhcnRQb3NpdGlvbiA9IG1fc2NyaXB0VG9Qcm9jZXNzU3RhcnRQb3NpdGlvbjsKICAg
ICBtX3NjcmlwdFRvUHJvY2Vzc1N0YXJ0UG9zaXRpb24gPSB1bmluaXRpYWxpemVkUG9zaXRpb25W
YWx1ZTEoKTsKLSAgICByZXR1cm4gV1RGOjptb3ZlKG1fc2NyaXB0VG9Qcm9jZXNzKTsKKyAgICBy
ZXR1cm4gV1RGTW92ZShtX3NjcmlwdFRvUHJvY2Vzcyk7CiB9CiAKIHZvaWQgSFRNTFRyZWVCdWls
ZGVyOjpjb25zdHJ1Y3RUcmVlKEF0b21pY0hUTUxUb2tlbiYgdG9rZW4pCkBAIC00MDcsNyArNDA3
LDcgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NEb2N0eXBlVG9rZW4oQXRvbWljSFRN
TFRva2VuJiB0b2tlbikKIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzRmFrZVN0YXJ0VGFn
KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIFZlY3RvcjxBdHRyaWJ1dGU+JiYgYXR0cmli
dXRlcykKIHsKICAgICAvLyBGSVhNRTogV2UnbGwgbmVlZCBhIGZhbmNpZXIgY29udmVyc2lvbiB0
aGFuIGp1c3QgImxvY2FsTmFtZSIgZm9yIFNWRy9NYXRoTUwgdGFncy4KLSAgICBBdG9taWNIVE1M
VG9rZW4gZmFrZVRva2VuKEhUTUxUb2tlbjo6U3RhcnRUYWcsIHRhZ05hbWUubG9jYWxOYW1lKCks
IFdURjo6bW92ZShhdHRyaWJ1dGVzKSk7CisgICAgQXRvbWljSFRNTFRva2VuIGZha2VUb2tlbihI
VE1MVG9rZW46OlN0YXJ0VGFnLCB0YWdOYW1lLmxvY2FsTmFtZSgpLCBXVEZNb3ZlKGF0dHJpYnV0
ZXMpKTsKICAgICBwcm9jZXNzU3RhcnRUYWcoZmFrZVRva2VuKTsKIH0KIApAQCAtMjI4Miw3ICsy
MjgyLDcgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6Omluc2VydFBob25lTnVtYmVyTGluayhjb25z
dCBTdHJpbmcmIHN0cmluZykKICAgICBhdHRyaWJ1dGVzLmFwcGVuZChBdHRyaWJ1dGUoSFRNTE5h
bWVzOjpocmVmQXR0ciwgQVNDSUlMaXRlcmFsKCJ0ZWw6IikgKyBzdHJpbmcpKTsKIAogICAgIGNv
bnN0IEF0b21pY1N0cmluZyYgYVRhZ0xvY2FsTmFtZSA9IGFUYWcubG9jYWxOYW1lKCk7Ci0gICAg
QXRvbWljSFRNTFRva2VuIGFTdGFydFRva2VuKEhUTUxUb2tlbjo6U3RhcnRUYWcsIGFUYWdMb2Nh
bE5hbWUsIFdURjo6bW92ZShhdHRyaWJ1dGVzKSk7CisgICAgQXRvbWljSFRNTFRva2VuIGFTdGFy
dFRva2VuKEhUTUxUb2tlbjo6U3RhcnRUYWcsIGFUYWdMb2NhbE5hbWUsIFdURk1vdmUoYXR0cmli
dXRlcykpOwogICAgIEF0b21pY0hUTUxUb2tlbiBhRW5kVG9rZW4oSFRNTFRva2VuOjpFbmRUYWcs
IGFUYWdMb2NhbE5hbWUpOwogCiAgICAgcHJvY2Vzc1N0YXJ0VGFnKGFTdGFydFRva2VuKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1RleHREb2N1bWVudFBhcnNlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9UZXh0RG9jdW1lbnRQYXJzZXIuY3BwCmlu
ZGV4IGFjZDRiNjM3MTFjY2I2MmQ4MzEwY2IxNjgwZWMxYTMyNzg5YjZlOTEuLmEzZjViMmM3ZTE0
Y2QxMjExYTdmMWMzMmNjYTViMTQ0OWJkOWQ0MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL1RleHREb2N1bWVudFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9wYXJzZXIvVGV4dERvY3VtZW50UGFyc2VyLmNwcApAQCAtNDAsNyArNDAsNyBAQCB2b2lk
IFRleHREb2N1bWVudFBhcnNlcjo6YXBwZW5kKFJlZlB0cjxTdHJpbmdJbXBsPiYmIHRleHQpCiB7
CiAgICAgaWYgKCFtX2hhdmVJbnNlcnRlZEZha2VQcmVFbGVtZW50KQogICAgICAgICBpbnNlcnRG
YWtlUHJlRWxlbWVudCgpOwotICAgIEhUTUxEb2N1bWVudFBhcnNlcjo6YXBwZW5kKFdURjo6bW92
ZSh0ZXh0KSk7CisgICAgSFRNTERvY3VtZW50UGFyc2VyOjphcHBlbmQoV1RGTW92ZSh0ZXh0KSk7
CiB9CiAKIHZvaWQgVGV4dERvY3VtZW50UGFyc2VyOjppbnNlcnRGYWtlUHJlRWxlbWVudCgpCkBA
IC01Miw3ICs1Miw3IEBAIHZvaWQgVGV4dERvY3VtZW50UGFyc2VyOjppbnNlcnRGYWtlUHJlRWxl
bWVudCgpCiAgICAgLy8gZGlzdHJ1YmluZyB0aGUgbGluZS9jb2x1bW4gbnVtYmVyIGNhbGN1bGF0
aW9ucy4KICAgICBWZWN0b3I8QXR0cmlidXRlPiBhdHRyaWJ1dGVzOwogICAgIGF0dHJpYnV0ZXMu
YXBwZW5kKEF0dHJpYnV0ZShzdHlsZUF0dHIsICJ3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7IHdoaXRl
LXNwYWNlOiBwcmUtd3JhcDsiKSk7Ci0gICAgQXRvbWljSFRNTFRva2VuIGZha2VQcmUoSFRNTFRv
a2VuOjpTdGFydFRhZywgcHJlVGFnLmxvY2FsTmFtZSgpLCBXVEY6Om1vdmUoYXR0cmlidXRlcykp
OworICAgIEF0b21pY0hUTUxUb2tlbiBmYWtlUHJlKEhUTUxUb2tlbjo6U3RhcnRUYWcsIHByZVRh
Zy5sb2NhbE5hbWUoKSwgV1RGTW92ZShhdHRyaWJ1dGVzKSk7CiAgICAgdHJlZUJ1aWxkZXIoKS5j
b25zdHJ1Y3RUcmVlKGZha2VQcmUpOwogCiAgICAgLy8gTm9ybWFsbHkgd2Ugd291bGQgc2tpcCB0
aGUgZmlyc3QgXG4gYWZ0ZXIgYSA8cHJlPiBlbGVtZW50LCBidXQgd2UgZG9uJ3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3JEZWxlZ2F0ZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9yRGVsZWdhdGUuY3BwCmluZGV4IGY1
NGQ5MmFmZTA1MzBlM2YzOGU1M2I2N2JkN2Q3NDcxNjdhNzJlOWIuLjI2ODBmNWQyNGU1OTYwZjVi
NjhhODBiNDEyNmQzYWVkYTIxNzFlNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL1hTU0F1ZGl0b3JEZWxlZ2F0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvWFNTQXVkaXRvckRlbGVnYXRlLmNwcApAQCAtODcsNyArODcsNyBAQCBQYXNzUmVmUHRy
PEZvcm1EYXRhPiBYU1NBdWRpdG9yRGVsZWdhdGU6OmdlbmVyYXRlVmlvbGF0aW9uUmVwb3J0KGNv
bnN0IFhTU0luZm8mCiAgICAgcmVwb3J0RGV0YWlscy0+c2V0U3RyaW5nKCJyZXF1ZXN0LWJvZHki
LCBodHRwQm9keSk7CiAKICAgICBSZWY8SW5zcGVjdG9yT2JqZWN0PiByZXBvcnRPYmplY3QgPSBJ
bnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwotICAgIHJlcG9ydE9iamVjdC0+c2V0T2JqZWN0KCJ4
c3MtcmVwb3J0IiwgV1RGOjptb3ZlKHJlcG9ydERldGFpbHMpKTsKKyAgICByZXBvcnRPYmplY3Qt
PnNldE9iamVjdCgieHNzLXJlcG9ydCIsIFdURk1vdmUocmVwb3J0RGV0YWlscykpOwogCiAgICAg
cmV0dXJuIEZvcm1EYXRhOjpjcmVhdGUocmVwb3J0T2JqZWN0LT50b0pTT05TdHJpbmcoKS51dGY4
KCkuZGF0YSgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0Rl
dGFpbHNNYXJrZXJDb250cm9sLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0RldGFp
bHNNYXJrZXJDb250cm9sLmNwcAppbmRleCAxNjcwM2JkMWEyYTRmOGQ4YTE3YjdlYTcxODA5MWRi
NzhlYmQzNzYwLi41MTM4MWY5NDNjZWRmNTBiMzExOTJhNTZlNGIyYzMzYmE2Mzc1YzkwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9EZXRhaWxzTWFya2VyQ29udHJvbC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvRGV0YWlsc01hcmtlckNvbnRyb2wu
Y3BwCkBAIC01Miw3ICs1Miw3IEBAIERldGFpbHNNYXJrZXJDb250cm9sOjpEZXRhaWxzTWFya2Vy
Q29udHJvbChEb2N1bWVudCYgZG9jdW1lbnQpCiAKIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBE
ZXRhaWxzTWFya2VyQ29udHJvbDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHls
ZT4mJiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKIHsKLSAgICByZXR1cm4gY3Jl
YXRlUmVuZGVyZXI8UmVuZGVyRGV0YWlsc01hcmtlcj4oKnRoaXMsIFdURjo6bW92ZShzdHlsZSkp
OworICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJEZXRhaWxzTWFya2VyPigqdGhpcywg
V1RGTW92ZShzdHlsZSkpOwogfQogCiBib29sIERldGFpbHNNYXJrZXJDb250cm9sOjpyZW5kZXJl
cklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcAppbmRleCBhMWVhNWVmYTNl
NjhkMGZjMDM2ZTE4NTNkZTMwMjZkMDAzM2YwOGEyLi4wNzliYzBmOGMxOTYzNTc2YjZhODNmMzlm
MzZkOTZmN2UxNDNjNmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9N
ZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
TWVkaWFDb250cm9sRWxlbWVudHMuY3BwCkBAIC0zMDksNyArMzA5LDcgQEAgdm9pZCBNZWRpYUNv
bnRyb2xUaW1lbGluZUNvbnRhaW5lckVsZW1lbnQ6OnNldFRpbWVEaXNwbGF5c0hpZGRlbihib29s
IGhpZGRlbikKIAogUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IE1lZGlhQ29udHJvbFRpbWVsaW5l
Q29udGFpbmVyRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4m
JiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKIHsKLSAgICByZXR1cm4gY3JlYXRl
UmVuZGVyZXI8UmVuZGVyTWVkaWFDb250cm9sVGltZWxpbmVDb250YWluZXI+KCp0aGlzLCBXVEY6
Om1vdmUoc3R5bGUpKTsKKyAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyTWVkaWFDb250
cm9sVGltZWxpbmVDb250YWluZXI+KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7CiB9CiAKIC8vIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTMyOSw3ICszMjksNyBAQCBSZWY8TWVkaWFD
b250cm9sVm9sdW1lU2xpZGVyQ29udGFpbmVyRWxlbWVudD4gTWVkaWFDb250cm9sVm9sdW1lU2xp
ZGVyQ29udGFpbmVyRQogCiBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gTWVkaWFDb250cm9sVm9s
dW1lU2xpZGVyQ29udGFpbmVyRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5k
ZXJTdHlsZT4mJiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKIHsKLSAgICByZXR1
cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyTWVkaWFWb2x1bWVTbGlkZXJDb250YWluZXI+KCp0aGlz
LCBXVEY6Om1vdmUoc3R5bGUpKTsKKyAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyTWVk
aWFWb2x1bWVTbGlkZXJDb250YWluZXI+KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7CiB9CiAKIHZv
aWQgTWVkaWFDb250cm9sVm9sdW1lU2xpZGVyQ29udGFpbmVyRWxlbWVudDo6ZGVmYXVsdEV2ZW50
SGFuZGxlcihFdmVudCogZXZlbnQpCkBAIC04MDcsNyArODA3LDcgQEAgdm9pZCBNZWRpYUNvbnRy
b2xDbG9zZWRDYXB0aW9uc1RyYWNrTGlzdEVsZW1lbnQ6OnJlYnVpbGRUcmFja0xpc3RNZW51KCkK
IAogICAgIFJlZjxFbGVtZW50PiBjYXB0aW9uc0hlYWRlciA9IGRvY3VtZW50KCkuY3JlYXRlRWxl
bWVudChoM1RhZywgQVNTRVJUX05PX0VYQ0VQVElPTik7CiAgICAgY2FwdGlvbnNIZWFkZXItPmFw
cGVuZENoaWxkKGRvY3VtZW50KCkuY3JlYXRlVGV4dE5vZGUodGV4dFRyYWNrU3VidGl0bGVzVGV4
dCgpKSk7Ci0gICAgYXBwZW5kQ2hpbGQoV1RGOjptb3ZlKGNhcHRpb25zSGVhZGVyKSk7CisgICAg
YXBwZW5kQ2hpbGQoV1RGTW92ZShjYXB0aW9uc0hlYWRlcikpOwogICAgIFJlZjxFbGVtZW50PiBj
YXB0aW9uc01lbnVMaXN0ID0gZG9jdW1lbnQoKS5jcmVhdGVFbGVtZW50KHVsVGFnLCBBU1NFUlRf
Tk9fRVhDRVBUSU9OKTsKIAogICAgIGZvciAoYXV0byYgdGV4dFRyYWNrIDogdHJhY2tzRm9yTWVu
dSkgewpAQCAtODE4LDcgKzgxOCw3IEBAIHZvaWQgTWVkaWFDb250cm9sQ2xvc2VkQ2FwdGlvbnNU
cmFja0xpc3RFbGVtZW50OjpyZWJ1aWxkVHJhY2tMaXN0TWVudSgpCiAgICAgICAgIG1fbWVudVRv
VHJhY2tNYXAuYWRkKG1lbnVJdGVtLnB0cigpLCB0ZXh0VHJhY2spOwogICAgIH0KIAotICAgIGFw
cGVuZENoaWxkKFdURjo6bW92ZShjYXB0aW9uc01lbnVMaXN0KSk7CisgICAgYXBwZW5kQ2hpbGQo
V1RGTW92ZShjYXB0aW9uc01lbnVMaXN0KSk7CiAjZW5kaWYKIH0KIApAQCAtMTA4NCw3ICsxMDg0
LDcgQEAgUmVmPE1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ+IE1lZGlhQ29u
dHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQKIAogUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+
IE1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5k
ZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYp
CiB7Ci0gICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlclRleHRUcmFja0NvbnRhaW5lckVs
ZW1lbnQ+KCp0aGlzLCBXVEY6Om1vdmUoc3R5bGUpKTsKKyAgICByZXR1cm4gY3JlYXRlUmVuZGVy
ZXI8UmVuZGVyVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudD4oKnRoaXMsIFdURk1vdmUoc3R5bGUp
KTsKIH0KIAogc3RhdGljIGJvb2wgY29tcGFyZUN1ZUludGVydmFsRm9yRGlzcGxheShjb25zdCBD
dWVJbnRlcnZhbCYgb25lLCBjb25zdCBDdWVJbnRlcnZhbCYgdHdvKQpAQCAtMTM3NCw3ICsxMzc0
LDcgQEAgUmVmUHRyPEltYWdlPiBNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50
OjpjcmVhdGVUZXh0VHJhY2tSZXByZXNlbnRhdGkKIAogICAgIGxheWVyLT5wYWludChidWZmZXIt
PmNvbnRleHQoKSwgcGFpbnRpbmdSZWN0LCBMYXlvdXRTaXplKCksIFBhaW50QmVoYXZpb3JGbGF0
dGVuQ29tcG9zaXRpbmdMYXllcnMsIG51bGxwdHIsIFJlbmRlckxheWVyOjpQYWludExheWVyUGFp
bnRpbmdDb21wb3NpdGluZ0FsbFBoYXNlcyk7CiAKLSAgICByZXR1cm4gSW1hZ2VCdWZmZXI6OnNp
bmtJbnRvSW1hZ2UoV1RGOjptb3ZlKGJ1ZmZlcikpOworICAgIHJldHVybiBJbWFnZUJ1ZmZlcjo6
c2lua0ludG9JbWFnZShXVEZNb3ZlKGJ1ZmZlcikpOwogfQogCiB2b2lkIE1lZGlhQ29udHJvbFRl
eHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6OnRleHRUcmFja1JlcHJlc2VudGF0aW9uQm91bmRzQ2hh
bmdlZChjb25zdCBJbnRSZWN0JikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L01lZGlhQ29udHJvbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFD
b250cm9scy5jcHAKaW5kZXggOWRmOTk4ZjFhOTg3YmM5MmZmNzg4NGQ1NTMzMTg2MmExNWNiOWIy
My4uYjg1ZmRjMTAxYTQ3OTVkMzcwNjY5YjY1YTcwMjlkY2RkMWRiMzQyNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9scy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9scy5jcHAKQEAgLTM4Nyw3ICszODcsNyBA
QCB2b2lkIE1lZGlhQ29udHJvbHM6OmNyZWF0ZVRleHRUcmFja0Rpc3BsYXkoKQogICAgICAgICBt
X3RleHREaXNwbGF5Q29udGFpbmVyLT5zZXRNZWRpYUNvbnRyb2xsZXIobV9tZWRpYUNvbnRyb2xs
ZXIpOwogCiAgICAgLy8gSW5zZXJ0IGl0IGJlZm9yZSB0aGUgZmlyc3QgY29udHJvbGxlciBlbGVt
ZW50IHNvIGl0IGFsd2F5cyBkaXNwbGF5cyBiZWhpbmQgdGhlIGNvbnRyb2xzLgotICAgIGluc2Vy
dEJlZm9yZShXVEY6Om1vdmUodGV4dERpc3BsYXlDb250YWluZXIpLCBtX3BhbmVsLCBJR05PUkVf
RVhDRVBUSU9OKTsKKyAgICBpbnNlcnRCZWZvcmUoV1RGTW92ZSh0ZXh0RGlzcGxheUNvbnRhaW5l
ciksIG1fcGFuZWwsIElHTk9SRV9FWENFUFRJT04pOwogfQogCiB2b2lkIE1lZGlhQ29udHJvbHM6
OnNob3dUZXh0VHJhY2tEaXNwbGF5KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L01lZGlhQ29udHJvbHNBcHBsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9NZWRpYUNvbnRyb2xzQXBwbGUuY3BwCmluZGV4IDdmYjI2M2Q4YTc4OGM5MDdlOTZmMjVhYmYw
OTZlMTU1YmEwYmE5MzkuLjU4YmJlMDRjNjQ2MjZjZGFkZjgyNzliZDg1NTZhNGRlNjIxYTJjMDkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHNBcHBs
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0FwcGxl
LmNwcApAQCAtNzMsMjYgKzczLDI2IEBAIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sc0FwcGxlPiBN
ZWRpYUNvbnRyb2xzQXBwbGU6OmNyZWF0ZUNvbnRyb2xzKERvY3VtZW50JiBkb2N1CiAKICAgICBS
ZWY8TWVkaWFDb250cm9sUmV3aW5kQnV0dG9uRWxlbWVudD4gcmV3aW5kQnV0dG9uID0gTWVkaWFD
b250cm9sUmV3aW5kQnV0dG9uRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKICAgICBjb250cm9s
cy0+bV9yZXdpbmRCdXR0b24gPSByZXdpbmRCdXR0b24ucHRyKCk7Ci0gICAgcGFuZWwtPmFwcGVu
ZENoaWxkKFdURjo6bW92ZShyZXdpbmRCdXR0b24pLCBlYyk7CisgICAgcGFuZWwtPmFwcGVuZENo
aWxkKFdURk1vdmUocmV3aW5kQnV0dG9uKSwgZWMpOwogICAgIGlmIChlYykKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKICAgICBSZWY8TWVkaWFDb250cm9sUGxheUJ1dHRvbkVsZW1lbnQ+IHBs
YXlCdXR0b24gPSBNZWRpYUNvbnRyb2xQbGF5QnV0dG9uRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50
KTsKICAgICBjb250cm9scy0+bV9wbGF5QnV0dG9uID0gcGxheUJ1dHRvbi5wdHIoKTsKLSAgICBw
YW5lbC0+YXBwZW5kQ2hpbGQoV1RGOjptb3ZlKHBsYXlCdXR0b24pLCBlYyk7CisgICAgcGFuZWwt
PmFwcGVuZENoaWxkKFdURk1vdmUocGxheUJ1dHRvbiksIGVjKTsKICAgICBpZiAoZWMpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCiAgICAgUmVmPE1lZGlhQ29udHJvbFJldHVyblRvUmVhbHRp
bWVCdXR0b25FbGVtZW50PiByZXR1cm5Ub1JlYWx0aW1lQnV0dG9uID0gTWVkaWFDb250cm9sUmV0
dXJuVG9SZWFsdGltZUJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7CiAgICAgY29udHJv
bHMtPm1fcmV0dXJuVG9SZWFsVGltZUJ1dHRvbiA9IHJldHVyblRvUmVhbHRpbWVCdXR0b24ucHRy
KCk7Ci0gICAgcGFuZWwtPmFwcGVuZENoaWxkKFdURjo6bW92ZShyZXR1cm5Ub1JlYWx0aW1lQnV0
dG9uKSwgZWMpOworICAgIHBhbmVsLT5hcHBlbmRDaGlsZChXVEZNb3ZlKHJldHVyblRvUmVhbHRp
bWVCdXR0b24pLCBlYyk7CiAgICAgaWYgKGVjKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAog
ICAgIGlmIChkb2N1bWVudC5wYWdlKCktPnRoZW1lKCkudXNlc01lZGlhQ29udHJvbFN0YXR1c0Rp
c3BsYXkoKSkgewogICAgICAgICBSZWY8TWVkaWFDb250cm9sU3RhdHVzRGlzcGxheUVsZW1lbnQ+
IHN0YXR1c0Rpc3BsYXkgPSBNZWRpYUNvbnRyb2xTdGF0dXNEaXNwbGF5RWxlbWVudDo6Y3JlYXRl
KGRvY3VtZW50KTsKICAgICAgICAgY29udHJvbHMtPm1fc3RhdHVzRGlzcGxheSA9IHN0YXR1c0Rp
c3BsYXkucHRyKCk7Ci0gICAgICAgIHBhbmVsLT5hcHBlbmRDaGlsZChXVEY6Om1vdmUoc3RhdHVz
RGlzcGxheSksIGVjKTsKKyAgICAgICAgcGFuZWwtPmFwcGVuZENoaWxkKFdURk1vdmUoc3RhdHVz
RGlzcGxheSksIGVjKTsKICAgICAgICAgaWYgKGVjKQogICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgfQpAQCAtMTAxLDM4ICsxMDEsMzggQEAgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xz
QXBwbGU+IE1lZGlhQ29udHJvbHNBcHBsZTo6Y3JlYXRlQ29udHJvbHMoRG9jdW1lbnQmIGRvY3UK
IAogICAgIFJlZjxNZWRpYUNvbnRyb2xDdXJyZW50VGltZURpc3BsYXlFbGVtZW50PiBjdXJyZW50
VGltZURpc3BsYXkgPSBNZWRpYUNvbnRyb2xDdXJyZW50VGltZURpc3BsYXlFbGVtZW50OjpjcmVh
dGUoZG9jdW1lbnQpOwogICAgIGNvbnRyb2xzLT5tX2N1cnJlbnRUaW1lRGlzcGxheSA9IGN1cnJl
bnRUaW1lRGlzcGxheS5wdHIoKTsKLSAgICB0aW1lbGluZUNvbnRhaW5lci0+YXBwZW5kQ2hpbGQo
V1RGOjptb3ZlKGN1cnJlbnRUaW1lRGlzcGxheSksIGVjKTsKKyAgICB0aW1lbGluZUNvbnRhaW5l
ci0+YXBwZW5kQ2hpbGQoV1RGTW92ZShjdXJyZW50VGltZURpc3BsYXkpLCBlYyk7CiAgICAgaWYg
KGVjKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIFJlZjxNZWRpYUNvbnRyb2xUaW1l
bGluZUVsZW1lbnQ+IHRpbWVsaW5lID0gTWVkaWFDb250cm9sVGltZWxpbmVFbGVtZW50OjpjcmVh
dGUoZG9jdW1lbnQsIGNvbnRyb2xzLmdldCgpKTsKICAgICBjb250cm9scy0+bV90aW1lbGluZSA9
IHRpbWVsaW5lLnB0cigpOwotICAgIHRpbWVsaW5lQ29udGFpbmVyLT5hcHBlbmRDaGlsZChXVEY6
Om1vdmUodGltZWxpbmUpLCBlYyk7CisgICAgdGltZWxpbmVDb250YWluZXItPmFwcGVuZENoaWxk
KFdURk1vdmUodGltZWxpbmUpLCBlYyk7CiAgICAgaWYgKGVjKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIAogICAgIFJlZjxNZWRpYUNvbnRyb2xUaW1lUmVtYWluaW5nRGlzcGxheUVsZW1lbnQ+
IHRpbWVSZW1haW5pbmdEaXNwbGF5ID0gTWVkaWFDb250cm9sVGltZVJlbWFpbmluZ0Rpc3BsYXlF
bGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwogICAgIGNvbnRyb2xzLT5tX3RpbWVSZW1haW5pbmdE
aXNwbGF5ID0gdGltZVJlbWFpbmluZ0Rpc3BsYXkucHRyKCk7Ci0gICAgdGltZWxpbmVDb250YWlu
ZXItPmFwcGVuZENoaWxkKFdURjo6bW92ZSh0aW1lUmVtYWluaW5nRGlzcGxheSksIGVjKTsKKyAg
ICB0aW1lbGluZUNvbnRhaW5lci0+YXBwZW5kQ2hpbGQoV1RGTW92ZSh0aW1lUmVtYWluaW5nRGlz
cGxheSksIGVjKTsKICAgICBpZiAoZWMpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAg
Y29udHJvbHMtPm1fdGltZWxpbmVDb250YWluZXIgPSB0aW1lbGluZUNvbnRhaW5lci5wdHIoKTsK
LSAgICBwYW5lbC0+YXBwZW5kQ2hpbGQoV1RGOjptb3ZlKHRpbWVsaW5lQ29udGFpbmVyKSwgZWMp
OworICAgIHBhbmVsLT5hcHBlbmRDaGlsZChXVEZNb3ZlKHRpbWVsaW5lQ29udGFpbmVyKSwgZWMp
OwogICAgIGlmIChlYykKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAvLyBGSVhNRTog
T25seSBjcmVhdGUgd2hlbiBuZWVkZWQgPGh0dHA6Ly93ZWJraXQub3JnL2IvNTcxNjM+CiAgICAg
UmVmPE1lZGlhQ29udHJvbFNlZWtCYWNrQnV0dG9uRWxlbWVudD4gc2Vla0JhY2tCdXR0b24gPSBN
ZWRpYUNvbnRyb2xTZWVrQmFja0J1dHRvbkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7CiAgICAg
Y29udHJvbHMtPm1fc2Vla0JhY2tCdXR0b24gPSBzZWVrQmFja0J1dHRvbi5wdHIoKTsKLSAgICBw
YW5lbC0+YXBwZW5kQ2hpbGQoV1RGOjptb3ZlKHNlZWtCYWNrQnV0dG9uKSwgZWMpOworICAgIHBh
bmVsLT5hcHBlbmRDaGlsZChXVEZNb3ZlKHNlZWtCYWNrQnV0dG9uKSwgZWMpOwogICAgIGlmIChl
YykKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAvLyBGSVhNRTogT25seSBjcmVhdGUg
d2hlbiBuZWVkZWQgPGh0dHA6Ly93ZWJraXQub3JnL2IvNTcxNjM+CiAgICAgUmVmPE1lZGlhQ29u
dHJvbFNlZWtGb3J3YXJkQnV0dG9uRWxlbWVudD4gc2Vla0ZvcndhcmRCdXR0b24gPSBNZWRpYUNv
bnRyb2xTZWVrRm9yd2FyZEJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7CiAgICAgY29u
dHJvbHMtPm1fc2Vla0ZvcndhcmRCdXR0b24gPSBzZWVrRm9yd2FyZEJ1dHRvbi5wdHIoKTsKLSAg
ICBwYW5lbC0+YXBwZW5kQ2hpbGQoV1RGOjptb3ZlKHNlZWtGb3J3YXJkQnV0dG9uKSwgZWMpOwor
ICAgIHBhbmVsLT5hcHBlbmRDaGlsZChXVEZNb3ZlKHNlZWtGb3J3YXJkQnV0dG9uKSwgZWMpOwog
ICAgIGlmIChlYykKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTE0MSwxOCArMTQxLDE4
IEBAIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sc0FwcGxlPiBNZWRpYUNvbnRyb2xzQXBwbGU6OmNy
ZWF0ZUNvbnRyb2xzKERvY3VtZW50JiBkb2N1CiAKICAgICAgICAgUmVmPE1lZGlhQ29udHJvbENs
b3NlZENhcHRpb25zVHJhY2tMaXN0RWxlbWVudD4gY2xvc2VkQ2FwdGlvbnNUcmFja0xpc3QgPSBN
ZWRpYUNvbnRyb2xDbG9zZWRDYXB0aW9uc1RyYWNrTGlzdEVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVu
dCwgY29udHJvbHMuZ2V0KCkpOwogICAgICAgICBjb250cm9scy0+bV9jbG9zZWRDYXB0aW9uc1Ry
YWNrTGlzdCA9IGNsb3NlZENhcHRpb25zVHJhY2tMaXN0LnB0cigpOwotICAgICAgICBjbG9zZWRD
YXB0aW9uc0NvbnRhaW5lci0+YXBwZW5kQ2hpbGQoV1RGOjptb3ZlKGNsb3NlZENhcHRpb25zVHJh
Y2tMaXN0KSwgZWMpOworICAgICAgICBjbG9zZWRDYXB0aW9uc0NvbnRhaW5lci0+YXBwZW5kQ2hp
bGQoV1RGTW92ZShjbG9zZWRDYXB0aW9uc1RyYWNrTGlzdCksIGVjKTsKICAgICAgICAgaWYgKGVj
KQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAgICAgUmVmPE1lZGlhQ29udHJv
bFRvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9uRWxlbWVudD4gdG9nZ2xlQ2xvc2VkQ2FwdGlvbnNC
dXR0b24gPSBNZWRpYUNvbnRyb2xUb2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbkVsZW1lbnQ6OmNy
ZWF0ZShkb2N1bWVudCwgY29udHJvbHMuZ2V0KCkpOwogICAgICAgICBjb250cm9scy0+bV90b2dn
bGVDbG9zZWRDYXB0aW9uc0J1dHRvbiA9IHRvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9uLnB0cigp
OwotICAgICAgICBwYW5lbC0+YXBwZW5kQ2hpbGQoV1RGOjptb3ZlKHRvZ2dsZUNsb3NlZENhcHRp
b25zQnV0dG9uKSwgZWMpOworICAgICAgICBwYW5lbC0+YXBwZW5kQ2hpbGQoV1RGTW92ZSh0b2dn
bGVDbG9zZWRDYXB0aW9uc0J1dHRvbiksIGVjKTsKICAgICAgICAgaWYgKGVjKQogICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAgICAgY29udHJvbHMtPm1fY2xvc2VkQ2FwdGlvbnND
b250YWluZXIgPSBjbG9zZWRDYXB0aW9uc0NvbnRhaW5lci5wdHIoKTsKLSAgICAgICAgY29udHJv
bHMtPmFwcGVuZENoaWxkKFdURjo6bW92ZShjbG9zZWRDYXB0aW9uc0NvbnRhaW5lciksIGVjKTsK
KyAgICAgICAgY29udHJvbHMtPmFwcGVuZENoaWxkKFdURk1vdmUoY2xvc2VkQ2FwdGlvbnNDb250
YWluZXIpLCBlYyk7CiAgICAgICAgIGlmIChlYykKICAgICAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIH0KQEAgLTE2MCw3ICsxNjAsNyBAQCBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbHNBcHBs
ZT4gTWVkaWFDb250cm9sc0FwcGxlOjpjcmVhdGVDb250cm9scyhEb2N1bWVudCYgZG9jdQogICAg
IC8vIEZJWE1FOiBPbmx5IGNyZWF0ZSB3aGVuIG5lZWRlZCA8aHR0cDovL3dlYmtpdC5vcmcvYi81
NzE2Mz4KICAgICBSZWY8TWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1dHRvbkVsZW1lbnQ+IGZ1bGxT
Y3JlZW5CdXR0b24gPSBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uRWxlbWVudDo6Y3JlYXRl
KGRvY3VtZW50KTsKICAgICBjb250cm9scy0+bV9mdWxsU2NyZWVuQnV0dG9uID0gZnVsbFNjcmVl
bkJ1dHRvbi5wdHIoKTsKLSAgICBwYW5lbC0+YXBwZW5kQ2hpbGQoV1RGOjptb3ZlKGZ1bGxTY3Jl
ZW5CdXR0b24pLCBlYyk7CisgICAgcGFuZWwtPmFwcGVuZENoaWxkKFdURk1vdmUoZnVsbFNjcmVl
bkJ1dHRvbiksIGVjKTsKIAogICAgIC8vIFRoZSBtdXRlIGJ1dHRvbiBhbmQgdGhlIHNsaWRlciBl
bGVtZW50IHNob3VsZCBiZSBpbiB0aGUgc2FtZSBkaXYuCiAgICAgUmVmPEhUTUxEaXZFbGVtZW50
PiBwYW5lbFZvbHVtZUNvbnRyb2xDb250YWluZXIgPSBIVE1MRGl2RWxlbWVudDo6Y3JlYXRlKGRv
Y3VtZW50KTsKQEAgLTE3MCw3ICsxNzAsNyBAQCBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbHNBcHBs
ZT4gTWVkaWFDb250cm9sc0FwcGxlOjpjcmVhdGVDb250cm9scyhEb2N1bWVudCYgZG9jdQogCiAg
ICAgICAgIFJlZjxNZWRpYUNvbnRyb2xQYW5lbFZvbHVtZVNsaWRlckVsZW1lbnQ+IHNsaWRlciA9
IE1lZGlhQ29udHJvbFBhbmVsVm9sdW1lU2xpZGVyRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsK
ICAgICAgICAgY29udHJvbHMtPm1fdm9sdW1lU2xpZGVyID0gc2xpZGVyLnB0cigpOwotICAgICAg
ICB2b2x1bWVTbGlkZXJDb250YWluZXItPmFwcGVuZENoaWxkKFdURjo6bW92ZShzbGlkZXIpLCBl
Yyk7CisgICAgICAgIHZvbHVtZVNsaWRlckNvbnRhaW5lci0+YXBwZW5kQ2hpbGQoV1RGTW92ZShz
bGlkZXIpLCBlYyk7CiAgICAgICAgIGlmIChlYykKICAgICAgICAgICAgIHJldHVybiBudWxscHRy
OwogCkBAIC0xNzgsNDggKzE3OCw0OCBAQCBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbHNBcHBsZT4g
TWVkaWFDb250cm9sc0FwcGxlOjpjcmVhdGVDb250cm9scyhEb2N1bWVudCYgZG9jdQogICAgICAg
ICAvLyBJdCdzIGltcG9ydGFudCBvbmx5IHdoZW4gdGhlIHZvbHVtZSBiYXIgaXMgZGlzcGxheWVk
IGJlbG93IHRoZSBjb250cm9scy4KICAgICAgICAgUmVmPE1lZGlhQ29udHJvbFZvbHVtZVNsaWRl
ck11dGVCdXR0b25FbGVtZW50PiB2b2x1bWVTbGlkZXJNdXRlQnV0dG9uID0gTWVkaWFDb250cm9s
Vm9sdW1lU2xpZGVyTXV0ZUJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7CiAgICAgICAg
IGNvbnRyb2xzLT5tX3ZvbHVtZVNsaWRlck11dGVCdXR0b24gPSB2b2x1bWVTbGlkZXJNdXRlQnV0
dG9uLnB0cigpOwotICAgICAgICB2b2x1bWVTbGlkZXJDb250YWluZXItPmFwcGVuZENoaWxkKFdU
Rjo6bW92ZSh2b2x1bWVTbGlkZXJNdXRlQnV0dG9uKSwgZWMpOworICAgICAgICB2b2x1bWVTbGlk
ZXJDb250YWluZXItPmFwcGVuZENoaWxkKFdURk1vdmUodm9sdW1lU2xpZGVyTXV0ZUJ1dHRvbiks
IGVjKTsKIAogICAgICAgICBpZiAoZWMpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAog
ICAgICAgICBjb250cm9scy0+bV92b2x1bWVTbGlkZXJDb250YWluZXIgPSB2b2x1bWVTbGlkZXJD
b250YWluZXIucHRyKCk7Ci0gICAgICAgIHBhbmVsVm9sdW1lQ29udHJvbENvbnRhaW5lci0+YXBw
ZW5kQ2hpbGQoV1RGOjptb3ZlKHZvbHVtZVNsaWRlckNvbnRhaW5lciksIGVjKTsKKyAgICAgICAg
cGFuZWxWb2x1bWVDb250cm9sQ29udGFpbmVyLT5hcHBlbmRDaGlsZChXVEZNb3ZlKHZvbHVtZVNs
aWRlckNvbnRhaW5lciksIGVjKTsKICAgICAgICAgaWYgKGVjKQogICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgfQogCiAgICAgUmVmPE1lZGlhQ29udHJvbFBhbmVsTXV0ZUJ1dHRvbkVs
ZW1lbnQ+IHBhbmVsTXV0ZUJ1dHRvbiA9IE1lZGlhQ29udHJvbFBhbmVsTXV0ZUJ1dHRvbkVsZW1l
bnQ6OmNyZWF0ZShkb2N1bWVudCwgY29udHJvbHMuZ2V0KCkpOwogICAgIGNvbnRyb2xzLT5tX3Bh
bmVsTXV0ZUJ1dHRvbiA9IHBhbmVsTXV0ZUJ1dHRvbi5wdHIoKTsKLSAgICBwYW5lbFZvbHVtZUNv
bnRyb2xDb250YWluZXItPmFwcGVuZENoaWxkKFdURjo6bW92ZShwYW5lbE11dGVCdXR0b24pLCBl
Yyk7CisgICAgcGFuZWxWb2x1bWVDb250cm9sQ29udGFpbmVyLT5hcHBlbmRDaGlsZChXVEZNb3Zl
KHBhbmVsTXV0ZUJ1dHRvbiksIGVjKTsKICAgICBpZiAoZWMpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCi0gICAgcGFuZWwtPmFwcGVuZENoaWxkKFdURjo6bW92ZShwYW5lbFZvbHVtZUNvbnRy
b2xDb250YWluZXIpLCBlYyk7CisgICAgcGFuZWwtPmFwcGVuZENoaWxkKFdURk1vdmUocGFuZWxW
b2x1bWVDb250cm9sQ29udGFpbmVyKSwgZWMpOwogICAgIGlmIChlYykKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKICAgICAvLyBGSVhNRTogT25seSBjcmVhdGUgd2hlbiBuZWVkZWQgPGh0dHA6
Ly93ZWJraXQub3JnL2IvNTcxNjM+CiAgICAgUmVmPE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1
bWVNaW5CdXR0b25FbGVtZW50PiBmdWxsU2NyZWVuTWluVm9sdW1lQnV0dG9uID0gTWVkaWFDb250
cm9sRnVsbHNjcmVlblZvbHVtZU1pbkJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7CiAg
ICAgY29udHJvbHMtPm1fZnVsbFNjcmVlbk1pblZvbHVtZUJ1dHRvbiA9IGZ1bGxTY3JlZW5NaW5W
b2x1bWVCdXR0b24ucHRyKCk7Ci0gICAgcGFuZWwtPmFwcGVuZENoaWxkKFdURjo6bW92ZShmdWxs
U2NyZWVuTWluVm9sdW1lQnV0dG9uKSwgZWMpOworICAgIHBhbmVsLT5hcHBlbmRDaGlsZChXVEZN
b3ZlKGZ1bGxTY3JlZW5NaW5Wb2x1bWVCdXR0b24pLCBlYyk7CiAgICAgaWYgKGVjKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAogICAgIFJlZjxNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1l
U2xpZGVyRWxlbWVudD4gZnVsbFNjcmVlblZvbHVtZVNsaWRlciA9IE1lZGlhQ29udHJvbEZ1bGxz
Y3JlZW5Wb2x1bWVTbGlkZXJFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwogICAgIGNvbnRyb2xz
LT5tX2Z1bGxTY3JlZW5Wb2x1bWVTbGlkZXIgPSBmdWxsU2NyZWVuVm9sdW1lU2xpZGVyLnB0cigp
OwotICAgIHBhbmVsLT5hcHBlbmRDaGlsZChXVEY6Om1vdmUoZnVsbFNjcmVlblZvbHVtZVNsaWRl
ciksIGVjKTsKKyAgICBwYW5lbC0+YXBwZW5kQ2hpbGQoV1RGTW92ZShmdWxsU2NyZWVuVm9sdW1l
U2xpZGVyKSwgZWMpOwogICAgIGlmIChlYykKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAg
ICBSZWY8TWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZU1heEJ1dHRvbkVsZW1lbnQ+IGZ1bGxT
Y3JlZW5NYXhWb2x1bWVCdXR0b24gPSBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lTWF4QnV0
dG9uRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKICAgICBjb250cm9scy0+bV9mdWxsU2NyZWVu
TWF4Vm9sdW1lQnV0dG9uID0gZnVsbFNjcmVlbk1heFZvbHVtZUJ1dHRvbi5wdHIoKTsKLSAgICBw
YW5lbC0+YXBwZW5kQ2hpbGQoV1RGOjptb3ZlKGZ1bGxTY3JlZW5NYXhWb2x1bWVCdXR0b24pLCBl
Yyk7CisgICAgcGFuZWwtPmFwcGVuZENoaWxkKFdURk1vdmUoZnVsbFNjcmVlbk1heFZvbHVtZUJ1
dHRvbiksIGVjKTsKICAgICBpZiAoZWMpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAg
Y29udHJvbHMtPm1fcGFuZWwgPSBwYW5lbC5wdHIoKTsKLSAgICBjb250cm9scy0+YXBwZW5kQ2hp
bGQoV1RGOjptb3ZlKHBhbmVsKSwgZWMpOworICAgIGNvbnRyb2xzLT5hcHBlbmRDaGlsZChXVEZN
b3ZlKHBhbmVsKSwgZWMpOwogICAgIGlmIChlYykKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
QEAgLTUxNyw3ICs1MTcsNyBAQCB2b2lkIE1lZGlhQ29udHJvbHNBcHBsZTo6c2hvd0Nsb3NlZENh
cHRpb25UcmFja0xpc3QoKQogICAgIC8vIHRyYWNrIGxpc3QuIFRoZXNlIHR3byBsZXZlbHMgYXJl
IG5lY2Vzc2FyeSBzaW5jZSBpdCB3b3VsZCBub3QgYmUgcG9zc2libGUgdG8gZ2V0IGEKICAgICAv
LyByZWZlcmVuY2UgdG8gdGhlIHRyYWNrIGxpc3Qgd2hlbiBoYW5kbGluZyB0aGUgZXZlbnQgb3V0
c2lkZSBvZiB0aGUgc2hhZG93IHRyZWUuCiAgICAgZG9jdW1lbnQoKS5hZGRFdmVudExpc3RlbmVy
KGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50LCBsaXN0ZW5lci5jb3B5UmVmKCksIHRydWUpOwotICAg
IGFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmNsaWNrRXZlbnQsIFdURjo6bW92ZShsaXN0
ZW5lciksIHRydWUpOworICAgIGFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmNsaWNrRXZl
bnQsIFdURk1vdmUobGlzdGVuZXIpLCB0cnVlKTsKIH0KIAogdm9pZCBNZWRpYUNvbnRyb2xzQXBw
bGU6OmhpZGVDbG9zZWRDYXB0aW9uVHJhY2tMaXN0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L01ldGVyU2hhZG93RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9NZXRlclNoYWRvd0VsZW1lbnQuY3BwCmluZGV4IDQzMTFhNzA1OWU3OGM0NTQx
OTM1OWRkMWFkNTM3YWIyYmM3Njk0MDIuLjE2NDViODJhNjhkMTQwYzUxNTBmNDI3YmU0ZDAxNTI3
N2VlMGVlNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01ldGVyU2hh
ZG93RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWV0ZXJTaGFk
b3dFbGVtZW50LmNwcApAQCAtNzUsNyArNzUsNyBAQCBib29sIE1ldGVySW5uZXJFbGVtZW50Ojpy
ZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKIAogUmVuZGVyUHRyPFJl
bmRlckVsZW1lbnQ+IE1ldGVySW5uZXJFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVm
PFJlbmRlclN0eWxlPiYmIHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQogewotICAg
IHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJNZXRlcj4oKnRoaXMsIFdURjo6bW92ZShzdHls
ZSkpOworICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJNZXRlcj4oKnRoaXMsIFdURk1v
dmUoc3R5bGUpKTsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBNZXRlclZhbHVlRWxlbWVudDo6
dmFsdWVQc2V1ZG9JZCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9Qcm9ncmVzc1NoYWRvd0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvUHJvZ3Jlc3NTaGFkb3dFbGVtZW50LmNwcAppbmRleCA2OTI3YjRhNzAxMjU0ZjE2OWZiMGUy
MjMyMTIwM2MzMWZhM2FkMTZjLi4xMzk0NTFiODhkN2Y5MTBiNjYyMWU1ZTYxYzY4YTQ2ZmMzYTA4
ODE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Qcm9ncmVzc1NoYWRv
d0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1Byb2dyZXNzU2hh
ZG93RWxlbWVudC5jcHAKQEAgLTYyLDcgKzYyLDcgQEAgUHJvZ3Jlc3NJbm5lckVsZW1lbnQ6OlBy
b2dyZXNzSW5uZXJFbGVtZW50KERvY3VtZW50JiBkb2N1bWVudCkKIAogUmVuZGVyUHRyPFJlbmRl
ckVsZW1lbnQ+IFByb2dyZXNzSW5uZXJFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVm
PFJlbmRlclN0eWxlPiYmIHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQogewotICAg
IHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJQcm9ncmVzcz4oKnRoaXMsIFdURjo6bW92ZShz
dHlsZSkpOworICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJQcm9ncmVzcz4oKnRoaXMs
IFdURk1vdmUoc3R5bGUpKTsKIH0KIAogYm9vbCBQcm9ncmVzc0lubmVyRWxlbWVudDo6cmVuZGVy
ZXJJc05lZWRlZChjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmNwcAppbmRleCA3NmNjZjhiMThiMzMw
NWVhZTRiYjgxZTIxYzk2NGI3OGJhYWE3NWMyLi5mYjU4MzM2ODNkZWFjMGMwNjA2MWIwNmYwOGU3
N2M5YzFhNzNlODkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlk
ZXJUaHVtYkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRl
clRodW1iRWxlbWVudC5jcHAKQEAgLTc4LDcgKzc4LDcgQEAgaW5saW5lIHN0YXRpYyBib29sIGhh
c1ZlcnRpY2FsQXBwZWFyYW5jZShIVE1MSW5wdXRFbGVtZW50JiBpbnB1dCkKIC8vIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIFJlbmRlclNsaWRlclRodW1iOjpSZW5kZXJTbGlk
ZXJUaHVtYihTbGlkZXJUaHVtYkVsZW1lbnQmIGVsZW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4mJiBz
dHlsZSkKLSAgICA6IFJlbmRlckJsb2NrRmxvdyhlbGVtZW50LCBXVEY6Om1vdmUoc3R5bGUpKQor
ICAgIDogUmVuZGVyQmxvY2tGbG93KGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKQogewogfQogCkBA
IC0xMTIsNyArMTEyLDcgQEAgYm9vbCBSZW5kZXJTbGlkZXJUaHVtYjo6aXNTbGlkZXJUaHVtYigp
IGNvbnN0CiBjbGFzcyBSZW5kZXJTbGlkZXJDb250YWluZXIgZmluYWwgOiBwdWJsaWMgUmVuZGVy
RmxleGlibGVCb3ggewogcHVibGljOgogICAgIFJlbmRlclNsaWRlckNvbnRhaW5lcihTbGlkZXJD
b250YWluZXJFbGVtZW50JiBlbGVtZW50LCBSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCi0gICAg
ICAgIDogUmVuZGVyRmxleGlibGVCb3goZWxlbWVudCwgV1RGOjptb3ZlKHN0eWxlKSkKKyAgICAg
ICAgOiBSZW5kZXJGbGV4aWJsZUJveChlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSkKICAgICB7CiAg
ICAgfQogCkBAIC0yMjAsNyArMjIwLDcgQEAgdm9pZCBTbGlkZXJUaHVtYkVsZW1lbnQ6OnNldFBv
c2l0aW9uRnJvbVZhbHVlKCkKIAogUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNsaWRlclRodW1i
RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSwg
Y29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKIHsKLSAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8
UmVuZGVyU2xpZGVyVGh1bWI+KCp0aGlzLCBXVEY6Om1vdmUoc3R5bGUpKTsKKyAgICByZXR1cm4g
Y3JlYXRlUmVuZGVyZXI8UmVuZGVyU2xpZGVyVGh1bWI+KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7
CiB9CiAKIGJvb2wgU2xpZGVyVGh1bWJFbGVtZW50Ojppc0Rpc2FibGVkRm9ybUNvbnRyb2woKSBj
b25zdApAQCAtNjMyLDcgKzYzMiw3IEBAIFJlZjxTbGlkZXJDb250YWluZXJFbGVtZW50PiBTbGlk
ZXJDb250YWluZXJFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50KQogCiBSZW5kZXJQ
dHI8UmVuZGVyRWxlbWVudD4gU2xpZGVyQ29udGFpbmVyRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJl
bmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9u
JikKIHsKLSAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyU2xpZGVyQ29udGFpbmVyPigq
dGhpcywgV1RGOjptb3ZlKHN0eWxlKSk7CisgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRl
clNsaWRlckNvbnRhaW5lcj4oKnRoaXMsIFdURk1vdmUoc3R5bGUpKTsKIH0KIAogY29uc3QgQXRv
bWljU3RyaW5nJiBTbGlkZXJDb250YWluZXJFbGVtZW50OjpzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVy
RWxlbWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5l
ckVsZW1lbnRzLmNwcAppbmRleCA5OTE2YjhlMDUyNmE2ZDU3YTgwMDRmYTg0ZWRiNzgyY2UyNmMz
YTYzLi45Y2MyZWUxZjQwYzUyZWQyZTRjNTVjZjExOTliZjJkZjFhMjNhNjI4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50
cy5jcHAKQEAgLTU5LDcgKzU5LDcgQEAgUmVmPFRleHRDb250cm9sSW5uZXJDb250YWluZXI+IFRl
eHRDb250cm9sSW5uZXJDb250YWluZXI6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW0KICAgICAKIFJl
bmRlclB0cjxSZW5kZXJFbGVtZW50PiBUZXh0Q29udHJvbElubmVyQ29udGFpbmVyOjpjcmVhdGVF
bGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlLCBjb25zdCBSZW5kZXJUcmVl
UG9zaXRpb24mKQogewotICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJUZXh0Q29udHJv
bElubmVyQ29udGFpbmVyPigqdGhpcywgV1RGOjptb3ZlKHN0eWxlKSk7CisgICAgcmV0dXJuIGNy
ZWF0ZVJlbmRlcmVyPFJlbmRlclRleHRDb250cm9sSW5uZXJDb250YWluZXI+KCp0aGlzLCBXVEZN
b3ZlKHN0eWxlKSk7CiB9CiAKIFRleHRDb250cm9sSW5uZXJFbGVtZW50OjpUZXh0Q29udHJvbElu
bmVyRWxlbWVudChEb2N1bWVudCYgZG9jdW1lbnQpCkBAIC0xMTMsNyArMTEzLDcgQEAgdm9pZCBU
ZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2
ZW50KQogCiBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gVGV4dENvbnRyb2xJbm5lclRleHRFbGVt
ZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlLCBjb25z
dCBSZW5kZXJUcmVlUG9zaXRpb24mKQogewotICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5k
ZXJUZXh0Q29udHJvbElubmVyQmxvY2s+KCp0aGlzLCBXVEY6Om1vdmUoc3R5bGUpKTsKKyAgICBy
ZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyVGV4dENvbnRyb2xJbm5lckJsb2NrPigqdGhpcywg
V1RGTW92ZShzdHlsZSkpOwogfQogCiBSZW5kZXJUZXh0Q29udHJvbElubmVyQmxvY2sqIFRleHRD
b250cm9sSW5uZXJUZXh0RWxlbWVudDo6cmVuZGVyZXIoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvbWFjL0ltYWdlQ29udHJvbHNCdXR0b25FbGVtZW50TWFj
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L21hYy9JbWFnZUNvbnRyb2xzQnV0dG9u
RWxlbWVudE1hYy5jcHAKaW5kZXggOWE2ZDQ0Mzk0M2I3MzMxZDMzZmE5MDFkZmViM2ZlYWQzN2Vl
OThlNy4uM2NkMWZmNTRmZDNhNGEzMjRkMTI5ZmU0ZDJjNzkwNDdiZTA1MDNmMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvbWFjL0ltYWdlQ29udHJvbHNCdXR0b25FbGVt
ZW50TWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9tYWMvSW1hZ2VDb250
cm9sc0J1dHRvbkVsZW1lbnRNYWMuY3BwCkBAIC01Niw3ICs1Niw3IEBAIHByaXZhdGU6CiB9Owog
CiBSZW5kZXJJbWFnZUNvbnRyb2xzQnV0dG9uOjpSZW5kZXJJbWFnZUNvbnRyb2xzQnV0dG9uKEhU
TUxFbGVtZW50JiBlbGVtZW50LCBSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCi0gICAgOiBSZW5k
ZXJCbG9ja0Zsb3coZWxlbWVudCwgV1RGOjptb3ZlKHN0eWxlKSkKKyAgICA6IFJlbmRlckJsb2Nr
RmxvdyhlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSkKIHsKIH0KIApAQCAtMTI3LDcgKzEyNyw3IEBA
IHZvaWQgSW1hZ2VDb250cm9sc0J1dHRvbkVsZW1lbnRNYWM6OmRlZmF1bHRFdmVudEhhbmRsZXIo
RXZlbnQqIGV2ZW50KQogCiBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSW1hZ2VDb250cm9sc0J1
dHRvbkVsZW1lbnRNYWM6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYg
c3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZVJl
bmRlcmVyPFJlbmRlckltYWdlQ29udHJvbHNCdXR0b24+KCp0aGlzLCBXVEY6Om1vdmUoc3R5bGUp
KTsKKyAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVySW1hZ2VDb250cm9sc0J1dHRvbj4o
KnRoaXMsIFdURk1vdmUoc3R5bGUpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvbWFjL0ltYWdlQ29udHJvbHNSb290
RWxlbWVudE1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9tYWMvSW1hZ2VDb250
cm9sc1Jvb3RFbGVtZW50TWFjLmNwcAppbmRleCBjNDRjNTE4ODJjYjgxODc4NjFiNjZiNTZjZmM1
YTljMjI4ZTJhZWRhLi4wNmJmYzVkMDExYTBmOWVjMTk4NTRjN2JjN2EwODA3ZTI3Njg3YTg1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9tYWMvSW1hZ2VDb250cm9sc1Jv
b3RFbGVtZW50TWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9tYWMvSW1h
Z2VDb250cm9sc1Jvb3RFbGVtZW50TWFjLmNwcApAQCAtNTAsNyArNTAsNyBAQCBwcml2YXRlOgog
fTsKIAogUmVuZGVySW1hZ2VDb250cm9sczo6UmVuZGVySW1hZ2VDb250cm9scyhIVE1MRWxlbWVu
dCYgZWxlbWVudCwgUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQotICAgIDogUmVuZGVyQmxvY2tG
bG93KGVsZW1lbnQsIFdURjo6bW92ZShzdHlsZSkpCisgICAgOiBSZW5kZXJCbG9ja0Zsb3coZWxl
bWVudCwgV1RGTW92ZShzdHlsZSkpCiB7CiB9CiAKQEAgLTkxLDcgKzkxLDcgQEAgUmVmUHRyPElt
YWdlQ29udHJvbHNSb290RWxlbWVudD4gSW1hZ2VDb250cm9sc1Jvb3RFbGVtZW50OjptYXliZUNy
ZWF0ZShEb2N1bWVudCYKICAgICBpZiAoUmVmUHRyPEltYWdlQ29udHJvbHNCdXR0b25FbGVtZW50
TWFjPiBidXR0b24gPSBJbWFnZUNvbnRyb2xzQnV0dG9uRWxlbWVudE1hYzo6bWF5YmVDcmVhdGUo
ZG9jdW1lbnQpKQogICAgICAgICBjb250cm9scy0+YXBwZW5kQ2hpbGQoYnV0dG9uLnJlbGVhc2VO
b25OdWxsKCkpOwogCi0gICAgcmV0dXJuIFdURjo6bW92ZShjb250cm9scyk7CisgICAgcmV0dXJu
IFdURk1vdmUoY29udHJvbHMpOwogfQogCiBJbWFnZUNvbnRyb2xzUm9vdEVsZW1lbnRNYWM6Oklt
YWdlQ29udHJvbHNSb290RWxlbWVudE1hYyhEb2N1bWVudCYgZG9jdW1lbnQpCkBAIC0xMDUsNyAr
MTA1LDcgQEAgSW1hZ2VDb250cm9sc1Jvb3RFbGVtZW50TWFjOjp+SW1hZ2VDb250cm9sc1Jvb3RF
bGVtZW50TWFjKCkKIAogUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IEltYWdlQ29udHJvbHNSb290
RWxlbWVudE1hYzo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJiBzdHls
ZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKIHsKLSAgICByZXR1cm4gY3JlYXRlUmVuZGVy
ZXI8UmVuZGVySW1hZ2VDb250cm9scz4oKnRoaXMsIFdURjo6bW92ZShzdHlsZSkpOworICAgIHJl
dHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJJbWFnZUNvbnRyb2xzPigqdGhpcywgV1RGTW92ZShz
dHlsZSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL1ZUVEN1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L1ZUVEN1ZS5jcHAKaW5kZXggOWQ2Y2E3MmRhOGQ4MTViNzdmMDU5OGY4ZDlmMjMxMjM5YjlmNTY5
OS4uN2FjODY2MTY0YmU1ODNkMGEzM2YwYjgzN2ExNDJhZmQxMjFiMDMyNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRDdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svVlRUQ3VlLmNwcApAQCAtMjMxLDcgKzIzMSw3IEBAIGNvbnN0IEF0b21pY1N0
cmluZyYgVlRUQ3VlQm94Ojp2dHRDdWVCb3hTaGFkb3dQc2V1ZG9JZCgpCiAKIFJlbmRlclB0cjxS
ZW5kZXJFbGVtZW50PiBWVFRDdWVCb3g6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVy
U3R5bGU+JiYgc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCiB7Ci0gICAgcmV0dXJu
IGNyZWF0ZVJlbmRlcmVyPFJlbmRlclZUVEN1ZT4oKnRoaXMsIFdURjo6bW92ZShzdHlsZSkpOwor
ICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJWVFRDdWU+KCp0aGlzLCBXVEZNb3ZlKHN0
eWxlKSk7CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRURWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL1dlYlZUVEVsZW1lbnQuY3BwCmluZGV4IDE0OTZiYjAzYTZhNTAwZjVi
Nzk2MTQwZDU5MGMzZDk1ZmVmYjIyMGMuLmEzYzAzNjZlNDE0ODIwNzkxMWVjMjI2NDMxZGFkNWJi
YjkwYzkxYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRURWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRFbGVtZW50LmNw
cApAQCAtODQsNyArODQsNyBAQCBSZWY8RWxlbWVudD4gV2ViVlRURWxlbWVudDo6Y2xvbmVFbGVt
ZW50V2l0aG91dEF0dHJpYnV0ZXNBbmRDaGlsZHJlbihEb2N1bWVudCYgdAogewogICAgIFJlZjxX
ZWJWVFRFbGVtZW50PiBjbG9uZSA9IGNyZWF0ZShzdGF0aWNfY2FzdDxXZWJWVFROb2RlVHlwZT4o
bV93ZWJWVFROb2RlVHlwZSksIHRhcmdldERvY3VtZW50KTsKICAgICBjbG9uZS0+c2V0TGFuZ3Vh
Z2UobV9sYW5ndWFnZSk7Ci0gICAgcmV0dXJuIFdURjo6bW92ZShjbG9uZSk7CisgICAgcmV0dXJu
IFdURk1vdmUoY2xvbmUpOwogfQogCiBQYXNzUmVmUHRyPEhUTUxFbGVtZW50PiBXZWJWVFRFbGVt
ZW50OjpjcmVhdGVFcXVpdmFsZW50SFRNTEVsZW1lbnQoRG9jdW1lbnQmIGRvY3VtZW50KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3BwCmluZGV4IDQ1MjE5Y2Q4NDU2
ZjlhZTU2NTQ1MmMxNzQ3NWUzYzVjZDJkMGM2NzkuLjE5MjIwMTAwN2YyOTBkNDlmYzNjMWZlNWU0
MWJhYzVmOTM1ODFhNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2Vi
VlRUUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNl
ci5jcHAKQEAgLTU0MSw3ICs1NDEsNyBAQCB2b2lkIFdlYlZUVFRyZWVCdWlsZGVyOjpjb25zdHJ1
Y3RUcmVlRnJvbVRva2VuKERvY3VtZW50JiBkb2N1bWVudCkKICAgICBzd2l0Y2ggKG1fdG9rZW4u
dHlwZSgpKSB7CiAgICAgY2FzZSBXZWJWVFRUb2tlblR5cGVzOjpDaGFyYWN0ZXI6IHsKICAgICAg
ICAgYXV0byBjaGlsZCA9IFRleHQ6OmNyZWF0ZShkb2N1bWVudCwgbV90b2tlbi5jaGFyYWN0ZXJz
KCkpOwotICAgICAgICBtX2N1cnJlbnROb2RlLT5wYXJzZXJBcHBlbmRDaGlsZChXVEY6Om1vdmUo
Y2hpbGQpKTsKKyAgICAgICAgbV9jdXJyZW50Tm9kZS0+cGFyc2VyQXBwZW5kQ2hpbGQoV1RGTW92
ZShjaGlsZCkpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBXZWJWVFRUb2tlblR5
cGVzOjpTdGFydFRhZzogewpAQCAtNTY3LDcgKzU2Nyw3IEBAIHZvaWQgV2ViVlRUVHJlZUJ1aWxk
ZXI6OmNvbnN0cnVjdFRyZWVGcm9tVG9rZW4oRG9jdW1lbnQmIGRvY3VtZW50KQogICAgICAgICBp
ZiAoIW1fbGFuZ3VhZ2VTdGFjay5pc0VtcHR5KCkpCiAgICAgICAgICAgICBjaGlsZC0+c2V0TGFu
Z3VhZ2UobV9sYW5ndWFnZVN0YWNrLmxhc3QoKSk7CiAgICAgICAgIG1fY3VycmVudE5vZGUtPnBh
cnNlckFwcGVuZENoaWxkKGNoaWxkLmNvcHlSZWYoKSk7Ci0gICAgICAgIG1fY3VycmVudE5vZGUg
PSBXVEY6Om1vdmUoY2hpbGQpOworICAgICAgICBtX2N1cnJlbnROb2RlID0gV1RGTW92ZShjaGls
ZCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIFdlYlZUVFRva2VuVHlwZXM6OkVu
ZFRhZzogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5l
QVBJSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElIb3N0
LmNwcAppbmRleCAwYTEyZTZjN2UyZjllNTkzZmI0NjhjZWVkODZmOTE4NzNlYzdjYzFlLi4zOGI2
MGE3ODU0YWU2Y2ZlYWM4NGJhN2QyYTkzMTQzMzEwYjE5ZGIxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElIb3N0LmNwcApAQCAtODQsOCArODQsOCBAQCB2
b2lkIENvbW1hbmRMaW5lQVBJSG9zdDo6aW5zcGVjdEltcGwoUmVmUHRyPEluc3BlY3RvclZhbHVl
PiYmIG9iamVjdCwgUmVmUHRyPElucwogICAgIGlmICghaGludHMtPmFzT2JqZWN0KGhpbnRzT2Jq
ZWN0KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byByZW1vdGVPYmplY3QgPSBCaW5kaW5n
VHJhaXRzPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD46OnJ1bnRp
bWVDYXN0KFdURjo6bW92ZShvYmplY3QpKTsKLSAgICBtX2luc3BlY3RvckFnZW50LT5pbnNwZWN0
KFdURjo6bW92ZShyZW1vdGVPYmplY3QpLCBXVEY6Om1vdmUoaGludHNPYmplY3QpKTsKKyAgICBh
dXRvIHJlbW90ZU9iamVjdCA9IEJpbmRpbmdUcmFpdHM8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVu
dGltZTo6UmVtb3RlT2JqZWN0Pjo6cnVudGltZUNhc3QoV1RGTW92ZShvYmplY3QpKTsKKyAgICBt
X2luc3BlY3RvckFnZW50LT5pbnNwZWN0KFdURk1vdmUocmVtb3RlT2JqZWN0KSwgV1RGTW92ZSho
aW50c09iamVjdCkpOwogfQogCiB2b2lkIENvbW1hbmRMaW5lQVBJSG9zdDo6Z2V0RXZlbnRMaXN0
ZW5lcnNJbXBsKE5vZGUqIG5vZGUsIFZlY3RvcjxFdmVudExpc3RlbmVySW5mbz4mIGxpc3RlbmVy
c0FycmF5KQpAQCAtMTE0LDcgKzExNCw3IEBAIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIENvbW1h
bmRMaW5lQVBJSG9zdDo6SW5zcGVjdGFibGVPYmplY3Q6OmdldChKU0M6OkV4ZWNTdGF0CiAKIHZv
aWQgQ29tbWFuZExpbmVBUElIb3N0OjphZGRJbnNwZWN0ZWRPYmplY3Qoc3RkOjp1bmlxdWVfcHRy
PENvbW1hbmRMaW5lQVBJSG9zdDo6SW5zcGVjdGFibGVPYmplY3Q+IG9iamVjdCkKIHsKLSAgICBt
X2luc3BlY3RlZE9iamVjdCA9IFdURjo6bW92ZShvYmplY3QpOworICAgIG1faW5zcGVjdGVkT2Jq
ZWN0ID0gV1RGTW92ZShvYmplY3QpOwogfQogCiBDb21tYW5kTGluZUFQSUhvc3Q6Okluc3BlY3Rh
YmxlT2JqZWN0KiBDb21tYW5kTGluZUFQSUhvc3Q6Omluc3BlY3RlZE9iamVjdCgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9ET01FZGl0b3IuY3BwCmluZGV4IGQyNDJkYTFlMjkzODBkOTY0NzE0ZmNi
ZmJhY2JlYzU4OGE1ZGY4MTQuLjBjY2VlNDAyNjU1ODZmMWUwNGI1NGNiNWNkNTE0YjE4OTNjMzUx
ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01FZGl0b3IuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01FZGl0b3IuY3BwCkBAIC04Miw3ICs4Miw3
IEBAIHB1YmxpYzoKICAgICBJbnNlcnRCZWZvcmVBY3Rpb24oTm9kZSogcGFyZW50Tm9kZSwgUmVm
UHRyPE5vZGU+JiYgbm9kZSwgTm9kZSogYW5jaG9yTm9kZSkKICAgICAgICAgOiBJbnNwZWN0b3JI
aXN0b3J5OjpBY3Rpb24oIkluc2VydEJlZm9yZSIpCiAgICAgICAgICwgbV9wYXJlbnROb2RlKHBh
cmVudE5vZGUpCi0gICAgICAgICwgbV9ub2RlKFdURjo6bW92ZShub2RlKSkKKyAgICAgICAgLCBt
X25vZGUoV1RGTW92ZShub2RlKSkKICAgICAgICAgLCBtX2FuY2hvck5vZGUoYW5jaG9yTm9kZSkK
ICAgICB7CiAgICAgfQpAQCAtMjg0LDcgKzI4NCw3IEBAIHB1YmxpYzoKICAgICBSZXBsYWNlQ2hp
bGROb2RlQWN0aW9uKE5vZGUqIHBhcmVudE5vZGUsIFJlZlB0cjxOb2RlPiYmIG5ld05vZGUsIE5v
ZGUqIG9sZE5vZGUpCiAgICAgICAgIDogSW5zcGVjdG9ySGlzdG9yeTo6QWN0aW9uKCJSZXBsYWNl
Q2hpbGROb2RlIikKICAgICAgICAgLCBtX3BhcmVudE5vZGUocGFyZW50Tm9kZSkKLSAgICAgICAg
LCBtX25ld05vZGUoV1RGOjptb3ZlKG5ld05vZGUpKQorICAgICAgICAsIG1fbmV3Tm9kZShXVEZN
b3ZlKG5ld05vZGUpKQogICAgICAgICAsIG1fb2xkTm9kZShvbGROb2RlKQogICAgIHsKICAgICB9
CkBAIC0zNTAsNyArMzUwLDcgQEAgRE9NRWRpdG9yOjp+RE9NRWRpdG9yKCkgeyB9CiAKIGJvb2wg
RE9NRWRpdG9yOjppbnNlcnRCZWZvcmUoTm9kZSogcGFyZW50Tm9kZSwgUmVmUHRyPE5vZGU+JiYg
bm9kZSwgTm9kZSogYW5jaG9yTm9kZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgcmV0dXJu
IG1faGlzdG9yeS0+cGVyZm9ybShzdGQ6Om1ha2VfdW5pcXVlPEluc2VydEJlZm9yZUFjdGlvbj4o
cGFyZW50Tm9kZSwgV1RGOjptb3ZlKG5vZGUpLCBhbmNob3JOb2RlKSwgZWMpOworICAgIHJldHVy
biBtX2hpc3RvcnktPnBlcmZvcm0oc3RkOjptYWtlX3VuaXF1ZTxJbnNlcnRCZWZvcmVBY3Rpb24+
KHBhcmVudE5vZGUsIFdURk1vdmUobm9kZSksIGFuY2hvck5vZGUpLCBlYyk7CiB9CiAKIGJvb2wg
RE9NRWRpdG9yOjpyZW1vdmVDaGlsZChOb2RlKiBwYXJlbnROb2RlLCBOb2RlKiBub2RlLCBFeGNl
cHRpb25Db2RlJiBlYykKQEAgLTM3Miw3ICszNzIsNyBAQCBib29sIERPTUVkaXRvcjo6c2V0T3V0
ZXJIVE1MKE5vZGUmIG5vZGUsIGNvbnN0IFN0cmluZyYgaHRtbCwgTm9kZSoqIG5ld05vZGUsIEV4
YwogewogICAgIGF1dG8gYWN0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxTZXRPdXRlckhUTUxBY3Rp
b24+KG5vZGUsIGh0bWwpOwogICAgIFNldE91dGVySFRNTEFjdGlvbiogcmF3QWN0aW9uID0gYWN0
aW9uLmdldCgpOwotICAgIGJvb2wgcmVzdWx0ID0gbV9oaXN0b3J5LT5wZXJmb3JtKFdURjo6bW92
ZShhY3Rpb24pLCBlYyk7CisgICAgYm9vbCByZXN1bHQgPSBtX2hpc3RvcnktPnBlcmZvcm0oV1RG
TW92ZShhY3Rpb24pLCBlYyk7CiAgICAgaWYgKHJlc3VsdCkKICAgICAgICAgKm5ld05vZGUgPSBy
YXdBY3Rpb24tPm5ld05vZGUoKTsKICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMzg1LDcgKzM4NSw3
IEBAIGJvb2wgRE9NRWRpdG9yOjpyZXBsYWNlV2hvbGVUZXh0KFRleHQqIHRleHROb2RlLCBjb25z
dCBTdHJpbmcmIHRleHQsIEV4Y2VwdGlvbkNvCiAKIGJvb2wgRE9NRWRpdG9yOjpyZXBsYWNlQ2hp
bGQoTm9kZSogcGFyZW50Tm9kZSwgUmVmUHRyPE5vZGU+JiYgbmV3Tm9kZSwgTm9kZSogb2xkTm9k
ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgcmV0dXJuIG1faGlzdG9yeS0+cGVyZm9ybShz
dGQ6Om1ha2VfdW5pcXVlPFJlcGxhY2VDaGlsZE5vZGVBY3Rpb24+KHBhcmVudE5vZGUsIFdURjo6
bW92ZShuZXdOb2RlKSwgb2xkTm9kZSksIGVjKTsKKyAgICByZXR1cm4gbV9oaXN0b3J5LT5wZXJm
b3JtKHN0ZDo6bWFrZV91bmlxdWU8UmVwbGFjZUNoaWxkTm9kZUFjdGlvbj4ocGFyZW50Tm9kZSwg
V1RGTW92ZShuZXdOb2RlKSwgb2xkTm9kZSksIGVjKTsKIH0KIAogYm9vbCBET01FZGl0b3I6OnNl
dE5vZGVWYWx1ZShOb2RlKiBub2RlLCBjb25zdCBTdHJpbmcmIHZhbHVlLCBFeGNlcHRpb25Db2Rl
JiBlYykKQEAgLTQwNCw3ICs0MDQsNyBAQCBzdGF0aWMgdm9pZCBwb3B1bGF0ZUVycm9yU3RyaW5n
KGNvbnN0IEV4Y2VwdGlvbkNvZGUmIGVjLCBFcnJvclN0cmluZyYgZXJyb3JTdHJpbgogYm9vbCBE
T01FZGl0b3I6Omluc2VydEJlZm9yZShOb2RlKiBwYXJlbnROb2RlLCBSZWZQdHI8Tm9kZT4mJiBu
b2RlLCBOb2RlKiBhbmNob3JOb2RlLCBFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcpCiB7CiAgICAg
RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgYm9vbCByZXN1bHQgPSBpbnNlcnRCZWZvcmUocGFy
ZW50Tm9kZSwgV1RGOjptb3ZlKG5vZGUpLCBhbmNob3JOb2RlLCBlYyk7CisgICAgYm9vbCByZXN1
bHQgPSBpbnNlcnRCZWZvcmUocGFyZW50Tm9kZSwgV1RGTW92ZShub2RlKSwgYW5jaG9yTm9kZSwg
ZWMpOwogICAgIHBvcHVsYXRlRXJyb3JTdHJpbmcoZWMsIGVycm9yU3RyaW5nKTsKICAgICByZXR1
cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTVBh
dGNoU3VwcG9ydC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NUGF0Y2hTdXBwb3J0
LmNwcAppbmRleCBkOTFiMTcwOTJmNmI0NWNkN2ZlMDI5MjE2NWI2NWJmNDY1YTQzMTMwLi4yNDlm
NjRlOGJhMzA4NDg5NWNlYzZlN2RlMWVkMmM4YTUyNGY4YzgyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmNwcApAQCAtNDIwLDcgKzQyMCw3IEBAIHN0ZDo6
dW5pcXVlX3B0cjxET01QYXRjaFN1cHBvcnQ6OkRpZ2VzdD4gRE9NUGF0Y2hTdXBwb3J0OjpjcmVh
dGVEaWdlc3QoTm9kZSogbm9kCiAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8RGlnZXN0PiBj
aGlsZEluZm8gPSBjcmVhdGVEaWdlc3QoY2hpbGQsIHVudXNlZE5vZGVzTWFwKTsKICAgICAgICAg
ICAgIGFkZFN0cmluZ1RvU0hBMShzaGExLCBjaGlsZEluZm8tPm1fc2hhMSk7CiAgICAgICAgICAg
ICBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpOwotICAgICAgICAgICAgZGlnZXN0LT5tX2No
aWxkcmVuLmFwcGVuZChXVEY6Om1vdmUoY2hpbGRJbmZvKSk7CisgICAgICAgICAgICBkaWdlc3Qt
Pm1fY2hpbGRyZW4uYXBwZW5kKFdURk1vdmUoY2hpbGRJbmZvKSk7CiAgICAgICAgIH0KICAgICAg
ICAgRWxlbWVudCogZWxlbWVudCA9IGRvd25jYXN0PEVsZW1lbnQ+KG5vZGUpOwogCkBAIC00Njgs
NyArNDY4LDcgQEAgYm9vbCBET01QYXRjaFN1cHBvcnQ6OnJlbW92ZUNoaWxkQW5kTW92ZVRvTmV3
KERpZ2VzdCogb2xkRGlnZXN0LCBFeGNlcHRpb25Db2RlJgogICAgIGlmIChpdCAhPSBtX3VudXNl
ZE5vZGVzTWFwLmVuZCgpKSB7CiAgICAgICAgIERpZ2VzdCogbmV3RGlnZXN0ID0gaXQtPnZhbHVl
OwogICAgICAgICBOb2RlKiBuZXdOb2RlID0gbmV3RGlnZXN0LT5tX25vZGU7Ci0gICAgICAgIGlm
ICghbV9kb21FZGl0b3ItPnJlcGxhY2VDaGlsZChuZXdOb2RlLT5wYXJlbnROb2RlKCksIFdURjo6
bW92ZShvbGROb2RlKSwgbmV3Tm9kZSwgZWMpKQorICAgICAgICBpZiAoIW1fZG9tRWRpdG9yLT5y
ZXBsYWNlQ2hpbGQobmV3Tm9kZS0+cGFyZW50Tm9kZSgpLCBXVEZNb3ZlKG9sZE5vZGUpLCBuZXdO
b2RlLCBlYykpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIG5ld0RpZ2VzdC0+
bV9ub2RlID0gb2xkTm9kZS5nZXQoKTsKICAgICAgICAgbWFya05vZGVBc1VzZWQobmV3RGlnZXN0
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNh
dGlvbkNhY2hlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFw
cGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHAKaW5kZXggY2JkOWE3YWNhNzJiZmRhYzc4YzE3ZWZkNTk2
NWViYjhmYjU4ZTI3Yi4uMTAyYzE4OTBhODU3NmE4Y2JjODM0ZjZiNzkwNDQ2NTEyMjY1YjE0OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9u
Q2FjaGVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFw
cGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHAKQEAgLTEwNyw3ICsxMDcsNyBAQCB2b2lkIEluc3BlY3Rv
ckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDo6Z2V0RnJhbWVzV2l0aE1hbmlmZXN0cyhFcnJvclN0cmlu
ZyYsIFJlZlB0cgogICAgICAgICAgICAgICAgIC5zZXRNYW5pZmVzdFVSTChtYW5pZmVzdFVSTCkK
ICAgICAgICAgICAgICAgICAuc2V0U3RhdHVzKHN0YXRpY19jYXN0PGludD4oaG9zdC0+c3RhdHVz
KCkpKQogICAgICAgICAgICAgICAgIC5yZWxlYXNlKCk7Ci0gICAgICAgICAgICByZXN1bHQtPmFk
ZEl0ZW0oV1RGOjptb3ZlKHZhbHVlKSk7CisgICAgICAgICAgICByZXN1bHQtPmFkZEl0ZW0oV1RG
TW92ZSh2YWx1ZSkpOwogICAgICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKaW5kZXggMzRlYjc2OWIzNzQ4YzI2MTAzMDgy
MDljMGViMDJlZWQ3YWQwYjQ2Yy4uMTFlNTI0OWZhZmZiYTQyMTE1OTNiZTI0OWRmN2UzYjE1Yjk4
M2VhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0Fn
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQu
Y3BwCkBAIC01ODYsMTEgKzU4NiwxMSBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXRNYXRj
aGVkU3R5bGVzRm9yTm9kZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGludCBubwogICAgICAg
ICAgICAgICAgICAgICAgICAgLnNldFBzZXVkb0lkKHN0YXRpY19jYXN0PGludD4ocHNldWRvSWQp
KQogICAgICAgICAgICAgICAgICAgICAgICAgLnNldE1hdGNoZXMoYnVpbGRBcnJheUZvck1hdGNo
ZWRSdWxlTGlzdChtYXRjaGVkUnVsZXMsIHN0eWxlUmVzb2x2ZXIsIGVsZW1lbnQsIHBzZXVkb0lk
KSkKICAgICAgICAgICAgICAgICAgICAgICAgIC5yZWxlYXNlKCk7Ci0gICAgICAgICAgICAgICAg
ICAgIHBzZXVkb0VsZW1lbnRzLT5hZGRJdGVtKFdURjo6bW92ZShtYXRjaGVzKSk7CisgICAgICAg
ICAgICAgICAgICAgIHBzZXVkb0VsZW1lbnRzLT5hZGRJdGVtKFdURk1vdmUobWF0Y2hlcykpOwog
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgcHNldWRvSWRN
YXRjaGVzID0gV1RGOjptb3ZlKHBzZXVkb0VsZW1lbnRzKTsKKyAgICAgICAgICAgIHBzZXVkb0lk
TWF0Y2hlcyA9IFdURk1vdmUocHNldWRvRWxlbWVudHMpOwogICAgICAgICB9CiAKICAgICAgICAg
Ly8gSW5oZXJpdGVkIHN0eWxlcy4KQEAgLTYwOCwxMSArNjA4LDExIEBAIHZvaWQgSW5zcGVjdG9y
Q1NTQWdlbnQ6OmdldE1hdGNoZWRTdHlsZXNGb3JOb2RlKEVycm9yU3RyaW5nJiBlcnJvclN0cmlu
ZywgaW50IG5vCiAgICAgICAgICAgICAgICAgICAgICAgICBlbnRyeS0+c2V0SW5saW5lU3R5bGUo
c3R5bGVTaGVldC0+YnVpbGRPYmplY3RGb3JTdHlsZShzdHlsZVNoZWV0LT5zdHlsZUZvcklkKElu
c3BlY3RvckNTU0lkKHN0eWxlU2hlZXQtPmlkKCksIDApKSkpOwogICAgICAgICAgICAgICAgIH0K
IAotICAgICAgICAgICAgICAgIGVudHJpZXMtPmFkZEl0ZW0oV1RGOjptb3ZlKGVudHJ5KSk7Cisg
ICAgICAgICAgICAgICAgZW50cmllcy0+YWRkSXRlbShXVEZNb3ZlKGVudHJ5KSk7CiAgICAgICAg
ICAgICAgICAgcGFyZW50RWxlbWVudCA9IHBhcmVudEVsZW1lbnQtPnBhcmVudEVsZW1lbnQoKTsK
ICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgaW5oZXJpdGVkRW50cmllcyA9IFdURjo6bW92
ZShlbnRyaWVzKTsKKyAgICAgICAgICAgIGluaGVyaXRlZEVudHJpZXMgPSBXVEZNb3ZlKGVudHJp
ZXMpOwogICAgICAgICB9CiAgICAgfQogfQpAQCAtODI1LDcgKzgyNSw3IEBAIHZvaWQgSW5zcGVj
dG9yQ1NTQWdlbnQ6OmFkZFJ1bGUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJp
bmcmIHN0eWxlU2hlCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgYXV0byBhY3Rpb24g
PSBzdGQ6Om1ha2VfdW5pcXVlPEFkZFJ1bGVBY3Rpb24+KGluc3BlY3RvclN0eWxlU2hlZXQsIHNl
bGVjdG9yKTsKICAgICBBZGRSdWxlQWN0aW9uKiByYXdBY3Rpb24gPSBhY3Rpb24uZ2V0KCk7Ci0g
ICAgYm9vbCBzdWNjZXNzID0gbV9kb21BZ2VudC0+aGlzdG9yeSgpLT5wZXJmb3JtKFdURjo6bW92
ZShhY3Rpb24pLCBlYyk7CisgICAgYm9vbCBzdWNjZXNzID0gbV9kb21BZ2VudC0+aGlzdG9yeSgp
LT5wZXJmb3JtKFdURk1vdmUoYWN0aW9uKSwgZWMpOwogICAgIGlmICghc3VjY2VzcykgewogICAg
ICAgICBlcnJvclN0cmluZyA9IEluc3BlY3RvckRPTUFnZW50Ojp0b0Vycm9yU3RyaW5nKGVjKTsK
ICAgICAgICAgcmV0dXJuOwpAQCAtODQ3LDcgKzg0Nyw3IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdl
bnQ6OmdldFN1cHBvcnRlZENTU1Byb3BlcnRpZXMoRXJyb3JTdHJpbmcmLCBSZWZQdHI8SW5zcGVj
dG9yCiAKICAgICAgICAgY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYgc2hvcnRoYW5kID0g
c2hvcnRoYW5kRm9yUHJvcGVydHkoaWQpOwogICAgICAgICBpZiAoIXNob3J0aGFuZC5sZW5ndGgo
KSkgewotICAgICAgICAgICAgcHJvcGVydGllcy0+YWRkSXRlbShXVEY6Om1vdmUocHJvcGVydHkp
KTsKKyAgICAgICAgICAgIHByb3BlcnRpZXMtPmFkZEl0ZW0oV1RGTW92ZShwcm9wZXJ0eSkpOwog
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICAgICAgICAgYXV0byBsb25naGFuZHMg
PSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+OjpjcmVhdGUoKTsKQEAgLTg1NSwx
MCArODU1LDEwIEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldFN1cHBvcnRlZENTU1Byb3Bl
cnRpZXMoRXJyb3JTdHJpbmcmLCBSZWZQdHI8SW5zcGVjdG9yCiAgICAgICAgICAgICBDU1NQcm9w
ZXJ0eUlEIGxvbmdoYW5kSUQgPSBzaG9ydGhhbmQucHJvcGVydGllcygpW2pdOwogICAgICAgICAg
ICAgbG9uZ2hhbmRzLT5hZGRJdGVtKGdldFByb3BlcnR5TmFtZVN0cmluZyhsb25naGFuZElEKSk7
CiAgICAgICAgIH0KLSAgICAgICAgcHJvcGVydHktPnNldExvbmdoYW5kcyhXVEY6Om1vdmUobG9u
Z2hhbmRzKSk7Ci0gICAgICAgIHByb3BlcnRpZXMtPmFkZEl0ZW0oV1RGOjptb3ZlKHByb3BlcnR5
KSk7CisgICAgICAgIHByb3BlcnR5LT5zZXRMb25naGFuZHMoV1RGTW92ZShsb25naGFuZHMpKTsK
KyAgICAgICAgcHJvcGVydGllcy0+YWRkSXRlbShXVEZNb3ZlKHByb3BlcnR5KSk7CiAgICAgfQot
ICAgIGNzc1Byb3BlcnRpZXMgPSBXVEY6Om1vdmUocHJvcGVydGllcyk7CisgICAgY3NzUHJvcGVy
dGllcyA9IFdURk1vdmUocHJvcGVydGllcyk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6
OmdldFN1cHBvcnRlZFN5c3RlbUZvbnRGYW1pbHlOYW1lcyhFcnJvclN0cmluZyYsIFJlZlB0cjxJ
bnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+PiYgZm9udEZhbWlseU5hbWVzKQpAQCAt
ODY5LDcgKzg2OSw3IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldFN1cHBvcnRlZFN5c3Rl
bUZvbnRGYW1pbHlOYW1lcyhFcnJvclN0cmluZyYsIFJlZlB0cjxJCiAgICAgZm9yIChjb25zdCBh
dXRvJiBmYW1pbHlOYW1lIDogc3lzdGVtRm9udEZhbWlsaWVzKQogICAgICAgICBmYW1pbGllcy0+
YWRkSXRlbShmYW1pbHlOYW1lKTsKIAotICAgIGZvbnRGYW1pbHlOYW1lcyA9IFdURjo6bW92ZShm
YW1pbGllcyk7CisgICAgZm9udEZhbWlseU5hbWVzID0gV1RGTW92ZShmYW1pbGllcyk7CiB9CiAK
IHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmZvcmNlUHNldWRvU3RhdGUoRXJyb3JTdHJpbmcmIGVy
cm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBjb25zdCBJbnNwZWN0b3JBcnJheSYgZm9yY2VkUHNldWRv
Q2xhc3NlcykKQEAgLTkwNiw3ICs5MDYsNyBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXRO
YW1lZEZsb3dDb2xsZWN0aW9uKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgaW50IGRvYwogICAg
IGZvciAoYXV0byYgbmFtZWRGbG93IDogbmFtZWRGbG93c1ZlY3RvcikKICAgICAgICAgbmFtZWRG
bG93cy0+YWRkSXRlbShidWlsZE9iamVjdEZvck5hbWVkRmxvdyhlcnJvclN0cmluZywgbmFtZWRG
bG93LmdldCgpLCBkb2N1bWVudE5vZGVJZCkpOwogCi0gICAgcmVzdWx0ID0gV1RGOjptb3ZlKG5h
bWVkRmxvd3MpOworICAgIHJlc3VsdCA9IFdURk1vdmUobmFtZWRGbG93cyk7CiB9CiAKIEluc3Bl
Y3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZSogSW5zcGVjdG9yQ1NTQWdlbnQ6OmFzSW5zcGVj
dG9yU3R5bGVTaGVldChFbGVtZW50KiBlbGVtZW50KQpAQCAtMTA1NywxMyArMTA1NywxMyBAQCBS
ZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NT
OjpSdWxlTWF0Y2g+PiBJbnNwZWN0bwogICAgICAgICB9CiAKICAgICAgICAgYXV0byBtYXRjaCA9
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6UnVsZU1hdGNoOjpjcmVhdGUoKQotICAgICAgICAg
ICAgLnNldFJ1bGUoV1RGOjptb3ZlKHJ1bGVPYmplY3QpKQotICAgICAgICAgICAgLnNldE1hdGNo
aW5nU2VsZWN0b3JzKFdURjo6bW92ZShtYXRjaGluZ1NlbGVjdG9ycykpCisgICAgICAgICAgICAu
c2V0UnVsZShXVEZNb3ZlKHJ1bGVPYmplY3QpKQorICAgICAgICAgICAgLnNldE1hdGNoaW5nU2Vs
ZWN0b3JzKFdURk1vdmUobWF0Y2hpbmdTZWxlY3RvcnMpKQogICAgICAgICAgICAgLnJlbGVhc2Uo
KTsKLSAgICAgICAgcmVzdWx0LT5hZGRJdGVtKFdURjo6bW92ZShtYXRjaCkpOworICAgICAgICBy
ZXN1bHQtPmFkZEl0ZW0oV1RGTW92ZShtYXRjaCkpOwogICAgIH0KIAotICAgIHJldHVybiBXVEY6
Om1vdmUocmVzdWx0KTsKKyAgICByZXR1cm4gV1RGTW92ZShyZXN1bHQpOwogfQogCiBSZWZQdHI8
SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NTdHlsZT4gSW5zcGVjdG9yQ1NTQWdlbnQ6OmJ1
aWxkT2JqZWN0Rm9yQXR0cmlidXRlc1N0eWxlKEVsZW1lbnQqIGVsZW1lbnQpCkBAIC0xMTE0LDEw
ICsxMTE0LDEwIEBAIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6
OlByb3RvY29sOjpDU1M6OlJlZ2lvbj4+IEluc3BlY3RvckNTCiAgICAgICAgICAgICAuc2V0Tm9k
ZUlkKG1fZG9tQWdlbnQtPnB1c2hOb2RlVG9Gcm9udGVuZChlcnJvclN0cmluZywgZG9jdW1lbnRO
b2RlSWQsIHJlZ2lvbkxpc3QtPml0ZW0oaSkpKQogICAgICAgICAgICAgLnJlbGVhc2UoKTsKIAot
ICAgICAgICByZWdpb25zLT5hZGRJdGVtKFdURjo6bW92ZShyZWdpb24pKTsKKyAgICAgICAgcmVn
aW9ucy0+YWRkSXRlbShXVEZNb3ZlKHJlZ2lvbikpOwogICAgIH0KIAotICAgIHJldHVybiBXVEY6
Om1vdmUocmVnaW9ucyk7CisgICAgcmV0dXJuIFdURk1vdmUocmVnaW9ucyk7CiB9CiAKIFJlZlB0
cjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6Ok5hbWVkRmxvdz4gSW5zcGVjdG9yQ1NTQWdlbnQ6
OmJ1aWxkT2JqZWN0Rm9yTmFtZWRGbG93KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgV2ViS2l0
TmFtZWRGbG93KiB3ZWJraXROYW1lZEZsb3csIGludCBkb2N1bWVudE5vZGVJZCkKQEAgLTExMzQs
NyArMTEzNCw3IEBAIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6Ok5hbWVkRmxvdz4g
SW5zcGVjdG9yQ1NTQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yTmFtCiAgICAgICAgIC5zZXREb2N1bWVu
dE5vZGVJZChkb2N1bWVudE5vZGVJZCkKICAgICAgICAgLnNldE5hbWUod2Via2l0TmFtZWRGbG93
LT5uYW1lKCkuc3RyaW5nKCkpCiAgICAgICAgIC5zZXRPdmVyc2V0KHdlYmtpdE5hbWVkRmxvdy0+
b3ZlcnNldCgpKQotICAgICAgICAuc2V0Q29udGVudChXVEY6Om1vdmUoY29udGVudCkpCisgICAg
ICAgIC5zZXRDb250ZW50KFdURk1vdmUoY29udGVudCkpCiAgICAgICAgIC5zZXRSZWdpb25zKGJ1
aWxkQXJyYXlGb3JSZWdpb25zKGVycm9yU3RyaW5nLCB3ZWJraXROYW1lZEZsb3ctPmdldFJlZ2lv
bnMoKSwgZG9jdW1lbnROb2RlSWQpKQogICAgICAgICAucmVsZWFzZSgpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnNvbGVJbnN0cnVtZW50YXRp
b24uaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb25zb2xlSW5zdHJ1bWVu
dGF0aW9uLmgKaW5kZXggYjkxNWU5NzE0MzMwOWZkZDU0ZDNjNGZiYmZmYmQxYmQxMTVlZDhkOS4u
NmEwNWMyZjY1YmVkMGIwNTZmMzY4ZjQ0ZTU2Mjk1MzQwMjlkMjdmMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnNvbGVJbnN0cnVtZW50YXRpb24uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29uc29sZUluc3RydW1lbnRh
dGlvbi5oCkBAIC00MSw3ICs0MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogaW5saW5lIHZv
aWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjphZGRNZXNzYWdlVG9Db25zb2xlKFBhZ2UmIHBh
Z2UsIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPiBtZXNzYWdlKQog
ewotICAgIGFkZE1lc3NhZ2VUb0NvbnNvbGVJbXBsKGluc3RydW1lbnRpbmdBZ2VudHNGb3JQYWdl
KHBhZ2UpLCBXVEY6Om1vdmUobWVzc2FnZSkpOworICAgIGFkZE1lc3NhZ2VUb0NvbnNvbGVJbXBs
KGluc3RydW1lbnRpbmdBZ2VudHNGb3JQYWdlKHBhZ2UpLCBXVEZNb3ZlKG1lc3NhZ2UpKTsKIH0K
IAogaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjphZGRNZXNzYWdlVG9Db25z
b2xlKFdvcmtlckdsb2JhbFNjb3BlKiwgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6Q29uc29s
ZU1lc3NhZ2U+KQpAQCAtNTEsNyArNTEsNyBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmFkZE1lc3NhZ2VUb0NvbnNvbGUoV29ya2VyR2xvYmFsU2NvcGUqLCBzdAogCiBp
bmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNvbnNvbGVDb3VudChQYWdlJiBw
YWdlLCBKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIFJlZlB0cjxJbnNwZWN0b3I6OlNjcmlwdEFyZ3Vt
ZW50cz4mJiBhcmd1bWVudHMpCiB7Ci0gICAgY29uc29sZUNvdW50SW1wbChpbnN0cnVtZW50aW5n
QWdlbnRzRm9yUGFnZShwYWdlKSwgc3RhdGUsIFdURjo6bW92ZShhcmd1bWVudHMpKTsKKyAgICBj
b25zb2xlQ291bnRJbXBsKGluc3RydW1lbnRpbmdBZ2VudHNGb3JQYWdlKHBhZ2UpLCBzdGF0ZSwg
V1RGTW92ZShhcmd1bWVudHMpKTsKIH0KIAogaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpzdGFydENvbnNvbGVUaW1pbmcoRnJhbWUmIGZyYW1lLCBjb25zdCBTdHJpbmcmIHRp
dGxlKQpAQCAtNjMsMTQgKzYzLDE0IEBAIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6c3RhcnRDb25zb2xlVGltaW5nKEZyYW1lJiBmcmFtZSwgY29uc3QgU3RyCiBpbmxpbmUg
dm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnN0b3BDb25zb2xlVGltaW5nKEZyYW1lJiBm
cmFtZSwgY29uc3QgU3RyaW5nJiB0aXRsZSwgUmVmUHRyPEluc3BlY3Rvcjo6U2NyaXB0Q2FsbFN0
YWNrPiYmIHN0YWNrKQogewogICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50
aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvckZyYW1lKGZyYW1lKSkKLSAgICAgICAg
c3RvcENvbnNvbGVUaW1pbmdJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCBmcmFtZSwgdGl0bGUs
IFdURjo6bW92ZShzdGFjaykpOworICAgICAgICBzdG9wQ29uc29sZVRpbWluZ0ltcGwoKmluc3Ry
dW1lbnRpbmdBZ2VudHMsIGZyYW1lLCB0aXRsZSwgV1RGTW92ZShzdGFjaykpOwogfQogCiBpbmxp
bmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNvbnNvbGVUaW1lU3RhbXAoRnJhbWUm
IGZyYW1lLCBSZWZQdHI8SW5zcGVjdG9yOjpTY3JpcHRBcmd1bWVudHM+JiYgYXJndW1lbnRzKQog
ewogICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZST05URU5EUyh2b2lkKCkpOwogICAgIGlmIChJbnN0
cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50
c0ZvckZyYW1lKGZyYW1lKSkKLSAgICAgICAgY29uc29sZVRpbWVTdGFtcEltcGwoKmluc3RydW1l
bnRpbmdBZ2VudHMsIGZyYW1lLCBXVEY6Om1vdmUoYXJndW1lbnRzKSk7CisgICAgICAgIGNvbnNv
bGVUaW1lU3RhbXBJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCBmcmFtZSwgV1RGTW92ZShhcmd1
bWVudHMpKTsKIH0KIAogaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzdGFy
dFByb2ZpbGluZyhQYWdlJiBwYWdlLCBKU0M6OkV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5n
ICZ0aXRsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JD
b250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9s
bGVyLmNwcAppbmRleCBmN2U0MWIyYWExNWQ3YjhjNWU4MTFhMjg5YWEzMjBjMTA0OWY0MTNhLi5m
MTY2NzJlYjczNDc5OGQzMzliNDBhZmYxNzczYTliNjcxYTcxZTFmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCkBAIC0xMTcsMjcgKzEx
NywyNyBAQCBJbnNwZWN0b3JDb250cm9sbGVyOjpJbnNwZWN0b3JDb250cm9sbGVyKFBhZ2UmIHBh
Z2UsIEluc3BlY3RvckNsaWVudCogaW5zcGVjdG9yQwogICAgIGF1dG8gaW5zcGVjdG9yQWdlbnRQ
dHIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckFnZW50PihwYWdlQ29udGV4dCk7CiAgICAg
bV9pbnNwZWN0b3JBZ2VudCA9IGluc3BlY3RvckFnZW50UHRyLmdldCgpOwogICAgIG1faW5zdHJ1
bWVudGluZ0FnZW50cy0+c2V0SW5zcGVjdG9yQWdlbnQobV9pbnNwZWN0b3JBZ2VudCk7Ci0gICAg
bV9hZ2VudHMuYXBwZW5kKFdURjo6bW92ZShpbnNwZWN0b3JBZ2VudFB0cikpOworICAgIG1fYWdl
bnRzLmFwcGVuZChXVEZNb3ZlKGluc3BlY3RvckFnZW50UHRyKSk7CiAKICAgICBhdXRvIHBhZ2VB
Z2VudFB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yUGFnZUFnZW50PihwYWdlQ29udGV4
dCwgaW5zcGVjdG9yQ2xpZW50LCBtX292ZXJsYXkuZ2V0KCkpOwogICAgIEluc3BlY3RvclBhZ2VB
Z2VudCogcGFnZUFnZW50ID0gcGFnZUFnZW50UHRyLmdldCgpOwogICAgIG1fcGFnZUFnZW50ID0g
cGFnZUFnZW50UHRyLmdldCgpOwotICAgIG1fYWdlbnRzLmFwcGVuZChXVEY6Om1vdmUocGFnZUFn
ZW50UHRyKSk7CisgICAgbV9hZ2VudHMuYXBwZW5kKFdURk1vdmUocGFnZUFnZW50UHRyKSk7CiAK
ICAgICBhdXRvIHJ1bnRpbWVBZ2VudFB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8UGFnZVJ1bnRpbWVB
Z2VudD4ocGFnZUNvbnRleHQsIHBhZ2VBZ2VudCk7CiAgICAgUGFnZVJ1bnRpbWVBZ2VudCogcnVu
dGltZUFnZW50ID0gcnVudGltZUFnZW50UHRyLmdldCgpOwogICAgIG1faW5zdHJ1bWVudGluZ0Fn
ZW50cy0+c2V0UGFnZVJ1bnRpbWVBZ2VudChydW50aW1lQWdlbnQpOwotICAgIG1fYWdlbnRzLmFw
cGVuZChXVEY6Om1vdmUocnVudGltZUFnZW50UHRyKSk7CisgICAgbV9hZ2VudHMuYXBwZW5kKFdU
Rk1vdmUocnVudGltZUFnZW50UHRyKSk7CiAKICAgICBhdXRvIGRvbUFnZW50UHRyID0gc3RkOjpt
YWtlX3VuaXF1ZTxJbnNwZWN0b3JET01BZ2VudD4ocGFnZUNvbnRleHQsIHBhZ2VBZ2VudCwgbV9v
dmVybGF5LmdldCgpKTsKICAgICBtX2RvbUFnZW50ID0gZG9tQWdlbnRQdHIuZ2V0KCk7Ci0gICAg
bV9hZ2VudHMuYXBwZW5kKFdURjo6bW92ZShkb21BZ2VudFB0cikpOworICAgIG1fYWdlbnRzLmFw
cGVuZChXVEZNb3ZlKGRvbUFnZW50UHRyKSk7CiAKICAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjpt
YWtlX3VuaXF1ZTxJbnNwZWN0b3JDU1NBZ2VudD4ocGFnZUNvbnRleHQsIG1fZG9tQWdlbnQpKTsK
IAogICAgIGF1dG8gZGF0YWJhc2VBZ2VudFB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9y
RGF0YWJhc2VBZ2VudD4ocGFnZUNvbnRleHQpOwogICAgIEluc3BlY3RvckRhdGFiYXNlQWdlbnQq
IGRhdGFiYXNlQWdlbnQgPSBkYXRhYmFzZUFnZW50UHRyLmdldCgpOwotICAgIG1fYWdlbnRzLmFw
cGVuZChXVEY6Om1vdmUoZGF0YWJhc2VBZ2VudFB0cikpOworICAgIG1fYWdlbnRzLmFwcGVuZChX
VEZNb3ZlKGRhdGFiYXNlQWdlbnRQdHIpKTsKIAogICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1h
a2VfdW5pcXVlPEluc3BlY3Rvck5ldHdvcmtBZ2VudD4ocGFnZUNvbnRleHQsIHBhZ2VBZ2VudCkp
OwogCkBAIC0xNTEsMjAgKzE1MSwyMCBAQCBJbnNwZWN0b3JDb250cm9sbGVyOjpJbnNwZWN0b3JD
b250cm9sbGVyKFBhZ2UmIHBhZ2UsIEluc3BlY3RvckNsaWVudCogaW5zcGVjdG9yQwogCiAgICAg
YXV0byBkb21TdG9yYWdlQWdlbnRQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckRPTVN0
b3JhZ2VBZ2VudD4ocGFnZUNvbnRleHQsIG1fcGFnZUFnZW50KTsKICAgICBJbnNwZWN0b3JET01T
dG9yYWdlQWdlbnQqIGRvbVN0b3JhZ2VBZ2VudCA9IGRvbVN0b3JhZ2VBZ2VudFB0ci5nZXQoKTsK
LSAgICBtX2FnZW50cy5hcHBlbmQoV1RGOjptb3ZlKGRvbVN0b3JhZ2VBZ2VudFB0cikpOworICAg
IG1fYWdlbnRzLmFwcGVuZChXVEZNb3ZlKGRvbVN0b3JhZ2VBZ2VudFB0cikpOwogCiAgICAgYXV0
byB0aW1lbGluZUFnZW50UHRyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JUaW1lbGluZUFn
ZW50PihwYWdlQ29udGV4dCwgcGFnZUFnZW50KTsKICAgICBtX3RpbWVsaW5lQWdlbnQgPSB0aW1l
bGluZUFnZW50UHRyLmdldCgpOwotICAgIG1fYWdlbnRzLmFwcGVuZChXVEY6Om1vdmUodGltZWxp
bmVBZ2VudFB0cikpOworICAgIG1fYWdlbnRzLmFwcGVuZChXVEZNb3ZlKHRpbWVsaW5lQWdlbnRQ
dHIpKTsKIAogICAgIGF1dG8gY29uc29sZUFnZW50UHRyID0gc3RkOjptYWtlX3VuaXF1ZTxQYWdl
Q29uc29sZUFnZW50PihwYWdlQ29udGV4dCwgbV9kb21BZ2VudCk7CiAgICAgV2ViQ29uc29sZUFn
ZW50KiBjb25zb2xlQWdlbnQgPSBjb25zb2xlQWdlbnRQdHIuZ2V0KCk7CiAgICAgbV9pbnN0cnVt
ZW50aW5nQWdlbnRzLT5zZXRXZWJDb25zb2xlQWdlbnQoY29uc29sZUFnZW50UHRyLmdldCgpKTsK
LSAgICBtX2FnZW50cy5hcHBlbmQoV1RGOjptb3ZlKGNvbnNvbGVBZ2VudFB0cikpOworICAgIG1f
YWdlbnRzLmFwcGVuZChXVEZNb3ZlKGNvbnNvbGVBZ2VudFB0cikpOwogCiAgICAgYXV0byBkZWJ1
Z2dlckFnZW50UHRyID0gc3RkOjptYWtlX3VuaXF1ZTxQYWdlRGVidWdnZXJBZ2VudD4ocGFnZUNv
bnRleHQsIHBhZ2VBZ2VudCwgbV9vdmVybGF5LmdldCgpKTsKICAgICBQYWdlRGVidWdnZXJBZ2Vu
dCogZGVidWdnZXJBZ2VudCA9IGRlYnVnZ2VyQWdlbnRQdHIuZ2V0KCk7Ci0gICAgbV9hZ2VudHMu
YXBwZW5kKFdURjo6bW92ZShkZWJ1Z2dlckFnZW50UHRyKSk7CisgICAgbV9hZ2VudHMuYXBwZW5k
KFdURk1vdmUoZGVidWdnZXJBZ2VudFB0cikpOwogCiAgICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6
bWFrZV91bmlxdWU8SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudD4ocGFnZUNvbnRleHQsIG1fZG9t
QWdlbnQsIGRlYnVnZ2VyQWdlbnQpKTsKICAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3Vu
aXF1ZTxJbnNwZWN0b3JIZWFwQWdlbnQ+KHBhZ2VDb250ZXh0KSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcAppbmRleCBjN2NjODhjNmM5ODAxM2Y0
YjBhYWU3NjcwMjdmZjJlZjZlMzlmMzU3Li44YjMzZWRiYjUyY2Y4NTFkYTgyOWU2OTdlY2FhZTBl
ZDk3YTMyZDRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RE9NQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01B
Z2VudC5jcHAKQEAgLTU4Myw3ICs1ODMsNyBAQCBpbnQgSW5zcGVjdG9yRE9NQWdlbnQ6OnB1c2hO
b2RlUGF0aFRvRnJvbnRlbmQoTm9kZSogbm9kZVRvUHVzaCkKICAgICAgICAgICAgIG1fZGFuZ2xp
bmdOb2RlVG9JZE1hcHMuYXBwZW5kKG5ld01hcC5yZWxlYXNlKCkpOwogICAgICAgICAgICAgYXV0
byBjaGlsZHJlbiA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkRPTTo6Tm9kZT46OmNyZWF0ZSgpOwogICAgICAgICAgICAgY2hpbGRyZW4tPmFkZEl0ZW0o
YnVpbGRPYmplY3RGb3JOb2RlKG5vZGUsIDAsIGRhbmdsaW5nTWFwKSk7Ci0gICAgICAgICAgICBt
X2Zyb250ZW5kRGlzcGF0Y2hlci0+c2V0Q2hpbGROb2RlcygwLCBXVEY6Om1vdmUoY2hpbGRyZW4p
KTsKKyAgICAgICAgICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5zZXRDaGlsZE5vZGVzKDAsIFdU
Rk1vdmUoY2hpbGRyZW4pKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgcGF0aC5hcHBlbmQocGFyZW50KTsKQEAgLTEwNTAsNyArMTA1MCw3IEBAIHZv
aWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnNldEluc3BlY3RNb2RlRW5hYmxlZChFcnJvclN0cmluZyYg
ZXJyb3JTdHJpbmcsIGJvb2wgZW5hCiB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpoaWdobGlnaHRS
ZWN0KEVycm9yU3RyaW5nJiwgaW50IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIGNv
bnN0IEluc3BlY3Rvck9iamVjdCogY29sb3IsIGNvbnN0IEluc3BlY3Rvck9iamVjdCogb3V0bGlu
ZUNvbG9yLCBjb25zdCBib29sKiB1c2VQYWdlQ29vcmRpbmF0ZXMpCiB7CiAgICAgYXV0byBxdWFk
ID0gc3RkOjptYWtlX3VuaXF1ZTxGbG9hdFF1YWQ+KEZsb2F0UmVjdCh4LCB5LCB3aWR0aCwgaGVp
Z2h0KSk7Ci0gICAgaW5uZXJIaWdobGlnaHRRdWFkKFdURjo6bW92ZShxdWFkKSwgY29sb3IsIG91
dGxpbmVDb2xvciwgdXNlUGFnZUNvb3JkaW5hdGVzKTsKKyAgICBpbm5lckhpZ2hsaWdodFF1YWQo
V1RGTW92ZShxdWFkKSwgY29sb3IsIG91dGxpbmVDb2xvciwgdXNlUGFnZUNvb3JkaW5hdGVzKTsK
IH0KIAogdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6aGlnaGxpZ2h0UXVhZChFcnJvclN0cmluZyYg
ZXJyb3JTdHJpbmcsIGNvbnN0IEluc3BlY3RvckFycmF5JiBxdWFkQXJyYXksIGNvbnN0IEluc3Bl
Y3Rvck9iamVjdCogY29sb3IsIGNvbnN0IEluc3BlY3Rvck9iamVjdCogb3V0bGluZUNvbG9yLCBj
b25zdCBib29sKiB1c2VQYWdlQ29vcmRpbmF0ZXMpCkBAIC0xMDYwLDcgKzEwNjAsNyBAQCB2b2lk
IEluc3BlY3RvckRPTUFnZW50OjpoaWdobGlnaHRRdWFkKEVycm9yU3RyaW5nJiBlcnJvclN0cmlu
ZywgY29uc3QgSW5zcGVjdG9yQQogICAgICAgICBlcnJvclN0cmluZyA9IEFTQ0lJTGl0ZXJhbCgi
SW52YWxpZCBRdWFkIGZvcm1hdCIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGlubmVy
SGlnaGxpZ2h0UXVhZChXVEY6Om1vdmUocXVhZCksIGNvbG9yLCBvdXRsaW5lQ29sb3IsIHVzZVBh
Z2VDb29yZGluYXRlcyk7CisgICAgaW5uZXJIaWdobGlnaHRRdWFkKFdURk1vdmUocXVhZCksIGNv
bG9yLCBvdXRsaW5lQ29sb3IsIHVzZVBhZ2VDb29yZGluYXRlcyk7CiB9CiAKIHZvaWQgSW5zcGVj
dG9yRE9NQWdlbnQ6OmlubmVySGlnaGxpZ2h0UXVhZChzdGQ6OnVuaXF1ZV9wdHI8RmxvYXRRdWFk
PiBxdWFkLCBjb25zdCBJbnNwZWN0b3JPYmplY3QqIGNvbG9yLCBjb25zdCBJbnNwZWN0b3JPYmpl
Y3QqIG91dGxpbmVDb2xvciwgY29uc3QgYm9vbCogdXNlUGFnZUNvb3JkaW5hdGVzKQpAQCAtMTA2
OSw3ICsxMDY5LDcgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6aW5uZXJIaWdobGlnaHRRdWFk
KHN0ZDo6dW5pcXVlX3B0cjxGbG9hdFF1YWQ+IHF1YWQsIGNvbnMKICAgICBoaWdobGlnaHRDb25m
aWctPmNvbnRlbnQgPSBwYXJzZUNvbG9yKGNvbG9yKTsKICAgICBoaWdobGlnaHRDb25maWctPmNv
bnRlbnRPdXRsaW5lID0gcGFyc2VDb2xvcihvdXRsaW5lQ29sb3IpOwogICAgIGhpZ2hsaWdodENv
bmZpZy0+dXNlUGFnZUNvb3JkaW5hdGVzID0gdXNlUGFnZUNvb3JkaW5hdGVzID8gKnVzZVBhZ2VD
b29yZGluYXRlcyA6IGZhbHNlOwotICAgIG1fb3ZlcmxheS0+aGlnaGxpZ2h0UXVhZChXVEY6Om1v
dmUocXVhZCksICpoaWdobGlnaHRDb25maWcpOworICAgIG1fb3ZlcmxheS0+aGlnaGxpZ2h0UXVh
ZChXVEZNb3ZlKHF1YWQpLCAqaGlnaGxpZ2h0Q29uZmlnKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JE
T01BZ2VudDo6aGlnaGxpZ2h0U2VsZWN0b3IoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25z
dCBJbnNwZWN0b3JPYmplY3QmIGhpZ2hsaWdodEluc3BlY3Rvck9iamVjdCwgY29uc3QgU3RyaW5n
JiBzZWxlY3RvclN0cmluZywgY29uc3QgU3RyaW5nKiBmcmFtZUlkKQpAQCAtMTEwNCw3ICsxMTA0
LDcgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6aGlnaGxpZ2h0U2VsZWN0b3IoRXJyb3JTdHJp
bmcmIGVycm9yU3RyaW5nLCBjb25zdCBJbnNwZWMKICAgICBpZiAoIWhpZ2hsaWdodENvbmZpZykK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9vdmVybGF5LT5oaWdobGlnaHROb2RlTGlzdChXVEY6
Om1vdmUobm9kZXMpLCAqaGlnaGxpZ2h0Q29uZmlnKTsKKyAgICBtX292ZXJsYXktPmhpZ2hsaWdo
dE5vZGVMaXN0KFdURk1vdmUobm9kZXMpLCAqaGlnaGxpZ2h0Q29uZmlnKTsKIH0KIAogdm9pZCBJ
bnNwZWN0b3JET01BZ2VudDo6aGlnaGxpZ2h0Tm9kZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcs
IGNvbnN0IEluc3BlY3Rvck9iamVjdCYgaGlnaGxpZ2h0SW5zcGVjdG9yT2JqZWN0LCBjb25zdCBp
bnQqIG5vZGVJZCwgY29uc3QgU3RyaW5nKiBvYmplY3RJZCkKQEAgLTEzMTQsNyArMTMxNCw3IEBA
IFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpET006Ok5vZGU+IEluc3BlY3RvckRPTUFnZW50Ojpi
dWlsZE9iamVjdEZvck5vZGUoTm9kZSoKICAgICAgICAgdmFsdWUtPnNldENoaWxkTm9kZUNvdW50
KG5vZGVDb3VudCk7CiAgICAgICAgIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNw
ZWN0b3I6OlByb3RvY29sOjpET006Ok5vZGU+PiBjaGlsZHJlbiA9IGJ1aWxkQXJyYXlGb3JDb250
YWluZXJDaGlsZHJlbihub2RlLCBkZXB0aCwgbm9kZXNNYXApOwogICAgICAgICBpZiAoY2hpbGRy
ZW4tPmxlbmd0aCgpID4gMCkKLSAgICAgICAgICAgIHZhbHVlLT5zZXRDaGlsZHJlbihXVEY6Om1v
dmUoY2hpbGRyZW4pKTsKKyAgICAgICAgICAgIHZhbHVlLT5zZXRDaGlsZHJlbihXVEZNb3ZlKGNo
aWxkcmVuKSk7CiAgICAgfQogCiAgICAgaWYgKGlzPEVsZW1lbnQ+KCpub2RlKSkgewpAQCAtMTMz
Myw3ICsxMzMzLDcgQEAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9kZT4gSW5zcGVj
dG9yRE9NQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yTm9kZShOb2RlKgogICAgICAgICBpZiAoU2hhZG93
Um9vdCogcm9vdCA9IGVsZW1lbnQuc2hhZG93Um9vdCgpKSB7CiAgICAgICAgICAgICBhdXRvIHNo
YWRvd1Jvb3RzID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6RE9NOjpOb2RlPjo6Y3JlYXRlKCk7CiAgICAgICAgICAgICBzaGFkb3dSb290cy0+YWRkSXRl
bShidWlsZE9iamVjdEZvck5vZGUocm9vdCwgMCwgbm9kZXNNYXApKTsKLSAgICAgICAgICAgIHZh
bHVlLT5zZXRTaGFkb3dSb290cyhXVEY6Om1vdmUoc2hhZG93Um9vdHMpKTsKKyAgICAgICAgICAg
IHZhbHVlLT5zZXRTaGFkb3dSb290cyhXVEZNb3ZlKHNoYWRvd1Jvb3RzKSk7CiAgICAgICAgIH0K
IAogI2lmIEVOQUJMRShURU1QTEFURV9FTEVNRU5UKQpAQCAtMTM0Nyw3ICsxMzQ3LDcgQEAgUmVm
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9kZT4gSW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxk
T2JqZWN0Rm9yTm9kZShOb2RlKgogICAgICAgICAgICAgICAgIHZhbHVlLT5zZXRQc2V1ZG9UeXBl
KHBzZXVkb1R5cGUpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgaWYgKGF1dG8gcHNl
dWRvRWxlbWVudHMgPSBidWlsZEFycmF5Rm9yUHNldWRvRWxlbWVudHMoZWxlbWVudCwgbm9kZXNN
YXApKQotICAgICAgICAgICAgICAgIHZhbHVlLT5zZXRQc2V1ZG9FbGVtZW50cyhXVEY6Om1vdmUo
cHNldWRvRWxlbWVudHMpKTsKKyAgICAgICAgICAgICAgICB2YWx1ZS0+c2V0UHNldWRvRWxlbWVu
dHMoV1RGTW92ZShwc2V1ZG9FbGVtZW50cykpOwogICAgICAgICB9CiAKICAgICB9IGVsc2UgaWYg
KGlzPERvY3VtZW50Pigqbm9kZSkpIHsKQEAgLTE0MjksNyArMTQyOSw3IEBAIFJlZlB0cjxJbnNw
ZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpET006Ok5vZGU+PiBJ
bnNwZWN0b3JET01BCiAgICAgICAgIHBzZXVkb0VsZW1lbnRzLT5hZGRJdGVtKGJ1aWxkT2JqZWN0
Rm9yTm9kZShiZWZvcmVFbGVtZW50LCAwLCBub2Rlc01hcCkpOwogICAgIGlmIChhZnRlckVsZW1l
bnQpCiAgICAgICAgIHBzZXVkb0VsZW1lbnRzLT5hZGRJdGVtKGJ1aWxkT2JqZWN0Rm9yTm9kZShh
ZnRlckVsZW1lbnQsIDAsIG5vZGVzTWFwKSk7Ci0gICAgcmV0dXJuIFdURjo6bW92ZShwc2V1ZG9F
bGVtZW50cyk7CisgICAgcmV0dXJuIFdURk1vdmUocHNldWRvRWxlbWVudHMpOwogfQogCiBSZWY8
SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpFdmVudExpc3RlbmVyPiBJbnNwZWN0b3JET01BZ2Vu
dDo6YnVpbGRPYmplY3RGb3JFdmVudExpc3RlbmVyKGNvbnN0IFJlZ2lzdGVyZWRFdmVudExpc3Rl
bmVyJiByZWdpc3RlcmVkRXZlbnRMaXN0ZW5lciwgY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5
cGUsIE5vZGUqIG5vZGUsIGNvbnN0IFN0cmluZyogb2JqZWN0R3JvdXBJZCkKQEAgLTE0NzcsNyAr
MTQ3Nyw3IEBAIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpET006OkV2ZW50TGlzdGVuZXI+IElu
c3BlY3RvckRPTUFnZW50OjpidWlsZE9iamVjdEZvckV2CiAgICAgICAgICAgICAuc2V0U2NyaXB0
SWQoc2NyaXB0SUQpCiAgICAgICAgICAgICAuc2V0TGluZU51bWJlcihsaW5lTnVtYmVyKQogICAg
ICAgICAgICAgLnJlbGVhc2UoKTsKLSAgICAgICAgdmFsdWUtPnNldExvY2F0aW9uKFdURjo6bW92
ZShsb2NhdGlvbikpOworICAgICAgICB2YWx1ZS0+c2V0TG9jYXRpb24oV1RGTW92ZShsb2NhdGlv
bikpOwogICAgICAgICBpZiAoIXNvdXJjZU5hbWUuaXNFbXB0eSgpKQogICAgICAgICAgICAgdmFs
dWUtPnNldFNvdXJjZU5hbWUoc291cmNlTmFtZSk7CiAgICAgfQpAQCAtMTU2OSw3ICsxNTY5LDcg
QEAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6QWNjZXNzaWJpbGl0eVByb3BlcnRp
ZXM+IEluc3BlY3RvckRPTUFnZW50OjpidWkKICAgICAgICAgICAgICAgICAgICAgY2hlY2tlZCA9
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6QWNjZXNzaWJpbGl0eVByb3BlcnRpZXM6OkNoZWNr
ZWQ6OlRydWU7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIHByb2Nl
c3NBY2Nlc3NpYmlsaXR5Q2hpbGRyZW4oYXhPYmplY3QsIFdURjo6bW92ZShjaGlsZE5vZGVJZHMp
KTsKKyAgICAgICAgICAgIHByb2Nlc3NBY2Nlc3NpYmlsaXR5Q2hpbGRyZW4oYXhPYmplY3QsIFdU
Rk1vdmUoY2hpbGROb2RlSWRzKSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChheE9i
amVjdC0+c3VwcG9ydHNBUklBQ29udHJvbHMoKSkgewogICAgICAgICAgICAgICAgIFZlY3RvcjxF
bGVtZW50Kj4gY29udHJvbGxlZEVsZW1lbnRzOwpAQCAtMTc4NCw3ICsxNzg0LDcgQEAgUmVmUHRy
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6QWNjZXNzaWJpbGl0eVByb3BlcnRpZXM+IEluc3Bl
Y3RvckRPTUFnZW50OjpidWkKICAgICAgICAgICAgIHZhbHVlLT5zZXRTZWxlY3RlZENoaWxkTm9k
ZUlkcyhzZWxlY3RlZENoaWxkTm9kZUlkcyk7CiAgICAgfQogCi0gICAgcmV0dXJuIFdURjo6bW92
ZSh2YWx1ZSk7CisgICAgcmV0dXJuIFdURk1vdmUodmFsdWUpOwogfQogCiBOb2RlKiBJbnNwZWN0
b3JET01BZ2VudDo6aW5uZXJGaXJzdENoaWxkKE5vZGUqIG5vZGUpCkBAIC0xODYyLDcgKzE4NjIs
NyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpkaWRDb21taXRMb2FkKERvY3VtZW50KiBkb2N1
bWVudCkKICAgICBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpOb2RlPiB2YWx1ZSA9IGJ1
aWxkT2JqZWN0Rm9yTm9kZShmcmFtZU93bmVyLCAwLCAmbV9kb2N1bWVudE5vZGVUb0lkTWFwKTsK
ICAgICBOb2RlKiBwcmV2aW91c1NpYmxpbmcgPSBpbm5lclByZXZpb3VzU2libGluZyhmcmFtZU93
bmVyKTsKICAgICBpbnQgcHJldklkID0gcHJldmlvdXNTaWJsaW5nID8gbV9kb2N1bWVudE5vZGVU
b0lkTWFwLmdldChwcmV2aW91c1NpYmxpbmcpIDogMDsKLSAgICBtX2Zyb250ZW5kRGlzcGF0Y2hl
ci0+Y2hpbGROb2RlSW5zZXJ0ZWQocGFyZW50SWQsIHByZXZJZCwgV1RGOjptb3ZlKHZhbHVlKSk7
CisgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPmNoaWxkTm9kZUluc2VydGVkKHBhcmVudElkLCBw
cmV2SWQsIFdURk1vdmUodmFsdWUpKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6ZGlk
SW5zZXJ0RE9NTm9kZShOb2RlJiBub2RlKQpAQCAtMTg5MCw3ICsxODkwLDcgQEAgdm9pZCBJbnNw
ZWN0b3JET01BZ2VudDo6ZGlkSW5zZXJ0RE9NTm9kZShOb2RlJiBub2RlKQogICAgICAgICBOb2Rl
KiBwcmV2U2libGluZyA9IGlubmVyUHJldmlvdXNTaWJsaW5nKCZub2RlKTsKICAgICAgICAgaW50
IHByZXZJZCA9IHByZXZTaWJsaW5nID8gbV9kb2N1bWVudE5vZGVUb0lkTWFwLmdldChwcmV2U2li
bGluZykgOiAwOwogICAgICAgICBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpOb2RlPiB2
YWx1ZSA9IGJ1aWxkT2JqZWN0Rm9yTm9kZSgmbm9kZSwgMCwgJm1fZG9jdW1lbnROb2RlVG9JZE1h
cCk7Ci0gICAgICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5jaGlsZE5vZGVJbnNlcnRlZChwYXJl
bnRJZCwgcHJldklkLCBXVEY6Om1vdmUodmFsdWUpKTsKKyAgICAgICAgbV9mcm9udGVuZERpc3Bh
dGNoZXItPmNoaWxkTm9kZUluc2VydGVkKHBhcmVudElkLCBwcmV2SWQsIFdURk1vdmUodmFsdWUp
KTsKICAgICB9CiB9CiAKQEAgLTE5NjUsNyArMTk2NSw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdl
bnQ6OnN0eWxlQXR0cmlidXRlSW52YWxpZGF0ZWQoY29uc3QgVmVjdG9yPEVsZW1lbnQqPiYgZWxl
bWVuCiAgICAgICAgICAgICBtX2RvbUxpc3RlbmVyLT5kaWRNb2RpZnlET01BdHRyKGVsZW1lbnQp
OwogICAgICAgICBub2RlSWRzLT5hZGRJdGVtKGlkKTsKICAgICB9Ci0gICAgbV9mcm9udGVuZERp
c3BhdGNoZXItPmlubGluZVN0eWxlSW52YWxpZGF0ZWQoV1RGOjptb3ZlKG5vZGVJZHMpKTsKKyAg
ICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+aW5saW5lU3R5bGVJbnZhbGlkYXRlZChXVEZNb3ZlKG5v
ZGVJZHMpKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6Y2hhcmFjdGVyRGF0YU1vZGlm
aWVkKENoYXJhY3RlckRhdGEmIGNoYXJhY3RlckRhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5jcHAKaW5kZXggMzJkNjYw
MzNkZDJmZThhZWQxM2Y0MjY2Mzc0NWE2MWVkYjhmZGM3MS4uMzBkMmUyOTcwZDk1ZmY2OGIxOWQ4
MDQyYzBkOWRhNmJjYzU4ZmI2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmNwcApAQCAtMTY2LDcgKzE2Niw3IEBAIHZv
aWQgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6ZGlkSW52YWxpZGF0ZVN0eWxlQXR0cihOb2Rl
JiBub2RlKQogICAgIGlmIChoYXNCcmVha3BvaW50KCZub2RlLCBBdHRyaWJ1dGVNb2RpZmllZCkp
IHsKICAgICAgICAgUmVmPEluc3BlY3Rvck9iamVjdD4gZXZlbnREYXRhID0gSW5zcGVjdG9yT2Jq
ZWN0OjpjcmVhdGUoKTsKICAgICAgICAgZGVzY3JpcHRpb25Gb3JET01FdmVudChub2RlLCBBdHRy
aWJ1dGVNb2RpZmllZCwgZmFsc2UsIGV2ZW50RGF0YS5nZXQoKSk7Ci0gICAgICAgIG1fZGVidWdn
ZXJBZ2VudC0+YnJlYWtQcm9ncmFtKEluc3BlY3Rvcjo6RGVidWdnZXJGcm9udGVuZERpc3BhdGNo
ZXI6OlJlYXNvbjo6RE9NLCBXVEY6Om1vdmUoZXZlbnREYXRhKSk7CisgICAgICAgIG1fZGVidWdn
ZXJBZ2VudC0+YnJlYWtQcm9ncmFtKEluc3BlY3Rvcjo6RGVidWdnZXJGcm9udGVuZERpc3BhdGNo
ZXI6OlJlYXNvbjo6RE9NLCBXVEZNb3ZlKGV2ZW50RGF0YSkpOwogICAgIH0KIH0KIApAQCAtMjY2
LDcgKzI2Niw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6d2lsbEluc2VydERP
TU5vZGUoTm9kZSYgcGFyZW50KQogICAgIGlmIChoYXNCcmVha3BvaW50KCZwYXJlbnQsIFN1YnRy
ZWVNb2RpZmllZCkpIHsKICAgICAgICAgUmVmPEluc3BlY3Rvck9iamVjdD4gZXZlbnREYXRhID0g
SW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKICAgICAgICAgZGVzY3JpcHRpb25Gb3JET01FdmVu
dChwYXJlbnQsIFN1YnRyZWVNb2RpZmllZCwgdHJ1ZSwgZXZlbnREYXRhLmdldCgpKTsKLSAgICAg
ICAgbV9kZWJ1Z2dlckFnZW50LT5icmVha1Byb2dyYW0oSW5zcGVjdG9yOjpEZWJ1Z2dlckZyb250
ZW5kRGlzcGF0Y2hlcjo6UmVhc29uOjpET00sIFdURjo6bW92ZShldmVudERhdGEpKTsKKyAgICAg
ICAgbV9kZWJ1Z2dlckFnZW50LT5icmVha1Byb2dyYW0oSW5zcGVjdG9yOjpEZWJ1Z2dlckZyb250
ZW5kRGlzcGF0Y2hlcjo6UmVhc29uOjpET00sIFdURk1vdmUoZXZlbnREYXRhKSk7CiAgICAgfQog
fQogCkBAIC0yNzYsMTEgKzI3NiwxMSBAQCB2b2lkIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6
OndpbGxSZW1vdmVET01Ob2RlKE5vZGUmIG5vZGUpCiAgICAgaWYgKGhhc0JyZWFrcG9pbnQoJm5v
ZGUsIE5vZGVSZW1vdmVkKSkgewogICAgICAgICBSZWY8SW5zcGVjdG9yT2JqZWN0PiBldmVudERh
dGEgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwogICAgICAgICBkZXNjcmlwdGlvbkZvckRP
TUV2ZW50KG5vZGUsIE5vZGVSZW1vdmVkLCBmYWxzZSwgZXZlbnREYXRhLmdldCgpKTsKLSAgICAg
ICAgbV9kZWJ1Z2dlckFnZW50LT5icmVha1Byb2dyYW0oSW5zcGVjdG9yOjpEZWJ1Z2dlckZyb250
ZW5kRGlzcGF0Y2hlcjo6UmVhc29uOjpET00sIFdURjo6bW92ZShldmVudERhdGEpKTsKKyAgICAg
ICAgbV9kZWJ1Z2dlckFnZW50LT5icmVha1Byb2dyYW0oSW5zcGVjdG9yOjpEZWJ1Z2dlckZyb250
ZW5kRGlzcGF0Y2hlcjo6UmVhc29uOjpET00sIFdURk1vdmUoZXZlbnREYXRhKSk7CiAgICAgfSBl
bHNlIGlmIChwYXJlbnROb2RlICYmIGhhc0JyZWFrcG9pbnQocGFyZW50Tm9kZSwgU3VidHJlZU1v
ZGlmaWVkKSkgewogICAgICAgICBSZWY8SW5zcGVjdG9yT2JqZWN0PiBldmVudERhdGEgPSBJbnNw
ZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwogICAgICAgICBkZXNjcmlwdGlvbkZvckRPTUV2ZW50KG5v
ZGUsIFN1YnRyZWVNb2RpZmllZCwgZmFsc2UsIGV2ZW50RGF0YS5nZXQoKSk7Ci0gICAgICAgIG1f
ZGVidWdnZXJBZ2VudC0+YnJlYWtQcm9ncmFtKEluc3BlY3Rvcjo6RGVidWdnZXJGcm9udGVuZERp
c3BhdGNoZXI6OlJlYXNvbjo6RE9NLCBXVEY6Om1vdmUoZXZlbnREYXRhKSk7CisgICAgICAgIG1f
ZGVidWdnZXJBZ2VudC0+YnJlYWtQcm9ncmFtKEluc3BlY3Rvcjo6RGVidWdnZXJGcm9udGVuZERp
c3BhdGNoZXI6OlJlYXNvbjo6RE9NLCBXVEZNb3ZlKGV2ZW50RGF0YSkpOwogICAgIH0KIH0KIApA
QCAtMjg5LDcgKzI4OSw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6d2lsbE1v
ZGlmeURPTUF0dHIoRWxlbWVudCYgZWxlbWVudCkKICAgICBpZiAoaGFzQnJlYWtwb2ludCgmZWxl
bWVudCwgQXR0cmlidXRlTW9kaWZpZWQpKSB7CiAgICAgICAgIFJlZjxJbnNwZWN0b3JPYmplY3Q+
IGV2ZW50RGF0YSA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7CiAgICAgICAgIGRlc2NyaXB0
aW9uRm9yRE9NRXZlbnQoZWxlbWVudCwgQXR0cmlidXRlTW9kaWZpZWQsIGZhbHNlLCBldmVudERh
dGEuZ2V0KCkpOwotICAgICAgICBtX2RlYnVnZ2VyQWdlbnQtPmJyZWFrUHJvZ3JhbShJbnNwZWN0
b3I6OkRlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb246OkRPTSwgV1RGOjptb3ZlKGV2
ZW50RGF0YSkpOworICAgICAgICBtX2RlYnVnZ2VyQWdlbnQtPmJyZWFrUHJvZ3JhbShJbnNwZWN0
b3I6OkRlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb246OkRPTSwgV1RGTW92ZShldmVu
dERhdGEpKTsKICAgICB9CiB9CiAKQEAgLTM2Myw5ICszNjMsOSBAQCB2b2lkIEluc3BlY3RvckRP
TURlYnVnZ2VyQWdlbnQ6OnBhdXNlT25OYXRpdmVFdmVudElmTmVlZGVkKGJvb2wgaXNET01FdmVu
dCwgY29ucwogICAgIFJlZjxJbnNwZWN0b3JPYmplY3Q+IGV2ZW50RGF0YSA9IEluc3BlY3Rvck9i
amVjdDo6Y3JlYXRlKCk7CiAgICAgZXZlbnREYXRhLT5zZXRTdHJpbmcoImV2ZW50TmFtZSIsIGZ1
bGxFdmVudE5hbWUpOwogICAgIGlmIChzeW5jaHJvbm91cykKLSAgICAgICAgbV9kZWJ1Z2dlckFn
ZW50LT5icmVha1Byb2dyYW0oSW5zcGVjdG9yOjpEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6
UmVhc29uOjpFdmVudExpc3RlbmVyLCBXVEY6Om1vdmUoZXZlbnREYXRhKSk7CisgICAgICAgIG1f
ZGVidWdnZXJBZ2VudC0+YnJlYWtQcm9ncmFtKEluc3BlY3Rvcjo6RGVidWdnZXJGcm9udGVuZERp
c3BhdGNoZXI6OlJlYXNvbjo6RXZlbnRMaXN0ZW5lciwgV1RGTW92ZShldmVudERhdGEpKTsKICAg
ICBlbHNlCi0gICAgICAgIG1fZGVidWdnZXJBZ2VudC0+c2NoZWR1bGVQYXVzZU9uTmV4dFN0YXRl
bWVudChJbnNwZWN0b3I6OkRlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb246OkV2ZW50
TGlzdGVuZXIsIFdURjo6bW92ZShldmVudERhdGEpKTsKKyAgICAgICAgbV9kZWJ1Z2dlckFnZW50
LT5zY2hlZHVsZVBhdXNlT25OZXh0U3RhdGVtZW50KEluc3BlY3Rvcjo6RGVidWdnZXJGcm9udGVu
ZERpc3BhdGNoZXI6OlJlYXNvbjo6RXZlbnRMaXN0ZW5lciwgV1RGTW92ZShldmVudERhdGEpKTsK
IH0KIAogdm9pZCBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjpzZXRYSFJCcmVha3BvaW50KEVy
cm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiB1cmwpCkBAIC00MDgsNyArNDA4LDcgQEAgdm9pZCBJ
bnNwZWN0b3JET01EZWJ1Z2dlckFnZW50Ojp3aWxsU2VuZFhNTEh0dHBSZXF1ZXN0KGNvbnN0IFN0
cmluZyYgdXJsKQogICAgIFJlZjxJbnNwZWN0b3JPYmplY3Q+IGV2ZW50RGF0YSA9IEluc3BlY3Rv
ck9iamVjdDo6Y3JlYXRlKCk7CiAgICAgZXZlbnREYXRhLT5zZXRTdHJpbmcoImJyZWFrcG9pbnRV
UkwiLCBicmVha3BvaW50VVJMKTsKICAgICBldmVudERhdGEtPnNldFN0cmluZygidXJsIiwgdXJs
KTsKLSAgICBtX2RlYnVnZ2VyQWdlbnQtPmJyZWFrUHJvZ3JhbShJbnNwZWN0b3I6OkRlYnVnZ2Vy
RnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb246OlhIUiwgV1RGOjptb3ZlKGV2ZW50RGF0YSkpOwor
ICAgIG1fZGVidWdnZXJBZ2VudC0+YnJlYWtQcm9ncmFtKEluc3BlY3Rvcjo6RGVidWdnZXJGcm9u
dGVuZERpc3BhdGNoZXI6OlJlYXNvbjo6WEhSLCBXVEZNb3ZlKGV2ZW50RGF0YSkpOwogfQogCiB2
b2lkIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OmNsZWFyKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5jcHAKaW5kZXggNjgx
MmU0MWJlNzMzNDM1ZTZhODBiYmJlOGExYTUzYzUwMThkMzA3Yi4uN2JlZTgyOWJlZDI1MzNlN2U2
ZjI4MTA3NTRhMTAzYzBhNjMxYTY3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5jcHAKQEAgLTEwNiwxMCArMTA2LDEwIEBA
IHZvaWQgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpnZXRET01TdG9yYWdlSXRlbXMoRXJyb3JT
dHJpbmcmIGVycm9yU3RyaW5nLCBjb25zCiAgICAgICAgIGF1dG8gZW50cnkgPSBJbnNwZWN0b3I6
OlByb3RvY29sOjpBcnJheTxTdHJpbmc+OjpjcmVhdGUoKTsKICAgICAgICAgZW50cnktPmFkZEl0
ZW0oa2V5KTsKICAgICAgICAgZW50cnktPmFkZEl0ZW0odmFsdWUpOwotICAgICAgICBzdG9yYWdl
SXRlbXMtPmFkZEl0ZW0oV1RGOjptb3ZlKGVudHJ5KSk7CisgICAgICAgIHN0b3JhZ2VJdGVtcy0+
YWRkSXRlbShXVEZNb3ZlKGVudHJ5KSk7CiAgICAgfQogCi0gICAgaXRlbXMgPSBXVEY6Om1vdmUo
c3RvcmFnZUl0ZW1zKTsKKyAgICBpdGVtcyA9IFdURk1vdmUoc3RvcmFnZUl0ZW1zKTsKIH0KIAog
dm9pZCBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OnNldERPTVN0b3JhZ2VJdGVtKEVycm9yU3Ry
aW5nJiBlcnJvclN0cmluZywgY29uc3QgSW5zcGVjdG9yT2JqZWN0JiBzdG9yYWdlSWQsIGNvbnN0
IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuY3BwCmluZGV4IDc3MDI2NTlmNjI5
OTEzYTVjY2MyOWQ3ZjI5MDU3YzhjNzc2YzZjMmEuLjc2OGEyMzNiMzNkNGY5NzMyNmEyNjc0OGQy
YjMzMjA3MWU2Y2IyOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JEYXRhYmFzZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRGF0YWJhc2VBZ2VudC5jcHAKQEAgLTYzLDE0ICs2MywxNCBAQCB2b2lkIHJlcG9ydFRy
YW5zYWN0aW9uRmFpbGVkKEV4ZWN1dGVTUUxDYWxsYmFjayYgcmVxdWVzdENhbGxiYWNrLCBTUUxF
cnJvciogZXJybwogICAgICAgICAuc2V0TWVzc2FnZShlcnJvci0+bWVzc2FnZSgpKQogICAgICAg
ICAuc2V0Q29kZShlcnJvci0+Y29kZSgpKQogICAgICAgICAucmVsZWFzZSgpOwotICAgIHJlcXVl
c3RDYWxsYmFjay5zZW5kU3VjY2VzcyhudWxscHRyLCBudWxscHRyLCBXVEY6Om1vdmUoZXJyb3JP
YmplY3QpKTsKKyAgICByZXF1ZXN0Q2FsbGJhY2suc2VuZFN1Y2Nlc3MobnVsbHB0ciwgbnVsbHB0
ciwgV1RGTW92ZShlcnJvck9iamVjdCkpOwogfQogCiBjbGFzcyBTdGF0ZW1lbnRDYWxsYmFjayA6
IHB1YmxpYyBTUUxTdGF0ZW1lbnRDYWxsYmFjayB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxT
dGF0ZW1lbnRDYWxsYmFjaz4gY3JlYXRlKFJlZjxFeGVjdXRlU1FMQ2FsbGJhY2s+JiYgcmVxdWVz
dENhbGxiYWNrKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3RhdGVtZW50
Q2FsbGJhY2soV1RGOjptb3ZlKHJlcXVlc3RDYWxsYmFjaykpKTsKKyAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgU3RhdGVtZW50Q2FsbGJhY2soV1RGTW92ZShyZXF1ZXN0Q2FsbGJhY2spKSk7
CiAgICAgfQogCiAgICAgdmlydHVhbCB+U3RhdGVtZW50Q2FsbGJhY2soKSB7IH0KQEAgLTkyLDE1
ICs5MiwxNSBAQCBwdWJsaWM6CiAgICAgICAgICAgICBjYXNlIFNRTFZhbHVlOjpOdWxsVmFsdWU6
IGluc3BlY3RvclZhbHVlID0gSW5zcGVjdG9yVmFsdWU6Om51bGwoKTsgYnJlYWs7CiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIHZhbHVlcy0+YWRkSXRlbShXVEY6Om1v
dmUoaW5zcGVjdG9yVmFsdWUpKTsKKyAgICAgICAgICAgIHZhbHVlcy0+YWRkSXRlbShXVEZNb3Zl
KGluc3BlY3RvclZhbHVlKSk7CiAgICAgICAgIH0KLSAgICAgICAgbV9yZXF1ZXN0Q2FsbGJhY2st
PnNlbmRTdWNjZXNzKFdURjo6bW92ZShjb2x1bW5OYW1lcyksIFdURjo6bW92ZSh2YWx1ZXMpLCBu
dWxscHRyKTsKKyAgICAgICAgbV9yZXF1ZXN0Q2FsbGJhY2stPnNlbmRTdWNjZXNzKFdURk1vdmUo
Y29sdW1uTmFtZXMpLCBXVEZNb3ZlKHZhbHVlcyksIG51bGxwdHIpOwogICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICB9CiAKIHByaXZhdGU6CiAgICAgU3RhdGVtZW50Q2FsbGJhY2soUmVmPEV4ZWN1
dGVTUUxDYWxsYmFjaz4mJiByZXF1ZXN0Q2FsbGJhY2spCi0gICAgICAgIDogbV9yZXF1ZXN0Q2Fs
bGJhY2soV1RGOjptb3ZlKHJlcXVlc3RDYWxsYmFjaykpIHsgfQorICAgICAgICA6IG1fcmVxdWVz
dENhbGxiYWNrKFdURk1vdmUocmVxdWVzdENhbGxiYWNrKSkgeyB9CiAgICAgUmVmPEV4ZWN1dGVT
UUxDYWxsYmFjaz4gbV9yZXF1ZXN0Q2FsbGJhY2s7CiB9OwogCkBAIC0xMDgsNyArMTA4LDcgQEAg
Y2xhc3MgU3RhdGVtZW50RXJyb3JDYWxsYmFjayA6IHB1YmxpYyBTUUxTdGF0ZW1lbnRFcnJvckNh
bGxiYWNrIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFN0YXRlbWVudEVycm9yQ2FsbGJhY2s+
IGNyZWF0ZShSZWY8RXhlY3V0ZVNRTENhbGxiYWNrPiYmIHJlcXVlc3RDYWxsYmFjaykKICAgICB7
Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0YXRlbWVudEVycm9yQ2FsbGJhY2soV1RG
Ojptb3ZlKHJlcXVlc3RDYWxsYmFjaykpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
U3RhdGVtZW50RXJyb3JDYWxsYmFjayhXVEZNb3ZlKHJlcXVlc3RDYWxsYmFjaykpKTsKICAgICB9
CiAKICAgICB2aXJ0dWFsIH5TdGF0ZW1lbnRFcnJvckNhbGxiYWNrKCkgeyB9CkBAIC0xMjEsNyAr
MTIxLDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIFN0YXRlbWVudEVycm9yQ2FsbGJhY2so
UmVmPEV4ZWN1dGVTUUxDYWxsYmFjaz4mJiByZXF1ZXN0Q2FsbGJhY2spCi0gICAgICAgIDogbV9y
ZXF1ZXN0Q2FsbGJhY2soV1RGOjptb3ZlKHJlcXVlc3RDYWxsYmFjaykpIHsgfQorICAgICAgICA6
IG1fcmVxdWVzdENhbGxiYWNrKFdURk1vdmUocmVxdWVzdENhbGxiYWNrKSkgeyB9CiAgICAgUmVm
PEV4ZWN1dGVTUUxDYWxsYmFjaz4gbV9yZXF1ZXN0Q2FsbGJhY2s7CiB9OwogCkBAIC0xMjksNyAr
MTI5LDcgQEAgY2xhc3MgVHJhbnNhY3Rpb25DYWxsYmFjayA6IHB1YmxpYyBTUUxUcmFuc2FjdGlv
bkNhbGxiYWNrIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFRyYW5zYWN0aW9uQ2FsbGJhY2s+
IGNyZWF0ZShjb25zdCBTdHJpbmcmIHNxbFN0YXRlbWVudCwgUmVmPEV4ZWN1dGVTUUxDYWxsYmFj
az4mJiByZXF1ZXN0Q2FsbGJhY2spCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBUcmFuc2FjdGlvbkNhbGxiYWNrKHNxbFN0YXRlbWVudCwgV1RGOjptb3ZlKHJlcXVlc3RDYWxs
YmFjaykpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVHJhbnNhY3Rpb25DYWxsYmFj
ayhzcWxTdGF0ZW1lbnQsIFdURk1vdmUocmVxdWVzdENhbGxiYWNrKSkpOwogICAgIH0KIAogICAg
IHZpcnR1YWwgflRyYW5zYWN0aW9uQ2FsbGJhY2soKSB7IH0KQEAgLTE0MiwxMyArMTQyLDEzIEBA
IHB1YmxpYzoKICAgICAgICAgVmVjdG9yPFNRTFZhbHVlPiBzcWxWYWx1ZXM7CiAgICAgICAgIFJl
ZjxTUUxTdGF0ZW1lbnRDYWxsYmFjaz4gY2FsbGJhY2soU3RhdGVtZW50Q2FsbGJhY2s6OmNyZWF0
ZShtX3JlcXVlc3RDYWxsYmFjay5jb3B5UmVmKCkpKTsKICAgICAgICAgUmVmPFNRTFN0YXRlbWVu
dEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2soU3RhdGVtZW50RXJyb3JDYWxsYmFjazo6Y3Jl
YXRlKG1fcmVxdWVzdENhbGxiYWNrLmNvcHlSZWYoKSkpOwotICAgICAgICB0cmFuc2FjdGlvbi0+
ZXhlY3V0ZVNRTChtX3NxbFN0YXRlbWVudCwgc3FsVmFsdWVzLCBXVEY6Om1vdmUoY2FsbGJhY2sp
LCBXVEY6Om1vdmUoZXJyb3JDYWxsYmFjayksIElHTk9SRV9FWENFUFRJT04pOworICAgICAgICB0
cmFuc2FjdGlvbi0+ZXhlY3V0ZVNRTChtX3NxbFN0YXRlbWVudCwgc3FsVmFsdWVzLCBXVEZNb3Zl
KGNhbGxiYWNrKSwgV1RGTW92ZShlcnJvckNhbGxiYWNrKSwgSUdOT1JFX0VYQ0VQVElPTik7CiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIHByaXZhdGU6CiAgICAgVHJhbnNhY3Rpb25DYWxs
YmFjayhjb25zdCBTdHJpbmcmIHNxbFN0YXRlbWVudCwgUmVmPEV4ZWN1dGVTUUxDYWxsYmFjaz4m
JiByZXF1ZXN0Q2FsbGJhY2spCiAgICAgICAgIDogbV9zcWxTdGF0ZW1lbnQoc3FsU3RhdGVtZW50
KQotICAgICAgICAsIG1fcmVxdWVzdENhbGxiYWNrKFdURjo6bW92ZShyZXF1ZXN0Q2FsbGJhY2sp
KSB7IH0KKyAgICAgICAgLCBtX3JlcXVlc3RDYWxsYmFjayhXVEZNb3ZlKHJlcXVlc3RDYWxsYmFj
aykpIHsgfQogICAgIFN0cmluZyBtX3NxbFN0YXRlbWVudDsKICAgICBSZWY8RXhlY3V0ZVNRTENh
bGxiYWNrPiBtX3JlcXVlc3RDYWxsYmFjazsKIH07CkBAIC0xNTcsNyArMTU3LDcgQEAgY2xhc3Mg
VHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrIDogcHVibGljIFNRTFRyYW5zYWN0aW9uRXJyb3JDYWxs
YmFjayB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2s+
IGNyZWF0ZShSZWY8RXhlY3V0ZVNRTENhbGxiYWNrPiYmIHJlcXVlc3RDYWxsYmFjaykKICAgICB7
Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjayhX
VEY6Om1vdmUocmVxdWVzdENhbGxiYWNrKSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2soV1RGTW92ZShyZXF1ZXN0Q2FsbGJhY2spKSk7CiAg
ICAgfQogCiAgICAgdmlydHVhbCB+VHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrKCkgeyB9CkBAIC0x
NjksNyArMTY5LDcgQEAgcHVibGljOgogICAgIH0KIHByaXZhdGU6CiAgICAgVHJhbnNhY3Rpb25F
cnJvckNhbGxiYWNrKFJlZjxFeGVjdXRlU1FMQ2FsbGJhY2s+JiYgcmVxdWVzdENhbGxiYWNrKQot
ICAgICAgICA6IG1fcmVxdWVzdENhbGxiYWNrKFdURjo6bW92ZShyZXF1ZXN0Q2FsbGJhY2spKSB7
IH0KKyAgICAgICAgOiBtX3JlcXVlc3RDYWxsYmFjayhXVEZNb3ZlKHJlcXVlc3RDYWxsYmFjaykp
IHsgfQogICAgIFJlZjxFeGVjdXRlU1FMQ2FsbGJhY2s+IG1fcmVxdWVzdENhbGxiYWNrOwogfTsK
IApAQCAtMTkzLDExICsxOTMsMTEgQEAgcHJpdmF0ZToKIHZvaWQgSW5zcGVjdG9yRGF0YWJhc2VB
Z2VudDo6ZGlkT3BlbkRhdGFiYXNlKFJlZlB0cjxEYXRhYmFzZT4mJiBkYXRhYmFzZSwgY29uc3Qg
U3RyaW5nJiBkb21haW4sIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2ZXJzaW9u
KQogewogICAgIGlmIChJbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlKiByZXNvdXJjZSA9IGZpbmRC
eUZpbGVOYW1lKGRhdGFiYXNlLT5maWxlTmFtZSgpKSkgewotICAgICAgICByZXNvdXJjZS0+c2V0
RGF0YWJhc2UoV1RGOjptb3ZlKGRhdGFiYXNlKSk7CisgICAgICAgIHJlc291cmNlLT5zZXREYXRh
YmFzZShXVEZNb3ZlKGRhdGFiYXNlKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBS
ZWZQdHI8SW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZT4gcmVzb3VyY2UgPSBJbnNwZWN0b3JEYXRh
YmFzZVJlc291cmNlOjpjcmVhdGUoV1RGOjptb3ZlKGRhdGFiYXNlKSwgZG9tYWluLCBuYW1lLCB2
ZXJzaW9uKTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZT4gcmVzb3VyY2Ug
PSBJbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlOjpjcmVhdGUoV1RGTW92ZShkYXRhYmFzZSksIGRv
bWFpbiwgbmFtZSwgdmVyc2lvbik7CiAgICAgbV9yZXNvdXJjZXMuc2V0KHJlc291cmNlLT5pZCgp
LCByZXNvdXJjZSk7CiAgICAgLy8gUmVzb3VyY2VzIGFyZSBvbmx5IGJvdW5kIHdoaWxlIHZpc2li
bGUuCiAgICAgaWYgKG1fZW5hYmxlZCkKQEAgLTI4MSw3ICsyODEsNyBAQCB2b2lkIEluc3BlY3Rv
ckRhdGFiYXNlQWdlbnQ6OmV4ZWN1dGVTUUwoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGRh
dGFiYXNlSWQsCiAgICAgUmVmPFNRTFRyYW5zYWN0aW9uQ2FsbGJhY2s+IGNhbGxiYWNrKFRyYW5z
YWN0aW9uQ2FsbGJhY2s6OmNyZWF0ZShxdWVyeSwgcmVxdWVzdENhbGxiYWNrLmdldCgpKSk7CiAg
ICAgUmVmPFNRTFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjayhUcmFuc2Fj
dGlvbkVycm9yQ2FsbGJhY2s6OmNyZWF0ZShyZXF1ZXN0Q2FsbGJhY2suZ2V0KCkpKTsKICAgICBS
ZWY8Vm9pZENhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2soVHJhbnNhY3Rpb25TdWNjZXNzQ2FsbGJh
Y2s6OmNyZWF0ZSgpKTsKLSAgICBkYXRhYmFzZS0+dHJhbnNhY3Rpb24oV1RGOjptb3ZlKGNhbGxi
YWNrKSwgV1RGOjptb3ZlKGVycm9yQ2FsbGJhY2spLCBXVEY6Om1vdmUoc3VjY2Vzc0NhbGxiYWNr
KSk7CisgICAgZGF0YWJhc2UtPnRyYW5zYWN0aW9uKFdURk1vdmUoY2FsbGJhY2spLCBXVEZNb3Zl
KGVycm9yQ2FsbGJhY2spLCBXVEZNb3ZlKHN1Y2Nlc3NDYWxsYmFjaykpOwogfQogCiBTdHJpbmcg
SW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6ZGF0YWJhc2VJZChEYXRhYmFzZSogZGF0YWJhc2UpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VSZXNv
dXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VSZXNv
dXJjZS5jcHAKaW5kZXggNmMzYzllMjNkNjZmMGRkMjIzYzQzYTc5MWJkYzcxYTViNWNjYjQ3YS4u
Yjg4YzE2YjdhNGQ5MDFkOWFlYmU5Y2UwZDQ1YTdiNDNlMzdhZWVlZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlUmVzb3VyY2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlLmNwcApA
QCAtNDIsNyArNDIsNyBAQCBzdGF0aWMgaW50IG5leHRVbnVzZWRJZCA9IDE7CiAKIFJlZjxJbnNw
ZWN0b3JEYXRhYmFzZVJlc291cmNlPiBJbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlOjpjcmVhdGUo
UmVmUHRyPERhdGFiYXNlPiYmIGRhdGFiYXNlLCBjb25zdCBTdHJpbmcmIGRvbWFpbiwgY29uc3Qg
U3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZlcnNpb24pCiB7Ci0gICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZShXVEY6Om1vdmUoZGF0YWJhc2UpLCBk
b21haW4sIG5hbWUsIHZlcnNpb24pKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbnNwZWN0
b3JEYXRhYmFzZVJlc291cmNlKFdURk1vdmUoZGF0YWJhc2UpLCBkb21haW4sIG5hbWUsIHZlcnNp
b24pKTsKIH0KIAogSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZTo6SW5zcGVjdG9yRGF0YWJhc2VS
ZXNvdXJjZShSZWZQdHI8RGF0YWJhc2U+JiYgZGF0YWJhc2UsIGNvbnN0IFN0cmluZyYgZG9tYWlu
LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmVyc2lvbikKQEAgLTYyLDcgKzYy
LDcgQEAgdm9pZCBJbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlOjpiaW5kKEluc3BlY3Rvcjo6RGF0
YWJhc2VGcm9udGVuZERpc3BhdGNoZXIqIGRhdGEKICAgICAgICAgLnNldE5hbWUobV9uYW1lKQog
ICAgICAgICAuc2V0VmVyc2lvbihtX3ZlcnNpb24pCiAgICAgICAgIC5yZWxlYXNlKCk7Ci0gICAg
ZGF0YWJhc2VGcm9udGVuZERpc3BhdGNoZXItPmFkZERhdGFiYXNlKFdURjo6bW92ZShqc29uT2Jq
ZWN0KSk7CisgICAgZGF0YWJhc2VGcm9udGVuZERpc3BhdGNoZXItPmFkZERhdGFiYXNlKFdURk1v
dmUoanNvbk9iamVjdCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5oIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlUmVzb3VyY2UuaAppbmRl
eCA2YWM5MWMzNjhkNWRhZGQwNTZkYmE4MzExZmMyMTY0NTYyZDUxMWRlLi5lNDIxMTk4MWRjZjM0
NTNlODliZGU3ZDE1NGMyODk2OGU4YzllODQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlLmgKQEAgLTQ2LDcgKzQ2LDcgQEAg
cHVibGljOgogCiAgICAgdm9pZCBiaW5kKEluc3BlY3Rvcjo6RGF0YWJhc2VGcm9udGVuZERpc3Bh
dGNoZXIqKTsKICAgICBEYXRhYmFzZSogZGF0YWJhc2UoKSB7IHJldHVybiBtX2RhdGFiYXNlLmdl
dCgpOyB9Ci0gICAgdm9pZCBzZXREYXRhYmFzZShSZWZQdHI8RGF0YWJhc2U+JiYgZGF0YWJhc2Up
IHsgbV9kYXRhYmFzZSA9IFdURjo6bW92ZShkYXRhYmFzZSk7IH0KKyAgICB2b2lkIHNldERhdGFi
YXNlKFJlZlB0cjxEYXRhYmFzZT4mJiBkYXRhYmFzZSkgeyBtX2RhdGFiYXNlID0gV1RGTW92ZShk
YXRhYmFzZSk7IH0KICAgICBTdHJpbmcgaWQoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9CiAKIHBy
aXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJv
bnRlbmRDbGllbnRMb2NhbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RnJvbnRlbmRDbGllbnRMb2NhbC5jcHAKaW5kZXggODIyMWZkN2I4MThiOTQ3NTM3ODU1NmFmNzRk
MmZlZWYzNjE4MjIwMC4uMTE5ZTgzYzc0ZWRlZTIxNGE2ZDc2OWU3OWRkMGVmMjZlNjU3NmQ5ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xp
ZW50TG9jYWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9u
dGVuZENsaWVudExvY2FsLmNwcApAQCAtMTMxLDcgKzEzMSw3IEBAIHZvaWQgSW5zcGVjdG9yRnJv
bnRlbmRDbGllbnRMb2NhbDo6U2V0dGluZ3M6OnNldFByb3BlcnR5KGNvbnN0IFN0cmluZyYsIGNv
bnN0IFN0CiBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpJbnNwZWN0b3JGcm9udGVuZENs
aWVudExvY2FsKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RlZFBhZ2VDb250cm9sbGVyLCBQ
YWdlKiBmcm9udGVuZFBhZ2UsIHN0ZDo6dW5pcXVlX3B0cjxTZXR0aW5ncz4gc2V0dGluZ3MpCiAg
ICAgOiBtX2luc3BlY3RlZFBhZ2VDb250cm9sbGVyKGluc3BlY3RlZFBhZ2VDb250cm9sbGVyKQog
ICAgICwgbV9mcm9udGVuZFBhZ2UoZnJvbnRlbmRQYWdlKQotICAgICwgbV9zZXR0aW5ncyhXVEY6
Om1vdmUoc2V0dGluZ3MpKQorICAgICwgbV9zZXR0aW5ncyhXVEZNb3ZlKHNldHRpbmdzKSkKICAg
ICAsIG1fZG9ja1NpZGUoRG9ja1NpZGU6OlVuZG9ja2VkKQogICAgICwgbV9kaXNwYXRjaFRhc2so
SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoVGFzazo6Y3JlYXRlKGluc3BlY3RlZFBhZ2VDb250cm9s
bGVyKSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JI
aXN0b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JIaXN0b3J5LmNw
cAppbmRleCA4ZGNmNGVlN2Y4ODIyZGNiZTNjMWFhOGI2NWFkZmM3ZmRkZDQwZjVlLi44OTQ0ZjJk
OGNiNWQ5MmIxMzBkZjYwMjY2OGEyNDcyMGM5Nzc0YjFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySGlzdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3Rvckhpc3RvcnkuY3BwCkBAIC05MCwxMCArOTAsMTAgQEAgYm9vbCBJ
bnNwZWN0b3JIaXN0b3J5OjpwZXJmb3JtKHN0ZDo6dW5pcXVlX3B0cjxBY3Rpb24+IGFjdGlvbiwg
RXhjZXB0aW9uQ29kZSYgZWMKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKCFhY3Rp
b24tPm1lcmdlSWQoKS5pc0VtcHR5KCkgJiYgbV9hZnRlckxhc3RBY3Rpb25JbmRleCA+IDAgJiYg
YWN0aW9uLT5tZXJnZUlkKCkgPT0gbV9oaXN0b3J5W21fYWZ0ZXJMYXN0QWN0aW9uSW5kZXggLSAx
XS0+bWVyZ2VJZCgpKQotICAgICAgICBtX2hpc3RvcnlbbV9hZnRlckxhc3RBY3Rpb25JbmRleCAt
IDFdLT5tZXJnZShXVEY6Om1vdmUoYWN0aW9uKSk7CisgICAgICAgIG1faGlzdG9yeVttX2FmdGVy
TGFzdEFjdGlvbkluZGV4IC0gMV0tPm1lcmdlKFdURk1vdmUoYWN0aW9uKSk7CiAgICAgZWxzZSB7
CiAgICAgICAgIG1faGlzdG9yeS5yZXNpemUobV9hZnRlckxhc3RBY3Rpb25JbmRleCk7Ci0gICAg
ICAgIG1faGlzdG9yeS5hcHBlbmQoV1RGOjptb3ZlKGFjdGlvbikpOworICAgICAgICBtX2hpc3Rv
cnkuYXBwZW5kKFdURk1vdmUoYWN0aW9uKSk7CiAgICAgICAgICsrbV9hZnRlckxhc3RBY3Rpb25J
bmRleDsKICAgICB9CiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcAppbmRleCBlNjc2MzNhMjg5ZGQy
MzgwMzE2NDgxOWQ3MjkwODUyZDczYzBlNmMzLi5mYzNmZjU3ZDg2YjI5OTZiMmE2ZTM2YTQ2ODgy
MWUwNWU5MTAzYTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9ySW5kZXhlZERCQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKQEAgLTk3LDcgKzk3LDcgQEAgY2xhc3MgR2V0RGF0YWJh
c2VOYW1lc0NhbGxiYWNrIDogcHVibGljIEV2ZW50TGlzdGVuZXIgewogcHVibGljOgogICAgIHN0
YXRpYyBSZWY8R2V0RGF0YWJhc2VOYW1lc0NhbGxiYWNrPiBjcmVhdGUoUmVmPFJlcXVlc3REYXRh
YmFzZU5hbWVzQ2FsbGJhY2s+JiYgcmVxdWVzdENhbGxiYWNrLCBjb25zdCBTdHJpbmcmIHNlY3Vy
aXR5T3JpZ2luKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgR2V0RGF0YWJh
c2VOYW1lc0NhbGxiYWNrKFdURjo6bW92ZShyZXF1ZXN0Q2FsbGJhY2spLCBzZWN1cml0eU9yaWdp
bikpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBHZXREYXRhYmFzZU5hbWVzQ2FsbGJh
Y2soV1RGTW92ZShyZXF1ZXN0Q2FsbGJhY2spLCBzZWN1cml0eU9yaWdpbikpOwogICAgIH0KIAog
ICAgIHZpcnR1YWwgfkdldERhdGFiYXNlTmFtZXNDYWxsYmFjaygpIHsgfQpAQCAtMTMyLDEzICsx
MzIsMTMgQEAgcHVibGljOgogICAgICAgICBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8
U3RyaW5nPj4gZGF0YWJhc2VOYW1lcyA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmlu
Zz46OmNyZWF0ZSgpOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGRhdGFiYXNlTmFt
ZXNMaXN0LT5sZW5ndGgoKTsgKytpKQogICAgICAgICAgICAgZGF0YWJhc2VOYW1lcy0+YWRkSXRl
bShkYXRhYmFzZU5hbWVzTGlzdC0+aXRlbShpKSk7Ci0gICAgICAgIG1fcmVxdWVzdENhbGxiYWNr
LT5zZW5kU3VjY2VzcyhXVEY6Om1vdmUoZGF0YWJhc2VOYW1lcykpOworICAgICAgICBtX3JlcXVl
c3RDYWxsYmFjay0+c2VuZFN1Y2Nlc3MoV1RGTW92ZShkYXRhYmFzZU5hbWVzKSk7CiAgICAgfQog
CiBwcml2YXRlOgogICAgIEdldERhdGFiYXNlTmFtZXNDYWxsYmFjayhSZWY8UmVxdWVzdERhdGFi
YXNlTmFtZXNDYWxsYmFjaz4mJiByZXF1ZXN0Q2FsbGJhY2ssIGNvbnN0IFN0cmluZyYgc2VjdXJp
dHlPcmlnaW4pCiAgICAgICAgIDogRXZlbnRMaXN0ZW5lcihFdmVudExpc3RlbmVyOjpDUFBFdmVu
dExpc3RlbmVyVHlwZSkKLSAgICAgICAgLCBtX3JlcXVlc3RDYWxsYmFjayhXVEY6Om1vdmUocmVx
dWVzdENhbGxiYWNrKSkKKyAgICAgICAgLCBtX3JlcXVlc3RDYWxsYmFjayhXVEZNb3ZlKHJlcXVl
c3RDYWxsYmFjaykpCiAgICAgICAgICwgbV9zZWN1cml0eU9yaWdpbihzZWN1cml0eU9yaWdpbikg
eyB9CiAgICAgUmVmPFJlcXVlc3REYXRhYmFzZU5hbWVzQ2FsbGJhY2s+IG1fcmVxdWVzdENhbGxi
YWNrOwogICAgIFN0cmluZyBtX3NlY3VyaXR5T3JpZ2luOwpAQCAtMTk1LDcgKzE5NSw3IEBAIHB1
YmxpYzoKICAgICAgICAgfQogCiAgICAgICAgIFJlZlB0cjxMZWdhY3lEYXRhYmFzZT4gaWRiRGF0
YWJhc2UgPSBhZG9wdFJlZihzdGF0aWNfY2FzdDxMZWdhY3lEYXRhYmFzZSo+KHJlcXVlc3RSZXN1
bHQtPmlkYkRhdGFiYXNlKCkubGVha1JlZigpKSk7Ci0gICAgICAgIG1fZXhlY3V0YWJsZVdpdGhE
YXRhYmFzZS0+ZXhlY3V0ZShXVEY6Om1vdmUoaWRiRGF0YWJhc2UpKTsKKyAgICAgICAgbV9leGVj
dXRhYmxlV2l0aERhdGFiYXNlLT5leGVjdXRlKFdURk1vdmUoaWRiRGF0YWJhc2UpKTsKICAgICAg
ICAgSURCUGVuZGluZ1RyYW5zYWN0aW9uTW9uaXRvcjo6ZGVhY3RpdmF0ZU5ld1RyYW5zYWN0aW9u
cygpOwogICAgICAgICBpZGJEYXRhYmFzZS0+Y2xvc2UoKTsKICAgICB9CkBAIC0yMTYsNyArMjE2
LDcgQEAgdm9pZCBFeGVjdXRhYmxlV2l0aERhdGFiYXNlOjpzdGFydChJREJGYWN0b3J5KiBpZGJG
YWN0b3J5LCBTZWN1cml0eU9yaWdpbiosIGNvbnMKICAgICAgICAgcmVxdWVzdENhbGxiYWNrKCku
c2VuZEZhaWx1cmUoIkNvdWxkIG5vdCBvcGVuIGRhdGFiYXNlLiIpOwogICAgICAgICByZXR1cm47
CiAgICAgfQotICAgIGlkYk9wZW5EQlJlcXVlc3QtPmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1l
cygpLnN1Y2Nlc3NFdmVudCwgV1RGOjptb3ZlKGNhbGxiYWNrKSwgZmFsc2UpOworICAgIGlkYk9w
ZW5EQlJlcXVlc3QtPmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLnN1Y2Nlc3NFdmVudCwg
V1RGTW92ZShjYWxsYmFjayksIGZhbHNlKTsKIH0KIAogc3RhdGljIFJlZlB0cjxJREJUcmFuc2Fj
dGlvbj4gdHJhbnNhY3Rpb25Gb3JEYXRhYmFzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0LCBJREJEYXRhYmFzZSogaWRiRGF0YWJhc2UsIGNvbnN0IFN0cmlu
ZyYgb2JqZWN0U3RvcmVOYW1lLCBjb25zdCBTdHJpbmcmIG1vZGUgPSBJREJUcmFuc2FjdGlvbjo6
bW9kZVJlYWRPbmx5KCkpCkBAIC0yNjksNyArMjY5LDcgQEAgc3RhdGljIFJlZlB0cjxLZXlQYXRo
PiBrZXlQYXRoRnJvbUlEQktleVBhdGgoY29uc3QgSURCS2V5UGF0aCYgaWRiS2V5UGF0aCkKICAg
ICAgICAga2V5UGF0aCA9IEtleVBhdGg6OmNyZWF0ZSgpCiAgICAgICAgICAgICAuc2V0VHlwZShL
ZXlQYXRoOjpUeXBlOjpBcnJheSkKICAgICAgICAgICAgIC5yZWxlYXNlKCk7Ci0gICAgICAgIGtl
eVBhdGgtPnNldEFycmF5KFdURjo6bW92ZShhcnJheSkpOworICAgICAgICBrZXlQYXRoLT5zZXRB
cnJheShXVEZNb3ZlKGFycmF5KSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBkZWZhdWx0
OgpAQCAtMjgzLDcgKzI4Myw3IEBAIGNsYXNzIERhdGFiYXNlTG9hZGVyIDogcHVibGljIEV4ZWN1
dGFibGVXaXRoRGF0YWJhc2UgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8RGF0YWJhc2VMb2Fk
ZXI+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBSZWY8UmVxdWVzdERh
dGFiYXNlQ2FsbGJhY2s+JiYgcmVxdWVzdENhbGxiYWNrKQogICAgIHsKLSAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgRGF0YWJhc2VMb2FkZXIoY29udGV4dCwgV1RGOjptb3ZlKHJlcXVlc3RD
YWxsYmFjaykpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YWJhc2VMb2FkZXIo
Y29udGV4dCwgV1RGTW92ZShyZXF1ZXN0Q2FsbGJhY2spKSk7CiAgICAgfQogCiAgICAgdmlydHVh
bCB+RGF0YWJhc2VMb2FkZXIoKSB7IH0KQEAgLTMwNywzMyArMzA3LDMzIEBAIHB1YmxpYzoKICAg
ICAgICAgICAgICAgICAgICAgLnNldFVuaXF1ZShpbmRleE1ldGFkYXRhLnVuaXF1ZSkKICAgICAg
ICAgICAgICAgICAgICAgLnNldE11bHRpRW50cnkoaW5kZXhNZXRhZGF0YS5tdWx0aUVudHJ5KQog
ICAgICAgICAgICAgICAgICAgICAucmVsZWFzZSgpOwotICAgICAgICAgICAgICAgIGluZGV4ZXMt
PmFkZEl0ZW0oV1RGOjptb3ZlKG9iamVjdFN0b3JlSW5kZXgpKTsKKyAgICAgICAgICAgICAgICBp
bmRleGVzLT5hZGRJdGVtKFdURk1vdmUob2JqZWN0U3RvcmVJbmRleCkpOwogICAgICAgICAgICAg
fQogCiAgICAgICAgICAgICBSZWY8T2JqZWN0U3RvcmU+IG9iamVjdFN0b3JlID0gT2JqZWN0U3Rv
cmU6OmNyZWF0ZSgpCiAgICAgICAgICAgICAgICAgLnNldE5hbWUob2JqZWN0U3RvcmVNZXRhZGF0
YS5uYW1lKQogICAgICAgICAgICAgICAgIC5zZXRLZXlQYXRoKGtleVBhdGhGcm9tSURCS2V5UGF0
aChvYmplY3RTdG9yZU1ldGFkYXRhLmtleVBhdGgpKQogICAgICAgICAgICAgICAgIC5zZXRBdXRv
SW5jcmVtZW50KG9iamVjdFN0b3JlTWV0YWRhdGEuYXV0b0luY3JlbWVudCkKLSAgICAgICAgICAg
ICAgICAuc2V0SW5kZXhlcyhXVEY6Om1vdmUoaW5kZXhlcykpCisgICAgICAgICAgICAgICAgLnNl
dEluZGV4ZXMoV1RGTW92ZShpbmRleGVzKSkKICAgICAgICAgICAgICAgICAucmVsZWFzZSgpOwog
Ci0gICAgICAgICAgICBvYmplY3RTdG9yZXMtPmFkZEl0ZW0oV1RGOjptb3ZlKG9iamVjdFN0b3Jl
KSk7CisgICAgICAgICAgICBvYmplY3RTdG9yZXMtPmFkZEl0ZW0oV1RGTW92ZShvYmplY3RTdG9y
ZSkpOwogICAgICAgICB9CiAKICAgICAgICAgUmVmPERhdGFiYXNlV2l0aE9iamVjdFN0b3Jlcz4g
cmVzdWx0ID0gRGF0YWJhc2VXaXRoT2JqZWN0U3RvcmVzOjpjcmVhdGUoKQogICAgICAgICAgICAg
LnNldE5hbWUoZGF0YWJhc2VNZXRhZGF0YS5uYW1lKQogICAgICAgICAgICAgLnNldFZlcnNpb24o
ZGF0YWJhc2VNZXRhZGF0YS52ZXJzaW9uKQotICAgICAgICAgICAgLnNldE9iamVjdFN0b3JlcyhX
VEY6Om1vdmUob2JqZWN0U3RvcmVzKSkKKyAgICAgICAgICAgIC5zZXRPYmplY3RTdG9yZXMoV1RG
TW92ZShvYmplY3RTdG9yZXMpKQogICAgICAgICAgICAgLnJlbGVhc2UoKTsKIAotICAgICAgICBt
X3JlcXVlc3RDYWxsYmFjay0+c2VuZFN1Y2Nlc3MoV1RGOjptb3ZlKHJlc3VsdCkpOworICAgICAg
ICBtX3JlcXVlc3RDYWxsYmFjay0+c2VuZFN1Y2Nlc3MoV1RGTW92ZShyZXN1bHQpKTsKICAgICB9
CiAKICAgICB2aXJ0dWFsIFJlcXVlc3RDYWxsYmFjayYgcmVxdWVzdENhbGxiYWNrKCkgb3ZlcnJp
ZGUgeyByZXR1cm4gbV9yZXF1ZXN0Q2FsbGJhY2suZ2V0KCk7IH0KIHByaXZhdGU6CiAgICAgRGF0
YWJhc2VMb2FkZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUmVmPFJlcXVlc3RE
YXRhYmFzZUNhbGxiYWNrPiYmIHJlcXVlc3RDYWxsYmFjaykKICAgICAgICAgOiBFeGVjdXRhYmxl
V2l0aERhdGFiYXNlKGNvbnRleHQpCi0gICAgICAgICwgbV9yZXF1ZXN0Q2FsbGJhY2soV1RGOjpt
b3ZlKHJlcXVlc3RDYWxsYmFjaykpIHsgfQorICAgICAgICAsIG1fcmVxdWVzdENhbGxiYWNrKFdU
Rk1vdmUocmVxdWVzdENhbGxiYWNrKSkgeyB9CiAgICAgUmVmPFJlcXVlc3REYXRhYmFzZUNhbGxi
YWNrPiBtX3JlcXVlc3RDYWxsYmFjazsKIH07CiAKQEAgLTQxOSw3ICs0MTksNyBAQCBjbGFzcyBP
cGVuQ3Vyc29yQ2FsbGJhY2sgOiBwdWJsaWMgRXZlbnRMaXN0ZW5lciB7CiBwdWJsaWM6CiAgICAg
c3RhdGljIFJlZjxPcGVuQ3Vyc29yQ2FsbGJhY2s+IGNyZWF0ZShJbmplY3RlZFNjcmlwdCBpbmpl
Y3RlZFNjcmlwdCwgUmVmPFJlcXVlc3REYXRhQ2FsbGJhY2s+JiYgcmVxdWVzdENhbGxiYWNrLCBp
bnQgc2tpcENvdW50LCB1bnNpZ25lZCBwYWdlU2l6ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IE9wZW5DdXJzb3JDYWxsYmFjayhpbmplY3RlZFNjcmlwdCwgV1RGOjptb3Zl
KHJlcXVlc3RDYWxsYmFjayksIHNraXBDb3VudCwgcGFnZVNpemUpKTsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgT3BlbkN1cnNvckNhbGxiYWNrKGluamVjdGVkU2NyaXB0LCBXVEZNb3Zl
KHJlcXVlc3RDYWxsYmFjayksIHNraXBDb3VudCwgcGFnZVNpemUpKTsKICAgICB9CiAKICAgICB2
aXJ0dWFsIH5PcGVuQ3Vyc29yQ2FsbGJhY2soKSB7IH0KQEAgLTQ4MSw3ICs0ODEsNyBAQCBwdWJs
aWM6CiAgICAgICAgICAgICAuc2V0UHJpbWFyeUtleShtX2luamVjdGVkU2NyaXB0LndyYXBPYmpl
Y3QoaWRiQ3Vyc29yLT5wcmltYXJ5S2V5KCksIFN0cmluZygpLCB0cnVlKSkKICAgICAgICAgICAg
IC5zZXRWYWx1ZShtX2luamVjdGVkU2NyaXB0LndyYXBPYmplY3QoaWRiQ3Vyc29yLT52YWx1ZSgp
LCBTdHJpbmcoKSwgdHJ1ZSkpCiAgICAgICAgICAgICAucmVsZWFzZSgpOwotICAgICAgICBtX3Jl
c3VsdC0+YWRkSXRlbShXVEY6Om1vdmUoZGF0YUVudHJ5KSk7CisgICAgICAgIG1fcmVzdWx0LT5h
ZGRJdGVtKFdURk1vdmUoZGF0YUVudHJ5KSk7CiAKICAgICB9CiAKQEAgLTQ4OSwxNCArNDg5LDE0
IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIGlmICghbV9yZXF1ZXN0Q2FsbGJhY2stPmlzQWN0
aXZlKCkpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIG1fcmVxdWVzdENhbGxiYWNrLT5z
ZW5kU3VjY2VzcyhXVEY6Om1vdmUobV9yZXN1bHQpLCBoYXNNb3JlKTsKKyAgICAgICAgbV9yZXF1
ZXN0Q2FsbGJhY2stPnNlbmRTdWNjZXNzKFdURk1vdmUobV9yZXN1bHQpLCBoYXNNb3JlKTsKICAg
ICB9CiAKIHByaXZhdGU6CiAgICAgT3BlbkN1cnNvckNhbGxiYWNrKEluamVjdGVkU2NyaXB0IGlu
amVjdGVkU2NyaXB0LCBSZWY8UmVxdWVzdERhdGFDYWxsYmFjaz4mJiByZXF1ZXN0Q2FsbGJhY2ss
IGludCBza2lwQ291bnQsIHVuc2lnbmVkIHBhZ2VTaXplKQogICAgICAgICA6IEV2ZW50TGlzdGVu
ZXIoRXZlbnRMaXN0ZW5lcjo6Q1BQRXZlbnRMaXN0ZW5lclR5cGUpCiAgICAgICAgICwgbV9pbmpl
Y3RlZFNjcmlwdChpbmplY3RlZFNjcmlwdCkKLSAgICAgICAgLCBtX3JlcXVlc3RDYWxsYmFjayhX
VEY6Om1vdmUocmVxdWVzdENhbGxiYWNrKSkKKyAgICAgICAgLCBtX3JlcXVlc3RDYWxsYmFjayhX
VEZNb3ZlKHJlcXVlc3RDYWxsYmFjaykpCiAgICAgICAgICwgbV9za2lwQ291bnQoc2tpcENvdW50
KQogICAgICAgICAsIG1fcGFnZVNpemUocGFnZVNpemUpCiAgICAgICAgICwgbV9yZXN1bHQoQXJy
YXk8RGF0YUVudHJ5Pjo6Y3JlYXRlKCkpCkBAIC01MTMsNyArNTEzLDcgQEAgY2xhc3MgRGF0YUxv
YWRlciA6IHB1YmxpYyBFeGVjdXRhYmxlV2l0aERhdGFiYXNlIHsKIHB1YmxpYzoKICAgICBzdGF0
aWMgUmVmPERhdGFMb2FkZXI+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
LCBSZWY8UmVxdWVzdERhdGFDYWxsYmFjaz4mJiByZXF1ZXN0Q2FsbGJhY2ssIGNvbnN0IEluamVj
dGVkU2NyaXB0JiBpbmplY3RlZFNjcmlwdCwgY29uc3QgU3RyaW5nJiBvYmplY3RTdG9yZU5hbWUs
IGNvbnN0IFN0cmluZyYgaW5kZXhOYW1lLCBSZWZQdHI8SURCS2V5UmFuZ2U+JiYgaWRiS2V5UmFu
Z2UsIGludCBza2lwQ291bnQsIHVuc2lnbmVkIHBhZ2VTaXplKQogICAgIHsKLSAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgRGF0YUxvYWRlcihjb250ZXh0LCBXVEY6Om1vdmUocmVxdWVzdENh
bGxiYWNrKSwgaW5qZWN0ZWRTY3JpcHQsIG9iamVjdFN0b3JlTmFtZSwgaW5kZXhOYW1lLCBXVEY6
Om1vdmUoaWRiS2V5UmFuZ2UpLCBza2lwQ291bnQsIHBhZ2VTaXplKSk7CisgICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IERhdGFMb2FkZXIoY29udGV4dCwgV1RGTW92ZShyZXF1ZXN0Q2FsbGJh
Y2spLCBpbmplY3RlZFNjcmlwdCwgb2JqZWN0U3RvcmVOYW1lLCBpbmRleE5hbWUsIFdURk1vdmUo
aWRiS2V5UmFuZ2UpLCBza2lwQ291bnQsIHBhZ2VTaXplKSk7CiAgICAgfQogCiAgICAgdmlydHVh
bCB+RGF0YUxvYWRlcigpIHsgfQpAQCAtNTQ3LDE3ICs1NDcsMTcgQEAgcHVibGljOgogICAgICAg
ICAgICAgaWRiUmVxdWVzdCA9IGlkYkluZGV4LT5vcGVuQ3Vyc29yKGNvbnRleHQoKSwgbV9pZGJL
ZXlSYW5nZS5nZXQoKSwgZWMpOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIGlkYlJlcXVl
c3QgPSBpZGJPYmplY3RTdG9yZS0+b3BlbkN1cnNvcihjb250ZXh0KCksIG1faWRiS2V5UmFuZ2Uu
Z2V0KCksIGVjKTsKLSAgICAgICAgaWRiUmVxdWVzdC0+YWRkRXZlbnRMaXN0ZW5lcihldmVudE5h
bWVzKCkuc3VjY2Vzc0V2ZW50LCBXVEY6Om1vdmUob3BlbkN1cnNvckNhbGxiYWNrKSwgZmFsc2Up
OworICAgICAgICBpZGJSZXF1ZXN0LT5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5zdWNj
ZXNzRXZlbnQsIFdURk1vdmUob3BlbkN1cnNvckNhbGxiYWNrKSwgZmFsc2UpOwogICAgIH0KIAog
ICAgIHZpcnR1YWwgUmVxdWVzdENhbGxiYWNrJiByZXF1ZXN0Q2FsbGJhY2soKSBvdmVycmlkZSB7
IHJldHVybiBtX3JlcXVlc3RDYWxsYmFjay5nZXQoKTsgfQogICAgIERhdGFMb2FkZXIoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgUmVmPFJlcXVlc3REYXRh
Q2FsbGJhY2s+JiYgcmVxdWVzdENhbGxiYWNrLCBjb25zdCBJbmplY3RlZFNjcmlwdCYgaW5qZWN0
ZWRTY3JpcHQsIGNvbnN0IFN0cmluZyYgb2JqZWN0U3RvcmVOYW1lLCBjb25zdCBTdHJpbmcmIGlu
ZGV4TmFtZSwgUmVmUHRyPElEQktleVJhbmdlPiBpZGJLZXlSYW5nZSwgaW50IHNraXBDb3VudCwg
dW5zaWduZWQgcGFnZVNpemUpCiAgICAgICAgIDogRXhlY3V0YWJsZVdpdGhEYXRhYmFzZShzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KQotICAgICAgICAsIG1fcmVxdWVzdENhbGxiYWNrKFdURjo6bW92
ZShyZXF1ZXN0Q2FsbGJhY2spKQorICAgICAgICAsIG1fcmVxdWVzdENhbGxiYWNrKFdURk1vdmUo
cmVxdWVzdENhbGxiYWNrKSkKICAgICAgICAgLCBtX2luamVjdGVkU2NyaXB0KGluamVjdGVkU2Ny
aXB0KQogICAgICAgICAsIG1fb2JqZWN0U3RvcmVOYW1lKG9iamVjdFN0b3JlTmFtZSkKICAgICAg
ICAgLCBtX2luZGV4TmFtZShpbmRleE5hbWUpCi0gICAgICAgICwgbV9pZGJLZXlSYW5nZShXVEY6
Om1vdmUoaWRiS2V5UmFuZ2UpKQorICAgICAgICAsIG1faWRiS2V5UmFuZ2UoV1RGTW92ZShpZGJL
ZXlSYW5nZSkpCiAgICAgICAgICwgbV9za2lwQ291bnQoc2tpcENvdW50KQogICAgICAgICAsIG1f
cGFnZVNpemUocGFnZVNpemUpIHsgfQogICAgIFJlZjxSZXF1ZXN0RGF0YUNhbGxiYWNrPiBtX3Jl
cXVlc3RDYWxsYmFjazsKQEAgLTY0Miw3ICs2NDIsNyBAQCB2b2lkIEluc3BlY3RvckluZGV4ZWRE
QkFnZW50OjpyZXF1ZXN0RGF0YWJhc2VOYW1lcyhFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNv
bgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWRiUmVxdWVzdC0+YWRkRXZlbnRMaXN0
ZW5lcihldmVudE5hbWVzKCkuc3VjY2Vzc0V2ZW50LCBHZXREYXRhYmFzZU5hbWVzQ2FsbGJhY2s6
OmNyZWF0ZShXVEY6Om1vdmUocmVxdWVzdENhbGxiYWNrKSwgZG9jdW1lbnQtPnNlY3VyaXR5T3Jp
Z2luKCktPnRvUmF3U3RyaW5nKCkpLCBmYWxzZSk7CisgICAgaWRiUmVxdWVzdC0+YWRkRXZlbnRM
aXN0ZW5lcihldmVudE5hbWVzKCkuc3VjY2Vzc0V2ZW50LCBHZXREYXRhYmFzZU5hbWVzQ2FsbGJh
Y2s6OmNyZWF0ZShXVEZNb3ZlKHJlcXVlc3RDYWxsYmFjayksIGRvY3VtZW50LT5zZWN1cml0eU9y
aWdpbigpLT50b1Jhd1N0cmluZygpKSwgZmFsc2UpOwogfQogCiB2b2lkIEluc3BlY3RvckluZGV4
ZWREQkFnZW50OjpyZXF1ZXN0RGF0YWJhc2UoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25z
dCBTdHJpbmcmIHNlY3VyaXR5T3JpZ2luLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlTmFtZSwgUmVm
PFJlcXVlc3REYXRhYmFzZUNhbGxiYWNrPiYmIHJlcXVlc3RDYWxsYmFjaykKQEAgLTY1Niw3ICs2
NTYsNyBAQCB2b2lkIEluc3BlY3RvckluZGV4ZWREQkFnZW50OjpyZXF1ZXN0RGF0YWJhc2UoRXJy
b3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdAogICAgIGlmICghaWRiRmFjdG9yeSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgUmVmPERhdGFiYXNlTG9hZGVyPiBkYXRhYmFzZUxvYWRlciA9
IERhdGFiYXNlTG9hZGVyOjpjcmVhdGUoZG9jdW1lbnQsIFdURjo6bW92ZShyZXF1ZXN0Q2FsbGJh
Y2spKTsKKyAgICBSZWY8RGF0YWJhc2VMb2FkZXI+IGRhdGFiYXNlTG9hZGVyID0gRGF0YWJhc2VM
b2FkZXI6OmNyZWF0ZShkb2N1bWVudCwgV1RGTW92ZShyZXF1ZXN0Q2FsbGJhY2spKTsKICAgICBk
YXRhYmFzZUxvYWRlci0+c3RhcnQoaWRiRmFjdG9yeSwgZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2lu
KCksIGRhdGFiYXNlTmFtZSk7CiB9CiAKQEAgLTY3OSw3ICs2NzksNyBAQCB2b2lkIEluc3BlY3Rv
ckluZGV4ZWREQkFnZW50OjpyZXF1ZXN0RGF0YShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNv
bnN0IFN0cmluZwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgUmVmPERhdGFMb2FkZXI+
IGRhdGFMb2FkZXIgPSBEYXRhTG9hZGVyOjpjcmVhdGUoZG9jdW1lbnQsIFdURjo6bW92ZShyZXF1
ZXN0Q2FsbGJhY2spLCBpbmplY3RlZFNjcmlwdCwgb2JqZWN0U3RvcmVOYW1lLCBpbmRleE5hbWUs
IFdURjo6bW92ZShpZGJLZXlSYW5nZSksIHNraXBDb3VudCwgcGFnZVNpemUpOworICAgIFJlZjxE
YXRhTG9hZGVyPiBkYXRhTG9hZGVyID0gRGF0YUxvYWRlcjo6Y3JlYXRlKGRvY3VtZW50LCBXVEZN
b3ZlKHJlcXVlc3RDYWxsYmFjayksIGluamVjdGVkU2NyaXB0LCBvYmplY3RTdG9yZU5hbWUsIGlu
ZGV4TmFtZSwgV1RGTW92ZShpZGJLZXlSYW5nZSksIHNraXBDb3VudCwgcGFnZVNpemUpOwogICAg
IGRhdGFMb2FkZXItPnN0YXJ0KGlkYkZhY3RvcnksIGRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigp
LCBkYXRhYmFzZU5hbWUpOwogfQogCkBAIC02ODgsNyArNjg4LDcgQEAgY2xhc3MgQ2xlYXJPYmpl
Y3RTdG9yZUxpc3RlbmVyIDogcHVibGljIEV2ZW50TGlzdGVuZXIgewogcHVibGljOgogICAgIHN0
YXRpYyBSZWY8Q2xlYXJPYmplY3RTdG9yZUxpc3RlbmVyPiBjcmVhdGUoUmVmPENsZWFyT2JqZWN0
U3RvcmVDYWxsYmFjaz4gcmVxdWVzdENhbGxiYWNrKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgQ2xlYXJPYmplY3RTdG9yZUxpc3RlbmVyKFdURjo6bW92ZShyZXF1ZXN0Q2Fs
bGJhY2spKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENsZWFyT2JqZWN0U3RvcmVM
aXN0ZW5lcihXVEZNb3ZlKHJlcXVlc3RDYWxsYmFjaykpKTsKICAgICB9CiAKICAgICB2aXJ0dWFs
IH5DbGVhck9iamVjdFN0b3JlTGlzdGVuZXIoKSB7IH0KQEAgLTcxMiw3ICs3MTIsNyBAQCBwdWJs
aWM6CiBwcml2YXRlOgogICAgIENsZWFyT2JqZWN0U3RvcmVMaXN0ZW5lcihSZWY8Q2xlYXJPYmpl
Y3RTdG9yZUNhbGxiYWNrPiYmIHJlcXVlc3RDYWxsYmFjaykKICAgICAgICAgOiBFdmVudExpc3Rl
bmVyKEV2ZW50TGlzdGVuZXI6OkNQUEV2ZW50TGlzdGVuZXJUeXBlKQotICAgICAgICAsIG1fcmVx
dWVzdENhbGxiYWNrKFdURjo6bW92ZShyZXF1ZXN0Q2FsbGJhY2spKQorICAgICAgICAsIG1fcmVx
dWVzdENhbGxiYWNrKFdURk1vdmUocmVxdWVzdENhbGxiYWNrKSkKICAgICB7CiAgICAgfQogCkBA
IC03MjQsMTMgKzcyNCwxMyBAQCBjbGFzcyBDbGVhck9iamVjdFN0b3JlIDogcHVibGljIEV4ZWN1
dGFibGVXaXRoRGF0YWJhc2UgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8Q2xlYXJPYmplY3RT
dG9yZT4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmlu
ZyYgb2JqZWN0U3RvcmVOYW1lLCBSZWY8Q2xlYXJPYmplY3RTdG9yZUNhbGxiYWNrPiYmIHJlcXVl
c3RDYWxsYmFjaykKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENsZWFyT2Jq
ZWN0U3RvcmUoY29udGV4dCwgb2JqZWN0U3RvcmVOYW1lLCBXVEY6Om1vdmUocmVxdWVzdENhbGxi
YWNrKSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDbGVhck9iamVjdFN0b3JlKGNv
bnRleHQsIG9iamVjdFN0b3JlTmFtZSwgV1RGTW92ZShyZXF1ZXN0Q2FsbGJhY2spKSk7CiAgICAg
fQogCiAgICAgQ2xlYXJPYmplY3RTdG9yZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
LCBjb25zdCBTdHJpbmcmIG9iamVjdFN0b3JlTmFtZSwgUmVmPENsZWFyT2JqZWN0U3RvcmVDYWxs
YmFjaz4mJiByZXF1ZXN0Q2FsbGJhY2spCiAgICAgICAgIDogRXhlY3V0YWJsZVdpdGhEYXRhYmFz
ZShjb250ZXh0KQogICAgICAgICAsIG1fb2JqZWN0U3RvcmVOYW1lKG9iamVjdFN0b3JlTmFtZSkK
LSAgICAgICAgLCBtX3JlcXVlc3RDYWxsYmFjayhXVEY6Om1vdmUocmVxdWVzdENhbGxiYWNrKSkK
KyAgICAgICAgLCBtX3JlcXVlc3RDYWxsYmFjayhXVEZNb3ZlKHJlcXVlc3RDYWxsYmFjaykpCiAg
ICAgewogICAgIH0KIApAQCAtNzc1LDcgKzc3NSw3IEBAIHZvaWQgSW5zcGVjdG9ySW5kZXhlZERC
QWdlbnQ6OmNsZWFyT2JqZWN0U3RvcmUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBT
CiAgICAgaWYgKCFpZGJGYWN0b3J5KQogICAgICAgICByZXR1cm47CiAKLSAgICBSZWY8Q2xlYXJP
YmplY3RTdG9yZT4gY2xlYXJPYmplY3RTdG9yZSA9IENsZWFyT2JqZWN0U3RvcmU6OmNyZWF0ZShk
b2N1bWVudCwgb2JqZWN0U3RvcmVOYW1lLCBXVEY6Om1vdmUocmVxdWVzdENhbGxiYWNrKSk7Cisg
ICAgUmVmPENsZWFyT2JqZWN0U3RvcmU+IGNsZWFyT2JqZWN0U3RvcmUgPSBDbGVhck9iamVjdFN0
b3JlOjpjcmVhdGUoZG9jdW1lbnQsIG9iamVjdFN0b3JlTmFtZSwgV1RGTW92ZShyZXF1ZXN0Q2Fs
bGJhY2spKTsKICAgICBjbGVhck9iamVjdFN0b3JlLT5zdGFydChpZGJGYWN0b3J5LCBkb2N1bWVu
dC0+c2VjdXJpdHlPcmlnaW4oKSwgZGF0YWJhc2VOYW1lKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAppbmRleCAx
YWQwN2ZlYmNhZmVkNTUzYzNmYzI1NzljZmU2OGU5ZGEyNGYwMTE1Li5lN2JlNjllNTA2ZjhjODcy
ZDc3ZDM1ZWM1ZmRlOTc1ZWUzNWU3YjAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcApAQCAtODQwLDcgKzg0MCw3IEBA
IHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjphZGRNZXNzYWdlVG9Db25zb2xlSW1wbChJ
bnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0CiAgICAgU3RyaW5nIG1lc3NhZ2VUZXh0ID0gbWVzc2Fn
ZS0+bWVzc2FnZSgpOwogCiAgICAgaWYgKFdlYkNvbnNvbGVBZ2VudCogY29uc29sZUFnZW50ID0g
aW5zdHJ1bWVudGluZ0FnZW50cy53ZWJDb25zb2xlQWdlbnQoKSkKLSAgICAgICAgY29uc29sZUFn
ZW50LT5hZGRNZXNzYWdlVG9Db25zb2xlKFdURjo6bW92ZShtZXNzYWdlKSk7CisgICAgICAgIGNv
bnNvbGVBZ2VudC0+YWRkTWVzc2FnZVRvQ29uc29sZShXVEZNb3ZlKG1lc3NhZ2UpKTsKICAgICAv
LyBGSVhNRTogVGhpcyBzaG91bGQganVzdCBwYXNzIHRoZSBtZXNzYWdlIG9uIHRvIHRoZSBkZWJ1
Z2dlciBhZ2VudC4gSmF2YVNjcmlwdENvcmUgSW5zcGVjdG9yRGVidWdnZXJBZ2VudCBzaG91bGQg
a25vdyBDb25zb2xlIE1lc3NhZ2VUeXBlcy4KICAgICBpZiAoSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dCogZGVidWdnZXJBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yRGVidWdnZXJB
Z2VudCgpKSB7CiAgICAgICAgIGlmIChpc0NvbnNvbGVBc3NlcnRNZXNzYWdlKHNvdXJjZSwgdHlw
ZSkpCkBAIC04OTcsNyArODk3LDcgQEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRp
ZE9wZW5EYXRhYmFzZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWUKICAgICBpZiAo
IWluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yRW52aXJvbm1lbnQoKS5kZXZlbG9wZXJFeHRy
YXNFbmFibGVkKCkpCiAgICAgICAgIHJldHVybjsKICAgICBpZiAoSW5zcGVjdG9yRGF0YWJhc2VB
Z2VudCogZGJBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yRGF0YWJhc2VBZ2Vu
dCgpKQotICAgICAgICBkYkFnZW50LT5kaWRPcGVuRGF0YWJhc2UoV1RGOjptb3ZlKGRhdGFiYXNl
KSwgZG9tYWluLCBuYW1lLCB2ZXJzaW9uKTsKKyAgICAgICAgZGJBZ2VudC0+ZGlkT3BlbkRhdGFi
YXNlKFdURk1vdmUoZGF0YWJhc2UpLCBkb21haW4sIG5hbWUsIHZlcnNpb24pOwogfQogCiB2b2lk
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRGlzcGF0Y2hET01TdG9yYWdlRXZlbnRJbXBs
KEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIGNvbnN0IFN0cmluZyYg
a2V5LCBjb25zdCBTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBTdHJpbmcmIG5ld1ZhbHVlLCBTdG9y
YWdlVHlwZSBzdG9yYWdlVHlwZSwgU2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5T3JpZ2luLCBQYWdl
KiBwYWdlKQpAQCAtOTU3LDM3ICs5NTcsMzcgQEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRpZFNlbmRXZWJTb2NrZXRGcmFtZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW4KIHZv
aWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzZXNzaW9uQ3JlYXRlZEltcGwoSW5zdHJ1bWVu
dGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgUmVmUHRyPFJlcGxheVNlc3Npb24+JiYg
c2Vzc2lvbikKIHsKICAgICBpZiAoSW5zcGVjdG9yUmVwbGF5QWdlbnQqIHJlcGxheUFnZW50ID0g
aW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JSZXBsYXlBZ2VudCgpKQotICAgICAgICByZXBs
YXlBZ2VudC0+c2Vzc2lvbkNyZWF0ZWQoV1RGOjptb3ZlKHNlc3Npb24pKTsKKyAgICAgICAgcmVw
bGF5QWdlbnQtPnNlc3Npb25DcmVhdGVkKFdURk1vdmUoc2Vzc2lvbikpOwogfQogCiB2b2lkIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2Vzc2lvbkxvYWRlZEltcGwoSW5zdHJ1bWVudGluZ0Fn
ZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgUmVmUHRyPFJlcGxheVNlc3Npb24+JiYgc2Vzc2lv
bikKIHsKICAgICBpZiAoSW5zcGVjdG9yUmVwbGF5QWdlbnQqIHJlcGxheUFnZW50ID0gaW5zdHJ1
bWVudGluZ0FnZW50cy5pbnNwZWN0b3JSZXBsYXlBZ2VudCgpKQotICAgICAgICByZXBsYXlBZ2Vu
dC0+c2Vzc2lvbkxvYWRlZChXVEY6Om1vdmUoc2Vzc2lvbikpOworICAgICAgICByZXBsYXlBZ2Vu
dC0+c2Vzc2lvbkxvYWRlZChXVEZNb3ZlKHNlc3Npb24pKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OnNlc3Npb25Nb2RpZmllZEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYg
aW5zdHJ1bWVudGluZ0FnZW50cywgUmVmUHRyPFJlcGxheVNlc3Npb24+JiYgc2Vzc2lvbikKIHsK
ICAgICBpZiAoSW5zcGVjdG9yUmVwbGF5QWdlbnQqIHJlcGxheUFnZW50ID0gaW5zdHJ1bWVudGlu
Z0FnZW50cy5pbnNwZWN0b3JSZXBsYXlBZ2VudCgpKQotICAgICAgICByZXBsYXlBZ2VudC0+c2Vz
c2lvbk1vZGlmaWVkKFdURjo6bW92ZShzZXNzaW9uKSk7CisgICAgICAgIHJlcGxheUFnZW50LT5z
ZXNzaW9uTW9kaWZpZWQoV1RGTW92ZShzZXNzaW9uKSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpzZWdtZW50Q3JlYXRlZEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5z
dHJ1bWVudGluZ0FnZW50cywgUmVmUHRyPFJlcGxheVNlc3Npb25TZWdtZW50PiYmIHNlZ21lbnQp
CiB7CiAgICAgaWYgKEluc3BlY3RvclJlcGxheUFnZW50KiByZXBsYXlBZ2VudCA9IGluc3RydW1l
bnRpbmdBZ2VudHMuaW5zcGVjdG9yUmVwbGF5QWdlbnQoKSkKLSAgICAgICAgcmVwbGF5QWdlbnQt
PnNlZ21lbnRDcmVhdGVkKFdURjo6bW92ZShzZWdtZW50KSk7CisgICAgICAgIHJlcGxheUFnZW50
LT5zZWdtZW50Q3JlYXRlZChXVEZNb3ZlKHNlZ21lbnQpKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OnNlZ21lbnRDb21wbGV0ZWRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMm
IGluc3RydW1lbnRpbmdBZ2VudHMsIFJlZlB0cjxSZXBsYXlTZXNzaW9uU2VnbWVudD4mJiBzZWdt
ZW50KQogewogICAgIGlmIChJbnNwZWN0b3JSZXBsYXlBZ2VudCogcmVwbGF5QWdlbnQgPSBpbnN0
cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvclJlcGxheUFnZW50KCkpCi0gICAgICAgIHJlcGxheUFn
ZW50LT5zZWdtZW50Q29tcGxldGVkKFdURjo6bW92ZShzZWdtZW50KSk7CisgICAgICAgIHJlcGxh
eUFnZW50LT5zZWdtZW50Q29tcGxldGVkKFdURk1vdmUoc2VnbWVudCkpOwogfQogCiB2b2lkIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2VnbWVudExvYWRlZEltcGwoSW5zdHJ1bWVudGluZ0Fn
ZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgUmVmUHRyPFJlcGxheVNlc3Npb25TZWdtZW50PiYm
IHNlZ21lbnQpCiB7CiAgICAgaWYgKEluc3BlY3RvclJlcGxheUFnZW50KiByZXBsYXlBZ2VudCA9
IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yUmVwbGF5QWdlbnQoKSkKLSAgICAgICAgcmVw
bGF5QWdlbnQtPnNlZ21lbnRMb2FkZWQoV1RGOjptb3ZlKHNlZ21lbnQpKTsKKyAgICAgICAgcmVw
bGF5QWdlbnQtPnNlZ21lbnRMb2FkZWQoV1RGTW92ZShzZWdtZW50KSk7CiB9CiAKIHZvaWQgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzZWdtZW50VW5sb2FkZWRJbXBsKEluc3RydW1lbnRpbmdB
Z2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKaW5kZXggMWI0ZjNjNjdhNjhhN2YzMjQ2
ZmVmOWM4M2YxZDE4NjAyZTM4MDhiMy4uZmJiNjVjZDUwYWZjMzgyZTc2OWRjMzExODY3ZTE3NjJi
MWEyMWMxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvcklu
c3RydW1lbnRhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb24uaApAQCAtMTA0Miw3ICsxMDQyLDcgQEAgaW5saW5lIHZvaWQgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRPcGVuRGF0YWJhc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogY28KIHsKICAgICBGQVNUX1JFVFVSTl9JRl9OT19GUk9OVEVORFModm9pZCgpKTsKICAgICBp
ZiAoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRp
bmdBZ2VudHNGb3JDb250ZXh0KGNvbnRleHQpKQotICAgICAgICBkaWRPcGVuRGF0YWJhc2VJbXBs
KCppbnN0cnVtZW50aW5nQWdlbnRzLCBXVEY6Om1vdmUoZGF0YWJhc2UpLCBkb21haW4sIG5hbWUs
IHZlcnNpb24pOworICAgICAgICBkaWRPcGVuRGF0YWJhc2VJbXBsKCppbnN0cnVtZW50aW5nQWdl
bnRzLCBXVEZNb3ZlKGRhdGFiYXNlKSwgZG9tYWluLCBuYW1lLCB2ZXJzaW9uKTsKIH0KIAogaW5s
aW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWREaXNwYXRjaERPTVN0b3JhZ2VF
dmVudChjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgU3Ry
aW5nJiBuZXdWYWx1ZSwgU3RvcmFnZVR5cGUgc3RvcmFnZVR5cGUsIFNlY3VyaXR5T3JpZ2luKiBz
ZWN1cml0eU9yaWdpbiwgUGFnZSogcGFnZSkKQEAgLTExMDcsMzcgKzExMDcsMzcgQEAgaW5saW5l
IHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRTZW5kV2ViU29ja2V0RnJhbWUoRG9j
dW1lbnQqIGRvY3VtZW50LAogaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpz
ZXNzaW9uQ3JlYXRlZChQYWdlJiBwYWdlLCBSZWZQdHI8UmVwbGF5U2Vzc2lvbj4mJiBzZXNzaW9u
KQogewogICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZST05URU5EUyh2b2lkKCkpOwotICAgIHNlc3Np
b25DcmVhdGVkSW1wbChpbnN0cnVtZW50aW5nQWdlbnRzRm9yUGFnZShwYWdlKSwgV1RGOjptb3Zl
KHNlc3Npb24pKTsKKyAgICBzZXNzaW9uQ3JlYXRlZEltcGwoaW5zdHJ1bWVudGluZ0FnZW50c0Zv
clBhZ2UocGFnZSksIFdURk1vdmUoc2Vzc2lvbikpOwogfQogCiBpbmxpbmUgdm9pZCBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OnNlc3Npb25Mb2FkZWQoUGFnZSYgcGFnZSwgUmVmUHRyPFJlcGxh
eVNlc3Npb24+JiYgc2Vzc2lvbikKIHsKICAgICBGQVNUX1JFVFVSTl9JRl9OT19GUk9OVEVORFMo
dm9pZCgpKTsKLSAgICBzZXNzaW9uTG9hZGVkSW1wbChpbnN0cnVtZW50aW5nQWdlbnRzRm9yUGFn
ZShwYWdlKSwgV1RGOjptb3ZlKHNlc3Npb24pKTsKKyAgICBzZXNzaW9uTG9hZGVkSW1wbChpbnN0
cnVtZW50aW5nQWdlbnRzRm9yUGFnZShwYWdlKSwgV1RGTW92ZShzZXNzaW9uKSk7CiB9CiAKIGlu
bGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c2Vzc2lvbk1vZGlmaWVkKFBhZ2Um
IHBhZ2UsIFJlZlB0cjxSZXBsYXlTZXNzaW9uPiYmIHNlc3Npb24pCiB7CiAgICAgRkFTVF9SRVRV
Uk5fSUZfTk9fRlJPTlRFTkRTKHZvaWQoKSk7Ci0gICAgc2Vzc2lvbk1vZGlmaWVkSW1wbChpbnN0
cnVtZW50aW5nQWdlbnRzRm9yUGFnZShwYWdlKSwgV1RGOjptb3ZlKHNlc3Npb24pKTsKKyAgICBz
ZXNzaW9uTW9kaWZpZWRJbXBsKGluc3RydW1lbnRpbmdBZ2VudHNGb3JQYWdlKHBhZ2UpLCBXVEZN
b3ZlKHNlc3Npb24pKTsKIH0KIAogaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpzZWdtZW50Q3JlYXRlZChQYWdlJiBwYWdlLCBSZWZQdHI8UmVwbGF5U2Vzc2lvblNlZ21lbnQ+
JiYgc2VnbWVudCkKIHsKICAgICBGQVNUX1JFVFVSTl9JRl9OT19GUk9OVEVORFModm9pZCgpKTsK
LSAgICBzZWdtZW50Q3JlYXRlZEltcGwoaW5zdHJ1bWVudGluZ0FnZW50c0ZvclBhZ2UocGFnZSks
IFdURjo6bW92ZShzZWdtZW50KSk7CisgICAgc2VnbWVudENyZWF0ZWRJbXBsKGluc3RydW1lbnRp
bmdBZ2VudHNGb3JQYWdlKHBhZ2UpLCBXVEZNb3ZlKHNlZ21lbnQpKTsKIH0KIAogaW5saW5lIHZv
aWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzZWdtZW50Q29tcGxldGVkKFBhZ2UmIHBhZ2Us
IFJlZlB0cjxSZXBsYXlTZXNzaW9uU2VnbWVudD4mJiBzZWdtZW50KQogewogICAgIEZBU1RfUkVU
VVJOX0lGX05PX0ZST05URU5EUyh2b2lkKCkpOwotICAgIHNlZ21lbnRDb21wbGV0ZWRJbXBsKGlu
c3RydW1lbnRpbmdBZ2VudHNGb3JQYWdlKHBhZ2UpLCBXVEY6Om1vdmUoc2VnbWVudCkpOworICAg
IHNlZ21lbnRDb21wbGV0ZWRJbXBsKGluc3RydW1lbnRpbmdBZ2VudHNGb3JQYWdlKHBhZ2UpLCBX
VEZNb3ZlKHNlZ21lbnQpKTsKIH0KIAogaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpzZWdtZW50TG9hZGVkKFBhZ2UmIHBhZ2UsIFJlZlB0cjxSZXBsYXlTZXNzaW9uU2VnbWVu
dD4mJiBzZWdtZW50KQogewogICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZST05URU5EUyh2b2lkKCkp
OwotICAgIHNlZ21lbnRMb2FkZWRJbXBsKGluc3RydW1lbnRpbmdBZ2VudHNGb3JQYWdlKHBhZ2Up
LCBXVEY6Om1vdmUoc2VnbWVudCkpOworICAgIHNlZ21lbnRMb2FkZWRJbXBsKGluc3RydW1lbnRp
bmdBZ2VudHNGb3JQYWdlKHBhZ2UpLCBXVEZNb3ZlKHNlZ21lbnQpKTsKIH0KIAogaW5saW5lIHZv
aWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzZWdtZW50VW5sb2FkZWQoUGFnZSYgcGFnZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVB
Z2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdl
bnQuY3BwCmluZGV4IDcwNDQzNTc5MzVmZDUxMDE4Y2U4ZmU3NWIyZDc4MDJhMWVkNDA5NzcuLjRj
ZmMwM2IzNGQ2ZmI1ZTljMjNhZjU3NzM4NzQzZjg3ZDg5ZWI5YWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmNwcApAQCAtMzEw
LDcgKzMxMCw3IEBAIHZvaWQgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OnJlYXNvbnNGb3JDb21w
b3NpdGluZ0xheWVyKEVycm9yU3RyaW5nJiBlcnJvclN0cmluCiAgICAgaWYgKHJlYXNvbnNCaXRt
YXNrICYgQ29tcG9zaXRpbmdSZWFzb25Sb290KQogICAgICAgICBjb21wb3NpdGluZ1JlYXNvbnMt
PnNldFJvb3QodHJ1ZSk7CiAgICAgCi0gICAgY29tcG9zaXRpbmdSZWFzb25zUmVzdWx0ID0gV1RG
Ojptb3ZlKGNvbXBvc2l0aW5nUmVhc29ucyk7CisgICAgY29tcG9zaXRpbmdSZWFzb25zUmVzdWx0
ID0gV1RGTW92ZShjb21wb3NpdGluZ1JlYXNvbnMpOwogfQogCiBTdHJpbmcgSW5zcGVjdG9yTGF5
ZXJUcmVlQWdlbnQ6OmJpbmQoY29uc3QgUmVuZGVyTGF5ZXIqIGxheWVyKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcAppbmRleCBmZmU5
MjMwYjQxYzFiYWE5YTY2ZTQ3MDk2OGQyODQ4ZGYxNzkyZGJlLi45NmQ0ODNjYzFiOWU2MGY1ZWI0
M2Y0MzJlYjc2NjBmZjZmYTM0NzRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcApAQCAtODEsNyArODEsNyBAQCBjbGFzcyBJbnNw
ZWN0b3JUaHJlYWRhYmxlTG9hZGVyQ2xpZW50IGZpbmFsIDogcHVibGljIFRocmVhZGFibGVMb2Fk
ZXJDbGllbnQgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEluc3BlY3RvclRocmVhZGFibGVM
b2FkZXJDbGllbnQpOwogcHVibGljOgogICAgIEluc3BlY3RvclRocmVhZGFibGVMb2FkZXJDbGll
bnQoUmVmUHRyPExvYWRSZXNvdXJjZUNhbGxiYWNrPiYmIGNhbGxiYWNrKQotICAgICAgICA6IG1f
Y2FsbGJhY2soV1RGOjptb3ZlKGNhbGxiYWNrKSkgeyB9CisgICAgICAgIDogbV9jYWxsYmFjayhX
VEZNb3ZlKGNhbGxiYWNrKSkgeyB9CiAKICAgICB2aXJ0dWFsIH5JbnNwZWN0b3JUaHJlYWRhYmxl
TG9hZGVyQ2xpZW50KCkgeyB9CiAKQEAgLTE0MSw3ICsxNDEsNyBAQCBwdWJsaWM6CiAKICAgICB2
b2lkIHNldExvYWRlcihSZWZQdHI8VGhyZWFkYWJsZUxvYWRlcj4mJiBsb2FkZXIpCiAgICAgewot
ICAgICAgICBtX2xvYWRlciA9IFdURjo6bW92ZShsb2FkZXIpOworICAgICAgICBtX2xvYWRlciA9
IFdURk1vdmUobG9hZGVyKTsKICAgICB9CiAKIHByaXZhdGU6CkBAIC0yMjcsMTQgKzIyNywxNCBA
QCBzdGF0aWMgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6OlJlc3BvbnNlPiBi
dWlsZE9iamVjdEZvclJlc291cmNlUmVzcAogICAgICAgICAuc2V0VXJsKHJlc3BvbnNlLnVybCgp
LnN0cmluZygpKQogICAgICAgICAuc2V0U3RhdHVzKHN0YXR1cykKICAgICAgICAgLnNldFN0YXR1
c1RleHQocmVzcG9uc2UuaHR0cFN0YXR1c1RleHQoKSkKLSAgICAgICAgLnNldEhlYWRlcnMoV1RG
Ojptb3ZlKGhlYWRlcnMpKQorICAgICAgICAuc2V0SGVhZGVycyhXVEZNb3ZlKGhlYWRlcnMpKQog
ICAgICAgICAuc2V0TWltZVR5cGUocmVzcG9uc2UubWltZVR5cGUoKSkKICAgICAgICAgLnJlbGVh
c2UoKTsKIAogICAgIHJlc3BvbnNlT2JqZWN0LT5zZXRGcm9tRGlza0NhY2hlKHJlc3BvbnNlLnNv
dXJjZSgpID09IFJlc291cmNlUmVzcG9uc2U6OlNvdXJjZTo6RGlza0NhY2hlIHx8IHJlc3BvbnNl
LnNvdXJjZSgpID09IFJlc291cmNlUmVzcG9uc2U6OlNvdXJjZTo6RGlza0NhY2hlQWZ0ZXJWYWxp
ZGF0aW9uKTsKICAgICByZXNwb25zZU9iamVjdC0+c2V0VGltaW5nKGJ1aWxkT2JqZWN0Rm9yVGlt
aW5nKHJlc3BvbnNlLnJlc291cmNlTG9hZFRpbWluZygpLCBsb2FkZXIpKTsKIAotICAgIHJldHVy
biBXVEY6Om1vdmUocmVzcG9uc2VPYmplY3QpOworICAgIHJldHVybiBXVEZNb3ZlKHJlc3BvbnNl
T2JqZWN0KTsKIH0KIAogc3RhdGljIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3JrOjpD
YWNoZWRSZXNvdXJjZT4gYnVpbGRPYmplY3RGb3JDYWNoZWRSZXNvdXJjZShDYWNoZWRSZXNvdXJj
ZSogY2FjaGVkUmVzb3VyY2UsIERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCkBAIC0yNDYsNyArMjQ2
LDcgQEAgc3RhdGljIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3JrOjpDYWNoZWRSZXNv
dXJjZT4gYnVpbGRPYmplY3RGb3JDYWNoZWRSZXMKICAgICAgICAgLnJlbGVhc2UoKTsKIAogICAg
IGF1dG8gcmVzb3VyY2VSZXNwb25zZSA9IGJ1aWxkT2JqZWN0Rm9yUmVzb3VyY2VSZXNwb25zZShj
YWNoZWRSZXNvdXJjZS0+cmVzcG9uc2UoKSwgbG9hZGVyKTsKLSAgICByZXNvdXJjZU9iamVjdC0+
c2V0UmVzcG9uc2UoV1RGOjptb3ZlKHJlc291cmNlUmVzcG9uc2UpKTsKKyAgICByZXNvdXJjZU9i
amVjdC0+c2V0UmVzcG9uc2UoV1RGTW92ZShyZXNvdXJjZVJlc3BvbnNlKSk7CiAKICAgICBTdHJp
bmcgc291cmNlTWFwcGluZ1VSTCA9IEluc3BlY3RvclBhZ2VBZ2VudDo6c291cmNlTWFwVVJMRm9y
UmVzb3VyY2UoY2FjaGVkUmVzb3VyY2UpOwogICAgIGlmICghc291cmNlTWFwcGluZ1VSTC5pc0Vt
cHR5KCkpCkBAIC01MTIsNyArNTEyLDcgQEAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5l
dHdvcms6OkluaXRpYXRvcj4gSW5zcGVjdG9yTmV0d29ya0FnZW50OjpidWlsZEluaXQKICAgICAg
ICAgICAgIC5zZXRUeXBlKEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6OkluaXRpYXRvcjo6
VHlwZTo6U2NyaXB0KQogICAgICAgICAgICAgLnJlbGVhc2UoKTsKICAgICAgICAgaW5pdGlhdG9y
T2JqZWN0LT5zZXRTdGFja1RyYWNlKHN0YWNrVHJhY2UtPmJ1aWxkSW5zcGVjdG9yQXJyYXkoKSk7
Ci0gICAgICAgIHJldHVybiBXVEY6Om1vdmUoaW5pdGlhdG9yT2JqZWN0KTsKKyAgICAgICAgcmV0
dXJuIFdURk1vdmUoaW5pdGlhdG9yT2JqZWN0KTsKICAgICB9CiAKICAgICBpZiAoZG9jdW1lbnQg
JiYgZG9jdW1lbnQtPnNjcmlwdGFibGVEb2N1bWVudFBhcnNlcigpKSB7CkBAIC01MjEsNyArNTIx
LDcgQEAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6OkluaXRpYXRvcj4gSW5z
cGVjdG9yTmV0d29ya0FnZW50OjpidWlsZEluaXQKICAgICAgICAgICAgIC5yZWxlYXNlKCk7CiAg
ICAgICAgIGluaXRpYXRvck9iamVjdC0+c2V0VXJsKGRvY3VtZW50LT51cmwoKS5zdHJpbmcoKSk7
CiAgICAgICAgIGluaXRpYXRvck9iamVjdC0+c2V0TGluZU51bWJlcihkb2N1bWVudC0+c2NyaXB0
YWJsZURvY3VtZW50UGFyc2VyKCktPnRleHRQb3NpdGlvbigpLm1fbGluZS5vbmVCYXNlZEludCgp
KTsKLSAgICAgICAgcmV0dXJuIFdURjo6bW92ZShpbml0aWF0b3JPYmplY3QpOworICAgICAgICBy
ZXR1cm4gV1RGTW92ZShpbml0aWF0b3JPYmplY3QpOwogICAgIH0KIAogICAgIGlmIChtX2lzUmVj
YWxjdWxhdGluZ1N0eWxlICYmIG1fc3R5bGVSZWNhbGN1bGF0aW9uSW5pdGlhdG9yKQpAQCAtNTQ0
LDcgKzU0NCw3IEBAIHZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50Ojp3aWxsU2VuZFdlYlNvY2tl
dEhhbmRzaGFrZVJlcXVlc3QodW5zaWduZWQgbG9uZyBpZGVuCiAgICAgYXV0byByZXF1ZXN0T2Jq
ZWN0ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6V2ViU29ja2V0UmVxdWVzdDo6Y3Jl
YXRlKCkKICAgICAgICAgLnNldEhlYWRlcnMoYnVpbGRPYmplY3RGb3JIZWFkZXJzKHJlcXVlc3Qu
aHR0cEhlYWRlckZpZWxkcygpKSkKICAgICAgICAgLnJlbGVhc2UoKTsKLSAgICBtX2Zyb250ZW5k
RGlzcGF0Y2hlci0+d2ViU29ja2V0V2lsbFNlbmRIYW5kc2hha2VSZXF1ZXN0KElkZW50aWZpZXJz
RmFjdG9yeTo6cmVxdWVzdElkKGlkZW50aWZpZXIpLCB0aW1lc3RhbXAoKSwgV1RGOjptb3ZlKHJl
cXVlc3RPYmplY3QpKTsKKyAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+d2ViU29ja2V0V2lsbFNl
bmRIYW5kc2hha2VSZXF1ZXN0KElkZW50aWZpZXJzRmFjdG9yeTo6cmVxdWVzdElkKGlkZW50aWZp
ZXIpLCB0aW1lc3RhbXAoKSwgV1RGTW92ZShyZXF1ZXN0T2JqZWN0KSk7CiB9CiAKIHZvaWQgSW5z
cGVjdG9yTmV0d29ya0FnZW50OjpkaWRSZWNlaXZlV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2Uo
dW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSkKQEAgLTU1NCw3ICs1NTQsNyBAQCB2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6ZGlkUmVj
ZWl2ZVdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgaQogICAgICAgICAu
c2V0U3RhdHVzVGV4dChyZXNwb25zZS5odHRwU3RhdHVzVGV4dCgpKQogICAgICAgICAuc2V0SGVh
ZGVycyhidWlsZE9iamVjdEZvckhlYWRlcnMocmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkcygpKSkK
ICAgICAgICAgLnJlbGVhc2UoKTsKLSAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+d2ViU29ja2V0
SGFuZHNoYWtlUmVzcG9uc2VSZWNlaXZlZChJZGVudGlmaWVyc0ZhY3Rvcnk6OnJlcXVlc3RJZChp
ZGVudGlmaWVyKSwgdGltZXN0YW1wKCksIFdURjo6bW92ZShyZXNwb25zZU9iamVjdCkpOworICAg
IG1fZnJvbnRlbmREaXNwYXRjaGVyLT53ZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZVJlY2VpdmVk
KElkZW50aWZpZXJzRmFjdG9yeTo6cmVxdWVzdElkKGlkZW50aWZpZXIpLCB0aW1lc3RhbXAoKSwg
V1RGTW92ZShyZXNwb25zZU9iamVjdCkpOwogfQogCiB2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2Vu
dDo6ZGlkQ2xvc2VXZWJTb2NrZXQodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKQpAQCAtNTY5LDcg
KzU2OSw3IEBAIHZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjpkaWRSZWNlaXZlV2ViU29ja2V0
RnJhbWUodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjCiAgICAgICAgIC5zZXRNYXNrKGZyYW1l
Lm1hc2tlZCkKICAgICAgICAgLnNldFBheWxvYWREYXRhKFN0cmluZyhmcmFtZS5wYXlsb2FkLCBm
cmFtZS5wYXlsb2FkTGVuZ3RoKSkKICAgICAgICAgLnJlbGVhc2UoKTsKLSAgICBtX2Zyb250ZW5k
RGlzcGF0Y2hlci0+d2ViU29ja2V0RnJhbWVSZWNlaXZlZChJZGVudGlmaWVyc0ZhY3Rvcnk6OnJl
cXVlc3RJZChpZGVudGlmaWVyKSwgdGltZXN0YW1wKCksIFdURjo6bW92ZShmcmFtZU9iamVjdCkp
OworICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT53ZWJTb2NrZXRGcmFtZVJlY2VpdmVkKElkZW50
aWZpZXJzRmFjdG9yeTo6cmVxdWVzdElkKGlkZW50aWZpZXIpLCB0aW1lc3RhbXAoKSwgV1RGTW92
ZShmcmFtZU9iamVjdCkpOwogfQogCiB2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6ZGlkU2Vu
ZFdlYlNvY2tldEZyYW1lKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgV2ViU29ja2V0
RnJhbWUmIGZyYW1lKQpAQCAtNTc5LDcgKzU3OSw3IEBAIHZvaWQgSW5zcGVjdG9yTmV0d29ya0Fn
ZW50OjpkaWRTZW5kV2ViU29ja2V0RnJhbWUodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25z
CiAgICAgICAgIC5zZXRNYXNrKGZyYW1lLm1hc2tlZCkKICAgICAgICAgLnNldFBheWxvYWREYXRh
KFN0cmluZyhmcmFtZS5wYXlsb2FkLCBmcmFtZS5wYXlsb2FkTGVuZ3RoKSkKICAgICAgICAgLnJl
bGVhc2UoKTsKLSAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+d2ViU29ja2V0RnJhbWVTZW50KElk
ZW50aWZpZXJzRmFjdG9yeTo6cmVxdWVzdElkKGlkZW50aWZpZXIpLCB0aW1lc3RhbXAoKSwgV1RG
Ojptb3ZlKGZyYW1lT2JqZWN0KSk7CisgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPndlYlNvY2tl
dEZyYW1lU2VudChJZGVudGlmaWVyc0ZhY3Rvcnk6OnJlcXVlc3RJZChpZGVudGlmaWVyKSwgdGlt
ZXN0YW1wKCksIFdURk1vdmUoZnJhbWVPYmplY3QpKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JOZXR3
b3JrQWdlbnQ6OmRpZFJlY2VpdmVXZWJTb2NrZXRGcmFtZUVycm9yKHVuc2lnbmVkIGxvbmcgaWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAKaW5kZXggODZiMDVmOTY0Y2M1OTRjMzc4YTBh
NzM5ZWRmZmM3YTJkMTkyMzA5My4uMTBjYzAyNDZlNTI3OTQ1MTAzYmQwMTE0ZjQxNTBhMGMzYjkx
MzMyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJs
YXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNw
cApAQCAtMjYyLDcgKzI2Miw3IEBAIHZvaWQgSW5zcGVjdG9yT3ZlcmxheTo6aGlkZUhpZ2hsaWdo
dCgpCiB2b2lkIEluc3BlY3Rvck92ZXJsYXk6OmhpZ2hsaWdodE5vZGVMaXN0KFJlZlB0cjxOb2Rl
TGlzdD4mJiBub2RlcywgY29uc3QgSGlnaGxpZ2h0Q29uZmlnJiBoaWdobGlnaHRDb25maWcpCiB7
CiAgICAgbV9ub2RlSGlnaGxpZ2h0Q29uZmlnID0gaGlnaGxpZ2h0Q29uZmlnOwotICAgIG1faGln
aGxpZ2h0Tm9kZUxpc3QgPSBXVEY6Om1vdmUobm9kZXMpOworICAgIG1faGlnaGxpZ2h0Tm9kZUxp
c3QgPSBXVEZNb3ZlKG5vZGVzKTsKICAgICBtX2hpZ2hsaWdodE5vZGUgPSBudWxscHRyOwogICAg
IHVwZGF0ZSgpOwogfQpAQCAtMjgxLDcgKzI4MSw3IEBAIHZvaWQgSW5zcGVjdG9yT3ZlcmxheTo6
aGlnaGxpZ2h0UXVhZChzdGQ6OnVuaXF1ZV9wdHI8RmxvYXRRdWFkPiBxdWFkLCBjb25zdCBIaWdo
CiAgICAgICAgICpxdWFkIC09IHRvSW50U2l6ZShtX3BhZ2UubWFpbkZyYW1lKCkudmlldygpLT5z
Y3JvbGxQb3NpdGlvbigpKTsKIAogICAgIG1fcXVhZEhpZ2hsaWdodENvbmZpZyA9IGhpZ2hsaWdo
dENvbmZpZzsKLSAgICBtX2hpZ2hsaWdodFF1YWQgPSBXVEY6Om1vdmUocXVhZCk7CisgICAgbV9o
aWdobGlnaHRRdWFkID0gV1RGTW92ZShxdWFkKTsKICAgICB1cGRhdGUoKTsKIH0KIApAQCAtMzgy
LDcgKzM4Miw3IEBAIHN0YXRpYyBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6T3ZlcmxheVR5cGVz
OjpGcmFnbWVudEhpZ2hsaWdodERhdGE+IGJ1aWxkT2JqZWN0CiAgICAgICAgIGFycmF5T2ZRdWFk
cy0+YWRkSXRlbShidWlsZEFycmF5Rm9yUXVhZChxdWFkKSk7CiAKICAgICByZXR1cm4gSW5zcGVj
dG9yOjpQcm90b2NvbDo6T3ZlcmxheVR5cGVzOjpGcmFnbWVudEhpZ2hsaWdodERhdGE6OmNyZWF0
ZSgpCi0gICAgICAgIC5zZXRRdWFkcyhXVEY6Om1vdmUoYXJyYXlPZlF1YWRzKSkKKyAgICAgICAg
LnNldFF1YWRzKFdURk1vdmUoYXJyYXlPZlF1YWRzKSkKICAgICAgICAgLnNldENvbnRlbnRDb2xv
cihoaWdobGlnaHQuY29udGVudENvbG9yLnNlcmlhbGl6ZWQoKSkKICAgICAgICAgLnNldENvbnRl
bnRPdXRsaW5lQ29sb3IoaGlnaGxpZ2h0LmNvbnRlbnRPdXRsaW5lQ29sb3Iuc2VyaWFsaXplZCgp
KQogICAgICAgICAuc2V0UGFkZGluZ0NvbG9yKGhpZ2hsaWdodC5wYWRkaW5nQ29sb3Iuc2VyaWFs
aXplZCgpKQpAQCAtNDQ3LDcgKzQ0Nyw3IEBAIHN0YXRpYyBSZWY8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6T3ZlcmxheVR5cGVzOjpSZWdpb24+CiAgICAg
ICAgICAgICAvLyBMZXQgdGhlIHNjcmlwdCBrbm93IHRoYXQgdGhpcyBpcyB0aGUgY3VycmVudGx5
IGhpZ2hsaWdodGVkIG5vZGUuCiAgICAgICAgICAgICByZWdpb25PYmplY3QtPnNldElzSGlnaGxp
Z2h0ZWQodHJ1ZSk7CiAgICAgICAgIH0KLSAgICAgICAgYXJyYXlPZlJlZ2lvbnMtPmFkZEl0ZW0o
V1RGOjptb3ZlKHJlZ2lvbk9iamVjdCkpOworICAgICAgICBhcnJheU9mUmVnaW9ucy0+YWRkSXRl
bShXVEZNb3ZlKHJlZ2lvbk9iamVjdCkpOwogICAgIH0KIAogICAgIHJldHVybiBhcnJheU9mUmVn
aW9uczsKQEAgLTU0Myw3ICs1NDMsNyBAQCB2b2lkIEluc3BlY3Rvck92ZXJsYXk6OmRyYXdQYWlu
dFJlY3RzKCkKICAgICBmb3IgKGNvbnN0IGF1dG8mIHBhaXIgOiBtX3BhaW50UmVjdHMpCiAgICAg
ICAgIGFycmF5T2ZSZWN0cy0+YWRkSXRlbShidWlsZE9iamVjdEZvclJlY3QocGFpci5zZWNvbmQp
KTsKIAotICAgIGV2YWx1YXRlSW5PdmVybGF5KEFTQ0lJTGl0ZXJhbCgidXBkYXRlUGFpbnRSZWN0
cyIpLCBXVEY6Om1vdmUoYXJyYXlPZlJlY3RzKSk7CisgICAgZXZhbHVhdGVJbk92ZXJsYXkoQVND
SUlMaXRlcmFsKCJ1cGRhdGVQYWludFJlY3RzIiksIFdURk1vdmUoYXJyYXlPZlJlY3RzKSk7CiB9
CiAKIHZvaWQgSW5zcGVjdG9yT3ZlcmxheTo6ZHJhd0d1dHRlcigpCkBAIC01NzksMTQgKzU3OSwx
NCBAQCBzdGF0aWMgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6
UHJvdG9jb2w6Ok92ZXJsYXlUeXBlczo6RnJhZwogCiAgICAgICAgICAgICAgICAgLy8gQ29tcHV0
ZSB0aGUgY2xpcHBpbmcgYXJlYSBvZiB0aGUgcmVnaW9uLgogICAgICAgICAgICAgICAgIGZyYWdt
ZW50SGlnaGxpZ2h0LT5zZXRSZWdpb25DbGlwcGluZ0FyZWEoYnVpbGRRdWFkT2JqZWN0Rm9yQ1NT
UmVnaW9uQ29udGVudENsaXAocmVnaW9uKSk7Ci0gICAgICAgICAgICAgICAgYXJyYXlPZkZyYWdt
ZW50cy0+YWRkSXRlbShXVEY6Om1vdmUoZnJhZ21lbnRIaWdobGlnaHQpKTsKKyAgICAgICAgICAg
ICAgICBhcnJheU9mRnJhZ21lbnRzLT5hZGRJdGVtKFdURk1vdmUoZnJhZ21lbnRIaWdobGlnaHQp
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChyZWdpb24gPT0gZW5kUmVnaW9uKQog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQogCi0gICAgcmV0dXJuIFdU
Rjo6bW92ZShhcnJheU9mRnJhZ21lbnRzKTsKKyAgICByZXR1cm4gV1RGTW92ZShhcnJheU9mRnJh
Z21lbnRzKTsKIH0KIAogI2lmIEVOQUJMRShDU1NfU0hBUEVTKQpAQCAtNjg5LDcgKzY4OSw3IEBA
IHN0YXRpYyBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6T3ZlcmxheVR5cGVzOjpTaGFwZU91
dHNpZGVEYXRhPiBidWlsZE9iamVjdEZvCiAgICAgICAgIH0KICAgICB9CiAKLSAgICByZXR1cm4g
V1RGOjptb3ZlKHNoYXBlT2JqZWN0KTsKKyAgICByZXR1cm4gV1RGTW92ZShzaGFwZU9iamVjdCk7
CiB9CiAjZW5kaWYKIApAQCAtNzQ4LDcgKzc0OCw3IEBAIHN0YXRpYyBSZWZQdHI8SW5zcGVjdG9y
OjpQcm90b2NvbDo6T3ZlcmxheVR5cGVzOjpFbGVtZW50RGF0YT4gYnVpbGRPYmplY3RGb3JFbGVt
CiAgICAgICAgIC5zZXRXaWR0aChtb2RlbE9iamVjdCA/IGFkanVzdEZvckFic29sdXRlWm9vbShy
b3VuZFRvSW50KG1vZGVsT2JqZWN0LT5vZmZzZXRXaWR0aCgpKSwgKm1vZGVsT2JqZWN0KSA6IGJv
dW5kaW5nQm94LndpZHRoKCkpCiAgICAgICAgIC5zZXRIZWlnaHQobW9kZWxPYmplY3QgPyBhZGp1
c3RGb3JBYnNvbHV0ZVpvb20ocm91bmRUb0ludChtb2RlbE9iamVjdC0+b2Zmc2V0SGVpZ2h0KCkp
LCAqbW9kZWxPYmplY3QpIDogYm91bmRpbmdCb3guaGVpZ2h0KCkpCiAgICAgICAgIC5yZWxlYXNl
KCk7Ci0gICAgZWxlbWVudERhdGEtPnNldFNpemUoV1RGOjptb3ZlKHNpemVPYmplY3QpKTsKKyAg
ICBlbGVtZW50RGF0YS0+c2V0U2l6ZShXVEZNb3ZlKHNpemVPYmplY3QpKTsKIAogICAgIGlmICh0
eXBlICE9IEhpZ2hsaWdodFR5cGU6Ok5vZGVMaXN0ICYmIHJlbmRlcmVyLT5pc1JlbmRlck5hbWVk
Rmxvd0ZyYWdtZW50Q29udGFpbmVyKCkpIHsKICAgICAgICAgUmVuZGVyTmFtZWRGbG93RnJhZ21l
bnQmIHJlZ2lvbiA9ICpkb3duY2FzdDxSZW5kZXJCbG9ja0Zsb3c+KCpyZW5kZXJlcikucmVuZGVy
TmFtZWRGbG93RnJhZ21lbnQoKTsKQEAgLTc1OCw3ICs3NTgsNyBAQCBzdGF0aWMgUmVmUHRyPElu
c3BlY3Rvcjo6UHJvdG9jb2w6Ok92ZXJsYXlUeXBlczo6RWxlbWVudERhdGE+IGJ1aWxkT2JqZWN0
Rm9yRWxlbQogICAgICAgICAgICAgICAgIC5zZXROYW1lKGRvd25jYXN0PFJlbmRlck5hbWVkRmxv
d1RocmVhZD4oKmZsb3dUaHJlYWQpLmZsb3dUaHJlYWROYW1lKCkpCiAgICAgICAgICAgICAgICAg
LnNldFJlZ2lvbnMoYnVpbGRPYmplY3RGb3JGbG93UmVnaW9ucygmcmVnaW9uLCBmbG93VGhyZWFk
KSkKICAgICAgICAgICAgICAgICAucmVsZWFzZSgpOwotICAgICAgICAgICAgZWxlbWVudERhdGEt
PnNldFJlZ2lvbkZsb3dEYXRhKFdURjo6bW92ZShyZWdpb25GbG93RGF0YSkpOworICAgICAgICAg
ICAgZWxlbWVudERhdGEtPnNldFJlZ2lvbkZsb3dEYXRhKFdURk1vdmUocmVnaW9uRmxvd0RhdGEp
KTsKICAgICAgICAgfQogICAgIH0KIApAQCAtNzY4LDE0ICs3NjgsMTQgQEAgc3RhdGljIFJlZlB0
cjxJbnNwZWN0b3I6OlByb3RvY29sOjpPdmVybGF5VHlwZXM6OkVsZW1lbnREYXRhPiBidWlsZE9i
amVjdEZvckVsZW0KICAgICAgICAgICAgIC5zZXROYW1lKGRvd25jYXN0PFJlbmRlck5hbWVkRmxv
d1RocmVhZD4oKmNvbnRhaW5pbmdGbG93VGhyZWFkKS5mbG93VGhyZWFkTmFtZSgpKQogICAgICAg
ICAgICAgLnJlbGVhc2UoKTsKIAotICAgICAgICBlbGVtZW50RGF0YS0+c2V0Q29udGVudEZsb3dE
YXRhKFdURjo6bW92ZShjb250ZW50Rmxvd0RhdGEpKTsKKyAgICAgICAgZWxlbWVudERhdGEtPnNl
dENvbnRlbnRGbG93RGF0YShXVEZNb3ZlKGNvbnRlbnRGbG93RGF0YSkpOwogICAgIH0KIAogI2lm
IEVOQUJMRShDU1NfU0hBUEVTKQogICAgIGlmIChpczxSZW5kZXJCb3g+KCpyZW5kZXJlcikpIHsK
ICAgICAgICAgYXV0byYgcmVuZGVyQm94ID0gZG93bmNhc3Q8UmVuZGVyQm94PigqcmVuZGVyZXIp
OwogICAgICAgICBpZiAoUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok92ZXJsYXlUeXBlczo6
U2hhcGVPdXRzaWRlRGF0YT4gc2hhcGVPYmplY3QgPSBidWlsZE9iamVjdEZvclNoYXBlT3V0c2lk
ZShjb250YWluaW5nRnJhbWUsICZyZW5kZXJCb3gpKQotICAgICAgICAgICAgZWxlbWVudERhdGEt
PnNldFNoYXBlT3V0c2lkZURhdGEoV1RGOjptb3ZlKHNoYXBlT2JqZWN0KSk7CisgICAgICAgICAg
ICBlbGVtZW50RGF0YS0+c2V0U2hhcGVPdXRzaWRlRGF0YShXVEZNb3ZlKHNoYXBlT2JqZWN0KSk7
CiAgICAgfQogI2VuZGlmCiAKQEAgLTc4OCw3ICs3ODgsNyBAQCBzdGF0aWMgUmVmUHRyPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6Ok92ZXJsYXlUeXBlczo6RWxlbWVudERhdGE+IGJ1aWxkT2JqZWN0Rm9y
RWxlbQogICAgICAgICAgICAgZWxlbWVudERhdGEtPnNldFJvbGUoYXhPYmplY3QtPmNvbXB1dGVk
Um9sZVN0cmluZygpKTsKICAgICB9CiAKLSAgICByZXR1cm4gV1RGOjptb3ZlKGVsZW1lbnREYXRh
KTsKKyAgICByZXR1cm4gV1RGTW92ZShlbGVtZW50RGF0YSk7CiB9CiAKIFJlZlB0cjxJbnNwZWN0
b3I6OlByb3RvY29sOjpPdmVybGF5VHlwZXM6Ok5vZGVIaWdobGlnaHREYXRhPiBJbnNwZWN0b3JP
dmVybGF5OjpidWlsZEhpZ2hsaWdodE9iamVjdEZvck5vZGUoTm9kZSogbm9kZSwgSGlnaGxpZ2h0
VHlwZSB0eXBlKSBjb25zdApAQCAtODA5LDE1ICs4MDksMTUgQEAgUmVmUHRyPEluc3BlY3Rvcjo6
UHJvdG9jb2w6Ok92ZXJsYXlUeXBlczo6Tm9kZUhpZ2hsaWdodERhdGE+IEluc3BlY3Rvck92ZXJs
YXk6OmIKIAogICAgIGF1dG8gbm9kZUhpZ2hsaWdodE9iamVjdCA9IEluc3BlY3Rvcjo6UHJvdG9j
b2w6Ok92ZXJsYXlUeXBlczo6Tm9kZUhpZ2hsaWdodERhdGE6OmNyZWF0ZSgpCiAgICAgICAgIC5z
ZXRTY3JvbGxPZmZzZXQoYnVpbGRPYmplY3RGb3JQb2ludCghbWFpblZpZXctPmRlbGVnYXRlc1Nj
cm9sbGluZygpID8gbWFpblZpZXctPnZpc2libGVDb250ZW50UmVjdCgpLmxvY2F0aW9uKCkgOiBG
bG9hdFBvaW50KCkpKQotICAgICAgICAuc2V0RnJhZ21lbnRzKFdURjo6bW92ZShhcnJheU9mRnJh
Z21lbnRIaWdobGlnaHRzKSkKKyAgICAgICAgLnNldEZyYWdtZW50cyhXVEZNb3ZlKGFycmF5T2ZG
cmFnbWVudEhpZ2hsaWdodHMpKQogICAgICAgICAucmVsZWFzZSgpOwogCiAgICAgaWYgKG1fbm9k
ZUhpZ2hsaWdodENvbmZpZy5zaG93SW5mbykgewogICAgICAgICBpZiAoUmVmUHRyPEluc3BlY3Rv
cjo6UHJvdG9jb2w6Ok92ZXJsYXlUeXBlczo6RWxlbWVudERhdGE+IGVsZW1lbnREYXRhID0gYnVp
bGRPYmplY3RGb3JFbGVtZW50RGF0YShub2RlLCB0eXBlKSkKLSAgICAgICAgICAgIG5vZGVIaWdo
bGlnaHRPYmplY3QtPnNldEVsZW1lbnREYXRhKFdURjo6bW92ZShlbGVtZW50RGF0YSkpOworICAg
ICAgICAgICAgbm9kZUhpZ2hsaWdodE9iamVjdC0+c2V0RWxlbWVudERhdGEoV1RGTW92ZShlbGVt
ZW50RGF0YSkpOwogICAgIH0KIAotICAgIHJldHVybiBXVEY6Om1vdmUobm9kZUhpZ2hsaWdodE9i
amVjdCk7CisgICAgcmV0dXJuIFdURk1vdmUobm9kZUhpZ2hsaWdodE9iamVjdCk7CiB9CiAKIFJl
ZjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpPdmVybGF5
VHlwZXM6Ok5vZGVIaWdobGlnaHREYXRhPj4gSW5zcGVjdG9yT3ZlcmxheTo6YnVpbGRPYmplY3RG
b3JIaWdobGlnaHRlZE5vZGVzKCkgY29uc3QKQEAgLTgyNiwxMSArODI2LDExIEBAIFJlZjxJbnNw
ZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpPdmVybGF5VHlwZXM6
Ok5vZGVIaWdobGlnaHRECiAKICAgICBpZiAobV9oaWdobGlnaHROb2RlKSB7CiAgICAgICAgIGlm
IChSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6T3ZlcmxheVR5cGVzOjpOb2RlSGlnaGxpZ2h0
RGF0YT4gbm9kZUhpZ2hsaWdodERhdGEgPSBidWlsZEhpZ2hsaWdodE9iamVjdEZvck5vZGUobV9o
aWdobGlnaHROb2RlLmdldCgpLCBIaWdobGlnaHRUeXBlOjpOb2RlKSkKLSAgICAgICAgICAgIGhp
Z2hsaWdodHMtPmFkZEl0ZW0oV1RGOjptb3ZlKG5vZGVIaWdobGlnaHREYXRhKSk7CisgICAgICAg
ICAgICBoaWdobGlnaHRzLT5hZGRJdGVtKFdURk1vdmUobm9kZUhpZ2hsaWdodERhdGEpKTsKICAg
ICB9IGVsc2UgaWYgKG1faGlnaGxpZ2h0Tm9kZUxpc3QpIHsKICAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IG1faGlnaGxpZ2h0Tm9kZUxpc3QtPmxlbmd0aCgpOyArK2kpIHsKICAgICAg
ICAgICAgIGlmIChSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6T3ZlcmxheVR5cGVzOjpOb2Rl
SGlnaGxpZ2h0RGF0YT4gbm9kZUhpZ2hsaWdodERhdGEgPSBidWlsZEhpZ2hsaWdodE9iamVjdEZv
ck5vZGUobV9oaWdobGlnaHROb2RlTGlzdC0+aXRlbShpKSwgSGlnaGxpZ2h0VHlwZTo6Tm9kZUxp
c3QpKQotICAgICAgICAgICAgICAgIGhpZ2hsaWdodHMtPmFkZEl0ZW0oV1RGOjptb3ZlKG5vZGVI
aWdobGlnaHREYXRhKSk7CisgICAgICAgICAgICAgICAgaGlnaGxpZ2h0cy0+YWRkSXRlbShXVEZN
b3ZlKG5vZGVIaWdobGlnaHREYXRhKSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTkxOSw3ICs5
MTksNyBAQCB2b2lkIEluc3BlY3Rvck92ZXJsYXk6OnJlc2V0KGNvbnN0IEludFNpemUmIHZpZXdw
b3J0U2l6ZSwgY29uc3QgSW50U2l6ZSYgZnJhbWVWaQogICAgICAgICAuc2V0Vmlld3BvcnRTaXpl
KGJ1aWxkT2JqZWN0Rm9yU2l6ZSh2aWV3cG9ydFNpemUpKQogICAgICAgICAuc2V0RnJhbWVWaWV3
RnVsbFNpemUoYnVpbGRPYmplY3RGb3JTaXplKGZyYW1lVmlld0Z1bGxTaXplKSkKICAgICAgICAg
LnJlbGVhc2UoKTsKLSAgICBldmFsdWF0ZUluT3ZlcmxheSgicmVzZXQiLCBXVEY6Om1vdmUoY29u
ZmlnT2JqZWN0KSk7CisgICAgZXZhbHVhdGVJbk92ZXJsYXkoInJlc2V0IiwgV1RGTW92ZShjb25m
aWdPYmplY3QpKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JPdmVybGF5OjpldmFsdWF0ZUluT3Zlcmxh
eShjb25zdCBTdHJpbmcmIG1ldGhvZCkKQEAgLTk0MSw3ICs5NDEsNyBAQCB2b2lkIEluc3BlY3Rv
ck92ZXJsYXk6OmV2YWx1YXRlSW5PdmVybGF5KGNvbnN0IFN0cmluZyYgbWV0aG9kLCBSZWZQdHI8
SW5zcGVjdG9yVgogewogICAgIFJlZjxJbnNwZWN0b3JBcnJheT4gY29tbWFuZCA9IEluc3BlY3Rv
ckFycmF5OjpjcmVhdGUoKTsKICAgICBjb21tYW5kLT5wdXNoU3RyaW5nKG1ldGhvZCk7Ci0gICAg
Y29tbWFuZC0+cHVzaFZhbHVlKFdURjo6bW92ZShhcmd1bWVudCkpOworICAgIGNvbW1hbmQtPnB1
c2hWYWx1ZShXVEZNb3ZlKGFyZ3VtZW50KSk7CiAgICAgb3ZlcmxheVBhZ2UoKS0+bWFpbkZyYW1l
KCkuc2NyaXB0KCkuZXZhbHVhdGUoU2NyaXB0U291cmNlQ29kZShtYWtlU3RyaW5nKCJkaXNwYXRj
aCgiLCBjb21tYW5kLT50b0pTT05TdHJpbmcoKSwgJyknKSkpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCmluZGV4IGRjOGZiMDlkNDhi
ODJmMTU1NGJkZDBmZjFhMTMzZmUwYTVhZWE0YWUuLjVjZThjMjYxZmFiZjZhYmY0NTdjNWI4NTRj
NTU2N2Y5ZGZhZjI0ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JQYWdlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JQYWdlQWdlbnQuY3BwCkBAIC05MTgsNyArOTE4LDcgQEAgUmVmPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OlBhZ2U6OkZyYW1lUmVzb3VyY2VUcmVlPiBJbnNwZWN0b3JQYWdlQWdlbnQ6OmJ1aWxkT2Jq
ZWMKICAgICBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6RnJhbWU+IGZyYW1lT2JqZWN0
ID0gYnVpbGRPYmplY3RGb3JGcmFtZShmcmFtZSk7CiAgICAgYXV0byBzdWJyZXNvdXJjZXMgPSBJ
bnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpGcmFt
ZVJlc291cmNlPjo6Y3JlYXRlKCk7CiAgICAgYXV0byByZXN1bHQgPSBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpQYWdlOjpGcmFtZVJlc291cmNlVHJlZTo6Y3JlYXRlKCkKLSAgICAgICAgLnNldEZyYW1l
KFdURjo6bW92ZShmcmFtZU9iamVjdCkpCisgICAgICAgIC5zZXRGcmFtZShXVEZNb3ZlKGZyYW1l
T2JqZWN0KSkKICAgICAgICAgLnNldFJlc291cmNlcyhzdWJyZXNvdXJjZXMuY29weVJlZigpKQog
ICAgICAgICAucmVsZWFzZSgpOwogCkBAIC05MzUsNyArOTM1LDcgQEAgUmVmPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OlBhZ2U6OkZyYW1lUmVzb3VyY2VUcmVlPiBJbnNwZWN0b3JQYWdlQWdlbnQ6OmJ1
aWxkT2JqZWMKICAgICAgICAgU3RyaW5nIHNvdXJjZU1hcHBpbmdVUkwgPSBJbnNwZWN0b3JQYWdl
QWdlbnQ6OnNvdXJjZU1hcFVSTEZvclJlc291cmNlKGNhY2hlZFJlc291cmNlKTsKICAgICAgICAg
aWYgKCFzb3VyY2VNYXBwaW5nVVJMLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJlc291cmNlT2Jq
ZWN0LT5zZXRTb3VyY2VNYXBVUkwoc291cmNlTWFwcGluZ1VSTCk7Ci0gICAgICAgIHN1YnJlc291
cmNlcy0+YWRkSXRlbShXVEY6Om1vdmUocmVzb3VyY2VPYmplY3QpKTsKKyAgICAgICAgc3VicmVz
b3VyY2VzLT5hZGRJdGVtKFdURk1vdmUocmVzb3VyY2VPYmplY3QpKTsKICAgICB9CiAKICAgICBS
ZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6UGFn
ZTo6RnJhbWVSZXNvdXJjZVRyZWU+PiBjaGlsZHJlbkFycmF5OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlcGxheUFnZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXBsYXlBZ2VudC5jcHAKaW5kZXggM2Q0ZDVjYmQ4YWI2
MzBlYzY3ZGRhMWQ3ZTBjNDU5NGZiY2FjMjIzYS4uNGY1OTM2OTZiMzE1ZGY4NzRjNzc3ZDRlZjE2
M2IwNTdmZjZmOGI4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclJlcGxheUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yUmVwbGF5QWdlbnQuY3BwCkBAIC04Miw3ICs4Miw3IEBAIHN0YXRpYyBSZWY8SW5zcGVjdG9y
OjpQcm90b2NvbDo6UmVwbGF5OjpSZXBsYXlTZXNzaW9uPiBidWlsZEluc3BlY3Rvck9iamVjdEZv
clNlCiAgICAgcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJlcGxheTo6UmVwbGF5U2Vzc2lv
bjo6Y3JlYXRlKCkKICAgICAgICAgLnNldElkKHNlc3Npb24tPmlkZW50aWZpZXIoKSkKICAgICAg
ICAgLnNldFRpbWVzdGFtcChzZXNzaW9uLT50aW1lc3RhbXAoKSkKLSAgICAgICAgLnNldFNlZ21l
bnRzKFdURjo6bW92ZShzZWdtZW50cykpCisgICAgICAgIC5zZXRTZWdtZW50cyhXVEZNb3ZlKHNl
Z21lbnRzKSkKICAgICAgICAgLnJlbGVhc2UoKTsKIH0KIApAQCAtMTI0LDEwICsxMjQsMTAgQEAg
cHVibGljOgogICAgICAgICBMT0coV2ViUmVwbGF5LCAiJS0yNXMgV3JpdGluZyAlNXp1OiAlc1xu
IiwgIltTZXJpYWxpemVJbnB1dF0iLCBpbmRleCwgaW5wdXQtPnR5cGUoKS5hc2NpaSgpLmRhdGEo
KSk7CiAKICAgICAgICAgaWYgKFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpSZXBsYXk6OlJl
cGxheUlucHV0PiBzZXJpYWxpemVkSW5wdXQgPSBidWlsZEluc3BlY3Rvck9iamVjdEZvcklucHV0
KCppbnB1dCwgaW5kZXgpKQotICAgICAgICAgICAgbV9pbnB1dHMtPmFkZEl0ZW0oV1RGOjptb3Zl
KHNlcmlhbGl6ZWRJbnB1dCkpOworICAgICAgICAgICAgbV9pbnB1dHMtPmFkZEl0ZW0oV1RGTW92
ZShzZXJpYWxpemVkSW5wdXQpKTsKICAgICB9CiAKLSAgICBSZXR1cm5UeXBlIHJldHVyblZhbHVl
KCkgeyByZXR1cm4gV1RGOjptb3ZlKG1faW5wdXRzKTsgfQorICAgIFJldHVyblR5cGUgcmV0dXJu
VmFsdWUoKSB7IHJldHVybiBXVEZNb3ZlKG1faW5wdXRzKTsgfQogcHJpdmF0ZToKICAgICBSZWZQ
dHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6UmVwbGF5
OjpSZXBsYXlJbnB1dD4+IG1faW5wdXRzOwogfTsKQEAgLTE0NiwxMyArMTQ2LDEzIEBAIHN0YXRp
YyBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6UmVwbGF5OjpTZXNzaW9uU2VnbWVudD4gYnVpbGRJ
bnNwZWN0b3JPYmplY3RGb3JTCiAgICAgICAgICAgICAuc2V0VHlwZShFbmNvZGluZ1RyYWl0czxJ
bnB1dFF1ZXVlPjo6ZW5jb2RlVmFsdWUocXVldWUpLmNvbnZlcnRUbzxTdHJpbmc+KCkpCiAgICAg
ICAgICAgICAuc2V0SW5wdXRzKHF1ZXVlSW5wdXRzKQogICAgICAgICAgICAgLnJlbGVhc2UoKTsK
LSAgICAgICAgcXVldWVzT2JqZWN0LT5hZGRJdGVtKFdURjo6bW92ZShxdWV1ZU9iamVjdCkpOwor
ICAgICAgICBxdWV1ZXNPYmplY3QtPmFkZEl0ZW0oV1RGTW92ZShxdWV1ZU9iamVjdCkpOwogICAg
IH0KIAogICAgIHJldHVybiBJbnNwZWN0b3I6OlByb3RvY29sOjpSZXBsYXk6OlNlc3Npb25TZWdt
ZW50OjpjcmVhdGUoKQogICAgICAgICAuc2V0SWQoc2VnbWVudC0+aWRlbnRpZmllcigpKQogICAg
ICAgICAuc2V0VGltZXN0YW1wKHNlZ21lbnQtPnRpbWVzdGFtcCgpKQotICAgICAgICAuc2V0UXVl
dWVzKFdURjo6bW92ZShxdWV1ZXNPYmplY3QpKQorICAgICAgICAuc2V0UXVldWVzKFdURk1vdmUo
cXVldWVzT2JqZWN0KSkKICAgICAgICAgLnJlbGVhc2UoKTsKIH0KIApAQCAtMzg5LDcgKzM4OSw3
IEBAIHZvaWQgSW5zcGVjdG9yUmVwbGF5QWdlbnQ6OnN3aXRjaFNlc3Npb24oRXJyb3JTdHJpbmcm
IGVycm9yU3RyaW5nLCBJbnNwZWN0b3I6OlByCiAgICAgaWYgKCFzZXNzaW9uKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBtX3BhZ2UucmVwbGF5Q29udHJvbGxlcigpLnN3aXRjaFNlc3Npb24oV1RG
Ojptb3ZlKHNlc3Npb24pKTsKKyAgICBtX3BhZ2UucmVwbGF5Q29udHJvbGxlcigpLnN3aXRjaFNl
c3Npb24oV1RGTW92ZShzZXNzaW9uKSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yUmVwbGF5QWdlbnQ6
Omluc2VydFNlc3Npb25TZWdtZW50KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgSW5zcGVjdG9y
OjpQcm90b2NvbDo6UmVwbGF5OjpTZXNzaW9uSWRlbnRpZmllciBzZXNzaW9uSWRlbnRpZmllciwg
U2VnbWVudElkZW50aWZpZXIgc2VnbWVudElkZW50aWZpZXIsIGludCBzZWdtZW50SW5kZXgpCkBA
IC00MTQsOCArNDE0LDggQEAgdm9pZCBJbnNwZWN0b3JSZXBsYXlBZ2VudDo6aW5zZXJ0U2Vzc2lv
blNlZ21lbnQoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBJbnNwZWMKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAotICAgIHNlc3Npb24tPmluc2VydFNlZ21lbnQoc2VnbWVudEluZGV4LCBXVEY6
Om1vdmUoc2VnbWVudCkpOwotICAgIHNlc3Npb25Nb2RpZmllZChXVEY6Om1vdmUoc2Vzc2lvbikp
OworICAgIHNlc3Npb24tPmluc2VydFNlZ21lbnQoc2VnbWVudEluZGV4LCBXVEZNb3ZlKHNlZ21l
bnQpKTsKKyAgICBzZXNzaW9uTW9kaWZpZWQoV1RGTW92ZShzZXNzaW9uKSk7CiB9CiAKIHZvaWQg
SW5zcGVjdG9yUmVwbGF5QWdlbnQ6OnJlbW92ZVNlc3Npb25TZWdtZW50KEVycm9yU3RyaW5nJiBl
cnJvclN0cmluZywgSW5zcGVjdG9yOjpQcm90b2NvbDo6UmVwbGF5OjpTZXNzaW9uSWRlbnRpZmll
ciBpZGVudGlmaWVyLCBpbnQgc2VnbWVudEluZGV4KQpAQCAtNDM5LDcgKzQzOSw3IEBAIHZvaWQg
SW5zcGVjdG9yUmVwbGF5QWdlbnQ6OnJlbW92ZVNlc3Npb25TZWdtZW50KEVycm9yU3RyaW5nJiBl
cnJvclN0cmluZywgSW5zcGVjCiAgICAgfQogCiAgICAgc2Vzc2lvbi0+cmVtb3ZlU2VnbWVudChz
ZWdtZW50SW5kZXgpOwotICAgIHNlc3Npb25Nb2RpZmllZChXVEY6Om1vdmUoc2Vzc2lvbikpOwor
ICAgIHNlc3Npb25Nb2RpZmllZChXVEZNb3ZlKHNlc3Npb24pKTsKIH0KIAogUmVmUHRyPFJlcGxh
eVNlc3Npb24+IEluc3BlY3RvclJlcGxheUFnZW50OjpmaW5kU2Vzc2lvbihFcnJvclN0cmluZyYg
ZXJyb3JTdHJpbmcsIFNlc3Npb25JZGVudGlmaWVyIGlkZW50aWZpZXIpCkBAIC00OTUsNyArNDk1
LDcgQEAgdm9pZCBJbnNwZWN0b3JSZXBsYXlBZ2VudDo6Z2V0U2Vzc2lvbkRhdGEoRXJyb3JTdHJp
bmcmIGVycm9yU3RyaW5nLCBJbnNwZWN0b3I6OlAKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIHNlcmlhbGl6ZWRPYmplY3QgPSBidWlsZEluc3BlY3Rvck9iamVjdEZvclNlc3Npb24oV1RG
Ojptb3ZlKHNlc3Npb24pKTsKKyAgICBzZXJpYWxpemVkT2JqZWN0ID0gYnVpbGRJbnNwZWN0b3JP
YmplY3RGb3JTZXNzaW9uKFdURk1vdmUoc2Vzc2lvbikpOwogfQogCiB2b2lkIEluc3BlY3RvclJl
cGxheUFnZW50OjpnZXRTZWdtZW50RGF0YShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OlJlcGxheTo6U2VnbWVudElkZW50aWZpZXIgaWRlbnRpZmllciwgUmVm
UHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJlcGxheTo6U2Vzc2lvblNlZ21lbnQ+JiBzZXJpYWxp
emVkT2JqZWN0KQpAQCAtNTA2LDcgKzUwNiw3IEBAIHZvaWQgSW5zcGVjdG9yUmVwbGF5QWdlbnQ6
OmdldFNlZ21lbnREYXRhKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgSW5zcGVjdG9yOjpQCiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBzZXJpYWxpemVkT2JqZWN0ID0gYnVpbGRJbnNw
ZWN0b3JPYmplY3RGb3JTZWdtZW50KFdURjo6bW92ZShzZWdtZW50KSk7CisgICAgc2VyaWFsaXpl
ZE9iamVjdCA9IGJ1aWxkSW5zcGVjdG9yT2JqZWN0Rm9yU2VnbWVudChXVEZNb3ZlKHNlZ21lbnQp
KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCmluZGV4IDNmNWI0MWExZTkyMWI4N2ZiZWY3
NTNmOGIzYTI2ZDAyODlmYmU4ZDMuLjQxODMzMzBhMmU3ZmZmMTQ2ZGZlNzg5MTRlODBjOTJhOTlk
YTMxNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHls
ZVNoZWV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVT
aGVldC5jcHAKQEAgLTE5OSw3ICsxOTksNyBAQCBzdGF0aWMgUmVmUHRyPENTU1J1bGVMaXN0PiBh
c0NTU1J1bGVMaXN0KENTU1N0eWxlU2hlZXQqIHN0eWxlU2hlZXQpCiAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgbGlzdFJ1bGVzLmFwcGVuZChpdGVtKTsKICAgICB9Ci0gICAgcmV0dXJu
IFdURjo6bW92ZShsaXN0KTsKKyAgICByZXR1cm4gV1RGTW92ZShsaXN0KTsKIH0KIAogc3RhdGlj
IFJlZlB0cjxDU1NSdWxlTGlzdD4gYXNDU1NSdWxlTGlzdChDU1NSdWxlKiBydWxlKQpAQCAtMjgx
LDcgKzI4MSw3IEBAIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8Q1NTUGFyc2VyPiBjcmVhdGVDU1NQ
YXJzZXIoRG9jdW1lbnQqIGRvY3VtZW50KQogCiBSZWY8SW5zcGVjdG9yU3R5bGU+IEluc3BlY3Rv
clN0eWxlOjpjcmVhdGUoY29uc3QgSW5zcGVjdG9yQ1NTSWQmIHN0eWxlSWQsIFJlZlB0cjxDU1NT
dHlsZURlY2xhcmF0aW9uPiYmIHN0eWxlLCBJbnNwZWN0b3JTdHlsZVNoZWV0KiBwYXJlbnRTdHls
ZVNoZWV0KQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEluc3BlY3RvclN0eWxlKHN0eWxl
SWQsIFdURjo6bW92ZShzdHlsZSksIHBhcmVudFN0eWxlU2hlZXQpKTsKKyAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBJbnNwZWN0b3JTdHlsZShzdHlsZUlkLCBXVEZNb3ZlKHN0eWxlKSwgcGFyZW50
U3R5bGVTaGVldCkpOwogfQogCiBJbnNwZWN0b3JTdHlsZTo6SW5zcGVjdG9yU3R5bGUoY29uc3Qg
SW5zcGVjdG9yQ1NTSWQmIHN0eWxlSWQsIFJlZlB0cjxDU1NTdHlsZURlY2xhcmF0aW9uPiYmIHN0
eWxlLCBJbnNwZWN0b3JTdHlsZVNoZWV0KiBwYXJlbnRTdHlsZVNoZWV0KQpAQCAtMzA5LDcgKzMw
OSw3IEBAIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1N0eWxlPiBJbnNwZWN0
b3JTdHlsZTo6YnVpbGRPYmplY3RGb3JTdHlsZSgpCiAgICAgaWYgKHNvdXJjZURhdGEpCiAgICAg
ICAgIHJlc3VsdC0+c2V0UmFuZ2UoYnVpbGRTb3VyY2VSYW5nZU9iamVjdChzb3VyY2VEYXRhLT5y
dWxlQm9keVJhbmdlLCBtX3BhcmVudFN0eWxlU2hlZXQtPmxpbmVFbmRpbmdzKCkuZ2V0KCkpKTsK
IAotICAgIHJldHVybiBXVEY6Om1vdmUocmVzdWx0KTsKKyAgICByZXR1cm4gV1RGTW92ZShyZXN1
bHQpOwogfQogCiBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90
b2NvbDo6Q1NTOjpDU1NDb21wdXRlZFN0eWxlUHJvcGVydHk+PiBJbnNwZWN0b3JTdHlsZTo6YnVp
bGRBcnJheUZvckNvbXB1dGVkU3R5bGUoKSBjb25zdApAQCAtMzI0LDcgKzMyNCw3IEBAIFJlZjxJ
bnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU0Nv
bXB1dGVkU3R5bGVQcm9wZXJ0CiAgICAgICAgICAgICAuc2V0TmFtZShwcm9wZXJ0eUVudHJ5Lm5h
bWUpCiAgICAgICAgICAgICAuc2V0VmFsdWUocHJvcGVydHlFbnRyeS52YWx1ZSkKICAgICAgICAg
ICAgIC5yZWxlYXNlKCk7Ci0gICAgICAgIHJlc3VsdC0+YWRkSXRlbShXVEY6Om1vdmUoZW50cnkp
KTsKKyAgICAgICAgcmVzdWx0LT5hZGRJdGVtKFdURk1vdmUoZW50cnkpKTsKICAgICB9CiAKICAg
ICByZXR1cm4gcmVzdWx0OwpAQCAtNDg3LDcgKzQ4Nyw3IEBAIFJlZjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpDU1M6OkNTU1N0eWxlPiBJbnNwZWN0b3JTdHlsZTo6c3R5bGVXaXRoUHJvcGVydGllcygp
IGNvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnNldE5hbWUoc2hvcnRoYW5kKQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC5zZXRWYWx1ZShzaG9ydGhhbmRWYWx1ZShzaG9ydGhh
bmQpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5yZWxlYXNlKCk7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBzaG9ydGhhbmRFbnRyaWVzLT5hZGRJdGVtKFdURjo6bW92ZShlbnRyeSkp
OworICAgICAgICAgICAgICAgICAgICAgICAgc2hvcnRoYW5kRW50cmllcy0+YWRkSXRlbShXVEZN
b3ZlKGVudHJ5KSk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICB9CkBAIC00OTksOCArNDk5LDggQEAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkNTUzo6Q1NTU3R5bGU+IEluc3BlY3RvclN0eWxlOjpzdHlsZVdpdGhQcm9wZXJ0aWVzKCkgY28K
ICAgICB9CiAKICAgICByZXR1cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NTdHlsZTo6
Y3JlYXRlKCkKLSAgICAgICAgLnNldENzc1Byb3BlcnRpZXMoV1RGOjptb3ZlKHByb3BlcnRpZXNP
YmplY3QpKQotICAgICAgICAuc2V0U2hvcnRoYW5kRW50cmllcyhXVEY6Om1vdmUoc2hvcnRoYW5k
RW50cmllcykpCisgICAgICAgIC5zZXRDc3NQcm9wZXJ0aWVzKFdURk1vdmUocHJvcGVydGllc09i
amVjdCkpCisgICAgICAgIC5zZXRTaG9ydGhhbmRFbnRyaWVzKFdURk1vdmUoc2hvcnRoYW5kRW50
cmllcykpCiAgICAgICAgIC5yZWxlYXNlKCk7CiB9CiAKQEAgLTU3MCw3ICs1NzAsNyBAQCBWZWN0
b3I8U3RyaW5nPiBJbnNwZWN0b3JTdHlsZTo6bG9uZ2hhbmRQcm9wZXJ0aWVzKGNvbnN0IFN0cmlu
ZyYgc2hvcnRoYW5kUHJvcGVydAogCiBSZWY8SW5zcGVjdG9yU3R5bGVTaGVldD4gSW5zcGVjdG9y
U3R5bGVTaGVldDo6Y3JlYXRlKEluc3BlY3RvclBhZ2VBZ2VudCogcGFnZUFnZW50LCBjb25zdCBT
dHJpbmcmIGlkLCBSZWZQdHI8Q1NTU3R5bGVTaGVldD4mJiBwYWdlU3R5bGVTaGVldCwgSW5zcGVj
dG9yOjpQcm90b2NvbDo6Q1NTOjpTdHlsZVNoZWV0T3JpZ2luIG9yaWdpbiwgY29uc3QgU3RyaW5n
JiBkb2N1bWVudFVSTCwgTGlzdGVuZXIqIGxpc3RlbmVyKQogewotICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IEluc3BlY3RvclN0eWxlU2hlZXQocGFnZUFnZW50LCBpZCwgV1RGOjptb3ZlKHBhZ2VT
dHlsZVNoZWV0KSwgb3JpZ2luLCBkb2N1bWVudFVSTCwgbGlzdGVuZXIpKTsKKyAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBJbnNwZWN0b3JTdHlsZVNoZWV0KHBhZ2VBZ2VudCwgaWQsIFdURk1vdmUo
cGFnZVN0eWxlU2hlZXQpLCBvcmlnaW4sIGRvY3VtZW50VVJMLCBsaXN0ZW5lcikpOwogfQogCiAv
LyBzdGF0aWMKQEAgLTU4NCw3ICs1ODQsNyBAQCBTdHJpbmcgSW5zcGVjdG9yU3R5bGVTaGVldDo6
c3R5bGVTaGVldFVSTChDU1NTdHlsZVNoZWV0KiBwYWdlU3R5bGVTaGVldCkKIEluc3BlY3RvclN0
eWxlU2hlZXQ6Okluc3BlY3RvclN0eWxlU2hlZXQoSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdl
bnQsIGNvbnN0IFN0cmluZyYgaWQsIFJlZlB0cjxDU1NTdHlsZVNoZWV0PiYmIHBhZ2VTdHlsZVNo
ZWV0LCBJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlN0eWxlU2hlZXRPcmlnaW4gb3JpZ2luLCBj
b25zdCBTdHJpbmcmIGRvY3VtZW50VVJMLCBMaXN0ZW5lciogbGlzdGVuZXIpCiAgICAgOiBtX3Bh
Z2VBZ2VudChwYWdlQWdlbnQpCiAgICAgLCBtX2lkKGlkKQotICAgICwgbV9wYWdlU3R5bGVTaGVl
dChXVEY6Om1vdmUocGFnZVN0eWxlU2hlZXQpKQorICAgICwgbV9wYWdlU3R5bGVTaGVldChXVEZN
b3ZlKHBhZ2VTdHlsZVNoZWV0KSkKICAgICAsIG1fb3JpZ2luKG9yaWdpbikKICAgICAsIG1fZG9j
dW1lbnRVUkwoZG9jdW1lbnRVUkwpCiAgICAgLCBtX2xpc3RlbmVyKGxpc3RlbmVyKQpAQCAtODAz
LDcgKzgwMyw3IEBAIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1N0eWxlU2hl
ZXRCb2R5PiBJbnNwZWN0b3JTdHlsZVNoZWV0OjpidWlsZE9iCiAgICAgaWYgKHN1Y2Nlc3MpCiAg
ICAgICAgIHJlc3VsdC0+c2V0VGV4dChzdHlsZVNoZWV0VGV4dCk7CiAKLSAgICByZXR1cm4gV1RG
Ojptb3ZlKHJlc3VsdCk7CisgICAgcmV0dXJuIFdURk1vdmUocmVzdWx0KTsKIH0KIAogUmVmUHRy
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTU3R5bGVTaGVldEhlYWRlcj4gSW5zcGVjdG9y
U3R5bGVTaGVldDo6YnVpbGRPYmplY3RGb3JTdHlsZVNoZWV0SW5mbygpCkBAIC04NzEsNyArODcx
LDcgQEAgc3RhdGljIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1NlbGVjdG9yPiBi
dWlsZE9iamVjdEZvclNlbGVjdG9ySGVscGVyKGMKICAgICAgICAgICAgIHR1cGxlLT5hZGRJdGVt
KHN0YXRpY19jYXN0PGludD4oKHNwZWNpZmljaXR5ICYgQ1NTU2VsZWN0b3I6OmlkTWFzaykgPj4g
MTYpKTsKICAgICAgICAgICAgIHR1cGxlLT5hZGRJdGVtKHN0YXRpY19jYXN0PGludD4oKHNwZWNp
ZmljaXR5ICYgQ1NTU2VsZWN0b3I6OmNsYXNzTWFzaykgPj4gOCkpOwogICAgICAgICAgICAgdHVw
bGUtPmFkZEl0ZW0oc3RhdGljX2Nhc3Q8aW50PihzcGVjaWZpY2l0eSAmIENTU1NlbGVjdG9yOjpl
bGVtZW50TWFzaykpOwotICAgICAgICAgICAgaW5zcGVjdG9yU2VsZWN0b3ItPnNldFNwZWNpZmlj
aXR5KFdURjo6bW92ZSh0dXBsZSkpOworICAgICAgICAgICAgaW5zcGVjdG9yU2VsZWN0b3ItPnNl
dFNwZWNpZmljaXR5KFdURk1vdmUodHVwbGUpKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtOTYx
LDkgKzk2MSw5IEBAIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1J1bGU+IElu
c3BlY3RvclN0eWxlU2hlZXQ6OmJ1aWxkT2JqZWN0Rm9yUnVsCiAKICAgICBmaWxsTWVkaWFMaXN0
Q2hhaW4ocnVsZSwgbWVkaWFBcnJheS5nZXQoKSk7CiAgICAgaWYgKG1lZGlhQXJyYXktPmxlbmd0
aCgpKQotICAgICAgICByZXN1bHQtPnNldE1lZGlhKFdURjo6bW92ZShtZWRpYUFycmF5KSk7Cisg
ICAgICAgIHJlc3VsdC0+c2V0TWVkaWEoV1RGTW92ZShtZWRpYUFycmF5KSk7CiAKLSAgICByZXR1
cm4gV1RGOjptb3ZlKHJlc3VsdCk7CisgICAgcmV0dXJuIFdURk1vdmUocmVzdWx0KTsKIH0KIAog
UmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTU3R5bGU+IEluc3BlY3RvclN0eWxl
U2hlZXQ6OmJ1aWxkT2JqZWN0Rm9yU3R5bGUoQ1NTU3R5bGVEZWNsYXJhdGlvbiogc3R5bGUpCkBA
IC0xMTI5LDcgKzExMjksNyBAQCBib29sIEluc3BlY3RvclN0eWxlU2hlZXQ6OmVuc3VyZVNvdXJj
ZURhdGEoKQogICAgIFJlZlB0cjxTdHlsZVNoZWV0Q29udGVudHM+IG5ld1N0eWxlU2hlZXQgPSBT
dHlsZVNoZWV0Q29udGVudHM6OmNyZWF0ZSgpOwogICAgIGF1dG8gcnVsZVNvdXJjZURhdGFSZXN1
bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPFJ1bGVTb3VyY2VEYXRhTGlzdD4oKTsKICAgICBjcmVhdGVD
U1NQYXJzZXIobV9wYWdlU3R5bGVTaGVldC0+b3duZXJEb2N1bWVudCgpKS0+cGFyc2VTaGVldChu
ZXdTdHlsZVNoZWV0LmdldCgpLCBtX3BhcnNlZFN0eWxlU2hlZXQtPnRleHQoKSwgVGV4dFBvc2l0
aW9uKCksIHJ1bGVTb3VyY2VEYXRhUmVzdWx0LmdldCgpLCBmYWxzZSk7Ci0gICAgbV9wYXJzZWRT
dHlsZVNoZWV0LT5zZXRTb3VyY2VEYXRhKFdURjo6bW92ZShydWxlU291cmNlRGF0YVJlc3VsdCkp
OworICAgIG1fcGFyc2VkU3R5bGVTaGVldC0+c2V0U291cmNlRGF0YShXVEZNb3ZlKHJ1bGVTb3Vy
Y2VEYXRhUmVzdWx0KSk7CiAgICAgcmV0dXJuIG1fcGFyc2VkU3R5bGVTaGVldC0+aGFzU291cmNl
RGF0YSgpOwogfQogCkBAIC0xMjM1LDcgKzEyMzUsNyBAQCBSZWY8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NSdWxlPj4gSW5zcGVjdG9yU3R5
bAogCiAgICAgUmVmUHRyPENTU1J1bGVMaXN0PiByZWZSdWxlTGlzdCA9IHJ1bGVMaXN0OwogICAg
IENTU1N0eWxlUnVsZVZlY3RvciBydWxlczsKLSAgICBjb2xsZWN0RmxhdFJ1bGVzKFdURjo6bW92
ZShyZWZSdWxlTGlzdCksICZydWxlcyk7CisgICAgY29sbGVjdEZsYXRSdWxlcyhXVEZNb3ZlKHJl
ZlJ1bGVMaXN0KSwgJnJ1bGVzKTsKIAogICAgIGZvciAoYXV0byYgcnVsZSA6IHJ1bGVzKQogICAg
ICAgICByZXN1bHQtPmFkZEl0ZW0oYnVpbGRPYmplY3RGb3JSdWxlKHJ1bGUuZ2V0KCksIG51bGxw
dHIpKTsKQEAgLTEyNTYsMTkgKzEyNTYsMTkgQEAgdm9pZCBJbnNwZWN0b3JTdHlsZVNoZWV0Ojpj
b2xsZWN0RmxhdFJ1bGVzKFJlZlB0cjxDU1NSdWxlTGlzdD4mJiBydWxlTGlzdCwgQ1NTU3QKICAg
ICAgICAgZWxzZSB7CiAgICAgICAgICAgICBSZWZQdHI8Q1NTUnVsZUxpc3Q+IGNoaWxkUnVsZUxp
c3QgPSBhc0NTU1J1bGVMaXN0KHJ1bGUpOwogICAgICAgICAgICAgaWYgKGNoaWxkUnVsZUxpc3Qp
Ci0gICAgICAgICAgICAgICAgY29sbGVjdEZsYXRSdWxlcyhXVEY6Om1vdmUoY2hpbGRSdWxlTGlz
dCksIHJlc3VsdCk7CisgICAgICAgICAgICAgICAgY29sbGVjdEZsYXRSdWxlcyhXVEZNb3ZlKGNo
aWxkUnVsZUxpc3QpLCByZXN1bHQpOwogICAgICAgICB9CiAgICAgfQogfQogCiBSZWY8SW5zcGVj
dG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlPiBJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5l
U3R5bGU6OmNyZWF0ZShJbnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCwgY29uc3QgU3RyaW5n
JiBpZCwgUmVmUHRyPEVsZW1lbnQ+JiYgZWxlbWVudCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NT
OjpTdHlsZVNoZWV0T3JpZ2luIG9yaWdpbiwgTGlzdGVuZXIqIGxpc3RlbmVyKQogewotICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IEluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZShwYWdl
QWdlbnQsIGlkLCBXVEY6Om1vdmUoZWxlbWVudCksIG9yaWdpbiwgbGlzdGVuZXIpKTsKKyAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGUocGFn
ZUFnZW50LCBpZCwgV1RGTW92ZShlbGVtZW50KSwgb3JpZ2luLCBsaXN0ZW5lcikpOwogfQogCiBJ
bnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGU6Okluc3BlY3RvclN0eWxlU2hlZXRGb3JJ
bmxpbmVTdHlsZShJbnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCwgY29uc3QgU3RyaW5nJiBp
ZCwgUmVmUHRyPEVsZW1lbnQ+JiYgZWxlbWVudCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpT
dHlsZVNoZWV0T3JpZ2luIG9yaWdpbiwgTGlzdGVuZXIqIGxpc3RlbmVyKQogICAgIDogSW5zcGVj
dG9yU3R5bGVTaGVldChwYWdlQWdlbnQsIGlkLCBudWxscHRyLCBvcmlnaW4sIFN0cmluZygpLCBs
aXN0ZW5lcikKLSAgICAsIG1fZWxlbWVudChXVEY6Om1vdmUoZWxlbWVudCkpCisgICAgLCBtX2Vs
ZW1lbnQoV1RGTW92ZShlbGVtZW50KSkKICAgICAsIG1fcnVsZVNvdXJjZURhdGEobnVsbHB0cikK
ICAgICAsIG1faXNTdHlsZVRleHRWYWxpZChmYWxzZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcAppbmRleCA1MmU1YTZlMTll
ZWI5NGQ2MWE4YmFkM2YwZWVmMDBkYjU2ODYwMjExLi45ZTQzOTNlZWQ2NDI4NzA5ZWY5N2U3ZDll
ZDAwY2JjMjYwYmMwNDQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yVGltZWxpbmVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwCkBAIC0yMDUsNyArMjA1LDcgQEAgZG91YmxlIEluc3Bl
Y3RvclRpbWVsaW5lQWdlbnQ6OnRpbWVzdGFtcCgpCiAKIHN0YXRpYyBpbmxpbmUgdm9pZCBzdGFy
dFByb2ZpbGluZyhKU0M6OkV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiB0aXRsZSwgUmVm
UHRyPFN0b3B3YXRjaD4mJiBzdG9wd2F0Y2gpCiB7Ci0gICAgSlNDOjpMZWdhY3lQcm9maWxlcjo6
cHJvZmlsZXIoKS0+c3RhcnRQcm9maWxpbmcoZXhlYywgdGl0bGUsIFdURjo6bW92ZShzdG9wd2F0
Y2gpKTsKKyAgICBKU0M6OkxlZ2FjeVByb2ZpbGVyOjpwcm9maWxlcigpLT5zdGFydFByb2ZpbGlu
ZyhleGVjLCB0aXRsZSwgV1RGTW92ZShzdG9wd2F0Y2gpKTsKIH0KIAogc3RhdGljIGlubGluZSBS
ZWZQdHI8SlNDOjpQcm9maWxlPiBzdG9wUHJvZmlsaW5nKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBj
b25zdCBTdHJpbmcmIHRpdGxlKQpAQCAtMjE1LDcgKzIxNSw3IEBAIHN0YXRpYyBpbmxpbmUgUmVm
UHRyPEpTQzo6UHJvZmlsZT4gc3RvcFByb2ZpbGluZyhKU0M6OkV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgU3RyCiAKIHN0YXRpYyBpbmxpbmUgdm9pZCBzdGFydFByb2ZpbGluZyhGcmFtZSogZnJhbWUs
IGNvbnN0IFN0cmluZyYgdGl0bGUsIFJlZlB0cjxTdG9wd2F0Y2g+JiYgc3RvcHdhdGNoKQogewot
ICAgIHN0YXJ0UHJvZmlsaW5nKHRvSlNET01XaW5kb3coZnJhbWUsIGRlYnVnZ2VyV29ybGQoKSkt
Pmdsb2JhbEV4ZWMoKSwgdGl0bGUsIFdURjo6bW92ZShzdG9wd2F0Y2gpKTsKKyAgICBzdGFydFBy
b2ZpbGluZyh0b0pTRE9NV2luZG93KGZyYW1lLCBkZWJ1Z2dlcldvcmxkKCkpLT5nbG9iYWxFeGVj
KCksIHRpdGxlLCBXVEZNb3ZlKHN0b3B3YXRjaCkpOwogfQogCiBzdGF0aWMgaW5saW5lIFBhc3NS
ZWZQdHI8SlNDOjpQcm9maWxlPiBzdG9wUHJvZmlsaW5nKEZyYW1lKiBmcmFtZSwgY29uc3QgU3Ry
aW5nJiB0aXRsZSkKQEAgLTU0NywxNSArNTQ3LDE1IEBAIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVB
Z2VudDo6YWRkUmVjb3JkVG9UaW1lbGluZShSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYmIHJlY29y
CiAgICAgcmVjb3JkLT5zZXRTdHJpbmcoInR5cGUiLCBJbnNwZWN0b3I6OlByb3RvY29sOjpnZXRF
bnVtQ29uc3RhbnRWYWx1ZSh0b1Byb3RvY29sKHR5cGUpKSk7CiAKICAgICBpZiAobV9yZWNvcmRT
dGFjay5pc0VtcHR5KCkpIHsKLSAgICAgICAgYXV0byByZWNvcmRPYmplY3QgPSBCaW5kaW5nVHJh
aXRzPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlRpbWVsaW5lOjpUaW1lbGluZUV2ZW50Pjo6cnVudGlt
ZUNhc3QoV1RGOjptb3ZlKHJlY29yZCkpOwotICAgICAgICBzZW5kRXZlbnQoV1RGOjptb3ZlKHJl
Y29yZE9iamVjdCkpOworICAgICAgICBhdXRvIHJlY29yZE9iamVjdCA9IEJpbmRpbmdUcmFpdHM8
SW5zcGVjdG9yOjpQcm90b2NvbDo6VGltZWxpbmU6OlRpbWVsaW5lRXZlbnQ+OjpydW50aW1lQ2Fz
dChXVEZNb3ZlKHJlY29yZCkpOworICAgICAgICBzZW5kRXZlbnQoV1RGTW92ZShyZWNvcmRPYmpl
Y3QpKTsKICAgICB9IGVsc2UgewogICAgICAgICBjb25zdCBUaW1lbGluZVJlY29yZEVudHJ5JiBw
YXJlbnQgPSBtX3JlY29yZFN0YWNrLmxhc3QoKTsKICAgICAgICAgLy8gTmVzdGVkIHBhaW50IHJl
Y29yZHMgYXJlIGFuIGltcGxlbWVudGF0aW9uIGRldGFpbCBhbmQgYWRkIG5vIGluZm9ybWF0aW9u
IG5vdCBhbHJlYWR5IGNvbnRhaW5lZCBpbiB0aGUgcGFyZW50LgogICAgICAgICBpZiAodHlwZSA9
PSBUaW1lbGluZVJlY29yZFR5cGU6OlBhaW50ICYmIHBhcmVudC50eXBlID09IHR5cGUpCiAgICAg
ICAgICAgICByZXR1cm47CiAKLSAgICAgICAgcGFyZW50LmNoaWxkcmVuLT5wdXNoT2JqZWN0KFdU
Rjo6bW92ZShyZWNvcmQpKTsKKyAgICAgICAgcGFyZW50LmNoaWxkcmVuLT5wdXNoT2JqZWN0KFdU
Rk1vdmUocmVjb3JkKSk7CiAgICAgfQogfQogCkBAIC02MDUsMjggKzYwNSwyOCBAQCBJbnNwZWN0
b3JUaW1lbGluZUFnZW50OjpJbnNwZWN0b3JUaW1lbGluZUFnZW50KFdlYkFnZW50Q29udGV4dCYg
Y29udGV4dCwgSW5zcGVjdAogdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjphcHBlbmRSZWNv
cmQoUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mJiBkYXRhLCBUaW1lbGluZVJlY29yZFR5cGUgdHlw
ZSwgYm9vbCBjYXB0dXJlQ2FsbFN0YWNrLCBGcmFtZSogZnJhbWUpCiB7CiAgICAgUmVmPEluc3Bl
Y3Rvck9iamVjdD4gcmVjb3JkID0gVGltZWxpbmVSZWNvcmRGYWN0b3J5OjpjcmVhdGVHZW5lcmlj
UmVjb3JkKHRpbWVzdGFtcCgpLCBjYXB0dXJlQ2FsbFN0YWNrID8gbV9tYXhDYWxsU3RhY2tEZXB0
aCA6IDApOwotICAgIHJlY29yZC0+c2V0T2JqZWN0KCJkYXRhIiwgV1RGOjptb3ZlKGRhdGEpKTsK
KyAgICByZWNvcmQtPnNldE9iamVjdCgiZGF0YSIsIFdURk1vdmUoZGF0YSkpOwogICAgIHNldEZy
YW1lSWRlbnRpZmllcigmcmVjb3JkLmdldCgpLCBmcmFtZSk7Ci0gICAgYWRkUmVjb3JkVG9UaW1l
bGluZShXVEY6Om1vdmUocmVjb3JkKSwgdHlwZSk7CisgICAgYWRkUmVjb3JkVG9UaW1lbGluZShX
VEZNb3ZlKHJlY29yZCksIHR5cGUpOwogfQogCiB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6
OnNlbmRFdmVudChSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYmIGV2ZW50KQogewogICAgIC8vIEZJ
WE1FOiBydW50aW1lQ2FzdCBpcyBhIGhhY2suIFdlIGRvIGl0IGJlY2F1c2Ugd2UgY2FuJ3QgYnVp
bGQgVGltZWxpbmVFdmVudCBkaXJlY3RseSBub3cuCi0gICAgYXV0byByZWNvcmRDaGVja2VkID0g
QmluZGluZ1RyYWl0czxJbnNwZWN0b3I6OlByb3RvY29sOjpUaW1lbGluZTo6VGltZWxpbmVFdmVu
dD46OnJ1bnRpbWVDYXN0KFdURjo6bW92ZShldmVudCkpOwotICAgIG1fZnJvbnRlbmREaXNwYXRj
aGVyLT5ldmVudFJlY29yZGVkKFdURjo6bW92ZShyZWNvcmRDaGVja2VkKSk7CisgICAgYXV0byBy
ZWNvcmRDaGVja2VkID0gQmluZGluZ1RyYWl0czxJbnNwZWN0b3I6OlByb3RvY29sOjpUaW1lbGlu
ZTo6VGltZWxpbmVFdmVudD46OnJ1bnRpbWVDYXN0KFdURk1vdmUoZXZlbnQpKTsKKyAgICBtX2Zy
b250ZW5kRGlzcGF0Y2hlci0+ZXZlbnRSZWNvcmRlZChXVEZNb3ZlKHJlY29yZENoZWNrZWQpKTsK
IH0KIAogSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6VGltZWxpbmVSZWNvcmRFbnRyeSBJbnNwZWN0
b3JUaW1lbGluZUFnZW50OjpjcmVhdGVSZWNvcmRFbnRyeShSZWZQdHI8SW5zcGVjdG9yT2JqZWN0
PiYmIGRhdGEsIFRpbWVsaW5lUmVjb3JkVHlwZSB0eXBlLCBib29sIGNhcHR1cmVDYWxsU3RhY2ss
IEZyYW1lKiBmcmFtZSkKIHsKICAgICBSZWY8SW5zcGVjdG9yT2JqZWN0PiByZWNvcmQgPSBUaW1l
bGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZUdlbmVyaWNSZWNvcmQodGltZXN0YW1wKCksIGNhcHR1
cmVDYWxsU3RhY2sgPyBtX21heENhbGxTdGFja0RlcHRoIDogMCk7CiAgICAgc2V0RnJhbWVJZGVu
dGlmaWVyKCZyZWNvcmQuZ2V0KCksIGZyYW1lKTsKLSAgICByZXR1cm4gVGltZWxpbmVSZWNvcmRF
bnRyeShXVEY6Om1vdmUocmVjb3JkKSwgV1RGOjptb3ZlKGRhdGEpLCBJbnNwZWN0b3JBcnJheTo6
Y3JlYXRlKCksIHR5cGUpOworICAgIHJldHVybiBUaW1lbGluZVJlY29yZEVudHJ5KFdURk1vdmUo
cmVjb3JkKSwgV1RGTW92ZShkYXRhKSwgSW5zcGVjdG9yQXJyYXk6OmNyZWF0ZSgpLCB0eXBlKTsK
IH0KIAogdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpwdXNoQ3VycmVudFJlY29yZChSZWZQ
dHI8SW5zcGVjdG9yT2JqZWN0PiYmIGRhdGEsIFRpbWVsaW5lUmVjb3JkVHlwZSB0eXBlLCBib29s
IGNhcHR1cmVDYWxsU3RhY2ssIEZyYW1lKiBmcmFtZSkKIHsKLSAgICBwdXNoQ3VycmVudFJlY29y
ZChjcmVhdGVSZWNvcmRFbnRyeShXVEY6Om1vdmUoZGF0YSksIHR5cGUsIGNhcHR1cmVDYWxsU3Rh
Y2ssIGZyYW1lKSk7CisgICAgcHVzaEN1cnJlbnRSZWNvcmQoY3JlYXRlUmVjb3JkRW50cnkoV1RG
TW92ZShkYXRhKSwgdHlwZSwgY2FwdHVyZUNhbGxTdGFjaywgZnJhbWUpKTsKIH0KIAogdm9pZCBJ
bnNwZWN0b3JUaW1lbGluZUFnZW50OjpjbGVhclJlY29yZFN0YWNrKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oCmluZGV4IDIzYTZmNjJk
ZWNkNjc5MWY0MDk0MGNlNjZjMDIzYjQ1MTI4NTU3ODEuLmNmNTFhOTU1MTE0YzA0YmJhNTA1MTA0
ZDRhMzk2ZWU5MTc3NTJlZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JUaW1lbGluZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvclRpbWVsaW5lQWdlbnQuaApAQCAtMTU2LDkgKzE1Niw5IEBAIHByaXZhdGU6CiAgICAg
ICAgIFRpbWVsaW5lUmVjb3JkRW50cnkoKQogICAgICAgICAgICAgOiB0eXBlKFRpbWVsaW5lUmVj
b3JkVHlwZTo6RXZlbnREaXNwYXRjaCkgeyB9CiAgICAgICAgIFRpbWVsaW5lUmVjb3JkRW50cnko
UmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYmIHJlY29yZCwgUmVmUHRyPEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYmIGRhdGEsIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rv
ckFycmF5PiYmIGNoaWxkcmVuLCBUaW1lbGluZVJlY29yZFR5cGUgdHlwZSkKLSAgICAgICAgICAg
IDogcmVjb3JkKFdURjo6bW92ZShyZWNvcmQpKQotICAgICAgICAgICAgLCBkYXRhKFdURjo6bW92
ZShkYXRhKSkKLSAgICAgICAgICAgICwgY2hpbGRyZW4oV1RGOjptb3ZlKGNoaWxkcmVuKSkKKyAg
ICAgICAgICAgIDogcmVjb3JkKFdURk1vdmUocmVjb3JkKSkKKyAgICAgICAgICAgICwgZGF0YShX
VEZNb3ZlKGRhdGEpKQorICAgICAgICAgICAgLCBjaGlsZHJlbihXVEZNb3ZlKGNoaWxkcmVuKSkK
ICAgICAgICAgICAgICwgdHlwZSh0eXBlKQogICAgICAgICB7CiAgICAgICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCmluZGV4IGJj
ZTc5M2NjOWY1YzBlMjhjZjczZDlhZTk5Y2Q3NjBiYjA1NWFiYzAuLjE1ZDQ4Mzk5Y2VhNjViMGUy
NzRiNjQwMzAzYzMzOGFmNzkzZDViNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcApAQCAtMjQyLDcgKzI0Miw3IEBAIHZvaWQgTmV0
d29ya1Jlc291cmNlc0RhdGE6OmFkZFJlc291cmNlU2hhcmVkQnVmZmVyKGNvbnN0IFN0cmluZyYg
cmVxdWVzdElkLCBSZWZQCiAgICAgUmVzb3VyY2VEYXRhKiByZXNvdXJjZURhdGEgPSByZXNvdXJj
ZURhdGFGb3JSZXF1ZXN0SWQocmVxdWVzdElkKTsKICAgICBpZiAoIXJlc291cmNlRGF0YSkKICAg
ICAgICAgcmV0dXJuOwotICAgIHJlc291cmNlRGF0YS0+c2V0QnVmZmVyKFdURjo6bW92ZShidWZm
ZXIpKTsKKyAgICByZXNvdXJjZURhdGEtPnNldEJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpOwogICAg
IHJlc291cmNlRGF0YS0+c2V0VGV4dEVuY29kaW5nTmFtZSh0ZXh0RW5jb2RpbmdOYW1lKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNE
YXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaApp
bmRleCBhNjNiODZiYjFmNTkwMzljNzFmZDBlYmYwN2ViMjRmYzlhODhhMzEwLi40OWRmYmEzM2Zi
ODc5NWYwZjYzM2MxYTI0MGNmYWYzYjllZjY5Y2NjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaApAQCAtNzksMTAgKzc5LDEwIEBAIHB1Ymxp
YzoKICAgICAgICAgdm9pZCBzZXRUZXh0RW5jb2RpbmdOYW1lKGNvbnN0IFN0cmluZyYgdGV4dEVu
Y29kaW5nTmFtZSkgeyBtX3RleHRFbmNvZGluZ05hbWUgPSB0ZXh0RW5jb2RpbmdOYW1lOyB9CiAK
ICAgICAgICAgUmVmUHRyPFRleHRSZXNvdXJjZURlY29kZXI+IGRlY29kZXIoKSBjb25zdCB7IHJl
dHVybiBtX2RlY29kZXIuY29weVJlZigpOyB9Ci0gICAgICAgIHZvaWQgc2V0RGVjb2RlcihSZWZQ
dHI8VGV4dFJlc291cmNlRGVjb2Rlcj4mJiBkZWNvZGVyKSB7IG1fZGVjb2RlciA9IFdURjo6bW92
ZShkZWNvZGVyKTsgfQorICAgICAgICB2b2lkIHNldERlY29kZXIoUmVmUHRyPFRleHRSZXNvdXJj
ZURlY29kZXI+JiYgZGVjb2RlcikgeyBtX2RlY29kZXIgPSBXVEZNb3ZlKGRlY29kZXIpOyB9CiAK
ICAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9i
dWZmZXIuY29weVJlZigpOyB9Ci0gICAgICAgIHZvaWQgc2V0QnVmZmVyKFJlZlB0cjxTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyKSB7IG1fYnVmZmVyID0gV1RGOjptb3ZlKGJ1ZmZlcik7IH0KKyAgICAg
ICAgdm9pZCBzZXRCdWZmZXIoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIHsgbV9idWZm
ZXIgPSBXVEZNb3ZlKGJ1ZmZlcik7IH0KIAogICAgICAgICBDYWNoZWRSZXNvdXJjZSogY2FjaGVk
UmVzb3VyY2UoKSBjb25zdCB7IHJldHVybiBtX2NhY2hlZFJlc291cmNlOyB9CiAgICAgICAgIHZv
aWQgc2V0Q2FjaGVkUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UqIGNhY2hlZFJlc291cmNlKSB7IG1f
Y2FjaGVkUmVzb3VyY2UgPSBjYWNoZWRSZXNvdXJjZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL1RpbWVsaW5lUmVjb3JkRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvVGltZWxpbmVSZWNvcmRGYWN0b3J5LmNwcAppbmRleCA4OTdiMTFhOGNjZjcw
OTFlZmIzNjEzMjIyOTc5OWNkODE1Zjc5Y2IyLi41YmRiY2ViZjU4MDA5NzJhMzAxZjRkMThlMGI2
OTAzOTY2N2E4MjA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvVGltZWxp
bmVSZWNvcmRGYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvVGltZWxp
bmVSZWNvcmRGYWN0b3J5LmNwcApAQCAtMTg5LDcgKzE4OSw3IEBAIHN0YXRpYyBSZWY8UHJvdG9j
b2w6OlRpbWVsaW5lOjpDUFVQcm9maWxlTm9kZT4gYnVpbGRJbnNwZWN0b3JPYmplY3QoY29uc3Qg
SlNDOjpQCiAgICAgICAgIGF1dG8gY2hpbGRyZW4gPSBQcm90b2NvbDo6QXJyYXk8UHJvdG9jb2w6
OlRpbWVsaW5lOjpDUFVQcm9maWxlTm9kZT46OmNyZWF0ZSgpOwogICAgICAgICBmb3IgKFJlZlB0
cjxKU0M6OlByb2ZpbGVOb2RlPiBwcm9maWxlTm9kZSA6IG5vZGUtPmNoaWxkcmVuKCkpCiAgICAg
ICAgICAgICBjaGlsZHJlbi0+YWRkSXRlbShidWlsZEluc3BlY3Rvck9iamVjdChwcm9maWxlTm9k
ZS5nZXQoKSkpOwotICAgICAgICByZXN1bHQtPnNldENoaWxkcmVuKFdURjo6bW92ZShjaGlsZHJl
bikpOworICAgICAgICByZXN1bHQtPnNldENoaWxkcmVuKFdURk1vdmUoY2hpbGRyZW4pKTsKICAg
ICB9CiAKICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMjAyLDcgKzIwMiw3IEBAIHN0YXRpYyBSZWY8
UHJvdG9jb2w6OlRpbWVsaW5lOjpDUFVQcm9maWxlPiBidWlsZFByb2ZpbGVJbnNwZWN0b3JPYmpl
Y3QoY29uc3QgSlNDCiAgICAgICAgIHJvb3ROb2Rlcy0+YWRkSXRlbShidWlsZEluc3BlY3Rvck9i
amVjdChwcm9maWxlTm9kZS5nZXQoKSkpOwogCiAgICAgcmV0dXJuIFByb3RvY29sOjpUaW1lbGlu
ZTo6Q1BVUHJvZmlsZTo6Y3JlYXRlKCkKLSAgICAgICAgLnNldFJvb3ROb2RlcyhXVEY6Om1vdmUo
cm9vdE5vZGVzKSkKKyAgICAgICAgLnNldFJvb3ROb2RlcyhXVEZNb3ZlKHJvb3ROb2RlcykpCiAg
ICAgICAgIC5yZWxlYXNlKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9XZWJJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL1dlYkluamVjdGVkU2NyaXB0TWFuYWdlci5jcHAKaW5kZXggN2JmOWI3ZWEwZGRhZDFmYTAw
ZDA1YTkyOGIyNjgwZWRhNDFmNDBlNS4uN2E5OTZkY2IwYjBjN2RmNGY4ZTZmOTM5MWVkYWNhZmFh
MzQ4ZmQ4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dlYkluamVjdGVk
U2NyaXB0TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dlYkluamVj
dGVkU2NyaXB0TWFuYWdlci5jcHAKQEAgLTM0LDcgKzM0LDcgQEAgdXNpbmcgbmFtZXNwYWNlIElu
c3BlY3RvcjsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV2ViSW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
OjpXZWJJbmplY3RlZFNjcmlwdE1hbmFnZXIoSW5zcGVjdG9yRW52aXJvbm1lbnQmIGVudmlyb25t
ZW50LCBSZWZQdHI8SW5qZWN0ZWRTY3JpcHRIb3N0PiYmIGhvc3QpCi0gICAgOiBJbmplY3RlZFNj
cmlwdE1hbmFnZXIoZW52aXJvbm1lbnQsIFdURjo6bW92ZShob3N0KSkKKyAgICA6IEluamVjdGVk
U2NyaXB0TWFuYWdlcihlbnZpcm9ubWVudCwgV1RGTW92ZShob3N0KSkKICAgICAsIG1fY29tbWFu
ZExpbmVBUElIb3N0KENvbW1hbmRMaW5lQVBJSG9zdDo6Y3JlYXRlKCkpCiB7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvQ29udGVudEZpbHRlci5jcHAKaW5kZXggYjMyMTY4ODk2ODlhMTJmZDVhNGYx
N2RhN2IwZjdhNzRlY2NlNmNmYS4uYjhkYzA3MjRkZjBmMTQ5MmRkNzc3Zjg4NTg4NDViN2Y0NmNk
YjM3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0NvbnRlbnRGaWx0ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db250ZW50RmlsdGVyLmNwcApAQCAtNjgsMTcg
KzY4LDE3IEBAIHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50RmlsdGVyPiBDb250ZW50RmlsdGVyOjpj
cmVhdGVJZkVuYWJsZWQoRG9jdW1lbnRMb2FkZXImIGRvCiAKICAgICAgICAgYXV0byBmaWx0ZXIg
PSB0eXBlLmNyZWF0ZSgpOwogICAgICAgICBBU1NFUlQoZmlsdGVyKTsKLSAgICAgICAgZmlsdGVy
cy5hcHBlbmQoV1RGOjptb3ZlKGZpbHRlcikpOworICAgICAgICBmaWx0ZXJzLmFwcGVuZChXVEZN
b3ZlKGZpbHRlcikpOwogICAgIH0KIAogICAgIGlmIChmaWx0ZXJzLmlzRW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDb250ZW50
RmlsdGVyPihXVEY6Om1vdmUoZmlsdGVycyksIGRvY3VtZW50TG9hZGVyKTsKKyAgICByZXR1cm4g
c3RkOjptYWtlX3VuaXF1ZTxDb250ZW50RmlsdGVyPihXVEZNb3ZlKGZpbHRlcnMpLCBkb2N1bWVu
dExvYWRlcik7CiB9CiAKIENvbnRlbnRGaWx0ZXI6OkNvbnRlbnRGaWx0ZXIoQ29udGFpbmVyIGNv
bnRlbnRGaWx0ZXJzLCBEb2N1bWVudExvYWRlciYgZG9jdW1lbnRMb2FkZXIpCi0gICAgOiBtX2Nv
bnRlbnRGaWx0ZXJzIHsgV1RGOjptb3ZlKGNvbnRlbnRGaWx0ZXJzKSB9CisgICAgOiBtX2NvbnRl
bnRGaWx0ZXJzIHsgV1RGTW92ZShjb250ZW50RmlsdGVycykgfQogICAgICwgbV9kb2N1bWVudExv
YWRlciB7IGRvY3VtZW50TG9hZGVyIH0KIHsKICAgICBMT0coQ29udGVudEZpbHRlcmluZywgIkNy
ZWF0aW5nIENvbnRlbnRGaWx0ZXIgd2l0aCAlenUgcGxhdGZvcm0gY29udGVudCBmaWx0ZXIocyku
XG4iLCBtX2NvbnRlbnRGaWx0ZXJzLnNpemUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZS5jcHAKaW5kZXggYTBm
MjhkYzgwNTg0ZDZmN2ZmZmQwODQzNTUyNjk2OTEyZmEwY2MxYS4uOWIyNzdiMDAwN2Q0YjBkNmQ0
ZDhlNGYyMDNkNzA1ZTBmZThjMDMxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0Nyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Dcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlLmNwcApAQCAtMTYyLDcgKzE2
Miw3IEBAIENyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGUmIENyb3NzT3JpZ2luUHJlZmxp
Z2h0UmVzdWx0Q2FjaGU6OnNpbmdsZXRvbigpCiB2b2lkIENyb3NzT3JpZ2luUHJlZmxpZ2h0UmVz
dWx0Q2FjaGU6OmFwcGVuZEVudHJ5KGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBVUkwmIHVy
bCwgc3RkOjp1bmlxdWVfcHRyPENyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGVJdGVtPiBw
cmVmbGlnaHRSZXN1bHQpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBtX3By
ZWZsaWdodEhhc2hNYXAuc2V0KHN0ZDo6bWFrZV9wYWlyKG9yaWdpbiwgdXJsKSwgV1RGOjptb3Zl
KHByZWZsaWdodFJlc3VsdCkpOworICAgIG1fcHJlZmxpZ2h0SGFzaE1hcC5zZXQoc3RkOjptYWtl
X3BhaXIob3JpZ2luLCB1cmwpLCBXVEZNb3ZlKHByZWZsaWdodFJlc3VsdCkpOwogfQogCiBib29s
IENyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGU6OmNhblNraXBQcmVmbGlnaHQoY29uc3Qg
U3RyaW5nJiBvcmlnaW4sIGNvbnN0IFVSTCYgdXJsLCBTdG9yZWRDcmVkZW50aWFscyBpbmNsdWRl
Q3JlZGVudGlhbHMsIGNvbnN0IFN0cmluZyYgbWV0aG9kLCBjb25zdCBIVFRQSGVhZGVyTWFwJiBy
ZXF1ZXN0SGVhZGVycykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVu
dExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCmlu
ZGV4IDc5Mzc4MzA3NjI1OGU4NjM1ZGQ3NTQ1MzMxYzczN2IwZjRjNjc1NTMuLjVkOTgzNmE5OGU1
MjM3NTcwNzE0MGY2ZDlhMTc2MDlmODc5YWEwNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Rv
Y3VtZW50TG9hZGVyLmNwcApAQCAtMTEyNCw3ICsxMTI0LDcgQEAgVmVjdG9yPFJlZlB0cjxBcmNo
aXZlUmVzb3VyY2U+PiBEb2N1bWVudExvYWRlcjo6c3VicmVzb3VyY2VzKCkgY29uc3QKIAogICAg
IGZvciAoYXV0byYgY2FjaGVkUmVzb3VyY2VIYW5kbGUgOiBtX2NhY2hlZFJlc291cmNlTG9hZGVy
LT5hbGxDYWNoZWRSZXNvdXJjZXMoKS52YWx1ZXMoKSkgewogICAgICAgICBpZiAoUmVmUHRyPEFy
Y2hpdmVSZXNvdXJjZT4gc3VicmVzb3VyY2UgPSB0aGlzLT5zdWJyZXNvdXJjZShVUkwoUGFyc2Vk
VVJMU3RyaW5nLCBjYWNoZWRSZXNvdXJjZUhhbmRsZS0+dXJsKCkpKSkKLSAgICAgICAgICAgIHN1
YnJlc291cmNlcy5hcHBlbmQoV1RGOjptb3ZlKHN1YnJlc291cmNlKSk7CisgICAgICAgICAgICBz
dWJyZXNvdXJjZXMuYXBwZW5kKFdURk1vdmUoc3VicmVzb3VyY2UpKTsKICAgICB9CiAKICAgICBy
ZXR1cm4gc3VicmVzb3VyY2VzOwpAQCAtMTY1OCw3ICsxNjU4LDcgQEAgdm9pZCBEb2N1bWVudExv
YWRlcjo6aW5zdGFsbENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlcihDb250ZW50RmlsdGVyJiBj
b250ZW50RmkKICAgICAgICAgICAgICAgICBmcmFtZS0+c2NyaXB0KCkuZXhlY3V0ZVNjcmlwdChj
YXB0dXJlZFNjcmlwdC5zdHJpbmcoKSk7CiAgICAgICAgIH0pOwogICAgIH0KLSAgICBmcmFtZUxv
YWRlcigpLT5jbGllbnQoKS5jb250ZW50RmlsdGVyRGlkQmxvY2tMb2FkKFdURjo6bW92ZSh1bmJs
b2NrSGFuZGxlcikpOworICAgIGZyYW1lTG9hZGVyKCktPmNsaWVudCgpLmNvbnRlbnRGaWx0ZXJE
aWRCbG9ja0xvYWQoV1RGTW92ZSh1bmJsb2NrSGFuZGxlcikpOwogfQogCiB2b2lkIERvY3VtZW50
TG9hZGVyOjpjb250ZW50RmlsdGVyRGlkRGVjaWRlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3Vt
ZW50TG9hZGVyLmgKaW5kZXggZTViZGFjZTE3N2FlMDVmOTgwY2IyNjhjNWU1ODViYmU4ODJiZDJh
YS4uNDliZTUwNzIxZGRlMjFjYWYxZGJiMDhhYzhhZDBkNzBjOGZhNjgyMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKQEAgLTI3Myw3ICsyNzMsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIFVSTCBkb2N1bWVudFVSTCgpIGNvbnN0OwogCiAjaWYgVVNFKFFV
SUNLX0xPT0spCi0gICAgICAgIHZvaWQgc2V0UXVpY2tMb29rSGFuZGxlKHN0ZDo6dW5pcXVlX3B0
cjxRdWlja0xvb2tIYW5kbGU+IHF1aWNrTG9va0hhbmRsZSkgeyBtX3F1aWNrTG9va0hhbmRsZSA9
IFdURjo6bW92ZShxdWlja0xvb2tIYW5kbGUpOyB9CisgICAgICAgIHZvaWQgc2V0UXVpY2tMb29r
SGFuZGxlKHN0ZDo6dW5pcXVlX3B0cjxRdWlja0xvb2tIYW5kbGU+IHF1aWNrTG9va0hhbmRsZSkg
eyBtX3F1aWNrTG9va0hhbmRsZSA9IFdURk1vdmUocXVpY2tMb29rSGFuZGxlKTsgfQogICAgICAg
ICBRdWlja0xvb2tIYW5kbGUqIHF1aWNrTG9va0hhbmRsZSgpIGNvbnN0IHsgcmV0dXJuIG1fcXVp
Y2tMb29rSGFuZGxlLmdldCgpOyB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAppbmRleCAxZjYxNGViMzE3OTc5NThm
ZThhNTJlODRkZWRmMDZkNWFkNWQ4MWY0Li40NjkxNzVhYjQ5ZWVkYmU4YjA3YzM4NWQ3ZTY0MDk2
ZTEzOWUwODRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJl
YWRhYmxlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJl
YWRhYmxlTG9hZGVyLmNwcApAQCAtMTAzLDcgKzEwMyw3IEBAIHZvaWQgRG9jdW1lbnRUaHJlYWRh
YmxlTG9hZGVyOjptYWtlQ3Jvc3NPcmlnaW5BY2Nlc3NSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVx
dWVzCiAgICAgICAgIG1ha2VTaW1wbGVDcm9zc09yaWdpbkFjY2Vzc1JlcXVlc3QoKmNyb3NzT3Jp
Z2luUmVxdWVzdCk7CiAgICAgZWxzZSB7CiAgICAgICAgIG1fc2ltcGxlUmVxdWVzdCA9IGZhbHNl
OwotICAgICAgICBtX2FjdHVhbFJlcXVlc3QgPSBXVEY6Om1vdmUoY3Jvc3NPcmlnaW5SZXF1ZXN0
KTsKKyAgICAgICAgbV9hY3R1YWxSZXF1ZXN0ID0gV1RGTW92ZShjcm9zc09yaWdpblJlcXVlc3Qp
OwogCiAgICAgICAgIGlmIChDcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlOjpzaW5nbGV0
b24oKS5jYW5Ta2lwUHJlZmxpZ2h0KHNlY3VyaXR5T3JpZ2luKCktPnRvU3RyaW5nKCksIG1fYWN0
dWFsUmVxdWVzdC0+dXJsKCksIG1fb3B0aW9ucy5hbGxvd0NyZWRlbnRpYWxzKCksIG1fYWN0dWFs
UmVxdWVzdC0+aHR0cE1ldGhvZCgpLCBtX2FjdHVhbFJlcXVlc3QtPmh0dHBIZWFkZXJGaWVsZHMo
KSkpCiAgICAgICAgICAgICBwcmVmbGlnaHRTdWNjZXNzKCk7CkBAIC0yNTcsNyArMjU3LDcgQEAg
dm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25l
ZCBsb25nIGlkZW50aWZpZXIsIGNvbnMKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog
Ci0gICAgICAgIENyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGU6OnNpbmdsZXRvbigpLmFw
cGVuZEVudHJ5KHNlY3VyaXR5T3JpZ2luKCktPnRvU3RyaW5nKCksIG1fYWN0dWFsUmVxdWVzdC0+
dXJsKCksIFdURjo6bW92ZShwcmVmbGlnaHRSZXN1bHQpKTsKKyAgICAgICAgQ3Jvc3NPcmlnaW5Q
cmVmbGlnaHRSZXN1bHRDYWNoZTo6c2luZ2xldG9uKCkuYXBwZW5kRW50cnkoc2VjdXJpdHlPcmln
aW4oKS0+dG9TdHJpbmcoKSwgbV9hY3R1YWxSZXF1ZXN0LT51cmwoKSwgV1RGTW92ZShwcmVmbGln
aHRSZXN1bHQpKTsKICAgICB9IGVsc2UgewogICAgICAgICBpZiAoIW1fc2FtZU9yaWdpblJlcXVl
c3QgJiYgbV9vcHRpb25zLmNyb3NzT3JpZ2luUmVxdWVzdFBvbGljeSA9PSBVc2VBY2Nlc3NDb250
cm9sKSB7CiAgICAgICAgICAgICBpZiAoIXBhc3Nlc0FjY2Vzc0NvbnRyb2xDaGVjayhyZXNwb25z
ZSwgbV9vcHRpb25zLmFsbG93Q3JlZGVudGlhbHMoKSwgc2VjdXJpdHlPcmlnaW4oKSwgYWNjZXNz
Q29udHJvbEVycm9yRGVzY3JpcHRpb24pKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3Rv
cnlDb250cm9sbGVyLmNwcAppbmRleCA5NjZlZmNmMzJmZDFmMDkzYmMwOTI5ZWU3ODk4Mzk3NzVk
MjJiMzQzLi4wNzdmZmI0ZWNmODFkNGM3MGFlNjE5NjQ3ZGY2OTdiM2E2ZTQ0YjM2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAKQEAgLTgxMyw3ICs4MTMs
NyBAQCB2b2lkIEhpc3RvcnlDb250cm9sbGVyOjp1cGRhdGVCYWNrRm9yd2FyZExpc3RDbGlwcGVk
QXRUYXJnZXQoYm9vbCBkb0NsaXApCiAgICAgUmVmPEhpc3RvcnlJdGVtPiB0b3BJdGVtID0gZnJh
bWVMb2FkZXIuaGlzdG9yeSgpLmNyZWF0ZUl0ZW1UcmVlKG1fZnJhbWUsIGRvQ2xpcCk7CiAgICAg
TE9HKEhpc3RvcnksICJIaXN0b3J5Q29udHJvbGxlciAlcCB1cGRhdGVCYWNrRm9yd2FyZExpc3RD
bGlwcGVkQXRUYXJnZXQ6IEFkZGluZyBiYWNrZm9yd2FyZCBpdGVtICVwIGluIGZyYW1lICVwICht
YWluIGZyYW1lICVkKSAlcyIsIHRoaXMsIHRvcEl0ZW0ucHRyKCksICZtX2ZyYW1lLCBtX2ZyYW1l
LmlzTWFpbkZyYW1lKCksIG1fZnJhbWUubG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+dXJsKCku
c3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAKLSAgICBwYWdlLT5iYWNrRm9yd2FyZCgpLmFkZEl0
ZW0oV1RGOjptb3ZlKHRvcEl0ZW0pKTsKKyAgICBwYWdlLT5iYWNrRm9yd2FyZCgpLmFkZEl0ZW0o
V1RGTW92ZSh0b3BJdGVtKSk7CiB9CiAKIHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OnVwZGF0ZUN1
cnJlbnRJdGVtKCkKQEAgLTg2MCw3ICs4NjAsNyBAQCB2b2lkIEhpc3RvcnlDb250cm9sbGVyOjpw
dXNoU3RhdGUoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHN0YXRlT2JqZWN0LAog
CiAgICAgTE9HKEhpc3RvcnksICJIaXN0b3J5Q29udHJvbGxlciAlcCBwdXNoU3RhdGU6IEFkZGlu
ZyB0b3AgaXRlbSAlcCwgc2V0dGluZyB1cmwgb2YgY3VycmVudCBpdGVtICVwIHRvICVzIiwgdGhp
cywgdG9wSXRlbS5wdHIoKSwgbV9jdXJyZW50SXRlbS5nZXQoKSwgdXJsU3RyaW5nLmFzY2lpKCku
ZGF0YSgpKTsKIAotICAgIHBhZ2UtPmJhY2tGb3J3YXJkKCkuYWRkSXRlbShXVEY6Om1vdmUodG9w
SXRlbSkpOworICAgIHBhZ2UtPmJhY2tGb3J3YXJkKCkuYWRkSXRlbShXVEZNb3ZlKHRvcEl0ZW0p
KTsKIAogICAgIGlmIChtX2ZyYW1lLnBhZ2UoKS0+dXNlc0VwaGVtZXJhbFNlc3Npb24oKSkKICAg
ICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlhUmVz
b3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlhUmVzb3VyY2VMb2Fk
ZXIuY3BwCmluZGV4IGQ5MzNjZWUzZDViZjMwNjQyODUyYjFjYzFjMDI3ZWYzNDc5NDgwOTcuLjBm
Mjk2ZWQzZGNhNzc4YTExNmEzNTc4MDIxMWE1NDliNDE0YmYwYjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9NZWRpYVJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTM5LDcgKzM5LDcgQEAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogTWVkaWFSZXNvdXJjZUxvYWRlcjo6TWVkaWFSZXNvdXJjZUxv
YWRlcihEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgY3Jvc3NPcmlnaW5Nb2RlLCBz
dGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyQ2xpZW50PiBjbGllbnQp
Ci0gICAgOiBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIoV1RGOjptb3ZlKGNsaWVudCkpCisg
ICAgOiBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIoV1RGTW92ZShjbGllbnQpKQogICAgICwg
bV9kb2N1bWVudChkb2N1bWVudCkKICAgICAsIG1fY3Jvc3NPcmlnaW5Nb2RlKGNyb3NzT3JpZ2lu
TW9kZSkKICAgICAsIG1fZGlkUGFzc0FjY2Vzc0NvbnRyb2xDaGVjayhmYWxzZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmNwcAppbmRleCA5NGI4ZDhjYmM1
NTIwY2QzZGZmZGJlODY1NzhlODUzOGMyZDY0NmQzLi5jYjUzYzY5ZGNhMDMyODgzYjk0YjgxYTVm
MTE0MzdkZjcyNmMwM2IyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdh
dGlvblNjaGVkdWxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25T
Y2hlZHVsZXIuY3BwCkBAIC00OTEsNyArNDkxLDcgQEAgdm9pZCBOYXZpZ2F0aW9uU2NoZWR1bGVy
Ojp0aW1lckZpcmVkKCkKIAogICAgIFJlZjxGcmFtZT4gcHJvdGVjdChtX2ZyYW1lKTsKIAotICAg
IHN0ZDo6dW5pcXVlX3B0cjxTY2hlZHVsZWROYXZpZ2F0aW9uPiByZWRpcmVjdCA9IFdURjo6bW92
ZShtX3JlZGlyZWN0KTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U2NoZWR1bGVkTmF2aWdhdGlvbj4g
cmVkaXJlY3QgPSBXVEZNb3ZlKG1fcmVkaXJlY3QpOwogICAgIHJlZGlyZWN0LT5maXJlKG1fZnJh
bWUpOwogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZnJhbWVDbGVhcmVkU2NoZWR1bGVk
TmF2aWdhdGlvbihtX2ZyYW1lKTsKIH0KQEAgLTUxMiw3ICs1MTIsNyBAQCB2b2lkIE5hdmlnYXRp
b25TY2hlZHVsZXI6OnNjaGVkdWxlKHN0ZDo6dW5pcXVlX3B0cjxTY2hlZHVsZWROYXZpZ2F0aW9u
PiByZWRpcmVjdAogICAgIH0KIAogICAgIGNhbmNlbCgpOwotICAgIG1fcmVkaXJlY3QgPSBXVEY6
Om1vdmUocmVkaXJlY3QpOworICAgIG1fcmVkaXJlY3QgPSBXVEZNb3ZlKHJlZGlyZWN0KTsKIAog
ICAgIGlmICghbV9mcmFtZS5sb2FkZXIoKS5pc0NvbXBsZXRlKCkgJiYgbV9yZWRpcmVjdC0+aXNM
b2NhdGlvbkNoYW5nZSgpKQogICAgICAgICBtX2ZyYW1lLmxvYWRlcigpLmNvbXBsZXRlZCgpOwpA
QCAtNTQ2LDcgKzU0Niw3IEBAIHZvaWQgTmF2aWdhdGlvblNjaGVkdWxlcjo6Y2FuY2VsKGJvb2wg
bmV3TG9hZEluUHJvZ3Jlc3MpCiAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZnJh
bWVDbGVhcmVkU2NoZWR1bGVkTmF2aWdhdGlvbihtX2ZyYW1lKTsKICAgICBtX3RpbWVyLnN0b3Ao
KTsKIAotICAgIGlmIChzdGQ6OnVuaXF1ZV9wdHI8U2NoZWR1bGVkTmF2aWdhdGlvbj4gcmVkaXJl
Y3QgPSBXVEY6Om1vdmUobV9yZWRpcmVjdCkpCisgICAgaWYgKHN0ZDo6dW5pcXVlX3B0cjxTY2hl
ZHVsZWROYXZpZ2F0aW9uPiByZWRpcmVjdCA9IFdURk1vdmUobV9yZWRpcmVjdCkpCiAgICAgICAg
IHJlZGlyZWN0LT5kaWRTdG9wVGltZXIobV9mcmFtZSwgbmV3TG9hZEluUHJvZ3Jlc3MpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1M
b2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9h
ZGVyLmNwcAppbmRleCBlNWI1MTNjNWI5OGUxM2NjN2E5Nzc0NjE1NjgwYzRjN2MyNzIxMzk5Li5k
MzBkMzY5NjA4Y2Q2MGQ3OGZiZjU2NmYzNjEzMzFkZmZmNTBiNDdlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5jcHAKQEAgLTky
LDExICs5MiwxMSBAQCB2b2lkIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyOjp3aWxsU2VuZFJl
cXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29ucwogewogICAgIFJlZlB0cjxOZXRz
Y2FwZVBsdWdJblN0cmVhbUxvYWRlcj4gcHJvdGVjdCh0aGlzKTsKIAotICAgIG1fY2xpZW50LT53
aWxsU2VuZFJlcXVlc3QodGhpcywgV1RGOjptb3ZlKHJlcXVlc3QpLCByZWRpcmVjdFJlc3BvbnNl
LCBbcHJvdGVjdCwgcmVkaXJlY3RSZXNwb25zZSwgY2FsbGJhY2tdKFJlc291cmNlUmVxdWVzdCBy
ZXF1ZXN0KSB7CisgICAgbV9jbGllbnQtPndpbGxTZW5kUmVxdWVzdCh0aGlzLCBXVEZNb3ZlKHJl
cXVlc3QpLCByZWRpcmVjdFJlc3BvbnNlLCBbcHJvdGVjdCwgcmVkaXJlY3RSZXNwb25zZSwgY2Fs
bGJhY2tdKFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KSB7CiAgICAgICAgIGlmICghcmVxdWVzdC5p
c051bGwoKSkKICAgICAgICAgICAgIHByb3RlY3QtPndpbGxTZW5kUmVxdWVzdEludGVybmFsKHJl
cXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpOwogCi0gICAgICAgIGNhbGxiYWNrKFdURjo6bW92ZShy
ZXF1ZXN0KSk7CisgICAgICAgIGNhbGxiYWNrKFdURk1vdmUocmVxdWVzdCkpOwogICAgIH0pOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2FsbGJhY2suY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNhbGxiYWNrLmNwcAppbmRleCBiZGZmYmU5
NDg0YmU5YzMzYTUxYzAzNmU4M2VmNWJiNmI2ZjA4YmM2Li5hZGY5OTc0ZTExZTMxYzU3ZDUyNGJj
M2FhYTMzNTE1ZmMxMjgxZjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9s
aWN5Q2FsbGJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDYWxsYmFj
ay5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgdm9pZCBQb2xpY3lDYWxsYmFjazo6c2V0KGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+IGYKICAgICBtX2Zv
cm1TdGF0ZSA9IGZvcm1TdGF0ZTsKICAgICBtX2ZyYW1lTmFtZSA9IFN0cmluZygpOwogCi0gICAg
bV9uYXZpZ2F0aW9uRnVuY3Rpb24gPSBXVEY6Om1vdmUoZnVuY3Rpb24pOworICAgIG1fbmF2aWdh
dGlvbkZ1bmN0aW9uID0gV1RGTW92ZShmdW5jdGlvbik7CiAgICAgbV9uZXdXaW5kb3dGdW5jdGlv
biA9IG51bGxwdHI7CiAgICAgbV9jb250ZW50RnVuY3Rpb24gPSBudWxscHRyOwogfQpAQCAtNzQs
NyArNzQsNyBAQCB2b2lkIFBvbGljeUNhbGxiYWNrOjpzZXQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0LCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4gZgogICAgIG1fbmF2aWdhdGlvbkFjdGlv
biA9IG5hdmlnYXRpb25BY3Rpb247CiAKICAgICBtX25hdmlnYXRpb25GdW5jdGlvbiA9IG51bGxw
dHI7Ci0gICAgbV9uZXdXaW5kb3dGdW5jdGlvbiA9IFdURjo6bW92ZShmdW5jdGlvbik7CisgICAg
bV9uZXdXaW5kb3dGdW5jdGlvbiA9IFdURk1vdmUoZnVuY3Rpb24pOwogICAgIG1fY29udGVudEZ1
bmN0aW9uID0gbnVsbHB0cjsKIH0KIApAQCAtODYsNyArODYsNyBAQCB2b2lkIFBvbGljeUNhbGxi
YWNrOjpzZXQoQ29udGVudFBvbGljeURlY2lzaW9uRnVuY3Rpb24gZnVuY3Rpb24pCiAKICAgICBt
X25hdmlnYXRpb25GdW5jdGlvbiA9IG51bGxwdHI7CiAgICAgbV9uZXdXaW5kb3dGdW5jdGlvbiA9
IG51bGxwdHI7Ci0gICAgbV9jb250ZW50RnVuY3Rpb24gPSBXVEY6Om1vdmUoZnVuY3Rpb24pOwor
ICAgIG1fY29udGVudEZ1bmN0aW9uID0gV1RGTW92ZShmdW5jdGlvbik7CiB9CiAKIHZvaWQgUG9s
aWN5Q2FsbGJhY2s6OmNhbGwoYm9vbCBzaG91bGRDb250aW51ZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Qb2xpY3lDaGVja2VyLmNwcAppbmRleCAxOGE1YTUyNWI0MzFlYWJlYjc1ZWE1NTgyMDllOWIx
M2E5MmQ3ZDMwLi4xNWFjNTdmOTg2OTZlZmY1ZDc1YTU5OTIxMjUyYmQwNjcyOWI1YTVhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwCkBAIC01OCw3ICs1OCw3IEBAIFBv
bGljeUNoZWNrZXI6OlBvbGljeUNoZWNrZXIoRnJhbWUmIGZyYW1lKQogCiB2b2lkIFBvbGljeUNo
ZWNrZXI6OmNoZWNrTmF2aWdhdGlvblBvbGljeShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIG5ld1Jl
cXVlc3QsIE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbkZ1bmN0aW9uIGZ1bmN0aW9uKQogewotICAg
IGNoZWNrTmF2aWdhdGlvblBvbGljeShuZXdSZXF1ZXN0LCBtX2ZyYW1lLmxvYWRlcigpLmFjdGl2
ZURvY3VtZW50TG9hZGVyKCksIG51bGxwdHIsIFdURjo6bW92ZShmdW5jdGlvbikpOworICAgIGNo
ZWNrTmF2aWdhdGlvblBvbGljeShuZXdSZXF1ZXN0LCBtX2ZyYW1lLmxvYWRlcigpLmFjdGl2ZURv
Y3VtZW50TG9hZGVyKCksIG51bGxwdHIsIFdURk1vdmUoZnVuY3Rpb24pKTsKIH0KIAogdm9pZCBQ
b2xpY3lDaGVja2VyOjpjaGVja05hdmlnYXRpb25Qb2xpY3koY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0LCBEb2N1bWVudExvYWRlciogbG9hZGVyLCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4g
Zm9ybVN0YXRlLCBOYXZpZ2F0aW9uUG9saWN5RGVjaXNpb25GdW5jdGlvbiBmdW5jdGlvbikKQEAg
LTkzLDcgKzkzLDcgQEAgdm9pZCBQb2xpY3lDaGVja2VyOjpjaGVja05hdmlnYXRpb25Qb2xpY3ko
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBEb2N1bWUKIAogICAgIGxvYWRlci0+c2V0
TGFzdENoZWNrZWRSZXF1ZXN0KHJlcXVlc3QpOwogCi0gICAgbV9jYWxsYmFjay5zZXQocmVxdWVz
dCwgZm9ybVN0YXRlLmdldCgpLCBXVEY6Om1vdmUoZnVuY3Rpb24pKTsKKyAgICBtX2NhbGxiYWNr
LnNldChyZXF1ZXN0LCBmb3JtU3RhdGUuZ2V0KCksIFdURk1vdmUoZnVuY3Rpb24pKTsKIAogI2lm
IFVTRShRVUlDS19MT09LKQogICAgIC8vIEFsd2F5cyBhbGxvdyBRdWlja0xvb2stZ2VuZXJhdGVk
IFVSTHMgYmFzZWQgb24gdGhlIHByb3RvY29sIHNjaGVtZS4KQEAgLTEzMSw3ICsxMzEsNyBAQCB2
b2lkIFBvbGljeUNoZWNrZXI6OmNoZWNrTmV3V2luZG93UG9saWN5KGNvbnN0IE5hdmlnYXRpb25B
Y3Rpb24mIGFjdGlvbiwgY29uc3QgUgogICAgIGlmICghRE9NV2luZG93OjphbGxvd1BvcFVwKCZt
X2ZyYW1lKSkKICAgICAgICAgcmV0dXJuIGNvbnRpbnVlQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5KFBv
bGljeUlnbm9yZSk7CiAKLSAgICBtX2NhbGxiYWNrLnNldChyZXF1ZXN0LCBmb3JtU3RhdGUsIGZy
YW1lTmFtZSwgYWN0aW9uLCBXVEY6Om1vdmUoZnVuY3Rpb24pKTsKKyAgICBtX2NhbGxiYWNrLnNl
dChyZXF1ZXN0LCBmb3JtU3RhdGUsIGZyYW1lTmFtZSwgYWN0aW9uLCBXVEZNb3ZlKGZ1bmN0aW9u
KSk7CiAgICAgbV9mcmFtZS5sb2FkZXIoKS5jbGllbnQoKS5kaXNwYXRjaERlY2lkZVBvbGljeUZv
ck5ld1dpbmRvd0FjdGlvbihhY3Rpb24sIHJlcXVlc3QsIGZvcm1TdGF0ZSwgZnJhbWVOYW1lLCBb
dGhpc10oUG9saWN5QWN0aW9uIGFjdGlvbikgewogICAgICAgICBjb250aW51ZUFmdGVyTmV3V2lu
ZG93UG9saWN5KGFjdGlvbik7CiAgICAgfSk7CkBAIC0xMzksNyArMTM5LDcgQEAgdm9pZCBQb2xp
Y3lDaGVja2VyOjpjaGVja05ld1dpbmRvd1BvbGljeShjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiBh
Y3Rpb24sIGNvbnN0IFIKIAogdm9pZCBQb2xpY3lDaGVja2VyOjpjaGVja0NvbnRlbnRQb2xpY3ko
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIENvbnRlbnRQb2xpY3lEZWNpc2lvbkZ1
bmN0aW9uIGZ1bmN0aW9uKQogewotICAgIG1fY2FsbGJhY2suc2V0KFdURjo6bW92ZShmdW5jdGlv
bikpOworICAgIG1fY2FsbGJhY2suc2V0KFdURk1vdmUoZnVuY3Rpb24pKTsKICAgICBtX2ZyYW1l
LmxvYWRlcigpLmNsaWVudCgpLmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UocmVzcG9u
c2UsIG1fZnJhbWUubG9hZGVyKCkuYWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+cmVxdWVzdCgpLCBb
dGhpc10oUG9saWN5QWN0aW9uIGFjdGlvbikgewogICAgICAgICBjb250aW51ZUFmdGVyQ29udGVu
dFBvbGljeShhY3Rpb24pOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1BvbGljeUNoZWNrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVja2Vy
LmgKaW5kZXggNDdiMTQ0YzdiMTBkNGUxOTVjZWE1ZmMxYTVkODViY2JhZmMyOGJlNy4uYmZhN2Vi
MjBjNjQ2NzZiNDkwODMzYWRlYWI2N2Y5MzA3YWViMjhjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
UG9saWN5Q2hlY2tlci5oCkBAIC04MCw3ICs4MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbnRp
bnVlTG9hZEFmdGVyV2lsbFN1Ym1pdEZvcm0oUG9saWN5QWN0aW9uKTsKIAogI2lmIEVOQUJMRShD
T05URU5UX0ZJTFRFUklORykKLSAgICB2b2lkIHNldENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxl
cihDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIgdW5ibG9ja0hhbmRsZXIpIHsgbV9jb250ZW50
RmlsdGVyVW5ibG9ja0hhbmRsZXIgPSBXVEY6Om1vdmUodW5ibG9ja0hhbmRsZXIpOyB9CisgICAg
dm9pZCBzZXRDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIoQ29udGVudEZpbHRlclVuYmxvY2tI
YW5kbGVyIHVuYmxvY2tIYW5kbGVyKSB7IG1fY29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyID0g
V1RGTW92ZSh1bmJsb2NrSGFuZGxlcik7IH0KICNlbmRpZgogCiBwcml2YXRlOgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggZDZlNWI2MTFiNWE5NWM5ZTYxZGVm
YTZkYzZhNjQ3ZjJjY2VkZDFjZC4uNzZmMjIxMjgyYWVhZjJlZmYwYWU5YzM0OGVhNzRlZjU0NTdk
NTE2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0zOTUs
NyArMzk1LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0SW50ZXJuYWwo
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXMKIHZvaWQgUmVzb3VyY2VMb2FkZXI6
OndpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoUmVzb3VyY2VS
ZXF1ZXN0JiYpPiYmIGNhbGxiYWNrKQogewogICAgIHdpbGxTZW5kUmVxdWVzdEludGVybmFsKHJl
cXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpOwotICAgIGNhbGxiYWNrKFdURjo6bW92ZShyZXF1ZXN0
KSk7CisgICAgY2FsbGJhY2soV1RGTW92ZShyZXF1ZXN0KSk7CiB9CiAKIHZvaWQgUmVzb3VyY2VM
b2FkZXI6OmRpZFNlbmREYXRhKHVuc2lnbmVkIGxvbmcgbG9uZywgdW5zaWduZWQgbG9uZyBsb25n
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXIuY3BwCmluZGV4IDE3Njcw
ZWM0Y2IzMDA2ZjkwNTg3OTI3NGIwZDFlMGJiZjkwMzgwMzEuLjZkNGUxYjIwMDZmMjQ1MWFiMjIw
YWZiMDMwMTYxOGNkYzNlYjE5NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9U
aHJlYWRhYmxlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJs
ZUxvYWRlci5jcHAKQEAgLTU1LDggKzU1LDggQEAgVGhyZWFkYWJsZUxvYWRlck9wdGlvbnM6OlRo
cmVhZGFibGVMb2FkZXJPcHRpb25zKGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYgYmEKICAg
ICA6IFJlc291cmNlTG9hZGVyT3B0aW9ucyhiYXNlT3B0aW9ucykKICAgICAsIHByZWZsaWdodFBv
bGljeShwcmVmbGlnaHRQb2xpY3kpCiAgICAgLCBjcm9zc09yaWdpblJlcXVlc3RQb2xpY3koY3Jv
c3NPcmlnaW5SZXF1ZXN0UG9saWN5KQotICAgICwgc2VjdXJpdHlPcmlnaW4oV1RGOjptb3ZlKHNl
Y3VyaXR5T3JpZ2luKSkKLSAgICAsIGluaXRpYXRvcihXVEY6Om1vdmUoaW5pdGlhdG9yKSkKKyAg
ICAsIHNlY3VyaXR5T3JpZ2luKFdURk1vdmUoc2VjdXJpdHlPcmlnaW4pKQorICAgICwgaW5pdGlh
dG9yKFdURk1vdmUoaW5pdGlhdG9yKSkKIHsKIH0KIApAQCAtNjYsNyArNjYsNyBAQCBzdGQ6OnVu
aXF1ZV9wdHI8VGhyZWFkYWJsZUxvYWRlck9wdGlvbnM+IFRocmVhZGFibGVMb2FkZXJPcHRpb25z
Ojppc29sYXRlZENvcHkoKQogICAgIGlmIChzZWN1cml0eU9yaWdpbikKICAgICAgICAgc2VjdXJp
dHlPcmlnaW5Db3B5ID0gc2VjdXJpdHlPcmlnaW4tPmlzb2xhdGVkQ29weSgpOwogICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPFRocmVhZGFibGVMb2FkZXJPcHRpb25zPigqdGhpcywgcHJlZmxp
Z2h0UG9saWN5LCBjcm9zc09yaWdpblJlcXVlc3RQb2xpY3ksCi0gICAgICAgIFdURjo6bW92ZShz
ZWN1cml0eU9yaWdpbkNvcHkpLCBpbml0aWF0b3IuaXNvbGF0ZWRDb3B5KCkpOworICAgICAgICBX
VEZNb3ZlKHNlY3VyaXR5T3JpZ2luQ29weSksIGluaXRpYXRvci5pc29sYXRlZENvcHkoKSk7CiB9
CiAKIFBhc3NSZWZQdHI8VGhyZWFkYWJsZUxvYWRlcj4gVGhyZWFkYWJsZUxvYWRlcjo6Y3JlYXRl
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFRocmVhZGFibGVMb2FkZXJDbGllbnQq
IGNsaWVudCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBUaHJlYWRhYmxl
TG9hZGVyT3B0aW9ucyYgb3B0aW9ucykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKaW5kZXggMzBmYzI1OGE2MjM2
OWEyOWE2MzIzYTAyMzgyMTgzZGE4ZjdjYjIxMC4uMzI0ZmMxY2IzNWJhYWVlNzBjYWM0MGM2YWMx
ZTQzZTBmYWVkZDEwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKQEAgLTUxLDcgKzUxLDcgQEAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogQXBwbGljYXRpb25DYWNoZUdyb3VwOjpBcHBsaWNhdGlvbkNhY2hl
R3JvdXAoUmVmPEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlPiYmIHN0b3JhZ2UsIGNvbnN0IFVSTCYg
bWFuaWZlc3RVUkwpCi0gICAgOiBtX3N0b3JhZ2UoV1RGOjptb3ZlKHN0b3JhZ2UpKQorICAgIDog
bV9zdG9yYWdlKFdURk1vdmUoc3RvcmFnZSkpCiAgICAgLCBtX21hbmlmZXN0VVJMKG1hbmlmZXN0
VVJMKQogICAgICwgbV9vcmlnaW4oU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShtYW5pZmVzdFVSTCkp
CiAgICAgLCBtX3VwZGF0ZVN0YXR1cyhJZGxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcAppbmRleCA1YTFhMzEzZmE1Yzlh
ZGEzZDA2Y2IxZGY5NTNkMTU1OThlNTg1MzdlLi42YzZhY2UxZWE1MGI2YWZjOGQ1YjlkZjRmYTlm
ODllMDBhYjdlZjRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9j
Zi9MZWdhY3lXZWJBcmNoaXZlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2
ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcApAQCAtMjQzLDEwICsyNDMsMTAgQEAgUGFzc1JlZlB0
cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoUGFzc1JlZlB0cjxB
cmNoaXZlUmVzb3VyY2UKICAgICBhcmNoaXZlLT5zZXRNYWluUmVzb3VyY2UobWFpblJlc291cmNl
KTsKICAgICAKICAgICBmb3IgKGF1dG8mIHN1YnJlc291cmNlIDogc3VicmVzb3VyY2VzKQotICAg
ICAgICBhcmNoaXZlLT5hZGRTdWJyZXNvdXJjZShXVEY6Om1vdmUoc3VicmVzb3VyY2UpKTsKKyAg
ICAgICAgYXJjaGl2ZS0+YWRkU3VicmVzb3VyY2UoV1RGTW92ZShzdWJyZXNvdXJjZSkpOwogCiAg
ICAgZm9yIChhdXRvJiBzdWJmcmFtZUFyY2hpdmUgOiBzdWJmcmFtZUFyY2hpdmVzKQotICAgICAg
ICBhcmNoaXZlLT5hZGRTdWJmcmFtZUFyY2hpdmUoV1RGOjptb3ZlKHN1YmZyYW1lQXJjaGl2ZSkp
OworICAgICAgICBhcmNoaXZlLT5hZGRTdWJmcmFtZUFyY2hpdmUoV1RGTW92ZShzdWJmcmFtZUFy
Y2hpdmUpKTsKIAogICAgIHJldHVybiBhcmNoaXZlLnJlbGVhc2UoKTsKIH0KQEAgLTQ0NSw3ICs0
NDUsNyBAQCBQYXNzUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNy
ZWF0ZShOb2RlKiBub2RlLCBzdGQ6OmZ1bmN0aW9uPAogICAgIGlmIChub2RlVHlwZSAhPSBOb2Rl
OjpET0NVTUVOVF9OT0RFICYmIG5vZGVUeXBlICE9IE5vZGU6OkRPQ1VNRU5UX1RZUEVfTk9ERSkK
ICAgICAgICAgbWFya3VwU3RyaW5nID0gZG9jdW1lbnRUeXBlU3RyaW5nKG5vZGUtPmRvY3VtZW50
KCkpICsgbWFya3VwU3RyaW5nOwogCi0gICAgcmV0dXJuIGNyZWF0ZShtYXJrdXBTdHJpbmcsIGZy
YW1lLCBub2RlTGlzdCwgV1RGOjptb3ZlKGZyYW1lRmlsdGVyKSk7CisgICAgcmV0dXJuIGNyZWF0
ZShtYXJrdXBTdHJpbmcsIGZyYW1lLCBub2RlTGlzdCwgV1RGTW92ZShmcmFtZUZpbHRlcikpOwog
fQogCiBQYXNzUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0
ZShGcmFtZSogZnJhbWUpCkBAIC00NjEsMTEgKzQ2MSwxMSBAQCBQYXNzUmVmUHRyPExlZ2FjeVdl
YkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShGcmFtZSogZnJhbWUpCiAgICAgCiAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGZyYW1lLT50cmVlKCkuY2hpbGRDb3VudCgpOyAr
K2kpIHsKICAgICAgICAgaWYgKFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBjaGlsZEZyYW1lQXJj
aGl2ZSA9IGNyZWF0ZShmcmFtZS0+dHJlZSgpLmNoaWxkKGkpKSkKLSAgICAgICAgICAgIHN1YmZy
YW1lQXJjaGl2ZXMuYXBwZW5kKFdURjo6bW92ZShjaGlsZEZyYW1lQXJjaGl2ZSkpOworICAgICAg
ICAgICAgc3ViZnJhbWVBcmNoaXZlcy5hcHBlbmQoV1RGTW92ZShjaGlsZEZyYW1lQXJjaGl2ZSkp
OwogICAgIH0KIAogICAgIGF1dG8gc3VicmVzb3VyY2VzID0gZG9jdW1lbnRMb2FkZXItPnN1YnJl
c291cmNlcygpOwotICAgIHJldHVybiBjcmVhdGUoZG9jdW1lbnRMb2FkZXItPm1haW5SZXNvdXJj
ZSgpLCBXVEY6Om1vdmUoc3VicmVzb3VyY2VzKSwgV1RGOjptb3ZlKHN1YmZyYW1lQXJjaGl2ZXMp
KTsKKyAgICByZXR1cm4gY3JlYXRlKGRvY3VtZW50TG9hZGVyLT5tYWluUmVzb3VyY2UoKSwgV1RG
TW92ZShzdWJyZXNvdXJjZXMpLCBXVEZNb3ZlKHN1YmZyYW1lQXJjaGl2ZXMpKTsKIH0KIAogUGFz
c1JlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoUmFuZ2Uq
IHJhbmdlKQpAQCAtNTE0LDcgKzUxNCw3IEBAIFBhc3NSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4g
TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgbWFya3VwU3RyaW5nCiAgICAg
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAo
UmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IHN1YmZyYW1lQXJjaGl2ZSA9IGNyZWF0ZShjaGlsZEZy
YW1lLT5kb2N1bWVudCgpLCBmcmFtZUZpbHRlcikpCi0gICAgICAgICAgICAgICAgc3ViZnJhbWVB
cmNoaXZlcy5hcHBlbmQoV1RGOjptb3ZlKHN1YmZyYW1lQXJjaGl2ZSkpOworICAgICAgICAgICAg
ICAgIHN1YmZyYW1lQXJjaGl2ZXMuYXBwZW5kKFdURk1vdmUoc3ViZnJhbWVBcmNoaXZlKSk7CiAg
ICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGVkIHRvIGFy
Y2hpdmUgc3ViZnJhbWUgJXMiLCBjaGlsZEZyYW1lLT50cmVlKCkudW5pcXVlTmFtZSgpLnN0cmlu
ZygpLnV0ZjgoKS5kYXRhKCkpOwogCkBAIC01MzEsNyArNTMxLDcgQEAgUGFzc1JlZlB0cjxMZWdh
Y3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBtYXJr
dXBTdHJpbmcKICAgICAgICAgICAgICAgICB1bmlxdWVTdWJyZXNvdXJjZXMuYWRkKHN1YnJlc291
cmNlVVJMKTsKIAogICAgICAgICAgICAgICAgIGlmIChSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBy
ZXNvdXJjZSA9IGRvY3VtZW50TG9hZGVyLT5zdWJyZXNvdXJjZShzdWJyZXNvdXJjZVVSTCkpIHsK
LSAgICAgICAgICAgICAgICAgICAgc3VicmVzb3VyY2VzLmFwcGVuZChXVEY6Om1vdmUocmVzb3Vy
Y2UpKTsKKyAgICAgICAgICAgICAgICAgICAgc3VicmVzb3VyY2VzLmFwcGVuZChXVEZNb3ZlKHJl
c291cmNlKSk7CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAg
IH0KIApAQCAtNTQyLDcgKzU0Miw3IEBAIFBhc3NSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVn
YWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgbWFya3VwU3RyaW5nCiAgICAgICAg
ICAgICAgICAgQ2FjaGVkUmVzb3VyY2UqIGNhY2hlZFJlc291cmNlID0gTWVtb3J5Q2FjaGU6OnNp
bmdsZXRvbigpLnJlc291cmNlRm9yUmVxdWVzdChyZXF1ZXN0LCBmcmFtZS0+cGFnZSgpLT5zZXNz
aW9uSUQoKSk7CiAgICAgICAgICAgICAgICAgaWYgKGNhY2hlZFJlc291cmNlKSB7CiAgICAgICAg
ICAgICAgICAgICAgIGlmIChSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiByZXNvdXJjZSA9IEFyY2hp
dmVSZXNvdXJjZTo6Y3JlYXRlKGNhY2hlZFJlc291cmNlLT5yZXNvdXJjZUJ1ZmZlcigpLCBzdWJy
ZXNvdXJjZVVSTCwgY2FjaGVkUmVzb3VyY2UtPnJlc3BvbnNlKCkpKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBzdWJyZXNvdXJjZXMuYXBwZW5kKFdURjo6bW92ZShyZXNvdXJjZSkpOworICAg
ICAgICAgICAgICAgICAgICAgICAgc3VicmVzb3VyY2VzLmFwcGVuZChXVEZNb3ZlKHJlc291cmNl
KSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgIH0KQEAgLTU2NCw3ICs1NjQsNyBAQCBQYXNzUmVmUHRyPExl
Z2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShjb25zdCBTdHJpbmcmIG1h
cmt1cFN0cmluZwogICAgICAgICB9CiAgICAgfQogCi0gICAgcmV0dXJuIGNyZWF0ZShtYWluUmVz
b3VyY2UucmVsZWFzZSgpLCBzdWJyZXNvdXJjZXMsIFdURjo6bW92ZShzdWJmcmFtZUFyY2hpdmVz
KSk7CisgICAgcmV0dXJuIGNyZWF0ZShtYWluUmVzb3VyY2UucmVsZWFzZSgpLCBzdWJyZXNvdXJj
ZXMsIFdURk1vdmUoc3ViZnJhbWVBcmNoaXZlcykpOwogfQogCiBQYXNzUmVmUHRyPExlZ2FjeVdl
YkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZUZyb21TZWxlY3Rpb24oRnJhbWUqIGZy
YW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0
eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxl
U2hlZXQuY3BwCmluZGV4IDc4MzlhNmY1YzExOGJiOWNkM2ZmZDdmY2VmNjYyODBkMDY2NmI0ZWIu
LjcwOTFmY2UyYTJjOWYzZTI3YjY4NDI0M2M3NjRjNmI4Yzc2OWY5ZmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAKQEAgLTE3
NCw3ICsxNzQsNyBAQCB2b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OnNhdmVQYXJzZWRTdHlsZVNo
ZWV0KFJlZjxTdHlsZVNoZWV0Q29udGVudHM+JiYgc2hlZXQpCiAKICAgICBpZiAobV9wYXJzZWRT
dHlsZVNoZWV0Q2FjaGUpCiAgICAgICAgIG1fcGFyc2VkU3R5bGVTaGVldENhY2hlLT5yZW1vdmVk
RnJvbU1lbW9yeUNhY2hlKCk7Ci0gICAgbV9wYXJzZWRTdHlsZVNoZWV0Q2FjaGUgPSBXVEY6Om1v
dmUoc2hlZXQpOworICAgIG1fcGFyc2VkU3R5bGVTaGVldENhY2hlID0gV1RGTW92ZShzaGVldCk7
CiAgICAgbV9wYXJzZWRTdHlsZVNoZWV0Q2FjaGUtPmFkZGVkVG9NZW1vcnlDYWNoZSgpOwogCiAg
ICAgc2V0RGVjb2RlZFNpemUobV9wYXJzZWRTdHlsZVNoZWV0Q2FjaGUtPmVzdGltYXRlZFNpemVJ
bkJ5dGVzKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRh
dGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZS5jcHAK
aW5kZXggNDNhNjk4NjA5MTAwMDhhNjI4Y2I0OTc4MzE4YWU1NTkxNDljNjc3Yi4uZmVmMzhkN2Zh
MTc1OGNiNGJmNzEwNWIyMzViZGNlZDdhOTVlNzc5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvaWNvbi9JY29uRGF0YWJhc2UuY3BwCkBAIC0xMzM4LDcgKzEzMzgsNyBAQCB2b2lkIEljb25E
YXRhYmFzZTo6c3luY1RocmVhZE1haW5Mb29wKCkKIAogICAgIG1fc3luY0xvY2subG9jaygpOwog
Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFN1ZGRlblRlcm1pbmF0aW9uRGlzYWJsZXI+IGRpc2FibGVT
dWRkZW5UZXJtaW5hdGlvbiA9IFdURjo6bW92ZShtX2Rpc2FibGVTdWRkZW5UZXJtaW5hdGlvbldo
aWxlU3luY1RocmVhZEhhc1dvcmtUb0RvKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U3VkZGVuVGVy
bWluYXRpb25EaXNhYmxlcj4gZGlzYWJsZVN1ZGRlblRlcm1pbmF0aW9uID0gV1RGTW92ZShtX2Rp
c2FibGVTdWRkZW5UZXJtaW5hdGlvbldoaWxlU3luY1RocmVhZEhhc1dvcmtUb0RvKTsKIAogICAg
IC8vIFdlJ2xsIGVpdGhlciBkbyBhbnkgcGVuZGluZyB3b3JrIG9uIG91ciBmaXJzdCBwYXNzIHRo
cm91Z2ggdGhlIGxvb3AsIG9yIHdlJ2xsIHRlcm1pbmF0ZQogICAgIC8vIHdpdGhvdXQgZG9pbmcg
YW55IHdvcmsuIEVpdGhlciB3YXkgd2UncmUgZGVhbGluZyB3aXRoIGFueSBjdXJyZW50bHktcGVu
ZGluZyB3b3JrLgpAQCAtMTQyOCw3ICsxNDI4LDcgQEAgdm9pZCBJY29uRGF0YWJhc2U6OnN5bmNU
aHJlYWRNYWluTG9vcCgpCiAgICAgICAgIG1fc3luY1RocmVhZEhhc1dvcmtUb0RvID0gZmFsc2U7
CiAKICAgICAgICAgQVNTRVJUKG1fZGlzYWJsZVN1ZGRlblRlcm1pbmF0aW9uV2hpbGVTeW5jVGhy
ZWFkSGFzV29ya1RvRG8pOwotICAgICAgICBkaXNhYmxlU3VkZGVuVGVybWluYXRpb24gPSBXVEY6
Om1vdmUobV9kaXNhYmxlU3VkZGVuVGVybWluYXRpb25XaGlsZVN5bmNUaHJlYWRIYXNXb3JrVG9E
byk7CisgICAgICAgIGRpc2FibGVTdWRkZW5UZXJtaW5hdGlvbiA9IFdURk1vdmUobV9kaXNhYmxl
U3VkZGVuVGVybWluYXRpb25XaGlsZVN5bmNUaHJlYWRIYXNXb3JrVG9Ebyk7CiAgICAgfQogCiAg
ICAgbV9zeW5jTG9jay51bmxvY2soKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL21hdGht
bC9NYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL21hdGht
bC9NYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50LmNwcAppbmRleCAwY2Y1MDViZTk1OGYyN2U0
NDlhZWY2MDNlNjlmOWVkYjNlZWM1MTQ5Li44MDExYjVlNTQ0MTIzMjNhZWYxY2JkZmM5YzJmZTVm
NTFhYTcxOWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MSW5saW5l
Q29udGFpbmVyRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTElu
bGluZUNvbnRhaW5lckVsZW1lbnQuY3BwCkBAIC03MiwzNSArNzIsMzUgQEAgdm9pZCBNYXRoTUxJ
bmxpbmVDb250YWluZXJFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2Um
IGNoYW5nZSkKIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBNYXRoTUxJbmxpbmVDb250YWluZXJF
bGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlLCBj
b25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQogewogICAgIGlmIChoYXNUYWdOYW1lKGFubm90YXRp
b25feG1sVGFnKSkKLSAgICAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlck1hdGhNTFJv
dz4oKnRoaXMsIFdURjo6bW92ZShzdHlsZSkpOworICAgICAgICByZXR1cm4gY3JlYXRlUmVuZGVy
ZXI8UmVuZGVyTWF0aE1MUm93PigqdGhpcywgV1RGTW92ZShzdHlsZSkpOwogICAgIGlmIChoYXNU
YWdOYW1lKG1lcnJvclRhZykgfHwgaGFzVGFnTmFtZShtcGhhbnRvbVRhZykgfHwgaGFzVGFnTmFt
ZShtcm93VGFnKSB8fCBoYXNUYWdOYW1lKG1zdHlsZVRhZykpCi0gICAgICAgIHJldHVybiBjcmVh
dGVSZW5kZXJlcjxSZW5kZXJNYXRoTUxSb3c+KCp0aGlzLCBXVEY6Om1vdmUoc3R5bGUpKTsKKyAg
ICAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlck1hdGhNTFJvdz4oKnRoaXMsIFdURk1v
dmUoc3R5bGUpKTsKICAgICBpZiAoaGFzVGFnTmFtZShtc3ViVGFnKSkKLSAgICAgICAgcmV0dXJu
IGNyZWF0ZVJlbmRlcmVyPFJlbmRlck1hdGhNTFNjcmlwdHM+KCp0aGlzLCBXVEY6Om1vdmUoc3R5
bGUpKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlck1hdGhNTFNjcmlwdHM+
KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7CiAgICAgaWYgKGhhc1RhZ05hbWUobXN1cFRhZykpCi0g
ICAgICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJNYXRoTUxTY3JpcHRzPigqdGhpcywg
V1RGOjptb3ZlKHN0eWxlKSk7CisgICAgICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJN
YXRoTUxTY3JpcHRzPigqdGhpcywgV1RGTW92ZShzdHlsZSkpOwogICAgIGlmIChoYXNUYWdOYW1l
KG1zdWJzdXBUYWcpKQotICAgICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyTWF0aE1M
U2NyaXB0cz4oKnRoaXMsIFdURjo6bW92ZShzdHlsZSkpOworICAgICAgICByZXR1cm4gY3JlYXRl
UmVuZGVyZXI8UmVuZGVyTWF0aE1MU2NyaXB0cz4oKnRoaXMsIFdURk1vdmUoc3R5bGUpKTsKICAg
ICBpZiAoaGFzVGFnTmFtZShtbXVsdGlzY3JpcHRzVGFnKSkKLSAgICAgICAgcmV0dXJuIGNyZWF0
ZVJlbmRlcmVyPFJlbmRlck1hdGhNTFNjcmlwdHM+KCp0aGlzLCBXVEY6Om1vdmUoc3R5bGUpKTsK
KyAgICAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlck1hdGhNTFNjcmlwdHM+KCp0aGlz
LCBXVEZNb3ZlKHN0eWxlKSk7CiAgICAgaWYgKGhhc1RhZ05hbWUobW92ZXJUYWcpKQotICAgICAg
ICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyTWF0aE1MVW5kZXJPdmVyPigqdGhpcywgV1RG
Ojptb3ZlKHN0eWxlKSk7CisgICAgICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJNYXRo
TUxVbmRlck92ZXI+KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7CiAgICAgaWYgKGhhc1RhZ05hbWUo
bXVuZGVyVGFnKSkKLSAgICAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlck1hdGhNTFVu
ZGVyT3Zlcj4oKnRoaXMsIFdURjo6bW92ZShzdHlsZSkpOworICAgICAgICByZXR1cm4gY3JlYXRl
UmVuZGVyZXI8UmVuZGVyTWF0aE1MVW5kZXJPdmVyPigqdGhpcywgV1RGTW92ZShzdHlsZSkpOwog
ICAgIGlmIChoYXNUYWdOYW1lKG11bmRlcm92ZXJUYWcpKQotICAgICAgICByZXR1cm4gY3JlYXRl
UmVuZGVyZXI8UmVuZGVyTWF0aE1MVW5kZXJPdmVyPigqdGhpcywgV1RGOjptb3ZlKHN0eWxlKSk7
CisgICAgICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJNYXRoTUxVbmRlck92ZXI+KCp0
aGlzLCBXVEZNb3ZlKHN0eWxlKSk7CiAgICAgaWYgKGhhc1RhZ05hbWUobWZyYWNUYWcpKQotICAg
ICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyTWF0aE1MRnJhY3Rpb24+KCp0aGlzLCBX
VEY6Om1vdmUoc3R5bGUpKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlck1h
dGhNTEZyYWN0aW9uPigqdGhpcywgV1RGTW92ZShzdHlsZSkpOwogICAgIGlmIChoYXNUYWdOYW1l
KG1zcXJ0VGFnKSkKLSAgICAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlck1hdGhNTFNx
dWFyZVJvb3Q+KCp0aGlzLCBXVEY6Om1vdmUoc3R5bGUpKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0
ZVJlbmRlcmVyPFJlbmRlck1hdGhNTFNxdWFyZVJvb3Q+KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7
CiAgICAgaWYgKGhhc1RhZ05hbWUobXJvb3RUYWcpKQotICAgICAgICByZXR1cm4gY3JlYXRlUmVu
ZGVyZXI8UmVuZGVyTWF0aE1MUm9vdD4oKnRoaXMsIFdURjo6bW92ZShzdHlsZSkpOworICAgICAg
ICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyTWF0aE1MUm9vdD4oKnRoaXMsIFdURk1vdmUo
c3R5bGUpKTsKICAgICBpZiAoaGFzVGFnTmFtZShtZmVuY2VkVGFnKSkKLSAgICAgICAgcmV0dXJu
IGNyZWF0ZVJlbmRlcmVyPFJlbmRlck1hdGhNTEZlbmNlZD4oKnRoaXMsIFdURjo6bW92ZShzdHls
ZSkpOworICAgICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyTWF0aE1MRmVuY2VkPigq
dGhpcywgV1RGTW92ZShzdHlsZSkpOwogICAgIGlmIChoYXNUYWdOYW1lKG10YWJsZVRhZykpCi0g
ICAgICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJNYXRoTUxUYWJsZT4oKnRoaXMsIFdU
Rjo6bW92ZShzdHlsZSkpOworICAgICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyTWF0
aE1MVGFibGU+KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7CiAKLSAgICByZXR1cm4gY3JlYXRlUmVu
ZGVyZXI8UmVuZGVyTWF0aE1MQmxvY2s+KCp0aGlzLCBXVEY6Om1vdmUoc3R5bGUpKTsKKyAgICBy
ZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyTWF0aE1MQmxvY2s+KCp0aGlzLCBXVEZNb3ZlKHN0
eWxlKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxN
YXRoRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MTWF0aEVsZW1lbnQu
Y3BwCmluZGV4IGYwY2FhYmM3MTkwYzE0ZDg3MjUxZjc1OTE4N2UzZGIxZjQ5ZTcxODAuLjMxMDM2
YzUwMjAwNDAwMDczODUwOGU5ZDQxOTdmOTM3ZjhjNTFjNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL21hdGhtbC9NYXRoTUxNYXRoRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bWF0aG1sL01hdGhNTE1hdGhFbGVtZW50LmNwcApAQCAtNDUsNyArNDUsNyBAQCBSZWY8TWF0aE1M
TWF0aEVsZW1lbnQ+IE1hdGhNTE1hdGhFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgdGFnTmFtZSwgRAogCiBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gTWF0aE1MTWF0aEVsZW1l
bnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUsIGNvbnN0
IFJlbmRlclRyZWVQb3NpdGlvbiYpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRl
ck1hdGhNTE1hdGg+KCp0aGlzLCBXVEY6Om1vdmUoc3R5bGUpKTsKKyAgICByZXR1cm4gY3JlYXRl
UmVuZGVyZXI8UmVuZGVyTWF0aE1MTWF0aD4oKnRoaXMsIFdURk1vdmUoc3R5bGUpKTsKIH0KIAog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTE1lbmNsb3NlRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MTWVuY2xvc2VFbGVtZW50LmNwcApp
bmRleCA5N2ZlODNiZjc3MTExOWZkMmE0ODFhYTJiOGY4NTU1ZmNjN2ZmZGVmLi4zNjEyY2NiMzMz
ZDg3NWUxNDE3OTEyNzFiMDY4NGI3Yzk1YmNmY2M4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9tYXRobWwvTWF0aE1MTWVuY2xvc2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9t
YXRobWwvTWF0aE1MTWVuY2xvc2VFbGVtZW50LmNwcApAQCAtNTIsNyArNTIsNyBAQCBSZWY8TWF0
aE1MTWVuY2xvc2VFbGVtZW50PiBNYXRoTUxNZW5jbG9zZUVsZW1lbnQ6OmNyZWF0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiB0YQogCiBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gTWF0aE1MTWVuY2xv
c2VFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxl
LCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQogeyAgICAKLSAgICByZXR1cm4gY3JlYXRlUmVu
ZGVyZXI8UmVuZGVyTWF0aE1MTWVuY2xvc2U+KCp0aGlzLCBXVEY6Om1vdmUoc3R5bGUpKTsKKyAg
ICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyTWF0aE1MTWVuY2xvc2U+KCp0aGlzLCBXVEZN
b3ZlKHN0eWxlKSk7CiB9CiAKIGJvb2wgTWF0aE1MTWVuY2xvc2VFbGVtZW50Ojppc1ByZXNlbnRh
dGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lKSBjb25zdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFNlbGVjdEVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvbWF0aG1sL01hdGhNTFNlbGVjdEVsZW1lbnQuY3BwCmluZGV4IDVmZmMwNjlkNDEx
MDMzNThlOTNmMTQzNTI5NTMwZDY2NWJkYmVkZTguLmY2ZGFmMjg4YmY5NmY4NTM4NmMwMDVmNWIz
ZmExYTkxN2E2Y2FjYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxT
ZWxlY3RFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MU2VsZWN0
RWxlbWVudC5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgUmVmPE1hdGhNTFNlbGVjdEVsZW1lbnQ+IE1h
dGhNTFNlbGVjdEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW0KIAog
UmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IE1hdGhNTFNlbGVjdEVsZW1lbnQ6OmNyZWF0ZUVsZW1l
bnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3Np
dGlvbiYpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlck1hdGhNTFJvdz4oKnRo
aXMsIFdURjo6bW92ZShzdHlsZSkpOworICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJN
YXRoTUxSb3c+KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7CiB9CiAKIC8vICBXZSByZWNvZ25pemUg
dGhlIGZvbGxvd2luZyB2YWx1ZXMgZm9yIHRoZSBlbmNvZGluZyBhdHRyaWJ1dGUgb2YgdGhlIDxz
ZW1hbnRpY3M+IGVsZW1lbnQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0
aE1MVGV4dEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFRleHRFbGVt
ZW50LmNwcAppbmRleCAxNzU5NGQxNGVkYzVhZjNmOGY1MzE4NjRlMjA5OGY3OThkYmZmMTE0Li4w
YTU4N2M4ZmIyNmRlNTI3OTNmMjEyZGNkZTA5OGM0MTdmNDc4Y2M2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MVGV4dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL21hdGhtbC9NYXRoTUxUZXh0RWxlbWVudC5jcHAKQEAgLTc4LDExICs3OCwxMSBAQCB2b2lk
IE1hdGhNTFRleHRFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBu
YW1lLCBjb25zdCBBdG9taWNTdAogUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IE1hdGhNTFRleHRF
bGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlLCBj
b25zdCBSZW5kZXJUcmVlUG9zaXRpb24mIGluc2VydGlvblBvc2l0aW9uKQogewogICAgIGlmICho
YXNUYWdOYW1lKE1hdGhNTE5hbWVzOjptb1RhZykpCi0gICAgICAgIHJldHVybiBjcmVhdGVSZW5k
ZXJlcjxSZW5kZXJNYXRoTUxPcGVyYXRvcj4oKnRoaXMsIFdURjo6bW92ZShzdHlsZSkpOworICAg
ICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyTWF0aE1MT3BlcmF0b3I+KCp0aGlzLCBX
VEZNb3ZlKHN0eWxlKSk7CiAgICAgaWYgKGhhc1RhZ05hbWUoTWF0aE1MTmFtZXM6Om1zcGFjZVRh
ZykpCi0gICAgICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJNYXRoTUxTcGFjZT4oKnRo
aXMsIFdURjo6bW92ZShzdHlsZSkpOworICAgICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVu
ZGVyTWF0aE1MU3BhY2U+KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7CiAgICAgaWYgKGhhc1RhZ05h
bWUoTWF0aE1MTmFtZXM6OmFubm90YXRpb25UYWcpKQotICAgICAgICByZXR1cm4gTWF0aE1MRWxl
bWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFdURjo6bW92ZShzdHlsZSksIGluc2VydGlvblBv
c2l0aW9uKTsKKyAgICAgICAgcmV0dXJuIE1hdGhNTEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5k
ZXJlcihXVEZNb3ZlKHN0eWxlKSwgaW5zZXJ0aW9uUG9zaXRpb24pOwogCiAgICAgQVNTRVJUKGhh
c1RhZ05hbWUoTWF0aE1MTmFtZXM6Om1pVGFnKSB8fCBoYXNUYWdOYW1lKE1hdGhNTE5hbWVzOjpt
blRhZykgfHwgaGFzVGFnTmFtZShNYXRoTUxOYW1lczo6bXNUYWcpIHx8IGhhc1RhZ05hbWUoTWF0
aE1MTmFtZXM6Om10ZXh0VGFnKSk7CiAKQEAgLTkwLDcgKzkwLDcgQEAgUmVuZGVyUHRyPFJlbmRl
ckVsZW1lbnQ+IE1hdGhNTFRleHRFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJl
bmRlclN0eWwKICAgICAvLyBzdHlsZS1jaGFuZ2VkLmh0bXQgdGVzdCB0byBwYXNzLCBzaW5jZSBt
YXRobWwgcmVuZGVycyBleHBlY3QgU3RyZXRjaCBhcyBkZWZhdWx0LgogICAgIHN0eWxlLmdldCgp
LnNldEFsaWduSXRlbXNQb3NpdGlvbihJdGVtUG9zaXRpb25TdHJldGNoKTsKIAotICAgIHJldHVy
biBjcmVhdGVSZW5kZXJlcjxSZW5kZXJNYXRoTUxUb2tlbj4oKnRoaXMsIFdURjo6bW92ZShzdHls
ZSkpOworICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJNYXRoTUxUb2tlbj4oKnRoaXMs
IFdURk1vdmUoc3R5bGUpKTsKIH0KIAogYm9vbCBNYXRoTUxUZXh0RWxlbWVudDo6Y2hpbGRTaG91
bGRDcmVhdGVSZW5kZXJlcihjb25zdCBOb2RlJiBjaGlsZCkgY29uc3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlcy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXMuY3BwCmluZGV4IDVlMmJjMDMzNzg1NzQx
NGJiYjU2Yjk0YTZiYTdhNWViYjRjOTZjMjAuLmE5NzRjZDg2ZmM2MDQ4NTM3YTIyOTRiYjZhNGFl
YTM3OTBlYzVkNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQ
cmVmZXJlbmNlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZl
cmVuY2VzLmNwcApAQCAtMjk5LDcgKzI5OSw3IEBAIHZvaWQgQ2FwdGlvblVzZXJQcmVmZXJlbmNl
czo6dXBkYXRlQ2FwdGlvblN0eWxlU2hlZXRPdmVyaWRlKCkKICAgICBmb3IgKGF1dG8mIHBhZ2Ug
OiBwYWdlcykgewogICAgICAgICBpZiAoYXV0byogcGFnZVVzZXJDb250ZW50Q29udHJvbGxlciA9
IHBhZ2UtPnVzZXJDb250ZW50Q29udHJvbGxlcigpKSB7CiAgICAgICAgICAgICBhdXRvIHVzZXJT
dHlsZVNoZWV0ID0gc3RkOjptYWtlX3VuaXF1ZTxVc2VyU3R5bGVTaGVldD4oY2FwdGlvbnNPdmVy
cmlkZVN0eWxlU2hlZXQsIGNhcHRpb25zU3R5bGVTaGVldFVSTCwgVmVjdG9yPFN0cmluZz4oKSwg
VmVjdG9yPFN0cmluZz4oKSwgSW5qZWN0SW5BbGxGcmFtZXMsIFVzZXJTdHlsZUF1dGhvckxldmVs
KTsKLSAgICAgICAgICAgIHBhZ2VVc2VyQ29udGVudENvbnRyb2xsZXItPmFkZFVzZXJTdHlsZVNo
ZWV0KG1haW5UaHJlYWROb3JtYWxXb3JsZCgpLCBXVEY6Om1vdmUodXNlclN0eWxlU2hlZXQpLCBJ
bmplY3RJbkV4aXN0aW5nRG9jdW1lbnRzKTsKKyAgICAgICAgICAgIHBhZ2VVc2VyQ29udGVudENv
bnRyb2xsZXItPmFkZFVzZXJTdHlsZVNoZWV0KG1haW5UaHJlYWROb3JtYWxXb3JsZCgpLCBXVEZN
b3ZlKHVzZXJTdHlsZVNoZWV0KSwgSW5qZWN0SW5FeGlzdGluZ0RvY3VtZW50cyk7CiAgICAgICAg
IH0KICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVRpbWVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NVGltZXIuY3BwCmluZGV4IGRmZTAzOGJkNzE3ZGMw
ODQ3N2Y2MjZlZGQ5NzQ2NDg4YWY2ZTJmOTguLmUwNTg5MmY4ZTU5NjcwMjE2YWRkYWI1NmY5YTcx
MTYyNzJjMGQxNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NVGltZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NVGltZXIuY3BwCkBAIC0xNzEsNyArMTcxLDcg
QEAgc3RhdGljIGlubGluZSBib29sIHNob3VsZEZvcndhcmRVc2VyR2VzdHVyZShpbnQgaW50ZXJ2
YWwsIGludCBuZXN0aW5nTGV2ZWwpCiBET01UaW1lcjo6RE9NVGltZXIoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udGV4dCwgc3RkOjp1bmlxdWVfcHRyPFNjaGVkdWxlZEFjdGlvbj4gYWN0aW9u
LCBpbnQgaW50ZXJ2YWwsIGJvb2wgc2luZ2xlU2hvdCkKICAgICA6IFN1c3BlbmRhYmxlVGltZXIo
Y29udGV4dCkKICAgICAsIG1fbmVzdGluZ0xldmVsKGNvbnRleHQudGltZXJOZXN0aW5nTGV2ZWwo
KSkKLSAgICAsIG1fYWN0aW9uKFdURjo6bW92ZShhY3Rpb24pKQorICAgICwgbV9hY3Rpb24oV1RG
TW92ZShhY3Rpb24pKQogICAgICwgbV9vcmlnaW5hbEludGVydmFsKGludGVydmFsKQogICAgICwg
bV90aHJvdHRsZVN0YXRlKFVuZGV0ZXJtaW5lZCkKICAgICAsIG1fY3VycmVudFRpbWVySW50ZXJ2
YWwoaW50ZXJ2YWxDbGFtcGVkVG9NaW5pbXVtKCkpCkBAIC0xOTksNyArMTk5LDcgQEAgaW50IERP
TVRpbWVyOjppbnN0YWxsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIHN0ZDo6dW5p
cXVlX3B0cjxTY2hlZHVsZWQKICAgICAvLyBET01UaW1lciBjb25zdHJ1Y3RvciBwYXNzZXMgb3du
ZXJzaGlwIG9mIHRoZSBpbml0aWFsIHJlZiBvbiB0aGUgb2JqZWN0IHRvIHRoZSBjb25zdHJ1Y3Rv
ci4KICAgICAvLyBUaGlzIHJlZmVyZW5jZSB3aWxsIGJlIHJlbGVhc2VkIGF1dG9tYXRpY2FsbHkg
d2hlbiBhIG9uZS1zaG90IHRpbWVyIGZpcmVzLCB3aGVuIHRoZSBjb250ZXh0CiAgICAgLy8gaXMg
ZGVzdHJveWVkLCBvciBpZiBleHBsaWNpdGx5IGNhbmNlbGxlZCBieSByZW1vdmVCeUlkLiAKLSAg
ICBET01UaW1lciogdGltZXIgPSBuZXcgRE9NVGltZXIoY29udGV4dCwgV1RGOjptb3ZlKGFjdGlv
biksIHRpbWVvdXQsIHNpbmdsZVNob3QpOworICAgIERPTVRpbWVyKiB0aW1lciA9IG5ldyBET01U
aW1lcihjb250ZXh0LCBXVEZNb3ZlKGFjdGlvbiksIHRpbWVvdXQsIHNpbmdsZVNob3QpOwogI2lm
IFBMQVRGT1JNKElPUykKICAgICBpZiAoaXM8RG9jdW1lbnQ+KGNvbnRleHQpKSB7CiAgICAgICAg
IGJvb2wgZGlkRGVmZXJUaW1lb3V0ID0gY29udGV4dC5hY3RpdmVET01PYmplY3RzQXJlU3VzcGVu
ZGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKaW5kZXggNWYxZTczMjAyM2Y1ZWQyYWE5
MWU0OWVjMmI1N2Y3ODBlN2JmNDkwYS4uOTlhOWY1YTBmNzU0NmQ1MjNkZWI0MTdmZTg5YjVmMWU1
MzAyMjc2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcApAQCAtMTUwLDcgKzE1MCw3IEBA
IHB1YmxpYzoKICAgICAgICAgLCBtX21lc3NhZ2UobWVzc2FnZSkKICAgICAgICAgLCBtX29yaWdp
bihzb3VyY2VPcmlnaW4pCiAgICAgICAgICwgbV9zb3VyY2Uoc291cmNlKQotICAgICAgICAsIG1f
Y2hhbm5lbHMoV1RGOjptb3ZlKGNoYW5uZWxzKSkKKyAgICAgICAgLCBtX2NoYW5uZWxzKFdURk1v
dmUoY2hhbm5lbHMpKQogICAgICAgICAsIG1fdGFyZ2V0T3JpZ2luKHRhcmdldE9yaWdpbikKICAg
ICAgICAgLCBtX3N0YWNrVHJhY2Uoc3RhY2tUcmFjZSkKICAgICB7CkBAIC0xNTgsOCArMTU4LDgg
QEAgcHVibGljOgogCiAgICAgUmVmPE1lc3NhZ2VFdmVudD4gZXZlbnQoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdl
UG9ydEFycmF5PiBtZXNzYWdlUG9ydHMgPSBNZXNzYWdlUG9ydDo6ZW50YW5nbGVQb3J0cygqY29u
dGV4dCwgV1RGOjptb3ZlKG1fY2hhbm5lbHMpKTsKLSAgICAgICAgcmV0dXJuIE1lc3NhZ2VFdmVu
dDo6Y3JlYXRlKFdURjo6bW92ZShtZXNzYWdlUG9ydHMpLCBtX21lc3NhZ2UsIG1fb3JpZ2luLCBT
dHJpbmcoKSwgbV9zb3VyY2UpOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZVBvcnRB
cnJheT4gbWVzc2FnZVBvcnRzID0gTWVzc2FnZVBvcnQ6OmVudGFuZ2xlUG9ydHMoKmNvbnRleHQs
IFdURk1vdmUobV9jaGFubmVscykpOworICAgICAgICByZXR1cm4gTWVzc2FnZUV2ZW50OjpjcmVh
dGUoV1RGTW92ZShtZXNzYWdlUG9ydHMpLCBtX21lc3NhZ2UsIG1fb3JpZ2luLCBTdHJpbmcoKSwg
bV9zb3VyY2UpOwogICAgIH0KICAgICBTZWN1cml0eU9yaWdpbiogdGFyZ2V0T3JpZ2luKCkgY29u
c3QgeyByZXR1cm4gbV90YXJnZXRPcmlnaW4uZ2V0KCk7IH0KICAgICBTY3JpcHRDYWxsU3RhY2sq
IHN0YWNrVHJhY2UoKSBjb25zdCB7IHJldHVybiBtX3N0YWNrVHJhY2UuZ2V0KCk7IH0KQEAgLTkx
Niw3ICs5MTYsNyBAQCB2b2lkIERPTVdpbmRvdzo6cG9zdE1lc3NhZ2UoUGFzc1JlZlB0cjxTZXJp
YWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIGNvbnN0IE1lcwogICAgICAgICBzdGFja1RyYWNl
ID0gY3JlYXRlU2NyaXB0Q2FsbFN0YWNrKEpTTWFpblRocmVhZEV4ZWNTdGF0ZTo6Y3VycmVudFN0
YXRlKCksIFNjcmlwdENhbGxTdGFjazo6bWF4Q2FsbFN0YWNrU2l6ZVRvQ2FwdHVyZSk7CiAKICAg
ICAvLyBTY2hlZHVsZSB0aGUgbWVzc2FnZS4KLSAgICBQb3N0TWVzc2FnZVRpbWVyKiB0aW1lciA9
IG5ldyBQb3N0TWVzc2FnZVRpbWVyKHRoaXMsIG1lc3NhZ2UsIHNvdXJjZU9yaWdpbiwgJnNvdXJj
ZSwgV1RGOjptb3ZlKGNoYW5uZWxzKSwgdGFyZ2V0LmdldCgpLCBzdGFja1RyYWNlLnJlbGVhc2Uo
KSk7CisgICAgUG9zdE1lc3NhZ2VUaW1lciogdGltZXIgPSBuZXcgUG9zdE1lc3NhZ2VUaW1lcih0
aGlzLCBtZXNzYWdlLCBzb3VyY2VPcmlnaW4sICZzb3VyY2UsIFdURk1vdmUoY2hhbm5lbHMpLCB0
YXJnZXQuZ2V0KCksIHN0YWNrVHJhY2UucmVsZWFzZSgpKTsKICAgICB0aW1lci0+c3RhcnRPbmVT
aG90KDApOwogfQogCkBAIC0xNjAxLDcgKzE2MDEsNyBAQCBpbnQgRE9NV2luZG93OjpzZXRUaW1l
b3V0KHN0ZDo6dW5pcXVlX3B0cjxTY2hlZHVsZWRBY3Rpb24+IGFjdGlvbiwgaW50IHRpbWVvdXQs
CiAgICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOwogICAgICAgICByZXR1cm4gLTE7CiAg
ICAgfQotICAgIHJldHVybiBET01UaW1lcjo6aW5zdGFsbCgqY29udGV4dCwgV1RGOjptb3ZlKGFj
dGlvbiksIHRpbWVvdXQsIHRydWUpOworICAgIHJldHVybiBET01UaW1lcjo6aW5zdGFsbCgqY29u
dGV4dCwgV1RGTW92ZShhY3Rpb24pLCB0aW1lb3V0LCB0cnVlKTsKIH0KIAogdm9pZCBET01XaW5k
b3c6OmNsZWFyVGltZW91dChpbnQgdGltZW91dElkKQpAQCAtMTYzNSw3ICsxNjM1LDcgQEAgaW50
IERPTVdpbmRvdzo6c2V0SW50ZXJ2YWwoc3RkOjp1bmlxdWVfcHRyPFNjaGVkdWxlZEFjdGlvbj4g
YWN0aW9uLCBpbnQgdGltZW91dCwKICAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7CiAg
ICAgICAgIHJldHVybiAtMTsKICAgICB9Ci0gICAgcmV0dXJuIERPTVRpbWVyOjppbnN0YWxsKCpj
b250ZXh0LCBXVEY6Om1vdmUoYWN0aW9uKSwgdGltZW91dCwgZmFsc2UpOworICAgIHJldHVybiBE
T01UaW1lcjo6aW5zdGFsbCgqY29udGV4dCwgV1RGTW92ZShhY3Rpb24pLCB0aW1lb3V0LCBmYWxz
ZSk7CiB9CiAKIHZvaWQgRE9NV2luZG93OjpjbGVhckludGVydmFsKGludCB0aW1lb3V0SWQpCkBA
IC0xNzA1LDcgKzE3MDUsNyBAQCBib29sIERPTVdpbmRvdzo6aXNTYW1lU2VjdXJpdHlPcmlnaW5B
c01haW5GcmFtZSgpIGNvbnN0CiAKIGJvb2wgRE9NV2luZG93OjphZGRFdmVudExpc3RlbmVyKGNv
bnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4mJiBsaXN0
ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQogewotICAgIGlmICghRXZlbnRUYXJnZXQ6OmFkZEV2ZW50
TGlzdGVuZXIoZXZlbnRUeXBlLCBXVEY6Om1vdmUobGlzdGVuZXIpLCB1c2VDYXB0dXJlKSkKKyAg
ICBpZiAoIUV2ZW50VGFyZ2V0OjphZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgV1RGTW92ZShs
aXN0ZW5lciksIHVzZUNhcHR1cmUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAo
RG9jdW1lbnQqIGRvY3VtZW50ID0gdGhpcy0+ZG9jdW1lbnQoKSkgewpAQCAtMjI0NSw3ICsyMjQ1
LDcgQEAgdm9pZCBET01XaW5kb3c6OnNob3dNb2RhbERpYWxvZyhjb25zdCBTdHJpbmcmIHVybFN0
cmluZywgY29uc3QgU3RyaW5nJiBkaWFsb2dGZWEKICAgICAgICAgcmV0dXJuOwogCiAgICAgV2lu
ZG93RmVhdHVyZXMgd2luZG93RmVhdHVyZXMoZGlhbG9nRmVhdHVyZXNTdHJpbmcsIHNjcmVlbkF2
YWlsYWJsZVJlY3QobV9mcmFtZS0+dmlldygpKSk7Ci0gICAgUmVmUHRyPEZyYW1lPiBkaWFsb2dG
cmFtZSA9IGNyZWF0ZVdpbmRvdyh1cmxTdHJpbmcsIGVtcHR5QXRvbSwgd2luZG93RmVhdHVyZXMs
IGFjdGl2ZVdpbmRvdywgKmZpcnN0RnJhbWUsICptX2ZyYW1lLCBXVEY6Om1vdmUocHJlcGFyZURp
YWxvZ0Z1bmN0aW9uKSk7CisgICAgUmVmUHRyPEZyYW1lPiBkaWFsb2dGcmFtZSA9IGNyZWF0ZVdp
bmRvdyh1cmxTdHJpbmcsIGVtcHR5QXRvbSwgd2luZG93RmVhdHVyZXMsIGFjdGl2ZVdpbmRvdywg
KmZpcnN0RnJhbWUsICptX2ZyYW1lLCBXVEZNb3ZlKHByZXBhcmVEaWFsb2dGdW5jdGlvbikpOwog
ICAgIGlmICghZGlhbG9nRnJhbWUpCiAgICAgICAgIHJldHVybjsKICAgICBkaWFsb2dGcmFtZS0+
cGFnZSgpLT5jaHJvbWUoKS5ydW5Nb2RhbCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RlYnVnUGFn
ZU92ZXJsYXlzLmNwcAppbmRleCAwZWNmODNkOTY5N2Y2NmQyYWZhMzdiZmJhN2QxZDlhNjg2NGY3
ZDhjLi5iMjkxZjk2OTY1NTY3OTIzOWI4OGRjMzMxZDI3NDZiYzZkMzc0M2M0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcApAQCAtMTA3LDcgKzEwNyw3IEBAIGJv
b2wgTW91c2VXaGVlbFJlZ2lvbk92ZXJsYXk6OnVwZGF0ZVJlZ2lvbigpCiAgICAgcmVnaW9uLT50
cmFuc2xhdGUobV9vdmVybGF5LT52aWV3VG9PdmVybGF5T2Zmc2V0KCkpOwogCiAgICAgYm9vbCBy
ZWdpb25DaGFuZ2VkID0gIW1fcmVnaW9uIHx8ICEoKm1fcmVnaW9uID09ICpyZWdpb24pOwotICAg
IG1fcmVnaW9uID0gV1RGOjptb3ZlKHJlZ2lvbik7CisgICAgbV9yZWdpb24gPSBXVEZNb3ZlKHJl
Z2lvbik7CiAgICAgcmV0dXJuIHJlZ2lvbkNoYW5nZWQ7CiB9CiAKQEAgLTEzNyw3ICsxMzcsNyBA
QCBib29sIE5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uT3ZlcmxheTo6dXBkYXRlUmVnaW9uKCkKICAg
ICB9CiAKICAgICBib29sIHJlZ2lvbkNoYW5nZWQgPSAhbV9yZWdpb24gfHwgISgqbV9yZWdpb24g
PT0gKnJlZ2lvbik7Ci0gICAgbV9yZWdpb24gPSBXVEY6Om1vdmUocmVnaW9uKTsKKyAgICBtX3Jl
Z2lvbiA9IFdURk1vdmUocmVnaW9uKTsKICAgICByZXR1cm4gcmVnaW9uQ2hhbmdlZDsKIH0KIApA
QCAtMjQzLDcgKzI0Myw3IEBAIFJlZ2lvbk92ZXJsYXkmIERlYnVnUGFnZU92ZXJsYXlzOjplbnN1
cmVSZWdpb25PdmVybGF5Rm9yRnJhbWUoTWFpbkZyYW1lJiBmcmFtZSwKICAgICBSZWZQdHI8UmVn
aW9uT3ZlcmxheT4gdmlzdWFsaXplciA9IFJlZ2lvbk92ZXJsYXk6OmNyZWF0ZShmcmFtZSwgcmVn
aW9uVHlwZSk7CiAgICAgdmlzdWFsaXplcnNbaW5kZXhPZihyZWdpb25UeXBlKV0gPSB2aXN1YWxp
emVyOwogCi0gICAgbV9mcmFtZVJlZ2lvbk92ZXJsYXlzLmFkZCgmZnJhbWUsIFdURjo6bW92ZSh2
aXN1YWxpemVycykpOworICAgIG1fZnJhbWVSZWdpb25PdmVybGF5cy5hZGQoJmZyYW1lLCBXVEZN
b3ZlKHZpc3VhbGl6ZXJzKSk7CiAgICAgcmV0dXJuICp2aXN1YWxpemVyOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCmluZGV4IGRhYTBmOThmOWMwYTI1NjZlMTA4OWU1
MGQ5ZGQ1NjBiOGVkZjc3ZDMuLjRjNTJhMjhmOTY5NWYwMzQ0YmQyYjFkZWUzMzA3ZmUwNjQ4YzYw
NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCkBAIC0xNDksNyArMTQ5
LDcgQEAgc3RhdGljIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZG9jdW1lbnRGcmFnbWVu
dEZyb21EcmFnRGF0YShEcmFnRGF0YSYgZHJhZ0QKICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgYW5jaG9yLT5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh0aXRs
ZSksIElHTk9SRV9FWENFUFRJT04pOwogICAgICAgICAgICAgICAgIFJlZjxEb2N1bWVudEZyYWdt
ZW50PiBmcmFnbWVudCA9IGRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTsKLSAgICAg
ICAgICAgICAgICBmcmFnbWVudC0+YXBwZW5kQ2hpbGQoV1RGOjptb3ZlKGFuY2hvciksIElHTk9S
RV9FWENFUFRJT04pOworICAgICAgICAgICAgICAgIGZyYWdtZW50LT5hcHBlbmRDaGlsZChXVEZN
b3ZlKGFuY2hvciksIElHTk9SRV9FWENFUFRJT04pOwogICAgICAgICAgICAgICAgIHJldHVybiBm
cmFnbWVudC5wdHIoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtNTMxLDcgKzUzMSw3
IEBAIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OmNvbmNsdWRlRWRpdERyYWcoRHJhZ0RhdGEmIGRyYWdE
YXRhKQogICAgICAgICAgICAgICAgICAgICBvcHRpb25zIHw9IFJlcGxhY2VTZWxlY3Rpb25Db21t
YW5kOjpTbWFydFJlcGxhY2U7CiAgICAgICAgICAgICAgICAgaWYgKGNob3NlUGxhaW5UZXh0KQog
ICAgICAgICAgICAgICAgICAgICBvcHRpb25zIHw9IFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpN
YXRjaFN0eWxlOwotICAgICAgICAgICAgICAgIGFwcGx5Q29tbWFuZChSZXBsYWNlU2VsZWN0aW9u
Q29tbWFuZDo6Y3JlYXRlKCptX2RvY3VtZW50VW5kZXJNb3VzZSwgV1RGOjptb3ZlKGZyYWdtZW50
KSwgb3B0aW9ucykpOworICAgICAgICAgICAgICAgIGFwcGx5Q29tbWFuZChSZXBsYWNlU2VsZWN0
aW9uQ29tbWFuZDo6Y3JlYXRlKCptX2RvY3VtZW50VW5kZXJNb3VzZSwgV1RGTW92ZShmcmFnbWVu
dCksIG9wdGlvbnMpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0gZWxzZSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRnJhbWUuY3BwCmluZGV4IGEzOTRlZGE0MjNjMzY2NGZlZTlmMGY5MjM4OGM1MWJjMjYz
ZDQ2ZjMuLmI3NjMzNjhkMjY1ZGY3NjhiYzAzMTY2ZDhlN2Y4ZjE1YmJjZDlmOGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRnJhbWUuY3BwCkBAIC0yNTMsNyArMjUzLDcgQEAgdm9pZCBGcmFtZTo6c2V0VmlldyhSZWZQ
dHI8RnJhbWVWaWV3PiYmIHZpZXcpCiAgICAgCiAgICAgZXZlbnRIYW5kbGVyKCkuY2xlYXIoKTsK
IAotICAgIG1fdmlldyA9IFdURjo6bW92ZSh2aWV3KTsKKyAgICBtX3ZpZXcgPSBXVEZNb3ZlKHZp
ZXcpOwogCiAgICAgLy8gT25seSBvbmUgZm9ybSBzdWJtaXNzaW9uIGlzIGFsbG93ZWQgcGVyIHZp
ZXcgb2YgYSBwYXJ0LgogICAgIC8vIFNpbmNlIHRoaXMgcGFydCBtYXkgYmUgZ2V0dGluZyByZXVz
ZWQgYXMgYSByZXN1bHQgb2YgYmVpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRleCBh
NWY0YjgyOWZkY2ZhOGZhOWFmMTUyZTRkOThjMTE5ZTAwYzRiNmMwLi4yNjE4ODgzOTlkN2IzNzc4
ZTQ2MjFhOTQzYmNjYTg5NDY0NjBkZDBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0ZyYW1lVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCkBA
IC0zMTkyLDcgKzMxOTIsNyBAQCB2b2lkIEZyYW1lVmlldzo6c2VuZFJlc2l6ZUV2ZW50SWZOZWVk
ZWQoKQogICAgICAgICAvLyBGSVhNRTogUXVldWVpbmcgdGhpcyBldmVudCBmb3IgYW4gdW5wcmVk
aWN0YWJsZSB0aW1lIGluIHRoZSBmdXR1cmUgc2VlbXMKICAgICAgICAgLy8gaW50cmluc2ljYWxs
eSByYWN5LiBCeSB0aGUgdGltZSB0aGlzIHJlc2l6ZSBldmVudCBmaXJlcywgdGhlIGZyYW1lIG1p
Z2h0CiAgICAgICAgIC8vIGJlIHJlc2l6ZWQgYWdhaW4sIHNvIHdlIGNvdWxkIGVuZCB1cCB3aXRo
IHR3byByZXNpemUgZXZlbnRzIGZvciB0aGUgc2FtZSBzaXplLgotICAgICAgICBmcmFtZSgpLmRv
Y3VtZW50KCktPmVucXVldWVXaW5kb3dFdmVudChXVEY6Om1vdmUocmVzaXplRXZlbnQpKTsKKyAg
ICAgICAgZnJhbWUoKS5kb2N1bWVudCgpLT5lbnF1ZXVlV2luZG93RXZlbnQoV1RGTW92ZShyZXNp
emVFdmVudCkpOwogICAgIH0KIAogICAgIGlmIChJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Omhh
c0Zyb250ZW5kcygpICYmIGlzTWFpbkZyYW1lKSB7CkBAIC0zMzgwLDcgKzMzODAsNyBAQCB2b2lk
IEZyYW1lVmlldzo6dXBkYXRlT3ZlcmZsb3dTdGF0dXMoYm9vbCBob3Jpem9udGFsT3ZlcmZsb3cs
IGJvb2wgdmVydGljYWxPdmVyZgogICAgICAgICAgICAgdmVydGljYWxPdmVyZmxvd0NoYW5nZWQs
IHZlcnRpY2FsT3ZlcmZsb3cpOwogICAgICAgICBvdmVyZmxvd0V2ZW50LT5zZXRUYXJnZXQodmll
d3BvcnRSZW5kZXJlci0+ZWxlbWVudCgpKTsKIAotICAgICAgICBmcmFtZSgpLmRvY3VtZW50KCkt
PmVucXVldWVPdmVyZmxvd0V2ZW50KFdURjo6bW92ZShvdmVyZmxvd0V2ZW50KSk7CisgICAgICAg
IGZyYW1lKCkuZG9jdW1lbnQoKS0+ZW5xdWV1ZU92ZXJmbG93RXZlbnQoV1RGTW92ZShvdmVyZmxv
d0V2ZW50KSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCAzOTAwYmE1M2JmZjY0
NjZiYjE0NTQ3OGJjZTJhNmYzMGU1ZWJlNjA5Li5mZGRjNTBkZjhkM2JiMzU5ZTM4YmVjY2IyMmYy
YWZhYWRhM2M2N2E3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTE2NSw3ICsxNjUsNyBAQCBQYWdl
OjpQYWdlKFBhZ2VDb25maWd1cmF0aW9uJiBwYWdlQ29uZmlndXJhdGlvbikKICNlbmRpZgogICAg
ICwgbV9zZXR0aW5ncyhTZXR0aW5nczo6Y3JlYXRlKHRoaXMpKQogICAgICwgbV9wcm9ncmVzcyhz
dGQ6Om1ha2VfdW5pcXVlPFByb2dyZXNzVHJhY2tlcj4oKnBhZ2VDb25maWd1cmF0aW9uLnByb2dy
ZXNzVHJhY2tlckNsaWVudCkpCi0gICAgLCBtX2JhY2tGb3J3YXJkQ29udHJvbGxlcihzdGQ6Om1h
a2VfdW5pcXVlPEJhY2tGb3J3YXJkQ29udHJvbGxlcj4oKnRoaXMsIFdURjo6bW92ZShwYWdlQ29u
ZmlndXJhdGlvbi5iYWNrRm9yd2FyZENsaWVudCkpKQorICAgICwgbV9iYWNrRm9yd2FyZENvbnRy
b2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxCYWNrRm9yd2FyZENvbnRyb2xsZXI+KCp0aGlzLCBXVEZN
b3ZlKHBhZ2VDb25maWd1cmF0aW9uLmJhY2tGb3J3YXJkQ2xpZW50KSkpCiAgICAgLCBtX21haW5G
cmFtZShNYWluRnJhbWU6OmNyZWF0ZSgqdGhpcywgcGFnZUNvbmZpZ3VyYXRpb24pKQogICAgICwg
bV90aGVtZShSZW5kZXJUaGVtZTo6dGhlbWVGb3JQYWdlKHRoaXMpKQogICAgICwgbV9lZGl0b3JD
bGllbnQoKnBhZ2VDb25maWd1cmF0aW9uLmVkaXRvckNsaWVudCkKQEAgLTIxNywxMSArMjE3LDEx
IEBAIFBhZ2U6OlBhZ2UoUGFnZUNvbmZpZ3VyYXRpb24mIHBhZ2VDb25maWd1cmF0aW9uKQogI2Vu
ZGlmCiAgICAgLCBtX2xhc3RTcGF0aWFsTmF2aWdhdGlvbkNhbmRpZGF0ZXNDb3VudCgwKSAvLyBO
T1RFOiBPbmx5IGNhbGxlZCBmcm9tIEludGVybmFscyBmb3IgU3BhdGlhbCBOYXZpZ2F0aW9uIHRl
c3RpbmcuCiAgICAgLCBtX2ZvcmJpZFByb21wdHNEZXB0aCgwKQotICAgICwgbV9hcHBsaWNhdGlv
bkNhY2hlU3RvcmFnZShwYWdlQ29uZmlndXJhdGlvbi5hcHBsaWNhdGlvbkNhY2hlU3RvcmFnZSA/
ICpXVEY6Om1vdmUocGFnZUNvbmZpZ3VyYXRpb24uYXBwbGljYXRpb25DYWNoZVN0b3JhZ2UpIDog
QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnNpbmdsZXRvbigpKQotICAgICwgbV9kYXRhYmFzZVBy
b3ZpZGVyKCpXVEY6Om1vdmUocGFnZUNvbmZpZ3VyYXRpb24uZGF0YWJhc2VQcm92aWRlcikpCi0g
ICAgLCBtX3N0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcigqV1RGOjptb3ZlKHBhZ2VDb25maWd1cmF0
aW9uLnN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcikpCi0gICAgLCBtX3VzZXJDb250ZW50Q29udHJv
bGxlcihXVEY6Om1vdmUocGFnZUNvbmZpZ3VyYXRpb24udXNlckNvbnRlbnRDb250cm9sbGVyKSkK
LSAgICAsIG1fdmlzaXRlZExpbmtTdG9yZSgqV1RGOjptb3ZlKHBhZ2VDb25maWd1cmF0aW9uLnZp
c2l0ZWRMaW5rU3RvcmUpKQorICAgICwgbV9hcHBsaWNhdGlvbkNhY2hlU3RvcmFnZShwYWdlQ29u
ZmlndXJhdGlvbi5hcHBsaWNhdGlvbkNhY2hlU3RvcmFnZSA/ICpXVEZNb3ZlKHBhZ2VDb25maWd1
cmF0aW9uLmFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlKSA6IEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdl
OjpzaW5nbGV0b24oKSkKKyAgICAsIG1fZGF0YWJhc2VQcm92aWRlcigqV1RGTW92ZShwYWdlQ29u
ZmlndXJhdGlvbi5kYXRhYmFzZVByb3ZpZGVyKSkKKyAgICAsIG1fc3RvcmFnZU5hbWVzcGFjZVBy
b3ZpZGVyKCpXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uLnN0b3JhZ2VOYW1lc3BhY2VQcm92aWRl
cikpCisgICAgLCBtX3VzZXJDb250ZW50Q29udHJvbGxlcihXVEZNb3ZlKHBhZ2VDb25maWd1cmF0
aW9uLnVzZXJDb250ZW50Q29udHJvbGxlcikpCisgICAgLCBtX3Zpc2l0ZWRMaW5rU3RvcmUoKldU
Rk1vdmUocGFnZUNvbmZpZ3VyYXRpb24udmlzaXRlZExpbmtTdG9yZSkpCiAgICAgLCBtX3Nlc3Np
b25JRChTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSkKICAgICAsIG1faXNDbG9zaW5nKGZh
bHNlKQogICAgICwgbV90YWJTdXNwZW5zaW9uVGltZXIoKnRoaXMsICZQYWdlOjp0YWJTdXNwZW5z
aW9uVGltZXJGaXJlZCkKQEAgLTExMTQsNyArMTExNCw3IEBAIFN0b3JhZ2VOYW1lc3BhY2UqIFBh
Z2U6OnNlc3Npb25TdG9yYWdlKGJvb2wgb3B0aW9uYWxDcmVhdGUpCiAKIHZvaWQgUGFnZTo6c2V0
U2Vzc2lvblN0b3JhZ2UoUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2U+JiYgbmV3U3RvcmFnZSkKIHsK
LSAgICBtX3Nlc3Npb25TdG9yYWdlID0gV1RGOjptb3ZlKG5ld1N0b3JhZ2UpOworICAgIG1fc2Vz
c2lvblN0b3JhZ2UgPSBXVEZNb3ZlKG5ld1N0b3JhZ2UpOwogfQogCiBib29sIFBhZ2U6Omhhc0N1
c3RvbUhUTUxUb2tlbml6ZXJUaW1lRGVsYXkoKSBjb25zdApAQCAtMTcwNCw3ICsxNzA0LDcgQEAg
dm9pZCBQYWdlOjpzZXRVc2VyQ29udGVudENvbnRyb2xsZXIoVXNlckNvbnRlbnRDb250cm9sbGVy
KiB1c2VyQ29udGVudENvbnRyb2xsZXIKIHZvaWQgUGFnZTo6c2V0U3RvcmFnZU5hbWVzcGFjZVBy
b3ZpZGVyKFJlZjxTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI+JiYgc3RvcmFnZU5hbWVzcGFjZVBy
b3ZpZGVyKQogewogICAgIG1fc3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLT5yZW1vdmVQYWdlKCp0
aGlzKTsKLSAgICBtX3N0b3JhZ2VOYW1lc3BhY2VQcm92aWRlciA9IFdURjo6bW92ZShzdG9yYWdl
TmFtZXNwYWNlUHJvdmlkZXIpOworICAgIG1fc3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyID0gV1RG
TW92ZShzdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIpOwogICAgIG1fc3RvcmFnZU5hbWVzcGFjZVBy
b3ZpZGVyLT5hZGRQYWdlKCp0aGlzKTsKIAogICAgIC8vIFRoaXMgbmVlZHMgdG8gcmVzZXQgYWxs
IHRoZSBsb2NhbCBzdG9yYWdlIG5hbWVzcGFjZXMgb2YgYWxsIHRoZSBwYWdlcy4KQEAgLTE3MTgs
NyArMTcxOCw3IEBAIFZpc2l0ZWRMaW5rU3RvcmUmIFBhZ2U6OnZpc2l0ZWRMaW5rU3RvcmUoKQog
dm9pZCBQYWdlOjpzZXRWaXNpdGVkTGlua1N0b3JlKFJlZjxWaXNpdGVkTGlua1N0b3JlPiYmIHZp
c2l0ZWRMaW5rU3RvcmUpCiB7CiAgICAgbV92aXNpdGVkTGlua1N0b3JlLT5yZW1vdmVQYWdlKCp0
aGlzKTsKLSAgICBtX3Zpc2l0ZWRMaW5rU3RvcmUgPSBXVEY6Om1vdmUodmlzaXRlZExpbmtTdG9y
ZSk7CisgICAgbV92aXNpdGVkTGlua1N0b3JlID0gV1RGTW92ZSh2aXNpdGVkTGlua1N0b3JlKTsK
ICAgICBtX3Zpc2l0ZWRMaW5rU3RvcmUtPmFkZFBhZ2UoKnRoaXMpOwogCiAgICAgaW52YWxpZGF0
ZVN0eWxlc0ZvckFsbExpbmtzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2VDb25zb2xlQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbnNvbGVDbGll
bnQuY3BwCmluZGV4IDU5MDc4OWJkMDMwZGY3MjQwZDczNTAxOGQ4OTI5NjA5NDhmYjZiYWYuLjE4
MTQwOTEzZTg5MDkzYmQyN2M0ZmVkNTFiMjVjZTQ3ZTNhYjc1NzAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbnNvbGVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZUNvbnNvbGVDbGllbnQuY3BwCkBAIC0xMTgsNyArMTE4LDcgQEAgdm9pZCBQYWdl
Q29uc29sZUNsaWVudDo6YWRkTWVzc2FnZShNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZUxl
dmVsIGxldmVsLCBjb24KIAogdm9pZCBQYWdlQ29uc29sZUNsaWVudDo6YWRkTWVzc2FnZShNZXNz
YWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZUxldmVsIGxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3Nh
Z2UsIFJlZlB0cjxTY3JpcHRDYWxsU3RhY2s+JiYgY2FsbFN0YWNrKQogewotICAgIGFkZE1lc3Nh
Z2Uoc291cmNlLCBsZXZlbCwgbWVzc2FnZSwgU3RyaW5nKCksIDAsIDAsIFdURjo6bW92ZShjYWxs
U3RhY2spLCAwKTsKKyAgICBhZGRNZXNzYWdlKHNvdXJjZSwgbGV2ZWwsIG1lc3NhZ2UsIFN0cmlu
ZygpLCAwLCAwLCBXVEZNb3ZlKGNhbGxTdGFjayksIDApOwogfQogCiB2b2lkIFBhZ2VDb25zb2xl
Q2xpZW50OjphZGRNZXNzYWdlKE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlTGV2ZWwgbGV2
ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZVRleHQsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkVVJM
LCB1bnNpZ25lZCBzdWdnZXN0ZWRMaW5lTnVtYmVyLCB1bnNpZ25lZCBzdWdnZXN0ZWRDb2x1bW5O
dW1iZXIsIFJlZlB0cjxTY3JpcHRDYWxsU3RhY2s+JiYgY2FsbFN0YWNrLCBKU0M6OkV4ZWNTdGF0
ZSogc3RhdGUsIHVuc2lnbmVkIGxvbmcgcmVxdWVzdElkZW50aWZpZXIpCkBAIC0xMjksNyArMTI5
LDcgQEAgdm9pZCBQYWdlQ29uc29sZUNsaWVudDo6YWRkTWVzc2FnZShNZXNzYWdlU291cmNlIHNv
dXJjZSwgTWVzc2FnZUxldmVsIGxldmVsLCBjb24KICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVj
dG9yOjpDb25zb2xlTWVzc2FnZT4gbWVzc2FnZTsKIAogICAgIGlmIChjYWxsU3RhY2spCi0gICAg
ICAgIG1lc3NhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+
KHNvdXJjZSwgTWVzc2FnZVR5cGU6OkxvZywgbGV2ZWwsIG1lc3NhZ2VUZXh0LCBXVEY6Om1vdmUo
Y2FsbFN0YWNrKSwgcmVxdWVzdElkZW50aWZpZXIpOworICAgICAgICBtZXNzYWdlID0gc3RkOjpt
YWtlX3VuaXF1ZTxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihzb3VyY2UsIE1lc3NhZ2VUeXBl
OjpMb2csIGxldmVsLCBtZXNzYWdlVGV4dCwgV1RGTW92ZShjYWxsU3RhY2spLCByZXF1ZXN0SWRl
bnRpZmllcik7CiAgICAgZWxzZQogICAgICAgICBtZXNzYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxJ
bnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPihzb3VyY2UsIE1lc3NhZ2VUeXBlOjpMb2csIGxldmVs
LCBtZXNzYWdlVGV4dCwgc3VnZ2VzdGVkVVJMLCBzdWdnZXN0ZWRMaW5lTnVtYmVyLCBzdWdnZXN0
ZWRDb2x1bW5OdW1iZXIsIHN0YXRlLCByZXF1ZXN0SWRlbnRpZmllcik7CiAKQEAgLTEzNyw3ICsx
MzcsNyBAQCB2b2lkIFBhZ2VDb25zb2xlQ2xpZW50OjphZGRNZXNzYWdlKE1lc3NhZ2VTb3VyY2Ug
c291cmNlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbgogICAgIHVuc2lnbmVkIGxpbmVOdW1iZXIg
PSBtZXNzYWdlLT5saW5lKCk7CiAgICAgdW5zaWduZWQgY29sdW1uTnVtYmVyID0gbWVzc2FnZS0+
Y29sdW1uKCk7CiAKLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmFkZE1lc3NhZ2VUb0Nv
bnNvbGUobV9wYWdlLCBXVEY6Om1vdmUobWVzc2FnZSkpOworICAgIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6YWRkTWVzc2FnZVRvQ29uc29sZShtX3BhZ2UsIFdURk1vdmUobWVzc2FnZSkpOwog
CiAgICAgaWYgKHNvdXJjZSA9PSBNZXNzYWdlU291cmNlOjpDU1MpCiAgICAgICAgIHJldHVybjsK
QEAgLTE2NSw3ICsxNjUsNyBAQCB2b2lkIFBhZ2VDb25zb2xlQ2xpZW50OjptZXNzYWdlV2l0aFR5
cGVBbmRMZXZlbChNZXNzYWdlVHlwZSB0eXBlLCBNZXNzYWdlTGV2ZWwgbAogICAgIHVuc2lnbmVk
IGxpbmVOdW1iZXIgPSBtZXNzYWdlLT5saW5lKCk7CiAgICAgdW5zaWduZWQgY29sdW1uTnVtYmVy
ID0gbWVzc2FnZS0+Y29sdW1uKCk7CiAKLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmFk
ZE1lc3NhZ2VUb0NvbnNvbGUobV9wYWdlLCBXVEY6Om1vdmUobWVzc2FnZSkpOworICAgIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6YWRkTWVzc2FnZVRvQ29uc29sZShtX3BhZ2UsIFdURk1vdmUo
bWVzc2FnZSkpOwogCiAgICAgaWYgKG1fcGFnZS51c2VzRXBoZW1lcmFsU2Vzc2lvbigpKQogICAg
ICAgICByZXR1cm47CkBAIC0xNzQsMTIgKzE3NCwxMiBAQCB2b2lkIFBhZ2VDb25zb2xlQ2xpZW50
OjptZXNzYWdlV2l0aFR5cGVBbmRMZXZlbChNZXNzYWdlVHlwZSB0eXBlLCBNZXNzYWdlTGV2ZWwg
bAogICAgICAgICBtX3BhZ2UuY2hyb21lKCkuY2xpZW50KCkuYWRkTWVzc2FnZVRvQ29uc29sZShN
ZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCBsZXZlbCwgbWVzc2FnZVRleHQsIGxpbmVOdW1iZXIs
IGNvbHVtbk51bWJlciwgdXJsKTsKIAogICAgIGlmIChtX3BhZ2Uuc2V0dGluZ3MoKS5sb2dzUGFn
ZU1lc3NhZ2VzVG9TeXN0ZW1Db25zb2xlRW5hYmxlZCgpIHx8IFBhZ2VDb25zb2xlQ2xpZW50Ojpz
aG91bGRQcmludEV4Y2VwdGlvbnMoKSkKLSAgICAgICAgQ29uc29sZUNsaWVudDo6cHJpbnRDb25z
b2xlTWVzc2FnZVdpdGhBcmd1bWVudHMoTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgdHlwZSwg
bGV2ZWwsIGV4ZWMsIFdURjo6bW92ZShhcmd1bWVudHMpKTsKKyAgICAgICAgQ29uc29sZUNsaWVu
dDo6cHJpbnRDb25zb2xlTWVzc2FnZVdpdGhBcmd1bWVudHMoTWVzc2FnZVNvdXJjZTo6Q29uc29s
ZUFQSSwgdHlwZSwgbGV2ZWwsIGV4ZWMsIFdURk1vdmUoYXJndW1lbnRzKSk7CiB9CiAKIHZvaWQg
UGFnZUNvbnNvbGVDbGllbnQ6OmNvdW50KEpTQzo6RXhlY1N0YXRlKiBleGVjLCBSZWZQdHI8U2Ny
aXB0QXJndW1lbnRzPiYmIGFyZ3VtZW50cykKIHsKLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmNvbnNvbGVDb3VudChtX3BhZ2UsIGV4ZWMsIFdURjo6bW92ZShhcmd1bWVudHMpKTsKKyAg
ICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNvbnNvbGVDb3VudChtX3BhZ2UsIGV4ZWMsIFdU
Rk1vdmUoYXJndW1lbnRzKSk7CiB9CiAKIHZvaWQgUGFnZUNvbnNvbGVDbGllbnQ6OnByb2ZpbGUo
SlNDOjpFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgdGl0bGUpCkBAIC0xOTAsNyArMTkw
LDcgQEAgdm9pZCBQYWdlQ29uc29sZUNsaWVudDo6cHJvZmlsZShKU0M6OkV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgU3RyaW5nJiB0aXRsZSkKIHZvaWQgUGFnZUNvbnNvbGVDbGllbnQ6OnByb2ZpbGVF
bmQoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgdGl0bGUpCiB7CiAgICAgaWYg
KFJlZlB0cjxKU0M6OlByb2ZpbGU+IHByb2ZpbGUgPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OnN0b3BQcm9maWxpbmcobV9wYWdlLCBleGVjLCB0aXRsZSkpCi0gICAgICAgIG1fcHJvZmlsZXMu
YXBwZW5kKFdURjo6bW92ZShwcm9maWxlKSk7CisgICAgICAgIG1fcHJvZmlsZXMuYXBwZW5kKFdU
Rk1vdmUocHJvZmlsZSkpOwogfQogCiB2b2lkIFBhZ2VDb25zb2xlQ2xpZW50Ojp0aW1lKEpTQzo6
RXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nJiB0aXRsZSkKQEAgLTIwMSwxMiArMjAxLDEyIEBAIHZv
aWQgUGFnZUNvbnNvbGVDbGllbnQ6OnRpbWUoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBTdHJpbmcm
IHRpdGxlKQogdm9pZCBQYWdlQ29uc29sZUNsaWVudDo6dGltZUVuZChKU0M6OkV4ZWNTdGF0ZSog
ZXhlYywgY29uc3QgU3RyaW5nJiB0aXRsZSkKIHsKICAgICBSZWZQdHI8U2NyaXB0Q2FsbFN0YWNr
PiBjYWxsU3RhY2soY3JlYXRlU2NyaXB0Q2FsbFN0YWNrRm9yQ29uc29sZShleGVjLCAxKSk7Ci0g
ICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzdG9wQ29uc29sZVRpbWluZyhtX3BhZ2UubWFp
bkZyYW1lKCksIHRpdGxlLCBXVEY6Om1vdmUoY2FsbFN0YWNrKSk7CisgICAgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpzdG9wQ29uc29sZVRpbWluZyhtX3BhZ2UubWFpbkZyYW1lKCksIHRpdGxl
LCBXVEZNb3ZlKGNhbGxTdGFjaykpOwogfQogCiB2b2lkIFBhZ2VDb25zb2xlQ2xpZW50Ojp0aW1l
U3RhbXAoSlNDOjpFeGVjU3RhdGUqLCBSZWZQdHI8U2NyaXB0QXJndW1lbnRzPiYmIGFyZ3VtZW50
cykKIHsKLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNvbnNvbGVUaW1lU3RhbXAobV9w
YWdlLm1haW5GcmFtZSgpLCBXVEY6Om1vdmUoYXJndW1lbnRzKSk7CisgICAgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpjb25zb2xlVGltZVN0YW1wKG1fcGFnZS5tYWluRnJhbWUoKSwgV1RGTW92
ZShhcmd1bWVudHMpKTsKIH0KIAogdm9pZCBQYWdlQ29uc29sZUNsaWVudDo6Y2xlYXJQcm9maWxl
cygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VPdmVybGF5Q29udHJvbGxl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VPdmVybGF5Q29udHJvbGxlci5jcHAKaW5k
ZXggZmNkOWQ3ZWIzZWNiMGNiYzBmODdjNWZjZjhhMWZjMmU0Yjg0ODk1OC4uODJiYTNmNmE3OWVi
ZTAyMzNiNzU2ZmUwMTU0ZmNjMjMwM2M2Y2QzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlT3ZlcmxheUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZU92ZXJsYXlDb250cm9sbGVyLmNwcApAQCAtMTI1LDcgKzEyNSw3IEBAIHZvaWQgUGFnZU92
ZXJsYXlDb250cm9sbGVyOjppbnN0YWxsUGFnZU92ZXJsYXkoUGFzc1JlZlB0cjxQYWdlT3Zlcmxh
eT4gcGFnZU92ZXJsCiAgICAgfQogCiAgICAgR3JhcGhpY3NMYXllciYgcmF3TGF5ZXIgPSAqbGF5
ZXI7Ci0gICAgbV9vdmVybGF5R3JhcGhpY3NMYXllcnMuc2V0KG92ZXJsYXkuZ2V0KCksIFdURjo6
bW92ZShsYXllcikpOworICAgIG1fb3ZlcmxheUdyYXBoaWNzTGF5ZXJzLnNldChvdmVybGF5Lmdl
dCgpLCBXVEZNb3ZlKGxheWVyKSk7CiAKICAgICB1cGRhdGVGb3JjZVN5bmNocm9ub3VzU2Nyb2xs
TGF5ZXJQb3NpdGlvblVwZGF0ZXMoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9UZXh0SW5kaWNhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVGV4dEluZGljYXRvci5j
cHAKaW5kZXggYmIzNWIxYjQyYzVkMTM0YmJiYTU5NWVlYzZkOTJkYmI0NTI2NTg3NS4uZmQwYzBi
YTczMzk1Y2Q2MzMxMzQ4Zjc5ZTAxNzk2YmM4N2QwYTEzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9UZXh0SW5kaWNhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Rl
eHRJbmRpY2F0b3IuY3BwCkBAIC0xNTUsNyArMTU1LDcgQEAgc3RhdGljIFJlZlB0cjxJbWFnZT4g
dGFrZVNuYXBzaG90KEZyYW1lJiBmcmFtZSwgSW50UmVjdCByZWN0LCBTbmFwc2hvdE9wdGlvbnMg
b3AKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgc2NhbGVG
YWN0b3IgPSBidWZmZXItPnJlc29sdXRpb25TY2FsZSgpOwotICAgIHJldHVybiBJbWFnZUJ1ZmZl
cjo6c2lua0ludG9JbWFnZShXVEY6Om1vdmUoYnVmZmVyKSwgVW5zY2FsZWQpOworICAgIHJldHVy
biBJbWFnZUJ1ZmZlcjo6c2lua0ludG9JbWFnZShXVEZNb3ZlKGJ1ZmZlciksIFVuc2NhbGVkKTsK
IH0KIAogc3RhdGljIGJvb2wgdGFrZVNuYXBzaG90cyhUZXh0SW5kaWNhdG9yRGF0YSYgZGF0YSwg
RnJhbWUmIGZyYW1lLCBJbnRSZWN0IHNuYXBzaG90UmVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvVXNlckNvbnRlbnRDb250cm9sbGVyLmNwcAppbmRleCBmZjllMmRhNjQ0ZTIxMDFiMTM0M2Zk
MjhjODZjZTBlNGRhYTQyMmQ2Li5kZmU4ZTM4ZjQyZDM4ZDgyZDYxNTU2NjBjNTRiMWJjNGQ3OTZk
NWE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50Q29udHJvbGxl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudENvbnRyb2xsZXIuY3Bw
CkBAIC04Miw3ICs4Miw3IEBAIHZvaWQgVXNlckNvbnRlbnRDb250cm9sbGVyOjphZGRVc2VyU2Ny
aXB0KERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIHN0ZDo6dW5pcXVlX3B0CiAgICAgYXV0byYgc2Ny
aXB0c0luV29ybGQgPSBtX3VzZXJTY3JpcHRzLT5hZGQoJndvcmxkLCBudWxscHRyKS5pdGVyYXRv
ci0+dmFsdWU7CiAgICAgaWYgKCFzY3JpcHRzSW5Xb3JsZCkKICAgICAgICAgc2NyaXB0c0luV29y
bGQgPSBzdGQ6Om1ha2VfdW5pcXVlPFVzZXJTY3JpcHRWZWN0b3I+KCk7Ci0gICAgc2NyaXB0c0lu
V29ybGQtPmFwcGVuZChXVEY6Om1vdmUodXNlclNjcmlwdCkpOworICAgIHNjcmlwdHNJbldvcmxk
LT5hcHBlbmQoV1RGTW92ZSh1c2VyU2NyaXB0KSk7CiB9CiAKIHZvaWQgVXNlckNvbnRlbnRDb250
cm9sbGVyOjpyZW1vdmVVc2VyU2NyaXB0KERPTVdyYXBwZXJXb3JsZCYgd29ybGQsIGNvbnN0IFVS
TCYgdXJsKQpAQCAtMTIwLDcgKzEyMCw3IEBAIHZvaWQgVXNlckNvbnRlbnRDb250cm9sbGVyOjph
ZGRVc2VyU3R5bGVTaGVldChET01XcmFwcGVyV29ybGQmIHdvcmxkLCBzdGQ6OnVuaXF1CiAgICAg
YXV0byYgc3R5bGVTaGVldHNJbldvcmxkID0gbV91c2VyU3R5bGVTaGVldHMtPmFkZCgmd29ybGQs
IG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKICAgICBpZiAoIXN0eWxlU2hlZXRzSW5Xb3JsZCkK
ICAgICAgICAgc3R5bGVTaGVldHNJbldvcmxkID0gc3RkOjptYWtlX3VuaXF1ZTxVc2VyU3R5bGVT
aGVldFZlY3Rvcj4oKTsKLSAgICBzdHlsZVNoZWV0c0luV29ybGQtPmFwcGVuZChXVEY6Om1vdmUo
dXNlclN0eWxlU2hlZXQpKTsKKyAgICBzdHlsZVNoZWV0c0luV29ybGQtPmFwcGVuZChXVEZNb3Zl
KHVzZXJTdHlsZVNoZWV0KSk7CiAKICAgICBpZiAoaW5qZWN0aW9uVGltZSA9PSBJbmplY3RJbkV4
aXN0aW5nRG9jdW1lbnRzKQogICAgICAgICBpbnZhbGlkYXRlSW5qZWN0ZWRTdHlsZVNoZWV0Q2Fj
aGVJbkFsbEZyYW1lcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyU2Ny
aXB0LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJTY3JpcHQuaAppbmRleCBjYTFkYTM4ZjJh
ZjhlZmU3OTU0ZDlkNDE4YTIxMDdhY2M3MTQ2YmQ0Li43N2YyNWM3NzRlOWE2OTJlZmM1MzI3YTE0
YTIwZDg2YzYwMDE1OTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJTY3Jp
cHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJTY3JpcHQuaApAQCAtNDUsOCArNDUs
OCBAQCBwdWJsaWM6CiAgICAgVXNlclNjcmlwdChjb25zdCBTdHJpbmcmIHNvdXJjZSwgY29uc3Qg
VVJMJiB1cmwsIFZlY3RvcjxTdHJpbmc+JiYgd2hpdGVsaXN0LCBWZWN0b3I8U3RyaW5nPiYmIGJs
YWNrbGlzdCwgVXNlclNjcmlwdEluamVjdGlvblRpbWUgaW5qZWN0aW9uVGltZSwgVXNlckNvbnRl
bnRJbmplY3RlZEZyYW1lcyBpbmplY3RlZEZyYW1lcykKICAgICAgICAgOiBtX3NvdXJjZShzb3Vy
Y2UpCiAgICAgICAgICwgbV91cmwodXJsKQotICAgICAgICAsIG1fd2hpdGVsaXN0KFdURjo6bW92
ZSh3aGl0ZWxpc3QpKQotICAgICAgICAsIG1fYmxhY2tsaXN0KFdURjo6bW92ZShibGFja2xpc3Qp
KQorICAgICAgICAsIG1fd2hpdGVsaXN0KFdURk1vdmUod2hpdGVsaXN0KSkKKyAgICAgICAgLCBt
X2JsYWNrbGlzdChXVEZNb3ZlKGJsYWNrbGlzdCkpCiAgICAgICAgICwgbV9pbmplY3Rpb25UaW1l
KGluamVjdGlvblRpbWUpCiAgICAgICAgICwgbV9pbmplY3RlZEZyYW1lcyhpbmplY3RlZEZyYW1l
cykKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJTdHlsZVNoZWV0
LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJTdHlsZVNoZWV0LmgKaW5kZXggZDA1NmVkZmIw
NGVhZGExYjhkZjJlMWM1ZTllNTBkOWUxNjA0MDE5Yy4uYmIxYjY1MzRmZGU5MGMwYmY5NzdhNTZh
NTc3NzRlMDU1ZGI4NThlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyU3R5
bGVTaGVldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlclN0eWxlU2hlZXQuaApAQCAt
NDUsOCArNDUsOCBAQCBwdWJsaWM6CiAgICAgVXNlclN0eWxlU2hlZXQoY29uc3QgU3RyaW5nJiBz
b3VyY2UsIGNvbnN0IFVSTCYgdXJsLCBWZWN0b3I8U3RyaW5nPiYmIHdoaXRlbGlzdCwgVmVjdG9y
PFN0cmluZz4mJiBibGFja2xpc3QsIFVzZXJDb250ZW50SW5qZWN0ZWRGcmFtZXMgaW5qZWN0ZWRG
cmFtZXMsIFVzZXJTdHlsZUxldmVsIGxldmVsKQogICAgICAgICA6IG1fc291cmNlKHNvdXJjZSkK
ICAgICAgICAgLCBtX3VybCh1cmwpCi0gICAgICAgICwgbV93aGl0ZWxpc3QoV1RGOjptb3ZlKHdo
aXRlbGlzdCkpCi0gICAgICAgICwgbV9ibGFja2xpc3QoV1RGOjptb3ZlKGJsYWNrbGlzdCkpCisg
ICAgICAgICwgbV93aGl0ZWxpc3QoV1RGTW92ZSh3aGl0ZWxpc3QpKQorICAgICAgICAsIG1fYmxh
Y2tsaXN0KFdURk1vdmUoYmxhY2tsaXN0KSkKICAgICAgICAgLCBtX2luamVjdGVkRnJhbWVzKGlu
amVjdGVkRnJhbWVzKQogICAgICAgICAsIG1fbGV2ZWwobGV2ZWwpCiAgICAgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9XaGVlbEV2ZW50VGVzdFRyaWdnZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9XaGVlbEV2ZW50VGVzdFRyaWdnZXIuY3BwCmluZGV4IDU0MDg1ZmY1YTcz
NjE3N2Y5Zjk1MDZhM2MwYTRiZjc5NTcxODZkMzUuLjM5ODg3ZjEzNTIyOTQxMmUzZjAzNTIzZGY0
YjU5N2JjZTM3NjBjNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvV2hlZWxFdmVu
dFRlc3RUcmlnZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1doZWVsRXZlbnRUZXN0
VHJpZ2dlci5jcHAKQEAgLTU2LDcgKzU2LDcgQEAgdm9pZCBXaGVlbEV2ZW50VGVzdFRyaWdnZXI6
OnNldFRlc3RDYWxsYmFja0FuZFN0YXJ0Tm90aWZpY2F0aW9uVGltZXIoc3RkOjpmdW5jdGkKIHsK
ICAgICB7CiAgICAgICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKG1fdGVzdFRyaWdnZXJN
dXRleCk7Ci0gICAgICAgIG1fdGVzdE5vdGlmaWNhdGlvbkNhbGxiYWNrID0gV1RGOjptb3ZlKGZ1
bmN0aW9uQ2FsbGJhY2spOworICAgICAgICBtX3Rlc3ROb3RpZmljYXRpb25DYWxsYmFjayA9IFdU
Rk1vdmUoZnVuY3Rpb25DYWxsYmFjayk7CiAgICAgfQogICAgIAogICAgIGlmICghbV90ZXN0VHJp
Z2dlclRpbWVyLmlzQWN0aXZlKCkpCkBAIC0xMTksNyArMTE5LDcgQEAgdm9pZCBXaGVlbEV2ZW50
VGVzdFRyaWdnZXI6OnRyaWdnZXJUZXN0VGltZXJGaXJlZCgpCiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KIAotICAgICAgICBmdW5jdGlvbkNhbGxiYWNrID0gV1RGOjptb3ZlKG1fdGVz
dE5vdGlmaWNhdGlvbkNhbGxiYWNrKTsKKyAgICAgICAgZnVuY3Rpb25DYWxsYmFjayA9IFdURk1v
dmUobV90ZXN0Tm90aWZpY2F0aW9uQ2FsbGJhY2spOwogICAgICAgICBtX3Rlc3ROb3RpZmljYXRp
b25DYWxsYmFjayA9IHN0ZDo6ZnVuY3Rpb248dm9pZCgpPigpOwogICAgIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQ29udHJvbGxlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25Db250cm9sbGVyLmNwcApp
bmRleCBjYmY3MzQxNDVmN2RjMzlkNzk3NWY1ZDdkNjQzZDBlMTZlOGI1NGZjLi45YmNiMmZlZDE3
NzAxYWRjNmI0NGZkZDAzNDU4OTQ4YmFmNjYzOWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25Db250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25Db250cm9sbGVyLmNwcApAQCAtMjAxLDcgKzIw
MSw3IEBAIHZvaWQgQW5pbWF0aW9uQ29udHJvbGxlclByaXZhdGU6OmZpcmVFdmVudHNBbmRVcGRh
dGVTdHlsZSgpCiAgICAgYm9vbCB1cGRhdGVTdHlsZSA9ICFtX2V2ZW50c1RvRGlzcGF0Y2guaXNF
bXB0eSgpIHx8ICFtX2VsZW1lbnRDaGFuZ2VzVG9EaXNwYXRjaC5pc0VtcHR5KCk7CiAKICAgICAv
LyBmaXJlIGFsbCB0aGUgZXZlbnRzCi0gICAgVmVjdG9yPEV2ZW50VG9EaXNwYXRjaD4gZXZlbnRz
VG9EaXNwYXRjaCA9IFdURjo6bW92ZShtX2V2ZW50c1RvRGlzcGF0Y2gpOworICAgIFZlY3RvcjxF
dmVudFRvRGlzcGF0Y2g+IGV2ZW50c1RvRGlzcGF0Y2ggPSBXVEZNb3ZlKG1fZXZlbnRzVG9EaXNw
YXRjaCk7CiAgICAgZm9yIChhdXRvJiBldmVudCA6IGV2ZW50c1RvRGlzcGF0Y2gpIHsKICAgICAg
ICAgRWxlbWVudCYgZWxlbWVudCA9ICpldmVudC5lbGVtZW50OwogICAgICAgICBpZiAoZXZlbnQu
ZXZlbnRUeXBlID09IGV2ZW50TmFtZXMoKS50cmFuc2l0aW9uZW5kRXZlbnQpCkBAIC0yMzksNyAr
MjM5LDcgQEAgdm9pZCBBbmltYXRpb25Db250cm9sbGVyUHJpdmF0ZTo6YWRkRXZlbnRUb0Rpc3Bh
dGNoKFBhc3NSZWZQdHI8RWxlbWVudD4gZWxlbWVudCwKIAogdm9pZCBBbmltYXRpb25Db250cm9s
bGVyUHJpdmF0ZTo6YWRkRWxlbWVudENoYW5nZVRvRGlzcGF0Y2goUmVmPEVsZW1lbnQ+JiYgZWxl
bWVudCkKIHsKLSAgICBtX2VsZW1lbnRDaGFuZ2VzVG9EaXNwYXRjaC5hcHBlbmQoV1RGOjptb3Zl
KGVsZW1lbnQpKTsKKyAgICBtX2VsZW1lbnRDaGFuZ2VzVG9EaXNwYXRjaC5hcHBlbmQoV1RGTW92
ZShlbGVtZW50KSk7CiAgICAgQVNTRVJUKCFtX2VsZW1lbnRDaGFuZ2VzVG9EaXNwYXRjaC5sYXN0
KCktPmRvY3VtZW50KCkuaW5QYWdlQ2FjaGUoKSk7CiAgICAgc3RhcnRVcGRhdGVTdHlsZUlmTmVl
ZGVkRGlzcGF0Y2hlcigpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmlt
YXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmlt
YXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24uY3BwCmluZGV4IGEyMmFjZmEwZmNmMzJmMWQxODY5
OGQzMWMxZTgzYTI1ZWVkNWM0NWUuLjc4N2YwYTAyODE5NGQ3OTJhYjJhMjNlMjU0MmY4ZTdlMDBh
NmMwYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NTU1Byb3Bl
cnR5QW5pbWF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9DU1NQ
cm9wZXJ0eUFuaW1hdGlvbi5jcHAKQEAgLTIyNiw5ICsyMjYsOSBAQCBzdGF0aWMgaW5saW5lIFBh
c3NSZWZQdHI8U3R5bGVJbWFnZT4gYmxlbmRGaWx0ZXIoY29uc3QgQW5pbWF0aW9uQmFzZSogYW5p
bSwgQ2FjaAogICAgIGF1dG8gaW1hZ2VWYWx1ZSA9IENTU0ltYWdlVmFsdWU6OmNyZWF0ZShpbWFn
ZS0+dXJsKCksIHN0eWxlZEltYWdlLmdldCgpKTsKICAgICBhdXRvIGZpbHRlclZhbHVlID0gQ29t
cHV0ZWRTdHlsZUV4dHJhY3Rvcjo6dmFsdWVGb3JGaWx0ZXIoYW5pbS0+cmVuZGVyZXIoKS0+c3R5
bGUoKSwgZmlsdGVyUmVzdWx0LCBEb05vdEFkanVzdFBpeGVsVmFsdWVzKTsKIAotICAgIGF1dG8g
cmVzdWx0ID0gQ1NTRmlsdGVySW1hZ2VWYWx1ZTo6Y3JlYXRlKFdURjo6bW92ZShpbWFnZVZhbHVl
KSwgV1RGOjptb3ZlKGZpbHRlclZhbHVlKSk7CisgICAgYXV0byByZXN1bHQgPSBDU1NGaWx0ZXJJ
bWFnZVZhbHVlOjpjcmVhdGUoV1RGTW92ZShpbWFnZVZhbHVlKSwgV1RGTW92ZShmaWx0ZXJWYWx1
ZSkpOwogICAgIHJlc3VsdC5nZXQoKS5zZXRGaWx0ZXJPcGVyYXRpb25zKGZpbHRlclJlc3VsdCk7
Ci0gICAgcmV0dXJuIFN0eWxlR2VuZXJhdGVkSW1hZ2U6OmNyZWF0ZShXVEY6Om1vdmUocmVzdWx0
KSk7CisgICAgcmV0dXJuIFN0eWxlR2VuZXJhdGVkSW1hZ2U6OmNyZWF0ZShXVEZNb3ZlKHJlc3Vs
dCkpOwogfQogCiBzdGF0aWMgaW5saW5lIEVWaXNpYmlsaXR5IGJsZW5kRnVuYyhjb25zdCBBbmlt
YXRpb25CYXNlKiBhbmltLCBFVmlzaWJpbGl0eSBmcm9tLCBFVmlzaWJpbGl0eSB0bywgZG91Ymxl
IHByb2dyZXNzKQpAQCAtMjkwLDkgKzI5MCw5IEBAIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxT
dHlsZUltYWdlPiBjcm9zc2ZhZGVCbGVuZChjb25zdCBBbmltYXRpb25CYXNlKiwgU3R5bGVDCiAg
ICAgYXV0byBmcm9tSW1hZ2VWYWx1ZSA9IENTU0ltYWdlVmFsdWU6OmNyZWF0ZShmcm9tU3R5bGVJ
bWFnZS0+Y2FjaGVkSW1hZ2UoKS0+dXJsKCksIGZyb21TdHlsZUltYWdlKTsKICAgICBhdXRvIHRv
SW1hZ2VWYWx1ZSA9IENTU0ltYWdlVmFsdWU6OmNyZWF0ZSh0b1N0eWxlSW1hZ2UtPmNhY2hlZElt
YWdlKCktPnVybCgpLCB0b1N0eWxlSW1hZ2UpOwogCi0gICAgYXV0byBjcm9zc2ZhZGVWYWx1ZSA9
IENTU0Nyb3NzZmFkZVZhbHVlOjpjcmVhdGUoV1RGOjptb3ZlKGZyb21JbWFnZVZhbHVlKSwgV1RG
Ojptb3ZlKHRvSW1hZ2VWYWx1ZSkpOworICAgIGF1dG8gY3Jvc3NmYWRlVmFsdWUgPSBDU1NDcm9z
c2ZhZGVWYWx1ZTo6Y3JlYXRlKFdURk1vdmUoZnJvbUltYWdlVmFsdWUpLCBXVEZNb3ZlKHRvSW1h
Z2VWYWx1ZSkpOwogICAgIGNyb3NzZmFkZVZhbHVlLmdldCgpLnNldFBlcmNlbnRhZ2UoQ1NTUHJp
bWl0aXZlVmFsdWU6OmNyZWF0ZShwcm9ncmVzcywgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1C
RVIpKTsKLSAgICByZXR1cm4gU3R5bGVHZW5lcmF0ZWRJbWFnZTo6Y3JlYXRlKFdURjo6bW92ZShj
cm9zc2ZhZGVWYWx1ZSkpOworICAgIHJldHVybiBTdHlsZUdlbmVyYXRlZEltYWdlOjpjcmVhdGUo
V1RGTW92ZShjcm9zc2ZhZGVWYWx1ZSkpOwogfQogCiBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8
U3R5bGVJbWFnZT4gYmxlbmRGdW5jKGNvbnN0IEFuaW1hdGlvbkJhc2UqIGFuaW0sIFN0eWxlSW1h
Z2UqIGZyb20sIFN0eWxlSW1hZ2UqIHRvLCBkb3VibGUgcHJvZ3Jlc3MpCkBAIC03MjksOSArNzI5
LDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIFNoYWRvd0RhdGEqIGJsZW5kZWRTaGFkb3dQdHIg
PSBibGVuZGVkU2hhZG93LmdldCgpOwogCiAgICAgICAgICAgICBpZiAoIWxhc3RTaGFkb3cpCi0g
ICAgICAgICAgICAgICAgbmV3U2hhZG93RGF0YSA9IFdURjo6bW92ZShibGVuZGVkU2hhZG93KTsK
KyAgICAgICAgICAgICAgICBuZXdTaGFkb3dEYXRhID0gV1RGTW92ZShibGVuZGVkU2hhZG93KTsK
ICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBsYXN0U2hhZG93LT5zZXROZXh0KFdU
Rjo6bW92ZShibGVuZGVkU2hhZG93KSk7CisgICAgICAgICAgICAgICAgbGFzdFNoYWRvdy0+c2V0
TmV4dChXVEZNb3ZlKGJsZW5kZWRTaGFkb3cpKTsKIAogICAgICAgICAgICAgbGFzdFNoYWRvdyA9
IGJsZW5kZWRTaGFkb3dQdHI7CiAKQEAgLTc3MCw4ICs3NzAsOCBAQCBwcml2YXRlOgogCiAgICAg
ICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2hhZG93RGF0YT4gYmxlbmRlZFNoYWRvdyA9IGJsZW5k
RnVuYyhhbmltLCBzcmNTaGFkb3csIGRzdFNoYWRvdywgcHJvZ3Jlc3MpOwogICAgICAgICAgICAg
Ly8gSW5zZXJ0IGF0IHRoZSBzdGFydCBvZiB0aGUgbGlzdCB0byBwcmVzZXJ2ZSB0aGUgb3JkZXIu
Ci0gICAgICAgICAgICBibGVuZGVkU2hhZG93LT5zZXROZXh0KFdURjo6bW92ZShuZXdTaGFkb3dE
YXRhKSk7Ci0gICAgICAgICAgICBuZXdTaGFkb3dEYXRhID0gV1RGOjptb3ZlKGJsZW5kZWRTaGFk
b3cpOworICAgICAgICAgICAgYmxlbmRlZFNoYWRvdy0+c2V0TmV4dChXVEZNb3ZlKG5ld1NoYWRv
d0RhdGEpKTsKKyAgICAgICAgICAgIG5ld1NoYWRvd0RhdGEgPSBXVEZNb3ZlKGJsZW5kZWRTaGFk
b3cpOwogICAgICAgICB9CiAKICAgICAgICAgcmV0dXJuIG5ld1NoYWRvd0RhdGE7CkBAIC0xMDQy
LDcgKzEwNDIsNyBAQCBjbGFzcyBTaG9ydGhhbmRQcm9wZXJ0eVdyYXBwZXIgOiBwdWJsaWMgQW5p
bWF0aW9uUHJvcGVydHlXcmFwcGVyQmFzZSB7CiBwdWJsaWM6CiAgICAgU2hvcnRoYW5kUHJvcGVy
dHlXcmFwcGVyKENTU1Byb3BlcnR5SUQgcHJvcGVydHksIFZlY3RvcjxBbmltYXRpb25Qcm9wZXJ0
eVdyYXBwZXJCYXNlKj4gbG9uZ2hhbmRXcmFwcGVycykKICAgICAgICAgOiBBbmltYXRpb25Qcm9w
ZXJ0eVdyYXBwZXJCYXNlKHByb3BlcnR5KQotICAgICAgICAsIG1fcHJvcGVydHlXcmFwcGVycyhX
VEY6Om1vdmUobG9uZ2hhbmRXcmFwcGVycykpCisgICAgICAgICwgbV9wcm9wZXJ0eVdyYXBwZXJz
KFdURk1vdmUobG9uZ2hhbmRXcmFwcGVycykpCiAgICAgewogICAgIH0KIApAQCAtMTQzNyw3ICsx
NDM3LDcgQEAgQ1NTUHJvcGVydHlBbmltYXRpb25XcmFwcGVyTWFwOjpDU1NQcm9wZXJ0eUFuaW1h
dGlvbldyYXBwZXJNYXAoKQogICAgICAgICAgICAgbG9uZ2hhbmRXcmFwcGVycy51bmNoZWNrZWRB
cHBlbmQobV9wcm9wZXJ0eVdyYXBwZXJzW3dyYXBwZXJJbmRleF0uZ2V0KCkpOwogICAgICAgICB9
CiAKLSAgICAgICAgbV9wcm9wZXJ0eVdyYXBwZXJzLnVuY2hlY2tlZEFwcGVuZChzdGQ6Om1ha2Vf
dW5pcXVlPFNob3J0aGFuZFByb3BlcnR5V3JhcHBlcj4ocHJvcGVydHlJRCwgV1RGOjptb3ZlKGxv
bmdoYW5kV3JhcHBlcnMpKSk7CisgICAgICAgIG1fcHJvcGVydHlXcmFwcGVycy51bmNoZWNrZWRB
cHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxTaG9ydGhhbmRQcm9wZXJ0eVdyYXBwZXI+KHByb3BlcnR5
SUQsIFdURk1vdmUobG9uZ2hhbmRXcmFwcGVycykpKTsKICAgICAgICAgaW5kZXhGcm9tUHJvcGVy
dHlJRChwcm9wZXJ0eUlEKSA9IGFuaW1hdGFibGVMb25naGFuZFByb3BlcnRpZXNDb3VudCArIGk7
CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jb2NvYS9SZXNvdXJj
ZVVzYWdlT3ZlcmxheUNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jb2NvYS9SZXNvdXJj
ZVVzYWdlT3ZlcmxheUNvY29hLm1tCmluZGV4IGQ1MDkzZTFjNzgyNTMwNzRlZTc5OGViYTA3MTk3
NWM1ZTM4NzY3NGEuLjA1ZjYwN2JiNmNjZTg2ZGU4MTM1YzcwNWRlODAyOWM4N2ZhYzJjMDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvUmVzb3VyY2VVc2FnZU92ZXJsYXlD
b2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1Jlc291cmNlVXNhZ2VPdmVy
bGF5Q29jb2EubW0KQEAgLTk0LDcgKzk0LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBhcHBlbmQo
VCB2KQogICAgIHsKLSAgICAgICAgbV9kYXRhW21fY3VycmVudF0gPSBXVEY6Om1vdmUodik7Cisg
ICAgICAgIG1fZGF0YVttX2N1cnJlbnRdID0gV1RGTW92ZSh2KTsKICAgICAgICAgaW5jcmVtZW50
SW5kZXgobV9jdXJyZW50KTsKICAgICB9CiAKQEAgLTE1Niw3ICsxNTYsNyBAQCBzdHJ1Y3QgTWVt
b3J5Q2F0ZWdvcnlJbmZvIHsKICAgICBNZW1vcnlDYXRlZ29yeUluZm8oKSB7IH0gLy8gTmVlZGVk
IGZvciBzdGQ6OmFycmF5LgogCiAgICAgTWVtb3J5Q2F0ZWdvcnlJbmZvKHVuc2lnbmVkIGNhdGVn
b3J5LCBSR0JBMzIgcmdiYSwgU3RyaW5nIG5hbWUsIGJvb2wgc3ViY2F0ZWdvcnkgPSBmYWxzZSkK
LSAgICAgICAgOiBuYW1lKFdURjo6bW92ZShuYW1lKSkKKyAgICAgICAgOiBuYW1lKFdURk1vdmUo
bmFtZSkpCiAgICAgICAgICwgaXNTdWJjYXRlZ29yeShzdWJjYXRlZ29yeSkKICAgICAgICAgLCB0
eXBlKGNhdGVnb3J5KQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFj
L1RleHRJbmRpY2F0b3JXaW5kb3cubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9UZXh0SW5k
aWNhdG9yV2luZG93Lm1tCmluZGV4IGNjNTJkZTQxODRhYTRlZDRjYmJiNjM1ZGQxMzMzZmVhY2Vl
YWQyMDAuLjYxYzlkNGM0Mjg5MGQzY2YzNmI4ZDNkMmM0MjU5ZjUzMWQxMmYxMzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1RleHRJbmRpY2F0b3JXaW5kb3cubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9tYWMvVGV4dEluZGljYXRvcldpbmRvdy5tbQpAQCAtNDIzLDcg
KzQyMyw3IEBAIHZvaWQgVGV4dEluZGljYXRvcldpbmRvdzo6c2V0QW5pbWF0aW9uUHJvZ3Jlc3Mo
ZmxvYXQgcHJvZ3Jlc3MpCiAKIHZvaWQgVGV4dEluZGljYXRvcldpbmRvdzo6Y2xlYXJUZXh0SW5k
aWNhdG9yKFRleHRJbmRpY2F0b3JXaW5kb3dEaXNtaXNzYWxBbmltYXRpb24gYW5pbWF0aW9uKQog
ewotICAgIFJlZlB0cjxUZXh0SW5kaWNhdG9yPiB0ZXh0SW5kaWNhdG9yID0gV1RGOjptb3ZlKG1f
dGV4dEluZGljYXRvcik7CisgICAgUmVmUHRyPFRleHRJbmRpY2F0b3I+IHRleHRJbmRpY2F0b3Ig
PSBXVEZNb3ZlKG1fdGV4dEluZGljYXRvcik7CiAKICAgICBpZiAoW21fdGV4dEluZGljYXRvclZp
ZXcgaXNGYWRpbmdPdXRdKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9BeGlzU2Nyb2xsU25hcE9mZnNldHMuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvQXhpc1Njcm9sbFNuYXBPZmZzZXRzLmNwcAppbmRleCA4MWQx
ZTk3ZDBiNjA1MjkxZjkyNGYwM2Q1ODVhMGJmNGUyNzZlMWNkLi4xMmYwNmIyYjkyYTNlYzY5M2Uy
NmIzMzI0Yjg5NzZhOTk0OWJkNWFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9BeGlzU2Nyb2xsU25hcE9mZnNldHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL0F4aXNTY3JvbGxTbmFwT2Zmc2V0cy5jcHAKQEAgLTE4OCw3ICsxODgsNyBA
QCB2b2lkIHVwZGF0ZVNuYXBPZmZzZXRzRm9yU2Nyb2xsYWJsZUFyZWEoU2Nyb2xsYWJsZUFyZWEm
IHNjcm9sbGFibGVBcmVhLCBIVE1MRWxlbQogICAgICAgICBpZiAoaG9yaXpvbnRhbFNuYXBPZmZz
ZXRzLT5pc0VtcHR5KCkpCiAgICAgICAgICAgICBzY3JvbGxhYmxlQXJlYS5jbGVhckhvcml6b250
YWxTbmFwT2Zmc2V0cygpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBzY3JvbGxhYmxlQXJl
YS5zZXRIb3Jpem9udGFsU25hcE9mZnNldHMoV1RGOjptb3ZlKGhvcml6b250YWxTbmFwT2Zmc2V0
cykpOworICAgICAgICAgICAgc2Nyb2xsYWJsZUFyZWEuc2V0SG9yaXpvbnRhbFNuYXBPZmZzZXRz
KFdURk1vdmUoaG9yaXpvbnRhbFNuYXBPZmZzZXRzKSk7CiAgICAgfQogICAgIGlmIChjYW5Db21w
dXRlVmVydGljYWxPZmZzZXRzKSB7CiAgICAgICAgIGF1dG8gdmVydGljYWxTbmFwT2Zmc2V0cyA9
IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPExheW91dFVuaXQ+PigpOwpAQCAtMTk2LDcgKzE5Niw3
IEBAIHZvaWQgdXBkYXRlU25hcE9mZnNldHNGb3JTY3JvbGxhYmxlQXJlYShTY3JvbGxhYmxlQXJl
YSYgc2Nyb2xsYWJsZUFyZWEsIEhUTUxFbGVtCiAgICAgICAgIGlmICh2ZXJ0aWNhbFNuYXBPZmZz
ZXRzLT5pc0VtcHR5KCkpCiAgICAgICAgICAgICBzY3JvbGxhYmxlQXJlYS5jbGVhclZlcnRpY2Fs
U25hcE9mZnNldHMoKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgc2Nyb2xsYWJsZUFyZWEu
c2V0VmVydGljYWxTbmFwT2Zmc2V0cyhXVEY6Om1vdmUodmVydGljYWxTbmFwT2Zmc2V0cykpOwor
ICAgICAgICAgICAgc2Nyb2xsYWJsZUFyZWEuc2V0VmVydGljYWxTbmFwT2Zmc2V0cyhXVEZNb3Zl
KHZlcnRpY2FsU25hcE9mZnNldHMpKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlVHJlZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVRyZWUuY3BwCmluZGV4IGVlZDhhMjZi
Njk1OWRmZTZkMWEyYTgwMDMzODc1M2QyMmVkOGU2NDguLjNiZWM0MzYwYzRkMTU0OTY3NjFmYWE0
NzQxZjI5MDM2YzE3OTZmOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL1Njcm9sbGluZ1N0YXRlVHJlZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvU2Nyb2xsaW5nU3RhdGVUcmVlLmNwcApAQCAtMjMzLDcgKzIzMyw3IEBAIHZvaWQgU2Ny
b2xsaW5nU3RhdGVUcmVlOjp3aWxsUmVtb3ZlTm9kZShTY3JvbGxpbmdTdGF0ZU5vZGUqIG5vZGUp
CiAKIHZvaWQgU2Nyb2xsaW5nU3RhdGVUcmVlOjpzZXRSZW1vdmVkTm9kZXMoSGFzaFNldDxTY3Jv
bGxpbmdOb2RlSUQ+IG5vZGVzKQogewotICAgIG1fbm9kZXNSZW1vdmVkU2luY2VMYXN0Q29tbWl0
ID0gV1RGOjptb3ZlKG5vZGVzKTsKKyAgICBtX25vZGVzUmVtb3ZlZFNpbmNlTGFzdENvbW1pdCA9
IFdURk1vdmUobm9kZXMpOwogfQogCiBTY3JvbGxpbmdTdGF0ZU5vZGUqIFNjcm9sbGluZ1N0YXRl
VHJlZTo6c3RhdGVOb2RlRm9ySUQoU2Nyb2xsaW5nTm9kZUlEIHNjcm9sbExheWVySUQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUaHJlYWQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVGhyZWFkLmNwcAppbmRl
eCA3Mjg4NzlmN2Y5MGUyZDE3MWMxMjU3M2YyYzE0N2VkZTJkYmY5YWE3Li5lNzNlODc2MTQyMWYw
ZWE2YzMwYzU1NzUyYWY0ZTEzMzMwMzk1NjM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RocmVhZC5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgdm9pZCBT
Y3JvbGxpbmdUaHJlYWQ6OmRpc3BhdGNoKHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4gZnVuY3Rpb24p
CiB2b2lkIFNjcm9sbGluZ1RocmVhZDo6ZGlzcGF0Y2hCYXJyaWVyKHN0ZDo6ZnVuY3Rpb248dm9p
ZCAoKT4gZnVuY3Rpb24pCiB7CiAgICAgZGlzcGF0Y2goW2Z1bmN0aW9uXSgpIG11dGFibGUgewot
ICAgICAgICBjYWxsT25NYWluVGhyZWFkKFdURjo6bW92ZShmdW5jdGlvbikpOworICAgICAgICBj
YWxsT25NYWluVGhyZWFkKFdURk1vdmUoZnVuY3Rpb24pKTsKICAgICB9KTsKIH0KIApAQCAtMTA4
LDcgKzEwOCw3IEBAIHZvaWQgU2Nyb2xsaW5nVGhyZWFkOjpkaXNwYXRjaEZ1bmN0aW9uc0Zyb21T
Y3JvbGxpbmdUaHJlYWQoKQogICAgIAogICAgIHsKICAgICAgICAgc3RkOjpsb2NrX2d1YXJkPExv
Y2s+IGxvY2sobV9mdW5jdGlvbnNNdXRleCk7Ci0gICAgICAgIGZ1bmN0aW9ucyA9IFdURjo6bW92
ZShtX2Z1bmN0aW9ucyk7CisgICAgICAgIGZ1bmN0aW9ucyA9IFdURk1vdmUobV9mdW5jdGlvbnMp
OwogICAgIH0KIAogICAgIGZvciAoYXV0byYgZnVuY3Rpb24gOiBmdW5jdGlvbnMpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9UaHJlYWRlZFNjcm9sbGluZ1RyZWUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvVGhyZWFkZWRTY3JvbGxpbmdUcmVl
LmNwcAppbmRleCBkODEzZGFlYTY1NTU2ZjlmMGY2ZDE2NTgzNGQyM2I0YzM4ZjQxOTBhLi40ODM5
ODZhZjVmYmVmZjEwNWVmNDRjMjU4MWVlZjhkMTQ0MGY2ZjVlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9UaHJlYWRlZFNjcm9sbGluZ1RyZWUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1RocmVhZGVkU2Nyb2xsaW5nVHJlZS5jcHAKQEAg
LTkyLDcgKzkyLDcgQEAgdm9pZCBUaHJlYWRlZFNjcm9sbGluZ1RyZWU6OmludmFsaWRhdGUoKQog
dm9pZCBUaHJlYWRlZFNjcm9sbGluZ1RyZWU6OmNvbW1pdE5ld1RyZWVTdGF0ZShzdGQ6OnVuaXF1
ZV9wdHI8U2Nyb2xsaW5nU3RhdGVUcmVlPiBzY3JvbGxpbmdTdGF0ZVRyZWUpCiB7CiAgICAgQVNT
RVJUKFNjcm9sbGluZ1RocmVhZDo6aXNDdXJyZW50VGhyZWFkKCkpOwotICAgIFNjcm9sbGluZ1Ry
ZWU6OmNvbW1pdE5ld1RyZWVTdGF0ZShXVEY6Om1vdmUoc2Nyb2xsaW5nU3RhdGVUcmVlKSk7Cisg
ICAgU2Nyb2xsaW5nVHJlZTo6Y29tbWl0TmV3VHJlZVN0YXRlKFdURk1vdmUoc2Nyb2xsaW5nU3Rh
dGVUcmVlKSk7CiB9CiAKIHZvaWQgVGhyZWFkZWRTY3JvbGxpbmdUcmVlOjpzY3JvbGxpbmdUcmVl
Tm9kZURpZFNjcm9sbChTY3JvbGxpbmdOb2RlSUQgbm9kZUlELCBjb25zdCBGbG9hdFBvaW50JiBz
Y3JvbGxQb3NpdGlvbiwgU2V0T3JTeW5jU2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbiBzY3JvbGxpbmdM
YXllclBvc2l0aW9uQWN0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvaW9zL1Njcm9sbGluZ1RyZWVJT1MuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvaW9zL1Njcm9sbGluZ1RyZWVJT1MuY3BwCmluZGV4IGVlYzFjOWUyZDE2M2FhMjQ5MTQy
MGI2MTgwNDNhYjM4NzcwMTVmNDMuLjA4MmJkNzNjZGJiZjJkOTZkOGM4ZDRhOTEyOGE5ZWM5NzA0
N2ZhZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2lvcy9TY3Jv
bGxpbmdUcmVlSU9TLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9pb3Mv
U2Nyb2xsaW5nVHJlZUlPUy5jcHAKQEAgLTc1LDcgKzc1LDcgQEAgdm9pZCBTY3JvbGxpbmdUcmVl
SU9TOjppbnZhbGlkYXRlKCkKIAogdm9pZCBTY3JvbGxpbmdUcmVlSU9TOjpjb21taXROZXdUcmVl
U3RhdGUoc3RkOjp1bmlxdWVfcHRyPFNjcm9sbGluZ1N0YXRlVHJlZT4gc2Nyb2xsaW5nU3RhdGVU
cmVlKQogewotICAgIFNjcm9sbGluZ1RyZWU6OmNvbW1pdE5ld1RyZWVTdGF0ZShXVEY6Om1vdmUo
c2Nyb2xsaW5nU3RhdGVUcmVlKSk7CisgICAgU2Nyb2xsaW5nVHJlZTo6Y29tbWl0TmV3VHJlZVN0
YXRlKFdURk1vdmUoc2Nyb2xsaW5nU3RhdGVUcmVlKSk7CiB9CiAKIHZvaWQgU2Nyb2xsaW5nVHJl
ZUlPUzo6c2Nyb2xsaW5nVHJlZU5vZGVEaWRTY3JvbGwoU2Nyb2xsaW5nTm9kZUlEIG5vZGVJRCwg
Y29uc3QgRmxvYXRQb2ludCYgc2Nyb2xsUG9zaXRpb24sIFNldE9yU3luY1Njcm9sbGluZ0xheWVy
UG9zaXRpb24gc2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdDb29yZGluYXRvck1hYy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdDb29yZGluYXRvck1h
Yy5tbQppbmRleCA3ZDgxM2UyMjc5MDE5NWEwYTcyMGYwYjMzYTI4NjJjMzFiYzlmMzdjLi5kZGY0
ZmIyNDRkZDc1MzA5NzgzNGZiZTgxNjVjOTFiMmRkOGFhZjBmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWMubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ0Nvb3JkaW5hdG9y
TWFjLm1tCkBAIC0xMTgsNyArMTE4LDcgQEAgdm9pZCBTY3JvbGxpbmdDb29yZGluYXRvck1hYzo6
Y29tbWl0VHJlZVN0YXRlKCkKIAogICAgIFNjcm9sbGluZ1RocmVhZDo6ZGlzcGF0Y2goW3RocmVh
ZGVkU2Nyb2xsaW5nVHJlZSwgdW5wcm90ZWN0ZWRUcmVlU3RhdGVdIHsKICAgICAgICAgc3RkOjp1
bmlxdWVfcHRyPFNjcm9sbGluZ1N0YXRlVHJlZT4gdHJlZVN0YXRlKHVucHJvdGVjdGVkVHJlZVN0
YXRlKTsKLSAgICAgICAgdGhyZWFkZWRTY3JvbGxpbmdUcmVlLT5jb21taXROZXdUcmVlU3RhdGUo
V1RGOjptb3ZlKHRyZWVTdGF0ZSkpOworICAgICAgICB0aHJlYWRlZFNjcm9sbGluZ1RyZWUtPmNv
bW1pdE5ld1RyZWVTdGF0ZShXVEZNb3ZlKHRyZWVTdGF0ZSkpOwogICAgIH0pOwogCiAgICAgdXBk
YXRlVGlsZWRTY3JvbGxpbmdJbmRpY2F0b3IoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0NhbGN1bGF0aW9uVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Q2FsY3VsYXRpb25WYWx1ZS5jcHAKaW5kZXggNjRjMGNhYzc0Mzg0NDIwZGNkNWUzMWM3Mzc3MTkw
YjRmN2M4NGY2MS4uYmZlNWY5MjcwNjMyYjQyNTJmMmRhMmU2NmQzYTZhYzc3NTIzM2MxOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ2FsY3VsYXRpb25WYWx1ZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ2FsY3VsYXRpb25WYWx1ZS5jcHAKQEAgLTM4LDcg
KzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBSZWY8Q2FsY3VsYXRpb25WYWx1ZT4gQ2Fs
Y3VsYXRpb25WYWx1ZTo6Y3JlYXRlKHN0ZDo6dW5pcXVlX3B0cjxDYWxjRXhwcmVzc2lvbk5vZGU+
IHZhbHVlLCBDYWxjdWxhdGlvblBlcm1pdHRlZFZhbHVlUmFuZ2UgcmFuZ2UpCiB7Ci0gICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgQ2FsY3VsYXRpb25WYWx1ZShXVEY6Om1vdmUodmFsdWUpLCByYW5n
ZSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENhbGN1bGF0aW9uVmFsdWUoV1RGTW92ZSh2
YWx1ZSksIHJhbmdlKSk7CiB9CiAKIGZsb2F0IENhbGNFeHByZXNzaW9uTnVtYmVyOjpldmFsdWF0
ZShmbG9hdCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NhbGN1
bGF0aW9uVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NhbGN1bGF0aW9uVmFsdWUu
aAppbmRleCBiMjI4YTRhYzYwM2Y1MmMxNDYzZDM3YTVjZDg4ZjJkYTU5YmVjZjhiLi40YjBkOTc5
MjI0ZDBhZDc2OTA3YTg3ZmQwYjZjMjg3ZWNkMWRiMzQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9DYWxjdWxhdGlvblZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vQ2FsY3VsYXRpb25WYWx1ZS5oCkBAIC0xNTUsNyArMTU1LDcgQEAgaW5saW5lIENhbGNF
eHByZXNzaW9uTm9kZTo6Q2FsY0V4cHJlc3Npb25Ob2RlKENhbGNFeHByZXNzaW9uTm9kZVR5cGUg
dHlwZSkKIH0KIAogaW5saW5lIENhbGN1bGF0aW9uVmFsdWU6OkNhbGN1bGF0aW9uVmFsdWUoc3Rk
Ojp1bmlxdWVfcHRyPENhbGNFeHByZXNzaW9uTm9kZT4gZXhwcmVzc2lvbiwgQ2FsY3VsYXRpb25Q
ZXJtaXR0ZWRWYWx1ZVJhbmdlIHJhbmdlKQotICAgIDogbV9leHByZXNzaW9uKFdURjo6bW92ZShl
eHByZXNzaW9uKSkKKyAgICA6IG1fZXhwcmVzc2lvbihXVEZNb3ZlKGV4cHJlc3Npb24pKQogICAg
ICwgbV9zaG91bGRDbGFtcFRvTm9uTmVnYXRpdmUocmFuZ2UgPT0gQ2FsY3VsYXRpb25SYW5nZU5v
bk5lZ2F0aXZlKQogewogfQpAQCAtMjAxLDggKzIwMSw4IEBAIGlubGluZSBjb25zdCBDYWxjRXhw
cmVzc2lvbkxlbmd0aCYgdG9DYWxjRXhwcmVzc2lvbkxlbmd0aChjb25zdCBDYWxjRXhwcmVzc2lv
bk5vCiAKIGlubGluZSBDYWxjRXhwcmVzc2lvbkJpbmFyeU9wZXJhdGlvbjo6Q2FsY0V4cHJlc3Np
b25CaW5hcnlPcGVyYXRpb24oc3RkOjp1bmlxdWVfcHRyPENhbGNFeHByZXNzaW9uTm9kZT4gbGVm
dFNpZGUsIHN0ZDo6dW5pcXVlX3B0cjxDYWxjRXhwcmVzc2lvbk5vZGU+IHJpZ2h0U2lkZSwgQ2Fs
Y09wZXJhdG9yIG9wKQogICAgIDogQ2FsY0V4cHJlc3Npb25Ob2RlKENhbGNFeHByZXNzaW9uTm9k
ZUJpbmFyeU9wZXJhdGlvbikKLSAgICAsIG1fbGVmdFNpZGUoV1RGOjptb3ZlKGxlZnRTaWRlKSkK
LSAgICAsIG1fcmlnaHRTaWRlKFdURjo6bW92ZShyaWdodFNpZGUpKQorICAgICwgbV9sZWZ0U2lk
ZShXVEZNb3ZlKGxlZnRTaWRlKSkKKyAgICAsIG1fcmlnaHRTaWRlKFdURk1vdmUocmlnaHRTaWRl
KSkKICAgICAsIG1fb3BlcmF0b3Iob3ApCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9EcmFnSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0lt
YWdlLmNwcAppbmRleCA4OTQyMWMwYmQyYTRjZmQ1MzEyYzUyYmViNTlhZTMwNjhlNDI3MThjLi5k
M2NiYzFhNjNiMTBiNzMwODNlNWUzMDg5Y2U5MmNiNTQwODQwNmMwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0RyYWdJbWFnZS5jcHAKQEAgLTEwNiw3ICsxMDYsNyBAQCBzdGF0aWMgRHJhZ0ltYWdl
UmVmIGNyZWF0ZURyYWdJbWFnZUZyb21TbmFwc2hvdChzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZm
ZXI+IHNuYQogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0obm9kZSk7CiAjZW5kaWYKLSAgICBSZWZQ
dHI8SW1hZ2U+IGltYWdlID0gSW1hZ2VCdWZmZXI6OnNpbmtJbnRvSW1hZ2UoV1RGOjptb3ZlKHNu
YXBzaG90KSwgVW5zY2FsZWQpOworICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSBJbWFnZUJ1ZmZl
cjo6c2lua0ludG9JbWFnZShXVEZNb3ZlKHNuYXBzaG90KSwgVW5zY2FsZWQpOwogICAgIGlmICgh
aW1hZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIHJldHVybiBjcmVhdGVEcmFnSW1h
Z2VGcm9tSW1hZ2UoaW1hZ2UuZ2V0KCksIG9yaWVudGF0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0tleWVkQ29kaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9LZXllZENvZGluZy5oCmluZGV4IGUyOTY5YTJjN2E3N2FlNDViYzYyMGY1YmYxODIwZmM0ZTkw
NmM0NmIuLjllNzBlOWQzNmI5OTVlZGNiZWEyOTI1NDM2NzM2NmM0OTE4YTNiYzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tleWVkQ29kaW5nLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vS2V5ZWRDb2RpbmcuaApAQCAtMTE4LDcgKzExOCw3IEBAIHB1YmxpYzoK
ICAgICAgICAgICAgICAgICByZXN1bHQgPSBmYWxzZTsKICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG9iamVjdHMuYXBwZW5kKFdURjo6bW92ZShlbGVt
ZW50KSk7CisgICAgICAgICAgICBvYmplY3RzLmFwcGVuZChXVEZNb3ZlKGVsZW1lbnQpKTsKICAg
ICAgICAgICAgIGVuZEFycmF5RWxlbWVudCgpOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9MZW5ndGguY3BwCmluZGV4IDUxNDQ4M2JjYjk4ZDcxYzI4OGE2MDFkM2EyZjZhYjI4MzBiYWVi
MDIuLjZjNWUyYjUzZDU4NjNhMWYwYmFjZmMxYTk4MzZhZWU0NzhjZjQ3NWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vTGVuZ3RoLmNwcApAQCAtMjQ5LDcgKzI0OSw3IEBAIExlbmd0aDo6TGVuZ3RoKFJl
ZjxDYWxjdWxhdGlvblZhbHVlPiYmIHZhbHVlKQogICAgICwgbV90eXBlKENhbGN1bGF0ZWQpCiAg
ICAgLCBtX2lzRmxvYXQoZmFsc2UpCiB7Ci0gICAgbV9jYWxjdWxhdGlvblZhbHVlSGFuZGxlID0g
Y2FsY3VsYXRpb25WYWx1ZXMoKS5pbnNlcnQoV1RGOjptb3ZlKHZhbHVlKSk7CisgICAgbV9jYWxj
dWxhdGlvblZhbHVlSGFuZGxlID0gY2FsY3VsYXRpb25WYWx1ZXMoKS5pbnNlcnQoV1RGTW92ZSh2
YWx1ZSkpOwogfQogICAgICAgICAKIExlbmd0aCBMZW5ndGg6OmJsZW5kTWl4ZWRUeXBlcyhjb25z
dCBMZW5ndGgmIGZyb20sIGRvdWJsZSBwcm9ncmVzcykgY29uc3QKQEAgLTI2MSw3ICsyNjEsNyBA
QCBMZW5ndGggTGVuZ3RoOjpibGVuZE1peGVkVHlwZXMoY29uc3QgTGVuZ3RoJiBmcm9tLCBkb3Vi
bGUgcHJvZ3Jlc3MpIGNvbnN0CiAgICAgICAgIHJldHVybiAqdGhpczsKICAgICAgICAgCiAgICAg
YXV0byBibGVuZCA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FsY0V4cHJlc3Npb25CbGVuZExlbmd0aD4o
ZnJvbSwgKnRoaXMsIHByb2dyZXNzKTsKLSAgICByZXR1cm4gTGVuZ3RoKENhbGN1bGF0aW9uVmFs
dWU6OmNyZWF0ZShXVEY6Om1vdmUoYmxlbmQpLCBDYWxjdWxhdGlvblJhbmdlQWxsKSk7CisgICAg
cmV0dXJuIExlbmd0aChDYWxjdWxhdGlvblZhbHVlOjpjcmVhdGUoV1RGTW92ZShibGVuZCksIENh
bGN1bGF0aW9uUmFuZ2VBbGwpKTsKIH0KIAogQ2FsY3VsYXRpb25WYWx1ZSYgTGVuZ3RoOjpjYWxj
dWxhdGlvblZhbHVlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0xlbmd0aFNpemUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aFNpemUuaAppbmRl
eCA0MGE2YjJhNTViZjBhNjZiMWM0NWE5ZGEzZDJiNzVhMGNkYTc2YmFhLi4wZTQ4NmFhMjI4YjVi
MjJmNDBjZGVlZjM5YWRkOGM4Nzk1NDBkOThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9MZW5ndGhTaXplLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3Ro
U2l6ZS5oCkBAIC0zMiw4ICszMiw4IEBAIHB1YmxpYzoKICAgICB9CiAgICAgCiAgICAgTGVuZ3Ro
U2l6ZShMZW5ndGggd2lkdGgsIExlbmd0aCBoZWlnaHQpCi0gICAgICAgIDogbV93aWR0aChXVEY6
Om1vdmUod2lkdGgpKQotICAgICAgICAsIG1faGVpZ2h0KFdURjo6bW92ZShoZWlnaHQpKQorICAg
ICAgICA6IG1fd2lkdGgoV1RGTW92ZSh3aWR0aCkpCisgICAgICAgICwgbV9oZWlnaHQoV1RGTW92
ZShoZWlnaHQpKQogICAgIHsKICAgICB9CiAKQEAgLTQyLDEwICs0MiwxMCBAQCBwdWJsaWM6CiAg
ICAgICAgIHJldHVybiBtX3dpZHRoID09IG8ubV93aWR0aCAmJiBtX2hlaWdodCA9PSBvLm1faGVp
Z2h0OwogICAgIH0KIAotICAgIHZvaWQgc2V0V2lkdGgoTGVuZ3RoIHdpZHRoKSB7IG1fd2lkdGgg
PSBXVEY6Om1vdmUod2lkdGgpOyB9CisgICAgdm9pZCBzZXRXaWR0aChMZW5ndGggd2lkdGgpIHsg
bV93aWR0aCA9IFdURk1vdmUod2lkdGgpOyB9CiAgICAgY29uc3QgTGVuZ3RoJiB3aWR0aCgpIGNv
bnN0IHsgcmV0dXJuIG1fd2lkdGg7IH0KIAotICAgIHZvaWQgc2V0SGVpZ2h0KExlbmd0aCBoZWln
aHQpIHsgbV9oZWlnaHQgPSBXVEY6Om1vdmUoaGVpZ2h0KTsgfQorICAgIHZvaWQgc2V0SGVpZ2h0
KExlbmd0aCBoZWlnaHQpIHsgbV9oZWlnaHQgPSBXVEZNb3ZlKGhlaWdodCk7IH0KICAgICBjb25z
dCBMZW5ndGgmIGhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1faGVpZ2h0OyB9CiAKICAgICBMZW5n
dGhTaXplIGJsZW5kKGNvbnN0IExlbmd0aFNpemUmIGZyb20sIGRvdWJsZSBwcm9ncmVzcykgY29u
c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01haW5UaHJlYWRTaGFyZWRU
aW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NYWluVGhyZWFkU2hhcmVkVGltZXIu
Y3BwCmluZGV4IDcyYjNhN2U2Y2Y4MTc1ZGQ0OWMxYTI5MTFkYzU5YWE0ZjQ1OGUxODkuLjc3OGNh
YzJkOThiZWE0YjRmYzlhNDllOWE5YTYxODRiMTFjMmVkNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL01haW5UaHJlYWRTaGFyZWRUaW1lci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vTWFpblRocmVhZFNoYXJlZFRpbWVyLmNwcApAQCAtNDMsNyArNDMsNyBA
QCBNYWluVGhyZWFkU2hhcmVkVGltZXI6Ok1haW5UaHJlYWRTaGFyZWRUaW1lcigpCiB2b2lkIE1h
aW5UaHJlYWRTaGFyZWRUaW1lcjo6c2V0RmlyZWRGdW5jdGlvbihzdGQ6OmZ1bmN0aW9uPHZvaWQo
KT4mJiBmaXJlZEZ1bmN0aW9uKQogewogICAgIFJFTEVBU0VfQVNTRVJUKCFtX2ZpcmVkRnVuY3Rp
b24gfHwgIWZpcmVkRnVuY3Rpb24pOwotICAgIG1fZmlyZWRGdW5jdGlvbiA9IFdURjo6bW92ZShm
aXJlZEZ1bmN0aW9uKTsKKyAgICBtX2ZpcmVkRnVuY3Rpb24gPSBXVEZNb3ZlKGZpcmVkRnVuY3Rp
b24pOwogfQogCiB2b2lkIE1haW5UaHJlYWRTaGFyZWRUaW1lcjo6ZmlyZWQoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3BwCmluZGV4IGQ0MzM0MjJhNzI1MTc3MGFk
MTk1MTIwOWE0ZWZkNTVmOGEwMjcyMjUuLjkxYWIwMjI4OWFmMzZlNGM2MTQ1NDQ2OTU5MGNlYWI4
MWZmODM4OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVB
cmVhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAK
QEAgLTQxNSwxMiArNDE1LDEyIEBAIGJvb2wgU2Nyb2xsYWJsZUFyZWE6Omhhc0xheWVyRm9yU2Ny
b2xsQ29ybmVyKCkgY29uc3QKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQogdm9pZCBTY3Jv
bGxhYmxlQXJlYTo6c2V0SG9yaXpvbnRhbFNuYXBPZmZzZXRzKHN0ZDo6dW5pcXVlX3B0cjxWZWN0
b3I8TGF5b3V0VW5pdD4+IGhvcml6b250YWxTbmFwT2Zmc2V0cykKIHsKLSAgICBtX2hvcml6b250
YWxTbmFwT2Zmc2V0cyA9IFdURjo6bW92ZShob3Jpem9udGFsU25hcE9mZnNldHMpOworICAgIG1f
aG9yaXpvbnRhbFNuYXBPZmZzZXRzID0gV1RGTW92ZShob3Jpem9udGFsU25hcE9mZnNldHMpOwog
fQogCiB2b2lkIFNjcm9sbGFibGVBcmVhOjpzZXRWZXJ0aWNhbFNuYXBPZmZzZXRzKHN0ZDo6dW5p
cXVlX3B0cjxWZWN0b3I8TGF5b3V0VW5pdD4+IHZlcnRpY2FsU25hcE9mZnNldHMpCiB7Ci0gICAg
bV92ZXJ0aWNhbFNuYXBPZmZzZXRzID0gV1RGOjptb3ZlKHZlcnRpY2FsU25hcE9mZnNldHMpOwor
ICAgIG1fdmVydGljYWxTbmFwT2Zmc2V0cyA9IFdURk1vdmUodmVydGljYWxTbmFwT2Zmc2V0cyk7
CiB9CiAKIHZvaWQgU2Nyb2xsYWJsZUFyZWE6OmNsZWFySG9yaXpvbnRhbFNuYXBPZmZzZXRzKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCmluZGV4IDRhMDEzYmNlYzc5
ZDVkNjQ1ZmY2NmE3NDY3ZDJiYjg1OWI1ZmVkOGMuLjI1OTc3OWRhY2YwZGFiYjI3NzVkNmNlY2Yz
MzdjZjQ5MzI3NzEyODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJl
ZEJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNw
cApAQCAtODYsNyArODYsNyBAQCBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihjb25zdCB1bnNp
Z25lZCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBzaXplKQogCiBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1
ZmZlcihNYXBwZWRGaWxlRGF0YSYmIGZpbGVEYXRhKQogICAgIDogbV9idWZmZXIoYWRvcHRSZWYo
bmV3IERhdGFCdWZmZXIpKQotICAgICwgbV9maWxlRGF0YShXVEY6Om1vdmUoZmlsZURhdGEpKQor
ICAgICwgbV9maWxlRGF0YShXVEZNb3ZlKGZpbGVEYXRhKSkKIHsKIH0KIApAQCAtMTAzLDcgKzEw
Myw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRl
bnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhCiAgICAgaWYgKCFtYXBwaW5nU3VjY2VzcykK
ICAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGZpbGVQ
YXRoKTsKIAotICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2hhcmVkQnVmZmVyKFdURjo6bW92ZSht
YXBwZWRGaWxlRGF0YSkpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNoYXJlZEJ1ZmZlcihX
VEZNb3ZlKG1hcHBlZEZpbGVEYXRhKSkpOwogfQogCiBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
U2hhcmVkQnVmZmVyOjphZG9wdFZlY3RvcihWZWN0b3I8Y2hhcj4mIHZlY3RvcikKQEAgLTM3OSw3
ICszNzksNyBAQCB1bnNpZ25lZCBTaGFyZWRCdWZmZXI6OmdldFNvbWVEYXRhKGNvbnN0IGNoYXIq
JiBzb21lRGF0YSwgdW5zaWduZWQgcG9zaXRpb24pIGNvbgogdm9pZCBTaGFyZWRCdWZmZXI6Om1h
eWJlVHJhbnNmZXJNYXBwZWRGaWxlRGF0YSgpCiB7CiAgICAgaWYgKG1fZmlsZURhdGEpIHsKLSAg
ICAgICAgYXV0byBmaWxlRGF0YSA9IFdURjo6bW92ZShtX2ZpbGVEYXRhKTsKKyAgICAgICAgYXV0
byBmaWxlRGF0YSA9IFdURk1vdmUobV9maWxlRGF0YSk7CiAgICAgICAgIGFwcGVuZChzdGF0aWNf
Y2FzdDxjb25zdCBjaGFyKj4oZmlsZURhdGEuZGF0YSgpKSwgZmlsZURhdGEuc2l6ZSgpKTsKICAg
ICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TdXBwbGVtZW50YWJs
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3VwcGxlbWVudGFibGUuaAppbmRleCBlYmZh
MDlmMDEwNTNhZmE4ZmRjNDc5MGI5MWMxZjk5ODBlNmE0NjQyLi5jZmJlNDlhNWRjMzNhNDAyMzQy
YTlmNDM0YTA4N2Y3MGE2Y2Q5ODJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TdXBwbGVtZW50YWJsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N1cHBsZW1l
bnRhYmxlLmgKQEAgLTg0LDcgKzg0LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIHZvaWQgcHJv
dmlkZVRvKFN1cHBsZW1lbnRhYmxlPFQ+KiBob3N0LCBjb25zdCBjaGFyKiBrZXksIHN0ZDo6dW5p
cXVlX3B0cjxTdXBwbGVtZW50PFQ+PiBzdXBwbGVtZW50KQogICAgIHsKLSAgICAgICAgaG9zdC0+
cHJvdmlkZVN1cHBsZW1lbnQoa2V5LCBXVEY6Om1vdmUoc3VwcGxlbWVudCkpOworICAgICAgICBo
b3N0LT5wcm92aWRlU3VwcGxlbWVudChrZXksIFdURk1vdmUoc3VwcGxlbWVudCkpOwogICAgIH0K
IAogICAgIHN0YXRpYyBTdXBwbGVtZW50PFQ+KiBmcm9tKFN1cHBsZW1lbnRhYmxlPFQ+KiBob3N0
LCBjb25zdCBjaGFyKiBrZXkpCkBAIC0xMDAsNyArMTAwLDcgQEAgcHVibGljOgogICAgIHsKICAg
ICAgICAgQVNTRVJUKGNhbkFjY2Vzc1RocmVhZExvY2FsRGF0YUZvclRocmVhZChtX3RocmVhZElk
KSk7CiAgICAgICAgIEFTU0VSVCghbV9zdXBwbGVtZW50cy5nZXQoa2V5KSk7Ci0gICAgICAgIG1f
c3VwcGxlbWVudHMuc2V0KGtleSwgV1RGOjptb3ZlKHN1cHBsZW1lbnQpKTsKKyAgICAgICAgbV9z
dXBwbGVtZW50cy5zZXQoa2V5LCBXVEZNb3ZlKHN1cHBsZW1lbnQpKTsKICAgICB9CiAKICAgICB2
b2lkIHJlbW92ZVN1cHBsZW1lbnQoY29uc3QgY2hhcioga2V5KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vVGltZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RpbWVy
LmgKaW5kZXggYmM3NWJlYzFjODZjNDUzNjcyZjlkYjU4MWU4M2VjZDFmMGY2YjdiNy4uNzUxYjBk
NzIxOGMwOWI5ZTk0M2I2YzJkZGJlMjA0OWRlNTM1MTFkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vVGltZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaW1l
ci5oCkBAIC0xMjMsNyArMTIzLDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIFRpbWVyKHN0ZDo6
ZnVuY3Rpb248dm9pZCAoKT4gZnVuY3Rpb24pCi0gICAgICAgIDogbV9mdW5jdGlvbihXVEY6Om1v
dmUoZnVuY3Rpb24pKQorICAgICAgICA6IG1fZnVuY3Rpb24oV1RGTW92ZShmdW5jdGlvbikpCiAg
ICAgewogICAgIH0KIApAQCAtMTU2LDcgKzE1Niw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICBE
ZWZlcnJhYmxlT25lU2hvdFRpbWVyKHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4gZnVuY3Rpb24sIHN0
ZDo6Y2hyb25vOjptaWxsaXNlY29uZHMgZGVsYXkpCi0gICAgICAgIDogbV9mdW5jdGlvbihXVEY6
Om1vdmUoZnVuY3Rpb24pKQorICAgICAgICA6IG1fZnVuY3Rpb24oV1RGTW92ZShmdW5jdGlvbikp
CiAgICAgICAgICwgbV9kZWxheShkZWxheSkKICAgICAgICAgLCBtX3Nob3VsZFJlc3RhcnRXaGVu
VGltZXJGaXJlcyhmYWxzZSkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9VUkwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTC5oCmluZGV4IGE4YjM0YmZk
NGFhNjQ3YmJhZWI3NjliMzc1ZTY5OWQ4M2U3ZjJjZDcuLjc4NDE4YjFlNjkzZDI5MjMxMWRlZjc0
YzhlOWFkMGVhMGRkOGZiZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VS
TC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTC5oCkBAIC0zOTQsNyArMzk0LDcg
QEAgaW5saW5lIGNvbnN0IFVSTCYgVVJMQ2FwdHVyZTo6dXJsKCkgY29uc3QKIAogaW5saW5lIFVS
TCBVUkxDYXB0dXJlOjpyZWxlYXNlVVJMKCkKIHsKLSAgICByZXR1cm4gV1RGOjptb3ZlKG1fVVJM
KTsKKyAgICByZXR1cm4gV1RGTW92ZShtX1VSTCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvQnVzLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvQnVzLmNwcAppbmRleCBjZmY3
Y2Q1MTAzMGE0ZjJiNDEyMWNmNWExNGFhNzVmNzNmYmYwOTkzLi5mYWE5NjE3MGE4YzQxMGRmOGYy
ZGM4ZThjYWY0ODM1NDc2MGYzYjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9BdWRpb0J1cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
QXVkaW9CdXMuY3BwCkBAIC02NSw3ICs2NSw3IEBAIEF1ZGlvQnVzOjpBdWRpb0J1cyh1bnNpZ25l
ZCBudW1iZXJPZkNoYW5uZWxzLCBzaXplX3QgbGVuZ3RoLCBib29sIGFsbG9jYXRlKQogCiAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9mQ2hhbm5lbHM7ICsraSkgewogICAgICAg
ICBhdXRvIGNoYW5uZWwgPSBhbGxvY2F0ZSA/IHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9DaGFubmVs
PihsZW5ndGgpIDogc3RkOjptYWtlX3VuaXF1ZTxBdWRpb0NoYW5uZWw+KG51bGxwdHIsIGxlbmd0
aCk7Ci0gICAgICAgIG1fY2hhbm5lbHMuYXBwZW5kKFdURjo6bW92ZShjaGFubmVsKSk7CisgICAg
ICAgIG1fY2hhbm5lbHMuYXBwZW5kKFdURk1vdmUoY2hhbm5lbCkpOwogICAgIH0KIAogICAgIG1f
bGF5b3V0ID0gTGF5b3V0Q2Fub25pY2FsOyAvLyBmb3Igbm93IHRoaXMgaXMgdGhlIG9ubHkgbGF5
b3V0IHdlIGRlZmluZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
SFJURkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZEYXRh
YmFzZS5jcHAKaW5kZXggOTM0MDI0YTIyMmEzMDlkZTUwZWZiMTZiNzAzMjg0ZmY0ZDE1NWU1ZS4u
YzAzZGQzNDYzMDhlMGNmODAyNGYwYWUzNDRhZjQxYjk3ZTc2ZDJjNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRGF0YWJhc2UuY3BwCkBAIC01NCw3ICs1NCw3IEBA
IEhSVEZEYXRhYmFzZTo6SFJURkRhdGFiYXNlKGZsb2F0IHNhbXBsZVJhdGUpCiAgICAgICAgIGlm
ICghaHJ0ZkVsZXZhdGlvbi5nZXQoKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgCi0g
ICAgICAgIG1fZWxldmF0aW9uc1tlbGV2YXRpb25JbmRleF0gPSBXVEY6Om1vdmUoaHJ0ZkVsZXZh
dGlvbik7CisgICAgICAgIG1fZWxldmF0aW9uc1tlbGV2YXRpb25JbmRleF0gPSBXVEZNb3ZlKGhy
dGZFbGV2YXRpb24pOwogICAgICAgICBlbGV2YXRpb25JbmRleCArPSBJbnRlcnBvbGF0aW9uRmFj
dG9yOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
SFJURkVsZXZhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRWxl
dmF0aW9uLmNwcAppbmRleCBkMGZkNGRlMTQyM2RlYzA2NWFhZDJlZmYzMTYwZjM4YTIxYTZlYzlk
Li5hZjk5MmZiZTUxMDhiN2RjNDkzMTI1NmY4N2FiOWRhODg0NGE3NTIwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRWxldmF0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRWxldmF0aW9uLmNwcApAQCAtMjczLDcgKzI3
Myw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxIUlRGRWxldmF0aW9uPiBIUlRGRWxldmF0aW9uOjpjcmVh
dGVGb3JTdWJqZWN0KGNvbnN0IFN0cmluZyYgc3ViCiAgICAgICAgIH0KICAgICB9CiAgICAgCi0g
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8SFJURkVsZXZhdGlvbj4oV1RGOjptb3ZlKGtlcm5l
bExpc3RMKSwgV1RGOjptb3ZlKGtlcm5lbExpc3RSKSwgZWxldmF0aW9uLCBzYW1wbGVSYXRlKTsK
KyAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxIUlRGRWxldmF0aW9uPihXVEZNb3ZlKGtlcm5l
bExpc3RMKSwgV1RGTW92ZShrZXJuZWxMaXN0UiksIGVsZXZhdGlvbiwgc2FtcGxlUmF0ZSk7CiB9
CiAKIHN0ZDo6dW5pcXVlX3B0cjxIUlRGRWxldmF0aW9uPiBIUlRGRWxldmF0aW9uOjpjcmVhdGVC
eUludGVycG9sYXRpbmdTbGljZXMoSFJURkVsZXZhdGlvbiogaHJ0ZkVsZXZhdGlvbjEsIEhSVEZF
bGV2YXRpb24qIGhydGZFbGV2YXRpb24yLCBmbG9hdCB4LCBmbG9hdCBzYW1wbGVSYXRlKQpAQCAt
MzAxLDcgKzMwMSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxIUlRGRWxldmF0aW9uPiBIUlRGRWxldmF0
aW9uOjpjcmVhdGVCeUludGVycG9sYXRpbmdTbGljZXMoSFJURkVsCiAgICAgLy8gSW50ZXJwb2xh
dGUgZWxldmF0aW9uIGFuZ2xlLgogICAgIGRvdWJsZSBhbmdsZSA9ICgxLjAgLSB4KSAqIGhydGZF
bGV2YXRpb24xLT5lbGV2YXRpb25BbmdsZSgpICsgeCAqIGhydGZFbGV2YXRpb24yLT5lbGV2YXRp
b25BbmdsZSgpOwogICAgIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEhSVEZFbGV2YXRp
b24+KFdURjo6bW92ZShrZXJuZWxMaXN0TCksIFdURjo6bW92ZShrZXJuZWxMaXN0UiksIHN0YXRp
Y19jYXN0PGludD4oYW5nbGUpLCBzYW1wbGVSYXRlKTsKKyAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxIUlRGRWxldmF0aW9uPihXVEZNb3ZlKGtlcm5lbExpc3RMKSwgV1RGTW92ZShrZXJuZWxM
aXN0UiksIHN0YXRpY19jYXN0PGludD4oYW5nbGUpLCBzYW1wbGVSYXRlKTsKIH0KIAogdm9pZCBI
UlRGRWxldmF0aW9uOjpnZXRLZXJuZWxzRnJvbUF6aW11dGgoZG91YmxlIGF6aW11dGhCbGVuZCwg
dW5zaWduZWQgYXppbXV0aEluZGV4LCBIUlRGS2VybmVsKiAma2VybmVsTCwgSFJURktlcm5lbCog
Jmtlcm5lbFIsIGRvdWJsZSYgZnJhbWVEZWxheUwsIGRvdWJsZSYgZnJhbWVEZWxheVIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRWxldmF0aW9uLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRWxldmF0aW9uLmgKaW5kZXggZjFkYzNj
NGI5NzRmOTI5M2M1M2ZjYTkzMTUxYzU4N2M4Mzk3M2UyNS4uN2NmOGMzNGViMjMyZjExYmQ2MmJl
YjgyMDM5YjdlYjI4MTRhMzk0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vSFJURkVsZXZhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L0hSVEZFbGV2YXRpb24uaApAQCAtNDYsOCArNDYsOCBAQCBjbGFzcyBIUlRGRWxldmF0aW9uIHsK
ICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShIUlRGRWxldmF0aW9uKTsKIHB1YmxpYzoKICAgICBI
UlRGRWxldmF0aW9uKHN0ZDo6dW5pcXVlX3B0cjxIUlRGS2VybmVsTGlzdD4ga2VybmVsTGlzdEws
IHN0ZDo6dW5pcXVlX3B0cjxIUlRGS2VybmVsTGlzdD4ga2VybmVsTGlzdFIsIGludCBlbGV2YXRp
b24sIGZsb2F0IHNhbXBsZVJhdGUpCi0gICAgICAgIDogbV9rZXJuZWxMaXN0TChXVEY6Om1vdmUo
a2VybmVsTGlzdEwpKQotICAgICAgICAsIG1fa2VybmVsTGlzdFIoV1RGOjptb3ZlKGtlcm5lbExp
c3RSKSkKKyAgICAgICAgOiBtX2tlcm5lbExpc3RMKFdURk1vdmUoa2VybmVsTGlzdEwpKQorICAg
ICAgICAsIG1fa2VybmVsTGlzdFIoV1RGTW92ZShrZXJuZWxMaXN0UikpCiAgICAgICAgICwgbV9l
bGV2YXRpb25BbmdsZShlbGV2YXRpb24pCiAgICAgICAgICwgbV9zYW1wbGVSYXRlKHNhbXBsZVJh
dGUpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJU
Rktlcm5lbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGS2VybmVsLmNw
cAppbmRleCBmNjg5MDg3MjViYzBlNjJlOWJiNzAxOWQ5OWRjMGUzZGNhODEyN2E5Li5hZDIyODMz
Y2IxZGYxMmQ0ZDEyMmM1OGExYTBlMjllOGM1NDE5ZGU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGS2VybmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9IUlRGS2VybmVsLmNwcApAQCAtMTMyLDcgKzEzMiw3IEBAIFBhc3NSZWZQ
dHI8SFJURktlcm5lbD4gSFJURktlcm5lbDo6Y3JlYXRlSW50ZXJwb2xhdGVkS2VybmVsKEhSVEZL
ZXJuZWwqIGtlcm5lbDEsCiAgICAgZmxvYXQgZnJhbWVEZWxheSA9ICgxIC0geCkgKiBrZXJuZWwx
LT5mcmFtZURlbGF5KCkgKyB4ICoga2VybmVsMi0+ZnJhbWVEZWxheSgpOwogICAgIAogICAgIHN0
ZDo6dW5pcXVlX3B0cjxGRlRGcmFtZT4gaW50ZXJwb2xhdGVkRnJhbWUgPSBGRlRGcmFtZTo6Y3Jl
YXRlSW50ZXJwb2xhdGVkRnJhbWUoKmtlcm5lbDEtPmZmdEZyYW1lKCksICprZXJuZWwyLT5mZnRG
cmFtZSgpLCB4KTsKLSAgICByZXR1cm4gSFJURktlcm5lbDo6Y3JlYXRlKFdURjo6bW92ZShpbnRl
cnBvbGF0ZWRGcmFtZSksIGZyYW1lRGVsYXksIHNhbXBsZVJhdGUxKTsKKyAgICByZXR1cm4gSFJU
Rktlcm5lbDo6Y3JlYXRlKFdURk1vdmUoaW50ZXJwb2xhdGVkRnJhbWUpLCBmcmFtZURlbGF5LCBz
YW1wbGVSYXRlMSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZLZXJuZWwuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL0hSVEZLZXJuZWwuaAppbmRleCBkZDBhYzRkNmM5NjkyOGZhMDk0MDlk
MWQzNTU2ZjkxNTJiZjdmMjY3Li5kOTk4ZjUwZDA0OGE3MjZjMGNlM2Y5MTI2MjM4NmFhYzBmMTFm
MjU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGS2VybmVs
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURktlcm5lbC5oCkBAIC01
Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhSVEZLZXJuZWw+
IGNyZWF0ZShzdGQ6OnVuaXF1ZV9wdHI8RkZURnJhbWU+IGZmdEZyYW1lLCBmbG9hdCBmcmFtZURl
bGF5LCBmbG9hdCBzYW1wbGVSYXRlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBIUlRGS2VybmVsKFdURjo6bW92ZShmZnRGcmFtZSksIGZyYW1lRGVsYXksIHNhbXBsZVJhdGUp
KTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIUlRGS2VybmVsKFdURk1vdmUoZmZ0RnJh
bWUpLCBmcmFtZURlbGF5LCBzYW1wbGVSYXRlKSk7CiAgICAgfQogCiAgICAgLy8gR2l2ZW4gdHdv
IEhSVEZLZXJuZWxzLCBhbmQgYW4gaW50ZXJwb2xhdGlvbiBmYWN0b3IgeDogMCAtPiAxLCByZXR1
cm5zIGFuIGludGVycG9sYXRlZCBIUlRGS2VybmVsLgpAQCAtNzksNyArNzksNyBAQCBwcml2YXRl
OgogICAgIEhSVEZLZXJuZWwoQXVkaW9DaGFubmVsKiwgc2l6ZV90IGZmdFNpemUsIGZsb2F0IHNh
bXBsZVJhdGUpOwogICAgIAogICAgIEhSVEZLZXJuZWwoc3RkOjp1bmlxdWVfcHRyPEZGVEZyYW1l
PiBmZnRGcmFtZSwgZmxvYXQgZnJhbWVEZWxheSwgZmxvYXQgc2FtcGxlUmF0ZSkKLSAgICAgICAg
OiBtX2ZmdEZyYW1lKFdURjo6bW92ZShmZnRGcmFtZSkpCisgICAgICAgIDogbV9mZnRGcmFtZShX
VEZNb3ZlKGZmdEZyYW1lKSkKICAgICAgICAgLCBtX2ZyYW1lRGVsYXkoZnJhbWVEZWxheSkKICAg
ICAgICAgLCBtX3NhbXBsZVJhdGUoc2FtcGxlUmF0ZSkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyLmNwcAppbmRleCBkNmMzNGFjNDI1
ZTNhZDViMzlmMjY3ZWUyNzAxODQxMmI4NWZiMTNkLi45NmYzMzA4MjgwNzlhNzlhZDY0ODIwZDA3
MjFjNTljNWVhMTZmZGIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9SZXZlcmJDb252b2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L1JldmVyYkNvbnZvbHZlci5jcHAKQEAgLTEwOCwxMCArMTA4LDEwIEBAIFJldmVyYkNvbnZvbHZl
cjo6UmV2ZXJiQ29udm9sdmVyKEF1ZGlvQ2hhbm5lbCogaW1wdWxzZVJlc3BvbnNlLCBzaXplX3Qg
cmVuZGVyU2xpCiAgICAgICAgIGJvb2wgaXNCYWNrZ3JvdW5kU3RhZ2UgPSBmYWxzZTsKIAogICAg
ICAgICBpZiAodGhpcy0+dXNlQmFja2dyb3VuZFRocmVhZHMoKSAmJiBzdGFnZU9mZnNldCA+IFJl
YWx0aW1lRnJhbWVMaW1pdCkgewotICAgICAgICAgICAgbV9iYWNrZ3JvdW5kU3RhZ2VzLmFwcGVu
ZChXVEY6Om1vdmUoc3RhZ2UpKTsKKyAgICAgICAgICAgIG1fYmFja2dyb3VuZFN0YWdlcy5hcHBl
bmQoV1RGTW92ZShzdGFnZSkpOwogICAgICAgICAgICAgaXNCYWNrZ3JvdW5kU3RhZ2UgPSB0cnVl
OwogICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIG1fc3RhZ2VzLmFwcGVuZChXVEY6Om1vdmUo
c3RhZ2UpKTsKKyAgICAgICAgICAgIG1fc3RhZ2VzLmFwcGVuZChXVEZNb3ZlKHN0YWdlKSk7CiAK
ICAgICAgICAgc3RhZ2VPZmZzZXQgKz0gc3RhZ2VTaXplOwogICAgICAgICArK2k7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uTWFuYWdl
cklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25N
YW5hZ2VySU9TLm1tCmluZGV4IDNhYmY5ZGY4YmMzNzFlYWQ5NTkzN2M2MzYyZTFiY2Q2MmM2ZDhm
ZjIuLmZhZmRjMWU1OGQ0ZWRiMTg2ZDZkZTJjZGYyZTYwZjI3NTE5OGVjODAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25NYW5hZ2VySU9T
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25N
YW5hZ2VySU9TLm1tCkBAIC0zNDksOCArMzQ5LDggQEAgLSAodm9pZClkZWFsbG9jCiAgICAgTE9H
KE1lZGlhLCAiLVtXZWJNZWRpYVNlc3Npb25IZWxwZXIgZGVhbGxvY10iKTsKIAogICAgIGlmICgh
aXNNYWluVGhyZWFkKCkpIHsKLSAgICAgICAgYXV0byB2b2x1bWVWaWV3ID0gV1RGOjptb3ZlKF92
b2x1bWVWaWV3KTsKLSAgICAgICAgYXV0byByb3V0aW5nQ29udHJvbGxlciA9IFdURjo6bW92ZShf
YWlyUGxheVByZXNlbmNlUm91dGluZ0NvbnRyb2xsZXIpOworICAgICAgICBhdXRvIHZvbHVtZVZp
ZXcgPSBXVEZNb3ZlKF92b2x1bWVWaWV3KTsKKyAgICAgICAgYXV0byByb3V0aW5nQ29udHJvbGxl
ciA9IFdURk1vdmUoX2FpclBsYXlQcmVzZW5jZVJvdXRpbmdDb250cm9sbGVyKTsKIAogICAgICAg
ICBjYWxsT25NYWluVGhyZWFkKFt2b2x1bWVWaWV3LCByb3V0aW5nQ29udHJvbGxlcl0gKCkgbXV0
YWJsZSB7CiAgICAgICAgICAgICBMT0coTWVkaWEsICItW1dlYk1lZGlhU2Vzc2lvbkhlbHBlciBk
ZWFsbG9jXSAtIGRpcGF0Y2hlZCB0byBNYWluVGhyZWFkIik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZERlY29kZXJDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jZi9LZXllZERlY29kZXJDRi5jcHAKaW5kZXggNzUzNGJhNzY0YmFiNDRjNGE5NDlh
NjA5MDVhZTY5ZjM2YTJlNDJjYi4uODEwMzgzOGE3NjYwNWY2ZDA3NWY3N2EwNTlhYTAwYzQ0ZWM3
MzY4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWREZWNvZGVy
Q0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRGVjb2RlckNGLmNw
cApAQCAtNDEsNyArNDEsNyBAQCBLZXllZERlY29kZXJDRjo6S2V5ZWREZWNvZGVyQ0YoY29uc3Qg
dWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiAgICAgYXV0byBjZkRhdGEgPSBhZG9wdENGKENG
RGF0YUNyZWF0ZVdpdGhCeXRlc05vQ29weShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBkYXRhLCBzaXpl
LCBrQ0ZBbGxvY2F0b3JOdWxsKSk7CiAKICAgICBpZiAoYXV0byByb290RGljdGlvbmFyeSA9IGFk
b3B0Q0YoZHluYW1pY19jZl9jYXN0PENGRGljdGlvbmFyeVJlZj4oQ0ZQcm9wZXJ0eUxpc3RDcmVh
dGVXaXRoRGF0YShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBjZkRhdGEuZ2V0KCksIGtDRlByb3BlcnR5
TGlzdEltbXV0YWJsZSwgbnVsbHB0ciwgbnVsbHB0cikpKSkKLSAgICAgICAgbV9yb290RGljdGlv
bmFyeSA9IFdURjo6bW92ZShyb290RGljdGlvbmFyeSk7CisgICAgICAgIG1fcm9vdERpY3Rpb25h
cnkgPSBXVEZNb3ZlKHJvb3REaWN0aW9uYXJ5KTsKICAgICBlbHNlCiAgICAgICAgIG1fcm9vdERp
Y3Rpb25hcnkgPSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0
LCBudWxscHRyLCBudWxscHRyLCAwLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZr
Q0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CiAgICAgbV9kaWN0aW9uYXJ5U3RhY2su
YXBwZW5kKG1fcm9vdERpY3Rpb25hcnkuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY29jb2EvQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyQ29jb2EubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXJD
b2NvYS5tbQppbmRleCAzNjVkMTFiODllMWMxOTI1OGJkOWE0OTE3NjUyM2ViYTEyZmI5MjFjLi5i
N2FjYmFiNDhiMGY2ZGQxMGIxODllOWU5ZTE3YmYwMmJkY2MzYzk0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9Db250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXJDb2Nv
YS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9Db250ZW50RmlsdGVyVW5i
bG9ja0hhbmRsZXJDb2NvYS5tbQpAQCAtNTcsMTYgKzU3LDE2IEBAIHN0YXRpYyBOU1N0cmluZyAq
IGNvbnN0IHVucmVhY2hhYmxlVVJMS2V5IHsgQCJ1bnJlYWNoYWJsZVVSTCIgfTsKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogQ29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyOjpDb250ZW50RmlsdGVy
VW5ibG9ja0hhbmRsZXIoU3RyaW5nIHVuYmxvY2tVUkxIb3N0LCBVbmJsb2NrUmVxdWVzdGVyRnVu
Y3Rpb24gdW5ibG9ja1JlcXVlc3RlcikKLSAgICA6IG1fdW5ibG9ja1VSTEhvc3QgeyBXVEY6Om1v
dmUodW5ibG9ja1VSTEhvc3QpIH0KLSAgICAsIG1fdW5ibG9ja1JlcXVlc3RlciB7IFdURjo6bW92
ZSh1bmJsb2NrUmVxdWVzdGVyKSB9CisgICAgOiBtX3VuYmxvY2tVUkxIb3N0IHsgV1RGTW92ZSh1
bmJsb2NrVVJMSG9zdCkgfQorICAgICwgbV91bmJsb2NrUmVxdWVzdGVyIHsgV1RGTW92ZSh1bmJs
b2NrUmVxdWVzdGVyKSB9CiB7CiAgICAgTE9HKENvbnRlbnRGaWx0ZXJpbmcsICJDcmVhdGluZyBD
b250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIgd2l0aCBhbiB1bmJsb2NrIHJlcXVlc3RlciBhbmQg
dW5ibG9jayBVUkwgaG9zdCA8JXM+LlxuIiwgdW5ibG9ja1VSTEhvc3QuYXNjaWkoKS5kYXRhKCkp
OwogfQogCiAjaWYgSEFWRShQQVJFTlRBTF9DT05UUk9MUykgJiYgUExBVEZPUk0oSU9TKQogQ29u
dGVudEZpbHRlclVuYmxvY2tIYW5kbGVyOjpDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIoU3Ry
aW5nIHVuYmxvY2tVUkxIb3N0LCBSZXRhaW5QdHI8V2ViRmlsdGVyRXZhbHVhdG9yPiBldmFsdWF0
b3IpCi0gICAgOiBtX3VuYmxvY2tVUkxIb3N0IHsgV1RGOjptb3ZlKHVuYmxvY2tVUkxIb3N0KSB9
Ci0gICAgLCBtX3dlYkZpbHRlckV2YWx1YXRvciB7IFdURjo6bW92ZShldmFsdWF0b3IpIH0KKyAg
ICA6IG1fdW5ibG9ja1VSTEhvc3QgeyBXVEZNb3ZlKHVuYmxvY2tVUkxIb3N0KSB9CisgICAgLCBt
X3dlYkZpbHRlckV2YWx1YXRvciB7IFdURk1vdmUoZXZhbHVhdG9yKSB9CiB7CiAgICAgTE9HKENv
bnRlbnRGaWx0ZXJpbmcsICJDcmVhdGluZyBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIgd2l0
aCBhIFdlYkZpbHRlckV2YWx1YXRvciBhbmQgdW5ibG9jayBVUkwgaG9zdCA8JXM+LlxuIiwgdW5i
bG9ja1VSTEhvc3QuYXNjaWkoKS5kYXRhKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ2xpYi9LZXllZERlY29kZXJHbGliLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dsaWIvS2V5ZWREZWNvZGVyR2xpYi5jcHAKaW5kZXggMGNkMTk0MTk3YWExZGQ3NTM4
ZGYyZDUyYTY0MDM4MjU2NzFkZGEzZS4uNWJhMTc0OWE1NDU1Mzc3ODkzNTQyY2M5ZWEzMDczNGZj
NGE4NGMyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZERl
Y29kZXJHbGliLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRGVj
b2RlckdsaWIuY3BwCkBAIC01OCw3ICs1OCw3IEBAIEhhc2hNYXA8U3RyaW5nLCBHUmVmUHRyPEdW
YXJpYW50Pj4gS2V5ZWREZWNvZGVyR2xpYjo6ZGljdGlvbmFyeUZyb21HVmFyaWFudChHVmFyCiAg
ICAgR1ZhcmlhbnQqIHZhbHVlOwogICAgIHdoaWxlIChnX3ZhcmlhbnRfaXRlcl9sb29wKCZpdGVy
LCAieyZzdn0iLCAma2V5LCAmdmFsdWUpKQogICAgICAgICBkaWN0aW9uYXJ5LnNldChTdHJpbmc6
OmZyb21VVEY4KGtleSksIHZhbHVlKTsKLSAgICByZXR1cm4gV1RGOjptb3ZlKGRpY3Rpb25hcnkp
OworICAgIHJldHVybiBXVEZNb3ZlKGRpY3Rpb25hcnkpOwogfQogCiBib29sIEtleWVkRGVjb2Rl
ckdsaWI6OmRlY29kZUJ5dGVzKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCB1aW50OF90KiYgYnl0
ZXMsIHNpemVfdCYgc2l6ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0Zsb2F0UG9seWdvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9GbG9hdFBvbHlnb24uY3BwCmluZGV4IDc1Njk0ZGQxNDYzYWVhNDc0ZGI4MGQyOTE2MTc1Njll
Y2VkYmU5YjMuLmQ5MTM1OTExMTNhMmU2ZWQzZTFmNjQ5ZGY3ZjI3OTI4NmM1MjBkYWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UG9seWdvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRQb2x5Z29uLmNwcApA
QCAtODAsNyArODAsNyBAQCBzdGF0aWMgdW5zaWduZWQgZmluZE5leHRFZGdlVmVydGV4SW5kZXgo
Y29uc3QgRmxvYXRQb2x5Z29uJiBwb2x5Z29uLCB1bnNpZ25lZCB2ZQogfQogCiBGbG9hdFBvbHln
b246OkZsb2F0UG9seWdvbihzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPEZsb2F0UG9pbnQ+PiB2ZXJ0
aWNlcywgV2luZFJ1bGUgZmlsbFJ1bGUpCi0gICAgOiBtX3ZlcnRpY2VzKFdURjo6bW92ZSh2ZXJ0
aWNlcykpCisgICAgOiBtX3ZlcnRpY2VzKFdURk1vdmUodmVydGljZXMpKQogICAgICwgbV9maWxs
UnVsZShmaWxsUnVsZSkKIHsKICAgICB1bnNpZ25lZCBuVmVydGljZXMgPSBudW1iZXJPZlZlcnRp
Y2VzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCmluZGV4IGU4
NTcyNDJhYWVhY2FmZmVjNzY5YzVmMTZjZDUwM2E5N2Y2YTJhYWUuLmJjOTdmNzg2OGJjODY4MDky
NDllZWEzMWYzY2VjZjNiZGZkOTdiODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ZvbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ZvbnQuY3BwCkBAIC01NSw3ICs1NSw3IEBAIEZvbnQ6OkZvbnQoY29uc3QgRm9udFBsYXRm
b3JtRGF0YSYgcGxhdGZvcm1EYXRhLCBzdGQ6OnVuaXF1ZV9wdHI8U1ZHRGF0YT4mJiBzdmdECiAg
ICAgOiBtX21heENoYXJXaWR0aCgtMSkKICAgICAsIG1fYXZnQ2hhcldpZHRoKC0xKQogICAgICwg
bV9wbGF0Zm9ybURhdGEocGxhdGZvcm1EYXRhKQotICAgICwgbV9zdmdEYXRhKFdURjo6bW92ZShz
dmdEYXRhKSkKKyAgICAsIG1fc3ZnRGF0YShXVEZNb3ZlKHN2Z0RhdGEpKQogICAgICwgbV9tYXRo
RGF0YShudWxscHRyKQogICAgICwgbV90cmVhdEFzRml4ZWRQaXRjaChmYWxzZSkKICAgICAsIG1f
aXNDdXN0b21Gb250KGlzQ3VzdG9tRm9udCkKQEAgLTg1LDcgKzg1LDcgQEAgRm9udDo6Rm9udChj
b25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEsIGJvb2wgaXNDdXN0b21Gb250LCBi
b29sIGlzTG9hZGkKIH0KIAogRm9udDo6Rm9udChzdGQ6OnVuaXF1ZV9wdHI8U1ZHRGF0YT4gc3Zn
RGF0YSwgZmxvYXQgZm9udFNpemUsIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJ
dGFsaWMpCi0gICAgOiBGb250KEZvbnRQbGF0Zm9ybURhdGEoZm9udFNpemUsIHN5bnRoZXRpY0Jv
bGQsIHN5bnRoZXRpY0l0YWxpYyksIFdURjo6bW92ZShzdmdEYXRhKSwgdHJ1ZSwgZmFsc2UsIGZh
bHNlKQorICAgIDogRm9udChGb250UGxhdGZvcm1EYXRhKGZvbnRTaXplLCBzeW50aGV0aWNCb2xk
LCBzeW50aGV0aWNJdGFsaWMpLCBXVEZNb3ZlKHN2Z0RhdGEpLCB0cnVlLCBmYWxzZSwgZmFsc2Up
CiB7CiAgICAgbV9zdmdEYXRhLT5pbml0aWFsaXplRm9udCh0aGlzLCBmb250U2l6ZSk7CiB9CkBA
IC0yMjksNyArMjI5LDcgQEAgc3RhdGljIFJlZlB0cjxHbHlwaFBhZ2U+IGNyZWF0ZUFuZEZpbGxH
bHlwaFBhZ2UodW5zaWduZWQgcGFnZU51bWJlciwgY29uc3QgRm9udCYKICAgICBpZiAoIWhhdmVH
bHlwaHMpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIFdURjo6bW92ZShn
bHlwaFBhZ2UpOworICAgIHJldHVybiBXVEZNb3ZlKGdseXBoUGFnZSk7CiB9CiAKIGNvbnN0IEds
eXBoUGFnZSogRm9udDo6Z2x5cGhQYWdlKHVuc2lnbmVkIHBhZ2VOdW1iZXIpIGNvbnN0CkBAIC00
NzEsNyArNDcxLDcgQEAgUmVmUHRyPEZvbnQ+IEZvbnQ6OnN5c3RlbUZhbGxiYWNrRm9udEZvckNo
YXJhY3RlcihVQ2hhcjMyIGNoYXJhY3RlciwgY29uc3QgRm9udEQKICAgICB9CiAKICAgICBhdXRv
IGtleSA9IENoYXJhY3RlckZhbGxiYWNrTWFwS2V5KGRlc2NyaXB0aW9uLmxvY2FsZSgpLCBjaGFy
YWN0ZXIsIGlzRm9yUGxhdGZvcm1Gb250KTsKLSAgICBhdXRvIGNoYXJhY3RlckFkZFJlc3VsdCA9
IGZvbnRBZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmFkZChXVEY6Om1vdmUoa2V5KSwgbnVsbHB0
cik7CisgICAgYXV0byBjaGFyYWN0ZXJBZGRSZXN1bHQgPSBmb250QWRkUmVzdWx0Lml0ZXJhdG9y
LT52YWx1ZS5hZGQoV1RGTW92ZShrZXkpLCBudWxscHRyKTsKIAogICAgIEZvbnQqJiBmYWxsYmFj
a0ZvbnQgPSBjaGFyYWN0ZXJBZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgKaW5kZXggOTJlZjU0MjZmMTNkMDQ4YWU3OTc2NzNj
NjdiODE2MTViYjAzNjFiZS4uZTljNzI2M2JjODBjYjI4ZGM3MjhjODgwYTNhZjRhNmM2ZGU5YWE4
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuaApAQCAtODksNyArODks
NyBAQCBwdWJsaWM6CiAgICAgLy8gVXNlZCB0byBjcmVhdGUgU1ZHIEZvbnRzLgogICAgIHN0YXRp
YyBSZWY8Rm9udD4gY3JlYXRlKHN0ZDo6dW5pcXVlX3B0cjxTVkdEYXRhPiBzdmdEYXRhLCBmbG9h
dCBmb250U2l6ZSwgYm9vbCBzeW50aGV0aWNCb2xkLCBib29sIHN5bnRoZXRpY0l0YWxpYykKICAg
ICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZvbnQoV1RGOjptb3ZlKHN2Z0RhdGEp
LCBmb250U2l6ZSwgc3ludGhldGljQm9sZCwgc3ludGhldGljSXRhbGljKSk7CisgICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IEZvbnQoV1RGTW92ZShzdmdEYXRhKSwgZm9udFNpemUsIHN5bnRo
ZXRpY0JvbGQsIHN5bnRoZXRpY0l0YWxpYykpOwogICAgIH0KIAogICAgIFdFQkNPUkVfRVhQT1JU
IH5Gb250KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
b250Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hl
LmNwcAppbmRleCBlMGVlNzE2NTQ1MjI3YzBlZTBhOWZmYWY5ZTVmNjc4MTJlOGFmODQ1Li5mNThk
ZWJkMzM0YTg4NzczZGM4ZjBkMTQxMjczMmM1OWI5MTljZGRkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAKQEAgLTQyNCw3ICs0MjQsNyBAQCB2
b2lkIEZvbnRDYWNoZTo6cHVyZ2VJbmFjdGl2ZUZvbnREYXRhKHVuc2lnbmVkIHB1cmdlQ291bnQp
CiAgICAgICAgIGZvciAoYXV0byYgZm9udCA6IGNhY2hlZEZvbnRzKCkudmFsdWVzKCkpIHsKICAg
ICAgICAgICAgIGlmICghZm9udC0+aGFzT25lUmVmKCkpCiAgICAgICAgICAgICAgICAgY29udGlu
dWU7Ci0gICAgICAgICAgICBmb250c1RvRGVsZXRlLmFwcGVuZChXVEY6Om1vdmUoZm9udCkpOwor
ICAgICAgICAgICAgZm9udHNUb0RlbGV0ZS5hcHBlbmQoV1RGTW92ZShmb250KSk7CiAgICAgICAg
ICAgICBpZiAoIS0tcHVyZ2VDb3VudCkKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2Nh
ZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3Bw
CmluZGV4IDFiZmFlZTQ1MmYyMjVlZjM1M2JjNmJkZmMxNjBhOWNkN2ZkOTM5YzIuLmUwM2MyN2Ix
MTM3YjUwMTYzYzk0Y2ZkNDc5YTUyOTc3YTYxZGRkYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAKQEAgLTE5Myw4ICsxOTMsOCBAQCBz
dHJ1Y3QgRm9udENhc2NhZGVDYWNoZUVudHJ5IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKICAgICBGb250Q2FzY2FkZUNhY2hlRW50cnkoRm9udENhc2NhZGVDYWNoZUtl
eSYmIGtleSwgUmVmPEZvbnRDYXNjYWRlRm9udHM+JiYgZm9udHMpCi0gICAgICAgIDoga2V5KFdU
Rjo6bW92ZShrZXkpKQotICAgICAgICAsIGZvbnRzKFdURjo6bW92ZShmb250cykpCisgICAgICAg
IDoga2V5KFdURk1vdmUoa2V5KSkKKyAgICAgICAgLCBmb250cyhXVEZNb3ZlKGZvbnRzKSkKICAg
ICB7IH0KICAgICBGb250Q2FzY2FkZUNhY2hlS2V5IGtleTsKICAgICBSZWY8Rm9udENhc2NhZGVG
b250cz4gZm9udHM7CkBAIC0yODMsNyArMjgzLDcgQEAgc3RhdGljIFJlZjxGb250Q2FzY2FkZUZv
bnRzPiByZXRyaWV2ZU9yQWRkQ2FjaGVkRm9udHMoY29uc3QgRm9udENhc2NhZGVEZXNjcmlwdGkK
ICAgICAgICAgcmV0dXJuIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUtPmZvbnRzLmdldCgpOwog
CiAgICAgYXV0byYgbmV3RW50cnkgPSBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlOwotICAgIG5l
d0VudHJ5ID0gc3RkOjptYWtlX3VuaXF1ZTxGb250Q2FzY2FkZUNhY2hlRW50cnk+KFdURjo6bW92
ZShrZXkpLCBGb250Q2FzY2FkZUZvbnRzOjpjcmVhdGUoV1RGOjptb3ZlKGZvbnRTZWxlY3Rvcikp
KTsKKyAgICBuZXdFbnRyeSA9IHN0ZDo6bWFrZV91bmlxdWU8Rm9udENhc2NhZGVDYWNoZUVudHJ5
PihXVEZNb3ZlKGtleSksIEZvbnRDYXNjYWRlRm9udHM6OmNyZWF0ZShXVEZNb3ZlKGZvbnRTZWxl
Y3RvcikpKTsKICAgICBSZWY8Rm9udENhc2NhZGVGb250cz4gZ2x5cGhzID0gbmV3RW50cnktPmZv
bnRzLmdldCgpOwogCiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHVucmVmZXJlbmNlZFBydW5l
SW50ZXJ2YWwgPSA1MDsKQEAgLTMwMCw3ICszMDAsNyBAQCBzdGF0aWMgUmVmPEZvbnRDYXNjYWRl
Rm9udHM+IHJldHJpZXZlT3JBZGRDYWNoZWRGb250cyhjb25zdCBGb250Q2FzY2FkZURlc2NyaXB0
aQogCiB2b2lkIEZvbnRDYXNjYWRlOjp1cGRhdGUoUmVmUHRyPEZvbnRTZWxlY3Rvcj4mJiBmb250
U2VsZWN0b3IpIGNvbnN0CiB7Ci0gICAgbV9mb250cyA9IHJldHJpZXZlT3JBZGRDYWNoZWRGb250
cyhtX2ZvbnREZXNjcmlwdGlvbiwgV1RGOjptb3ZlKGZvbnRTZWxlY3RvcikpOworICAgIG1fZm9u
dHMgPSByZXRyaWV2ZU9yQWRkQ2FjaGVkRm9udHMobV9mb250RGVzY3JpcHRpb24sIFdURk1vdmUo
Zm9udFNlbGVjdG9yKSk7CiAgICAgbV91c2VCYWNrc2xhc2hBc1llblN5bWJvbCA9IHVzZUJhY2tz
bGFzaEFzWWVuU2lnbkZvckZhbWlseShmaXJzdEZhbWlseSgpKTsKICAgICBtX2VuYWJsZUtlcm5p
bmcgPSBjb21wdXRlRW5hYmxlS2VybmluZygpOwogICAgIG1fcmVxdWlyZXNTaGFwaW5nID0gY29t
cHV0ZVJlcXVpcmVzU2hhcGluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRm9udENhc2NhZGVGb250cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Gb250Q2FzY2FkZUZvbnRzLmNwcAppbmRleCAyZGY0MzQ3MThjNDhkZDBhNTli
NTU1YjFiODdiYzM0ODg5ZDg5OWU4Li5lMTBmNTFmNmVlNzhhNjM3MjYyYTM3Y2JmMmRlYWY1MzY4
NWZlNWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250
Q2FzY2FkZUZvbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
b250Q2FzY2FkZUZvbnRzLmNwcApAQCAtMTUxLDE0ICsxNTEsMTQgQEAgc3RhdGljIEZvbnRSYW5n
ZXMgcmVhbGl6ZU5leHRGYWxsYmFjayhjb25zdCBGb250Q2FzY2FkZURlc2NyaXB0aW9uJiBkZXNj
cmlwdGlvbiwKICAgICAgICAgICAgICAgICByZXR1cm4gcmFuZ2VzOwogICAgICAgICB9CiAgICAg
ICAgIGlmIChhdXRvIGZvbnQgPSBmb250Q2FjaGUuZm9udEZvckZhbWlseShkZXNjcmlwdGlvbiwg
ZmFtaWx5KSkKLSAgICAgICAgICAgIHJldHVybiBGb250UmFuZ2VzKFdURjo6bW92ZShmb250KSk7
CisgICAgICAgICAgICByZXR1cm4gRm9udFJhbmdlcyhXVEZNb3ZlKGZvbnQpKTsKICAgICB9CiAg
ICAgLy8gV2UgZGlkbid0IGZpbmQgYSBmb250LiBUcnkgdG8gZmluZCBhIHNpbWlsYXIgZm9udCB1
c2luZyBvdXIgb3duIHNwZWNpZmljIGtub3dsZWRnZSBhYm91dCBvdXIgcGxhdGZvcm0uCiAgICAg
Ly8gRm9yIGV4YW1wbGUgb24gT1MgWCwgd2Uga25vdyB0byBtYXAgYW55IGZhbWlsaWVzIGNvbnRh
aW5pbmcgdGhlIHdvcmRzIEFyYWJpYywgUGFzaHRvLCBvciBVcmR1IHRvIHRoZQogICAgIC8vIEdl
ZXphIFBybyBmb250LgogICAgIGZvciAoYXV0byYgZmFtaWx5IDogZGVzY3JpcHRpb24uZmFtaWxp
ZXMoKSkgewogICAgICAgICBpZiAoYXV0byBmb250ID0gZm9udENhY2hlLnNpbWlsYXJGb250KGRl
c2NyaXB0aW9uLCBmYW1pbHkpKQotICAgICAgICAgICAgcmV0dXJuIEZvbnRSYW5nZXMoV1RGOjpt
b3ZlKGZvbnQpKTsKKyAgICAgICAgICAgIHJldHVybiBGb250UmFuZ2VzKFdURk1vdmUoZm9udCkp
OwogICAgIH0KICAgICByZXR1cm4geyB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGVGb250cy5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGVGb250cy5oCmluZGV4IGU1YWI0OTk1ZmIzMDM0OTgy
NDJkNGQxMTlkOTcyNmEyOTFiZmMxZDIuLmZjYzFjMzdhOWExOGVlYmQ2ODI4NTYwODNiYmQ3ZDNh
OTMyNGJjNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnRDYXNjYWRlRm9udHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
b250Q2FzY2FkZUZvbnRzLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgY2xhc3MgTWl4ZWRGb250R2x5cGhQ
YWdlOwogY2xhc3MgRm9udENhc2NhZGVGb250cyA6IHB1YmxpYyBSZWZDb3VudGVkPEZvbnRDYXNj
YWRlRm9udHM+IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShGb250Q2FzY2FkZUZvbnRzKTsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEZvbnRDYXNjYWRlRm9udHM+IGNyZWF0ZShSZWZQdHI8
Rm9udFNlbGVjdG9yPiYmIGZvbnRTZWxlY3RvcikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBGb250
Q2FzY2FkZUZvbnRzKFdURjo6bW92ZShmb250U2VsZWN0b3IpKSk7IH0KKyAgICBzdGF0aWMgUmVm
PEZvbnRDYXNjYWRlRm9udHM+IGNyZWF0ZShSZWZQdHI8Rm9udFNlbGVjdG9yPiYmIGZvbnRTZWxl
Y3RvcikgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBGb250Q2FzY2FkZUZvbnRzKFdURk1vdmUoZm9u
dFNlbGVjdG9yKSkpOyB9CiAgICAgc3RhdGljIFJlZjxGb250Q2FzY2FkZUZvbnRzPiBjcmVhdGVG
b3JQbGF0Zm9ybUZvbnQoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxhdGZvcm1EYXRhKSB7IHJl
dHVybiBhZG9wdFJlZigqbmV3IEZvbnRDYXNjYWRlRm9udHMocGxhdGZvcm1EYXRhKSk7IH0KIAog
ICAgIFdFQkNPUkVfRVhQT1JUIH5Gb250Q2FzY2FkZUZvbnRzKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250RGVzY3JpcHRpb24uaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnREZXNjcmlwdGlvbi5oCmluZGV4IGFhYWMxM2Ri
MmRjMGI0MjIxOWExNzg0NTZhMzlkMzBhNGZiYmZlNWEuLjc4OWQzMDJlNGViMjBmNGNkZDBjMzll
ZWVlMjlhZjBhODQ0NmEyNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ZvbnREZXNjcmlwdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ZvbnREZXNjcmlwdGlvbi5oCkBAIC0xMDUsNyArMTA1LDcgQEAgcHVibGljOgogICAg
IHZvaWQgc2V0Tm9uQ0pLR2x5cGhPcmllbnRhdGlvbihOb25DSktHbHlwaE9yaWVudGF0aW9uIG9y
aWVudGF0aW9uKSB7IG1fbm9uQ0pLR2x5cGhPcmllbnRhdGlvbiA9IHN0YXRpY19jYXN0PHVuc2ln
bmVkPihvcmllbnRhdGlvbik7IH0KICAgICB2b2lkIHNldFdpZHRoVmFyaWFudChGb250V2lkdGhW
YXJpYW50IHdpZHRoVmFyaWFudCkgeyBtX3dpZHRoVmFyaWFudCA9IHdpZHRoVmFyaWFudDsgfSAv
LyBNYWtlIHN1cmUgbmV3IGNhbGxlcnMgb2YgdGhpcyBzeW5jIHdpdGggRm9udFBsYXRmb3JtRGF0
YTo6aXNGb3JUZXh0Q29tYmluZSgpIQogICAgIHZvaWQgc2V0TG9jYWxlKGNvbnN0IEF0b21pY1N0
cmluZyYpOwotICAgIHZvaWQgc2V0RmVhdHVyZVNldHRpbmdzKEZvbnRGZWF0dXJlU2V0dGluZ3Mm
JiBzZXR0aW5ncykgeyBtX2ZlYXR1cmVTZXR0aW5ncyA9IFdURjo6bW92ZShzZXR0aW5ncyk7IH0K
KyAgICB2b2lkIHNldEZlYXR1cmVTZXR0aW5ncyhGb250RmVhdHVyZVNldHRpbmdzJiYgc2V0dGlu
Z3MpIHsgbV9mZWF0dXJlU2V0dGluZ3MgPSBXVEZNb3ZlKHNldHRpbmdzKTsgfQogICAgIHZvaWQg
c2V0Rm9udFN5bnRoZXNpcyhGb250U3ludGhlc2lzIGZvbnRTeW50aGVzaXMpIHsgbV9mb250U3lu
dGhlc2lzID0gZm9udFN5bnRoZXNpczsgfQogICAgIHZvaWQgc2V0VmFyaWFudENvbW1vbkxpZ2F0
dXJlcyhGb250VmFyaWFudExpZ2F0dXJlcyB2YXJpYW50KSB7IG1fdmFyaWFudENvbW1vbkxpZ2F0
dXJlcyA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPih2YXJpYW50KTsgfQogICAgIHZvaWQgc2V0VmFy
aWFudERpc2NyZXRpb25hcnlMaWdhdHVyZXMoRm9udFZhcmlhbnRMaWdhdHVyZXMgdmFyaWFudCkg
eyBtX3ZhcmlhbnREaXNjcmV0aW9uYXJ5TGlnYXR1cmVzID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KHZhcmlhbnQpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Gb250RmVhdHVyZVNldHRpbmdzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ZvbnRGZWF0dXJlU2V0dGluZ3MuY3BwCmluZGV4IDQyMGVkMjQzZWFmNjEwMTY1M2E2ZmJm
NTk2ZTAxNTM5YWRkMmYxMjUuLjU1MTI0Yjc3MzI4ZTUyZjUzMjRhYzE5M2E1Nzc5ZDkwNzU3ODE2
ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRGZWF0
dXJlU2V0dGluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnRGZWF0dXJlU2V0dGluZ3MuY3BwCkBAIC0zNyw3ICszNyw3IEBAIEZvbnRGZWF0dXJlOjpGb250
RmVhdHVyZShjb25zdCBGb250RmVhdHVyZVRhZyYgdGFnLCBpbnQgdmFsdWUpCiB9CiAKIEZvbnRG
ZWF0dXJlOjpGb250RmVhdHVyZShGb250RmVhdHVyZVRhZyYmIHRhZywgaW50IHZhbHVlKQotICAg
IDogbV90YWcoV1RGOjptb3ZlKHRhZykpCisgICAgOiBtX3RhZyhXVEZNb3ZlKHRhZykpCiAgICAg
LCBtX3ZhbHVlKHZhbHVlKQogewogfQpAQCAtNjAsNyArNjAsNyBAQCB2b2lkIEZvbnRGZWF0dXJl
U2V0dGluZ3M6Omluc2VydChGb250RmVhdHVyZSYmIGZlYXR1cmUpCiAgICAgICAgIGlmIChmZWF0
dXJlIDwgbV9saXN0W2ldKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIG1fbGlzdC5p
bnNlcnQoaSwgV1RGOjptb3ZlKGZlYXR1cmUpKTsKKyAgICBtX2xpc3QuaW5zZXJ0KGksIFdURk1v
dmUoZmVhdHVyZSkpOwogfQogCiB1bnNpZ25lZCBGb250RmVhdHVyZVNldHRpbmdzOjpoYXNoKCkg
Y29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRS
YW5nZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRSYW5nZXMuaApp
bmRleCBjNjk4YTRiYTJjM2Y5MjkyNmRlYzA1YTMyY2MyNDcyMzdiYzRlY2JhLi43YjcyZGI1ODRh
ZjY4MGYwZThhMGQwZGU5NzY0OWQ5MmY3YzQwYjk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250UmFuZ2VzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udFJhbmdlcy5oCkBAIC0zOCw3ICszOCw3IEBAIHB1YmxpYzoKICAg
ICAgICAgUmFuZ2UoVUNoYXIzMiBmcm9tLCBVQ2hhcjMyIHRvLCBSZWY8Rm9udD4mJiBmb250KQog
ICAgICAgICAgICAgOiBtX2Zyb20oZnJvbSkKICAgICAgICAgICAgICwgbV90byh0bykKLSAgICAg
ICAgICAgICwgbV9mb250KFdURjo6bW92ZShmb250KSkKKyAgICAgICAgICAgICwgbV9mb250KFdU
Rk1vdmUoZm9udCkpCiAgICAgICAgIHsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HTENvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR0xDb250ZXh0LmNwcAppbmRleCBmNjIxNDAzYWZmZjg1NGFkZTYx
NzUxZDdlMWEwNzg5ZGFiNzIzY2UyLi5kZTYxMjQ4M2RkZDZjYWY5NDBlMmQyYjc2ZDk0NzM3NThh
MjUyMmU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HTENv
bnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dMQ29udGV4
dC5jcHAKQEAgLTExNyw3ICsxMTcsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0PiBHTENv
bnRleHQ6OmNyZWF0ZUNvbnRleHRGb3JXaW5kb3coR0xOYXRpdmVXaW5kb3dUeXBlCiAjaWYgUExB
VEZPUk0oV0FZTEFORCkgJiYgVVNFKEVHTCkKICAgICBpZiAoUGxhdGZvcm1EaXNwbGF5OjpzaGFy
ZWREaXNwbGF5KCkudHlwZSgpID09IFBsYXRmb3JtRGlzcGxheTo6VHlwZTo6V2F5bGFuZCkgewog
ICAgICAgICBpZiAoYXV0byBlZ2xDb250ZXh0ID0gR0xDb250ZXh0RUdMOjpjcmVhdGVDb250ZXh0
KHdpbmRvd0hhbmRsZSwgc2hhcmluZ0NvbnRleHQpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6
bW92ZShlZ2xDb250ZXh0KTsKKyAgICAgICAgICAgIHJldHVybiBXVEZNb3ZlKGVnbENvbnRleHQp
OwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAjZW5kaWYKQEAgLTEyOSwxMSArMTI5
LDExIEBAIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHQ+IEdMQ29udGV4dDo6Y3JlYXRlQ29udGV4
dEZvcldpbmRvdyhHTE5hdGl2ZVdpbmRvd1R5cGUKICAgICBYSUQgR0xYV2luZG93SGFuZGxlID0g
c3RhdGljX2Nhc3Q8WElEPih3aW5kb3dIYW5kbGUpOwogI2VuZGlmCiAgICAgaWYgKGF1dG8gZ2x4
Q29udGV4dCA9IEdMQ29udGV4dEdMWDo6Y3JlYXRlQ29udGV4dChHTFhXaW5kb3dIYW5kbGUsIHNo
YXJpbmdDb250ZXh0KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bW92ZShnbHhDb250ZXh0KTsKKyAg
ICAgICAgcmV0dXJuIFdURk1vdmUoZ2x4Q29udGV4dCk7CiAjZW5kaWYKICNpZiBVU0UoRUdMKQog
ICAgIGlmIChhdXRvIGVnbENvbnRleHQgPSBHTENvbnRleHRFR0w6OmNyZWF0ZUNvbnRleHQod2lu
ZG93SGFuZGxlLCBzaGFyaW5nQ29udGV4dCkpCi0gICAgICAgIHJldHVybiBXVEY6Om1vdmUoZWds
Q29udGV4dCk7CisgICAgICAgIHJldHVybiBXVEZNb3ZlKGVnbENvbnRleHQpOwogI2VuZGlmCiAg
ICAgcmV0dXJuIG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAppbmRleCBjNjdlYjUyYTVkM2RkMWUwZmNiODIw
NGU0MWI0YjdlNWFkNmM1Y2Q4Li41NjZlY2I2MTI4MDI2NGFlYjVkOGQ0YTBiZDBmNDc5ZTJmOTli
YWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dC5jcHAKQEAgLTI3NCwyNCArMjc0LDI0IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
OjpzZXRBbnRpYWxpYXNlZEZvbnREaWxhdGlvbkVuYWJsZWQoYm9vbCBhbnRpYWxpYXNlZEZvbnRE
aWxhCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0U3Ryb2tlUGF0dGVybihSZWY8UGF0dGVybj4m
JiBwYXR0ZXJuKQogewogICAgIG1fc3RhdGUuc3Ryb2tlR3JhZGllbnQgPSBudWxscHRyOwotICAg
IG1fc3RhdGUuc3Ryb2tlUGF0dGVybiA9IFdURjo6bW92ZShwYXR0ZXJuKTsKKyAgICBtX3N0YXRl
LnN0cm9rZVBhdHRlcm4gPSBXVEZNb3ZlKHBhdHRlcm4pOwogfQogCiB2b2lkIEdyYXBoaWNzQ29u
dGV4dDo6c2V0RmlsbFBhdHRlcm4oUmVmPFBhdHRlcm4+JiYgcGF0dGVybikKIHsKICAgICBtX3N0
YXRlLmZpbGxHcmFkaWVudCA9IG51bGxwdHI7Ci0gICAgbV9zdGF0ZS5maWxsUGF0dGVybiA9IFdU
Rjo6bW92ZShwYXR0ZXJuKTsKKyAgICBtX3N0YXRlLmZpbGxQYXR0ZXJuID0gV1RGTW92ZShwYXR0
ZXJuKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFN0cm9rZUdyYWRpZW50KFJlZjxH
cmFkaWVudD4mJiBncmFkaWVudCkKIHsKLSAgICBtX3N0YXRlLnN0cm9rZUdyYWRpZW50ID0gV1RG
Ojptb3ZlKGdyYWRpZW50KTsKKyAgICBtX3N0YXRlLnN0cm9rZUdyYWRpZW50ID0gV1RGTW92ZShn
cmFkaWVudCk7CiAgICAgbV9zdGF0ZS5zdHJva2VQYXR0ZXJuID0gbnVsbHB0cjsKIH0KIAogdm9p
ZCBHcmFwaGljc0NvbnRleHQ6OnNldEZpbGxHcmFkaWVudChSZWY8R3JhZGllbnQ+JiYgZ3JhZGll
bnQpCiB7Ci0gICAgbV9zdGF0ZS5maWxsR3JhZGllbnQgPSBXVEY6Om1vdmUoZ3JhZGllbnQpOwor
ICAgIG1fc3RhdGUuZmlsbEdyYWRpZW50ID0gV1RGTW92ZShncmFkaWVudCk7CiAgICAgbV9zdGF0
ZS5maWxsUGF0dGVybiA9IG51bGxwdHI7CiB9CiAKQEAgLTQ0OCw3ICs0NDgsNyBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dDo6ZHJhd0NvbnN1bWluZ0ltYWdlQnVmZmVyKHN0ZDo6dW5pcXVlX3B0cjxJ
bWFnZUJ1ZmZlcj4gaW1hZwogICAgIGlmICghaW1hZ2UpCiAgICAgICAgIHJldHVybjsKICAgICBJ
bnRTaXplIGltYWdlTG9naWNhbFNpemUgPSBpbWFnZS0+bG9naWNhbFNpemUoKTsKLSAgICBkcmF3
Q29uc3VtaW5nSW1hZ2VCdWZmZXIoV1RGOjptb3ZlKGltYWdlKSwgRmxvYXRSZWN0KGRlc3RpbmF0
aW9uLCBpbWFnZUxvZ2ljYWxTaXplKSwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgaW1hZ2VMb2dp
Y2FsU2l6ZSksIGltYWdlUGFpbnRpbmdPcHRpb25zKTsKKyAgICBkcmF3Q29uc3VtaW5nSW1hZ2VC
dWZmZXIoV1RGTW92ZShpbWFnZSksIEZsb2F0UmVjdChkZXN0aW5hdGlvbiwgaW1hZ2VMb2dpY2Fs
U2l6ZSksIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGltYWdlTG9naWNhbFNpemUpLCBpbWFnZVBh
aW50aW5nT3B0aW9ucyk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3Q29uc3VtaW5n
SW1hZ2VCdWZmZXIoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBpbWFnZSwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIGltYWdlUGFp
bnRpbmdPcHRpb25zKQpAQCAtNDU2LDcgKzQ1Niw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Ojpk
cmF3Q29uc3VtaW5nSW1hZ2VCdWZmZXIoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBpbWFn
CiAgICAgaWYgKCFpbWFnZSkKICAgICAgICAgcmV0dXJuOwogICAgIEludFNpemUgaW1hZ2VMb2dp
Y2FsU2l6ZSA9IGltYWdlLT5sb2dpY2FsU2l6ZSgpOwotICAgIGRyYXdDb25zdW1pbmdJbWFnZUJ1
ZmZlcihXVEY6Om1vdmUoaW1hZ2UpLCBkZXN0aW5hdGlvbiwgRmxvYXRSZWN0KEZsb2F0UG9pbnQo
KSwgRmxvYXRTaXplKGltYWdlTG9naWNhbFNpemUpKSwgaW1hZ2VQYWludGluZ09wdGlvbnMpOwor
ICAgIGRyYXdDb25zdW1pbmdJbWFnZUJ1ZmZlcihXVEZNb3ZlKGltYWdlKSwgZGVzdGluYXRpb24s
IEZsb2F0UmVjdChGbG9hdFBvaW50KCksIEZsb2F0U2l6ZShpbWFnZUxvZ2ljYWxTaXplKSksIGlt
YWdlUGFpbnRpbmdPcHRpb25zKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdDb25z
dW1pbmdJbWFnZUJ1ZmZlcihzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGltYWdlLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmIGltYWdlUGFpbnRpbmdPcHRpb25zKQpAQCAtNDY3LDcgKzQ2
Nyw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3Q29uc3VtaW5nSW1hZ2VCdWZmZXIoc3Rk
Ojp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBpbWFnCiAgICAgLy8gRklYTUUgKDQ5MDAyKTogU2hv
dWxkIGJlIEludGVycG9sYXRpb25Mb3cKICAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eU1haW50YWlu
ZXIgaW50ZXJwb2xhdGlvblF1YWxpdHlGb3JUaGlzU2NvcGUoKnRoaXMsIGltYWdlUGFpbnRpbmdP
cHRpb25zLm1fdXNlTG93UXVhbGl0eVNjYWxlID8gSW50ZXJwb2xhdGlvbk5vbmUgOiBpbWFnZUlu
dGVycG9sYXRpb25RdWFsaXR5KCkpOwogCi0gICAgSW1hZ2VCdWZmZXI6OmRyYXdDb25zdW1pbmco
V1RGOjptb3ZlKGltYWdlKSwgKnRoaXMsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIGltYWdlUGFpbnRp
bmdPcHRpb25zLm1fY29tcG9zaXRlT3BlcmF0b3IsIGltYWdlUGFpbnRpbmdPcHRpb25zLm1fYmxl
bmRNb2RlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX3VzZUxvd1F1YWxpdHlTY2FsZSk7CisgICAg
SW1hZ2VCdWZmZXI6OmRyYXdDb25zdW1pbmcoV1RGTW92ZShpbWFnZSksICp0aGlzLCBkZXN0aW5h
dGlvbiwgc291cmNlLCBpbWFnZVBhaW50aW5nT3B0aW9ucy5tX2NvbXBvc2l0ZU9wZXJhdG9yLCBp
bWFnZVBhaW50aW5nT3B0aW9ucy5tX2JsZW5kTW9kZSwgaW1hZ2VQYWludGluZ09wdGlvbnMubV91
c2VMb3dRdWFsaXR5U2NhbGUpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xpcChjb25z
dCBJbnRSZWN0JiByZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0xheWVyLmNwcAppbmRleCAyOTRjYjZiYWE4MzlkZDdmYTE4MDQ3YmZkNzI0ZjZj
OGIwM2VkMGFmLi5lM2VhODZhYWM1NWI4MDAwOGJhZDNkYjczOThmNjkyMmRlNWZiODlkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNw
cApAQCAtNTgsMTcgKzU4LDE3IEBAIHZvaWQgS2V5ZnJhbWVWYWx1ZUxpc3Q6Omluc2VydChzdGQ6
OnVuaXF1ZV9wdHI8Y29uc3QgQW5pbWF0aW9uVmFsdWU+IHZhbHVlKQogICAgICAgICBpZiAoY3Vy
VmFsdWUtPmtleVRpbWUoKSA9PSB2YWx1ZS0+a2V5VGltZSgpKSB7CiAgICAgICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIC8vIGluc2VydCBhZnRlcgotICAgICAgICAg
ICAgbV92YWx1ZXMuaW5zZXJ0KGkgKyAxLCBXVEY6Om1vdmUodmFsdWUpKTsKKyAgICAgICAgICAg
IG1fdmFsdWVzLmluc2VydChpICsgMSwgV1RGTW92ZSh2YWx1ZSkpOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAgICAgICAgIGlmIChjdXJWYWx1ZS0+a2V5VGltZSgpID4gdmFsdWUt
PmtleVRpbWUoKSkgewogICAgICAgICAgICAgLy8gaW5zZXJ0IGJlZm9yZQotICAgICAgICAgICAg
bV92YWx1ZXMuaW5zZXJ0KGksIFdURjo6bW92ZSh2YWx1ZSkpOworICAgICAgICAgICAgbV92YWx1
ZXMuaW5zZXJ0KGksIFdURk1vdmUodmFsdWUpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogICAgIH0KICAgICAKLSAgICBtX3ZhbHVlcy5hcHBlbmQoV1RGOjptb3ZlKHZhbHVlKSk7
CisgICAgbV92YWx1ZXMuYXBwZW5kKFdURk1vdmUodmFsdWUpKTsKIH0KIAogI2lmICFVU0UoQ0Ep
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXll
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAK
aW5kZXggNTBjZWEzMzRlOWEyNTc2NzA5NzEyZWFmMjdhNjQ5MzI0MTMyOTM4OS4uMjFkODBhZTI1
NjJkZmRlYjllOWU2NDFjOTY1ZjA1ODliODM1ZDU1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcApAQCAtOTI3LDcgKzkyNyw3IEBAIGJv
b2wgTWVkaWFQbGF5ZXI6OmNhblBsYXlUb1dpcmVsZXNzUGxheWJhY2tUYXJnZXQoKSBjb25zdAog
CiB2b2lkIE1lZGlhUGxheWVyOjpzZXRXaXJlbGVzc1BsYXliYWNrVGFyZ2V0KFJlZjxNZWRpYVBs
YXliYWNrVGFyZ2V0PiYmIGRldmljZSkKIHsKLSAgICBtX3ByaXZhdGUtPnNldFdpcmVsZXNzUGxh
eWJhY2tUYXJnZXQoV1RGOjptb3ZlKGRldmljZSkpOworICAgIG1fcHJpdmF0ZS0+c2V0V2lyZWxl
c3NQbGF5YmFja1RhcmdldChXVEZNb3ZlKGRldmljZSkpOwogfQogCiB2b2lkIE1lZGlhUGxheWVy
OjpzZXRTaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldChib29sIHNob3VsZFBsYXkpCkBAIC0xMjI5
LDcgKzEyMjksNyBAQCBDYWNoZWRSZXNvdXJjZUxvYWRlciogTWVkaWFQbGF5ZXI6OmNhY2hlZFJl
c291cmNlTG9hZGVyKCkKIAogUGFzc1JlZlB0cjxQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXI+
IE1lZGlhUGxheWVyOjpjcmVhdGVSZXNvdXJjZUxvYWRlcihzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZv
cm1NZWRpYVJlc291cmNlTG9hZGVyQ2xpZW50PiBjbGllbnQpCiB7Ci0gICAgcmV0dXJuIG1fY2xp
ZW50Lm1lZGlhUGxheWVyQ3JlYXRlUmVzb3VyY2VMb2FkZXIoV1RGOjptb3ZlKGNsaWVudCkpOwor
ICAgIHJldHVybiBtX2NsaWVudC5tZWRpYVBsYXllckNyZWF0ZVJlc291cmNlTG9hZGVyKFdURk1v
dmUoY2xpZW50KSk7CiB9CiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2Fk
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtTWVkaWFSZXNv
dXJjZUxvYWRlci5oCmluZGV4IDUzMmFjODQwYTc5ZWE2YTc2YzA1Y2QzNzVjOTFkZWZkODE4Zjk2
ZmEuLjU4ZmVjNGU2ZDRkYzgzMzkyZWU5MTI5MzVmMzI3ODc0ZmMyNGMwNDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtTWVkaWFSZXNvdXJjZUxv
YWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtTWVk
aWFSZXNvdXJjZUxvYWRlci5oCkBAIC02OCw3ICs2OCw3IEBAIHB1YmxpYzoKIAogcHJvdGVjdGVk
OgogICAgIGV4cGxpY2l0IFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlcihzdGQ6OnVuaXF1ZV9w
dHI8UGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyQ2xpZW50PiBjbGllbnQpCi0gICAgICAgIDog
bV9jbGllbnQoV1RGOjptb3ZlKGNsaWVudCkpCisgICAgICAgIDogbV9jbGllbnQoV1RGTW92ZShj
bGllbnQpKQogICAgIHsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETVByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakMubW0KaW5kZXggOGIxYmYzMmFmYWQ0YmEwMWRlOTE5YzA4NGNm
M2Q3Yjg2NDBjYjdiYy4uMDViNTAwZTNhNTM3NWZmZTFiNTBlNDI1OTY0MjMzOTAyZjllNWMyZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L0NETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMu
bW0KQEAgLTExOCw3ICsxMTgsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Q0RNU2Vzc2lvbj4gQ0RNUHJp
dmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6Y3JlYXRlU2Vzc2lvbihDRE1TZXNzaQogICAgICAgICBz
ZXNzaW9uID0gc3RkOjptYWtlX3VuaXF1ZTxDRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uPihwcm90
b2NvbFZlcnNpb25zLCAqdGhpcywgY2xpZW50KTsKIAogICAgIG1fc2Vzc2lvbnMuYXBwZW5kKHNl
c3Npb24uZ2V0KCkpOwotICAgIHJldHVybiBXVEY6Om1vdmUoc2Vzc2lvbik7CisgICAgcmV0dXJu
IFdURk1vdmUoc2Vzc2lvbik7CiB9CiAKIHZvaWQgQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2Jq
Qzo6aW52YWxpZGF0ZVNlc3Npb24oQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQyogc2Vzc2lv
bikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCmluZGV4IDE4NjNjZDIwZTEzN2Y2OWZhOGZmYjFlODJi
MmE5ZmQ4MzE2NzBhNDkuLjFmYWM3MDRkMmIzY2M1MGRjMzA2MDE2NjA0ZWY1M2YwOTM2Y2M2Zjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQpAQCAtMzA5Nyw3ICszMDk3LDcgQEAgdm9pZCBNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tE
aXNhYmxlZChib29sIGQKICNpZiAhUExBVEZPUk0oSU9TKQogdm9pZCBNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDOjpzZXRXaXJlbGVzc1BsYXliYWNrVGFyZ2V0KFJlZjxNZWRpYVBs
YXliYWNrVGFyZ2V0PiYmIHRhcmdldCkKIHsKLSAgICBtX3BsYXliYWNrVGFyZ2V0ID0gV1RGOjpt
b3ZlKHRhcmdldCk7CisgICAgbV9wbGF5YmFja1RhcmdldCA9IFdURk1vdmUodGFyZ2V0KTsKIAog
ICAgIG1fb3V0cHV0Q29udGV4dCA9IG1fcGxheWJhY2tUYXJnZXQtPnRhcmdldFR5cGUoKSA9PSBN
ZWRpYVBsYXliYWNrVGFyZ2V0OjpBVkZvdW5kYXRpb24gPyB0b01lZGlhUGxheWJhY2tUYXJnZXRN
YWMobV9wbGF5YmFja1RhcmdldC5nZXQoKSktPm91dHB1dENvbnRleHQoKSA6IG51bGxwdHI7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQppbmRleCAxNTU3MTliNTYxMzEwNDRmMDQzZmVjOTlh
MGMzNmZlZGRkNzg2MjY3Li44MTBhMDg5MTYxYmZmYjZiYmRjYzVmZmFlNDAyNTVhYWZlZDBlOTE1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCkBAIC04MTEsNyArODExLDcgQEAgdm9pZCBN
ZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OmNoYXJhY3RlcmlzdGljc0NoYW5n
ZWQoKQogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCiB2b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c2V0V2lyZWxlc3NQbGF5YmFja1RhcmdldChS
ZWY8TWVkaWFQbGF5YmFja1RhcmdldD4mJiB0YXJnZXQpCiB7Ci0gICAgbV9wbGF5YmFja1Rhcmdl
dCA9IFdURjo6bW92ZSh0YXJnZXQpOworICAgIG1fcGxheWJhY2tUYXJnZXQgPSBXVEZNb3ZlKHRh
cmdldCk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpz
ZXRTaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldChib29sIHNob3VsZFBsYXlUb1RhcmdldCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb250cm9s
bGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb250cm9s
bGVyLmNwcAppbmRleCA1NmYxNGY3Njc1ZDNlOWQ4Mjg0MWQ1Y2Y1NjAyYjkwOTBjMDEyY2ZiLi41
ZjU3YmU5YTE3YjVlOGEyMzg4MjkyNTk5MmYxOTUxMDEyNmQxNjA3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvbnRyb2xsZXIuY3BwCkBA
IC0xMjIsNyArMTIyLDcgQEAgdm9pZCBUaWxlQ29udHJvbGxlcjo6c2V0Q29udGVudHNTY2FsZShm
bG9hdCBzY2FsZSkKICAgICAgICAgbV9jb3ZlcmFnZU1hcC0+c2V0RGV2aWNlU2NhbGVGYWN0b3Io
ZGV2aWNlU2NhbGVGYWN0b3IpOwogCiAgICAgaWYgKG1fem9vbWVkT3V0VGlsZUdyaWQgJiYgbV96
b29tZWRPdXRUaWxlR3JpZC0+c2NhbGUoKSA9PSBzY2FsZSkgewotICAgICAgICBtX3RpbGVHcmlk
ID0gV1RGOjptb3ZlKG1fem9vbWVkT3V0VGlsZUdyaWQpOworICAgICAgICBtX3RpbGVHcmlkID0g
V1RGTW92ZShtX3pvb21lZE91dFRpbGVHcmlkKTsKICAgICAgICAgbV90aWxlR3JpZC0+c2V0SXNa
b29tZWRPdXRUaWxlR3JpZChmYWxzZSk7CiAgICAgICAgIG1fdGlsZUdyaWQtPnJldmFsaWRhdGVU
aWxlcygpOwogICAgICAgICB0aWxlR3JpZHNDaGFuZ2VkKCk7CkBAIC0xMzAsNyArMTMwLDcgQEAg
dm9pZCBUaWxlQ29udHJvbGxlcjo6c2V0Q29udGVudHNTY2FsZShmbG9hdCBzY2FsZSkKICAgICB9
CiAKICAgICBpZiAobV96b29tZWRPdXRDb250ZW50c1NjYWxlICYmIG1fem9vbWVkT3V0Q29udGVu
dHNTY2FsZSA9PSB0aWxlR3JpZCgpLnNjYWxlKCkgJiYgdGlsZUdyaWQoKS5zY2FsZSgpICE9IHNj
YWxlICYmICFtX2hhc1RpbGVzV2l0aFRlbXBvcmFyeVNjYWxlRmFjdG9yKSB7Ci0gICAgICAgIG1f
em9vbWVkT3V0VGlsZUdyaWQgPSBXVEY6Om1vdmUobV90aWxlR3JpZCk7CisgICAgICAgIG1fem9v
bWVkT3V0VGlsZUdyaWQgPSBXVEZNb3ZlKG1fdGlsZUdyaWQpOwogICAgICAgICBtX3pvb21lZE91
dFRpbGVHcmlkLT5zZXRJc1pvb21lZE91dFRpbGVHcmlkKHRydWUpOwogICAgICAgICBtX3RpbGVH
cmlkID0gc3RkOjptYWtlX3VuaXF1ZTxUaWxlR3JpZD4oKnRoaXMpOwogICAgICAgICB0aWxlR3Jp
ZHNDaGFuZ2VkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JT1N1cmZhY2VQb29sLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0lPU3VyZmFjZVBvb2wuY3BwCmluZGV4IDNhZWQ3MTNkNWVkYTcwZWVhNDFiZWM5NDA4MzQ2
ZTk0ZGY2Y2U3MGUuLjRlYTQ0NjlmODFiYjlmMjk3MzIxMmJlYWJiODZjNWRmMjM4MDc5NDkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0lPU3VyZmFjZVBv
b2wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0lPU3VyZmFj
ZVBvb2wuY3BwCkBAIC0xMjAsNyArMTIwLDcgQEAgc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4g
SU9TdXJmYWNlUG9vbDo6dGFrZVN1cmZhY2UoSW50U2l6ZSBzaXplLCBDb2xvclNwYWNlIGMKICAg
ICAgICAgaWYgKCFzdXJmYWNlTWF0Y2hlc1BhcmFtZXRlcnMoKnN1cmZhY2VJdGVyLT5nZXQoKSwg
c2l6ZSwgY29sb3JTcGFjZSwgZm9ybWF0KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAg
ICAgIGF1dG8gc3VyZmFjZSA9IFdURjo6bW92ZSgqc3VyZmFjZUl0ZXIpOworICAgICAgICBhdXRv
IHN1cmZhY2UgPSBXVEZNb3ZlKCpzdXJmYWNlSXRlcik7CiAgICAgICAgIG1hcEl0ZXItPnZhbHVl
LnJlbW92ZShzdXJmYWNlSXRlcik7CiAKICAgICAgICAgZGlkVXNlU3VyZmFjZU9mU2l6ZShzaXpl
KTsKQEAgLTE0NSw3ICsxNDUsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBJT1N1cmZh
Y2VQb29sOjp0YWtlU3VyZmFjZShJbnRTaXplIHNpemUsIENvbG9yU3BhY2UgYwogICAgICAgICBp
ZiAoc3VyZmFjZUl0ZXItPmdldCgpLT5pc0luVXNlKCkpCiAgICAgICAgICAgICBjb250aW51ZTsK
ICAgICAgICAgCi0gICAgICAgIGF1dG8gc3VyZmFjZSA9IFdURjo6bW92ZSgqc3VyZmFjZUl0ZXIp
OworICAgICAgICBhdXRvIHN1cmZhY2UgPSBXVEZNb3ZlKCpzdXJmYWNlSXRlcik7CiAgICAgICAg
IG1faW5Vc2VTdXJmYWNlcy5yZW1vdmUoc3VyZmFjZUl0ZXIpOwogICAgICAgICBkaWRSZW1vdmVT
dXJmYWNlKCpzdXJmYWNlLCB0cnVlKTsKIApAQCAtMTgyLDEzICsxODIsMTMgQEAgdm9pZCBJT1N1
cmZhY2VQb29sOjphZGRTdXJmYWNlKHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IHN1cmZhY2Up
CiAgICAgd2lsbEFkZFN1cmZhY2UoKnN1cmZhY2UsIHN1cmZhY2VJc0luVXNlKTsKIAogICAgIGlm
IChzdXJmYWNlSXNJblVzZSkgewotICAgICAgICBtX2luVXNlU3VyZmFjZXMucHJlcGVuZChXVEY6
Om1vdmUoc3VyZmFjZSkpOworICAgICAgICBtX2luVXNlU3VyZmFjZXMucHJlcGVuZChXVEZNb3Zl
KHN1cmZhY2UpKTsKICAgICAgICAgc2NoZWR1bGVDb2xsZWN0aW9uVGltZXIoKTsKICAgICAgICAg
RFVNUF9QT09MX1NUQVRJU1RJQ1MoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlu
c2VydFN1cmZhY2VJbnRvUG9vbChXVEY6Om1vdmUoc3VyZmFjZSkpOworICAgIGluc2VydFN1cmZh
Y2VJbnRvUG9vbChXVEZNb3ZlKHN1cmZhY2UpKTsKICAgICBEVU1QX1BPT0xfU1RBVElTVElDUygp
OwogfQogCkBAIC0xOTYsNyArMTk2LDcgQEAgdm9pZCBJT1N1cmZhY2VQb29sOjppbnNlcnRTdXJm
YWNlSW50b1Bvb2woc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gc3VyZmFjZSkKIHsKICAgICBJ
bnRTaXplIHN1cmZhY2VTaXplID0gc3VyZmFjZS0+c2l6ZSgpOwogICAgIGF1dG8gaW5zZXJ0ZWRU
dXBsZSA9IG1fY2FjaGVkU3VyZmFjZXMuYWRkKHN1cmZhY2VTaXplLCBDYWNoZWRTdXJmYWNlUXVl
dWUoKSk7Ci0gICAgaW5zZXJ0ZWRUdXBsZS5pdGVyYXRvci0+dmFsdWUucHJlcGVuZChXVEY6Om1v
dmUoc3VyZmFjZSkpOworICAgIGluc2VydGVkVHVwbGUuaXRlcmF0b3ItPnZhbHVlLnByZXBlbmQo
V1RGTW92ZShzdXJmYWNlKSk7CiAgICAgaWYgKCFpbnNlcnRlZFR1cGxlLmlzTmV3RW50cnkpCiAg
ICAgICAgIG1fc2l6ZXNJblBydW5lT3JkZXIucmVtb3ZlKG1fc2l6ZXNJblBydW5lT3JkZXIucmV2
ZXJzZUZpbmQoc3VyZmFjZVNpemUpKTsKICAgICBtX3NpemVzSW5QcnVuZU9yZGVyLmFwcGVuZChz
dXJmYWNlU2l6ZSk7CkBAIC0yNjksMTUgKzI2OSwxNSBAQCB2b2lkIElPU3VyZmFjZVBvb2w6OmNv
bGxlY3RJblVzZVN1cmZhY2VzKCkKICAgICBmb3IgKENhY2hlZFN1cmZhY2VRdWV1ZTo6aXRlcmF0
b3Igc3VyZmFjZUl0ZXIgPSBtX2luVXNlU3VyZmFjZXMuYmVnaW4oKTsgc3VyZmFjZUl0ZXIgIT0g
bV9pblVzZVN1cmZhY2VzLmVuZCgpOyArK3N1cmZhY2VJdGVyKSB7CiAgICAgICAgIElPU3VyZmFj
ZSogc3VyZmFjZSA9IHN1cmZhY2VJdGVyLT5nZXQoKTsKICAgICAgICAgaWYgKHN1cmZhY2UtPmlz
SW5Vc2UoKSkgewotICAgICAgICAgICAgbmV3SW5Vc2VTdXJmYWNlcy5hcHBlbmQoV1RGOjptb3Zl
KCpzdXJmYWNlSXRlcikpOworICAgICAgICAgICAgbmV3SW5Vc2VTdXJmYWNlcy5hcHBlbmQoV1RG
TW92ZSgqc3VyZmFjZUl0ZXIpKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAK
ICAgICAgICAgbV9pblVzZUJ5dGVzQ2FjaGVkIC09IHN1cmZhY2UtPnRvdGFsQnl0ZXMoKTsKLSAg
ICAgICAgaW5zZXJ0U3VyZmFjZUludG9Qb29sKFdURjo6bW92ZSgqc3VyZmFjZUl0ZXIpKTsKKyAg
ICAgICAgaW5zZXJ0U3VyZmFjZUludG9Qb29sKFdURk1vdmUoKnN1cmZhY2VJdGVyKSk7CiAgICAg
fQogCi0gICAgbV9pblVzZVN1cmZhY2VzID0gV1RGOjptb3ZlKG5ld0luVXNlU3VyZmFjZXMpOwor
ICAgIG1faW5Vc2VTdXJmYWNlcyA9IFdURk1vdmUobmV3SW5Vc2VTdXJmYWNlcyk7CiB9CiAKIGJv
b2wgSU9TdXJmYWNlUG9vbDo6bWFya09sZGVyU3VyZmFjZXNQdXJnZWFibGUoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcApp
bmRleCBlMGVmMTkyNTA2NWMzNzk4ZWM1MmQyZDI5ZWZkOWJmMTYzZjg3NWYzLi5jZDVhZWIwZjZi
YTk3Yjc3ODg2YjkwN2JlOTc1OTMxZjc5NTI5MDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcApAQCAtMjA1LDcgKzIw
NSw3IEBAIFJlZlB0cjxJbWFnZT4gSW1hZ2VCdWZmZXI6OmNvcHlJbWFnZShCYWNraW5nU3RvcmVD
b3B5IGNvcHlCZWhhdmlvciwgU2NhbGVCZWhhdmlvCiAgICAgZWxzZQogICAgICAgICBpbWFnZSA9
IGNvcHlOYXRpdmVJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSk7CiAKLSAgICByZXR1cm4gY3Jl
YXRlQml0bWFwSW1hZ2VBZnRlclNjYWxpbmdJZk5lZWRlZChXVEY6Om1vdmUoaW1hZ2UpLCBpbnRl
cm5hbFNpemUoKSwgbG9naWNhbFNpemUoKSwgbV9kYXRhLmJhY2tpbmdTdG9yZVNpemUsIG1fcmVz
b2x1dGlvblNjYWxlLCBzY2FsZUJlaGF2aW9yKTsKKyAgICByZXR1cm4gY3JlYXRlQml0bWFwSW1h
Z2VBZnRlclNjYWxpbmdJZk5lZWRlZChXVEZNb3ZlKGltYWdlKSwgaW50ZXJuYWxTaXplKCksIGxv
Z2ljYWxTaXplKCksIG1fZGF0YS5iYWNraW5nU3RvcmVTaXplLCBtX3Jlc29sdXRpb25TY2FsZSwg
c2NhbGVCZWhhdmlvcik7CiB9CiAKIFJlZlB0cjxJbWFnZT4gSW1hZ2VCdWZmZXI6OnNpbmtJbnRv
SW1hZ2Uoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZlciwgU2NhbGVCZWhh
dmlvciBzY2FsZUJlaGF2aW9yKQpAQCAtMjE1LDcgKzIxNSw3IEBAIFJlZlB0cjxJbWFnZT4gSW1h
Z2VCdWZmZXI6OnNpbmtJbnRvSW1hZ2Uoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBpbWFn
ZUJ1ZmZlCiAgICAgSW50U2l6ZSBiYWNraW5nU3RvcmVTaXplID0gaW1hZ2VCdWZmZXItPm1fZGF0
YS5iYWNraW5nU3RvcmVTaXplOwogICAgIGZsb2F0IHJlc29sdXRpb25TY2FsZSA9IGltYWdlQnVm
ZmVyLT5tX3Jlc29sdXRpb25TY2FsZTsKIAotICAgIHJldHVybiBjcmVhdGVCaXRtYXBJbWFnZUFm
dGVyU2NhbGluZ0lmTmVlZGVkKHNpbmtJbnRvTmF0aXZlSW1hZ2UoV1RGOjptb3ZlKGltYWdlQnVm
ZmVyKSksIGludGVybmFsU2l6ZSwgbG9naWNhbFNpemUsIGJhY2tpbmdTdG9yZVNpemUsIHJlc29s
dXRpb25TY2FsZSwgc2NhbGVCZWhhdmlvcik7CisgICAgcmV0dXJuIGNyZWF0ZUJpdG1hcEltYWdl
QWZ0ZXJTY2FsaW5nSWZOZWVkZWQoc2lua0ludG9OYXRpdmVJbWFnZShXVEZNb3ZlKGltYWdlQnVm
ZmVyKSksIGludGVybmFsU2l6ZSwgbG9naWNhbFNpemUsIGJhY2tpbmdTdG9yZVNpemUsIHJlc29s
dXRpb25TY2FsZSwgc2NhbGVCZWhhdmlvcik7CiB9CiAKIEJhY2tpbmdTdG9yZUNvcHkgSW1hZ2VC
dWZmZXI6OmZhc3RDb3B5SW1hZ2VNb2RlKCkKQEAgLTIyOSw3ICsyMjksNyBAQCBSZXRhaW5QdHI8
Q0dJbWFnZVJlZj4gSW1hZ2VCdWZmZXI6OnNpbmtJbnRvTmF0aXZlSW1hZ2Uoc3RkOjp1bmlxdWVf
cHRyPEltYWdlQnVmZgogICAgIGlmICghaW1hZ2VCdWZmZXItPm1fZGF0YS5zdXJmYWNlKQogICAg
ICAgICByZXR1cm4gaW1hZ2VCdWZmZXItPmNvcHlOYXRpdmVJbWFnZShEb250Q29weUJhY2tpbmdT
dG9yZSk7CiAKLSAgICByZXR1cm4gSU9TdXJmYWNlOjpzaW5rSW50b0ltYWdlKElPU3VyZmFjZTo6
Y3JlYXRlRnJvbUltYWdlQnVmZmVyKFdURjo6bW92ZShpbWFnZUJ1ZmZlcikpKTsKKyAgICByZXR1
cm4gSU9TdXJmYWNlOjpzaW5rSW50b0ltYWdlKElPU3VyZmFjZTo6Y3JlYXRlRnJvbUltYWdlQnVm
ZmVyKFdURk1vdmUoaW1hZ2VCdWZmZXIpKSk7CiAjZWxzZQogICAgIHJldHVybiBpbWFnZUJ1ZmZl
ci0+Y29weU5hdGl2ZUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlKTsKICNlbmRpZgpAQCAtMjcy
LDcgKzI3Miw3IEBAIHZvaWQgSW1hZ2VCdWZmZXI6OmRyYXdDb25zdW1pbmcoc3RkOjp1bmlxdWVf
cHRyPEltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZlciwgR3JhcGhpCiAgICAgZmxvYXQgcmVzb2x1dGlv
blNjYWxlID0gaW1hZ2VCdWZmZXItPm1fcmVzb2x1dGlvblNjYWxlOwogICAgIEludFNpemUgYmFj
a2luZ1N0b3JlU2l6ZSA9IGltYWdlQnVmZmVyLT5tX2RhdGEuYmFja2luZ1N0b3JlU2l6ZTsKIAot
ICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBpbWFnZSA9IElPU3VyZmFjZTo6c2lua0ludG9JbWFn
ZShJT1N1cmZhY2U6OmNyZWF0ZUZyb21JbWFnZUJ1ZmZlcihXVEY6Om1vdmUoaW1hZ2VCdWZmZXIp
KSk7CisgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGltYWdlID0gSU9TdXJmYWNlOjpzaW5rSW50
b0ltYWdlKElPU3VyZmFjZTo6Y3JlYXRlRnJvbUltYWdlQnVmZmVyKFdURk1vdmUoaW1hZ2VCdWZm
ZXIpKSk7CiAgICAgCiAgICAgRmxvYXRSZWN0IGFkanVzdGVkU3JjUmVjdCA9IHNyY1JlY3Q7CiAg
ICAgYWRqdXN0ZWRTcmNSZWN0LnNjYWxlKHJlc29sdXRpb25TY2FsZSwgcmVzb2x1dGlvblNjYWxl
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lP
U3VyZmFjZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3Vy
ZmFjZS5tbQppbmRleCBlMzJmNDk2NzE4NzlkMzJkMTg4MDk3ODlmZmY4ZWQ2MzJmYTFkMWRjLi4x
NjMxOGM2NjEzOGJkY2JlNjdjNWRjODhhZmE1MjU1ZWY3YWMwYTM0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLm1tCkBAIC05OCwx
MiArOTgsMTIgQEAgc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gSU9TdXJmYWNlOjpjcmVhdGVG
cm9tSW1hZ2UoQ0dJbWFnZVJlZiBpbWFnZSkKIAogdm9pZCBJT1N1cmZhY2U6Om1vdmVUb1Bvb2wo
c3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4mJiBzdXJmYWNlKQogewotICAgIElPU3VyZmFjZVBv
b2w6OnNoYXJlZFBvb2woKS5hZGRTdXJmYWNlKFdURjo6bW92ZShzdXJmYWNlKSk7CisgICAgSU9T
dXJmYWNlUG9vbDo6c2hhcmVkUG9vbCgpLmFkZFN1cmZhY2UoV1RGTW92ZShzdXJmYWNlKSk7CiB9
CiAKIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IElPU3VyZmFjZTo6Y3JlYXRlRnJvbUltYWdl
QnVmZmVyKHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIpCiB7Ci0gICAg
cmV0dXJuIFdURjo6bW92ZShpbWFnZUJ1ZmZlci0+bV9kYXRhLnN1cmZhY2UpOworICAgIHJldHVy
biBXVEZNb3ZlKGltYWdlQnVmZmVyLT5tX2RhdGEuc3VyZmFjZSk7CiB9CiAKIElPU3VyZmFjZTo6
SU9TdXJmYWNlKEludFNpemUgc2l6ZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBGb3JtYXQgZm9y
bWF0KQpAQCAtNDA2LDcgKzQwNiw3IEBAIHZvaWQgSU9TdXJmYWNlOjpjb252ZXJ0VG9Gb3JtYXQo
c3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OklPU3VyZmFjZT4mJiBpblN1cmZhY2UsCiAgICAgfQog
CiAgICAgaWYgKGluU3VyZmFjZS0+Zm9ybWF0KCkgPT0gZm9ybWF0KSB7Ci0gICAgICAgIGNhbGxi
YWNrKFdURjo6bW92ZShpblN1cmZhY2UpKTsKKyAgICAgICAgY2FsbGJhY2soV1RGTW92ZShpblN1
cmZhY2UpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNDE0LDEzICs0MTQsMTMgQEAg
dm9pZCBJT1N1cmZhY2U6OmNvbnZlcnRUb0Zvcm1hdChzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6
SU9TdXJmYWNlPiYmIGluU3VyZmFjZSwKICAgICBJT1N1cmZhY2VSZWYgZGVzdGluYXRpb25JT1N1
cmZhY2VSZWYgPSBkZXN0aW5hdGlvblN1cmZhY2UtPnN1cmZhY2UoKTsKIAogICAgIElPU3VyZmFj
ZUFjY2VsZXJhdG9yQ29tcGxldGlvbiBjb21wbGV0aW9uOwotICAgIGNvbXBsZXRpb24uY29tcGxl
dGlvblJlZkNvbiA9IG5ldyBzdGQ6OmZ1bmN0aW9uPHZvaWQoc3RkOjp1bmlxdWVfcHRyPElPU3Vy
ZmFjZT4pPiAoV1RGOjptb3ZlKGNhbGxiYWNrKSk7CisgICAgY29tcGxldGlvbi5jb21wbGV0aW9u
UmVmQ29uID0gbmV3IHN0ZDo6ZnVuY3Rpb248dm9pZChzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNl
Pik+IChXVEZNb3ZlKGNhbGxiYWNrKSk7CiAgICAgY29tcGxldGlvbi5jb21wbGV0aW9uUmVmQ29u
MiA9IGRlc3RpbmF0aW9uU3VyZmFjZS5yZWxlYXNlKCk7CiAgICAgY29tcGxldGlvbi5jb21wbGV0
aW9uQ2FsbGJhY2sgPSBbXSh2b2lkICpjb21wbGV0aW9uUmVmQ29uLCBJT1JldHVybiwgdm9pZCAq
IGNvbXBsZXRpb25SZWZDb24yKSB7CiAgICAgICAgIGF1dG8qIGNhbGxiYWNrID0gc3RhdGljX2Nh
c3Q8c3RkOjpmdW5jdGlvbjx2b2lkKHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJT1N1cmZhY2U+
KT4qPihjb21wbGV0aW9uUmVmQ29uKTsKICAgICAgICAgYXV0byBkZXN0aW5hdGlvblN1cmZhY2Ug
PSBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPihzdGF0aWNfY2FzdDxJT1N1cmZhY2UqPihjb21w
bGV0aW9uUmVmQ29uMikpOwogICAgICAgICAKLSAgICAgICAgKCpjYWxsYmFjaykoV1RGOjptb3Zl
KGRlc3RpbmF0aW9uU3VyZmFjZSkpOworICAgICAgICAoKmNhbGxiYWNrKShXVEZNb3ZlKGRlc3Rp
bmF0aW9uU3VyZmFjZSkpOwogICAgICAgICBkZWxldGUgY2FsbGJhY2s7CiAgICAgfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0NhaXJvVXRpbGl0
aWVzRWZsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VmbC9DYWlyb1V0
aWxpdGllc0VmbC5jcHAKaW5kZXggNTFhYzY5MGY1ODk2MDgwM2NlNTVmYTRjMGUzYzVkMjIwOGM0
YmIwMi4uMmZlYjE0Mjk2YTNmNWJiZjgwZDVjMmE4YWE5NjY0ZjYxNDdkNTBiYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0NhaXJvVXRpbGl0aWVzRWZs
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvQ2Fpcm9VdGls
aXRpZXNFZmwuY3BwCkBAIC04Miw3ICs4Miw3IEBAIEVmbFVuaXF1ZVB0cjxFdmFzX09iamVjdD4g
ZXZhc09iamVjdEZyb21DYWlyb0ltYWdlU3VyZmFjZShFdmFzKiBjYW52YXMsIGNhaXJvX3N1CiAK
ICAgICBldmFzX29iamVjdF9pbWFnZV9kYXRhX2NvcHlfc2V0KGltYWdlLmdldCgpLCBkYXRhKTsK
IAotICAgIHJldHVybiBXVEY6Om1vdmUoaW1hZ2UpOworICAgIHJldHVybiBXVEZNb3ZlKGltYWdl
KTsKIH0KIAogUGFzc1JlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IGNyZWF0ZVN1cmZhY2VGb3JCYWNr
aW5nU3RvcmUoRWNvcmVfRXZhcyogZWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RFZmwuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNzQ29udGV4dDNERWZsLmNwcAppbmRleCAy
NzA1NjBiMzk0ZTNhMDc0M2NkZTkwN2RhMjQzNGI4ZGMyMDc5YmI2Li5iYTQxNTk3YWExMTAxZGI2
MjkwMjNkMjczYjIwMGU3ODFkMzNhYWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RFZmwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VmbC9HcmFwaGljc0NvbnRleHQzREVmbC5jcHAKQEAg
LTIwMCw3ICsyMDAsNyBAQCBib29sIEdyYXBoaWNzQ29udGV4dDNEOjppc0dMRVMyQ29tcGxpYW50
KCkgY29uc3QKIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6c2V0Q29udGV4dExvc3RDYWxsYmFj
ayhzdGQ6OnVuaXF1ZV9wdHI8Q29udGV4dExvc3RDYWxsYmFjaz4gY2FsbEJhY2spCiB7Ci0gICAg
bV9wcml2YXRlLT5zZXRDb250ZXh0TG9zdENhbGxiYWNrKFdURjo6bW92ZShjYWxsQmFjaykpOwor
ICAgIG1fcHJpdmF0ZS0+c2V0Q29udGV4dExvc3RDYWxsYmFjayhXVEZNb3ZlKGNhbGxCYWNrKSk7
CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnNldEVycm9yTWVzc2FnZUNhbGxiYWNrKHN0
ZDo6dW5pcXVlX3B0cjxFcnJvck1lc3NhZ2VDYWxsYmFjaz4pCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VmbC9HcmFwaGljc0NvbnRleHQz
RFByaXZhdGUuY3BwCmluZGV4IDcyZWMzMmM2NmIxNmU5ZTNhMDM4M2M4NDQ4NzgwYWQ3NjlhYzUx
MDguLjY2MGJiMmMyYjM3NDFhNjMwYmIxOGE5ZWZkZmU5YzQ2NDg1NTFhZDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VmbC9HcmFwaGljc0NvbnRleHQzRFBy
aXZhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VmbC9HcmFw
aGljc0NvbnRleHQzRFByaXZhdGUuY3BwCkBAIC0xMDMsNyArMTAzLDcgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHQzRFByaXZhdGU6OnJlbGVhc2VSZXNvdXJjZXMoKQogCiB2b2lkIEdyYXBoaWNzQ29u
dGV4dDNEUHJpdmF0ZTo6c2V0Q29udGV4dExvc3RDYWxsYmFjayhzdGQ6OnVuaXF1ZV9wdHI8R3Jh
cGhpY3NDb250ZXh0M0Q6OkNvbnRleHRMb3N0Q2FsbGJhY2s+IGNhbGxCYWNrKQogewotICAgIG1f
Y29udGV4dExvc3RDYWxsYmFjayA9IFdURjo6bW92ZShjYWxsQmFjayk7CisgICAgbV9jb250ZXh0
TG9zdENhbGxiYWNrID0gV1RGTW92ZShjYWxsQmFjayk7CiB9CiAKIFBsYXRmb3JtR3JhcGhpY3ND
b250ZXh0M0QgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpwbGF0Zm9ybUdyYXBoaWNzQ29udGV4
dDNEKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2VnbC9HTENvbnRleHRFR0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZWdsL0dMQ29udGV4dEVHTC5jcHAKaW5kZXggYzAyZmQ2M2JmOWM2MmE4NDVjZWYxZDQ1MGZhMTQ5
NDFhMGNhOTkzMy4uNDQ4NjEzMjdjM2UxNjA0YTA5NDAzYzExOTFlZTY1Nzg4YWUwNGYxNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVH
TC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4
dEVHTC5jcHAKQEAgLTExOCw3ICsxMTgsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0RUdM
PiBHTENvbnRleHRFR0w6OmNyZWF0ZVdpbmRvd0NvbnRleHQoRUdMTmF0aXZlV2luZG93VAogICAg
IH0KIAogICAgIGF1dG8gZ2xDb250ZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxHTENvbnRleHRFR0w+
KGNvbnRleHQsIHN1cmZhY2UsIFdpbmRvd1N1cmZhY2UpOwotICAgIGdsQ29udGV4dC0+bV9jb250
ZXh0RGF0YSA9IFdURjo6bW92ZShjb250ZXh0RGF0YSk7CisgICAgZ2xDb250ZXh0LT5tX2NvbnRl
eHREYXRhID0gV1RGTW92ZShjb250ZXh0RGF0YSk7CiAgICAgcmV0dXJuIGdsQ29udGV4dDsKIH0K
IApAQCAtMTgwLDcgKzE4MCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRFR0w+IEdMQ29u
dGV4dEVHTDo6Y3JlYXRlUGl4bWFwQ29udGV4dChFR0xDb250ZXh0IHNoYXJpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgIH0KIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEdMQ29u
dGV4dEVHTD4oY29udGV4dCwgc3VyZmFjZSwgV1RGOjptb3ZlKHBpeG1hcCkpOworICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPEdMQ29udGV4dEVHTD4oY29udGV4dCwgc3VyZmFjZSwgV1RGTW92
ZShwaXhtYXApKTsKIH0KICNlbmRpZiAvLyBQTEFURk9STShYMTEpCiAKQEAgLTIwOSw3ICsyMDks
NyBAQCBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0RUdMPiBHTENvbnRleHRFR0w6OmNyZWF0ZUNv
bnRleHQoRUdMTmF0aXZlV2luZG93VHlwZSB3aQogICAgIGlmICghY29udGV4dCkKICAgICAgICAg
Y29udGV4dCA9IGNyZWF0ZVBidWZmZXJDb250ZXh0KGVnbFNoYXJpbmdDb250ZXh0KTsKIAotICAg
IHJldHVybiBXVEY6Om1vdmUoY29udGV4dCk7CisgICAgcmV0dXJuIFdURk1vdmUoY29udGV4dCk7
CiB9CiAKIEdMQ29udGV4dEVHTDo6R0xDb250ZXh0RUdMKEVHTENvbnRleHQgY29udGV4dCwgRUdM
U3VyZmFjZSBzdXJmYWNlLCBFR0xTdXJmYWNlVHlwZSB0eXBlKQpAQCAtMjI1LDcgKzIyNSw3IEBA
IEdMQ29udGV4dEVHTDo6R0xDb250ZXh0RUdMKEVHTENvbnRleHQgY29udGV4dCwgRUdMU3VyZmFj
ZSBzdXJmYWNlLCBYVW5pcXVlUGl4bWFwCiAgICAgOiBtX2NvbnRleHQoY29udGV4dCkKICAgICAs
IG1fc3VyZmFjZShzdXJmYWNlKQogICAgICwgbV90eXBlKFBpeG1hcFN1cmZhY2UpCi0gICAgLCBt
X3BpeG1hcChXVEY6Om1vdmUocGl4bWFwKSkKKyAgICAsIG1fcGl4bWFwKFdURk1vdmUocGl4bWFw
KSkKIHsKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRVRpbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRVRpbGUuY3BwCmluZGV4IDhmMDI3ZTEzNjkwZTQzZDZmZWUyYmM1ZmQ1ODYz
MzRmMTU4ZDFmMTIuLmEwZTJlMWJmNmFjYzU4MGZmZjE4M2I4NzM1NjA4NTE1NjBjMWE5NzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVGls
ZS5jcHAKQEAgLTcyLDE3ICs3MiwxNyBAQCB2b2lkIEZFVGlsZTo6cGxhdGZvcm1BcHBseVNvZnR3
YXJlKCkKICAgICB0aWxlSW1hZ2VDb250ZXh0LnRyYW5zbGF0ZSgtaW5NYXhFZmZlY3RMb2NhdGlv
bi54KCksIC1pbk1heEVmZmVjdExvY2F0aW9uLnkoKSk7CiAgICAgdGlsZUltYWdlQ29udGV4dC5k
cmF3SW1hZ2VCdWZmZXIoKmluQnVmZmVyLCBpbi0+YWJzb2x1dGVQYWludFJlY3QoKS5sb2NhdGlv
bigpKTsKIAotICAgIGF1dG8gdGlsZUltYWdlQ29weSA9IEltYWdlQnVmZmVyOjpzaW5rSW50b0lt
YWdlKFdURjo6bW92ZSh0aWxlSW1hZ2UpKTsKKyAgICBhdXRvIHRpbGVJbWFnZUNvcHkgPSBJbWFn
ZUJ1ZmZlcjo6c2lua0ludG9JbWFnZShXVEZNb3ZlKHRpbGVJbWFnZSkpOwogICAgIGlmICghdGls
ZUltYWdlQ29weSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBwYXR0ZXJuID0gUGF0dGVy
bjo6Y3JlYXRlKFdURjo6bW92ZSh0aWxlSW1hZ2VDb3B5KSwgdHJ1ZSwgdHJ1ZSk7CisgICAgYXV0
byBwYXR0ZXJuID0gUGF0dGVybjo6Y3JlYXRlKFdURk1vdmUodGlsZUltYWdlQ29weSksIHRydWUs
IHRydWUpOwogCiAgICAgQWZmaW5lVHJhbnNmb3JtIHBhdHRlcm5UcmFuc2Zvcm07CiAgICAgcGF0
dGVyblRyYW5zZm9ybS50cmFuc2xhdGUoaW5NYXhFZmZlY3RMb2NhdGlvbi54KCkgLSBtYXhFZmZl
Y3RMb2NhdGlvbi54KCksIGluTWF4RWZmZWN0TG9jYXRpb24ueSgpIC0gbWF4RWZmZWN0TG9jYXRp
b24ueSgpKTsKICAgICBwYXR0ZXJuLmdldCgpLnNldFBhdHRlcm5TcGFjZVRyYW5zZm9ybShwYXR0
ZXJuVHJhbnNmb3JtKTsKICAgICBHcmFwaGljc0NvbnRleHQmIGZpbHRlckNvbnRleHQgPSByZXN1
bHRJbWFnZS0+Y29udGV4dCgpOwotICAgIGZpbHRlckNvbnRleHQuc2V0RmlsbFBhdHRlcm4oV1RG
Ojptb3ZlKHBhdHRlcm4pKTsKKyAgICBmaWx0ZXJDb250ZXh0LnNldEZpbGxQYXR0ZXJuKFdURk1v
dmUocGF0dGVybikpOwogICAgIGZpbHRlckNvbnRleHQuZmlsbFJlY3QoRmxvYXRSZWN0KEZsb2F0
UG9pbnQoKSwgYWJzb2x1dGVQYWludFJlY3QoKS5zaXplKCkpKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyLmgKaW5kZXggZWZhMDMx
NzU2ZjAyMGFkZThmYTFiNjYyYTIwNzc5ZTM4MGRlY2E1Ny4uMjVhNWRiYjEyNjE4MzQ3NTNkNTQ3
Njg4OTA4NDA1YmZmNzAyMDk4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GaWx0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZpbHRlci5oCkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoKICAgICB7
IH0KICAgICB2aXJ0dWFsIH5GaWx0ZXIoKSB7IH0KIAotICAgIHZvaWQgc2V0U291cmNlSW1hZ2Uo
c3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBzb3VyY2VJbWFnZSkgeyBtX3NvdXJjZUltYWdl
ID0gV1RGOjptb3ZlKHNvdXJjZUltYWdlKTsgfQorICAgIHZvaWQgc2V0U291cmNlSW1hZ2Uoc3Rk
Ojp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBzb3VyY2VJbWFnZSkgeyBtX3NvdXJjZUltYWdlID0g
V1RGTW92ZShzb3VyY2VJbWFnZSk7IH0KICAgICBJbWFnZUJ1ZmZlciogc291cmNlSW1hZ2UoKSB7
IHJldHVybiBtX3NvdXJjZUltYWdlLmdldCgpOyB9CiAKICAgICBGbG9hdFNpemUgZmlsdGVyUmVz
b2x1dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZmlsdGVyUmVzb2x1dGlvbjsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRp
b24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3Bl
cmF0aW9uLmgKaW5kZXggZTJlYTYzOWYxY2RlMDAxZDkwOGFlYTg3NjA0YWY5YmZhODVlZDIzZS4u
MDFhNThjMGYyZjNlZWM5YTQ4NGM2NzZlZmU0ZTNjMGE1YTA0ODJjZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb24uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJh
dGlvbi5oCkBAIC0yNzAsNyArMjcwLDcgQEAgY2xhc3MgV0VCQ09SRV9FWFBPUlQgQmx1ckZpbHRl
ck9wZXJhdGlvbiA6IHB1YmxpYyBGaWx0ZXJPcGVyYXRpb24gewogcHVibGljOgogICAgIHN0YXRp
YyBQYXNzUmVmUHRyPEJsdXJGaWx0ZXJPcGVyYXRpb24+IGNyZWF0ZShMZW5ndGggc3RkRGV2aWF0
aW9uKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBCbHVyRmlsdGVyT3BlcmF0
aW9uKFdURjo6bW92ZShzdGREZXZpYXRpb24pKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgQmx1ckZpbHRlck9wZXJhdGlvbihXVEZNb3ZlKHN0ZERldmlhdGlvbikpKTsKICAgICB9CiAK
ICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBjbG9uZSgpIGNvbnN0IG92
ZXJyaWRlCkBAIC0yOTAsNyArMjkwLDcgQEAgcHJpdmF0ZToKIAogICAgIEJsdXJGaWx0ZXJPcGVy
YXRpb24oTGVuZ3RoIHN0ZERldmlhdGlvbikKICAgICAgICAgOiBGaWx0ZXJPcGVyYXRpb24oQkxV
UikKLSAgICAgICAgLCBtX3N0ZERldmlhdGlvbihXVEY6Om1vdmUoc3RkRGV2aWF0aW9uKSkKKyAg
ICAgICAgLCBtX3N0ZERldmlhdGlvbihXVEZNb3ZlKHN0ZERldmlhdGlvbikpCiAgICAgewogICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ2x4L0dM
Q29udGV4dEdMWC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nbHgvR0xD
b250ZXh0R0xYLmNwcAppbmRleCBhMGEwYzE2NDkwN2MzMWU3ODg5YmUxMTM4MmU0YzNiMjFlYWQ4
NDNhLi43NmM3OGFiZDZkZDcwZjI4MzViZTA3YjQyMmJlMGY4OWQ4MzY0MTBlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nbHgvR0xDb250ZXh0R0xYLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nbHgvR0xDb250ZXh0R0xYLmNw
cApAQCAtNTAsNyArNTAsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0R0xYPiBHTENvbnRl
eHRHTFg6OmNyZWF0ZVdpbmRvd0NvbnRleHQoWElEIHdpbmRvdywgR0xDbwogICAgIGlmICghY29u
dGV4dCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxHTENvbnRleHRHTFg+KFdURjo6bW92ZShjb250ZXh0KSwgd2luZG93KTsKKyAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxHTENvbnRleHRHTFg+KFdURk1vdmUoY29udGV4dCksIHdpbmRv
dyk7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRHTFg+IEdMQ29udGV4dEdMWDo6Y3Jl
YXRlUGJ1ZmZlckNvbnRleHQoR0xYQ29udGV4dCBzaGFyaW5nQ29udGV4dCkKQEAgLTgyLDcgKzgy
LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEdMWD4gR0xDb250ZXh0R0xYOjpjcmVhdGVQ
YnVmZmVyQ29udGV4dChHTFhDb250ZXh0IHNoYXIKICAgICBpZiAoIWNvbnRleHQpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8R0xDb250ZXh0
R0xYPihXVEY6Om1vdmUoY29udGV4dCksIFdURjo6bW92ZShwYnVmZmVyKSk7CisgICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8R0xDb250ZXh0R0xYPihXVEZNb3ZlKGNvbnRleHQpLCBXVEZNb3Zl
KHBidWZmZXIpKTsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEdMWD4gR0xDb250ZXh0
R0xYOjpjcmVhdGVQaXhtYXBDb250ZXh0KEdMWENvbnRleHQgc2hhcmluZ0NvbnRleHQpCkBAIC0x
MTMsNyArMTEzLDcgQEAgc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEdMWD4gR0xDb250ZXh0R0xY
OjpjcmVhdGVQaXhtYXBDb250ZXh0KEdMWENvbnRleHQgc2hhcmkKICAgICBpZiAoIWdseFBpeG1h
cCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxHTENvbnRleHRHTFg+KFdURjo6bW92ZShjb250ZXh0KSwgV1RGOjptb3ZlKHBpeG1hcCksIFdU
Rjo6bW92ZShnbHhQaXhtYXApKTsKKyAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxHTENvbnRl
eHRHTFg+KFdURk1vdmUoY29udGV4dCksIFdURk1vdmUocGl4bWFwKSwgV1RGTW92ZShnbHhQaXht
YXApKTsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEdMWD4gR0xDb250ZXh0R0xYOjpj
cmVhdGVDb250ZXh0KFhJRCB3aW5kb3csIEdMQ29udGV4dCogc2hhcmluZ0NvbnRleHQpCkBAIC0x
MzYsMjUgKzEzNiwyNSBAQCBzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0R0xYPiBHTENvbnRleHRH
TFg6OmNyZWF0ZUNvbnRleHQoWElEIHdpbmRvdywgR0xDb250ZXh0KgogICAgIGlmICghY29udGV4
dCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gV1RGOjptb3ZlKGNvbnRl
eHQpOworICAgIHJldHVybiBXVEZNb3ZlKGNvbnRleHQpOwogfQogCiBHTENvbnRleHRHTFg6OkdM
Q29udGV4dEdMWChYVW5pcXVlR0xYQ29udGV4dCYmIGNvbnRleHQsIFhJRCB3aW5kb3cpCi0gICAg
OiBtX2NvbnRleHQoV1RGOjptb3ZlKGNvbnRleHQpKQorICAgIDogbV9jb250ZXh0KFdURk1vdmUo
Y29udGV4dCkpCiAgICAgLCBtX3dpbmRvdyh3aW5kb3cpCiB7CiB9CiAKIEdMQ29udGV4dEdMWDo6
R0xDb250ZXh0R0xYKFhVbmlxdWVHTFhDb250ZXh0JiYgY29udGV4dCwgWFVuaXF1ZUdMWFBidWZm
ZXImJiBwYnVmZmVyKQotICAgIDogbV9jb250ZXh0KFdURjo6bW92ZShjb250ZXh0KSkKLSAgICAs
IG1fcGJ1ZmZlcihXVEY6Om1vdmUocGJ1ZmZlcikpCisgICAgOiBtX2NvbnRleHQoV1RGTW92ZShj
b250ZXh0KSkKKyAgICAsIG1fcGJ1ZmZlcihXVEZNb3ZlKHBidWZmZXIpKQogewogfQogCiBHTENv
bnRleHRHTFg6OkdMQ29udGV4dEdMWChYVW5pcXVlR0xYQ29udGV4dCYmIGNvbnRleHQsIFhVbmlx
dWVQaXhtYXAmJiBwaXhtYXAsIFhVbmlxdWVHTFhQaXhtYXAmJiBnbHhQaXhtYXApCi0gICAgOiBt
X2NvbnRleHQoV1RGOjptb3ZlKGNvbnRleHQpKQotICAgICwgbV9waXhtYXAoV1RGOjptb3ZlKHBp
eG1hcCkpCi0gICAgLCBtX2dseFBpeG1hcChXVEY6Om1vdmUoZ2x4UGl4bWFwKSkKKyAgICA6IG1f
Y29udGV4dChXVEZNb3ZlKGNvbnRleHQpKQorICAgICwgbV9waXhtYXAoV1RGTW92ZShwaXhtYXAp
KQorICAgICwgbV9nbHhQaXhtYXAoV1RGTW92ZShnbHhQaXhtYXApKQogewogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGV4dHVyZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGV4dHVyZS5jcHAKaW5kZXggNTNl
YzFkMTc5YzJhM2EyNWUyM2E2OWFlMzMyYjM2MWEyZjA3ZjMwYS4uNzdjZjY4N2M2OGYxZWI0NjUz
MjdjNGVhODk2MTBmOWI4NjdhMmM2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L1RleHR1cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9UZXh0dXJlLmNwcApAQCAtNDcsNyArNDcsNyBAQCBUZXh0dXJlOjpUZXh0
dXJlKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPHVu
c2lnbmVkPj4gdAogICAgIDogbV9jb250ZXh0KGNvbnRleHQpCiAgICAgLCBtX2Zvcm1hdChmb3Jt
YXQpCiAgICAgLCBtX3RpbGVzKEludFNpemUobWF4VGV4dHVyZVNpemUsIG1heFRleHR1cmVTaXpl
KSwgSW50U2l6ZSh3aWR0aCwgaGVpZ2h0KSwgdHJ1ZSkKLSAgICAsIG1fdGlsZVRleHR1cmVJZHMo
V1RGOjptb3ZlKHRpbGVUZXh0dXJlSWRzKSkKKyAgICAsIG1fdGlsZVRleHR1cmVJZHMoV1RGTW92
ZSh0aWxlVGV4dHVyZUlkcykpCiB7CiB9CiAKQEAgLTEyMCw3ICsxMjAsNyBAQCBQYXNzUmVmUHRy
PFRleHR1cmU+IFRleHR1cmU6OmNyZWF0ZShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgRm9y
bWF0IGZvcm1hdCwgaQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRp
bGVCb3VuZHNXaXRoQm9yZGVyLmhlaWdodCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDAsIGdsRm9ybWF0LCBnbFR5cGUpOwogICAgIH0KLSAgICByZXR1cm4gYWRv
cHRSZWYobmV3IFRleHR1cmUoY29udGV4dCwgV1RGOjptb3ZlKHRleHR1cmVJZHMpLCBmb3JtYXQs
IHdpZHRoLCBoZWlnaHQsIG1heFRleHR1cmVTaXplKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBUZXh0dXJlKGNvbnRleHQsIFdURk1vdmUodGV4dHVyZUlkcyksIGZvcm1hdCwgd2lkdGgsIGhl
aWdodCwgbWF4VGV4dHVyZVNpemUpKTsKIH0KIAogdGVtcGxhdGUgPGJvb2wgc3dpenpsZT4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcApp
bmRleCBmNWE0MWZlZDMwNTU5NmM3OGU5MTY0YThlNjE4MTI2NTM4ZjA1MzI4Li5mNjRkNWQ1ZWZl
MzJjZWM4MjhlOTVjZDg0MzlhMGM1NDgyMzRiODc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwCkBAIC00OTQsOCArNDk0LDggQEAg
dm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpwdXNoVGV4dHVyZVRvQ29tcG9z
aXRvcigpCiAgICAgICAgIHJldHVybjsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxUZXh0dXJlTWFw
cGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4gbGF5ZXJCdWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFRl
eHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPihmcmFtZUhvbGRlci0+dGV4dHVyZUlEKCks
IGZyYW1lSG9sZGVyLT5zaXplKCksIGZyYW1lSG9sZGVyLT5mbGFncygpKTsKLSAgICBsYXllckJ1
ZmZlci0+c2V0VW5tYW5hZ2VkQnVmZmVyRGF0YUhvbGRlcihXVEY6Om1vdmUoZnJhbWVIb2xkZXIp
KTsKLSAgICBtX3BsYXRmb3JtTGF5ZXJQcm94eS0+cHVzaE5leHRCdWZmZXIoV1RGOjptb3ZlKGxh
eWVyQnVmZmVyKSk7CisgICAgbGF5ZXJCdWZmZXItPnNldFVubWFuYWdlZEJ1ZmZlckRhdGFIb2xk
ZXIoV1RGTW92ZShmcmFtZUhvbGRlcikpOworICAgIG1fcGxhdGZvcm1MYXllclByb3h5LT5wdXNo
TmV4dEJ1ZmZlcihXVEZNb3ZlKGxheWVyQnVmZmVyKSk7CiAjZWxzZQogICAgIEdzdENhcHMqIGNh
cHMgPSBnc3Rfc2FtcGxlX2dldF9jYXBzKG1fc2FtcGxlLmdldCgpKTsKICAgICBpZiAoVU5MSUtF
TFkoIWNhcHMpKQpAQCAtNTE1LDEwICs1MTUsMTAgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXJCYXNlOjpwdXNoVGV4dHVyZVRvQ29tcG9zaXRvcigpCiAKICAgICAgICAgUmVmUHRy
PEJpdG1hcFRleHR1cmU+IHRleHR1cmUgPSBhZG9wdFJlZihuZXcgQml0bWFwVGV4dHVyZUdMKG1f
Y29udGV4dDNEKSk7CiAgICAgICAgIHRleHR1cmUtPnJlc2V0KHNpemUsIEdTVF9WSURFT19JTkZP
X0hBU19BTFBIQSgmdmlkZW9JbmZvKSA/IEJpdG1hcFRleHR1cmU6OlN1cHBvcnRzQWxwaGEgOiBC
aXRtYXBUZXh0dXJlOjpOb0ZsYWcpOwotICAgICAgICBidWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPihXVEY6Om1vdmUodGV4dHVyZSkpOwor
ICAgICAgICBidWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxh
eWVyQnVmZmVyPihXVEZNb3ZlKHRleHR1cmUpKTsKICAgICB9CiAgICAgdXBkYXRlVGV4dHVyZShi
dWZmZXItPnRleHR1cmVHTCgpLCB2aWRlb0luZm8pOwotICAgIG1fcGxhdGZvcm1MYXllclByb3h5
LT5wdXNoTmV4dEJ1ZmZlcihXVEY6Om1vdmUoYnVmZmVyKSk7CisgICAgbV9wbGF0Zm9ybUxheWVy
UHJveHktPnB1c2hOZXh0QnVmZmVyKFdURk1vdmUoYnVmZmVyKSk7CiAjZW5kaWYKIH0KICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L01lZGlhUGxheWVyUmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1Z2luc0NhbGxiYWNrLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJSZXF1ZXN0
SW5zdGFsbE1pc3NpbmdQbHVnaW5zQ2FsbGJhY2suaAppbmRleCBkODY3ZTkxZTU1NTA1YzUxYjBl
MDhkZjIzMmExMWY3ZDJhYzUxYzFmLi45NWVkMmRhNjMzZjEyY2FkNDhlM2ZlMDAyNGMxMWMxNjdk
Njc0NTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvTWVkaWFQbGF5ZXJSZXF1ZXN0SW5zdGFsbE1pc3NpbmdQbHVnaW5zQ2FsbGJhY2suaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5
ZXJSZXF1ZXN0SW5zdGFsbE1pc3NpbmdQbHVnaW5zQ2FsbGJhY2suaApAQCAtMzAsNyArMzAsNyBA
QCBjbGFzcyBNZWRpYVBsYXllclJlcXVlc3RJbnN0YWxsTWlzc2luZ1BsdWdpbnNDYWxsYmFjayA6
IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhUAogcHVibGljOgogICAgIHN0YXRpYyBSZWY8TWVkaWFQ
bGF5ZXJSZXF1ZXN0SW5zdGFsbE1pc3NpbmdQbHVnaW5zQ2FsbGJhY2s+IGNyZWF0ZShzdGQ6OmZ1
bmN0aW9uPHZvaWQgKHVpbnQzMl90KT4mJiBmdW5jdGlvbikKICAgICB7Ci0gICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IE1lZGlhUGxheWVyUmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1Z2luc0Nh
bGxiYWNrKFdURjo6bW92ZShmdW5jdGlvbikpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgTWVkaWFQbGF5ZXJSZXF1ZXN0SW5zdGFsbE1pc3NpbmdQbHVnaW5zQ2FsbGJhY2soV1RGTW92
ZShmdW5jdGlvbikpKTsKICAgICB9CiAKICAgICB2b2lkIGludmFsaWRhdGUoKQpAQCAtNDgsNyAr
NDgsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgTWVkaWFQbGF5ZXJSZXF1ZXN0SW5zdGFs
bE1pc3NpbmdQbHVnaW5zQ2FsbGJhY2soc3RkOjpmdW5jdGlvbjx2b2lkICh1aW50MzJfdCk+JiYg
ZnVuY3Rpb24pCi0gICAgICAgIDogbV9mdW5jdGlvbihXVEY6Om1vdmUoZnVuY3Rpb24pKQorICAg
ICAgICA6IG1fZnVuY3Rpb24oV1RGTW92ZShmdW5jdGlvbikpCiAgICAgewogICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVv
U2lua0dTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvVmlkZW9TaW5rR1N0cmVhbWVyLmNwcAppbmRleCBjYTU5OWRlNDY4YjY2NmQ4MDE4YWZl
MWNjYjIzMGJmZWJhOGI3ZjIwLi4xYTRhMThjYzI3YWYxZTBkMzllMTJkM2FjNDM3ZTgyZWM4M2Jm
ZmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvVmlkZW9TaW5rR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvVmlkZW9TaW5rR1N0cmVhbWVyLmNwcApAQCAtMTI4LDggKzEyOCw4
IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZW5kZXIoKQogICAgIHsKICAgICAgICAgTG9ja0hvbGRl
ciBsb2NrZXIobV9zYW1wbGVNdXRleCk7Ci0gICAgICAgIEdSZWZQdHI8R3N0U2FtcGxlPiBzYW1w
bGUgPSBXVEY6Om1vdmUobV9zYW1wbGUpOwotICAgICAgICBHUmVmUHRyPFdlYktpdFZpZGVvU2lu
az4gc2luayA9IFdURjo6bW92ZShtX3NpbmspOworICAgICAgICBHUmVmUHRyPEdzdFNhbXBsZT4g
c2FtcGxlID0gV1RGTW92ZShtX3NhbXBsZSk7CisgICAgICAgIEdSZWZQdHI8V2ViS2l0VmlkZW9T
aW5rPiBzaW5rID0gV1RGTW92ZShtX3NpbmspOwogICAgICAgICBpZiAoc2FtcGxlICYmICFtX3Vu
bG9ja2VkICYmIExJS0VMWShHU1RfSVNfU0FNUExFKHNhbXBsZS5nZXQoKSkpKQogICAgICAgICAg
ICAgd2Via2l0VmlkZW9TaW5rUmVwYWludFJlcXVlc3RlZChzaW5rLmdldCgpLCBzYW1wbGUuZ2V0
KCkpOwogICAgICAgICBtX2RhdGFDb25kaXRpb24ubm90aWZ5T25lKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRL
aXQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQ
cml2YXRlUVRLaXQubW0KaW5kZXggODZhNTAyYmUxZmJkYjE4MDE3ODU1NzE5OGE1OTdhMDBkNjJk
MjA0Yy4uMDgwYTkxMmRiZjNjYjdmZTc4Zjc4MDE0NzI5YjU5ZDNiZTE4YTk5YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0
ZVFUS2l0Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRp
YVBsYXllclByaXZhdGVRVEtpdC5tbQpAQCAtMTU0Nyw3ICsxNTQ3LDcgQEAgYm9vbCBNZWRpYVBs
YXllclByaXZhdGVRVEtpdDo6Y2FuU2F2ZU1lZGlhRGF0YSgpIGNvbnN0CiAjaWYgRU5BQkxFKFdJ
UkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OnNl
dFdpcmVsZXNzUGxheWJhY2tUYXJnZXQoUmVmPE1lZGlhUGxheWJhY2tUYXJnZXQ+JiYgdGFyZ2V0
KQogewotICAgIG1fcGxheWJhY2tUYXJnZXQgPSBXVEY6Om1vdmUodGFyZ2V0KTsKKyAgICBtX3Bs
YXliYWNrVGFyZ2V0ID0gV1RGTW92ZSh0YXJnZXQpOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZVFUS2l0OjpzZXRTaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldChib29sIHNob3VsZFBsYXlU
b1RhcmdldCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9FeHRlbnNpb25zM0RPcGVuR0xFUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uczNET3BlbkdMRVMuY3BwCmluZGV4IDVmOTQ1NTAxZWQ4
NDI2NTViMjk5Yjk2NjIxZTM2MDg0Y2U2YWZhMTcuLjkxOTljYjg0ZTMzNmViNzViZDdhN2JlNDBm
NmY1NzZjZGJjMWI2M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9FeHRlbnNpb25zM0RPcGVuR0xFUy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnMzRE9wZW5HTEVTLmNwcApAQCAtMTg5
LDcgKzE4OSw3IEBAIGludCBFeHRlbnNpb25zM0RPcGVuR0xFUzo6Z2V0R3JhcGhpY3NSZXNldFN0
YXR1c0FSQigpCiAKIHZvaWQgRXh0ZW5zaW9uczNET3BlbkdMRVM6OnNldEVYVENvbnRleHRMb3N0
Q2FsbGJhY2soc3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNzQ29udGV4dDNEOjpDb250ZXh0TG9zdENh
bGxiYWNrPiBjYWxsYmFjaykKIHsKLSAgICBtX2NvbnRleHRMb3N0Q2FsbGJhY2sgPSBXVEY6Om1v
dmUoY2FsbGJhY2spOworICAgIG1fY29udGV4dExvc3RDYWxsYmFjayA9IFdURk1vdmUoY2FsbGJh
Y2spOwogfQogCiB2b2lkIEV4dGVuc2lvbnMzRE9wZW5HTEVTOjpyZWFkblBpeGVsc0VYVChpbnQg
eCwgaW50IHksIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCwgR0MzRGVudW0gZm9y
bWF0LCBHQzNEZW51bSB0eXBlLCBHQzNEc2l6ZWkgYnVmU2l6ZSwgdm9pZCAqZGF0YSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL0dMVHJhbnNw
b3J0U3VyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNl
cy9HTFRyYW5zcG9ydFN1cmZhY2UuY3BwCmluZGV4IDIzZDViZjgwNDUwOTVlNjA4OTg4NjZmNDZk
OTYxNjI2NjY3MGEwMDIuLmM2NDc5NWNmNTc1NDAxZDQ3ZGJiYjMxYTFmMDRiYmEyODhjZTc1MGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL0dM
VHJhbnNwb3J0U3VyZmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvc3VyZmFjZXMvR0xUcmFuc3BvcnRTdXJmYWNlLmNwcApAQCAtNTMsNyArNTMsNyBAQCBzdGQ6
OnVuaXF1ZV9wdHI8R0xUcmFuc3BvcnRTdXJmYWNlPiBHTFRyYW5zcG9ydFN1cmZhY2U6OmNyZWF0
ZVRyYW5zcG9ydFN1cmZhY2UoYwogI2VuZGlmCiAKICAgICBpZiAoc3VyZmFjZSAmJiBzdXJmYWNl
LT5oYW5kbGUoKSAmJiBzdXJmYWNlLT5kcmF3YWJsZSgpKQotICAgICAgICByZXR1cm4gV1RGOjpt
b3ZlKHN1cmZhY2UpOworICAgICAgICByZXR1cm4gV1RGTW92ZShzdXJmYWNlKTsKIAogICAgIHJl
dHVybiBudWxscHRyOwogfQpAQCAtMjIwLDcgKzIyMCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxHTFRy
YW5zcG9ydFN1cmZhY2VDbGllbnQ+IEdMVHJhbnNwb3J0U3VyZmFjZUNsaWVudDo6Y3JlYXRlVHJh
bnNwCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIHJldHVybiBXVEY6Om1v
dmUoY2xpZW50KTsKKyAgICByZXR1cm4gV1RGTW92ZShjbGllbnQpOwogfQogCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2VnbC9FR0xTdXJm
YWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2VnbC9F
R0xTdXJmYWNlLmNwcAppbmRleCA1MTk2YjdjZDkxZjdiMWU0N2YxMDk5Yzg1YTA4YTlkMWNlMjY2
ZTk3Li43NmJlZDIyODgwZjRhYmY3NWJhYjIyOGQ0YTE3ZDM1ZDQ4MmQ2NDNkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9lZ2wvRUdMU3VyZmFj
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZWds
L0VHTFN1cmZhY2UuY3BwCkBAIC00OSw3ICs0OSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxHTFRyYW5z
cG9ydFN1cmZhY2U+IEVHTFRyYW5zcG9ydFN1cmZhY2U6OmNyZWF0ZVRyYW5zcG9ydFN1cmZhY2Uo
CiAjZW5kaWYKIAogICAgIGlmIChzdXJmYWNlKQotICAgICAgICByZXR1cm4gV1RGOjptb3ZlKHN1
cmZhY2UpOworICAgICAgICByZXR1cm4gV1RGTW92ZShzdXJmYWNlKTsKIAogICAgIHJldHVybiBu
dWxscHRyOwogfQpAQCAtNjcsNyArNjcsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8R0xUcmFuc3BvcnRT
dXJmYWNlQ2xpZW50PiBFR0xUcmFuc3BvcnRTdXJmYWNlOjpjcmVhdGVUcmFuc3BvcnRTdQogI2Vu
ZGlmCiAKICAgICBpZiAoY2xpZW50KQotICAgICAgICByZXR1cm4gV1RGOjptb3ZlKGNsaWVudCk7
CisgICAgICAgIHJldHVybiBXVEZNb3ZlKGNsaWVudCk7CiAKICAgICByZXR1cm4gbnVsbHB0cjsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9C
aXRtYXBUZXh0dXJlUG9vbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvQml0bWFwVGV4dHVyZVBvb2wuY3BwCmluZGV4IGU3MzEyZjc3MjZmNzY4ZjIxYTNiODc1
MmIwNGFhYzA1MjU5YjQwOTguLjU3Yjk3NjJjZWVhY2MyNjM2MDMxMzU5MDc3NzVkODc1NDYxM2Rm
NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9C
aXRtYXBUZXh0dXJlUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL0JpdG1hcFRleHR1cmVQb29sLmNwcApAQCAtMzgsNyArMzgsNyBAQCBzdGF0aWMg
Y29uc3QgZG91YmxlIHNfcmVsZWFzZVVudXNlZFRleHR1cmVzVGltZXJJbnRlcnZhbCA9IDAuNTsK
IAogI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKIEJpdG1hcFRleHR1cmVQb29sOjpCaXRtYXBU
ZXh0dXJlUG9vbChSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+JiYgY29udGV4dDNEKQotICAgIDog
bV9jb250ZXh0M0QoV1RGOjptb3ZlKGNvbnRleHQzRCkpCisgICAgOiBtX2NvbnRleHQzRChXVEZN
b3ZlKGNvbnRleHQzRCkpCiAgICAgLCBtX3JlbGVhc2VVbnVzZWRUZXh0dXJlc1RpbWVyKCp0aGlz
LCAmQml0bWFwVGV4dHVyZVBvb2w6OnJlbGVhc2VVbnVzZWRUZXh0dXJlc1RpbWVyRmlyZWQpCiB7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
Qml0bWFwVGV4dHVyZVBvb2wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9CaXRtYXBUZXh0dXJlUG9vbC5oCmluZGV4IDE4ZWZmZTgyZWQ4ZGIzNzBmMDJjOWJlOTdk
ZTkzNTk5MDg5ZDg2MTIuLmIyNDQyNDRhYjIxNzk0NDgyNTBkY2ZmZWNiMjk0MDJlNzdkNTdjZmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRt
YXBUZXh0dXJlUG9vbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9CaXRtYXBUZXh0dXJlUG9vbC5oCkBAIC01Myw3ICs1Myw3IEBAIHB1YmxpYzoKIHByaXZh
dGU6CiAgICAgc3RydWN0IEVudHJ5IHsKICAgICAgICAgZXhwbGljaXQgRW50cnkoUmVmUHRyPEJp
dG1hcFRleHR1cmU+JiYgdGV4dHVyZSkKLSAgICAgICAgICAgIDogbV90ZXh0dXJlKFdURjo6bW92
ZSh0ZXh0dXJlKSkKKyAgICAgICAgICAgIDogbV90ZXh0dXJlKFdURk1vdmUodGV4dHVyZSkpCiAg
ICAgICAgIHsgfQogCiAgICAgICAgIHZvaWQgbWFya0lzSW5Vc2UoKSB7IG1fbGFzdFVzZWRUaW1l
ID0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXll
ci5jcHAKaW5kZXggNzM4NjQxMmM0NWIzYjMxODcyZmZmYTk1YWVkYjFjMGZkMzg4ZGU0NC4uNzFm
ZDlkMzQwMjk4OThkNDUxMzBlNTAwY2Y4ZjA4NjI3OWZlZGY0ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJMYXllci5jcHAKQEAgLTQ4Niw3ICs0ODYsNyBAQCB2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6
cmVtb3ZlRnJvbVBhcmVudCgpCiAKIHZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpyZW1vdmVBbGxD
aGlsZHJlbigpCiB7Ci0gICAgYXV0byBvbGRDaGlsZHJlbiA9IFdURjo6bW92ZShtX2NoaWxkcmVu
KTsKKyAgICBhdXRvIG9sZENoaWxkcmVuID0gV1RGTW92ZShtX2NoaWxkcmVuKTsKICAgICBmb3Ig
KGF1dG8qIGNoaWxkIDogb2xkQ2hpbGRyZW4pCiAgICAgICAgIGNoaWxkLT5tX3BhcmVudCA9IG51
bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVm
ZmVyLmNwcAppbmRleCA2YmM2ODYyYjcxMDc5MGVhMjkzN2Y3OTAyMjhiMjk2MzUzNTU2YWUyLi4w
NmYxYjg3NmZlNjA4MTQ2ZDYwOWU4ZGU3NDkzZTVlZGE2NWUzODM0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3Jt
TGF5ZXJCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlci5jcHAKQEAgLTI5LDcgKzI5LDcg
QEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZm
ZXI6OlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyKFJlZlB0cjxCaXRtYXBUZXh0dXJl
PiYmIHRleHR1cmUpCi0gICAgOiBtX3RleHR1cmUoV1RGOjptb3ZlKHRleHR1cmUpKQorICAgIDog
bV90ZXh0dXJlKFdURk1vdmUodGV4dHVyZSkpCiAgICAgLCBtX3RleHR1cmVJRCgwKQogICAgICwg
bV9leHRyYUZsYWdzKDApCiAgICAgLCBtX2hhc01hbmFnZWRUZXh0dXJlKHRydWUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBl
clBsYXRmb3JtTGF5ZXJCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlci5oCmluZGV4IDg0Y2U1ZWNj
NTgxMzY4NTdiNTcxOGZmNTIyYjZlMGZkYTEwZmZiMDcuLmFlNmY4ZDk5OWY3N2IxM2IwMzg1MDJi
YzlmYzdkYzlhZTQ4MGU4YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZv
cm1MYXllckJ1ZmZlci5oCkBAIC01OSw3ICs1OSw3IEBAIHB1YmxpYzoKICAgICB9OwogCiAgICAg
Ym9vbCBoYXNNYW5hZ2VkVGV4dHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1faGFzTWFuYWdlZFRleHR1
cmU7IH0KLSAgICB2b2lkIHNldFVubWFuYWdlZEJ1ZmZlckRhdGFIb2xkZXIoc3RkOjp1bmlxdWVf
cHRyPFVubWFuYWdlZEJ1ZmZlckRhdGFIb2xkZXI+IGhvbGRlcikgeyBtX3VubWFuYWdlZEJ1ZmZl
ckRhdGFIb2xkZXIgPSBXVEY6Om1vdmUoaG9sZGVyKTsgfQorICAgIHZvaWQgc2V0VW5tYW5hZ2Vk
QnVmZmVyRGF0YUhvbGRlcihzdGQ6OnVuaXF1ZV9wdHI8VW5tYW5hZ2VkQnVmZmVyRGF0YUhvbGRl
cj4gaG9sZGVyKSB7IG1fdW5tYW5hZ2VkQnVmZmVyRGF0YUhvbGRlciA9IFdURk1vdmUoaG9sZGVy
KTsgfQogCiBwcml2YXRlOgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3Jt
TGF5ZXJQcm94eS5jcHAKaW5kZXggOTUxMTM4ZmYyMDgwZjBmM2NlOThkNjA3ZjliZTU2YTNkNDIw
MjI3My4uOTk5OTA2MDRkNTViM2U0OWU1MmM0YjViZTBmZTNhNzlmZTlhZWE4NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQ
bGF0Zm9ybUxheWVyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5LmNwcApAQCAtODMsNyAr
ODMsNyBAQCBib29sIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk6OmlzQWN0aXZlKCkK
IHZvaWQgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eTo6cHVzaE5leHRCdWZmZXIoc3Rk
Ojp1bmlxdWVfcHRyPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPiBuZXdCdWZmZXIp
CiB7CiAgICAgQVNTRVJUKG1fbG9jay5pc0hlbGQoKSk7Ci0gICAgbV9wZW5kaW5nQnVmZmVyID0g
V1RGOjptb3ZlKG5ld0J1ZmZlcik7CisgICAgbV9wZW5kaW5nQnVmZmVyID0gV1RGTW92ZShuZXdC
dWZmZXIpOwogCiAgICAgaWYgKG1fY29tcG9zaXRvcikKICAgICAgICAgbV9jb21wb3NpdG9yLT5v
bk5ld0J1ZmZlckF2YWlsYWJsZSgpOwpAQCAtOTQsMTcgKzk0LDE3IEBAIHN0ZDo6dW5pcXVlX3B0
cjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcj4gVGV4dHVyZU1hcHBlclBsYXRmb3Jt
TGF5ZXJQcm94CiAgICAgQVNTRVJUKG1fbG9jay5pc0hlbGQoKSk7CiAgICAgc3RkOjp1bmlxdWVf
cHRyPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyPiBhdmFpbGFibGVCdWZmZXI7CiAK
LSAgICBhdXRvIGJ1ZmZlcnMgPSBXVEY6Om1vdmUobV91c2VkQnVmZmVycyk7CisgICAgYXV0byBi
dWZmZXJzID0gV1RGTW92ZShtX3VzZWRCdWZmZXJzKTsKICAgICBmb3IgKGF1dG8mIGJ1ZmZlciA6
IGJ1ZmZlcnMpIHsKICAgICAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgICAgICBjb250aW51ZTsK
IAogICAgICAgICBpZiAoIWF2YWlsYWJsZUJ1ZmZlciAmJiBidWZmZXItPmNhblJldXNlV2l0aG91
dFJlc2V0KHNpemUsIGludGVybmFsRm9ybWF0KSkgewotICAgICAgICAgICAgYXZhaWxhYmxlQnVm
ZmVyID0gV1RGOjptb3ZlKGJ1ZmZlcik7CisgICAgICAgICAgICBhdmFpbGFibGVCdWZmZXIgPSBX
VEZNb3ZlKGJ1ZmZlcik7CiAgICAgICAgICAgICBhdmFpbGFibGVCdWZmZXItPm1hcmtVc2VkKCk7
CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQotICAgICAgICBtX3VzZWRCdWZmZXJz
LmFwcGVuZChXVEY6Om1vdmUoYnVmZmVyKSk7CisgICAgICAgIG1fdXNlZEJ1ZmZlcnMuYXBwZW5k
KFdURk1vdmUoYnVmZmVyKSk7CiAgICAgfQogCiAgICAgaWYgKCFtX3VzZWRCdWZmZXJzLmlzRW1w
dHkoKSkKQEAgLTEyNCwxMiArMTI0LDEyIEBAIHZvaWQgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5
ZXJQcm94eTo6cmVsZWFzZVVudXNlZEJ1ZmZlcnNUaW1lckZpcmVkKCkKICAgICBpZiAobV91c2Vk
QnVmZmVycy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gYnVmZmVycyA9
IFdURjo6bW92ZShtX3VzZWRCdWZmZXJzKTsKKyAgICBhdXRvIGJ1ZmZlcnMgPSBXVEZNb3ZlKG1f
dXNlZEJ1ZmZlcnMpOwogICAgIGRvdWJsZSBtaW5Vc2VkVGltZSA9IG1vbm90b25pY2FsbHlJbmNy
ZWFzaW5nVGltZSgpIC0gc19yZWxlYXNlVW51c2VkU2Vjb25kc1RvbGVyYW5jZTsKIAogICAgIGZv
ciAoYXV0byYgYnVmZmVyIDogYnVmZmVycykgewogICAgICAgICBpZiAoYnVmZmVyICYmIGJ1ZmZl
ci0+bGFzdFVzZWRUaW1lKCkgPj0gbWluVXNlZFRpbWUpCi0gICAgICAgICAgICBtX3VzZWRCdWZm
ZXJzLmFwcGVuZChXVEY6Om1vdmUoYnVmZmVyKSk7CisgICAgICAgICAgICBtX3VzZWRCdWZmZXJz
LmFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOwogICAgIH0KIH0KIApAQCAtMTQzLDE0ICsxNDMsMTQg
QEAgdm9pZCBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5Ojpzd2FwQnVmZmVyKCkKICAg
ICAgICAgaWYgKCFtX3RhcmdldExheWVyIHx8ICFtX3BlbmRpbmdCdWZmZXIpCiAgICAgICAgICAg
ICByZXR1cm47CiAKLSAgICAgICAgcHJldkJ1ZmZlciA9IFdURjo6bW92ZShtX2N1cnJlbnRCdWZm
ZXIpOworICAgICAgICBwcmV2QnVmZmVyID0gV1RGTW92ZShtX2N1cnJlbnRCdWZmZXIpOwogCi0g
ICAgICAgIG1fY3VycmVudEJ1ZmZlciA9IFdURjo6bW92ZShtX3BlbmRpbmdCdWZmZXIpOworICAg
ICAgICBtX2N1cnJlbnRCdWZmZXIgPSBXVEZNb3ZlKG1fcGVuZGluZ0J1ZmZlcik7CiAgICAgICAg
IG1fdGFyZ2V0TGF5ZXItPnNldENvbnRlbnRzTGF5ZXIobV9jdXJyZW50QnVmZmVyLmdldCgpKTsK
ICAgICB9CiAKICAgICBpZiAocHJldkJ1ZmZlciAmJiBwcmV2QnVmZmVyLT5oYXNNYW5hZ2VkVGV4
dHVyZSgpKQotICAgICAgICBtX3VzZWRCdWZmZXJzLmFwcGVuZChXVEY6Om1vdmUocHJldkJ1ZmZl
cikpOworICAgICAgICBtX3VzZWRCdWZmZXJzLmFwcGVuZChXVEZNb3ZlKHByZXZCdWZmZXIpKTsK
IH0KIAogYm9vbCBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5OjpzY2hlZHVsZVVwZGF0
ZU9uQ29tcG9zaXRvclRocmVhZChzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4mJiB1cGRhdGVGdW5jdGlv
bikKQEAgLTE1OSw3ICsxNTksNyBAQCBib29sIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJv
eHk6OnNjaGVkdWxlVXBkYXRlT25Db21wb3NpdG9yVGhyZWFkKHN0ZDo6ZnVuYwogICAgIGlmICgh
bV9jb21wb3NpdG9yVGhyZWFkVXBkYXRlVGltZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgIG1fY29tcG9zaXRvclRocmVhZFVwZGF0ZUZ1bmN0aW9uID0gV1RGOjptb3ZlKHVwZGF0ZUZ1
bmN0aW9uKTsKKyAgICBtX2NvbXBvc2l0b3JUaHJlYWRVcGRhdGVGdW5jdGlvbiA9IFdURk1vdmUo
dXBkYXRlRnVuY3Rpb24pOwogICAgIG1fY29tcG9zaXRvclRocmVhZFVwZGF0ZVRpbWVyLT5zdGFy
dE9uZVNob3QoMCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0xNzEsNyArMTcxLDcgQEAgdm9p
ZCBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5Ojpjb21wb3NpdG9yVGhyZWFkVXBkYXRl
VGltZXJGaXJlZCgpCiAgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9jayk7CiAgICAgICAg
IGlmICghbV9jb21wb3NpdG9yVGhyZWFkVXBkYXRlRnVuY3Rpb24pCiAgICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIHVwZGF0ZUZ1bmN0aW9uID0gV1RGOjptb3ZlKG1fY29tcG9zaXRvclRocmVh
ZFVwZGF0ZUZ1bmN0aW9uKTsKKyAgICAgICAgdXBkYXRlRnVuY3Rpb24gPSBXVEZNb3ZlKG1fY29t
cG9zaXRvclRocmVhZFVwZGF0ZUZ1bmN0aW9uKTsKICAgICB9CiAKICAgICB1cGRhdGVGdW5jdGlv
bigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L2Nvb3JkaW5hdGVkL0NvbXBvc2l0aW5nQ29vcmRpbmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0NvbXBvc2l0aW5nQ29vcmRpbmF0
b3IuY3BwCmluZGV4IDBmYTcwYTA0MGE5YjI5ZjkxMmQ4MzAwN2ZiMGE5NDQ5Yjg2NDdmNWIuLmM1
M2JjMDY4NzQwYjk1NWFmMjk3ZDQxMGQwZTVjYWFlOTYyZjkxY2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db21wb3NpdGlu
Z0Nvb3JkaW5hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvY29vcmRpbmF0ZWQvQ29tcG9zaXRpbmdDb29yZGluYXRvci5jcHAKQEAgLTQwMyw3ICs0
MDMsNyBAQCB2b2lkIENvbXBvc2l0aW5nQ29vcmRpbmF0b3I6OnJlbGVhc2VJbmFjdGl2ZUF0bGFz
ZXNUaW1lckZpcmVkKCkKICAgICAgICAgYm9vbCB1c2FibGVGb3JSb290Q29udGVudHNMYXllciA9
ICFhdGxhcy0+c3VwcG9ydHNBbHBoYSgpOwogICAgICAgICBpZiAoYXRsYXMtPmlzSW5hY3RpdmUo
KSkgewogICAgICAgICAgICAgaWYgKCFmb3VuZEFjdGl2ZUF0bGFzRm9yUm9vdENvbnRlbnRzTGF5
ZXIgJiYgIWF0bGFzVG9LZWVwQW55d2F5ICYmIHVzYWJsZUZvclJvb3RDb250ZW50c0xheWVyKQot
ICAgICAgICAgICAgICAgIGF0bGFzVG9LZWVwQW55d2F5ID0gV1RGOjptb3ZlKG1fdXBkYXRlQXRs
YXNlc1tpXSk7CisgICAgICAgICAgICAgICAgYXRsYXNUb0tlZXBBbnl3YXkgPSBXVEZNb3ZlKG1f
dXBkYXRlQXRsYXNlc1tpXSk7CiAgICAgICAgICAgICBtX3VwZGF0ZUF0bGFzZXMucmVtb3ZlKGkp
OwogICAgICAgICB9IGVsc2UgaWYgKHVzYWJsZUZvclJvb3RDb250ZW50c0xheWVyKQogICAgICAg
ICAgICAgZm91bmRBY3RpdmVBdGxhc0ZvclJvb3RDb250ZW50c0xheWVyID0gdHJ1ZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRl
ZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAK
aW5kZXggYzgxNGI5MWMzNmJjNjJmOWRkZjc2MTg0YjA3YjdmNjVlYWI2OTQ4NS4uY2I5NGE5NjUy
MmExZTRlNzBjZjgxY2MxNzQ3NjU1NjQ3MjQ1NzBiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhp
Y3NMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKQEAgLTg4Nyw3ICs4ODcs
NyBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6YWRqdXN0Q29udGVudHNTY2FsZSgp
CiAgICAgLy8gd2UgZG8gbm90IHdhbnQgdG8gZHJvcCB0aGUgcHJldmlvdXMgb25lIGFzIHRoYXQg
bWlnaHQgcmVzdWx0IGluCiAgICAgLy8gYnJpZWZseSBzZWVpbmcgZmxpY2tlcmluZyBhcyB0aGUg
b2xkIHRpbGVzIG1heSBiZSBkcm9wcGVkIGJlZm9yZQogICAgIC8vIHNvbWV0aGluZyByZXBsYWNl
cyB0aGVtLgotICAgIG1fcHJldmlvdXNCYWNraW5nU3RvcmUgPSBXVEY6Om1vdmUobV9tYWluQmFj
a2luZ1N0b3JlKTsKKyAgICBtX3ByZXZpb3VzQmFja2luZ1N0b3JlID0gV1RGTW92ZShtX21haW5C
YWNraW5nU3RvcmUpOwogCiAgICAgLy8gTm8gcmVhc29uIHRvIHNhdmUgdGhlIHByZXZpb3VzIGJh
Y2tpbmcgc3RvcmUgZm9yIG5vbi12aXNpYmxlIGFyZWFzLgogICAgIG1fcHJldmlvdXNCYWNraW5n
U3RvcmUtPnJlbW92ZUFsbE5vblZpc2libGVUaWxlcyh0cmFuc2Zvcm1lZFZpc2libGVSZWN0KCks
IEludFJlY3QoMCwgMCwgc2l6ZSgpLndpZHRoKCksIHNpemUoKS5oZWlnaHQoKSkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2F5bGFuZC9QbGF0Zm9ybURp
c3BsYXlXYXlsYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dheWxh
bmQvUGxhdGZvcm1EaXNwbGF5V2F5bGFuZC5jcHAKaW5kZXggYzIxZDcwNDVmMzA0ZDg1Y2JkOGQ1
YTA4MDRjMGExYjE1OTUzYWIyYi4uZDMzMDVlMTZhMjQzMzdmNTQ4NjI1MzBkMTJhM2RmN2JmM2Jl
MDdhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2F5bGFu
ZC9QbGF0Zm9ybURpc3BsYXlXYXlsYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93YXlsYW5kL1BsYXRmb3JtRGlzcGxheVdheWxhbmQuY3BwCkBAIC0xNDgsNyAr
MTQ4LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEVHTD4gUGxhdGZvcm1EaXNwbGF5V2F5
bGFuZDo6Y3JlYXRlU2hhcmluZ0dMQ29udGV4dCgpCiAgICAgY29udGV4dERhdGEtPm5hdGl2ZVdp
bmRvdyA9IHdsX2VnbF93aW5kb3dfY3JlYXRlKGNvbnRleHREYXRhLT5zdXJmYWNlLCAxLCAxKTsK
IAogICAgIGF1dG8gbmF0aXZlV2luZG93ID0gY29udGV4dERhdGEtPm5hdGl2ZVdpbmRvdzsKLSAg
ICByZXR1cm4gR0xDb250ZXh0RUdMOjpjcmVhdGVXaW5kb3dDb250ZXh0KG5hdGl2ZVdpbmRvdywg
bnVsbHB0ciwgV1RGOjptb3ZlKGNvbnRleHREYXRhKSk7CisgICAgcmV0dXJuIEdMQ29udGV4dEVH
TDo6Y3JlYXRlV2luZG93Q29udGV4dChuYXRpdmVXaW5kb3csIG51bGxwdHIsIFdURk1vdmUoY29u
dGV4dERhdGEpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDYWNoZVdpbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENhY2hlV2luLmNwcAppbmRleCA2
NzNlNWM4ZTRiYjA5MWNiMjU5ZDU0MjAwZGQ2ZjljNzk1ZjBiYWNiLi44ODEwZDMxOGQyNjllZWVm
MGQxMzIyY2Y2MDE5MTJhOWM4YmI3YWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vRm9udENhY2hlV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENhY2hlV2luLmNwcApAQCAtNTkwLDcgKzU5MCw3IEBA
IHN0ZDo6dW5pcXVlX3B0cjxGb250UGxhdGZvcm1EYXRhPiBGb250Q2FjaGU6OmNyZWF0ZUZvbnRQ
bGF0Zm9ybURhdGEoY29uc3QgRm9udERlCiAgICAgYm9vbCBzeW50aGVzaXplQm9sZCA9IGlzR0RJ
Rm9udFdlaWdodEJvbGQod2VpZ2h0KSAmJiAhaXNHRElGb250V2VpZ2h0Qm9sZChsb2dGb250Lmxm
V2VpZ2h0KTsKICAgICBib29sIHN5bnRoZXNpemVJdGFsaWMgPSBmb250RGVzY3JpcHRpb24uaXRh
bGljKCkgJiYgIWxvZ0ZvbnQubGZJdGFsaWM7CiAKLSAgICBhdXRvIHJlc3VsdCA9IHN0ZDo6bWFr
ZV91bmlxdWU8Rm9udFBsYXRmb3JtRGF0YT4oV1RGOjptb3ZlKGhmb250KSwgZm9udERlc2NyaXB0
aW9uLmNvbXB1dGVkUGl4ZWxTaXplKCksIHN5bnRoZXNpemVCb2xkLCBzeW50aGVzaXplSXRhbGlj
LCB1c2VHREkpOworICAgIGF1dG8gcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxGb250UGxhdGZv
cm1EYXRhPihXVEZNb3ZlKGhmb250KSwgZm9udERlc2NyaXB0aW9uLmNvbXB1dGVkUGl4ZWxTaXpl
KCksIHN5bnRoZXNpemVCb2xkLCBzeW50aGVzaXplSXRhbGljLCB1c2VHREkpOwogCiAjaWYgVVNF
KENHKQogICAgIGJvb2wgZm9udENyZWF0aW9uRmFpbGVkID0gIXJlc3VsdC0+Y2dGb250KCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKaW5kZXggMDY1OGE4NTBiMjA4MTU0ZjE2NTk4NzMw
OGYzZGU4MjA2ZTNhYTZkYy4uOTczMjA3MzIxMWQ0OTYyZDc0ZWM5MjdkYzBkMGE5YTFjZDE0NGFi
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRD
dXN0b21QbGF0Zm9ybURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcApAQCAtNjksNyArNjksNyBAQCBGb250
UGxhdGZvcm1EYXRhIEZvbnRDdXN0b21QbGF0Zm9ybURhdGE6OmZvbnRQbGF0Zm9ybURhdGEoY29u
c3QgRm9udERlc2NyaXB0aW9uJgogICAgIGF1dG8gaGZvbnQgPSBhZG9wdEdESU9iamVjdCg6OkNy
ZWF0ZUZvbnRJbmRpcmVjdCgmbG9nRm9udCkpOwogCiAgICAgUmV0YWluUHRyPENHRm9udFJlZj4g
Y2dGb250ID0gYWRvcHRDRihDR0ZvbnRDcmVhdGVXaXRoUGxhdGZvcm1Gb250KCZsb2dGb250KSk7
Ci0gICAgcmV0dXJuIEZvbnRQbGF0Zm9ybURhdGEoV1RGOjptb3ZlKGhmb250KSwgY2dGb250Lmdl
dCgpLCBzaXplLCBib2xkLCBpdGFsaWMsIHJlbmRlcmluZ01vZGUgPT0gRm9udFJlbmRlcmluZ01v
ZGU6OkFsdGVybmF0ZSk7CisgICAgcmV0dXJuIEZvbnRQbGF0Zm9ybURhdGEoV1RGTW92ZShoZm9u
dCksIGNnRm9udC5nZXQoKSwgc2l6ZSwgYm9sZCwgaXRhbGljLCByZW5kZXJpbmdNb2RlID09IEZv
bnRSZW5kZXJpbmdNb2RlOjpBbHRlcm5hdGUpOwogfQogCiAvLyBDcmVhdGVzIGEgdW5pcXVlIGFu
ZCB1bnByZWRpY3RhYmxlIGZvbnQgbmFtZSwgaW4gb3JkZXIgdG8gYXZvaWQgY29sbGlzaW9ucyBh
bmQgdG8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9G
b250Q3VzdG9tUGxhdGZvcm1EYXRhQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFDYWlyby5jcHAKaW5kZXggZDY1ZWE2
OTI3ZTZhNTc2MDY1YzJlODBiMWM0M2M0YTcwYjY0YTIxNC4uODA5NzAwZDBiYTNlNDc5ZGQ0ZmMy
ODY1NjEwNTU0OWMwMzFkYzg4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFDYWlyby5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFDYWly
by5jcHAKQEAgLTY3LDcgKzY3LDcgQEAgRm9udFBsYXRmb3JtRGF0YSBGb250Q3VzdG9tUGxhdGZv
cm1EYXRhOjpmb250UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYKIAogICAgIGNh
aXJvX2ZvbnRfZmFjZV90KiBmb250RmFjZSA9IGNhaXJvX3dpbjMyX2ZvbnRfZmFjZV9jcmVhdGVf
Zm9yX2hmb250KGhmb250LmdldCgpKTsKIAotICAgIEZvbnRQbGF0Zm9ybURhdGEgZm9udFBsYXRm
b3JtRGF0YShXVEY6Om1vdmUoaGZvbnQpLCBmb250RmFjZSwgc2l6ZSwgYm9sZCwgaXRhbGljKTsK
KyAgICBGb250UGxhdGZvcm1EYXRhIGZvbnRQbGF0Zm9ybURhdGEoV1RGTW92ZShoZm9udCksIGZv
bnRGYWNlLCBzaXplLCBib2xkLCBpdGFsaWMpOwogCiAgICAgY2Fpcm9fZm9udF9mYWNlX2Rlc3Ry
b3koZm9udEZhY2UpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vRm9udFBsYXRmb3JtRGF0YUNHV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhQ0dXaW4uY3BwCmluZGV4IGJlNGFhMmE4
NWZjMjY3MTBjZDZlOWE3NjJmZWZjY2RjYWY1ZTA2MGQuLjk3NzJjOWNlZDgyMDYwMGEzYWE1NmRl
ZDRlYjJjMWUzOGJhZGE4ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhQ0dXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhQ0dXaW4uY3BwCkBAIC0xMjEs
NyArMTIxLDcgQEAgRm9udFBsYXRmb3JtRGF0YTo6Rm9udFBsYXRmb3JtRGF0YShHRElPYmplY3Q8
SEZPTlQ+IGhmb250LCBDR0ZvbnRSZWYgZm9udCwgZmxvYXQKICAgICAsIG1fb3JpZW50YXRpb24o
SG9yaXpvbnRhbCkKICAgICAsIG1fc2l6ZShzaXplKQogICAgICwgbV93aWR0aFZhcmlhbnQoUmVn
dWxhcldpZHRoKQotICAgICwgbV9mb250KFNoYXJlZEdESU9iamVjdDxIRk9OVD46OmNyZWF0ZShX
VEY6Om1vdmUoaGZvbnQpKSkKKyAgICAsIG1fZm9udChTaGFyZWRHRElPYmplY3Q8SEZPTlQ+Ojpj
cmVhdGUoV1RGTW92ZShoZm9udCkpKQogICAgICwgbV9jZ0ZvbnQoZm9udCkKICAgICAsIG1faXND
b2xvckJpdG1hcEZvbnQoZmFsc2UpCiAgICAgLCBtX3VzZUdESSh1c2VHREkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YUNh
aXJvV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxh
dGZvcm1EYXRhQ2Fpcm9XaW4uY3BwCmluZGV4IGVlOTRjNTc2ZWNlNjExYTlmNGRkZTFhYjNiN2Uz
MWMwNjY0ZjVmNmYuLjg5ZmMyNmY4MDdlZDdlNjllYTIyNWMwMTkwYTdjNzY3YmQ2NzI2NmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZv
cm1EYXRhQ2Fpcm9XaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9Gb250UGxhdGZvcm1EYXRhQ2Fpcm9XaW4uY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIHZvaWQg
Rm9udFBsYXRmb3JtRGF0YTo6cGxhdGZvcm1EYXRhSW5pdChIRk9OVCBmb250LCBmbG9hdCBzaXpl
LCBIREMgaGRjLCBXQ0hBUioKIH0KIAogRm9udFBsYXRmb3JtRGF0YTo6Rm9udFBsYXRmb3JtRGF0
YShHRElPYmplY3Q8SEZPTlQ+IGZvbnQsIGNhaXJvX2ZvbnRfZmFjZV90KiBmb250RmFjZSwgZmxv
YXQgc2l6ZSwgYm9vbCBib2xkLCBib29sIG9ibGlxdWUpCi0gICAgOiBtX2ZvbnQoU2hhcmVkR0RJ
T2JqZWN0PEhGT05UPjo6Y3JlYXRlKFdURjo6bW92ZShmb250KSkpCisgICAgOiBtX2ZvbnQoU2hh
cmVkR0RJT2JqZWN0PEhGT05UPjo6Y3JlYXRlKFdURk1vdmUoZm9udCkpKQogICAgICwgbV9zaXpl
KHNpemUpCiAgICAgLCBtX29yaWVudGF0aW9uKEhvcml6b250YWwpCiAgICAgLCBtX3dpZHRoVmFy
aWFudChSZWd1bGFyV2lkdGgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YVdpbi5jcHAKaW5kZXggOGE2YjU5NjFj
MjcxMDllMDRhMTcxN2ZhYjExY2E4MTlkZmNjZGU5MC4uNDg4ZmM5NjBhZjRkZjQ2NGViY2RkZjU0
YTgwZDg2Y2E3NWFhZDZlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ZvbnRQbGF0Zm9ybURhdGFXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhV2luLmNwcApAQCAtMzgsNyArMzgs
NyBAQCB1c2luZyBzdGQ6Om1pbjsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogRm9udFBsYXRmb3Jt
RGF0YTo6Rm9udFBsYXRmb3JtRGF0YShHRElPYmplY3Q8SEZPTlQ+IGZvbnQsIGZsb2F0IHNpemUs
IGJvb2wgYm9sZCwgYm9vbCBvYmxpcXVlLCBib29sIHVzZUdESSkKLSAgICA6IG1fZm9udChTaGFy
ZWRHRElPYmplY3Q8SEZPTlQ+OjpjcmVhdGUoV1RGOjptb3ZlKGZvbnQpKSkKKyAgICA6IG1fZm9u
dChTaGFyZWRHRElPYmplY3Q8SEZPTlQ+OjpjcmVhdGUoV1RGTW92ZShmb250KSkpCiAgICAgLCBt
X3NpemUoc2l6ZSkKICAgICAsIG1fb3JpZW50YXRpb24oSG9yaXpvbnRhbCkKICAgICAsIG1fd2lk
dGhWYXJpYW50KFJlZ3VsYXJXaWR0aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9TaGFyZWRHRElPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9TaGFyZWRHRElPYmplY3QuaAppbmRleCAyYWU0OGE3YmFjYjlkNTU0
NjZkMzVlODNjMDU2OWY1MTk4ODYxMjc0Li44OWU0MjE5M2RlZjIxYjg4OGUxYTIwZTJhMWEyNzdi
OWI3ZDRjN2VmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vU2hhcmVkR0RJT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL1NoYXJlZEdESU9iamVjdC5oCkBAIC0zNiw3ICszNiw3IEBAIHRlbXBsYXRlIDx0eXBl
bmFtZSBUPiBjbGFzcyBTaGFyZWRHRElPYmplY3QgOiBwdWJsaWMgUmVmQ291bnRlZDxTaGFyZWRH
RElPYmplY3Q8CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U2hhcmVkR0RJT2JqZWN0
PiBjcmVhdGUoR0RJT2JqZWN0PFQ+IG9iamVjdCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9w
dFJlZihuZXcgU2hhcmVkR0RJT2JqZWN0PFQ+KFdURjo6bW92ZShvYmplY3QpKSk7CisgICAgICAg
IHJldHVybiBhZG9wdFJlZihuZXcgU2hhcmVkR0RJT2JqZWN0PFQ+KFdURk1vdmUob2JqZWN0KSkp
OwogICAgIH0KIAogICAgIFQgZ2V0KCkgY29uc3QKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgog
CiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFNoYXJlZEdESU9iamVjdChHRElPYmplY3Q8VD4gb2Jq
ZWN0KQotICAgICAgICA6IG1fb2JqZWN0KFdURjo6bW92ZShvYmplY3QpKQorICAgICAgICA6IG1f
b2JqZWN0KFdURk1vdmUob2JqZWN0KSkKICAgICB7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vU2ltcGxlRm9udERhdGFXaW4uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1NpbXBsZUZvbnREYXRhV2luLmNw
cAppbmRleCAwMDU0NGI3NGZlZTE4N2ZlNzRlMTFhODhlOGNiOGI0ZDI4YTk3YzFhLi5mNzZiMGY2
YjY1OTQ2OGI4YmE0MzJkZGU1NmJlMGQzNDg5NWYwZDQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vU2ltcGxlRm9udERhdGFXaW4uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9TaW1wbGVGb250RGF0YVdpbi5jcHAK
QEAgLTE0NSw3ICsxNDUsNyBAQCBSZWZQdHI8Rm9udD4gRm9udDo6cGxhdGZvcm1DcmVhdGVTY2Fs
ZWRGb250KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0aQogICAgIEdldE9iamVj
dChtX3BsYXRmb3JtRGF0YS5oZm9udCgpLCBzaXplb2YoTE9HRk9OVCksICZ3aW5mb250KTsKICAg
ICB3aW5mb250LmxmSGVpZ2h0ID0gLWxyb3VuZGYoc2NhbGVkU2l6ZSAqIChtX3BsYXRmb3JtRGF0
YS51c2VHREkoKSA/IDEgOiAzMikpOwogICAgIGF1dG8gaGZvbnQgPSBhZG9wdEdESU9iamVjdCg6
OkNyZWF0ZUZvbnRJbmRpcmVjdCgmd2luZm9udCkpOwotICAgIHJldHVybiBGb250OjpjcmVhdGUo
Rm9udFBsYXRmb3JtRGF0YShXVEY6Om1vdmUoaGZvbnQpLCBzY2FsZWRTaXplLCBtX3BsYXRmb3Jt
RGF0YS5zeW50aGV0aWNCb2xkKCksIG1fcGxhdGZvcm1EYXRhLnN5bnRoZXRpY09ibGlxdWUoKSwg
bV9wbGF0Zm9ybURhdGEudXNlR0RJKCkpLCBpc0N1c3RvbUZvbnQoKSwgZmFsc2UpOworICAgIHJl
dHVybiBGb250OjpjcmVhdGUoRm9udFBsYXRmb3JtRGF0YShXVEZNb3ZlKGhmb250KSwgc2NhbGVk
U2l6ZSwgbV9wbGF0Zm9ybURhdGEuc3ludGhldGljQm9sZCgpLCBtX3BsYXRmb3JtRGF0YS5zeW50
aGV0aWNPYmxpcXVlKCksIG1fcGxhdGZvcm1EYXRhLnVzZUdESSgpKSwgaXNDdXN0b21Gb250KCks
IGZhbHNlKTsKIH0KIAogdm9pZCBGb250OjpkZXRlcm1pbmVQaXRjaCgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZL
aXQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlQVZLaXQubW0KaW5kZXggZDI0OTY1MjRiOTQ5YWFhY2RlNDU2OGM4YmVlZTJhNTI0NWJi
MTE5MS4uNGIzYjc3OTNiNWQ5MTk2ZTJhMmJjNDAwZDlmMzZjYjAwZDgwNzdkMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZUFWS2l0Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxz
Y3JlZW5JbnRlcmZhY2VBVktpdC5tbQpAQCAtMTM1OCw3ICsxMzU4LDcgQEAgdm9pZCBXZWJWaWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6cHJlcGFyZWRUb1JldHVyblRvSW5saW5lKGJvb2wg
dmlzaWJsZSwgY28KICAgICAgICAgCiAgICAgICAgIFttX3BsYXllclZpZXdDb250cm9sbGVyIHZp
ZXddLmZyYW1lID0gW21fcGFyZW50VmlldyBjb252ZXJ0UmVjdDppbmxpbmVSZWN0IHRvVmlldzpb
bV9wbGF5ZXJWaWV3Q29udHJvbGxlciB2aWV3XS5zdXBlcnZpZXddOwogCi0gICAgICAgIHN0ZDo6
ZnVuY3Rpb248dm9pZChib29sKT4gY2FsbGJhY2sgPSBXVEY6Om1vdmUobV9wcmVwYXJlVG9Jbmxp
bmVDYWxsYmFjayk7CisgICAgICAgIHN0ZDo6ZnVuY3Rpb248dm9pZChib29sKT4gY2FsbGJhY2sg
PSBXVEZNb3ZlKG1fcHJlcGFyZVRvSW5saW5lQ2FsbGJhY2spOwogICAgICAgICBjYWxsYmFjayh2
aXNpYmxlKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvSElER2FtZXBhZFByb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9I
SURHYW1lcGFkUHJvdmlkZXIuY3BwCmluZGV4IGE1ZTBiZTkwNDFkMDA4MjQ1Y2ZmOWNlYTMzZDFh
MzlmYzYyODBmZWMuLjZmNDQxZTZmYWJmNmI3YjA5YTc2NGI2NjIzYmIyYzQzNDg2YTBjZDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9ISURHYW1lcGFkUHJvdmlkZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9ISURHYW1lcGFkUHJvdmlkZXIu
Y3BwCkBAIC0xNzYsNyArMTc2LDcgQEAgdm9pZCBISURHYW1lcGFkUHJvdmlkZXI6OmRldmljZUFk
ZGVkKElPSElERGV2aWNlUmVmIGRldmljZSkKICAgICAgICAgbV9nYW1lcGFkVmVjdG9yLnJlc2l6
ZShpbmRleCArIDEpOwogCiAgICAgbV9nYW1lcGFkVmVjdG9yW2luZGV4XSA9IGdhbWVwYWQuZ2V0
KCk7Ci0gICAgbV9nYW1lcGFkTWFwLnNldChkZXZpY2UsIFdURjo6bW92ZShnYW1lcGFkKSk7Cisg
ICAgbV9nYW1lcGFkTWFwLnNldChkZXZpY2UsIFdURk1vdmUoZ2FtZXBhZCkpOwogCiAgICAgaWYg
KCFtX3Nob3VsZERpc3BhdGNoQ2FsbGJhY2tzKSB7CiAgICAgICAgIC8vIFRoaXMgYWRkZWQgZGV2
aWNlIGlzIHRoZSByZXN1bHQgb2YgdXMgc3RhcnRpbmcgdG8gbW9uaXRvciBnYW1lcGFkcy4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbQppbmRleCBkMjYxOTNiOWU5NDI4M2Y1
OGY1NWM5YjAxZDYzMjRlMzJhODVkNmIwLi5hOGU2YTExZWMzMmFjMGUxMmY2Y2M0YTBhOGZiNDhi
OTg2Y2UzMjUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVN
YWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tCkBAIC02
NjcsNyArNjY3LDcgQEAgYm9vbCBUaGVtZU1hYzo6ZHJhd0NlbGxPckZvY3VzUmluZ1dpdGhWaWV3
SW50b0NvbnRleHQoTlNDZWxsICpjZWxsLCBHcmFwaGljc0NvbnQKICAgICAgICAgICAgIExvY2Fs
Q3VycmVudEdyYXBoaWNzQ29udGV4dCBsb2NhbENvbnRleHQoaW1hZ2VCdWZmZXItPmNvbnRleHQo
KSk7CiAgICAgICAgICAgICBuZWVkc1JlcGFpbnQgPSBkcmF3Q2VsbE9yRm9jdXNSaW5nSW50b1Jl
Y3RXaXRoVmlldyhjZWxsLCBpbWFnZUJ1ZmZlckRyYXdSZWN0LCB2aWV3LCBkcmF3QnV0dG9uQ2Vs
bCwgZHJhd0ZvY3VzUmluZyk7CiAgICAgICAgIH0KLSAgICAgICAgY29udGV4dC5kcmF3Q29uc3Vt
aW5nSW1hZ2VCdWZmZXIoV1RGOjptb3ZlKGltYWdlQnVmZmVyKSwgcmVjdC5sb2NhdGlvbigpIC0g
RmxvYXRTaXplKGJ1dHRvbkZvY3VzUmVjdE91dGxpbmVXaWR0aCwgYnV0dG9uRm9jdXNSZWN0T3V0
bGluZVdpZHRoKSk7CisgICAgICAgIGNvbnRleHQuZHJhd0NvbnN1bWluZ0ltYWdlQnVmZmVyKFdU
Rk1vdmUoaW1hZ2VCdWZmZXIpLCByZWN0LmxvY2F0aW9uKCkgLSBGbG9hdFNpemUoYnV0dG9uRm9j
dXNSZWN0T3V0bGluZVdpZHRoLCBidXR0b25Gb2N1c1JlY3RPdXRsaW5lV2lkdGgpKTsKICAgICAg
ICAgcmV0dXJuIG5lZWRzUmVwYWludDsKICAgICB9CiAgICAgaWYgKGRyYXdCdXR0b25DZWxsKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJl
YW1Qcml2YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlh
U3RyZWFtUHJpdmF0ZS5jcHAKaW5kZXggNGU4MjUyNDFhZjU5ZGY0OTU3ZmM3ZTQ1YzFhYTk2Mjdl
OWM5ODE2Yi4uOTk0YWM0Yjk5YWRhYzQ3YmFjNWU1NjdlNGQ2ZjcyZjVmZGJhYjY0ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Qcml2
YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0
cmVhbVByaXZhdGUuY3BwCkBAIC01MSwxMCArNTEsMTAgQEAgUmVmUHRyPE1lZGlhU3RyZWFtUHJp
dmF0ZT4gTWVkaWFTdHJlYW1Qcml2YXRlOjpjcmVhdGUoY29uc3QgVmVjdG9yPFJlZlB0cjxSZWFs
dGkKICAgICB0cmFja3MucmVzZXJ2ZUNhcGFjaXR5KGF1ZGlvU291cmNlcy5zaXplKCkgKyB2aWRl
b1NvdXJjZXMuc2l6ZSgpKTsKIAogICAgIGZvciAoYXV0byBzb3VyY2UgOiBhdWRpb1NvdXJjZXMp
Ci0gICAgICAgIHRyYWNrcy5hcHBlbmQoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6OmNyZWF0ZShX
VEY6Om1vdmUoc291cmNlKSkpOworICAgICAgICB0cmFja3MuYXBwZW5kKE1lZGlhU3RyZWFtVHJh
Y2tQcml2YXRlOjpjcmVhdGUoV1RGTW92ZShzb3VyY2UpKSk7CiAKICAgICBmb3IgKGF1dG8gc291
cmNlIDogdmlkZW9Tb3VyY2VzKQotICAgICAgICB0cmFja3MuYXBwZW5kKE1lZGlhU3RyZWFtVHJh
Y2tQcml2YXRlOjpjcmVhdGUoV1RGOjptb3ZlKHNvdXJjZSkpKTsKKyAgICAgICAgdHJhY2tzLmFw
cGVuZChNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6Y3JlYXRlKFdURk1vdmUoc291cmNlKSkpOwog
CiAgICAgcmV0dXJuIE1lZGlhU3RyZWFtUHJpdmF0ZTo6Y3JlYXRlKHRyYWNrcyk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRy
YWNrUHJpdmF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRp
YVN0cmVhbVRyYWNrUHJpdmF0ZS5jcHAKaW5kZXggNmUzOWU5YTMxNWFiZWIwMTYxOTk1OTA1M2Iw
YzY3NDc2ZTM4MGMwZS4uNjgyNGVlNGZiYjczYzgwODU3NDM5ZTU4MWUxNjRhMzJjMDhjNmMyYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJl
YW1UcmFja1ByaXZhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmNwcApAQCAtNDAsMTIgKzQwLDEyIEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPiBNZWRpYVN0
cmVhbVRyYWNrUHJpdmF0ZTo6Y3JlYXRlKFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPiYmIHNv
dXJjZSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1lZGlhU3RyZWFtVHJhY2tQcml2YXRl
KFdURjo6bW92ZShzb3VyY2UpLCBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCkpKTsKKyAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlKFdURk1vdmUoc291cmNl
KSwgY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpKSk7CiB9CiAKIFJlZlB0cjxNZWRpYVN0cmVh
bVRyYWNrUHJpdmF0ZT4gTWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6OmNyZWF0ZShSZWZQdHI8UmVh
bHRpbWVNZWRpYVNvdXJjZT4mJiBzb3VyY2UsIGNvbnN0IFN0cmluZyYgaWQpCiB7Ci0gICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZShXVEY6Om1vdmUoc291cmNl
KSwgaWQpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1lZGlhU3RyZWFtVHJhY2tQcml2YXRl
KFdURk1vdmUoc291cmNlKSwgaWQpKTsKIH0KIAogTWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6Ok1l
ZGlhU3RyZWFtVHJhY2tQcml2YXRlKGNvbnN0IE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJiBvdGhl
cikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9B
VlZpZGVvQ2FwdHVyZVNvdXJjZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9BVlZpZGVvQ2FwdHVyZVNvdXJjZS5tbQppbmRleCA1N2MzMjcyZjdlMzk5N2FhMzUx
NjdhMDgyOWI4YjQ2MzAxYjc5MzM4Li4wNzc4MzVkNWUyMTI5ZWU5ZWVmZjhkNDBhMWQ0NTA3MTk4
NGFjNTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvQVZWaWRlb0NhcHR1cmVTb3VyY2UubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL0FWVmlkZW9DYXB0dXJlU291cmNlLm1tCkBAIC0zMzQsNyArMzM0LDcg
QEAgUmVmUHRyPEltYWdlPiBBVlZpZGVvQ2FwdHVyZVNvdXJjZTo6Y3VycmVudEZyYW1lSW1hZ2Uo
KQogCiAgICAgcGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoaW1hZ2VCdWZmZXItPmNvbnRleHQo
KSwgaW1hZ2VSZWN0KTsKIAotICAgIHJldHVybiBJbWFnZUJ1ZmZlcjo6c2lua0ludG9JbWFnZShX
VEY6Om1vdmUoaW1hZ2VCdWZmZXIpKTsKKyAgICByZXR1cm4gSW1hZ2VCdWZmZXI6OnNpbmtJbnRv
SW1hZ2UoV1RGTW92ZShpbWFnZUJ1ZmZlcikpOwogfQogCiBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4g
QVZWaWRlb0NhcHR1cmVTb3VyY2U6OmN1cnJlbnRGcmFtZUNHSW1hZ2UoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YS5oCmluZGV4IGE3NGRkODRhNzM4MjZhZjViOGY0
NjIxNmE4OTBhMTIyNjc1MDllYTcuLjE0M2M1ZWQxMTM4YmI0MjY0MDkzYmQxMjQ4ZDdhYmNkZTUy
ZmFjYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYkRh
dGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRhLmgKQEAg
LTQzLDE0ICs0MywxNCBAQCBjbGFzcyBSYXdEYXRhIDogcHVibGljIFJlZkNvdW50ZWQ8UmF3RGF0
YT4gewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8UmF3RGF0YT4gY3JlYXRlKFZlY3RvcjxjaGFy
PiYmIGRhdGEpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSYXdEYXRhKFdU
Rjo6bW92ZShkYXRhKSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSYXdEYXRhKFdU
Rk1vdmUoZGF0YSkpKTsKICAgICB9CiAKICAgICBzdGF0aWMgUmVmPFJhd0RhdGE+IGNyZWF0ZShj
b25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkKICAgICB7CiAgICAgICAgIFZlY3RvcjxjaGFy
PiBkYXRhVmVjdG9yKHNpemUpOwogICAgICAgICBtZW1jcHkoZGF0YVZlY3Rvci5kYXRhKCksIGRh
dGEsIHNpemUpOwotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSYXdEYXRhKFdURjo6bW92
ZShkYXRhVmVjdG9yKSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSYXdEYXRhKFdU
Rk1vdmUoZGF0YVZlY3RvcikpKTsKICAgICB9CiAKICAgICBjb25zdCBjaGFyKiBkYXRhKCkgY29u
c3QgeyByZXR1cm4gbV9kYXRhLmRhdGEoKTsgfQpAQCAtNTgsNyArNTgsNyBAQCBwdWJsaWM6CiAK
IHByaXZhdGU6CiAgICAgUmF3RGF0YShWZWN0b3I8Y2hhcj4mJiBkYXRhKQotICAgICAgICA6IG1f
ZGF0YShXVEY6Om1vdmUoZGF0YSkpCisgICAgICAgIDogbV9kYXRhKFdURk1vdmUoZGF0YSkpCiAg
ICAgewogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9CbG9iUGFydC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUGFydC5o
CmluZGV4IGJiNmZlYmQ2NTg5MzgyY2NhYTg3ODg1OTliNmM0NDBhYjVhNDg5OWUuLjU1ZjQ5YzM5
ZWYwNTdjMmU4YWM3M2U1MTZmY2NiNTVhMjNiNjFlN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlBhcnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL0Jsb2JQYXJ0LmgKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogCiAgICAg
QmxvYlBhcnQoVmVjdG9yPGNoYXI+IGRhdGEpCiAgICAgICAgIDogbV90eXBlKERhdGEpCi0gICAg
ICAgICwgbV9kYXRhKFdURjo6bW92ZShkYXRhKSkKKyAgICAgICAgLCBtX2RhdGEoV1RGTW92ZShk
YXRhKSkKICAgICB7CiAgICAgfQogCkBAIC02NSw3ICs2NSw3IEBAIHB1YmxpYzoKICAgICBWZWN0
b3I8Y2hhcj4gbW92ZURhdGEoKQogICAgIHsKICAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBEYXRh
KTsKLSAgICAgICAgcmV0dXJuIFdURjo6bW92ZShtX2RhdGEpOworICAgICAgICByZXR1cm4gV1RG
TW92ZShtX2RhdGEpOwogICAgIH0KIAogICAgIGNvbnN0IFVSTCYgdXJsKCkgY29uc3QKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5jcHAKaW5k
ZXggYmJlZjllMjYyNGE4YTkxNWMwZGNlOTY3NDNiODI4ODc5OWRmNjBhZS4uZmJiNmE4MzEyODU1
MTJiOTIyZjZhNmNhNmJiZDgwMzMwYjQ0NTFiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5jcHAKQEAgLTYwLDE0ICs2MCwxNCBAQCBj
bGFzcyBEZWNvZGluZ1Jlc3VsdERpc3BhdGNoZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50
ZWQ8RGVjb2RpbmdSZXN1bHREaXNwYQogcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGRpc3BhdGNo
KHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVUYXNrPiBkZWNvZGVUYXNrKQogICAgIHsKLSAgICAgICAg
UmVmPERlY29kaW5nUmVzdWx0RGlzcGF0Y2hlcj4gZGlzcGF0Y2hlciA9IGFkb3B0UmVmKCpuZXcg
RGVjb2RpbmdSZXN1bHREaXNwYXRjaGVyKFdURjo6bW92ZShkZWNvZGVUYXNrKSkpOworICAgICAg
ICBSZWY8RGVjb2RpbmdSZXN1bHREaXNwYXRjaGVyPiBkaXNwYXRjaGVyID0gYWRvcHRSZWYoKm5l
dyBEZWNvZGluZ1Jlc3VsdERpc3BhdGNoZXIoV1RGTW92ZShkZWNvZGVUYXNrKSkpOwogICAgICAg
ICBkaXNwYXRjaGVyLT5zdGFydFRpbWVyKCk7CiAgICAgfQogCiBwcml2YXRlOgogICAgIERlY29k
aW5nUmVzdWx0RGlzcGF0Y2hlcihzdGQ6OnVuaXF1ZV9wdHI8RGVjb2RlVGFzaz4gZGVjb2RlVGFz
aykKICAgICAgICAgOiBtX3RpbWVyKCp0aGlzLCAmRGVjb2RpbmdSZXN1bHREaXNwYXRjaGVyOjp0
aW1lckZpcmVkKQotICAgICAgICAsIG1fZGVjb2RlVGFzayhXVEY6Om1vdmUoZGVjb2RlVGFzaykp
CisgICAgICAgICwgbV9kZWNvZGVUYXNrKFdURk1vdmUoZGVjb2RlVGFzaykpCiAgICAgewogICAg
IH0KIApAQCAtODIsNyArODIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgdGltZXJGaXJlZCgpCiAg
ICAgewogICAgICAgICBpZiAobV9kZWNvZGVUYXNrLT5yZXN1bHQuZGF0YSkKLSAgICAgICAgICAg
IG1fZGVjb2RlVGFzay0+Y29tcGxldGlvbkhhbmRsZXIoV1RGOjptb3ZlKG1fZGVjb2RlVGFzay0+
cmVzdWx0KSk7CisgICAgICAgICAgICBtX2RlY29kZVRhc2stPmNvbXBsZXRpb25IYW5kbGVyKFdU
Rk1vdmUobV9kZWNvZGVUYXNrLT5yZXN1bHQpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAg
bV9kZWNvZGVUYXNrLT5jb21wbGV0aW9uSGFuZGxlcih7IH0pOwogCkBAIC0xMjgsMTEgKzEyOCwx
MSBAQCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPERlY29kZVRhc2s+IGNyZWF0ZURlY29kZVRhc2so
Y29uc3QgVVJMJiB1cmwsIGNvbnN0IFNjaGVkdQogICAgIGF1dG8gbWVkaWFUeXBlID0gKGlzQmFz
ZTY0ID8gaGVhZGVyLnN1YnN0cmluZygwLCBoZWFkZXIubGVuZ3RoKCkgLSBzdHJsZW4oYmFzZTY0
U3RyaW5nKSkgOiBoZWFkZXIpLnRvU3RyaW5nKCk7CiAKICAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxEZWNvZGVUYXNrPihEZWNvZGVUYXNrIHsKLSAgICAgICAgV1RGOjptb3ZlKHVybFN0cmlu
ZyksCi0gICAgICAgIFdURjo6bW92ZShlbmNvZGVkRGF0YSksCisgICAgICAgIFdURk1vdmUodXJs
U3RyaW5nKSwKKyAgICAgICAgV1RGTW92ZShlbmNvZGVkRGF0YSksCiAgICAgICAgIGlzQmFzZTY0
LAogICAgICAgICBzY2hlZHVsZUNvbnRleHQsCi0gICAgICAgIFdURjo6bW92ZShjb21wbGV0aW9u
SGFuZGxlciksCisgICAgICAgIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLAogICAgICAgICBw
YXJzZU1lZGlhVHlwZShtZWRpYVR5cGUpCiAgICAgfSk7CiB9CkBAIC0xNjUsNyArMTY1LDcgQEAg
dm9pZCBkZWNvZGUoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFNjaGVkdWxlQ29udGV4dCYgc2NoZWR1
bGVDb250ZXh0LCBEZWNvZGVDb21wbGUKIHsKICAgICBBU1NFUlQodXJsLnByb3RvY29sSXNEYXRh
KCkpOwogCi0gICAgYXV0byBkZWNvZGVUYXNrID0gY3JlYXRlRGVjb2RlVGFzayh1cmwsIHNjaGVk
dWxlQ29udGV4dCwgV1RGOjptb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgYXV0byBkZWNv
ZGVUYXNrID0gY3JlYXRlRGVjb2RlVGFzayh1cmwsIHNjaGVkdWxlQ29udGV4dCwgV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOwogICAgIGF1dG8qIGRlY29kZVRhc2tQdHIgPSBkZWNvZGVUYXNr
LnJlbGVhc2UoKTsKICAgICBkZWNvZGVRdWV1ZSgpLmRpc3BhdGNoKFtkZWNvZGVUYXNrUHRyXSB7
CiAgICAgICAgIGF1dG8mIGRlY29kZVRhc2sgPSAqZGVjb2RlVGFza1B0cjsKQEAgLTE4NCw3ICsx
ODQsNyBAQCB2b2lkIGRlY29kZShjb25zdCBVUkwmIHVybCwgY29uc3QgU2NoZWR1bGVDb250ZXh0
JiBzY2hlZHVsZUNvbnRleHQsIERlY29kZUNvbXBsZQogICAgICAgICAgICAgICAgIGRlY29kZVRh
c2stPmNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICAgICAgfQotICAgICAgICAgICAgZGVjb2RlVGFzay0+Y29tcGxldGlvbkhhbmRsZXIoV1RG
Ojptb3ZlKGRlY29kZVRhc2stPnJlc3VsdCkpOworICAgICAgICAgICAgZGVjb2RlVGFzay0+Y29t
cGxldGlvbkhhbmRsZXIoV1RGTW92ZShkZWNvZGVUYXNrLT5yZXN1bHQpKTsKICAgICAgICAgfSk7
CiAjZW5kaWYKICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvSFRUUEhlYWRlck1hcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L0hUVFBIZWFkZXJNYXAuY3BwCmluZGV4IGYxYTBkYzU0ZGRlOGViNWYyYjU0Y2UzYjdkYWRkZWU4
MjgwMmVjY2MuLjU2NTNmMjgyN2ZiNzgyMDMwNmU5YjI1Yjk5ZjQ2MjAzNjAyNzBiOTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUEhlYWRlck1hcC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQSGVhZGVyTWFwLmNwcApA
QCAtNjUsMTAgKzY1LDEwIEBAIHZvaWQgSFRUUEhlYWRlck1hcDo6YWRvcHQoc3RkOjp1bmlxdWVf
cHRyPENyb3NzVGhyZWFkSFRUUEhlYWRlck1hcERhdGE+IGRhdGEpCiAgICAgbV91bmNvbW1vbkhl
YWRlcnMuY2xlYXIoKTsKIAogICAgIGZvciAoYXV0byYgaGVhZGVyIDogZGF0YS0+Y29tbW9uSGVh
ZGVycykKLSAgICAgICAgbV9jb21tb25IZWFkZXJzLmFkZChoZWFkZXIuZmlyc3QsIFdURjo6bW92
ZShoZWFkZXIuc2Vjb25kKSk7CisgICAgICAgIG1fY29tbW9uSGVhZGVycy5hZGQoaGVhZGVyLmZp
cnN0LCBXVEZNb3ZlKGhlYWRlci5zZWNvbmQpKTsKIAogICAgIGZvciAoYXV0byYgaGVhZGVyIDog
ZGF0YS0+dW5jb21tb25IZWFkZXJzKQotICAgICAgICBtX3VuY29tbW9uSGVhZGVycy5hZGQoV1RG
Ojptb3ZlKGhlYWRlci5maXJzdCksIFdURjo6bW92ZShoZWFkZXIuc2Vjb25kKSk7CisgICAgICAg
IG1fdW5jb21tb25IZWFkZXJzLmFkZChXVEZNb3ZlKGhlYWRlci5maXJzdCksIFdURk1vdmUoaGVh
ZGVyLnNlY29uZCkpOwogfQogCiBTdHJpbmcgSFRUUEhlYWRlck1hcDo6Z2V0KGNvbnN0IFN0cmlu
ZyYgbmFtZSkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvTmV0d29ya1N0YXRlTm90aWZpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9OZXR3b3JrU3RhdGVOb3RpZmllci5jcHAKaW5kZXggYmRhY2ExOGFmNWY3ZjliNjRkNzAw
OGMzNGVkNTU1ZWQ0MWI2YjUzNC4uNTU3NGEzNTgzNGNjNjAxZjU4NmVlZDc5NTJjNWFhNDgxMTZm
ODllZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3Jr
U3RhdGVOb3RpZmllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9O
ZXR3b3JrU3RhdGVOb3RpZmllci5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgdm9pZCBOZXR3b3JrU3Rh
dGVOb3RpZmllcjo6YWRkTmV0d29ya1N0YXRlQ2hhbmdlTGlzdGVuZXIoc3RkOjpmdW5jdGlvbjx2
b2lkIChib28KICAgICByZWdpc3Rlck9ic2VydmVySWZOZWNlc3NhcnkoKTsKICNlbmRpZgogCi0g
ICAgbV9saXN0ZW5lcnMuYXBwZW5kKFdURjo6bW92ZShsaXN0ZW5lcikpOworICAgIG1fbGlzdGVu
ZXJzLmFwcGVuZChXVEZNb3ZlKGxpc3RlbmVyKSk7CiB9CiAKIHZvaWQgTmV0d29ya1N0YXRlTm90
aWZpZXI6Om5vdGlmeU5ldHdvcmtTdGF0ZUNoYW5nZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmgKaW5kZXggNTNlMjRjZDFlYWJm
NzBiOGExZWMxZGI0YjY3ZjgzYzU4Yjk4MGM3MC4uMWNhMDIxYjc2MDgzYWMwMjllZjc4OGI5YzUy
ZmQ0NzJhZmQzMzI1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9SZXNvdXJjZUhhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
UmVzb3VyY2VIYW5kbGUuaApAQCAtMTU4LDcgKzE1OCw3IEBAIHB1YmxpYzoKIAogI2lmIFVTRShR
VUlDS19MT09LKQogICAgIFF1aWNrTG9va0hhbmRsZSogcXVpY2tMb29rSGFuZGxlKCkgeyByZXR1
cm4gbV9xdWlja0xvb2suZ2V0KCk7IH0KLSAgICB2b2lkIHNldFF1aWNrTG9va0hhbmRsZShzdGQ6
OnVuaXF1ZV9wdHI8UXVpY2tMb29rSGFuZGxlPiBoYW5kbGUpIHsgbV9xdWlja0xvb2sgPSBXVEY6
Om1vdmUoaGFuZGxlKTsgfQorICAgIHZvaWQgc2V0UXVpY2tMb29rSGFuZGxlKHN0ZDo6dW5pcXVl
X3B0cjxRdWlja0xvb2tIYW5kbGU+IGhhbmRsZSkgeyBtX3F1aWNrTG9vayA9IFdURk1vdmUoaGFu
ZGxlKTsgfQogI2VuZGlmCiAKICNpZiBQTEFURk9STShXSU4pICYmIFVTRShDVVJMKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFz
ZS5jcHAKaW5kZXggMDA1OTdlZGRkYmYyMWRkM2Y2ZTk1MGYxMWRkMDVhZWQxY2U0MmM5OC4uZmIz
MTA4OWY4M2FiZjI5NzZiMzg0MjNiY2U4Y2Y4YjY1MTJjNDc3OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwCkBA
IC02MSw3ICs2MSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxSZXNvdXJjZVJlcXVlc3Q+IFJlc291cmNl
UmVxdWVzdEJhc2U6OmFkb3B0KHN0ZDo6dW5pcXVlX3B0cjxDcm9zCiAgICAgcmVxdWVzdC0+c2V0
UmVxdWVzdGVyKGRhdGEtPnJlcXVlc3Rlcik7CiAKICAgICByZXF1ZXN0LT51cGRhdGVSZXNvdXJj
ZVJlcXVlc3QoKTsKLSAgICByZXF1ZXN0LT5tX2h0dHBIZWFkZXJGaWVsZHMuYWRvcHQoV1RGOjpt
b3ZlKGRhdGEtPmh0dHBIZWFkZXJzKSk7CisgICAgcmVxdWVzdC0+bV9odHRwSGVhZGVyRmllbGRz
LmFkb3B0KFdURk1vdmUoZGF0YS0+aHR0cEhlYWRlcnMpKTsKIAogICAgIHNpemVfdCBlbmNvZGlu
Z0NvdW50ID0gZGF0YS0+cmVzcG9uc2VDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNr
QXJyYXkuc2l6ZSgpOwogICAgIGlmIChlbmNvZGluZ0NvdW50ID4gMCkgewpAQCAtNzgsNyArNzgs
NyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UmVzb3VyY2VSZXF1ZXN0PiBSZXNvdXJjZVJlcXVlc3RCYXNl
OjphZG9wdChzdGQ6OnVuaXF1ZV9wdHI8Q3JvcwogICAgIH0KICAgICByZXF1ZXN0LT5zZXRIVFRQ
Qm9keShkYXRhLT5odHRwQm9keSk7CiAgICAgcmVxdWVzdC0+c2V0QWxsb3dDb29raWVzKGRhdGEt
PmFsbG93Q29va2llcyk7Ci0gICAgcmVxdWVzdC0+ZG9QbGF0Zm9ybUFkb3B0KFdURjo6bW92ZShk
YXRhKSk7CisgICAgcmVxdWVzdC0+ZG9QbGF0Zm9ybUFkb3B0KFdURk1vdmUoZGF0YSkpOwogICAg
IHJldHVybiByZXF1ZXN0OwogfQogCkBAIC0xMDIsNyArMTAyLDcgQEAgc3RkOjp1bmlxdWVfcHRy
PENyb3NzVGhyZWFkUmVzb3VyY2VSZXF1ZXN0RGF0YT4gUmVzb3VyY2VSZXF1ZXN0QmFzZTo6Y29w
eURhdGEoKQogICAgIGlmIChtX2h0dHBCb2R5KQogICAgICAgICBkYXRhLT5odHRwQm9keSA9IG1f
aHR0cEJvZHktPmRlZXBDb3B5KCk7CiAgICAgZGF0YS0+YWxsb3dDb29raWVzID0gbV9hbGxvd0Nv
b2tpZXM7Ci0gICAgcmV0dXJuIGFzUmVzb3VyY2VSZXF1ZXN0KCkuZG9QbGF0Zm9ybUNvcHlEYXRh
KFdURjo6bW92ZShkYXRhKSk7CisgICAgcmV0dXJuIGFzUmVzb3VyY2VSZXF1ZXN0KCkuZG9QbGF0
Zm9ybUNvcHlEYXRhKFdURk1vdmUoZGF0YSkpOwogfQogCiBib29sIFJlc291cmNlUmVxdWVzdEJh
c2U6OmlzRW1wdHkoKSBjb25zdApAQCAtNDY5LDcgKzQ2OSw3IEBAIHZvaWQgUmVzb3VyY2VSZXF1
ZXN0QmFzZTo6c2V0SFRUUEhlYWRlckZpZWxkcyhIVFRQSGVhZGVyTWFwIGhlYWRlckZpZWxkcykK
IHsKICAgICB1cGRhdGVSZXNvdXJjZVJlcXVlc3QoKTsKIAotICAgIG1faHR0cEhlYWRlckZpZWxk
cyA9IFdURjo6bW92ZShoZWFkZXJGaWVsZHMpOworICAgIG1faHR0cEhlYWRlckZpZWxkcyA9IFdU
Rk1vdmUoaGVhZGVyRmllbGRzKTsKIAogICAgIGlmICh1cmwoKS5wcm90b2NvbElzSW5IVFRQRmFt
aWx5KCkpCiAgICAgICAgIG1fcGxhdGZvcm1SZXF1ZXN0VXBkYXRlZCA9IGZhbHNlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFz
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VC
YXNlLmNwcAppbmRleCA1NjI3NzM0NzlmMTc5YzUzM2Y0MDU2M2IzNDdkZDQ0ZTg3NmY4ZjU4Li5i
MjQ1ZWZlMmRlYmY1NjM3Y2FiMzM0NzE0YzY2ZDBlZTM4ZDRhZmM4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNw
cApAQCAtNzQsOSArNzQsOSBAQCBzdGQ6OnVuaXF1ZV9wdHI8UmVzb3VyY2VSZXNwb25zZT4gUmVz
b3VyY2VSZXNwb25zZUJhc2U6OmFkb3B0KHN0ZDo6dW5pcXVlX3B0cjxDcgogICAgIHJlc3BvbnNl
LT5zZXRIVFRQU3RhdHVzVGV4dChkYXRhLT5tX2h0dHBTdGF0dXNUZXh0KTsKIAogICAgIHJlc3Bv
bnNlLT5sYXp5SW5pdChBbGxGaWVsZHMpOwotICAgIHJlc3BvbnNlLT5tX2h0dHBIZWFkZXJGaWVs
ZHMuYWRvcHQoV1RGOjptb3ZlKGRhdGEtPm1faHR0cEhlYWRlcnMpKTsKKyAgICByZXNwb25zZS0+
bV9odHRwSGVhZGVyRmllbGRzLmFkb3B0KFdURk1vdmUoZGF0YS0+bV9odHRwSGVhZGVycykpOwog
ICAgIHJlc3BvbnNlLT5tX3Jlc291cmNlTG9hZFRpbWluZyA9IGRhdGEtPm1fcmVzb3VyY2VMb2Fk
VGltaW5nOwotICAgIHJlc3BvbnNlLT5kb1BsYXRmb3JtQWRvcHQoV1RGOjptb3ZlKGRhdGEpKTsK
KyAgICByZXNwb25zZS0+ZG9QbGF0Zm9ybUFkb3B0KFdURk1vdmUoZGF0YSkpOwogICAgIHJldHVy
biByZXNwb25zZTsKIH0KIApAQCAtOTEsNyArOTEsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Q3Jvc3NU
aHJlYWRSZXNvdXJjZVJlc3BvbnNlRGF0YT4gUmVzb3VyY2VSZXNwb25zZUJhc2U6OmNvcHlEYXRh
KAogICAgIGRhdGEtPm1faHR0cFN0YXR1c1RleHQgPSBodHRwU3RhdHVzVGV4dCgpLmlzb2xhdGVk
Q29weSgpOwogICAgIGRhdGEtPm1faHR0cEhlYWRlcnMgPSBodHRwSGVhZGVyRmllbGRzKCkuY29w
eURhdGEoKTsKICAgICBkYXRhLT5tX3Jlc291cmNlTG9hZFRpbWluZyA9IG1fcmVzb3VyY2VMb2Fk
VGltaW5nOwotICAgIHJldHVybiBhc1Jlc291cmNlUmVzcG9uc2UoKS5kb1BsYXRmb3JtQ29weURh
dGEoV1RGOjptb3ZlKGRhdGEpKTsKKyAgICByZXR1cm4gYXNSZXNvdXJjZVJlc3BvbnNlKCkuZG9Q
bGF0Zm9ybUNvcHlEYXRhKFdURk1vdmUoZGF0YSkpOwogfQogCiBib29sIFJlc291cmNlUmVzcG9u
c2VCYXNlOjppc0hUVFAoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFTdHJlYW1DRk5ldC5jcHAKaW5kZXggYzg5OWJhNTJm
ZThhZmY4NjhjYzhkMTRkNTY0Y2JmY2NiMTNmYTQxNC4uZjM5ODUxMzlhNDAxYmU2M2EwODZiMjZj
ZjFkZjFlY2VmZWY2MDI2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRhU3RyZWFtQ0ZOZXQuY3BwCkBAIC0xMzksNyArMTM5LDcg
QEAgc3RhdGljIGJvb2wgYWR2YW5jZUN1cnJlbnRTdHJlYW0oRm9ybVN0cmVhbUZpZWxkcyogZm9y
bSkKICAgICAgICAgc2l6ZV90IHNpemUgPSBuZXh0SW5wdXQubV9kYXRhLnNpemUoKTsKICAgICAg
ICAgTWFsbG9jUHRyPGNoYXI+IGRhdGEgPSBuZXh0SW5wdXQubV9kYXRhLnJlbGVhc2VCdWZmZXIo
KTsKICAgICAgICAgZm9ybS0+Y3VycmVudFN0cmVhbSA9IENGUmVhZFN0cmVhbUNyZWF0ZVdpdGhC
eXRlc05vQ29weSgwLCByZWludGVycHJldF9jYXN0PGNvbnN0IFVJbnQ4Kj4oZGF0YS5nZXQoKSks
IHNpemUsIGtDRkFsbG9jYXRvck51bGwpOwotICAgICAgICBmb3JtLT5jdXJyZW50RGF0YSA9IFdU
Rjo6bW92ZShkYXRhKTsKKyAgICAgICAgZm9ybS0+Y3VycmVudERhdGEgPSBXVEZNb3ZlKGRhdGEp
OwogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIENoZWNrIGlmIHRoZSBmaWxlIGhhcyBiZWVuIGNo
YW5nZWQgb3Igbm90IGlmIHJlcXVpcmVkLgogICAgICAgICBpZiAoaXNWYWxpZEZpbGVUaW1lKG5l
eHRJbnB1dC5tX2V4cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRpbWUpKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0
LmNwcAppbmRleCBkYzc5YmMzOTk0YjJjN2UxN2JmYTlkMzVlOGI5Zjg1MTI2NzY3NTVhLi5lYzc1
ZWRlM2I0MmMwMDljZWMzZmRmYWIwZWNhMDRlZGQzNjA1MTU3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5j
cHAKQEAgLTU1MSw3ICs1NTEsNyBAQCBDRlVSTENvbm5lY3Rpb25SZWYgUmVzb3VyY2VIYW5kbGU6
OmNvbm5lY3Rpb24oKSBjb25zdAogUmV0YWluUHRyPENGVVJMQ29ubmVjdGlvblJlZj4gUmVzb3Vy
Y2VIYW5kbGU6OnJlbGVhc2VDb25uZWN0aW9uRm9yRG93bmxvYWQoKQogewogICAgIExPRyhOZXR3
b3JrLCAiQ0ZOZXQgLSBKb2IgJXAgcmVsZWFzaW5nIGNvbm5lY3Rpb24gJXAgZm9yIGRvd25sb2Fk
IiwgdGhpcywgZC0+bV9jb25uZWN0aW9uLmdldCgpKTsKLSAgICByZXR1cm4gV1RGOjptb3ZlKGQt
Pm1fY29ubmVjdGlvbik7CisgICAgcmV0dXJuIFdURk1vdmUoZC0+bV9jb25uZWN0aW9uKTsKIH0K
IAogQ0ZTdHJpbmdSZWYgUmVzb3VyY2VIYW5kbGU6OnN5bmNocm9ub3VzTG9hZFJ1bkxvb3BNb2Rl
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
Q2FjaGVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsQ2FjaGVNYW5hZ2VyLmNwcAppbmRleCAwNTJiMzk4NzU5NWU3ZDhmNTUxNzdkMmQwOTVlNDNl
NmM3YzYxNzg4Li5lMWIzZDVkNzVlNDRhYjZkMGQ2NzY4NTg4ZWRhYWI4MjYyYjE4NjdhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFu
YWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxD
YWNoZU1hbmFnZXIuY3BwCkBAIC0xNDcsNyArMTQ3LDcgQEAgdm9pZCBDdXJsQ2FjaGVNYW5hZ2Vy
Ojpsb2FkSW5kZXgoKQogICAgICAgICAgICAgbV9jdXJyZW50U3RvcmFnZVNpemUgKz0gY2FjaGVF
bnRyeS0+ZW50cnlTaXplKCk7CiAgICAgICAgICAgICBtYWtlUm9vbUZvck5ld0VudHJ5KCk7CiAg
ICAgICAgICAgICBtX0xSVUVudHJ5TGlzdC5wcmVwZW5kT3JNb3ZlVG9GaXJzdCh1cmwpOwotICAg
ICAgICAgICAgbV9pbmRleC5zZXQodXJsLCBXVEY6Om1vdmUoY2FjaGVFbnRyeSkpOworICAgICAg
ICAgICAgbV9pbmRleC5zZXQodXJsLCBXVEZNb3ZlKGNhY2hlRW50cnkpKTsKICAgICAgICAgfSBl
bHNlCiAgICAgICAgICAgICBjYWNoZUVudHJ5LT5pbnZhbGlkYXRlKCk7CiAKQEAgLTIyMiw3ICsy
MjIsNyBAQCB2b2lkIEN1cmxDYWNoZU1hbmFnZXI6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJj
ZUhhbmRsZSYgam9iLCBSZXNvdXJjZVJlc3BvbnNlJgogICAgICAgICBpZiAoY2FjaGVhYmxlKSB7
CiAgICAgICAgICAgICBjYWNoZUVudHJ5LT5zZXRJc0xvYWRpbmcodHJ1ZSk7CiAgICAgICAgICAg
ICBtX0xSVUVudHJ5TGlzdC5wcmVwZW5kT3JNb3ZlVG9GaXJzdCh1cmwpOwotICAgICAgICAgICAg
bV9pbmRleC5zZXQodXJsLCBXVEY6Om1vdmUoY2FjaGVFbnRyeSkpOworICAgICAgICAgICAgbV9p
bmRleC5zZXQodXJsLCBXVEZNb3ZlKGNhY2hlRW50cnkpKTsKICAgICAgICAgICAgIHNhdmVSZXNw
b25zZUhlYWRlcnModXJsLCByZXNwb25zZSk7CiAgICAgICAgIH0KICAgICB9IGVsc2UKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1I
YW5kbGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJl
YW1IYW5kbGUuaAppbmRleCA4OTBhYjZmMmViOWI1M2Q2ZmFlYzM0OTUxZjNjZjk5YjI2MjQwODQ1
Li4zZmY1Nzk3ZTUxMzM0MDQxNTYxYzU1MzYzMWZmZTU2ZGI3NTNhZmEzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhh
bmRsZS5oCkBAIC04NywxMyArODcsMTMgQEAgcHJpdmF0ZToKICAgICBzdHJ1Y3QgU29ja2V0RGF0
YSB7CiAgICAgICAgIFNvY2tldERhdGEoc3RkOjp1bmlxdWVfcHRyPGNoYXJbXT4mJiBzb3VyY2Us
IGludCBsZW5ndGgpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGRhdGEgPSBXVEY6Om1vdmUoc291
cmNlKTsKKyAgICAgICAgICAgIGRhdGEgPSBXVEZNb3ZlKHNvdXJjZSk7CiAgICAgICAgICAgICBz
aXplID0gbGVuZ3RoOwogICAgICAgICB9CiAKICAgICAgICAgU29ja2V0RGF0YShTb2NrZXREYXRh
JiYgb3RoZXIpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGRhdGEgPSBXVEY6Om1vdmUob3RoZXIu
ZGF0YSk7CisgICAgICAgICAgICBkYXRhID0gV1RGTW92ZShvdGhlci5kYXRhKTsKICAgICAgICAg
ICAgIHNpemUgPSBvdGhlci5zaXplOwogICAgICAgICAgICAgb3RoZXIuc2l6ZSA9IDA7CiAgICAg
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9T
b2NrZXRTdHJlYW1IYW5kbGVDdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVDdXJsLmNwcAppbmRleCA4ZTRlNzEyZTJjMmM1NmJh
NjYzZTY1M2VmZjQ0ZmY3NDNkNjQ3ZGY0Li44ZDczZTZkMzgzMjJmNDRiYzA1MDA2NDRiYzUyM2Nl
MTY0Yjk0M2VjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvU29ja2V0U3RyZWFtSGFuZGxlQ3VybC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhhbmRsZUN1cmwuY3BwCkBAIC02OCw3ICs2OCw3
IEBAIGludCBTb2NrZXRTdHJlYW1IYW5kbGU6OnBsYXRmb3JtU2VuZChjb25zdCBjaGFyKiBkYXRh
LCBpbnQgbGVuZ3RoKQogICAgIGF1dG8gY29weSA9IGNyZWF0ZUNvcHkoZGF0YSwgbGVuZ3RoKTsK
IAogICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKG1fbXV0ZXhTZW5kKTsKLSAgICBtX3Nl
bmREYXRhLmFwcGVuZChTb2NrZXREYXRhIHsgV1RGOjptb3ZlKGNvcHkpLCBsZW5ndGggfSk7Cisg
ICAgbV9zZW5kRGF0YS5hcHBlbmQoU29ja2V0RGF0YSB7IFdURk1vdmUoY29weSksIGxlbmd0aCB9
KTsKIAogICAgIHJldHVybiBsZW5ndGg7CiB9CkBAIC05Nyw3ICs5Nyw3IEBAIGJvb2wgU29ja2V0
U3RyZWFtSGFuZGxlOjpyZWFkRGF0YShDVVJMKiBjdXJsSGFuZGxlKQogCiAgICAgaWYgKHJldCA9
PSBDVVJMRV9PSyAmJiBieXRlc1JlYWQgPj0gMCkgewogICAgICAgICBtX211dGV4UmVjZWl2ZS5s
b2NrKCk7Ci0gICAgICAgIG1fcmVjZWl2ZURhdGEuYXBwZW5kKFNvY2tldERhdGEgeyBXVEY6Om1v
dmUoZGF0YSksIHN0YXRpY19jYXN0PGludD4oYnl0ZXNSZWFkKSB9KTsKKyAgICAgICAgbV9yZWNl
aXZlRGF0YS5hcHBlbmQoU29ja2V0RGF0YSB7IFdURk1vdmUoZGF0YSksIHN0YXRpY19jYXN0PGlu
dD4oYnl0ZXNSZWFkKSB9KTsKICAgICAgICAgbV9tdXRleFJlY2VpdmUudW5sb2NrKCk7CiAKICAg
ICAgICAgcmVmKCk7CkBAIC0xNDcsNyArMTQ3LDcgQEAgYm9vbCBTb2NrZXRTdHJlYW1IYW5kbGU6
OnNlbmREYXRhKENVUkwqIGN1cmxIYW5kbGUpCiAgICAgICAgICAgICBhdXRvIGNvcHkgPSBjcmVh
dGVDb3B5KHNlbmREYXRhLmRhdGEuZ2V0KCkgKyB0b3RhbEJ5dGVzU2VudCwgcmVzdExlbmd0aCk7
CiAKICAgICAgICAgICAgIHN0ZDo6bG9ja19ndWFyZDxMb2NrPiBsb2NrKG1fbXV0ZXhTZW5kKTsK
LSAgICAgICAgICAgIG1fc2VuZERhdGEucHJlcGVuZChTb2NrZXREYXRhIHsgV1RGOjptb3ZlKGNv
cHkpLCByZXN0TGVuZ3RoIH0pOworICAgICAgICAgICAgbV9zZW5kRGF0YS5wcmVwZW5kKFNvY2tl
dERhdGEgeyBXVEZNb3ZlKGNvcHkpLCByZXN0TGVuZ3RoIH0pOwogCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgIH0KQEAgLTI1MSw3ICsyNTEsNyBAQCB2b2lkIFNvY2tldFN0cmVh
bUhhbmRsZTo6ZGlkUmVjZWl2ZURhdGEoKQogCiAgICAgbV9tdXRleFJlY2VpdmUubG9jaygpOwog
Ci0gICAgYXV0byByZWNlaXZlRGF0YSA9IFdURjo6bW92ZShtX3JlY2VpdmVEYXRhKTsKKyAgICBh
dXRvIHJlY2VpdmVEYXRhID0gV1RGTW92ZShtX3JlY2VpdmVEYXRhKTsKIAogICAgIG1fbXV0ZXhS
ZWNlaXZlLnVubG9jaygpOwogCkBAIC0yNzksNyArMjc5LDcgQEAgc3RkOjp1bmlxdWVfcHRyPGNo
YXJbXT4gU29ja2V0U3RyZWFtSGFuZGxlOjpjcmVhdGVDb3B5KGNvbnN0IGNoYXIqIGRhdGEsIGlu
dCBsZW4KICAgICBzdGQ6OnVuaXF1ZV9wdHI8Y2hhcltdPiBjb3B5KG5ldyBjaGFyW2xlbmd0aF0p
OwogICAgIG1lbWNweShjb3B5LmdldCgpLCBkYXRhLCBsZW5ndGgpOwogCi0gICAgcmV0dXJuIFdU
Rjo6bW92ZShjb3B5KTsKKyAgICByZXR1cm4gV1RGTW92ZShjb3B5KTsKIH0KIAogdm9pZCBTb2Nr
ZXRTdHJlYW1IYW5kbGU6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjb25zdCBB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0b3JhZ2VTZXNzaW9uU291cC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0b3JhZ2VTZXNzaW9uU291cC5j
cHAKaW5kZXggYmU3NzlmMjQyOWYxODkyM2Q4MTU4YThlZmM2MWM1NTFjZDcyYzJkYS4uNTdkZmNl
MDIwZjcxMzgzNDgyZTAwMzBiYmU4ZDc3MjhiNmJhNmVjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lvblNvdXAuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFn
ZVNlc3Npb25Tb3VwLmNwcApAQCAtMzcsNyArMzcsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBOZXR3b3JrU3RvcmFnZVNlc3Npb246Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbihzdGQ6OnVuaXF1
ZV9wdHI8U291cE5ldHdvcmtTZXNzaW9uPiBzZXNzaW9uKQotICAgIDogbV9zZXNzaW9uKFdURjo6
bW92ZShzZXNzaW9uKSkKKyAgICA6IG1fc2Vzc2lvbihXVEZNb3ZlKHNlc3Npb24pKQogewogfQog
CkBAIC03Nyw3ICs3Nyw3IEBAIFNvdXBOZXR3b3JrU2Vzc2lvbiYgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpzb3VwTmV0d29ya1Nlc3Npb24oKSBjb25zdAogCiB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbjo6c2V0U291cE5ldHdvcmtTZXNzaW9uKHN0ZDo6dW5pcXVlX3B0cjxTb3VwTmV0d29ya1Nl
c3Npb24+IHNlc3Npb24pCiB7Ci0gICAgbV9zZXNzaW9uID0gV1RGOjptb3ZlKHNlc3Npb24pOwor
ICAgIG1fc2Vzc2lvbiA9IFdURk1vdmUoc2Vzc2lvbik7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTG9jYWxlSUNVLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3RleHQvTG9jYWxlSUNVLmNwcAppbmRleCBhM2EyODE4NzgyMTliNGRiOTE2Y2Vh
NmI0ZmNjZTU0Y2FmM2ViNTI4Li40Nzg4ZjQyY2QxYWI2NjAzNmEzNGY3MWQwODNiNjZjZjc1MDdi
ZmM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0xvY2FsZUlDVS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9Mb2NhbGVJQ1UuY3BwCkBAIC0x
ODUsNyArMTg1LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxTdHJpbmc+PiBMb2NhbGVJQ1U6
OmNyZWF0ZUxhYmVsVmVjdG9yKGNvbnN0IFVEYXRlRm9ybWF0KgogICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPFN0cmluZz4+KCk7CiAgICAgICAgIGxhYmVscy0+YXBw
ZW5kKFN0cmluZzo6YWRvcHQoYnVmZmVyKSk7CiAgICAgfQotICAgIHJldHVybiBXVEY6Om1vdmUo
bGFiZWxzKTsKKyAgICByZXR1cm4gV1RGTW92ZShsYWJlbHMpOwogfQogI2VuZGlmCiAKQEAgLTE5
Niw3ICsxOTYsNyBAQCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxTdHJpbmc+PiBjcmVh
dGVGYWxsYmFja01vbnRoTGFiZWxzKCkKICAgICBsYWJlbHMtPnJlc2VydmVDYXBhY2l0eShXVEZf
QVJSQVlfTEVOR1RIKFdURjo6bW9udGhGdWxsTmFtZSkpOwogICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBXVEZfQVJSQVlfTEVOR1RIKFdURjo6bW9udGhGdWxsTmFtZSk7ICsraSkKICAgICAg
ICAgbGFiZWxzLT5hcHBlbmQoV1RGOjptb250aEZ1bGxOYW1lW2ldKTsKLSAgICByZXR1cm4gV1RG
Ojptb3ZlKGxhYmVscyk7CisgICAgcmV0dXJuIFdURk1vdmUobGFiZWxzKTsKIH0KIAogY29uc3Qg
VmVjdG9yPFN0cmluZz4mIExvY2FsZUlDVTo6bW9udGhMYWJlbHMoKQpAQCAtMjIwLDcgKzIyMCw3
IEBAIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFN0cmluZz4+IGNyZWF0ZUZhbGxiYWNr
QU1QTUxhYmVscygpCiAgICAgbGFiZWxzLT5yZXNlcnZlQ2FwYWNpdHkoMik7CiAgICAgbGFiZWxz
LT5hcHBlbmQoIkFNIik7CiAgICAgbGFiZWxzLT5hcHBlbmQoIlBNIik7Ci0gICAgcmV0dXJuIFdU
Rjo6bW92ZShsYWJlbHMpOworICAgIHJldHVybiBXVEZNb3ZlKGxhYmVscyk7CiB9CiAKIHZvaWQg
TG9jYWxlSUNVOjppbml0aWFsaXplRGF0ZVRpbWVGb3JtYXQoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL1dDRGF0YU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS93aW4vV0NEYXRhT2JqZWN0LmNwcAppbmRleCA5NDY5M2U0ZDAxMWMxMjkyNGMzOTcw
ZmVkZjg1ODlhNTk5YzAzNmMyLi5kYzFiNTI2YmZmOWQ0M2VhY2Q3MjhmN2FmOGE4ODI3NjU3NzI2
YjY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vV0NEYXRhT2JqZWN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vV0NEYXRhT2JqZWN0LmNwcApA
QCAtMjY0LDEzICsyNjQsMTMgQEAgU1RETUVUSE9ESU1QIFdDRGF0YU9iamVjdDo6U2V0RGF0YShG
T1JNQVRFVEMqIHBmb3JtYXRldGMsIFNUR01FRElVTSogcG1lZGl1bSwgQk8KICAgICBaZXJvTWVt
b3J5KHBTdGdNZWQuZ2V0KCksIHNpemVvZihTVEdNRURJVU0pKTsKIAogICAgICpmZXRjID0gKnBm
b3JtYXRldGM7Ci0gICAgbV9mb3JtYXRzLmFwcGVuZChXVEY6Om1vdmUoZmV0YykpOworICAgIG1f
Zm9ybWF0cy5hcHBlbmQoV1RGTW92ZShmZXRjKSk7CiAKICAgICBpZihmUmVsZWFzZSkKICAgICAg
ICAgKnBTdGdNZWQgPSAqcG1lZGl1bTsKICAgICBlbHNlCiAgICAgICAgIENvcHlNZWRpdW0ocFN0
Z01lZC5nZXQoKSwgcG1lZGl1bSwgcGZvcm1hdGV0Yyk7Ci0gICAgbV9tZWRpdW0uYXBwZW5kKFdU
Rjo6bW92ZShwU3RnTWVkKSk7CisgICAgbV9tZWRpdW0uYXBwZW5kKFdURk1vdmUocFN0Z01lZCkp
OwogCiAgICAgcmV0dXJuIFNfT0s7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbHVn
aW5zL0RPTU1pbWVUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvRE9NTWltZVR5cGUu
Y3BwCmluZGV4IDNlOGM2ZmU0MTIxM2JjMmYxYzM5OGIyMzUwZTVkODI5NTgzNGZhY2UuLjNiMjkw
MTY4OWFkZjBjYmJlNWU3MjUzNDEyNjRhZDhlOWJiMGFhZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsdWdpbnMvRE9NTWltZVR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsdWdp
bnMvRE9NTWltZVR5cGUuY3BwCkBAIC0zMSw3ICszMSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogRE9NTWltZVR5cGU6OkRPTU1pbWVUeXBlKFJlZlB0cjxQbHVnaW5EYXRhPiYmIHBsdWdpbkRh
dGEsIEZyYW1lKiBmcmFtZSwgdW5zaWduZWQgaW5kZXgpCiAgICAgOiBGcmFtZURlc3RydWN0aW9u
T2JzZXJ2ZXIoZnJhbWUpCi0gICAgLCBtX3BsdWdpbkRhdGEoV1RGOjptb3ZlKHBsdWdpbkRhdGEp
KQorICAgICwgbV9wbHVnaW5EYXRhKFdURk1vdmUocGx1Z2luRGF0YSkpCiB7CiAgICAgVmVjdG9y
PE1pbWVDbGFzc0luZm8+IG1pbWVzOwogICAgIFZlY3RvcjxzaXplX3Q+IG1pbWVQbHVnaW5JbmRp
Y2VzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9ET01NaW1lVHlwZS5oIGIv
U291cmNlL1dlYkNvcmUvcGx1Z2lucy9ET01NaW1lVHlwZS5oCmluZGV4IDY5Mzg0NzMxNjZiYzNi
ZGNkMmI0ZDUyYjE0MDdjOThjY2VjOTZhOWQuLjgzM2I2NGJhNmEzZmU5MjMwMmUyNjExMGQxZWVm
ZjVlYThjNzg0OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvRE9NTWltZVR5
cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL0RPTU1pbWVUeXBlLmgKQEAgLTMyLDcg
KzMyLDcgQEAgY2xhc3MgRE9NUGx1Z2luOwogCiBjbGFzcyBET01NaW1lVHlwZSA6IHB1YmxpYyBS
ZWZDb3VudGVkPERPTU1pbWVUeXBlPiwgcHVibGljIEZyYW1lRGVzdHJ1Y3Rpb25PYnNlcnZlciB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxET01NaW1lVHlwZT4gY3JlYXRlKFJlZlB0cjxQbHVn
aW5EYXRhPiYmIHBsdWdpbkRhdGEsIEZyYW1lKiBmcmFtZSwgdW5zaWduZWQgaW5kZXgpIHsgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgRE9NTWltZVR5cGUoV1RGOjptb3ZlKHBsdWdpbkRhdGEpLCBmcmFt
ZSwgaW5kZXgpKTsgfQorICAgIHN0YXRpYyBSZWY8RE9NTWltZVR5cGU+IGNyZWF0ZShSZWZQdHI8
UGx1Z2luRGF0YT4mJiBwbHVnaW5EYXRhLCBGcmFtZSogZnJhbWUsIHVuc2lnbmVkIGluZGV4KSB7
IHJldHVybiBhZG9wdFJlZigqbmV3IERPTU1pbWVUeXBlKFdURk1vdmUocGx1Z2luRGF0YSksIGZy
YW1lLCBpbmRleCkpOyB9CiAgICAgfkRPTU1pbWVUeXBlKCk7CiAKICAgICBTdHJpbmcgdHlwZSgp
IGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9ET01QbHVnaW4uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9ET01QbHVnaW4uY3BwCmluZGV4IGRhYTAwY2FiZGQz
Y2YwZmEzMzdhYTI5NDg2M2RkOGQ1ODUzNjZkZDguLjRkYjBkYjg1Y2M0ZjYyZjhiMzkxYTljZDY5
ZmYyNmQ0MTJiYjA4Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvRE9NUGx1
Z2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL0RPTVBsdWdpbi5jcHAKQEAgLTI4
LDcgKzI4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogRE9NUGx1Z2luOjpET01QbHVnaW4oUGx1
Z2luRGF0YSogcGx1Z2luRGF0YSwgRnJhbWUqIGZyYW1lLCBQbHVnaW5JbmZvIHBsdWdpbkluZm8p
CiAgICAgOiBGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXIoZnJhbWUpCiAgICAgLCBtX3BsdWdpbkRh
dGEocGx1Z2luRGF0YSkKLSAgICAsIG1fcGx1Z2luSW5mbyhXVEY6Om1vdmUocGx1Z2luSW5mbykp
CisgICAgLCBtX3BsdWdpbkluZm8oV1RGTW92ZShwbHVnaW5JbmZvKSkKIHsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9ET01QbHVnaW4uaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsdWdpbnMvRE9NUGx1Z2luLmgKaW5kZXggODYzZmFkM2VmZjllZTIwOTA4YzM5OTRkZTQ0Y2Fj
MjkzOWJkYTFhYS4uMzhlMTE2YWExYzczZjI3NjVhNTVkOGNkNjQ2OTlkOWY1Mzg4ZWI4OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9ET01QbHVnaW4uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbHVnaW5zL0RPTVBsdWdpbi5oCkBAIC0zMyw3ICszMyw3IEBAIGNsYXNzIFBsdWdp
bkRhdGE7CiAKIGNsYXNzIERPTVBsdWdpbiA6IHB1YmxpYyBTY3JpcHRXcmFwcGFibGUsIHB1Ymxp
YyBSZWZDb3VudGVkPERPTVBsdWdpbj4sIHB1YmxpYyBGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXIg
ewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8RE9NUGx1Z2luPiBjcmVhdGUoUGx1Z2luRGF0YSog
cGx1Z2luRGF0YSwgRnJhbWUqIGZyYW1lLCBQbHVnaW5JbmZvIHBsdWdpbkluZm8pIHsgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgRE9NUGx1Z2luKHBsdWdpbkRhdGEsIGZyYW1lLCBXVEY6Om1vdmUocGx1
Z2luSW5mbykpKTsgfQorICAgIHN0YXRpYyBSZWY8RE9NUGx1Z2luPiBjcmVhdGUoUGx1Z2luRGF0
YSogcGx1Z2luRGF0YSwgRnJhbWUqIGZyYW1lLCBQbHVnaW5JbmZvIHBsdWdpbkluZm8pIHsgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgRE9NUGx1Z2luKHBsdWdpbkRhdGEsIGZyYW1lLCBXVEZNb3ZlKHBs
dWdpbkluZm8pKSk7IH0KICAgICB+RE9NUGx1Z2luKCk7CiAKICAgICBTdHJpbmcgbmFtZSgpIGNv
bnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0YS5jcHAKaW5kZXggMzg4OTFiZjhlYmIx
NTQxZDJjNmM2YTUxNTNiM2Y0NTIzM2Q3NTI4Zi4uMmFmZjdiNWRjMzAzZjBmZTExNDIwMDhmMWMz
M2M1M2M0NjBhNzVjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5E
YXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRhdGEuY3BwCkBAIC02
Niw3ICs2Niw3IEBAIFZlY3RvcjxQbHVnaW5JbmZvPiBQbHVnaW5EYXRhOjpwdWJsaWNseVZpc2li
bGVQbHVnaW5zKCkgY29uc3QKICAgICBWZWN0b3I8UGx1Z2luSW5mbz4gcGx1Z2luczsKICAgICBm
b3IgKGF1dG8mJiBwbHVnaW4gOiBhbGxQbHVnaW5zKSB7CiAgICAgICAgIGlmIChzaG91bGRCZVB1
YmxpY2x5VmlzaWJsZShwbHVnaW4pKQotICAgICAgICAgICAgcGx1Z2lucy5hcHBlbmQoV1RGOjpt
b3ZlKHBsdWdpbikpOworICAgICAgICAgICAgcGx1Z2lucy5hcHBlbmQoV1RGTW92ZShwbHVnaW4p
KTsKICAgICB9CiAKICAgICBzdGQ6OnNvcnQocGx1Z2lucy5iZWdpbigpLCBwbHVnaW5zLmVuZCgp
LCBbXShjb25zdCBQbHVnaW5JbmZvJiBhLCBjb25zdCBQbHVnaW5JbmZvJiBiKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ2xpcFBhdGhPcGVyYXRpb24uaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9DbGlwUGF0aE9wZXJhdGlvbi5oCmluZGV4IGYxYzU5NWRkYjA3
YjRlMzExNGUzYmQxNGYzNzUzOTk2ZTA0MGZiMGMuLjFlODM4NmVhOTgzNTg3ODI0NzU4ZTNmZDY5
NTQ3YjNmOTlkNmRjZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DbGlw
UGF0aE9wZXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DbGlwUGF0aE9w
ZXJhdGlvbi5oCkBAIC05OCw3ICs5OCw3IEBAIGNsYXNzIFNoYXBlQ2xpcFBhdGhPcGVyYXRpb24g
ZmluYWwgOiBwdWJsaWMgQ2xpcFBhdGhPcGVyYXRpb24gewogcHVibGljOgogICAgIHN0YXRpYyBS
ZWY8U2hhcGVDbGlwUGF0aE9wZXJhdGlvbj4gY3JlYXRlKFJlZjxCYXNpY1NoYXBlPiYmIHNoYXBl
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhcGVDbGlwUGF0aE9wZXJh
dGlvbihXVEY6Om1vdmUoc2hhcGUpKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNo
YXBlQ2xpcFBhdGhPcGVyYXRpb24oV1RGTW92ZShzaGFwZSkpKTsKICAgICB9CiAKICAgICBjb25z
dCBCYXNpY1NoYXBlJiBiYXNpY1NoYXBlKCkgY29uc3QgeyByZXR1cm4gbV9zaGFwZTsgfQpAQCAt
MTI1LDcgKzEyNSw3IEBAIHByaXZhdGU6CiAKICAgICBleHBsaWNpdCBTaGFwZUNsaXBQYXRoT3Bl
cmF0aW9uKFJlZjxCYXNpY1NoYXBlPiYmIHNoYXBlKQogICAgICAgICA6IENsaXBQYXRoT3BlcmF0
aW9uKFNoYXBlKQotICAgICAgICAsIG1fc2hhcGUoV1RGOjptb3ZlKHNoYXBlKSkKKyAgICAgICAg
LCBtX3NoYXBlKFdURk1vdmUoc2hhcGUpKQogICAgICAgICAsIG1fcmVmZXJlbmNlQm94KEJveE1p
c3NpbmcpCiAgICAgewogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9GbG9hdGluZ09iamVjdHMuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0Zsb2F0aW5n
T2JqZWN0cy5jcHAKaW5kZXggN2EwYmY5ZWM2YmM3MzRjZmViOWJjOTBmMDM3NTE3N2EwN2YzOTQx
My4uMzA0ZjAwOTJmMzAwNDNhMWMyYzViYWQzZTc3Mzc0Y2NmYWU4ZTgxMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0Zsb2F0aW5nT2JqZWN0cy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0Zsb2F0aW5nT2JqZWN0cy5jcHAKQEAgLTI4Nyw3ICsyODcsNyBA
QCB2b2lkIEZsb2F0aW5nT2JqZWN0czo6bW92ZUFsbFRvRmxvYXRJbmZvTWFwKFJlbmRlcmVyVG9G
bG9hdEluZm9NYXAmIG1hcCkKICAgICAgICAgLy8gRklYTUU6IFRoZSBvbmx5IHJlYXNvbiBpdCBp
cyBzYWZlIHRvIG1vdmUgdGhlc2Ugb3V0IG9mIHRoZSBzZXQgaXMgdGhhdAogICAgICAgICAvLyB3
ZSBhcmUgYWJvdXQgdG8gY2xlYXIgaXQuIE90aGVyd2lzZSBpdCB3b3VsZCBicmVhayB0aGUgaGFz
aCB0YWJsZSBpbnZhcmlhbnQuCiAgICAgICAgIC8vIEEgY2xlYW4gd2F5IHRvIGRvIHRoaXMgd291
bGQgYmUgdG8gYWRkIGEgdGFrZUFsbCBmdW5jdGlvbiB0byBIYXNoU2V0LgotICAgICAgICBtYXAu
YWRkKCZyZW5kZXJlciwgV1RGOjptb3ZlKCppdCkpOworICAgICAgICBtYXAuYWRkKCZyZW5kZXJl
ciwgV1RGTW92ZSgqaXQpKTsKICAgICB9CiAgICAgY2xlYXIoKTsKIH0KQEAgLTM1MCw3ICszNTAs
NyBAQCBGbG9hdGluZ09iamVjdCogRmxvYXRpbmdPYmplY3RzOjphZGQoc3RkOjp1bmlxdWVfcHRy
PEZsb2F0aW5nT2JqZWN0PiBmbG9hdGluZ09iagogICAgIGluY3JlYXNlT2JqZWN0c0NvdW50KGZs
b2F0aW5nT2JqZWN0LT50eXBlKCkpOwogICAgIGlmIChmbG9hdGluZ09iamVjdC0+aXNQbGFjZWQo
KSkKICAgICAgICAgYWRkUGxhY2VkT2JqZWN0KGZsb2F0aW5nT2JqZWN0LmdldCgpKTsKLSAgICBy
ZXR1cm4gbV9zZXQuYWRkKFdURjo6bW92ZShmbG9hdGluZ09iamVjdCkpLml0ZXJhdG9yLT5nZXQo
KTsKKyAgICByZXR1cm4gbV9zZXQuYWRkKFdURk1vdmUoZmxvYXRpbmdPYmplY3QpKS5pdGVyYXRv
ci0+Z2V0KCk7CiB9CiAKIHZvaWQgRmxvYXRpbmdPYmplY3RzOjpyZW1vdmUoRmxvYXRpbmdPYmpl
Y3QqIGZsb2F0aW5nT2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0xheW91dFN0YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MYXlvdXRTdGF0ZS5j
cHAKaW5kZXggYTY1ZGQzNDI2MzI1NDVhNGUwZmQzMGRjYTdiZDkwYWYyNzc3NjIwMi4uOTY3N2M4
YzE2N2ZjNzljZThiYTg2OTc1OTFiMDAwZDViZTk1M2E3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0xheW91dFN0YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvTGF5b3V0U3RhdGUuY3BwCkBAIC0zNSw3ICszNSw3IEBACiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIExheW91dFN0YXRlOjpMYXlvdXRTdGF0ZShzdGQ6OnVuaXF1ZV9wdHI8TGF5b3V0U3Rh
dGU+IG5leHQsIFJlbmRlckJveCogcmVuZGVyZXIsIGNvbnN0IExheW91dFNpemUmIG9mZnNldCwg
TGF5b3V0VW5pdCBwYWdlTG9naWNhbEhlaWdodCwgYm9vbCBwYWdlTG9naWNhbEhlaWdodENoYW5n
ZWQpCi0gICAgOiBtX25leHQoV1RGOjptb3ZlKG5leHQpKQorICAgIDogbV9uZXh0KFdURk1vdmUo
bmV4dCkpCiAjaWZuZGVmIE5ERUJVRwogICAgICwgbV9yZW5kZXJlcihyZW5kZXJlcikKICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckF0dGFjaG1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckF0dGFjaG1lbnQuY3BwCmluZGV4
IDEyOWU4MTg3NzRhOTJiYTZjNzg5ODMwMzAzMTA1NjBiM2I2NDVkMGUuLjBlMDFhYjgxYWVkM2U4
ZmM2ZDI4Y2NkYjZjMDMyZmViNmJmNTM0NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJBdHRhY2htZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQXR0YWNobWVudC5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAogUmVuZGVyQXR0YWNobWVudDo6UmVu
ZGVyQXR0YWNobWVudChIVE1MQXR0YWNobWVudEVsZW1lbnQmIGVsZW1lbnQsIFJlZjxSZW5kZXJT
dHlsZT4mJiBzdHlsZSkKLSAgICA6IFJlbmRlclJlcGxhY2VkKGVsZW1lbnQsIFdURjo6bW92ZShz
dHlsZSksIExheW91dFNpemUoKSkKKyAgICA6IFJlbmRlclJlcGxhY2VkKGVsZW1lbnQsIFdURk1v
dmUoc3R5bGUpLCBMYXlvdXRTaXplKCkpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQmxvY2suY3BwCmluZGV4IDNmYzNkMjIzYTBmMTNhMmY4ZTUzYjhjYTJlODNhMjM5Nzk3
MmI2ZTcuLjE1ZDdmZjc4YzU1MWQ2OTg4MDViOTY5NGNkNjMwYzhhZDI4YzMzY2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcApAQCAtMTcxLDcgKzE3MSw3IEBAIHB1
YmxpYzoKIAogICAgICAgICBSZWY8T3ZlcmZsb3dFdmVudD4gb3ZlcmZsb3dFdmVudCA9IE92ZXJm
bG93RXZlbnQ6OmNyZWF0ZShob3Jpem9udGFsTGF5b3V0T3ZlcmZsb3dDaGFuZ2VkLCBoYXNIb3Jp
em9udGFsTGF5b3V0T3ZlcmZsb3csIHZlcnRpY2FsTGF5b3V0T3ZlcmZsb3dDaGFuZ2VkLCBoYXNW
ZXJ0aWNhbExheW91dE92ZXJmbG93KTsKICAgICAgICAgb3ZlcmZsb3dFdmVudC0+c2V0VGFyZ2V0
KG1fYmxvY2stPmVsZW1lbnQoKSk7Ci0gICAgICAgIG1fYmxvY2stPmRvY3VtZW50KCkuZW5xdWV1
ZU92ZXJmbG93RXZlbnQoV1RGOjptb3ZlKG92ZXJmbG93RXZlbnQpKTsKKyAgICAgICAgbV9ibG9j
ay0+ZG9jdW1lbnQoKS5lbnF1ZXVlT3ZlcmZsb3dFdmVudChXVEZNb3ZlKG92ZXJmbG93RXZlbnQp
KTsKICAgICB9CiAKIHByaXZhdGU6CkBAIC0xODIsMTIgKzE4MiwxMiBAQCBwcml2YXRlOgogfTsK
IAogUmVuZGVyQmxvY2s6OlJlbmRlckJsb2NrKEVsZW1lbnQmIGVsZW1lbnQsIFJlZjxSZW5kZXJT
dHlsZT4mJiBzdHlsZSwgQmFzZVR5cGVGbGFncyBiYXNlVHlwZUZsYWdzKQotICAgIDogUmVuZGVy
Qm94KGVsZW1lbnQsIFdURjo6bW92ZShzdHlsZSksIGJhc2VUeXBlRmxhZ3MgfCBSZW5kZXJCbG9j
a0ZsYWcpCisgICAgOiBSZW5kZXJCb3goZWxlbWVudCwgV1RGTW92ZShzdHlsZSksIGJhc2VUeXBl
RmxhZ3MgfCBSZW5kZXJCbG9ja0ZsYWcpCiB7CiB9CiAKIFJlbmRlckJsb2NrOjpSZW5kZXJCbG9j
ayhEb2N1bWVudCYgZG9jdW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSwgQmFzZVR5cGVG
bGFncyBiYXNlVHlwZUZsYWdzKQotICAgIDogUmVuZGVyQm94KGRvY3VtZW50LCBXVEY6Om1vdmUo
c3R5bGUpLCBiYXNlVHlwZUZsYWdzIHwgUmVuZGVyQmxvY2tGbGFnKQorICAgIDogUmVuZGVyQm94
KGRvY3VtZW50LCBXVEZNb3ZlKHN0eWxlKSwgYmFzZVR5cGVGbGFncyB8IFJlbmRlckJsb2NrRmxh
ZykKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJs
b2NrRmxvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNw
cAppbmRleCAyODY2NDljZjQwNDY3YTQxOWI0NTBhOWZmOTA0MTY3MmQ3MTdjMGU5Li5lMzViZGFi
NjFhZDMxOTMyYmJkMTg4YzgyY2NiM2QzZDNhNmQ4YWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcApAQCAtOTUsNyArOTUsNyBAQCBSZW5kZXJCbG9j
a0Zsb3c6Ok1hcmdpbkluZm86Ok1hcmdpbkluZm8oY29uc3QgUmVuZGVyQmxvY2tGbG93JiBibG9j
aywgTGF5b3V0VW5pdAogfQogCiBSZW5kZXJCbG9ja0Zsb3c6OlJlbmRlckJsb2NrRmxvdyhFbGVt
ZW50JiBlbGVtZW50LCBSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCi0gICAgOiBSZW5kZXJCbG9j
ayhlbGVtZW50LCBXVEY6Om1vdmUoc3R5bGUpLCBSZW5kZXJCbG9ja0Zsb3dGbGFnKQorICAgIDog
UmVuZGVyQmxvY2soZWxlbWVudCwgV1RGTW92ZShzdHlsZSksIFJlbmRlckJsb2NrRmxvd0ZsYWcp
CiAjaWYgRU5BQkxFKElPU19URVhUX0FVVE9TSVpJTkcpCiAgICAgLCBtX3dpZHRoRm9yVGV4dEF1
dG9zaXppbmcoLTEpCiAgICAgLCBtX2xpbmVDb3VudEZvclRleHRBdXRvc2l6aW5nKE5PVF9TRVQp
CkBAIC0xMDUsNyArMTA1LDcgQEAgUmVuZGVyQmxvY2tGbG93OjpSZW5kZXJCbG9ja0Zsb3coRWxl
bWVudCYgZWxlbWVudCwgUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQogfQogCiBSZW5kZXJCbG9j
a0Zsb3c6OlJlbmRlckJsb2NrRmxvdyhEb2N1bWVudCYgZG9jdW1lbnQsIFJlZjxSZW5kZXJTdHls
ZT4mJiBzdHlsZSkKLSAgICA6IFJlbmRlckJsb2NrKGRvY3VtZW50LCBXVEY6Om1vdmUoc3R5bGUp
LCBSZW5kZXJCbG9ja0Zsb3dGbGFnKQorICAgIDogUmVuZGVyQmxvY2soZG9jdW1lbnQsIFdURk1v
dmUoc3R5bGUpLCBSZW5kZXJCbG9ja0Zsb3dGbGFnKQogI2lmIEVOQUJMRShJT1NfVEVYVF9BVVRP
U0laSU5HKQogICAgICwgbV93aWR0aEZvclRleHRBdXRvc2l6aW5nKC0xKQogICAgICwgbV9saW5l
Q291bnRGb3JUZXh0QXV0b3NpemluZyhOT1RfU0VUKQpAQCAtMTk4MCw3ICsxOTgwLDcgQEAgdm9p
ZCBSZW5kZXJCbG9ja0Zsb3c6OmxheW91dExpbmVHcmlkQm94KCkKICAgICBWZXJ0aWNhbFBvc2l0
aW9uQ2FjaGUgdmVydGljYWxQb3NpdGlvbkNhY2hlOwogICAgIGxpbmVHcmlkQm94LT5hbGlnbkJv
eGVzSW5CbG9ja0RpcmVjdGlvbihsb2dpY2FsSGVpZ2h0KCksIHRleHRCb3hEYXRhTWFwLCB2ZXJ0
aWNhbFBvc2l0aW9uQ2FjaGUpOwogICAgIAotICAgIHNldExpbmVHcmlkQm94KFdURjo6bW92ZShs
aW5lR3JpZEJveCkpOworICAgIHNldExpbmVHcmlkQm94KFdURk1vdmUobGluZUdyaWRCb3gpKTsK
IAogICAgIC8vIEZJWE1FOiBJZiBhbnkgb2YgdGhlIGNoYXJhY3RlcmlzdGljcyBvZiB0aGUgYm94
IGNoYW5nZSBjb21wYXJlZCB0byB0aGUgb2xkIG9uZSwgdGhlbiB3ZSBuZWVkIHRvIGRvIGEgZGVl
cCBkaXJ0eWluZwogICAgIC8vIChzaW1pbGFyIHRvIHdoYXQgaGFwcGVucyB3aGVuIHRoZSBwYWdl
IGhlaWdodCBjaGFuZ2VzKS4gSWRlYWxseSwgdGhvdWdoLCB3ZSBvbmx5IGRvIHRoaXMgaWYgc29t
ZW9uZSBpcyBhY3R1YWxseSBzbmFwcGluZwpAQCAtMjI4NCw3ICsyMjg0LDcgQEAgRmxvYXRpbmdP
YmplY3QqIFJlbmRlckJsb2NrRmxvdzo6aW5zZXJ0RmxvYXRpbmdPYmplY3QoUmVuZGVyQm94JiBm
bG9hdEJveCkKIAogICAgIHNldExvZ2ljYWxXaWR0aEZvckZsb2F0KCpmbG9hdGluZ09iamVjdCwg
bG9naWNhbFdpZHRoRm9yQ2hpbGQoZmxvYXRCb3gpICsgbWFyZ2luU3RhcnRGb3JDaGlsZChmbG9h
dEJveCkgKyBtYXJnaW5FbmRGb3JDaGlsZChmbG9hdEJveCkpOwogCi0gICAgcmV0dXJuIG1fZmxv
YXRpbmdPYmplY3RzLT5hZGQoV1RGOjptb3ZlKGZsb2F0aW5nT2JqZWN0KSk7CisgICAgcmV0dXJu
IG1fZmxvYXRpbmdPYmplY3RzLT5hZGQoV1RGTW92ZShmbG9hdGluZ09iamVjdCkpOwogfQogCiB2
b2lkIFJlbmRlckJsb2NrRmxvdzo6cmVtb3ZlRmxvYXRpbmdPYmplY3QoUmVuZGVyQm94JiBmbG9h
dEJveCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zs
b3cuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuaAppbmRleCA0
MDk5ZTM4MjEwYWVkNTAwYmZhZTgyNWMyYTUxZjY2ZjczZjQwMDE4Li5iODYwZDc4MTJmZTRmYmY4
MTdhZWU1MDgyYzhkYWNkMDRlYjg1ZWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQmxvY2tGbG93LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJsb2NrRmxvdy5oCkBAIC0yNzMsNyArMjczLDcgQEAgcHVibGljOgogICAgIFJvb3RJbmxp
bmVCb3gqIGxpbmVHcmlkQm94KCkgY29uc3QgeyByZXR1cm4gaGFzUmFyZUJsb2NrRmxvd0RhdGEo
KSA/IHJhcmVCbG9ja0Zsb3dEYXRhKCktPm1fbGluZUdyaWRCb3guZ2V0KCkgOiBudWxscHRyOyB9
CiAgICAgdm9pZCBzZXRMaW5lR3JpZEJveChzdGQ6OnVuaXF1ZV9wdHI8Um9vdElubGluZUJveD4g
Ym94KQogICAgIHsKLSAgICAgICAgZW5zdXJlUmFyZUJsb2NrRmxvd0RhdGEoKS5tX2xpbmVHcmlk
Qm94ID0gV1RGOjptb3ZlKGJveCk7CisgICAgICAgIGVuc3VyZVJhcmVCbG9ja0Zsb3dEYXRhKCku
bV9saW5lR3JpZEJveCA9IFdURk1vdmUoYm94KTsKICAgICB9CiAgICAgdm9pZCBsYXlvdXRMaW5l
R3JpZEJveCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
QmxvY2tMaW5lTGF5b3V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9j
a0xpbmVMYXlvdXQuY3BwCmluZGV4IDk1M2E4Y2E0ZmQ4NWRjZGE3MDE4YWM1MTJhOTBlMTQ1ZDAz
Njg4Y2QuLjI3NTk5ZmRmZGE5ZGMzOTUxNWRkYWU1NTM2ZjA2YzNhMjM0NDkzZWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwCkBA
IC0xMjcsNyArMTI3LDcgQEAgUm9vdElubGluZUJveCogUmVuZGVyQmxvY2tGbG93OjpjcmVhdGVB
bmRBcHBlbmRSb290SW5saW5lQm94KCkKIHsKICAgICBhdXRvIG5ld1Jvb3RCb3ggPSBjcmVhdGVS
b290SW5saW5lQm94KCk7CiAgICAgUm9vdElubGluZUJveCogcm9vdEJveCA9IG5ld1Jvb3RCb3gu
Z2V0KCk7Ci0gICAgbV9saW5lQm94ZXMuYXBwZW5kTGluZUJveChXVEY6Om1vdmUobmV3Um9vdEJv
eCkpOworICAgIG1fbGluZUJveGVzLmFwcGVuZExpbmVCb3goV1RGTW92ZShuZXdSb290Qm94KSk7
CiAKICAgICBpZiAoVU5MSUtFTFkoQVhPYmplY3RDYWNoZTo6YWNjZXNzaWJpbGl0eUVuYWJsZWQo
KSkgJiYgZmlyc3RSb290Qm94KCkgPT0gcm9vdEJveCkgewogICAgICAgICBpZiAoQVhPYmplY3RD
YWNoZSogY2FjaGUgPSBkb2N1bWVudCgpLmV4aXN0aW5nQVhPYmplY3RDYWNoZSgpKQpAQCAtMTA0
Miw3ICsxMDQyLDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGNvbnN0cnVjdEJpZGlSdW5zRm9yU2Vn
bWVudChJbmxpbmVCaWRpUmVzb2x2ZXImIHRvcFJlc29sdmVyLAogCiAgICAgd2hpbGUgKCF0b3BS
ZXNvbHZlci5pc29sYXRlZFJ1bnMoKS5pc0VtcHR5KCkpIHsKICAgICAgICAgLy8gSXQgZG9lcyBu
b3QgbWF0dGVyIHdoaWNoIG9yZGVyIHdlIHJlc29sdmUgdGhlIHJ1bnMgYXMgbG9uZyBhcyB3ZSBy
ZXNvbHZlIHRoZW0gYWxsLgotICAgICAgICBhdXRvIGlzb2xhdGVkUnVuID0gV1RGOjptb3ZlKHRv
cFJlc29sdmVyLmlzb2xhdGVkUnVucygpLmxhc3QoKSk7CisgICAgICAgIGF1dG8gaXNvbGF0ZWRS
dW4gPSBXVEZNb3ZlKHRvcFJlc29sdmVyLmlzb2xhdGVkUnVucygpLmxhc3QoKSk7CiAgICAgICAg
IHRvcFJlc29sdmVyLmlzb2xhdGVkUnVucygpLnJlbW92ZUxhc3QoKTsKICAgICAgICAgY3VycmVu
dFJvb3QgPSAmaXNvbGF0ZWRSdW4ucm9vdDsKIApAQCAtMTA4OSwxMCArMTA4OSwxMCBAQCBzdGF0
aWMgaW5saW5lIHZvaWQgY29uc3RydWN0QmlkaVJ1bnNGb3JTZWdtZW50KElubGluZUJpZGlSZXNv
bHZlciYgdG9wUmVzb2x2ZXIsCiAgICAgICAgIC8vIElmIHdlIGVuY291bnRlcmVkIGFueSBuZXN0
ZWQgaXNvbGF0ZSBydW5zLCBqdXN0IG1vdmUgdGhlbQogICAgICAgICAvLyB0byB0aGUgdG9wIHJl
c29sdmVyJ3MgbGlzdCBmb3IgbGF0ZXIgcHJvY2Vzc2luZy4KICAgICAgICAgd2hpbGUgKCFpc29s
YXRlZFJlc29sdmVyLmlzb2xhdGVkUnVucygpLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgYXV0
byBydW5XaXRoQ29udGV4dCA9IFdURjo6bW92ZShpc29sYXRlZFJlc29sdmVyLmlzb2xhdGVkUnVu
cygpLmxhc3QoKSk7CisgICAgICAgICAgICBhdXRvIHJ1bldpdGhDb250ZXh0ID0gV1RGTW92ZShp
c29sYXRlZFJlc29sdmVyLmlzb2xhdGVkUnVucygpLmxhc3QoKSk7CiAgICAgICAgICAgICBpc29s
YXRlZFJlc29sdmVyLmlzb2xhdGVkUnVucygpLnJlbW92ZUxhc3QoKTsKICAgICAgICAgICAgIHRv
cFJlc29sdmVyLnNldE1pZHBvaW50Rm9ySXNvbGF0ZWRSdW4ocnVuV2l0aENvbnRleHQucnVuVG9S
ZXBsYWNlLCBpc29sYXRlZFJlc29sdmVyLm1pZHBvaW50Rm9ySXNvbGF0ZWRSdW4ocnVuV2l0aENv
bnRleHQucnVuVG9SZXBsYWNlKSk7Ci0gICAgICAgICAgICB0b3BSZXNvbHZlci5pc29sYXRlZFJ1
bnMoKS5hcHBlbmQoV1RGOjptb3ZlKHJ1bldpdGhDb250ZXh0KSk7CisgICAgICAgICAgICB0b3BS
ZXNvbHZlci5pc29sYXRlZFJ1bnMoKS5hcHBlbmQoV1RGTW92ZShydW5XaXRoQ29udGV4dCkpOwog
ICAgICAgICB9CiAgICAgfQogfQpAQCAtMTUxNSw3ICsxNTE1LDcgQEAgdm9pZCBSZW5kZXJCbG9j
a0Zsb3c6OmxpbmtUb0VuZExpbmVJZk5lZWRlZChMaW5lTGF5b3V0U3RhdGUmIGxheW91dFN0YXRl
KQogICAgICAgICAgICAgTGF5b3V0VW5pdCBib3R0b21MYXlvdXRPdmVyZmxvdyA9IGxhc3RSb290
Qm94KCktPmxvZ2ljYWxCb3R0b21MYXlvdXRPdmVyZmxvdygpOwogICAgICAgICAgICAgYXV0byBu
ZXdMaW5lQm94ID0gc3RkOjptYWtlX3VuaXF1ZTxUcmFpbGluZ0Zsb2F0c1Jvb3RJbmxpbmVCb3g+
KCp0aGlzKTsKICAgICAgICAgICAgIGF1dG8gdHJhaWxpbmdGbG9hdHNMaW5lQm94ID0gbmV3TGlu
ZUJveC5nZXQoKTsKLSAgICAgICAgICAgIG1fbGluZUJveGVzLmFwcGVuZExpbmVCb3goV1RGOjpt
b3ZlKG5ld0xpbmVCb3gpKTsKKyAgICAgICAgICAgIG1fbGluZUJveGVzLmFwcGVuZExpbmVCb3go
V1RGTW92ZShuZXdMaW5lQm94KSk7CiAgICAgICAgICAgICB0cmFpbGluZ0Zsb2F0c0xpbmVCb3gt
PnNldENvbnN0cnVjdGVkKCk7CiAgICAgICAgICAgICBHbHlwaE92ZXJmbG93QW5kRmFsbGJhY2tG
b250c01hcCB0ZXh0Qm94RGF0YU1hcDsKICAgICAgICAgICAgIFZlcnRpY2FsUG9zaXRpb25DYWNo
ZSB2ZXJ0aWNhbFBvc2l0aW9uQ2FjaGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3gu
Y3BwCmluZGV4IDY4NzJjZTBhMTg5MjA2ZWE1ZWVmYTdiNGUzOWNlNGNkMDJlMzliYjEuLmQwMjNj
YTU2NTdiYmU3NTY0MjQ0NzRkMzczMDg1NjM1NWVjN2FkZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCb3guY3BwCkBAIC0xMTgsNyArMTE4LDcgQEAgc3RhdGljIGJvb2wgc2tpcEJv
ZHlCYWNrZ3JvdW5kKGNvbnN0IFJlbmRlckJveCogYm9keUVsZW1lbnRSZW5kZXJlcikKIH0KIAog
UmVuZGVyQm94OjpSZW5kZXJCb3goRWxlbWVudCYgZWxlbWVudCwgUmVmPFJlbmRlclN0eWxlPiYm
IHN0eWxlLCBCYXNlVHlwZUZsYWdzIGJhc2VUeXBlRmxhZ3MpCi0gICAgOiBSZW5kZXJCb3hNb2Rl
bE9iamVjdChlbGVtZW50LCBXVEY6Om1vdmUoc3R5bGUpLCBiYXNlVHlwZUZsYWdzKQorICAgIDog
UmVuZGVyQm94TW9kZWxPYmplY3QoZWxlbWVudCwgV1RGTW92ZShzdHlsZSksIGJhc2VUeXBlRmxh
Z3MpCiAgICAgLCBtX21pblByZWZlcnJlZExvZ2ljYWxXaWR0aCgtMSkKICAgICAsIG1fbWF4UHJl
ZmVycmVkTG9naWNhbFdpZHRoKC0xKQogICAgICwgbV9pbmxpbmVCb3hXcmFwcGVyKG51bGxwdHIp
CkBAIC0xMjcsNyArMTI3LDcgQEAgUmVuZGVyQm94OjpSZW5kZXJCb3goRWxlbWVudCYgZWxlbWVu
dCwgUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlLCBCYXNlVHlwZUZsYWdzIGIKIH0KIAogUmVuZGVy
Qm94OjpSZW5kZXJCb3goRG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8UmVuZGVyU3R5bGU+JiYgc3R5
bGUsIEJhc2VUeXBlRmxhZ3MgYmFzZVR5cGVGbGFncykKLSAgICA6IFJlbmRlckJveE1vZGVsT2Jq
ZWN0KGRvY3VtZW50LCBXVEY6Om1vdmUoc3R5bGUpLCBiYXNlVHlwZUZsYWdzKQorICAgIDogUmVu
ZGVyQm94TW9kZWxPYmplY3QoZG9jdW1lbnQsIFdURk1vdmUoc3R5bGUpLCBiYXNlVHlwZUZsYWdz
KQogICAgICwgbV9taW5QcmVmZXJyZWRMb2dpY2FsV2lkdGgoLTEpCiAgICAgLCBtX21heFByZWZl
cnJlZExvZ2ljYWxXaWR0aCgtMSkKICAgICAsIG1faW5saW5lQm94V3JhcHBlcihudWxscHRyKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAK
aW5kZXggMDQwYTAyNTQzMDg4OTZiZDUyNjJmZDNmMjE4OTI4NzI3M2Y5YTVhNS4uMTZiN2E2NDU2
MGZjNTE4NDJkZGJlNTQ2YmVkMjdjZGU0NTJlZDBmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCkBAIC0xNjcsMTIgKzE2NywxMiBA
QCBib29sIFJlbmRlckJveE1vZGVsT2JqZWN0OjpzaG91bGRQYWludEF0TG93UXVhbGl0eShHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIEltYQogfQogCiBSZW5kZXJCb3hNb2RlbE9iamVjdDo6UmVu
ZGVyQm94TW9kZWxPYmplY3QoRWxlbWVudCYgZWxlbWVudCwgUmVmPFJlbmRlclN0eWxlPiYmIHN0
eWxlLCBCYXNlVHlwZUZsYWdzIGJhc2VUeXBlRmxhZ3MpCi0gICAgOiBSZW5kZXJMYXllck1vZGVs
T2JqZWN0KGVsZW1lbnQsIFdURjo6bW92ZShzdHlsZSksIGJhc2VUeXBlRmxhZ3MgfCBSZW5kZXJC
b3hNb2RlbE9iamVjdEZsYWcpCisgICAgOiBSZW5kZXJMYXllck1vZGVsT2JqZWN0KGVsZW1lbnQs
IFdURk1vdmUoc3R5bGUpLCBiYXNlVHlwZUZsYWdzIHwgUmVuZGVyQm94TW9kZWxPYmplY3RGbGFn
KQogewogfQogCiBSZW5kZXJCb3hNb2RlbE9iamVjdDo6UmVuZGVyQm94TW9kZWxPYmplY3QoRG9j
dW1lbnQmIGRvY3VtZW50LCBSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUsIEJhc2VUeXBlRmxhZ3Mg
YmFzZVR5cGVGbGFncykKLSAgICA6IFJlbmRlckxheWVyTW9kZWxPYmplY3QoZG9jdW1lbnQsIFdU
Rjo6bW92ZShzdHlsZSksIGJhc2VUeXBlRmxhZ3MgfCBSZW5kZXJCb3hNb2RlbE9iamVjdEZsYWcp
CisgICAgOiBSZW5kZXJMYXllck1vZGVsT2JqZWN0KGRvY3VtZW50LCBXVEZNb3ZlKHN0eWxlKSwg
YmFzZVR5cGVGbGFncyB8IFJlbmRlckJveE1vZGVsT2JqZWN0RmxhZykKIHsKIH0KIApAQCAtODQw
LDcgKzg0MCw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50RmlsbExheWVyRXh0
ZW5kZWQoY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvCiAgICAgfQogCiAgICAgaWYgKG1h
c2tJbWFnZSAmJiBiZ0xheWVyLT5jbGlwKCkgPT0gVGV4dEZpbGxCb3gpIHsKLSAgICAgICAgY29u
dGV4dC5kcmF3Q29uc3VtaW5nSW1hZ2VCdWZmZXIoV1RGOjptb3ZlKG1hc2tJbWFnZSksIG1hc2tS
ZWN0LCBDb21wb3NpdGVEZXN0aW5hdGlvbkluKTsKKyAgICAgICAgY29udGV4dC5kcmF3Q29uc3Vt
aW5nSW1hZ2VCdWZmZXIoV1RGTW92ZShtYXNrSW1hZ2UpLCBtYXNrUmVjdCwgQ29tcG9zaXRlRGVz
dGluYXRpb25Jbik7CiAgICAgICAgIGNvbnRleHQuZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKTsKICAg
ICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQnV0dG9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCdXR0b24uY3BwCmluZGV4IGIz
NTMxMGJkZmY5NGFmYzFiNjhlYWJhMGY3NjJiMjVhZmZjY2ZkNjcuLjM3MWYyNWIxM2E1ZGEwMDJl
NzRjM2Y4YjRjMWZjYWUzOGQ2YWUwY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCdXR0b24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCdXR0b24uY3BwCkBAIC0zOCw3ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHVzaW5n
IG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKIFJlbmRlckJ1dHRvbjo6UmVuZGVyQnV0dG9uKEhUTUxG
b3JtQ29udHJvbEVsZW1lbnQmIGVsZW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkKLSAg
ICA6IFJlbmRlckZsZXhpYmxlQm94KGVsZW1lbnQsIFdURjo6bW92ZShzdHlsZSkpCisgICAgOiBS
ZW5kZXJGbGV4aWJsZUJveChlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSkKICAgICAsIG1fYnV0dG9u
VGV4dCgwKQogICAgICwgbV9pbm5lcigwKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmNwcAppbmRleCAzZThjNDk2
NjcyYWU4MTBmZWI0NmY3Y2FlODBjY2Y0ZjkyYzA4MzlhLi5kOTNiM2VkM2IwY2E0N2MwYjdjMjZm
MzIyZGFlMGE5ZmM5ZDM4MTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmNwcApAQCAtMTE4LDcgKzExOCw3IEBA
IHByaXZhdGU6CiB9OwogCiBSZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3g6OlJlbmRlckRlcHJl
Y2F0ZWRGbGV4aWJsZUJveChFbGVtZW50JiBlbGVtZW50LCBSZWY8UmVuZGVyU3R5bGU+JiYgc3R5
bGUpCi0gICAgOiBSZW5kZXJCbG9jayhlbGVtZW50LCBXVEY6Om1vdmUoc3R5bGUpLCAwKQorICAg
IDogUmVuZGVyQmxvY2soZWxlbWVudCwgV1RGTW92ZShzdHlsZSksIDApCiB7CiAgICAgc2V0Q2hp
bGRyZW5JbmxpbmUoZmFsc2UpOyAvLyBBbGwgb2Ygb3VyIGNoaWxkcmVuIG11c3QgYmUgYmxvY2st
bGV2ZWwKICAgICBtX3N0cmV0Y2hpbmdDaGlsZHJlbiA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRldGFpbHNNYXJrZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckRldGFpbHNNYXJrZXIuY3BwCmluZGV4IDVjNjZiNzc2YzY5
YjlkMzM2NjM4NmFhNWI3NTU4NjkyNjE3MWE5NmMuLjVlN2Q1ZTQwNDhkNzFjZmQwZDk3ZjA4YmYy
NDc0NzQyMGRkYzU5YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJEZXRhaWxzTWFya2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
RGV0YWlsc01hcmtlci5jcHAKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
dXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAogUmVuZGVyRGV0YWlsc01hcmtlcjo6UmVuZGVy
RGV0YWlsc01hcmtlcihEZXRhaWxzTWFya2VyQ29udHJvbCYgZWxlbWVudCwgUmVmPFJlbmRlclN0
eWxlPiYmIHN0eWxlKQotICAgIDogUmVuZGVyQmxvY2tGbG93KGVsZW1lbnQsIFdURjo6bW92ZShz
dHlsZSkpCisgICAgOiBSZW5kZXJCbG9ja0Zsb3coZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpCiB7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcAppbmRleCA3
MDU3NGI2ZmE0ZjgyNmUzYWZjMjNhYzE3MjI4YzRjOTc1NmNmYTlhLi5hMGFlYmU4OThhMjAxZTVm
OWZkNWMyMWYwZjMzZmYxMjE1M2M0ZTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckVsZW1lbnQuY3BwCkBAIC05OSwxNyArOTksMTcgQEAgaW5saW5lIFJlbmRlckVsZW1lbnQ6
OlJlbmRlckVsZW1lbnQoQ29udGFpbmVyTm9kZSYgZWxlbWVudE9yRG9jdW1lbnQsIFJlZjxSZW5k
ZXIKICAgICAsIG1fcmVuZGVyQmxvY2tGbG93TGluZUxheW91dFBhdGgoUmVuZGVyQmxvY2tGbG93
OjpVbmRldGVybWluZWRQYXRoKQogICAgICwgbV9maXJzdENoaWxkKG51bGxwdHIpCiAgICAgLCBt
X2xhc3RDaGlsZChudWxscHRyKQotICAgICwgbV9zdHlsZShXVEY6Om1vdmUoc3R5bGUpKQorICAg
ICwgbV9zdHlsZShXVEZNb3ZlKHN0eWxlKSkKIHsKIH0KIAogUmVuZGVyRWxlbWVudDo6UmVuZGVy
RWxlbWVudChFbGVtZW50JiBlbGVtZW50LCBSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUsIEJhc2VU
eXBlRmxhZ3MgYmFzZVR5cGVGbGFncykKLSAgICA6IFJlbmRlckVsZW1lbnQoc3RhdGljX2Nhc3Q8
Q29udGFpbmVyTm9kZSY+KGVsZW1lbnQpLCBXVEY6Om1vdmUoc3R5bGUpLCBiYXNlVHlwZUZsYWdz
KQorICAgIDogUmVuZGVyRWxlbWVudChzdGF0aWNfY2FzdDxDb250YWluZXJOb2RlJj4oZWxlbWVu
dCksIFdURk1vdmUoc3R5bGUpLCBiYXNlVHlwZUZsYWdzKQogewogfQogCiBSZW5kZXJFbGVtZW50
OjpSZW5kZXJFbGVtZW50KERvY3VtZW50JiBkb2N1bWVudCwgUmVmPFJlbmRlclN0eWxlPiYmIHN0
eWxlLCBCYXNlVHlwZUZsYWdzIGJhc2VUeXBlRmxhZ3MpCi0gICAgOiBSZW5kZXJFbGVtZW50KHN0
YXRpY19jYXN0PENvbnRhaW5lck5vZGUmPihkb2N1bWVudCksIFdURjo6bW92ZShzdHlsZSksIGJh
c2VUeXBlRmxhZ3MpCisgICAgOiBSZW5kZXJFbGVtZW50KHN0YXRpY19jYXN0PENvbnRhaW5lck5v
ZGUmPihkb2N1bWVudCksIFdURk1vdmUoc3R5bGUpLCBiYXNlVHlwZUZsYWdzKQogewogfQogCkBA
IC0xNTMsNTAgKzE1Myw1MCBAQCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gUmVuZGVyRWxlbWVu
dDo6Y3JlYXRlRm9yKEVsZW1lbnQmIGVsZW1lbnQsIFJlZjxSZW5kZXJTdAogICAgIGNvbnN0IENv
bnRlbnREYXRhKiBjb250ZW50RGF0YSA9IHN0eWxlLmdldCgpLmNvbnRlbnREYXRhKCk7CiAgICAg
aWYgKGNvbnRlbnREYXRhICYmICFjb250ZW50RGF0YS0+bmV4dCgpICYmIGlzPEltYWdlQ29udGVu
dERhdGE+KCpjb250ZW50RGF0YSkgJiYgIWVsZW1lbnQuaXNQc2V1ZG9FbGVtZW50KCkpIHsKICAg
ICAgICAgYXV0byYgc3R5bGVJbWFnZSA9IGRvd25jYXN0PEltYWdlQ29udGVudERhdGE+KCpjb250
ZW50RGF0YSkuaW1hZ2UoKTsKLSAgICAgICAgYXV0byBpbWFnZSA9IGNyZWF0ZVJlbmRlcmVyPFJl
bmRlckltYWdlPihlbGVtZW50LCBXVEY6Om1vdmUoc3R5bGUpLCBjb25zdF9jYXN0PFN0eWxlSW1h
Z2UqPigmc3R5bGVJbWFnZSkpOworICAgICAgICBhdXRvIGltYWdlID0gY3JlYXRlUmVuZGVyZXI8
UmVuZGVySW1hZ2U+KGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpLCBjb25zdF9jYXN0PFN0eWxlSW1h
Z2UqPigmc3R5bGVJbWFnZSkpOwogICAgICAgICBpbWFnZS0+c2V0SXNHZW5lcmF0ZWRDb250ZW50
KCk7Ci0gICAgICAgIHJldHVybiBXVEY6Om1vdmUoaW1hZ2UpOworICAgICAgICByZXR1cm4gV1RG
TW92ZShpbWFnZSk7CiAgICAgfQogCiAgICAgc3dpdGNoIChzdHlsZS5nZXQoKS5kaXNwbGF5KCkp
IHsKICAgICBjYXNlIE5PTkU6CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGNhc2UgSU5M
SU5FOgotICAgICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVySW5saW5lPihlbGVtZW50
LCBXVEY6Om1vdmUoc3R5bGUpKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRl
cklubGluZT4oZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpOwogICAgIGNhc2UgQkxPQ0s6CiAgICAg
Y2FzZSBJTkxJTkVfQkxPQ0s6CiAgICAgY2FzZSBDT01QQUNUOgotICAgICAgICByZXR1cm4gY3Jl
YXRlUmVuZGVyZXI8UmVuZGVyQmxvY2tGbG93PihlbGVtZW50LCBXVEY6Om1vdmUoc3R5bGUpKTsK
KyAgICAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlckJsb2NrRmxvdz4oZWxlbWVudCwg
V1RGTW92ZShzdHlsZSkpOwogICAgIGNhc2UgTElTVF9JVEVNOgotICAgICAgICByZXR1cm4gY3Jl
YXRlUmVuZGVyZXI8UmVuZGVyTGlzdEl0ZW0+KGVsZW1lbnQsIFdURjo6bW92ZShzdHlsZSkpOwor
ICAgICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyTGlzdEl0ZW0+KGVsZW1lbnQsIFdU
Rk1vdmUoc3R5bGUpKTsKICAgICBjYXNlIFRBQkxFOgogICAgIGNhc2UgSU5MSU5FX1RBQkxFOgot
ICAgICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyVGFibGU+KGVsZW1lbnQsIFdURjo6
bW92ZShzdHlsZSkpOworICAgICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyVGFibGU+
KGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKTsKICAgICBjYXNlIFRBQkxFX1JPV19HUk9VUDoKICAg
ICBjYXNlIFRBQkxFX0hFQURFUl9HUk9VUDoKICAgICBjYXNlIFRBQkxFX0ZPT1RFUl9HUk9VUDoK
LSAgICAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlclRhYmxlU2VjdGlvbj4oZWxlbWVu
dCwgV1RGOjptb3ZlKHN0eWxlKSk7CisgICAgICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5k
ZXJUYWJsZVNlY3Rpb24+KGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKTsKICAgICBjYXNlIFRBQkxF
X1JPVzoKLSAgICAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlclRhYmxlUm93PihlbGVt
ZW50LCBXVEY6Om1vdmUoc3R5bGUpKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJl
bmRlclRhYmxlUm93PihlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSk7CiAgICAgY2FzZSBUQUJMRV9D
T0xVTU5fR1JPVVA6CiAgICAgY2FzZSBUQUJMRV9DT0xVTU46Ci0gICAgICAgIHJldHVybiBjcmVh
dGVSZW5kZXJlcjxSZW5kZXJUYWJsZUNvbD4oZWxlbWVudCwgV1RGOjptb3ZlKHN0eWxlKSk7Cisg
ICAgICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJUYWJsZUNvbD4oZWxlbWVudCwgV1RG
TW92ZShzdHlsZSkpOwogICAgIGNhc2UgVEFCTEVfQ0VMTDoKLSAgICAgICAgcmV0dXJuIGNyZWF0
ZVJlbmRlcmVyPFJlbmRlclRhYmxlQ2VsbD4oZWxlbWVudCwgV1RGOjptb3ZlKHN0eWxlKSk7Cisg
ICAgICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJUYWJsZUNlbGw+KGVsZW1lbnQsIFdU
Rk1vdmUoc3R5bGUpKTsKICAgICBjYXNlIFRBQkxFX0NBUFRJT046Ci0gICAgICAgIHJldHVybiBj
cmVhdGVSZW5kZXJlcjxSZW5kZXJUYWJsZUNhcHRpb24+KGVsZW1lbnQsIFdURjo6bW92ZShzdHls
ZSkpOworICAgICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyVGFibGVDYXB0aW9uPihl
bGVtZW50LCBXVEZNb3ZlKHN0eWxlKSk7CiAgICAgY2FzZSBCT1g6CiAgICAgY2FzZSBJTkxJTkVf
Qk9YOgotICAgICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyRGVwcmVjYXRlZEZsZXhp
YmxlQm94PihlbGVtZW50LCBXVEY6Om1vdmUoc3R5bGUpKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0
ZVJlbmRlcmVyPFJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveD4oZWxlbWVudCwgV1RGTW92ZShz
dHlsZSkpOwogICAgIGNhc2UgRkxFWDoKICAgICBjYXNlIElOTElORV9GTEVYOgogICAgIGNhc2Ug
V0VCS0lUX0ZMRVg6CiAgICAgY2FzZSBXRUJLSVRfSU5MSU5FX0ZMRVg6Ci0gICAgICAgIHJldHVy
biBjcmVhdGVSZW5kZXJlcjxSZW5kZXJGbGV4aWJsZUJveD4oZWxlbWVudCwgV1RGOjptb3ZlKHN0
eWxlKSk7CisgICAgICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJGbGV4aWJsZUJveD4o
ZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpOwogI2lmIEVOQUJMRShDU1NfR1JJRF9MQVlPVVQpCiAg
ICAgY2FzZSBHUklEOgogICAgIGNhc2UgSU5MSU5FX0dSSUQ6Ci0gICAgICAgIHJldHVybiBjcmVh
dGVSZW5kZXJlcjxSZW5kZXJHcmlkPihlbGVtZW50LCBXVEY6Om1vdmUoc3R5bGUpKTsKKyAgICAg
ICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlckdyaWQ+KGVsZW1lbnQsIFdURk1vdmUoc3R5
bGUpKTsKICNlbmRpZgogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTQ0MCw3
ICs0NDAsNyBAQCB2b2lkIFJlbmRlckVsZW1lbnQ6OnNldFN0eWxlKFJlZjxSZW5kZXJTdHlsZT4m
JiBzdHlsZSwgU3R5bGVEaWZmZXJlbmNlIG1pbmltYWxTdAogCiAgICAgc3R5bGVXaWxsQ2hhbmdl
KGRpZmYsIHN0eWxlLmdldCgpKTsKIAotICAgIFJlZjxSZW5kZXJTdHlsZT4gb2xkU3R5bGUobV9z
dHlsZS5yZXBsYWNlKFdURjo6bW92ZShzdHlsZSkpKTsKKyAgICBSZWY8UmVuZGVyU3R5bGU+IG9s
ZFN0eWxlKG1fc3R5bGUucmVwbGFjZShXVEZNb3ZlKHN0eWxlKSkpOwogCiAgICAgdXBkYXRlRmls
bEltYWdlcyhvbGRTdHlsZS5nZXQoKS5iYWNrZ3JvdW5kTGF5ZXJzKCksIG1fc3R5bGUtPmJhY2tn
cm91bmRMYXllcnMoKSk7CiAgICAgdXBkYXRlRmlsbEltYWdlcyhvbGRTdHlsZS5nZXQoKS5tYXNr
TGF5ZXJzKCksIG1fc3R5bGUtPm1hc2tMYXllcnMoKSk7CkBAIC04MjAsNyArODIwLDcgQEAgdm9p
ZCBSZW5kZXJFbGVtZW50Ojpwcm9wYWdhdGVTdHlsZVRvQW5vbnltb3VzQ2hpbGRyZW4oU3R5bGVQ
cm9wYWdhdGlvblR5cGUgcHJvcGEKICAgICAgICAgaWYgKGVsZW1lbnRDaGlsZC5pc0luRmxvd1Bv
c2l0aW9uZWQoKSAmJiBkb3duY2FzdDxSZW5kZXJCbG9jaz4oZWxlbWVudENoaWxkKS5pc0Fub255
bW91c0Jsb2NrQ29udGludWF0aW9uKCkpCiAgICAgICAgICAgICBuZXdTdHlsZS5nZXQoKS5zZXRQ
b3NpdGlvbihlbGVtZW50Q2hpbGQuc3R5bGUoKS5wb3NpdGlvbigpKTsKIAotICAgICAgICBlbGVt
ZW50Q2hpbGQuc2V0U3R5bGUoV1RGOjptb3ZlKG5ld1N0eWxlKSk7CisgICAgICAgIGVsZW1lbnRD
aGlsZC5zZXRTdHlsZShXVEZNb3ZlKG5ld1N0eWxlKSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuaAppbmRleCA2ZmQyOWE3ZmIwMTlhZmZkNjE3ZmFi
MWUyZTNiMGExYjY1NTM0NTc0Li5kYWI1OWQ5NWNjMzc5YjVkY2Q5ZWJhZjQ3ODJiMDNkYWZhNTU2
Y2E5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmgKQEAgLTE0Myw3
ICsxNDMsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBVcGRhdGVzIG9ubHkgdGhlIGxvY2FsIHN0eWxl
IHB0ciBvZiB0aGUgb2JqZWN0LiBEb2VzIG5vdCB1cGRhdGUgdGhlIHN0YXRlIG9mIHRoZSBvYmpl
Y3QsCiAgICAgLy8gYW5kIHNvIG9ubHkgc2hvdWxkIGJlIGNhbGxlZCB3aGVuIHRoZSBzdHlsZSBp
cyBrbm93biBub3QgdG8gaGF2ZSBjaGFuZ2VkIChvciBmcm9tIHNldFN0eWxlKS4KLSAgICB2b2lk
IHNldFN0eWxlSW50ZXJuYWwoUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKSB7IG1fc3R5bGUgPSBX
VEY6Om1vdmUoc3R5bGUpOyB9CisgICAgdm9pZCBzZXRTdHlsZUludGVybmFsKFJlZjxSZW5kZXJT
dHlsZT4mJiBzdHlsZSkgeyBtX3N0eWxlID0gV1RGTW92ZShzdHlsZSk7IH0KIAogICAgIC8vIFJl
cGFpbnQgb25seSBpZiBvdXIgb2xkIGJvdW5kcyBhbmQgbmV3IGJvdW5kcyBhcmUgZGlmZmVyZW50
LiBUaGUgY2FsbGVyIG1heSBwYXNzIGluIG5ld0JvdW5kcyBhbmQgbmV3T3V0bGluZUJveCBpZiB0
aGV5IGFyZSBrbm93bi4KICAgICBib29sIHJlcGFpbnRBZnRlckxheW91dElmTmVlZGVkKGNvbnN0
IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGNvbnN0IExheW91dFJl
Y3QmIG9sZEJvdW5kcywgY29uc3QgTGF5b3V0UmVjdCYgb2xkT3V0bGluZUJveCwgY29uc3QgTGF5
b3V0UmVjdCogbmV3Qm91bmRzUHRyID0gbnVsbHB0ciwgY29uc3QgTGF5b3V0UmVjdCogbmV3T3V0
bGluZUJveFB0ciA9IG51bGxwdHIpOwpAQCAtMzQ5LDExICszNDksMTEgQEAgcHJpdmF0ZToKIAog
aW5saW5lIHZvaWQgUmVuZGVyRWxlbWVudDo6c2V0QW5pbWF0YWJsZVN0eWxlKFJlZjxSZW5kZXJT
dHlsZT4mJiBzdHlsZSwgU3R5bGVEaWZmZXJlbmNlIG1pbmltYWxTdHlsZURpZmZlcmVuY2UpCiB7
Ci0gICAgUmVmPFJlbmRlclN0eWxlPiBhbmltYXRlZFN0eWxlID0gV1RGOjptb3ZlKHN0eWxlKTsK
KyAgICBSZWY8UmVuZGVyU3R5bGU+IGFuaW1hdGVkU3R5bGUgPSBXVEZNb3ZlKHN0eWxlKTsKICAg
ICBpZiAoYW5pbWF0aW9uKCkudXBkYXRlQW5pbWF0aW9ucygqdGhpcywgYW5pbWF0ZWRTdHlsZSwg
YW5pbWF0ZWRTdHlsZSkpCiAgICAgICAgIG1pbmltYWxTdHlsZURpZmZlcmVuY2UgPSBzdGQ6Om1h
eChtaW5pbWFsU3R5bGVEaWZmZXJlbmNlLCBTdHlsZURpZmZlcmVuY2VSZWNvbXBvc2l0ZUxheWVy
KTsKICAgICAKLSAgICBzZXRTdHlsZShXVEY6Om1vdmUoYW5pbWF0ZWRTdHlsZSksIG1pbmltYWxT
dHlsZURpZmZlcmVuY2UpOworICAgIHNldFN0eWxlKFdURk1vdmUoYW5pbWF0ZWRTdHlsZSksIG1p
bmltYWxTdHlsZURpZmZlcmVuY2UpOwogfQogCiBpbmxpbmUgdm9pZCBSZW5kZXJFbGVtZW50Ojpz
ZXRBbmNlc3RvckxpbmVCb3hEaXJ0eShib29sIGYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcAppbmRleCAxMzZlMTBiNGEyOWIxZGVlN2Rl
YTMyNzM1NjYyNDk1M2MxMGEwZDIxLi5kZTkxMDE0NDkwM2E1YzBjMzQzODRmMjllOTgzZjVkYTQ2
Yjg1YjkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRk
ZWRPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbWJlZGRl
ZE9iamVjdC5jcHAKQEAgLTk3LDcgKzk3LDcgQEAgc3RhdGljIGNvbnN0IENvbG9yJiB1bmF2YWls
YWJsZVBsdWdpbkJvcmRlckNvbG9yKCkKIH0KIAogUmVuZGVyRW1iZWRkZWRPYmplY3Q6OlJlbmRl
ckVtYmVkZGVkT2JqZWN0KEhUTUxGcmFtZU93bmVyRWxlbWVudCYgZWxlbWVudCwgUmVmPFJlbmRl
clN0eWxlPiYmIHN0eWxlKQotICAgIDogUmVuZGVyV2lkZ2V0KGVsZW1lbnQsIFdURjo6bW92ZShz
dHlsZSkpCisgICAgOiBSZW5kZXJXaWRnZXQoZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpCiAgICAg
LCBtX2lzUGx1Z2luVW5hdmFpbGFibGUoZmFsc2UpCiAgICAgLCBtX2lzVW5hdmFpbGFibGVQbHVn
aW5JbmRpY2F0b3JIaWRkZW4oZmFsc2UpCiAgICAgLCBtX3VuYXZhaWxhYmxlUGx1Z2luSW5kaWNh
dG9ySXNQcmVzc2VkKGZhbHNlKQpAQCAtMTE0LDcgKzExNCw3IEBAIFJlbmRlckVtYmVkZGVkT2Jq
ZWN0Ojp+UmVuZGVyRW1iZWRkZWRPYmplY3QoKQogCiBSZW5kZXJQdHI8UmVuZGVyRW1iZWRkZWRP
YmplY3Q+IFJlbmRlckVtYmVkZGVkT2JqZWN0OjpjcmVhdGVGb3JBcHBsZXQoSFRNTEFwcGxldEVs
ZW1lbnQmIGFwcGxldCwgUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQogewotICAgIGF1dG8gcmVu
ZGVyZXIgPSBjcmVhdGVSZW5kZXJlcjxSZW5kZXJFbWJlZGRlZE9iamVjdD4oYXBwbGV0LCBXVEY6
Om1vdmUoc3R5bGUpKTsKKyAgICBhdXRvIHJlbmRlcmVyID0gY3JlYXRlUmVuZGVyZXI8UmVuZGVy
RW1iZWRkZWRPYmplY3Q+KGFwcGxldCwgV1RGTW92ZShzdHlsZSkpOwogICAgIHJlbmRlcmVyLT5z
ZXRJbmxpbmUodHJ1ZSk7CiAgICAgcmV0dXJuIHJlbmRlcmVyOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpZWxkc2V0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJGaWVsZHNldC5jcHAKaW5kZXggMDk1MmZkYTM0Yjg4Mjg5MTRjMzlm
YWM0YjI4OTk0M2JiMjA0ODk3NS4uNjlkY2EzNmZiNzlmYjk1M2U2MTUyZjg2MWNlNzRmODgyYmFi
YTc0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpZWxkc2V0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmllbGRzZXQuY3BwCkBA
IC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHVzaW5nIG5hbWVzcGFjZSBIVE1M
TmFtZXM7CiAKIFJlbmRlckZpZWxkc2V0OjpSZW5kZXJGaWVsZHNldChIVE1MRmllbGRTZXRFbGVt
ZW50JiBlbGVtZW50LCBSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCi0gICAgOiBSZW5kZXJCbG9j
a0Zsb3coZWxlbWVudCwgV1RGOjptb3ZlKHN0eWxlKSkKKyAgICA6IFJlbmRlckJsb2NrRmxvdyhl
bGVtZW50LCBXVEZNb3ZlKHN0eWxlKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5jcHAKaW5kZXggZmQxMTNjNGY4ZTIy
MDkzYTEwY2E2NWFmZDI0YjhlMjdhN2YzOGFmNy4uYjE5MmFmNmE4OTBmOThkNTM3M2M4NGRkZTA0
NzBmZjUzNzg1ODllZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckZpbGVVcGxvYWRDb250cm9sLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyRmlsZVVwbG9hZENvbnRyb2wuY3BwCkBAIC01OSw3ICs1OSw3IEBAIGNvbnN0IGludCBkZWZh
dWx0V2lkdGhOdW1DaGFycyA9IDM4OwogY29uc3QgaW50IGJ1dHRvblNoYWRvd0hlaWdodCA9IDI7
CiAKIFJlbmRlckZpbGVVcGxvYWRDb250cm9sOjpSZW5kZXJGaWxlVXBsb2FkQ29udHJvbChIVE1M
SW5wdXRFbGVtZW50JiBpbnB1dCwgUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQotICAgIDogUmVu
ZGVyQmxvY2tGbG93KGlucHV0LCBXVEY6Om1vdmUoc3R5bGUpKQorICAgIDogUmVuZGVyQmxvY2tG
bG93KGlucHV0LCBXVEZNb3ZlKHN0eWxlKSkKICAgICAsIG1fY2FuUmVjZWl2ZURyb3BwZWRGaWxl
cyhpbnB1dC5jYW5SZWNlaXZlRHJvcHBlZEZpbGVzKCkpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcAppbmRleCBhYzM1ZTk0Nzc5NjI1N2Fl
ODQzNjMyNmVkNWJmYWJmNGY2YmU1MmVhLi45OGU5ZjJkMDY4ZjIzZWYyN2VmNzA4MzEwMzk3ZWE0
OWIxNDFjNDUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxl
eGlibGVCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJs
ZUJveC5jcHAKQEAgLTY3LDcgKzY3LDcgQEAgc3RydWN0IFJlbmRlckZsZXhpYmxlQm94OjpWaW9s
YXRpb24gewogCiAKIFJlbmRlckZsZXhpYmxlQm94OjpSZW5kZXJGbGV4aWJsZUJveChFbGVtZW50
JiBlbGVtZW50LCBSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCi0gICAgOiBSZW5kZXJCbG9jayhl
bGVtZW50LCBXVEY6Om1vdmUoc3R5bGUpLCAwKQorICAgIDogUmVuZGVyQmxvY2soZWxlbWVudCwg
V1RGTW92ZShzdHlsZSksIDApCiAgICAgLCBtX29yZGVySXRlcmF0b3IoKnRoaXMpCiAgICAgLCBt
X251bWJlck9mSW5GbG93Q2hpbGRyZW5PbkZpcnN0TGluZSgtMSkKIHsKQEAgLTc1LDcgKzc1LDcg
QEAgUmVuZGVyRmxleGlibGVCb3g6OlJlbmRlckZsZXhpYmxlQm94KEVsZW1lbnQmIGVsZW1lbnQs
IFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkKIH0KIAogUmVuZGVyRmxleGlibGVCb3g6OlJlbmRl
ckZsZXhpYmxlQm94KERvY3VtZW50JiBkb2N1bWVudCwgUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxl
KQotICAgIDogUmVuZGVyQmxvY2soZG9jdW1lbnQsIFdURjo6bW92ZShzdHlsZSksIDApCisgICAg
OiBSZW5kZXJCbG9jayhkb2N1bWVudCwgV1RGTW92ZShzdHlsZSksIDApCiAgICAgLCBtX29yZGVy
SXRlcmF0b3IoKnRoaXMpCiAgICAgLCBtX251bWJlck9mSW5GbG93Q2hpbGRyZW5PbkZpcnN0TGlu
ZSgtMSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbG93
VGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmNw
cAppbmRleCBjMDRhMGFlNzY3NTE4YjRhZTdjNDQ5NDYyOTAzN2MyMjM3NTYwMGM0Li5hOTc1OTU1
ZDY4ODgyMTk5NjQ1MDRjOTVmODEyZDE0OWVlMzBkZjFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuY3BwCkBAIC01Myw3ICs1Myw3IEBACiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIFJlbmRlckZsb3dUaHJlYWQ6OlJlbmRlckZsb3dUaHJlYWQoRG9jdW1l
bnQmIGRvY3VtZW50LCBSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCi0gICAgOiBSZW5kZXJCbG9j
a0Zsb3coZG9jdW1lbnQsIFdURjo6bW92ZShzdHlsZSkpCisgICAgOiBSZW5kZXJCbG9ja0Zsb3co
ZG9jdW1lbnQsIFdURk1vdmUoc3R5bGUpKQogICAgICwgbV9wcmV2aW91c1JlZ2lvbkNvdW50KDAp
CiAgICAgLCBtX2F1dG9Mb2dpY2FsSGVpZ2h0UmVnaW9uc0NvdW50KDApCiAgICAgLCBtX2N1cnJl
bnRSZWdpb25NYWludGFpbmVyKG51bGxwdHIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckZyYW1lLmNwcAppbmRleCAzMDQ0ODU4ZDVlNDRlY2YxNGVkZjNkM2NkZmI3OGRkYTFlZDZiMjYw
Li5kZGU0YmMxZWYxNjU0YzEzNzk2ZDliNTI3ZmEyZjU3NTk5NGM1MTA4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJGcmFtZS5jcHAKQEAgLTI5LDcgKzI5LDcgQEAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogUmVuZGVyRnJhbWU6OlJlbmRlckZyYW1lKEhUTUxGcmFtZUVsZW1lbnQm
IGZyYW1lLCBSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCi0gICAgOiBSZW5kZXJGcmFtZUJhc2Uo
ZnJhbWUsIFdURjo6bW92ZShzdHlsZSkpCisgICAgOiBSZW5kZXJGcmFtZUJhc2UoZnJhbWUsIFdU
Rk1vdmUoc3R5bGUpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyRnJhbWVCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJG
cmFtZUJhc2UuY3BwCmluZGV4IDc1NWJlMDYxZjZiYjNlZTUzMDQyYTE4NDQ5ZjJjMGI2YTVkMGEz
OGYuLjA4OWIwN2E2YzQ3ZWYwY2IxYTdlNTFmM2Y3Yjc4YmFjZmRhOTlkMzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFtZUJhc2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFtZUJhc2UuY3BwCkBAIC0zNCw3ICszNCw3IEBA
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFJlbmRlckZyYW1lQmFzZTo6UmVuZGVyRnJhbWVCYXNl
KEhUTUxGcmFtZUVsZW1lbnRCYXNlJiBlbGVtZW50LCBSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUp
Ci0gICAgOiBSZW5kZXJXaWRnZXQoZWxlbWVudCwgV1RGOjptb3ZlKHN0eWxlKSkKKyAgICA6IFJl
bmRlcldpZGdldChlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lU2V0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJGcmFtZVNldC5jcHAKaW5kZXggNjNjYTZkYWRmNzhmMTgxYWZj
NDY2OTk4MjRiYTcwMmUzMGM3MzU0NC4uNzk5YjEyNTA3OWI0ZjM2NDk4Y2NjMTIyNWYzMTY0MjI0
ZDk2ZWY2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1l
U2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVTZXQuY3Bw
CkBAIC00Niw3ICs0Niw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFJlbmRlckZyYW1lU2V0
OjpSZW5kZXJGcmFtZVNldChIVE1MRnJhbWVTZXRFbGVtZW50JiBmcmFtZVNldCwgUmVmPFJlbmRl
clN0eWxlPiYmIHN0eWxlKQotICAgIDogUmVuZGVyQm94KGZyYW1lU2V0LCBXVEY6Om1vdmUoc3R5
bGUpLCAwKQorICAgIDogUmVuZGVyQm94KGZyYW1lU2V0LCBXVEZNb3ZlKHN0eWxlKSwgMCkKICAg
ICAsIG1faXNSZXNpemluZyhmYWxzZSkKICAgICAsIG1faXNDaGlsZFJlc2l6aW5nKGZhbHNlKQog
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZ1bGxTY3JlZW4u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZ1bGxTY3JlZW4uY3BwCmluZGV4
IDYzMjgwNWVmZjhhOWNjZDAyZTM5NjJkODNkNzUwNzI2OWNmYjdiNDcuLjk2NDZiMTI1NDgwZDE1
YjMzMGFiN2E5YmQ5ZmUyYWYxOWNiYTVkY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJGdWxsU2NyZWVuLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyRnVsbFNjcmVlbi5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogY2xhc3MgUmVuZGVyRnVsbFNjcmVlblBsYWNlaG9sZGVyIGZpbmFsIDogcHVibGljIFJl
bmRlckJsb2NrRmxvdyB7CiBwdWJsaWM6CiAgICAgUmVuZGVyRnVsbFNjcmVlblBsYWNlaG9sZGVy
KFJlbmRlckZ1bGxTY3JlZW4mIG93bmVyLCBSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCi0gICAg
ICAgIDogUmVuZGVyQmxvY2tGbG93KG93bmVyLmRvY3VtZW50KCksIFdURjo6bW92ZShzdHlsZSkp
CisgICAgICAgIDogUmVuZGVyQmxvY2tGbG93KG93bmVyLmRvY3VtZW50KCksIFdURk1vdmUoc3R5
bGUpKQogICAgICAgICAsIG1fb3duZXIob3duZXIpIAogICAgIHsKICAgICB9CkBAIC01NSw3ICs1
NSw3IEBAIHZvaWQgUmVuZGVyRnVsbFNjcmVlblBsYWNlaG9sZGVyOjp3aWxsQmVEZXN0cm95ZWQo
KQogfQogCiBSZW5kZXJGdWxsU2NyZWVuOjpSZW5kZXJGdWxsU2NyZWVuKERvY3VtZW50JiBkb2N1
bWVudCwgUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQotICAgIDogUmVuZGVyRmxleGlibGVCb3go
ZG9jdW1lbnQsIFdURjo6bW92ZShzdHlsZSkpCisgICAgOiBSZW5kZXJGbGV4aWJsZUJveChkb2N1
bWVudCwgV1RGTW92ZShzdHlsZSkpCiAgICAgLCBtX3BsYWNlaG9sZGVyKDApCiB7CiAgICAgc2V0
UmVwbGFjZWQoZmFsc2UpOyAKQEAgLTE5MywxMSArMTkzLDExIEBAIHZvaWQgUmVuZGVyRnVsbFNj
cmVlbjo6Y3JlYXRlUGxhY2Vob2xkZXIoUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlLCBjb25zdCBM
YXlvdXRSCiAgICAgICAgIHN0eWxlLmdldCgpLnNldEhlaWdodChMZW5ndGgoZnJhbWVSZWN0Lmhl
aWdodCgpLCBGaXhlZCkpOwogCiAgICAgaWYgKG1fcGxhY2Vob2xkZXIpIHsKLSAgICAgICAgbV9w
bGFjZWhvbGRlci0+c2V0U3R5bGUoV1RGOjptb3ZlKHN0eWxlKSk7CisgICAgICAgIG1fcGxhY2Vo
b2xkZXItPnNldFN0eWxlKFdURk1vdmUoc3R5bGUpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIG1fcGxhY2Vob2xkZXIgPSBuZXcgUmVuZGVyRnVsbFNjcmVlblBsYWNlaG9sZGVyKCp0
aGlzLCBXVEY6Om1vdmUoc3R5bGUpKTsKKyAgICBtX3BsYWNlaG9sZGVyID0gbmV3IFJlbmRlckZ1
bGxTY3JlZW5QbGFjZWhvbGRlcigqdGhpcywgV1RGTW92ZShzdHlsZSkpOwogICAgIG1fcGxhY2Vo
b2xkZXItPmluaXRpYWxpemVTdHlsZSgpOwogICAgIGlmIChwYXJlbnQoKSkgewogICAgICAgICBw
YXJlbnQoKS0+YWRkQ2hpbGQobV9wbGFjZWhvbGRlciwgdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyR3JpZC5jcHAKaW5kZXggNTM4ZjI1NjQ2YTJjNTY0ODQyZTNiZmU3MmVkZWI5
ZDI4MWI4OWMxNy4uOGM0NjhlZDc4Zjk5ZWMxODU2YjI0ZWNiZjcwYzgxOTVhMmIyNmNkYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcApAQCAtMjQyLDcgKzI0Miw3IEBA
IHZvaWQgUmVuZGVyR3JpZDo6R3JpZFNpemluZ0RhdGE6OnNldEZyZWVTcGFjZUZvckRpcmVjdGlv
bihHcmlkVHJhY2tTaXppbmdEaXJlY3RpCiB9CiAKIFJlbmRlckdyaWQ6OlJlbmRlckdyaWQoRWxl
bWVudCYgZWxlbWVudCwgUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQotICAgIDogUmVuZGVyQmxv
Y2soZWxlbWVudCwgV1RGOjptb3ZlKHN0eWxlKSwgMCkKKyAgICA6IFJlbmRlckJsb2NrKGVsZW1l
bnQsIFdURk1vdmUoc3R5bGUpLCAwKQogICAgICwgbV9vcmRlckl0ZXJhdG9yKCp0aGlzKQogewog
ICAgIC8vIEFsbCBvZiBvdXIgY2hpbGRyZW4gbXVzdCBiZSBibG9jayBsZXZlbC4KQEAgLTY1MCw3
ICs2NTAsNyBAQCBkb3VibGUgUmVuZGVyR3JpZDo6Y29tcHV0ZUZsZXhGYWN0b3JVbml0U2l6ZShj
b25zdCBWZWN0b3I8R3JpZFRyYWNrPiYgdHJhY2tzLCBHcgogICAgICAgICB9CiAgICAgfQogICAg
IGlmICghdmFsaWRGbGV4RmFjdG9yVW5pdCkKLSAgICAgICAgcmV0dXJuIGNvbXB1dGVGbGV4RmFj
dG9yVW5pdFNpemUodHJhY2tzLCBkaXJlY3Rpb24sIGZsZXhGYWN0b3JTdW0sIGxlZnRPdmVyU3Bh
Y2UsIGZsZXhpYmxlVHJhY2tzSW5kZXhlcywgV1RGOjptb3ZlKHRyYWNrc1RvVHJlYXRBc0luZmxl
eGlibGUpKTsKKyAgICAgICAgcmV0dXJuIGNvbXB1dGVGbGV4RmFjdG9yVW5pdFNpemUodHJhY2tz
LCBkaXJlY3Rpb24sIGZsZXhGYWN0b3JTdW0sIGxlZnRPdmVyU3BhY2UsIGZsZXhpYmxlVHJhY2tz
SW5kZXhlcywgV1RGTW92ZSh0cmFja3NUb1RyZWF0QXNJbmZsZXhpYmxlKSk7CiAgICAgcmV0dXJu
IGh5cG90aGV0aWNhbEZhY3RvclVuaXRTaXplOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVySFRNTENhbnZhcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVySFRNTENhbnZhcy5jcHAKaW5kZXggYzY3M2Q4MGVhZDk4MzY0N2FmZWI5MzFm
NDNkNzRkNGQwZmU1YjdlMC4uZWVlNzQ0MDQzZDlhNDlhMDQxYTIyNzBmMTNlZTk0OTUzOTFhZGVl
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckhUTUxDYW52YXMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJIVE1MQ2FudmFzLmNwcApA
QCAtNDIsNyArNDIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB1c2luZyBuYW1lc3BhY2UgSFRN
TE5hbWVzOwogCiBSZW5kZXJIVE1MQ2FudmFzOjpSZW5kZXJIVE1MQ2FudmFzKEhUTUxDYW52YXNF
bGVtZW50JiBlbGVtZW50LCBSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCi0gICAgOiBSZW5kZXJS
ZXBsYWNlZChlbGVtZW50LCBXVEY6Om1vdmUoc3R5bGUpLCBlbGVtZW50LnNpemUoKSkKKyAgICA6
IFJlbmRlclJlcGxhY2VkKGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpLCBlbGVtZW50LnNpemUoKSkK
IHsKICAgICAvLyBBY3R1YWwgc2l6ZSBpcyBub3Qga25vd24geWV0LCByZXBvcnQgdGhlIGRlZmF1
bHQgaW50cmluc2ljIHNpemUuCiAgICAgdmlldygpLmZyYW1lVmlldygpLmluY3JlbWVudFZpc3Vh
bGx5Tm9uRW1wdHlQaXhlbENvdW50KHJvdW5kZWRJbnRTaXplKGludHJpbnNpY1NpemUoKSkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklGcmFtZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySUZyYW1lLmNwcAppbmRleCAzYTM5YmI1YTk1
MzZmOTI4YjFjNDBlNjY5YjcyNGM2MDJiNzE1NjFjLi44OTUxMmJhMmFmMzhhZWFmZTM5NGJlZDZi
MTZjZThiMjg4MjYxNzdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVySUZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySUZyYW1l
LmNwcApAQCAtNDAsNyArNDAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB1c2luZyBuYW1lc3Bh
Y2UgSFRNTE5hbWVzOwogICAgIAogUmVuZGVySUZyYW1lOjpSZW5kZXJJRnJhbWUoSFRNTElGcmFt
ZUVsZW1lbnQmIGVsZW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkKLSAgICA6IFJlbmRl
ckZyYW1lQmFzZShlbGVtZW50LCBXVEY6Om1vdmUoc3R5bGUpKQorICAgIDogUmVuZGVyRnJhbWVC
YXNlKGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckltYWdlLmNwcAppbmRleCAzYmQ3YzE3NTQ1NzAzMzNkNzQyZmJmMjNiN2U0ZWE1
ODE0NDU3YmNhLi5jMDY4ZWFiMzc2OWQzNzI2NjM2YWZhMjVlOTQ1ZGZlZDA0MTc1MThmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKQEAgLTExOSw3ICsxMTksNyBA
QCB2b2lkIFJlbmRlckltYWdlOjpjb2xsZWN0U2VsZWN0aW9uUmVjdHMoVmVjdG9yPFNlbGVjdGlv
blJlY3Q+JiByZWN0cywgdW5zaWduZWQsCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCiBS
ZW5kZXJJbWFnZTo6UmVuZGVySW1hZ2UoRWxlbWVudCYgZWxlbWVudCwgUmVmPFJlbmRlclN0eWxl
PiYmIHN0eWxlLCBTdHlsZUltYWdlKiBzdHlsZUltYWdlLCBjb25zdCBmbG9hdCBpbWFnZURldmlj
ZVBpeGVsUmF0aW8pCi0gICAgOiBSZW5kZXJSZXBsYWNlZChlbGVtZW50LCBXVEY6Om1vdmUoc3R5
bGUpLCBJbnRTaXplKCkpCisgICAgOiBSZW5kZXJSZXBsYWNlZChlbGVtZW50LCBXVEZNb3ZlKHN0
eWxlKSwgSW50U2l6ZSgpKQogICAgICwgbV9pbWFnZVJlc291cmNlKHN0eWxlSW1hZ2UgPyBzdGQ6
Om1ha2VfdW5pcXVlPFJlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlPigqc3R5bGVJbWFnZSkg
OiBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlckltYWdlUmVzb3VyY2U+KCkpCiAgICAgLCBtX25lZWRz
VG9TZXRTaXplRm9yQWx0VGV4dChmYWxzZSkKICAgICAsIG1fZGlkSW5jcmVtZW50VmlzdWFsbHlO
b25FbXB0eVBpeGVsQ291bnQoZmFsc2UpCkBAIC0xMzUsNyArMTM1LDcgQEAgUmVuZGVySW1hZ2U6
OlJlbmRlckltYWdlKEVsZW1lbnQmIGVsZW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSwg
U3R5bGVJbWFnZSoKIH0KIAogUmVuZGVySW1hZ2U6OlJlbmRlckltYWdlKERvY3VtZW50JiBkb2N1
bWVudCwgUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlLCBTdHlsZUltYWdlKiBzdHlsZUltYWdlKQot
ICAgIDogUmVuZGVyUmVwbGFjZWQoZG9jdW1lbnQsIFdURjo6bW92ZShzdHlsZSksIEludFNpemUo
KSkKKyAgICA6IFJlbmRlclJlcGxhY2VkKGRvY3VtZW50LCBXVEZNb3ZlKHN0eWxlKSwgSW50U2l6
ZSgpKQogICAgICwgbV9pbWFnZVJlc291cmNlKHN0eWxlSW1hZ2UgPyBzdGQ6Om1ha2VfdW5pcXVl
PFJlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlPigqc3R5bGVJbWFnZSkgOiBzdGQ6Om1ha2Vf
dW5pcXVlPFJlbmRlckltYWdlUmVzb3VyY2U+KCkpCiAgICAgLCBtX25lZWRzVG9TZXRTaXplRm9y
QWx0VGV4dChmYWxzZSkKICAgICAsIG1fZGlkSW5jcmVtZW50VmlzdWFsbHlOb25FbXB0eVBpeGVs
Q291bnQoZmFsc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
SW5saW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCmlu
ZGV4IGE3MTZjZDlhM2JiNDZiNWNkYTI5MjdmMjk2Y2Q1ZDAwOGFmMmYxZGQuLjEyNWQ2ZDRkNjQz
NWE1MDljNDY3YWJjNTZkMmRkZWRmNTlmYTAwMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJJbmxpbmUuY3BwCkBAIC01MywxMyArNTMsMTMgQEAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogUmVuZGVySW5saW5lOjpSZW5kZXJJbmxpbmUoRWxlbWVudCYgZWxlbWVudCwgUmVmPFJl
bmRlclN0eWxlPiYmIHN0eWxlKQotICAgIDogUmVuZGVyQm94TW9kZWxPYmplY3QoZWxlbWVudCwg
V1RGOjptb3ZlKHN0eWxlKSwgUmVuZGVySW5saW5lRmxhZykKKyAgICA6IFJlbmRlckJveE1vZGVs
T2JqZWN0KGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpLCBSZW5kZXJJbmxpbmVGbGFnKQogewogICAg
IHNldENoaWxkcmVuSW5saW5lKHRydWUpOwogfQogCiBSZW5kZXJJbmxpbmU6OlJlbmRlcklubGlu
ZShEb2N1bWVudCYgZG9jdW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkKLSAgICA6IFJl
bmRlckJveE1vZGVsT2JqZWN0KGRvY3VtZW50LCBXVEY6Om1vdmUoc3R5bGUpLCBSZW5kZXJJbmxp
bmVGbGFnKQorICAgIDogUmVuZGVyQm94TW9kZWxPYmplY3QoZG9jdW1lbnQsIFdURk1vdmUoc3R5
bGUpLCBSZW5kZXJJbmxpbmVGbGFnKQogewogICAgIHNldENoaWxkcmVuSW5saW5lKHRydWUpOwog
fQpAQCAtMTYwLDcgKzE2MCw3IEBAIHN0YXRpYyB2b2lkIHVwZGF0ZVN0eWxlT2ZBbm9ueW1vdXNC
bG9ja0NvbnRpbnVhdGlvbnMoY29uc3QgUmVuZGVyQmxvY2smIGJsb2NrLCBjCiAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgYXV0byBibG9ja1N0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0
ZUFub255bW91c1N0eWxlV2l0aERpc3BsYXkoJmJsb2NrLnN0eWxlKCksIEJMT0NLKTsKICAgICAg
ICAgYmxvY2tTdHlsZS5nZXQoKS5zZXRQb3NpdGlvbihuZXdTdHlsZS0+cG9zaXRpb24oKSk7Ci0g
ICAgICAgIGJsb2NrLnNldFN0eWxlKFdURjo6bW92ZShibG9ja1N0eWxlKSk7CisgICAgICAgIGJs
b2NrLnNldFN0eWxlKFdURk1vdmUoYmxvY2tTdHlsZSkpOwogICAgIH0KIH0KIApAQCAtMzM4LDcg
KzMzOCw3IEBAIHZvaWQgUmVuZGVySW5saW5lOjphZGRDaGlsZElnbm9yaW5nQ29udGludWF0aW9u
KFJlbmRlck9iamVjdCogbmV3Q2hpbGQsIFJlbmRlck9iCiAgICAgICAgIGlmIChhdXRvIHBvc2l0
aW9uZWRBbmNlc3RvciA9IGluRmxvd1Bvc2l0aW9uZWRJbmxpbmVBbmNlc3Rvcih0aGlzKSkKICAg
ICAgICAgICAgIG5ld1N0eWxlLmdldCgpLnNldFBvc2l0aW9uKHBvc2l0aW9uZWRBbmNlc3Rvci0+
c3R5bGUoKS5wb3NpdGlvbigpKTsKIAotICAgICAgICBSZW5kZXJCbG9jayogbmV3Qm94ID0gbmV3
IFJlbmRlckJsb2NrRmxvdyhkb2N1bWVudCgpLCBXVEY6Om1vdmUobmV3U3R5bGUpKTsKKyAgICAg
ICAgUmVuZGVyQmxvY2sqIG5ld0JveCA9IG5ldyBSZW5kZXJCbG9ja0Zsb3coZG9jdW1lbnQoKSwg
V1RGTW92ZShuZXdTdHlsZSkpOwogICAgICAgICBuZXdCb3gtPmluaXRpYWxpemVTdHlsZSgpOwog
ICAgICAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCogb2xkQ29udGludWF0aW9uID0gY29udGludWF0
aW9uKCk7CiAgICAgICAgIHNldENvbnRpbnVhdGlvbihuZXdCb3gpOwpAQCAtNDkwLDcgKzQ5MCw3
IEBAIHZvaWQgUmVuZGVySW5saW5lOjpzcGxpdElubGluZXMoUmVuZGVyQmxvY2sqIGZyb21CbG9j
aywgUmVuZGVyQmxvY2sqIHRvQmxvY2ssCiAgICAgd2hpbGUgKGN1cnJlbnQgJiYgY3VycmVudCAh
PSBmcm9tQmxvY2spIHsKICAgICAgICAgaWYgKHNwbGl0RGVwdGggPCBjTWF4U3BsaXREZXB0aCkg
ewogICAgICAgICAgICAgLy8gQ3JlYXRlIGEgbmV3IGNsb25lLgotICAgICAgICAgICAgUmVuZGVy
UHRyPFJlbmRlcklubGluZT4gY2xvbmVDaGlsZCA9IFdURjo6bW92ZShjbG9uZUlubGluZSk7Cisg
ICAgICAgICAgICBSZW5kZXJQdHI8UmVuZGVySW5saW5lPiBjbG9uZUNoaWxkID0gV1RGTW92ZShj
bG9uZUlubGluZSk7CiAgICAgICAgICAgICBjbG9uZUlubGluZSA9IGRvd25jYXN0PFJlbmRlcklu
bGluZT4oKmN1cnJlbnQpLmNsb25lKCk7CiAKICAgICAgICAgICAgIC8vIEluc2VydCBvdXIgY2hp
bGQgY2xvbmUgYXMgdGhlIGZpcnN0IGNoaWxkLgpAQCAtMTQ5Niw3ICsxNDk2LDcgQEAgSW5saW5l
Rmxvd0JveCogUmVuZGVySW5saW5lOjpjcmVhdGVBbmRBcHBlbmRJbmxpbmVGbG93Qm94KCkKICAg
ICBzZXRBbHdheXNDcmVhdGVMaW5lQm94ZXMoKTsKICAgICBhdXRvIG5ld0Zsb3dCb3ggPSBjcmVh
dGVJbmxpbmVGbG93Qm94KCk7CiAgICAgYXV0byBmbG93Qm94ID0gbmV3Rmxvd0JveC5nZXQoKTsK
LSAgICBtX2xpbmVCb3hlcy5hcHBlbmRMaW5lQm94KFdURjo6bW92ZShuZXdGbG93Qm94KSk7Cisg
ICAgbV9saW5lQm94ZXMuYXBwZW5kTGluZUJveChXVEZNb3ZlKG5ld0Zsb3dCb3gpKTsKICAgICBy
ZXR1cm4gZmxvd0JveDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5j
cHAKaW5kZXggMjI4YWJkMTFhZmRmNGIyZThlOTc2YjdlNTBmM2FlZjc4NDNkYmZlMy4uMzU5OTk1
YWE1NzcyYzA5ZDI5ZjE0N2U4NTE0ODU5ODFlZDE2Mjg5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBAIC02OTA0LDcgKzY5MDQsNyBAQCB2b2lkIFJlbmRlckxh
eWVyOjp1cGRhdGVPclJlbW92ZUZpbHRlckVmZmVjdFJlbmRlcmVyKCkKICAgICAgICAgUmVmUHRy
PEZpbHRlckVmZmVjdFJlbmRlcmVyPiBmaWx0ZXJSZW5kZXJlciA9IEZpbHRlckVmZmVjdFJlbmRl
cmVyOjpjcmVhdGUoKTsKICAgICAgICAgZmlsdGVyUmVuZGVyZXItPnNldEZpbHRlclNjYWxlKGZy
YW1lLnBhZ2UoKS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSk7CiAgICAgICAgIGZpbHRlclJlbmRlcmVy
LT5zZXRSZW5kZXJpbmdNb2RlKGZyYW1lLnNldHRpbmdzKCkuYWNjZWxlcmF0ZWRGaWx0ZXJzRW5h
YmxlZCgpID8gQWNjZWxlcmF0ZWQgOiBVbmFjY2VsZXJhdGVkKTsKLSAgICAgICAgZmlsdGVySW5m
by5zZXRSZW5kZXJlcihXVEY6Om1vdmUoZmlsdGVyUmVuZGVyZXIpKTsKKyAgICAgICAgZmlsdGVy
SW5mby5zZXRSZW5kZXJlcihXVEZNb3ZlKGZpbHRlclJlbmRlcmVyKSk7CiAgICAgICAgIAogICAg
ICAgICAvLyBXZSBjYW4gb3B0aW1pemUgYXdheSBjb2RlIHBhdGhzIGluIG90aGVyIHBsYWNlcyBp
ZiB3ZSBrbm93IHRoYXQgdGhlcmUgYXJlIG5vIHNvZnR3YXJlIGZpbHRlcnMuCiAgICAgICAgIHJl
bmRlcmVyKCkudmlldygpLnNldEhhc1NvZnR3YXJlRmlsdGVycyh0cnVlKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKaW5kZXggNDc5
YzkyZGM5NzFmYzUyNWYwNTY5ZDY1MzliYzEyYzhkOGUzY2UwOC4uN2ZlMWJjZDhmOWZlZWIxNTE1
YWExZjcyNmRkYTZjMTA0Njc5YTRlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKQEAgLTQwNDUsNyArNDA0NSw3IEBAIHZvaWQg
UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZWdpc3RlckFsbFZpZXdwb3J0Q29uc3RyYWluZWRMYXll
cnMoKQogICAgICAgICBlbHNlCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBsYXll
ck1hcC5hZGQobGF5ZXItPmJhY2tpbmcoKS0+Z3JhcGhpY3NMYXllcigpLT5wbGF0Zm9ybUxheWVy
KCksIFdURjo6bW92ZShjb25zdHJhaW50cykpOworICAgICAgICBsYXllck1hcC5hZGQobGF5ZXIt
PmJhY2tpbmcoKS0+Z3JhcGhpY3NMYXllcigpLT5wbGF0Zm9ybUxheWVyKCksIFdURk1vdmUoY29u
c3RyYWludHMpKTsKICAgICB9CiAgICAgCiAgICAgaWYgKENocm9tZUNsaWVudCogY2xpZW50ID0g
dGhpcy0+Y2hyb21lQ2xpZW50KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5jcHAKaW5kZXggOGZjMDdjYTg3MTBhNThjMTY0ZmYwYTI4
NDJiODI0N2QwNzM3NmY3NC4uMWM0M2Y2ODkzOTQwY2U3ODIwMzMyYTMzNjBlYWUzOWIzYTVkNDRk
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxP
YmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllck1vZGVs
T2JqZWN0LmNwcApAQCAtMzcsMTIgKzM3LDEyIEBAIGJvb2wgUmVuZGVyTGF5ZXJNb2RlbE9iamVj
dDo6c19oYWRUcmFuc2Zvcm0gPSBmYWxzZTsKIGJvb2wgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdDo6
c19sYXllcldhc1NlbGZQYWludGluZyA9IGZhbHNlOwogCiBSZW5kZXJMYXllck1vZGVsT2JqZWN0
OjpSZW5kZXJMYXllck1vZGVsT2JqZWN0KEVsZW1lbnQmIGVsZW1lbnQsIFJlZjxSZW5kZXJTdHls
ZT4mJiBzdHlsZSwgQmFzZVR5cGVGbGFncyBiYXNlVHlwZUZsYWdzKQotICAgIDogUmVuZGVyRWxl
bWVudChlbGVtZW50LCBXVEY6Om1vdmUoc3R5bGUpLCBiYXNlVHlwZUZsYWdzIHwgUmVuZGVyTGF5
ZXJNb2RlbE9iamVjdEZsYWcpCisgICAgOiBSZW5kZXJFbGVtZW50KGVsZW1lbnQsIFdURk1vdmUo
c3R5bGUpLCBiYXNlVHlwZUZsYWdzIHwgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdEZsYWcpCiB7CiB9
CiAKIFJlbmRlckxheWVyTW9kZWxPYmplY3Q6OlJlbmRlckxheWVyTW9kZWxPYmplY3QoRG9jdW1l
bnQmIGRvY3VtZW50LCBSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUsIEJhc2VUeXBlRmxhZ3MgYmFz
ZVR5cGVGbGFncykKLSAgICA6IFJlbmRlckVsZW1lbnQoZG9jdW1lbnQsIFdURjo6bW92ZShzdHls
ZSksIGJhc2VUeXBlRmxhZ3MgfCBSZW5kZXJMYXllck1vZGVsT2JqZWN0RmxhZykKKyAgICA6IFJl
bmRlckVsZW1lbnQoZG9jdW1lbnQsIFdURk1vdmUoc3R5bGUpLCBiYXNlVHlwZUZsYWdzIHwgUmVu
ZGVyTGF5ZXJNb2RlbE9iamVjdEZsYWcpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxpbmVCcmVhay5jcHAKaW5kZXggOTQ0NDYyMGRhNmVmOGQ1ZjBkN2Y2NjBiYjM4
MTIwNjBmZDAxMzFkNC4uOTAwNjgzMWQxZmNmZWNhOGNjMjA3MjA1NWY0ZDM1MjhkMGE3ZDUyYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5jcHAKQEAgLTU2
LDcgKzU2LDcgQEAgc3RhdGljIHZvaWQgZW5zdXJlTGluZUJveGVzKGNvbnN0IFJlbmRlckxpbmVC
cmVhayYgcmVuZGVyZXIpCiB9CiAKIFJlbmRlckxpbmVCcmVhazo6UmVuZGVyTGluZUJyZWFrKEhU
TUxFbGVtZW50JiBlbGVtZW50LCBSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCi0gICAgOiBSZW5k
ZXJCb3hNb2RlbE9iamVjdChlbGVtZW50LCBXVEY6Om1vdmUoc3R5bGUpLCAwKQorICAgIDogUmVu
ZGVyQm94TW9kZWxPYmplY3QoZWxlbWVudCwgV1RGTW92ZShzdHlsZSksIDApCiAgICAgLCBtX2lu
bGluZUJveFdyYXBwZXIobnVsbHB0cikKICAgICAsIG1fY2FjaGVkTGluZUhlaWdodChpbnZhbGlk
TGluZUhlaWdodCkKICAgICAsIG1faXNXQlIoaXM8SFRNTFdCUkVsZW1lbnQ+KGVsZW1lbnQpKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwCmluZGV4IGUwMzM3ZjQ0
MDM5MzNiMzdlYzhkYTQxNjBmN2FlNzY2Njk0NDg5ZDkuLjEyMTViOWQ5N2IxODMwMjM1M2FkOWE3
ZDZiMzg5ZTAxN2U0MzgwZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMaXN0Qm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlz
dEJveC5jcHAKQEAgLTgzLDcgKzgzLDcgQEAgY29uc3QgaW50IGRlZmF1bHRTaXplID0gNDsKIGNv
bnN0IGludCBiYXNlbGluZUFkanVzdG1lbnQgPSA3OwogCiBSZW5kZXJMaXN0Qm94OjpSZW5kZXJM
aXN0Qm94KEhUTUxTZWxlY3RFbGVtZW50JiBlbGVtZW50LCBSZWY8UmVuZGVyU3R5bGU+JiYgc3R5
bGUpCi0gICAgOiBSZW5kZXJCbG9ja0Zsb3coZWxlbWVudCwgV1RGOjptb3ZlKHN0eWxlKSkKKyAg
ICA6IFJlbmRlckJsb2NrRmxvdyhlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSkKICAgICAsIG1fb3B0
aW9uc0NoYW5nZWQodHJ1ZSkKICAgICAsIG1fc2Nyb2xsVG9SZXZlYWxTZWxlY3Rpb25BZnRlckxh
eW91dChmYWxzZSkKICAgICAsIG1faW5BdXRvc2Nyb2xsKGZhbHNlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RJdGVtLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMaXN0SXRlbS5jcHAKaW5kZXggMWQzOGUyMjU1YjU0NzliZGI1Yzdh
NGQ4ZGRjYjBiNWE3M2JhYWE1ZC4uMTZjODJhMTRlYzIwZWM2YmEyMDk0Yzg5NzIwNmFmZWJjODc5
Y2E4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RJdGVt
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEl0ZW0uY3BwCkBA
IC00NSw3ICs0NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHVzaW5nIG5hbWVzcGFjZSBIVE1M
TmFtZXM7CiAKIFJlbmRlckxpc3RJdGVtOjpSZW5kZXJMaXN0SXRlbShFbGVtZW50JiBlbGVtZW50
LCBSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCi0gICAgOiBSZW5kZXJCbG9ja0Zsb3coZWxlbWVu
dCwgV1RGOjptb3ZlKHN0eWxlKSkKKyAgICA6IFJlbmRlckJsb2NrRmxvdyhlbGVtZW50LCBXVEZN
b3ZlKHN0eWxlKSkKICAgICAsIG1fbWFya2VyKG51bGxwdHIpCiAgICAgLCBtX2hhc0V4cGxpY2l0
VmFsdWUoZmFsc2UpCiAgICAgLCBtX2lzVmFsdWVVcFRvRGF0ZShmYWxzZSkKQEAgLTgwLDEyICs4
MCwxMiBAQCB2b2lkIFJlbmRlckxpc3RJdGVtOjpzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVu
Y2UgZGlmZiwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZAogICAgIC8vIHVwIChlLmcuLCBpbiBzb21l
IGRlZXBseSBuZXN0ZWQgbGluZSBib3gpLiBTZWUgQ1NTMyBzcGVjLgogICAgIG5ld1N0eWxlLmdl
dCgpLmluaGVyaXRGcm9tKCZzdHlsZSgpKTsKICAgICBpZiAoIW1fbWFya2VyKSB7Ci0gICAgICAg
IG1fbWFya2VyID0gY3JlYXRlUmVuZGVyZXI8UmVuZGVyTGlzdE1hcmtlcj4oKnRoaXMsIFdURjo6
bW92ZShuZXdTdHlsZSkpLmxlYWtQdHIoKTsKKyAgICAgICAgbV9tYXJrZXIgPSBjcmVhdGVSZW5k
ZXJlcjxSZW5kZXJMaXN0TWFya2VyPigqdGhpcywgV1RGTW92ZShuZXdTdHlsZSkpLmxlYWtQdHIo
KTsKICAgICAgICAgbV9tYXJrZXItPmluaXRpYWxpemVTdHlsZSgpOwogICAgIH0gZWxzZSB7CiAg
ICAgICAgIC8vIERvIG5vdCBhbHRlciBvdXIgbWFya2VyJ3Mgc3R5bGUgdW5sZXNzIG91ciBzdHls
ZSBoYXMgYWN0dWFsbHkgY2hhbmdlZC4KICAgICAgICAgaWYgKGRpZmYgIT0gU3R5bGVEaWZmZXJl
bmNlRXF1YWwpCi0gICAgICAgICAgICBtX21hcmtlci0+c2V0U3R5bGUoV1RGOjptb3ZlKG5ld1N0
eWxlKSk7CisgICAgICAgICAgICBtX21hcmtlci0+c2V0U3R5bGUoV1RGTW92ZShuZXdTdHlsZSkp
OwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxpc3RNYXJrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJr
ZXIuY3BwCmluZGV4IDQ3NmU5YzQ3MmIxMTQ5MGZkNjI2ZGRjYzk4NzkyNzlmODFlMzAzYjQuLjU0
ODczMGMyOTdlY2UxNDY3OWE5NzZiNThhZDc5NmE0ZjA2OWE5MTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHAKQEAgLTExMTgsNyArMTExOCw3IEBA
IFN0cmluZyBsaXN0TWFya2VyVGV4dChFTGlzdFN0eWxlVHlwZSB0eXBlLCBpbnQgdmFsdWUpCiB9
CiAKIFJlbmRlckxpc3RNYXJrZXI6OlJlbmRlckxpc3RNYXJrZXIoUmVuZGVyTGlzdEl0ZW0mIGxp
c3RJdGVtLCBSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCi0gICAgOiBSZW5kZXJCb3gobGlzdEl0
ZW0uZG9jdW1lbnQoKSwgV1RGOjptb3ZlKHN0eWxlKSwgMCkKKyAgICA6IFJlbmRlckJveChsaXN0
SXRlbS5kb2N1bWVudCgpLCBXVEZNb3ZlKHN0eWxlKSwgMCkKICAgICAsIG1fbGlzdEl0ZW0obGlz
dEl0ZW0pCiB7CiAgICAgLy8gaW5pdCBSZW5kZXJPYmplY3QgYXR0cmlidXRlcwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lZGlhLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJNZWRpYS5jcHAKaW5kZXggNDIzZWZjYjM0YTcyN2E1NmYyODNl
MzZjMjMwMDRhYTM3ODkwMGQ4My4uMmI3YzU3NmMxMTgxYTBkY2ZjYjA5OWY2ODk0MTI1YjEwZTBk
NmY1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lZGlhLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVkaWEuY3BwCkBAIC0zNSwx
MyArMzUsMTMgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUmVuZGVyTWVkaWE6OlJlbmRlck1l
ZGlhKEhUTUxNZWRpYUVsZW1lbnQmIGVsZW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkK
LSAgICA6IFJlbmRlckltYWdlKGVsZW1lbnQsIFdURjo6bW92ZShzdHlsZSkpCisgICAgOiBSZW5k
ZXJJbWFnZShlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSkKIHsKICAgICBzZXRIYXNTaGFkb3dDb250
cm9scyh0cnVlKTsKIH0KIAogUmVuZGVyTWVkaWE6OlJlbmRlck1lZGlhKEhUTUxNZWRpYUVsZW1l
bnQmIGVsZW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSwgY29uc3QgSW50U2l6ZSYgaW50
cmluc2ljU2l6ZSkKLSAgICA6IFJlbmRlckltYWdlKGVsZW1lbnQsIFdURjo6bW92ZShzdHlsZSkp
CisgICAgOiBSZW5kZXJJbWFnZShlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSkKIHsKICAgICBzZXRJ
bnRyaW5zaWNTaXplKGludHJpbnNpY1NpemUpOwogICAgIHNldEhhc1NoYWRvd0NvbnRyb2xzKHRy
dWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lZGlhQ29u
dHJvbEVsZW1lbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZWRpYUNv
bnRyb2xFbGVtZW50cy5jcHAKaW5kZXggYmU1YmMyNGJhZDFkM2VhZjJmNzgyZmZjOTYyYTQ3MzY1
ODQ0YTY2Yi4uZGZmMmI3YWZiMDJmYWE5NzkzYThlZDAwNTY4MWExYjg5MDVkZWI2NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lZGlhQ29udHJvbEVsZW1lbnRz
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVkaWFDb250cm9sRWxl
bWVudHMuY3BwCkBAIC0zNiw3ICszNiw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFJlbmRl
ck1lZGlhVm9sdW1lU2xpZGVyQ29udGFpbmVyOjpSZW5kZXJNZWRpYVZvbHVtZVNsaWRlckNvbnRh
aW5lcihFbGVtZW50JiBlbGVtZW50LCBSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCi0gICAgOiBS
ZW5kZXJCbG9ja0Zsb3coZWxlbWVudCwgV1RGOjptb3ZlKHN0eWxlKSkKKyAgICA6IFJlbmRlckJs
b2NrRmxvdyhlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSkKIHsKIH0KIApAQCAtNjAsNyArNjAsNyBA
QCB2b2lkIFJlbmRlck1lZGlhVm9sdW1lU2xpZGVyQ29udGFpbmVyOjpsYXlvdXQoKQogLy8gLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBSZW5kZXJNZWRpYUNvbnRyb2xUaW1lbGluZUNv
bnRhaW5lcjo6UmVuZGVyTWVkaWFDb250cm9sVGltZWxpbmVDb250YWluZXIoRWxlbWVudCYgZWxl
bWVudCwgUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQotICAgIDogUmVuZGVyRmxleGlibGVCb3go
ZWxlbWVudCwgV1RGOjptb3ZlKHN0eWxlKSkKKyAgICA6IFJlbmRlckZsZXhpYmxlQm94KGVsZW1l
bnQsIFdURk1vdmUoc3R5bGUpKQogewogfQogCkBAIC04Miw3ICs4Miw3IEBAIHZvaWQgUmVuZGVy
TWVkaWFDb250cm9sVGltZWxpbmVDb250YWluZXI6OmxheW91dCgpCiAjaWYgRU5BQkxFKFZJREVP
X1RSQUNLKQogCiBSZW5kZXJUZXh0VHJhY2tDb250YWluZXJFbGVtZW50OjpSZW5kZXJUZXh0VHJh
Y2tDb250YWluZXJFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4mJiBz
dHlsZSkKLSAgICA6IFJlbmRlckJsb2NrRmxvdyhlbGVtZW50LCBXVEY6Om1vdmUoc3R5bGUpKQor
ICAgIDogUmVuZGVyQmxvY2tGbG93KGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKQogewogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcAppbmRleCBhMmFiYzk0
ZTg0ZjUyYmRmMWI0Y2YwNzg1MjdkOTZlNGM1OGMwZDMyLi5lYjk3MjM1NzMyOTFkMDBhM2YwOGFh
M2E2ZWE1Mzk5MjRjNmI0NjVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTWVudUxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJN
ZW51TGlzdC5jcHAKQEAgLTcxLDcgKzcxLDcgQEAgc3RhdGljIHNpemVfdCBzZWxlY3RlZE9wdGlv
bkNvdW50KGNvbnN0IFJlbmRlck1lbnVMaXN0JiByZW5kZXJNZW51TGlzdCkKICNlbmRpZgogCiBS
ZW5kZXJNZW51TGlzdDo6UmVuZGVyTWVudUxpc3QoSFRNTFNlbGVjdEVsZW1lbnQmIGVsZW1lbnQs
IFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkKLSAgICA6IFJlbmRlckZsZXhpYmxlQm94KGVsZW1l
bnQsIFdURjo6bW92ZShzdHlsZSkpCisgICAgOiBSZW5kZXJGbGV4aWJsZUJveChlbGVtZW50LCBX
VEZNb3ZlKHN0eWxlKSkKICAgICAsIG1fYnV0dG9uVGV4dChudWxscHRyKQogICAgICwgbV9pbm5l
ckJsb2NrKG51bGxwdHIpCiAgICAgLCBtX25lZWRzT3B0aW9uc1dpZHRoVXBkYXRlKHRydWUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWV0ZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1ldGVyLmNwcAppbmRleCAwMWY5YjRhYjhlNzhh
ZjdlOTU5MjA2YmJkZTlhZGI2YmQ1NzEwZTU4Li5hNWY1ZjA1Mzk2NmE1MmI3ODgyMzA1MDFkNTgx
MGIwMjhjZmJhYmRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TWV0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZXRlci5jcHAK
QEAgLTMxLDcgKzMxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogdXNpbmcgbmFtZXNwYWNlIEhU
TUxOYW1lczsKIAogUmVuZGVyTWV0ZXI6OlJlbmRlck1ldGVyKEhUTUxFbGVtZW50JiBlbGVtZW50
LCBSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCi0gICAgOiBSZW5kZXJCbG9ja0Zsb3coZWxlbWVu
dCwgV1RGOjptb3ZlKHN0eWxlKSkKKyAgICA6IFJlbmRlckJsb2NrRmxvdyhlbGVtZW50LCBXVEZN
b3ZlKHN0eWxlKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkLmNwcAppbmRleCAyZDY0MTFhZjQ3MjY1YmRh
MTM3ZDkwZDY3YzQzMjZmM2Y4N2Q4Y2E2Li5jMTRiYWM1OTkyMTZjNDc0YWUxNTRjNzY4NjcyY2E4
MmQ5N2IzNDdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVs
dGlDb2x1bW5GbG93VGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkLmNwcApAQCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBib29sIFJlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZDo6Z1NoaWZ0aW5nU3Bh
bm5lciA9IGZhbHNlOwogCiBSZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQ6OlJlbmRlck11bHRp
Q29sdW1uRmxvd1RocmVhZChEb2N1bWVudCYgZG9jdW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4mJiBz
dHlsZSkKLSAgICA6IFJlbmRlckZsb3dUaHJlYWQoZG9jdW1lbnQsIFdURjo6bW92ZShzdHlsZSkp
CisgICAgOiBSZW5kZXJGbG93VGhyZWFkKGRvY3VtZW50LCBXVEZNb3ZlKHN0eWxlKSkKICAgICAs
IG1fbGFzdFNldFdvcmtlZE9uKG51bGxwdHIpCiAgICAgLCBtX2NvbHVtbkNvdW50KDEpCiAgICAg
LCBtX2NvbHVtbldpZHRoKDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTXVsdGlDb2x1bW5TZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ck11bHRpQ29sdW1uU2V0LmNwcAppbmRleCBjN2RhMTJmOTRjMWM4NDk4M2UxNDBlZTYyNzJmYTcz
ZGM0MmZmM2I2Li4yOGI1OGEzZDg2NjQyMzdmZjIxMmY5OWM5YjE3YTM2NDlhNTE1MGEyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TZXQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNldC5jcHAK
QEAgLTM3LDcgKzM3LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUmVuZGVyTXVsdGlDb2x1
bW5TZXQ6OlJlbmRlck11bHRpQ29sdW1uU2V0KFJlbmRlckZsb3dUaHJlYWQmIGZsb3dUaHJlYWQs
IFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkKLSAgICA6IFJlbmRlclJlZ2lvblNldChmbG93VGhy
ZWFkLmRvY3VtZW50KCksIFdURjo6bW92ZShzdHlsZSksIGZsb3dUaHJlYWQpCisgICAgOiBSZW5k
ZXJSZWdpb25TZXQoZmxvd1RocmVhZC5kb2N1bWVudCgpLCBXVEZNb3ZlKHN0eWxlKSwgZmxvd1Ro
cmVhZCkKICAgICAsIG1fY29tcHV0ZWRDb2x1bW5Db3VudCgxKQogICAgICwgbV9jb21wdXRlZENv
bHVtbldpZHRoKDApCiAgICAgLCBtX2NvbXB1dGVkQ29sdW1uSGVpZ2h0KDApCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vo
b2xkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck11bHRpQ29sdW1uU3Bh
bm5lclBsYWNlaG9sZGVyLmNwcAppbmRleCA2ZDdlOWYxYjMyY2M1NDE4ZmIxNGIwZjQ2NDI5MjQ1
MjQ1ZWQxYzk4Li40M2JmZDg2NDc4ZTNkZDc3Y2Y4ZjgzZjMxYzVjOGVhNmMwNmZkNTkyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TcGFubmVy
UGxhY2Vob2xkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0
aUNvbHVtblNwYW5uZXJQbGFjZWhvbGRlci5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAgUmVuZGVyTXVs
dGlDb2x1bW5TcGFubmVyUGxhY2Vob2xkZXIqIFJlbmRlck11bHRpQ29sdW1uU3Bhbm5lclBsYWNl
aG9sZGVyOjpjcmVhdGUKIH0KIAogUmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vob2xkZXI6
OlJlbmRlck11bHRpQ29sdW1uU3Bhbm5lclBsYWNlaG9sZGVyKFJlbmRlck11bHRpQ29sdW1uRmxv
d1RocmVhZCogZmxvd1RocmVhZCwgUmVuZGVyQm94KiBzcGFubmVyLCBSZWY8UmVuZGVyU3R5bGU+
JiYgc3R5bGUpCi0gICAgOiBSZW5kZXJCb3goZmxvd1RocmVhZC0+ZG9jdW1lbnQoKSwgV1RGOjpt
b3ZlKHN0eWxlKSwgUmVuZGVyQm94TW9kZWxPYmplY3RGbGFnKQorICAgIDogUmVuZGVyQm94KGZs
b3dUaHJlYWQtPmRvY3VtZW50KCksIFdURk1vdmUoc3R5bGUpLCBSZW5kZXJCb3hNb2RlbE9iamVj
dEZsYWcpCiAgICAgLCBtX3NwYW5uZXIoc3Bhbm5lcikKICAgICAsIG1fZmxvd1RocmVhZChmbG93
VGhyZWFkKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5h
bWVkRmxvd0ZyYWdtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJOYW1l
ZEZsb3dGcmFnbWVudC5jcHAKaW5kZXggNGIxMzY0ZTQ4MzJkZTMxN2Q0MTAxNjUxMmQ5YzllNWY3
ZTQyOTgxZi4uOTc2MWViMDc1M2UwM2RiMGYyZmU0MmU4YzU4YzhmYmNlMDY3NWQ5ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd0ZyYWdtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQu
Y3BwCkBAIC00NSw3ICs0NSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFJlbmRlck5hbWVk
Rmxvd0ZyYWdtZW50OjpSZW5kZXJOYW1lZEZsb3dGcmFnbWVudChEb2N1bWVudCYgZG9jdW1lbnQs
IFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkKLSAgICA6IFJlbmRlclJlZ2lvbihkb2N1bWVudCwg
V1RGOjptb3ZlKHN0eWxlKSwgbnVsbHB0cikKKyAgICA6IFJlbmRlclJlZ2lvbihkb2N1bWVudCwg
V1RGTW92ZShzdHlsZSksIG51bGxwdHIpCiAgICAgLCBtX2hhc0N1c3RvbVJlZ2lvblN0eWxlKGZh
bHNlKQogICAgICwgbV9oYXNBdXRvTG9naWNhbEhlaWdodChmYWxzZSkKICAgICAsIG1faGFzQ29t
cHV0ZWRBdXRvSGVpZ2h0KGZhbHNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlck5hbWVkRmxvd1RocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTmFtZWRGbG93VGhyZWFkLmNwcAppbmRleCAxMmI2MDdhZWJhYjA4NmU4NjZhZjhhODY0
NzY2MmI2MTA2ZmMwZGM5Li4zMjM2ODE3NWU0NWZmNGIzYTFiMTk0YjZlOTQ4ZWZjNDY1ZWRiNmZh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93VGhy
ZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93VGhy
ZWFkLmNwcApAQCAtNDcsMTAgKzQ3LDEwIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFJlbmRl
ck5hbWVkRmxvd1RocmVhZDo6UmVuZGVyTmFtZWRGbG93VGhyZWFkKERvY3VtZW50JiBkb2N1bWVu
dCwgUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlLCBSZWY8V2ViS2l0TmFtZWRGbG93PiYmIG5hbWVk
RmxvdykKLSAgICA6IFJlbmRlckZsb3dUaHJlYWQoZG9jdW1lbnQsIFdURjo6bW92ZShzdHlsZSkp
CisgICAgOiBSZW5kZXJGbG93VGhyZWFkKGRvY3VtZW50LCBXVEZNb3ZlKHN0eWxlKSkKICAgICAs
IG1faGFzUmVnaW9uc1dpdGhTdHlsaW5nKGZhbHNlKQogICAgICwgbV9kaXNwYXRjaFJlZ2lvbk92
ZXJzZXRDaGFuZ2VFdmVudChmYWxzZSkKLSAgICAsIG1fbmFtZWRGbG93KFdURjo6bW92ZShuYW1l
ZEZsb3cpKQorICAgICwgbV9uYW1lZEZsb3coV1RGTW92ZShuYW1lZEZsb3cpKQogICAgICwgbV9y
ZWdpb25PdmVyc2V0Q2hhbmdlRXZlbnRUaW1lcigqdGhpcywgJlJlbmRlck5hbWVkRmxvd1RocmVh
ZDo6cmVnaW9uT3ZlcnNldENoYW5nZUV2ZW50VGltZXJGaXJlZCkKIHsKIH0KQEAgLTk0LDcgKzk0
LDcgQEAgdm9pZCBSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OnVwZGF0ZVdyaXRpbmdNb2RlKCkKICAg
ICAvLyBUaGUgZmlyc3QgcmVnaW9uIGRlZmluZXMgdGhlIHByaW5jaXBhbCB3cml0aW5nIG1vZGUg
Zm9yIHRoZSBlbnRpcmUgZmxvdy4KICAgICBhdXRvIG5ld1N0eWxlID0gUmVuZGVyU3R5bGU6OmNs
b25lKCZzdHlsZSgpKTsKICAgICBuZXdTdHlsZS5nZXQoKS5zZXRXcml0aW5nTW9kZShmaXJzdEZy
YWdtZW50LT5zdHlsZSgpLndyaXRpbmdNb2RlKCkpOwotICAgIHNldFN0eWxlKFdURjo6bW92ZShu
ZXdTdHlsZSkpOworICAgIHNldFN0eWxlKFdURk1vdmUobmV3U3R5bGUpKTsKIH0KIAogUmVuZGVy
RWxlbWVudCogUmVuZGVyTmFtZWRGbG93VGhyZWFkOjpuZXh0UmVuZGVyZXJGb3JFbGVtZW50KEVs
ZW1lbnQmIGVsZW1lbnQpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyUHJvZ3Jlc3MuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclBy
b2dyZXNzLmNwcAppbmRleCBhNGQwNDk0NmMyY2RkMDVlOThjODBiNmRjMjIzNTkzNmVkMGJjNDAz
Li5mNjQ3Y2Q4YmNjNjBiMjBjMGMyYjFmMzFkZTYxMjRjYWRjZjQ3YzFmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUHJvZ3Jlc3MuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJQcm9ncmVzcy5jcHAKQEAgLTMxLDcgKzMxLDcgQEAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogUmVuZGVyUHJvZ3Jlc3M6OlJlbmRlclByb2dyZXNzKEhUTUxF
bGVtZW50JiBlbGVtZW50LCBSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCi0gICAgOiBSZW5kZXJC
bG9ja0Zsb3coZWxlbWVudCwgV1RGOjptb3ZlKHN0eWxlKSkKKyAgICA6IFJlbmRlckJsb2NrRmxv
dyhlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSkKICAgICAsIG1fcG9zaXRpb24oSFRNTFByb2dyZXNz
RWxlbWVudDo6SW52YWxpZFBvc2l0aW9uKQogICAgICwgbV9hbmltYXRpb25TdGFydFRpbWUoMCkK
ICAgICAsIG1fYW5pbWF0aW9uUmVwZWF0SW50ZXJ2YWwoMCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJQdHIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJQdHIuaAppbmRleCA4MWMxM2YyYjU1YTQ2ZTA0MjM4YmIyNGRkNjEzMGMzZjZmZDdmOTRl
Li5hYTRlODhjYjkzZmRiYjJlYmFlYTA2N2FmZDYyZGFlMDQ3NmRmYWNkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUHRyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclB0ci5oCkBAIC0xMDksNyArMTA5LDcgQEAgdGVtcGxhdGU8dHlwZW5h
bWUgVD4gdGVtcGxhdGU8dHlwZW5hbWUgVT4gaW5saW5lIFJlbmRlclB0cjxUPjo6UmVuZGVyUHRy
KFJlbmRlclAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBhdXRvIFJlbmRlclB0cjxUPjo6
b3BlcmF0b3I9KFJlbmRlclB0ciYmIG8pIC0+IFJlbmRlclB0ciYKIHsKICAgICBBU1NFUlQoIW8g
fHwgbyAhPSBtX3B0cik7Ci0gICAgUmVuZGVyUHRyIHB0ciA9IFdURjo6bW92ZShvKTsKKyAgICBS
ZW5kZXJQdHIgcHRyID0gV1RGTW92ZShvKTsKICAgICBzd2FwKHB0cik7CiAgICAgcmV0dXJuICp0
aGlzOwogfQpAQCAtMTE3LDcgKzExNyw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBh
dXRvIFJlbmRlclB0cjxUPjo6b3BlcmF0b3I9KFJlbmRlclB0ciYmIG8pIC0+IFJlbmRlCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPiB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBpbmxpbmUgYXV0byBSZW5kZXJQ
dHI8VD46Om9wZXJhdG9yPShSZW5kZXJQdHI8VT4mJiBvKSAtPiBSZW5kZXJQdHImCiB7CiAgICAg
QVNTRVJUKCFvIHx8IG8gIT0gbV9wdHIpOwotICAgIFJlbmRlclB0ciBwdHIgPSBXVEY6Om1vdmUo
byk7CisgICAgUmVuZGVyUHRyIHB0ciA9IFdURk1vdmUobyk7CiAgICAgc3dhcChwdHIpOwogICAg
IHJldHVybiAqdGhpczsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJRdW90ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUXVvdGUuY3Bw
CmluZGV4IDRkZjdhNTU4ZGQ2MDYyMmY0ZDZiMmM5MTFkYjZiYmRlNWRjYjBmNzkuLjAzMTRiNDcy
NTE2YzY1MGUwYjRiY2YzZGMxZmU4ZmRiZmZjYzIzNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJRdW90ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclF1b3RlLmNwcApAQCAtMzIsNyArMzIsNyBAQCB1c2luZyBuYW1lc3BhY2UgV1RG
OjpVbmljb2RlOwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBSZW5kZXJRdW90ZTo6UmVuZGVyUXVv
dGUoRG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUsIFF1b3RlVHlw
ZSBxdW90ZSkKLSAgICA6IFJlbmRlcklubGluZShkb2N1bWVudCwgV1RGOjptb3ZlKHN0eWxlKSkK
KyAgICA6IFJlbmRlcklubGluZShkb2N1bWVudCwgV1RGTW92ZShzdHlsZSkpCiAgICAgLCBtX3R5
cGUocXVvdGUpCiAgICAgLCBtX3RleHQoZW1wdHlTdHJpbmcoKSkKIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24uY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5jcHAKaW5kZXggNTlhYWNiNzExZDE3OGFmZTNiNTUyYWNh
MTRiNjc2MTMzZDE4NDZlMC4uNTE3NDAzOWMxMDBmZWFjZjZjZDVhYzMyMmUwMDIxZmU5MTQyZDIy
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5jcHAKQEAgLTQ5LDcg
KzQ5LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUmVuZGVyUmVnaW9uOjpSZW5kZXJSZWdp
b24oRWxlbWVudCYgZWxlbWVudCwgUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlLCBSZW5kZXJGbG93
VGhyZWFkKiBmbG93VGhyZWFkKQotICAgIDogUmVuZGVyQmxvY2tGbG93KGVsZW1lbnQsIFdURjo6
bW92ZShzdHlsZSkpCisgICAgOiBSZW5kZXJCbG9ja0Zsb3coZWxlbWVudCwgV1RGTW92ZShzdHls
ZSkpCiAgICAgLCBtX2Zsb3dUaHJlYWQoZmxvd1RocmVhZCkKICAgICAsIG1fcGFyZW50TmFtZWRG
bG93VGhyZWFkKG51bGxwdHIpCiAgICAgLCBtX2lzVmFsaWQoZmFsc2UpCkBAIC01Nyw3ICs1Nyw3
IEBAIFJlbmRlclJlZ2lvbjo6UmVuZGVyUmVnaW9uKEVsZW1lbnQmIGVsZW1lbnQsIFJlZjxSZW5k
ZXJTdHlsZT4mJiBzdHlsZSwgUmVuZGVyRmxvCiB9CiAKIFJlbmRlclJlZ2lvbjo6UmVuZGVyUmVn
aW9uKERvY3VtZW50JiBkb2N1bWVudCwgUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlLCBSZW5kZXJG
bG93VGhyZWFkKiBmbG93VGhyZWFkKQotICAgIDogUmVuZGVyQmxvY2tGbG93KGRvY3VtZW50LCBX
VEY6Om1vdmUoc3R5bGUpKQorICAgIDogUmVuZGVyQmxvY2tGbG93KGRvY3VtZW50LCBXVEZNb3Zl
KHN0eWxlKSkKICAgICAsIG1fZmxvd1RocmVhZChmbG93VGhyZWFkKQogICAgICwgbV9wYXJlbnRO
YW1lZEZsb3dUaHJlYWQobnVsbHB0cikKICAgICAsIG1faXNWYWxpZChmYWxzZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb25TZXQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lvblNldC5jcHAKaW5kZXggYTkxMTUyYmIzOGQ4
NGQzNzRmMmRmNmZiNjU0NDJmYTJiOGRhZmFjYy4uOTM5Zjk0YTgwZjhlZDM3NzM3ZTM0OTQyODJj
Mjg1OGQzNWEwYWU4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clJlZ2lvblNldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lv
blNldC5jcHAKQEAgLTMxLDcgKzMxLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUmVuZGVy
UmVnaW9uU2V0OjpSZW5kZXJSZWdpb25TZXQoRG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8UmVuZGVy
U3R5bGU+JiYgc3R5bGUsIFJlbmRlckZsb3dUaHJlYWQmIGZsb3dUaHJlYWQpCi0gICAgOiBSZW5k
ZXJSZWdpb24oZG9jdW1lbnQsIFdURjo6bW92ZShzdHlsZSksICZmbG93VGhyZWFkKQorICAgIDog
UmVuZGVyUmVnaW9uKGRvY3VtZW50LCBXVEZNb3ZlKHN0eWxlKSwgJmZsb3dUaHJlYWQpCiB7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwCmluZGV4IDg0
ZDQ0YjEyNTI0ZDQ0MmViMDUwN2Q2ODEzY2NmZjgyOTQ5MjcyZTQuLjcwMzkyOTVkZTc0N2Q3MWQy
MmE5MDM2NTBhOWFjNGYzOWMwNmMwOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJSZXBsYWNlZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclJlcGxhY2VkLmNwcApAQCAtNDcsMjEgKzQ3LDIxIEBAIGNvbnN0IGludCBjRGVmYXVsdFdp
ZHRoID0gMzAwOwogY29uc3QgaW50IGNEZWZhdWx0SGVpZ2h0ID0gMTUwOwogCiBSZW5kZXJSZXBs
YWNlZDo6UmVuZGVyUmVwbGFjZWQoRWxlbWVudCYgZWxlbWVudCwgUmVmPFJlbmRlclN0eWxlPiYm
IHN0eWxlKQotICAgIDogUmVuZGVyQm94KGVsZW1lbnQsIFdURjo6bW92ZShzdHlsZSksIFJlbmRl
clJlcGxhY2VkRmxhZykKKyAgICA6IFJlbmRlckJveChlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSwg
UmVuZGVyUmVwbGFjZWRGbGFnKQogICAgICwgbV9pbnRyaW5zaWNTaXplKGNEZWZhdWx0V2lkdGgs
IGNEZWZhdWx0SGVpZ2h0KQogewogICAgIHNldFJlcGxhY2VkKHRydWUpOwogfQogCiBSZW5kZXJS
ZXBsYWNlZDo6UmVuZGVyUmVwbGFjZWQoRWxlbWVudCYgZWxlbWVudCwgUmVmPFJlbmRlclN0eWxl
PiYmIHN0eWxlLCBjb25zdCBMYXlvdXRTaXplJiBpbnRyaW5zaWNTaXplKQotICAgIDogUmVuZGVy
Qm94KGVsZW1lbnQsIFdURjo6bW92ZShzdHlsZSksIFJlbmRlclJlcGxhY2VkRmxhZykKKyAgICA6
IFJlbmRlckJveChlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSwgUmVuZGVyUmVwbGFjZWRGbGFnKQog
ICAgICwgbV9pbnRyaW5zaWNTaXplKGludHJpbnNpY1NpemUpCiB7CiAgICAgc2V0UmVwbGFjZWQo
dHJ1ZSk7CiB9CiAKIFJlbmRlclJlcGxhY2VkOjpSZW5kZXJSZXBsYWNlZChEb2N1bWVudCYgZG9j
dW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSwgY29uc3QgTGF5b3V0U2l6ZSYgaW50cmlu
c2ljU2l6ZSkKLSAgICA6IFJlbmRlckJveChkb2N1bWVudCwgV1RGOjptb3ZlKHN0eWxlKSwgUmVu
ZGVyUmVwbGFjZWRGbGFnKQorICAgIDogUmVuZGVyQm94KGRvY3VtZW50LCBXVEZNb3ZlKHN0eWxl
KSwgUmVuZGVyUmVwbGFjZWRGbGFnKQogICAgICwgbV9pbnRyaW5zaWNTaXplKGludHJpbnNpY1Np
emUpCiB7CiAgICAgc2V0UmVwbGFjZWQodHJ1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGljYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyUmVwbGljYS5jcHAKaW5kZXggNjFkMGExN2IzOGExOThkMmZjZGYwZTA2ZGFiNDI3ZTI2
MjEyZDllOC4uYzQwZTViM2VlNjgzNjgyMjRkZTZmYzEwNzgwNmQ0NGE1NzJlMmNmMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxpY2EuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsaWNhLmNwcApAQCAtMzUsNyArMzUsNyBA
QAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBSZW5kZXJSZXBsaWNhOjpSZW5kZXJSZXBsaWNhKERv
Y3VtZW50JiBkb2N1bWVudCwgUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQotICAgIDogUmVuZGVy
Qm94KGRvY3VtZW50LCBXVEY6Om1vdmUoc3R5bGUpLCAwKQorICAgIDogUmVuZGVyQm94KGRvY3Vt
ZW50LCBXVEZNb3ZlKHN0eWxlKSwgMCkKIHsKICAgICAvLyBUaGlzIGlzIGEgaGFjay4gUmVwbGlj
YXMgYXJlIHN5bnRoZXRpYywgYW5kIGRvbid0IHBpY2sgdXAgdGhlIGF0dHJpYnV0ZXMgb2YgdGhl
CiAgICAgLy8gcmVuZGVyZXJzIGJlaW5nIHJlcGxpY2F0ZWQsIHNvIHRoZXkgYWx3YXlzIHJlcG9y
dCB0aGF0IHRoZXkgYXJlIGlubGluZSwgbm9uLXJlcGxhY2VkLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclJ1YnkuY3BwCmluZGV4IDI3MTc5N2Y0NDc5ZjliODYyZGIzOGNmNDY1NzJhM2Mx
ZjgxYzIxZTkuLmQ4MzNkMzQxMTI3Y2E1MTgwNzFhOGJlMDAwOTg1MWRmYWQwOTFhYWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieS5jcHAKQEAgLTEyMyw3ICsxMjMsNyBAQCBz
dGF0aWMgaW5saW5lIFJlbmRlclJ1YnlSdW4mIGZpbmRSdWJ5UnVuUGFyZW50KFJlbmRlck9iamVj
dCYgY2hpbGQpCiAvLz09PSBydWJ5IGFzIGlubGluZSBvYmplY3QgPT09CiAKIFJlbmRlclJ1YnlB
c0lubGluZTo6UmVuZGVyUnVieUFzSW5saW5lKEVsZW1lbnQmIGVsZW1lbnQsIFJlZjxSZW5kZXJT
dHlsZT4mJiBzdHlsZSkKLSAgICA6IFJlbmRlcklubGluZShlbGVtZW50LCBXVEY6Om1vdmUoc3R5
bGUpKQorICAgIDogUmVuZGVySW5saW5lKGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKQogewogfQog
CkBAIC0yMjksNyArMjI5LDcgQEAgdm9pZCBSZW5kZXJSdWJ5QXNJbmxpbmU6OnJlbW92ZUNoaWxk
KFJlbmRlck9iamVjdCYgY2hpbGQpCiAvLz09PSBydWJ5IGFzIGJsb2NrIG9iamVjdCA9PT0KIAog
UmVuZGVyUnVieUFzQmxvY2s6OlJlbmRlclJ1YnlBc0Jsb2NrKEVsZW1lbnQmIGVsZW1lbnQsIFJl
ZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkKLSAgICA6IFJlbmRlckJsb2NrRmxvdyhlbGVtZW50LCBX
VEY6Om1vdmUoc3R5bGUpKQorICAgIDogUmVuZGVyQmxvY2tGbG93KGVsZW1lbnQsIFdURk1vdmUo
c3R5bGUpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyUnVieUJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlCYXNl
LmNwcAppbmRleCA5ODIzNjNlOGRkNDM5NmM0NzZmMzJmOTkzZWVlZjE5MDEyZTY0ODk3Li40NWI5
YjE1ZDFhZTQwYzE0YzYxNTRkZDY4ZDc1Y2EwZmE2N2EwMjMyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieUJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJSdWJ5QmFzZS5jcHAKQEAgLTM3LDcgKzM3LDcgQEAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogUmVuZGVyUnVieUJhc2U6OlJlbmRlclJ1YnlCYXNlKERvY3VtZW50JiBk
b2N1bWVudCwgUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQotICAgIDogUmVuZGVyQmxvY2tGbG93
KGRvY3VtZW50LCBXVEY6Om1vdmUoc3R5bGUpKQorICAgIDogUmVuZGVyQmxvY2tGbG93KGRvY3Vt
ZW50LCBXVEZNb3ZlKHN0eWxlKSkKICAgICAsIG1faW5pdGlhbE9mZnNldCgwKQogICAgICwgbV9p
c0FmdGVyRXhwYW5zaW9uKHRydWUpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyUnVieVJ1bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
UnVieVJ1bi5jcHAKaW5kZXggZjY2ZDc0OGJlNjYwOTY2OTBhMWNkYTFmYWMyOTQ1YzczYjgwYzNj
Yi4uOGFiYmY5NTQ5ZWVmZGJhODhkZTAyYmMzMWUwOGU0YTU2ZTMwZTM4OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlSdW4uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5UnVuLmNwcApAQCAtNDUsNyArNDUsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBSZW5kZXJSdWJ5UnVuOjpS
ZW5kZXJSdWJ5UnVuKERvY3VtZW50JiBkb2N1bWVudCwgUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxl
KQotICAgIDogUmVuZGVyQmxvY2tGbG93KGRvY3VtZW50LCBXVEY6Om1vdmUoc3R5bGUpKQorICAg
IDogUmVuZGVyQmxvY2tGbG93KGRvY3VtZW50LCBXVEZNb3ZlKHN0eWxlKSkKICAgICAsIG1fbGFz
dENoYXJhY3RlcigwKQogICAgICwgbV9zZWNvbmRUb0xhc3RDaGFyYWN0ZXIoMCkKIHsKQEAgLTIw
NSw3ICsyMDUsNyBAQCBSZW5kZXJSdWJ5QmFzZSogUmVuZGVyUnVieVJ1bjo6Y3JlYXRlUnVieUJh
c2UoKSBjb25zdAogewogICAgIGF1dG8gbmV3U3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRlQW5v
bnltb3VzU3R5bGVXaXRoRGlzcGxheSgmc3R5bGUoKSwgQkxPQ0spOwogICAgIG5ld1N0eWxlLmdl
dCgpLnNldFRleHRBbGlnbihDRU5URVIpOyAvLyBGSVhNRTogdXNlIFdFQktJVF9DRU5URVI/Ci0g
ICAgYXV0byByZW5kZXJlciA9IG5ldyBSZW5kZXJSdWJ5QmFzZShkb2N1bWVudCgpLCBXVEY6Om1v
dmUobmV3U3R5bGUpKTsKKyAgICBhdXRvIHJlbmRlcmVyID0gbmV3IFJlbmRlclJ1YnlCYXNlKGRv
Y3VtZW50KCksIFdURk1vdmUobmV3U3R5bGUpKTsKICAgICByZW5kZXJlci0+aW5pdGlhbGl6ZVN0
eWxlKCk7CiAgICAgcmV0dXJuIHJlbmRlcmVyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJSdWJ5VGV4dC5jcHAKaW5kZXggZDYyOWRhYzQ4ZjI3ZmMxMDFlN2IzNzU4N2MxMDUy
M2NjZTg4NmU4MS4uZWNjYTA4ZDY0ZTY0MGZjZDk3MjEyMDNhNjY3MTAyY2YyZmQzZWViOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlUZXh0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieVRleHQuY3BwCkBAIC0zNyw3ICsz
Nyw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFJlbmRlclJ1YnlUZXh0OjpSZW5kZXJSdWJ5
VGV4dChFbGVtZW50JiBlbGVtZW50LCBSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCi0gICAgOiBS
ZW5kZXJCbG9ja0Zsb3coZWxlbWVudCwgV1RGOjptb3ZlKHN0eWxlKSkKKyAgICA6IFJlbmRlckJs
b2NrRmxvdyhlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclBhcnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclBhcnQuY3BwCmluZGV4IDMxZDQzNzA2NWM0
NDVjYmUyNDhlM2VkNzk2MGZhY2JlMjI5Njg2NTkuLjMyNGJhMTRmN2M4MDdhNjE5NTk0ZWRlNGIz
MTdkMTdiZGI1NTk0YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJTY3JvbGxiYXJQYXJ0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
U2Nyb2xsYmFyUGFydC5jcHAKQEAgLTM1LDcgKzM1LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogUmVuZGVyU2Nyb2xsYmFyUGFydDo6UmVuZGVyU2Nyb2xsYmFyUGFydChEb2N1bWVudCYgZG9j
dW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSwgUmVuZGVyU2Nyb2xsYmFyKiBzY3JvbGxi
YXIsIFNjcm9sbGJhclBhcnQgcGFydCkKLSAgICA6IFJlbmRlckJsb2NrKGRvY3VtZW50LCBXVEY6
Om1vdmUoc3R5bGUpLCAwKQorICAgIDogUmVuZGVyQmxvY2soZG9jdW1lbnQsIFdURk1vdmUoc3R5
bGUpLCAwKQogICAgICwgbV9zY3JvbGxiYXIoc2Nyb2xsYmFyKQogICAgICwgbV9wYXJ0KHBhcnQp
CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2VhcmNoRmll
bGQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxkLmNwcApp
bmRleCAyMDA4OWVlZjE4MTczN2E5MzMxODY0MDg1ODczMzE1MmZiZTg0ZDRiLi42OGUwMjE5OTFj
YzJlNDE2ZjkwODBhNGI1ZmZhMzA5NWVjOGJhMzZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyU2VhcmNoRmllbGQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJTZWFyY2hGaWVsZC5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAogUmVuZGVyU2VhcmNoRmll
bGQ6OlJlbmRlclNlYXJjaEZpZWxkKEhUTUxJbnB1dEVsZW1lbnQmIGVsZW1lbnQsIFJlZjxSZW5k
ZXJTdHlsZT4mJiBzdHlsZSkKLSAgICA6IFJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZShlbGVt
ZW50LCBXVEY6Om1vdmUoc3R5bGUpKQorICAgIDogUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5l
KGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKQogICAgICwgbV9zZWFyY2hQb3B1cElzVmlzaWJsZShm
YWxzZSkKICAgICAsIG1fc2VhcmNoUG9wdXAoMCkKIHsKQEAgLTE4MCw3ICsxODAsNyBAQCB2b2lk
IFJlbmRlclNlYXJjaEZpZWxkOjp1cGRhdGVDYW5jZWxCdXR0b25WaXNpYmlsaXR5KCkgY29uc3QK
IAogICAgIGF1dG8gY2FuY2VsQnV0dG9uU3R5bGUgPSBSZW5kZXJTdHlsZTo6Y2xvbmUoJmN1clN0
eWxlKTsKICAgICBjYW5jZWxCdXR0b25TdHlsZS5nZXQoKS5zZXRWaXNpYmlsaXR5KGJ1dHRvblZp
c2liaWxpdHkpOwotICAgIGNhbmNlbEJ1dHRvblJlbmRlcmVyLT5zZXRTdHlsZShXVEY6Om1vdmUo
Y2FuY2VsQnV0dG9uU3R5bGUpKTsKKyAgICBjYW5jZWxCdXR0b25SZW5kZXJlci0+c2V0U3R5bGUo
V1RGTW92ZShjYW5jZWxCdXR0b25TdHlsZSkpOwogfQogCiBFVmlzaWJpbGl0eSBSZW5kZXJTZWFy
Y2hGaWVsZDo6dmlzaWJpbGl0eUZvckNhbmNlbEJ1dHRvbigpIGNvbnN0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2xpZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJTbGlkZXIuY3BwCmluZGV4IDAyMWI2NGE2MDUwYWFhYWNhZmMxNzkx
Y2U1Yzk1OTY4ZDdhMmRlYTkuLmFiMmUzNmQxMmU1ZDk5OTUwOGZjOTgxYWYzMDZjNjRiM2Y5Mzlh
MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbGlkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbGlkZXIuY3BwCkBAIC00OCw3
ICs0OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNvbnN0IGludCBSZW5kZXJTbGlkZXI6OmRl
ZmF1bHRUcmFja0xlbmd0aCA9IDEyOTsKIAogUmVuZGVyU2xpZGVyOjpSZW5kZXJTbGlkZXIoSFRN
TElucHV0RWxlbWVudCYgZWxlbWVudCwgUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQotICAgIDog
UmVuZGVyRmxleGlibGVCb3goZWxlbWVudCwgV1RGOjptb3ZlKHN0eWxlKSkKKyAgICA6IFJlbmRl
ckZsZXhpYmxlQm94KGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKQogewogICAgIC8vIFdlIGFzc3Vt
ZSBSZW5kZXJTbGlkZXIgd29ya3Mgb25seSB3aXRoIDxpbnB1dCB0eXBlPXJhbmdlPi4KICAgICBB
U1NFUlQoZWxlbWVudC5pc1JhbmdlQ29udHJvbCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwCmluZGV4IGU4YjhmMGZiNGJm
MzVmNzgwNmE1NTU1OWZmMWY1YmYxY2I3YzQ3ZDQuLjk5Yzk2N2E0NzU3OTNhNTNlZWQ0MWVlMmU4
NWVhNWYxNmEzYTk1YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclNuYXBzaG90dGVkUGx1Z0luLmNwcApAQCAtNDksNyArNDksNyBAQAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbjo6UmVuZGVyU25hcHNob3R0ZWRQbHVn
SW4oSFRNTFBsdWdJbkltYWdlRWxlbWVudCYgZWxlbWVudCwgUmVmPFJlbmRlclN0eWxlPiYmIHN0
eWxlKQotICAgIDogUmVuZGVyRW1iZWRkZWRPYmplY3QoZWxlbWVudCwgV1RGOjptb3ZlKHN0eWxl
KSkKKyAgICA6IFJlbmRlckVtYmVkZGVkT2JqZWN0KGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKQog
ICAgICwgbV9zbmFwc2hvdFJlc291cmNlKHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVySW1hZ2VSZXNv
dXJjZT4oKSkKICAgICAsIG1faXNQb3RlbnRpYWxNb3VzZUFjdGl2YXRpb24oZmFsc2UpCiB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcAppbmRleCBkODA5N2Y1YTExMzI2
MjAyMzg1M2I3ZTViZmJlNDcxNTQ5NDRmYzVmLi41YTRhZTcwNmU4YmZjYjgwMWZjZjQ1NTFlNDFh
MGZiOGYzMmNjMzJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGFibGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHAK
QEAgLTUxLDcgKzUxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogdXNpbmcgbmFtZXNwYWNlIEhU
TUxOYW1lczsKIAogUmVuZGVyVGFibGU6OlJlbmRlclRhYmxlKEVsZW1lbnQmIGVsZW1lbnQsIFJl
ZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkKLSAgICA6IFJlbmRlckJsb2NrKGVsZW1lbnQsIFdURjo6
bW92ZShzdHlsZSksIDApCisgICAgOiBSZW5kZXJCbG9jayhlbGVtZW50LCBXVEZNb3ZlKHN0eWxl
KSwgMCkKICAgICAsIG1faGVhZChudWxscHRyKQogICAgICwgbV9mb290KG51bGxwdHIpCiAgICAg
LCBtX2ZpcnN0Qm9keShudWxscHRyKQpAQCAtNzUsNyArNzUsNyBAQCBSZW5kZXJUYWJsZTo6UmVu
ZGVyVGFibGUoRWxlbWVudCYgZWxlbWVudCwgUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQogfQog
CiBSZW5kZXJUYWJsZTo6UmVuZGVyVGFibGUoRG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8UmVuZGVy
U3R5bGU+JiYgc3R5bGUpCi0gICAgOiBSZW5kZXJCbG9jayhkb2N1bWVudCwgV1RGOjptb3ZlKHN0
eWxlKSwgMCkKKyAgICA6IFJlbmRlckJsb2NrKGRvY3VtZW50LCBXVEZNb3ZlKHN0eWxlKSwgMCkK
ICAgICAsIG1faGVhZChudWxscHRyKQogICAgICwgbV9mb290KG51bGxwdHIpCiAgICAgLCBtX2Zp
cnN0Qm9keShudWxscHRyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRhYmxlQ2FwdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFi
bGVDYXB0aW9uLmNwcAppbmRleCAwNWM4NDZmYWQzNTVlZTI5MDc3MjNkZjJjMDhhOWZjNGM2OGRk
ZmJiLi42NjMzMTU4YmY0Zjk1NjdmNjg2N2FhMWM2YzQxOGY5MzQ0YTI2MGZhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDYXB0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDYXB0aW9uLmNwcApAQCAtMjUsNyAr
MjUsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBSZW5kZXJUYWJsZUNhcHRpb246OlJlbmRl
clRhYmxlQ2FwdGlvbihFbGVtZW50JiBlbGVtZW50LCBSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUp
Ci0gICAgOiBSZW5kZXJCbG9ja0Zsb3coZWxlbWVudCwgV1RGOjptb3ZlKHN0eWxlKSkKKyAgICA6
IFJlbmRlckJsb2NrRmxvdyhlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSkKIHsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcAppbmRleCAxNGU5ODc2NTU1
ZjYwYzRiMDJhNTUwYTI2NTMwNmZkZDMxOGE4MjE4Li5hOGM1OWFhOWMyMGUwNDY3ZDg2YzE0ZDE5
MDI2MThjZjI0NzI5YTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGFibGVDZWxsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFi
bGVDZWxsLmNwcApAQCAtNTUsNyArNTUsNyBAQCBDT01QSUxFX0FTU0VSVChzaXplb2YoUmVuZGVy
VGFibGVDZWxsKSA9PSBzaXplb2YoU2FtZVNpemVBc1JlbmRlclRhYmxlQ2VsbCksIFJlbgogQ09N
UElMRV9BU1NFUlQoc2l6ZW9mKENvbGxhcHNlZEJvcmRlclZhbHVlKSA9PSAxMiwgQ29sbGFwc2Vk
Qm9yZGVyVmFsdWVfc2hvdWxkX3N0YXlfc21hbGwpOwogCiBSZW5kZXJUYWJsZUNlbGw6OlJlbmRl
clRhYmxlQ2VsbChFbGVtZW50JiBlbGVtZW50LCBSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCi0g
ICAgOiBSZW5kZXJCbG9ja0Zsb3coZWxlbWVudCwgV1RGOjptb3ZlKHN0eWxlKSkKKyAgICA6IFJl
bmRlckJsb2NrRmxvdyhlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSkKICAgICAsIG1fY29sdW1uKHVu
c2V0Q29sdW1uSW5kZXgpCiAgICAgLCBtX2NlbGxXaWR0aENoYW5nZWQoZmFsc2UpCiAgICAgLCBt
X2hhc0NvbFNwYW4oZmFsc2UpCkBAIC03MSw3ICs3MSw3IEBAIFJlbmRlclRhYmxlQ2VsbDo6UmVu
ZGVyVGFibGVDZWxsKEVsZW1lbnQmIGVsZW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkK
IH0KIAogUmVuZGVyVGFibGVDZWxsOjpSZW5kZXJUYWJsZUNlbGwoRG9jdW1lbnQmIGRvY3VtZW50
LCBSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCi0gICAgOiBSZW5kZXJCbG9ja0Zsb3coZG9jdW1l
bnQsIFdURjo6bW92ZShzdHlsZSkpCisgICAgOiBSZW5kZXJCbG9ja0Zsb3coZG9jdW1lbnQsIFdU
Rk1vdmUoc3R5bGUpKQogICAgICwgbV9jb2x1bW4odW5zZXRDb2x1bW5JbmRleCkKICAgICAsIG1f
Y2VsbFdpZHRoQ2hhbmdlZChmYWxzZSkKICAgICAsIG1faGFzQ29sU3BhbihmYWxzZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNvbC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDb2wuY3BwCmluZGV4IDEyYjFiZjMxMWZl
NGRkMTEyZTEwYTA0NjcwNmJhZTEwZTQzM2VjMzYuLjQxYzIyNTc5ZjVlMjBmMjMwN2Y0MTY4ZmY0
ZmViNTUyZWQzNTdlN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUYWJsZUNvbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxl
Q29sLmNwcApAQCAtMzgsNyArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB1c2luZyBuYW1l
c3BhY2UgSFRNTE5hbWVzOwogCiBSZW5kZXJUYWJsZUNvbDo6UmVuZGVyVGFibGVDb2woRWxlbWVu
dCYgZWxlbWVudCwgUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQotICAgIDogUmVuZGVyQm94KGVs
ZW1lbnQsIFdURjo6bW92ZShzdHlsZSksIDApCisgICAgOiBSZW5kZXJCb3goZWxlbWVudCwgV1RG
TW92ZShzdHlsZSksIDApCiB7CiAgICAgLy8gaW5pdCBSZW5kZXJPYmplY3QgYXR0cmlidXRlcwog
ICAgIHNldElubGluZSh0cnVlKTsgLy8gb3VyIG9iamVjdCBpcyBub3QgSW5saW5lCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVSb3cuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlUm93LmNwcAppbmRleCBhZGRkMWFjMTA0ZWM2
YjMxODBhNTUwOWU2NWJiYTg0MGExMGZiY2M5Li4xZTBkMTkwMWI0NWM0YjVkMTU0OTMwNjQ2MjI5
ZmY1YjEzODdhNTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGFibGVSb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVJv
dy5jcHAKQEAgLTM5LDE0ICszOSwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB1c2luZyBuYW1l
c3BhY2UgSFRNTE5hbWVzOwogCiBSZW5kZXJUYWJsZVJvdzo6UmVuZGVyVGFibGVSb3coRWxlbWVu
dCYgZWxlbWVudCwgUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQotICAgIDogUmVuZGVyQm94KGVs
ZW1lbnQsIFdURjo6bW92ZShzdHlsZSksIDApCisgICAgOiBSZW5kZXJCb3goZWxlbWVudCwgV1RG
TW92ZShzdHlsZSksIDApCiAgICAgLCBtX3Jvd0luZGV4KHVuc2V0Um93SW5kZXgpCiB7CiAgICAg
c2V0SW5saW5lKGZhbHNlKTsKIH0KIAogUmVuZGVyVGFibGVSb3c6OlJlbmRlclRhYmxlUm93KERv
Y3VtZW50JiBkb2N1bWVudCwgUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQotICAgIDogUmVuZGVy
Qm94KGRvY3VtZW50LCBXVEY6Om1vdmUoc3R5bGUpLCAwKQorICAgIDogUmVuZGVyQm94KGRvY3Vt
ZW50LCBXVEZNb3ZlKHN0eWxlKSwgMCkKICAgICAsIG1fcm93SW5kZXgodW5zZXRSb3dJbmRleCkK
IHsKICAgICBzZXRJbmxpbmUoZmFsc2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGFibGVTZWN0aW9uLmNwcAppbmRleCBiZmZjMDAxN2M1ZTYxOGI0OTBhNGIzNzY3MzYw
MzJlYjU5ZjA5MDk1Li5mZjk4NzdiNWE2OGI4YjlhYTkyM2ZlNDJmZjE3OTdlZTA5YTg3MmFkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcApA
QCAtODMsMTMgKzgzLDEzIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCB1cGRhdGVMb2dpY2FsSGVpZ2h0
Rm9yQ2VsbChSZW5kZXJUYWJsZVNlY3Rpb246OlJvd1N0cnVjdCYgcm93CiB9CiAKIFJlbmRlclRh
YmxlU2VjdGlvbjo6UmVuZGVyVGFibGVTZWN0aW9uKEVsZW1lbnQmIGVsZW1lbnQsIFJlZjxSZW5k
ZXJTdHlsZT4mJiBzdHlsZSkKLSAgICA6IFJlbmRlckJveChlbGVtZW50LCBXVEY6Om1vdmUoc3R5
bGUpLCAwKQorICAgIDogUmVuZGVyQm94KGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpLCAwKQogewog
ICAgIHNldElubGluZShmYWxzZSk7CiB9CiAKIFJlbmRlclRhYmxlU2VjdGlvbjo6UmVuZGVyVGFi
bGVTZWN0aW9uKERvY3VtZW50JiBkb2N1bWVudCwgUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQot
ICAgIDogUmVuZGVyQm94KGRvY3VtZW50LCBXVEY6Om1vdmUoc3R5bGUpLCAwKQorICAgIDogUmVu
ZGVyQm94KGRvY3VtZW50LCBXVEZNb3ZlKHN0eWxlKSwgMCkKIHsKICAgICBzZXRJbmxpbmUoZmFs
c2UpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRD
b250cm9sLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5j
cHAKaW5kZXggNWUyZjRlN2UxMmE4OGQ0YTYxMzRmOTE0MDVhZDUyODVkNzQxOWJmOS4uNWFiMmZh
YzM2OTVmN2Y5OGY0MzJiYmQ4YjlhMmI4YWViOGY1MjY5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuY3BwCkBAIC0zOCw3ICszOCw3IEBACiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIFJlbmRlclRleHRDb250cm9sOjpSZW5kZXJUZXh0Q29udHJvbChI
VE1MVGV4dEZvcm1Db250cm9sRWxlbWVudCYgZWxlbWVudCwgUmVmPFJlbmRlclN0eWxlPiYmIHN0
eWxlKQotICAgIDogUmVuZGVyQmxvY2tGbG93KGVsZW1lbnQsIFdURjo6bW92ZShzdHlsZSkpCisg
ICAgOiBSZW5kZXJCbG9ja0Zsb3coZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpCiB7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmgKaW5kZXggMzIzNGU3
Mzk1ODVkY2QyYjQ1ODhmN2ZmYjgyZTg4ZWI4YzZhYTljZi4uNWY5MDExNTg5ZDk3YjNmMDNmYjE0
NWU3MTZmYTcwNzVhNmY0N2RkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRleHRDb250cm9sLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRleHRDb250cm9sLmgKQEAgLTk0LDcgKzk0LDcgQEAgcHJpdmF0ZToKIGNsYXNzIFJlbmRlclRl
eHRDb250cm9sSW5uZXJDb250YWluZXIgZmluYWwgOiBwdWJsaWMgUmVuZGVyRmxleGlibGVCb3gg
ewogcHVibGljOgogICAgIGV4cGxpY2l0IFJlbmRlclRleHRDb250cm9sSW5uZXJDb250YWluZXIo
RWxlbWVudCYgZWxlbWVudCwgUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQotICAgICAgICA6IFJl
bmRlckZsZXhpYmxlQm94KGVsZW1lbnQsIFdURjo6bW92ZShzdHlsZSkpCisgICAgICAgIDogUmVu
ZGVyRmxleGlibGVCb3goZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpCiAgICAgeyB9CiAgICAgdmly
dHVhbCB+UmVuZGVyVGV4dENvbnRyb2xJbm5lckNvbnRhaW5lcigpIHsgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sTXVsdGlMaW5lLmNw
cAppbmRleCAyNTdjZDY3MDFmNmUyOGFmN2QyNjlhZGU3ZDk2MGRlMmViM2M1NDIxLi44Y2VmYmY4
NmI0NTQxNDdiMDZiMTY0ODIyZWMxNTliYWVjNThkNmU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZS5jcHAKQEAgLTMz
LDcgKzMzLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUmVuZGVyVGV4dENvbnRyb2xNdWx0
aUxpbmU6OlJlbmRlclRleHRDb250cm9sTXVsdGlMaW5lKEhUTUxUZXh0QXJlYUVsZW1lbnQmIGVs
ZW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkKLSAgICA6IFJlbmRlclRleHRDb250cm9s
KGVsZW1lbnQsIFdURjo6bW92ZShzdHlsZSkpCisgICAgOiBSZW5kZXJUZXh0Q29udHJvbChlbGVt
ZW50LCBXVEZNb3ZlKHN0eWxlKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmNwcAppbmRleCA3OWUwZGVh
NWFlNGYxNjU3MmI1OTY5ZGUwMThhNzMzNzMxZjllNDU1Li5lNmY1YjZiOTFkMjcxZTk0NTUzZWRm
NWRmMDRjMTIwODc5NmRkYTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmNwcApAQCAtNTQsNyArNTQsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCiBSZW5kZXJU
ZXh0Q29udHJvbFNpbmdsZUxpbmU6OlJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZShIVE1MSW5w
dXRFbGVtZW50JiBlbGVtZW50LCBSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCi0gICAgOiBSZW5k
ZXJUZXh0Q29udHJvbChlbGVtZW50LCBXVEY6Om1vdmUoc3R5bGUpKQorICAgIDogUmVuZGVyVGV4
dENvbnRyb2woZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpCiAgICAgLCBtX2Rlc2lyZWRJbm5lclRl
eHRMb2dpY2FsSGVpZ2h0KC0xKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5oCmluZGV4IGZkM2Y3MGJiNmJiZjhk
OWY4YjNhZGFmN2NmYWJkMmUyOWZkMTliMWUuLmE1ZjgwZjQ4MmM2YTZiMTkxZmRlOWU2MWFiOTgz
ZGU1ZjI1NDI1ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
ZXh0Q29udHJvbFNpbmdsZUxpbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmgKQEAgLTk4LDcgKzk4LDcgQEAgaW5saW5lIEhUTUxF
bGVtZW50KiBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OmlubmVyQmxvY2tFbGVtZW50KCkg
Y29uc3QKIGNsYXNzIFJlbmRlclRleHRDb250cm9sSW5uZXJCbG9jayBmaW5hbCA6IHB1YmxpYyBS
ZW5kZXJCbG9ja0Zsb3cgewogcHVibGljOgogICAgIFJlbmRlclRleHRDb250cm9sSW5uZXJCbG9j
ayhFbGVtZW50JiBlbGVtZW50LCBSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCi0gICAgICAgIDog
UmVuZGVyQmxvY2tGbG93KGVsZW1lbnQsIFdURjo6bW92ZShzdHlsZSkpCisgICAgICAgIDogUmVu
ZGVyQmxvY2tGbG93KGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKQogICAgIHsKICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUVmbC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVFZmwuY3BwCmluZGV4IDA2ZWY5OGY1
ODcxMjkxYzE0MGI2NmQwYzA5MDZmZDJhMTllOGJiMGIuLmIzYmI3MjI5ODMzZWZjOGMxZmE5Mzc2
MzFhM2Y4NjFlNzVmNmIwZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUaGVtZUVmbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRo
ZW1lRWZsLmNwcApAQCAtMjQ2LDkgKzI0Niw5IEBAIFJlbmRlclRoZW1lRWZsOjpUaGVtZVBhcnRD
YWNoZUVudHJ5KiBSZW5kZXJUaGVtZUVmbDo6Z2V0VGhlbWVQYXJ0RnJvbUNhY2hlKEZvcm1UCiAg
ICAgICAgICAgICBpZiAoY2FuZGlkYXRlZEVudHJ5LT50eXBlID09IHR5cGUpIHsKICAgICAgICAg
ICAgICAgICAvLyBGb3VuZCB0aGUgcmlnaHQgaXRlbSwgbW92ZSBpdCB0byB0aGUgaGVhZCBvZiB0
aGUgbGlzdAogICAgICAgICAgICAgICAgIC8vIGFuZCByZXR1cm4gaXQuCi0gICAgICAgICAgICAg
ICAgYXV0byB0ZW1wID0gV1RGOjptb3ZlKG1fcGFydENhY2hlW2ldKTsKKyAgICAgICAgICAgICAg
ICBhdXRvIHRlbXAgPSBXVEZNb3ZlKG1fcGFydENhY2hlW2ldKTsKICAgICAgICAgICAgICAgICBt
X3BhcnRDYWNoZS5yZW1vdmUoaSk7Ci0gICAgICAgICAgICAgICAgbV9wYXJ0Q2FjaGUuaW5zZXJ0
KDAsIFdURjo6bW92ZSh0ZW1wKSk7CisgICAgICAgICAgICAgICAgbV9wYXJ0Q2FjaGUuaW5zZXJ0
KDAsIFdURk1vdmUodGVtcCkpOwogICAgICAgICAgICAgICAgIHJldHVybiBtX3BhcnRDYWNoZS5m
aXJzdCgpLmdldCgpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV1c2FibGVOb2RlSW5k
ZXggPSBpOwpAQCAtMjU4LDcgKzI1OCw3IEBAIFJlbmRlclRoZW1lRWZsOjpUaGVtZVBhcnRDYWNo
ZUVudHJ5KiBSZW5kZXJUaGVtZUVmbDo6Z2V0VGhlbWVQYXJ0RnJvbUNhY2hlKEZvcm1UCiAgICAg
aWYgKG1fcGFydENhY2hlLnNpemUoKSA8IFJFTkRFUl9USEVNRV9FRkxfUEFSVF9DQUNIRV9NQVgp
IHsKICAgICAgICAgYXV0byBlbnRyeSA9IFRoZW1lUGFydENhY2hlRW50cnk6OmNyZWF0ZSh0aGVt
ZVBhdGgoKSwgdHlwZSwgc2l6ZSk7CiAgICAgICAgIGlmIChlbnRyeSkKLSAgICAgICAgICAgIG1f
cGFydENhY2hlLmluc2VydCgwLCBXVEY6Om1vdmUoZW50cnkpKTsKKyAgICAgICAgICAgIG1fcGFy
dENhY2hlLmluc2VydCgwLCBXVEZNb3ZlKGVudHJ5KSk7CiAKICAgICAgICAgcmV0dXJuIG1fcGFy
dENhY2hlLmZpcnN0KCkuZ2V0KCk7CiAgICAgfQpAQCAtMjcyLDkgKzI3Miw5IEBAIFJlbmRlclRo
ZW1lRWZsOjpUaGVtZVBhcnRDYWNoZUVudHJ5KiBSZW5kZXJUaGVtZUVmbDo6Z2V0VGhlbWVQYXJ0
RnJvbUNhY2hlKEZvcm1UCiAgICAgVGhlbWVQYXJ0Q2FjaGVFbnRyeSogcmV1c2VkRW50cnkgPSBt
X3BhcnRDYWNoZVtyZXVzYWJsZU5vZGVJbmRleF0uZ2V0KCk7CiAgICAgQVNTRVJUKHJldXNlZEVu
dHJ5KTsKICAgICByZXVzZWRFbnRyeS0+cmV1c2UodGhlbWVQYXRoKCksIHR5cGUsIHNpemUpOwot
ICAgIGF1dG8gdGVtcCA9IFdURjo6bW92ZShtX3BhcnRDYWNoZVtyZXVzYWJsZU5vZGVJbmRleF0p
OworICAgIGF1dG8gdGVtcCA9IFdURk1vdmUobV9wYXJ0Q2FjaGVbcmV1c2FibGVOb2RlSW5kZXhd
KTsKICAgICBtX3BhcnRDYWNoZS5yZW1vdmUocmV1c2FibGVOb2RlSW5kZXgpOwotICAgIG1fcGFy
dENhY2hlLmluc2VydCgwLCBXVEY6Om1vdmUodGVtcCkpOworICAgIG1fcGFydENhY2hlLmluc2Vy
dCgwLCBXVEZNb3ZlKHRlbXApKTsKIAogICAgIHJldHVybiBtX3BhcnRDYWNoZS5maXJzdCgpLmdl
dCgpOwogfQpAQCAtNTIwLDcgKzUyMCw3IEBAIGJvb2wgUmVuZGVyVGhlbWVFZmw6OmxvYWRUaGVt
ZSgpCiAgICAgICAgIGNsZWFyVGhlbWVQYXJ0Q2FjaGUoKTsKIAogICAgIC8vIFNldCBuZXcgbG9h
ZGVkIHRoZW1lLCBhbmQgYXBwbHkgaXQuCi0gICAgbV9lZGplID0gV1RGOjptb3ZlKG8pOworICAg
IG1fZWRqZSA9IFdURk1vdmUobyk7CiAKICAgICBjb25zdCBjaGFyKiB0aGlja25lc3MgPSBlZGpl
X29iamVjdF9kYXRhX2dldChtX2VkamUuZ2V0KCksICJzY3JvbGxiYXIudGhpY2tuZXNzIik7CiAg
ICAgaWYgKHRoaWNrbmVzcyAmJiAhU2V0dGluZ3M6Om1vY2tTY3JvbGxiYXJzRW5hYmxlZCgpKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCmluZGV4IDQzYmEzOGYz
N2Q4ZWU4M2E2ZjgxMzI0MjYxOGQxNGQ3MjU1OGM5ZWUuLjMwNDNhZDI3NGM0NTU2NTE4NDg1ZDRj
MjJjZmI5MTc0MDlkODgwYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUaGVtZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhl
bWVNYWMubW0KQEAgLTExNDMsNyArMTE0Myw3IEBAIGJvb2wgUmVuZGVyVGhlbWVNYWM6OnBhaW50
UHJvZ3Jlc3NCYXIoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJPYmplY3QsIGNvbnN0IFBhCiAg
ICAgICAgIHBhaW50SW5mby5jb250ZXh0KCkuc2NhbGUoRmxvYXRTaXplKC0xLCAxKSk7CiAgICAg
fQogCi0gICAgcGFpbnRJbmZvLmNvbnRleHQoKS5kcmF3Q29uc3VtaW5nSW1hZ2VCdWZmZXIoV1RG
Ojptb3ZlKGltYWdlQnVmZmVyKSwgaW5mbGF0ZWRSZWN0LmxvY2F0aW9uKCkpOworICAgIHBhaW50
SW5mby5jb250ZXh0KCkuZHJhd0NvbnN1bWluZ0ltYWdlQnVmZmVyKFdURk1vdmUoaW1hZ2VCdWZm
ZXIpLCBpbmZsYXRlZFJlY3QubG9jYXRpb24oKSk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVlRUQ3VlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWVFRDdWUuY3BwCmluZGV4IDllOTE2YjZhZWMw
OWYwN2Q5YThmMGNmMjY4YTViODllODJmMDc5MTUuLmY5N2JhMWMxNzc3NDA3MjY2ZTk1MTI5MTFj
MDI2ODZjMTg2NWY5YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJWVFRDdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWVFRDdWUu
Y3BwCkBAIC0zNyw3ICszNyw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFJlbmRlclZUVEN1
ZTo6UmVuZGVyVlRUQ3VlKFZUVEN1ZUJveCYgZWxlbWVudCwgUmVmPFJlbmRlclN0eWxlPiYmIHN0
eWxlKQotICAgIDogUmVuZGVyQmxvY2tGbG93KGVsZW1lbnQsIFdURjo6bW92ZShzdHlsZSkpCisg
ICAgOiBSZW5kZXJCbG9ja0Zsb3coZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpCiAgICAgLCBtX2N1
ZShlbGVtZW50LmdldEN1ZSgpKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclZpZGVvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJW
aWRlby5jcHAKaW5kZXggZTkzNTVhYTljMTVmOTllMGZjMzE4MWU2ZDFmYjQ1NGI5NmM4NzM4NS4u
OTc2NjIxZDVmOTkxZmI5ZDFiMDk3NDkyNzVlNzQ3ZjI5Y2UyY2YxMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZGVvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVmlkZW8uY3BwCkBAIC00OSw3ICs0OSw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKIFJlbmRlclZpZGVvOjpSZW5k
ZXJWaWRlbyhIVE1MVmlkZW9FbGVtZW50JiBlbGVtZW50LCBSZWY8UmVuZGVyU3R5bGU+JiYgc3R5
bGUpCi0gICAgOiBSZW5kZXJNZWRpYShlbGVtZW50LCBXVEY6Om1vdmUoc3R5bGUpKQorICAgIDog
UmVuZGVyTWVkaWEoZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpCiB7CiAgICAgc2V0SW50cmluc2lj
U2l6ZShjYWxjdWxhdGVJbnRyaW5zaWNTaXplKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclZpZXcuY3BwCmluZGV4IGZmNmZmOWEzNTJiYWExMTc2ODMzMDkwMjViMjEwMjg0NTk3
ZWQyNDkuLjNjN2ZjNmUyNTgwMWQ3OTAwNzEwYzJhZTVhZTg2ZDJkM2VjNGQyNWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKQEAgLTExNSw3ICsxMTUsNyBAQCBwcml2
YXRlOgogfTsKIAogUmVuZGVyVmlldzo6UmVuZGVyVmlldyhEb2N1bWVudCYgZG9jdW1lbnQsIFJl
ZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkKLSAgICA6IFJlbmRlckJsb2NrRmxvdyhkb2N1bWVudCwg
V1RGOjptb3ZlKHN0eWxlKSkKKyAgICA6IFJlbmRlckJsb2NrRmxvdyhkb2N1bWVudCwgV1RGTW92
ZShzdHlsZSkpCiAgICAgLCBtX2ZyYW1lVmlldygqZG9jdW1lbnQudmlldygpKQogICAgICwgbV9z
ZWxlY3Rpb25VbnNwbGl0U3RhcnQobnVsbHB0cikKICAgICAsIG1fc2VsZWN0aW9uVW5zcGxpdEVu
ZChudWxscHRyKQpAQCAtOTIyLDcgKzkyMiw3IEBAIHZvaWQgUmVuZGVyVmlldzo6dXBkYXRlU2Vs
ZWN0aW9uRm9yU3VidHJlZXMoUmVuZGVyU3VidHJlZXNNYXAmIHJlbmRlclN1YnRyZWVzTWFwCiAg
ICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxPbGRTZWxlY3Rpb25EYXRhPiBvbGRTZWxlY3Rpb25EYXRh
ID0gc3RkOjptYWtlX3VuaXF1ZTxPbGRTZWxlY3Rpb25EYXRhPigpOwogCiAgICAgICAgIGNsZWFy
U3VidHJlZVNlbGVjdGlvbihyb290LCBibG9ja1JlcGFpbnRNb2RlLCAqb2xkU2VsZWN0aW9uRGF0
YSk7Ci0gICAgICAgIG9sZFNlbGVjdGlvbkRhdGFNYXAuc2V0KCZyb290LCBXVEY6Om1vdmUob2xk
U2VsZWN0aW9uRGF0YSkpOworICAgICAgICBvbGRTZWxlY3Rpb25EYXRhTWFwLnNldCgmcm9vdCwg
V1RGTW92ZShvbGRTZWxlY3Rpb25EYXRhKSk7CiAKICAgICAgICAgcm9vdC5zZXRTZWxlY3Rpb25E
YXRhKHN1YnRyZWVTZWxlY3Rpb25JbmZvLnZhbHVlKTsKICAgICAgICAgaWYgKGhhc1JlbmRlck5h
bWVkRmxvd1RocmVhZHMoKSkKQEAgLTEwMjYsNyArMTAyNiw3IEBAIHZvaWQgUmVuZGVyVmlldzo6
YXBwbHlTdWJ0cmVlU2VsZWN0aW9uKGNvbnN0IFNlbGVjdGlvblN1YnRyZWVSb290JiByb290LCBT
ZWxlY3RpCiAgICAgICAgICAgICAgICAgbV9zZWxlY3Rpb25SZWN0R2F0aGVyZXIuc2V0VGV4dE9u
bHkoZmFsc2UpOwogI2VuZGlmCiAKLSAgICAgICAgICAgIG5ld1NlbGVjdGVkT2JqZWN0cy5zZXQo
Y3VycmVudFJlbmRlcmVyLCBXVEY6Om1vdmUoc2VsZWN0aW9uSW5mbykpOworICAgICAgICAgICAg
bmV3U2VsZWN0ZWRPYmplY3RzLnNldChjdXJyZW50UmVuZGVyZXIsIFdURk1vdmUoc2VsZWN0aW9u
SW5mbykpOwogCiAgICAgICAgICAgICBSZW5kZXJCbG9jayogY29udGFpbmluZ0Jsb2NrID0gY3Vy
cmVudFJlbmRlcmVyLT5jb250YWluaW5nQmxvY2soKTsKICAgICAgICAgICAgIHdoaWxlIChjb250
YWluaW5nQmxvY2sgJiYgIWNvbnRhaW5pbmdCbG9jay0+aXNSZW5kZXJWaWV3KCkpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oCmluZGV4IDdiNDAwNzVkNGUyZTRjNjc2M2JiNDA0
YzAwNzBhZmVhYzNjZGYwNjguLjVkN2IxMjM0ZmM1M2MyOTFkZjhhYmE1ZDI4ZTQwM2I0MmM3NWU4
MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaApAQCAtMjc1LDcgKzI3NSw3
IEBAIHByaXZhdGU6CiAgICAgICAgIC8vIFdlIHB1c2ggTGF5b3V0U3RhdGUgZXZlbiBpZiBsYXlv
dXRTdGF0ZSBpcyBkaXNhYmxlZCBiZWNhdXNlIGl0IHN0b3JlcyBsYXlvdXREZWx0YSB0b28uCiAg
ICAgICAgIGlmICghZG9pbmdGdWxsUmVwYWludCgpIHx8IG1fbGF5b3V0U3RhdGUtPmlzUGFnaW5h
dGVkKCkgfHwgcmVuZGVyZXIuZmxvd1RocmVhZENvbnRhaW5pbmdCbG9jaygpCiAgICAgICAgICAg
ICB8fCBtX2xheW91dFN0YXRlLT5saW5lR3JpZCgpIHx8IChyZW5kZXJlci5zdHlsZSgpLmxpbmVH
cmlkKCkgIT0gUmVuZGVyU3R5bGU6OmluaXRpYWxMaW5lR3JpZCgpICYmIHJlbmRlcmVyLmlzUmVu
ZGVyQmxvY2tGbG93KCkpKSB7Ci0gICAgICAgICAgICBtX2xheW91dFN0YXRlID0gc3RkOjptYWtl
X3VuaXF1ZTxMYXlvdXRTdGF0ZT4oV1RGOjptb3ZlKG1fbGF5b3V0U3RhdGUpLCAmcmVuZGVyZXIs
IG9mZnNldCwgcGFnZUhlaWdodCwgcGFnZUhlaWdodENoYW5nZWQpOworICAgICAgICAgICAgbV9s
YXlvdXRTdGF0ZSA9IHN0ZDo6bWFrZV91bmlxdWU8TGF5b3V0U3RhdGU+KFdURk1vdmUobV9sYXlv
dXRTdGF0ZSksICZyZW5kZXJlciwgb2Zmc2V0LCBwYWdlSGVpZ2h0LCBwYWdlSGVpZ2h0Q2hhbmdl
ZCk7CiAgICAgICAgICAgICBwdXNoTGF5b3V0U3RhdGVGb3JDdXJyZW50Rmxvd1RocmVhZChyZW5k
ZXJlcik7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQpAQCAtMjg1LDcgKzI4
NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwb3BMYXlvdXRTdGF0ZSgpCiAgICAgewogICAgICAg
ICBwb3BMYXlvdXRTdGF0ZUZvckN1cnJlbnRGbG93VGhyZWFkKCk7Ci0gICAgICAgIG1fbGF5b3V0
U3RhdGUgPSBXVEY6Om1vdmUobV9sYXlvdXRTdGF0ZS0+bV9uZXh0KTsKKyAgICAgICAgbV9sYXlv
dXRTdGF0ZSA9IFdURk1vdmUobV9sYXlvdXRTdGF0ZS0+bV9uZXh0KTsKICAgICB9CiAKICAgICAv
LyBTdXNwZW5kcyB0aGUgTGF5b3V0U3RhdGUgb3B0aW1pemF0aW9uLiBVc2VkIHVuZGVyIHRyYW5z
Zm9ybXMgdGhhdCBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgYnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlcldpZGdldC5jcHAKaW5kZXggZjk5ZWQ0ZTgzMWYwYjhlMmViOGIwNGEzNjkxNjI3
ZWI3MzRkNTZiMC4uZTQ5NDcxMzFhNjA3NzA2ZDBjOGI1M2RjMDVjZDlmMGI0NTRhY2E1NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAKQEAgLTgxLDcgKzgxLDcg
QEAgc3RhdGljIHZvaWQgbW92ZVdpZGdldFRvUGFyZW50U29vbihXaWRnZXQqIGNoaWxkLCBGcmFt
ZVZpZXcqIHBhcmVudCkKIH0KIAogUmVuZGVyV2lkZ2V0OjpSZW5kZXJXaWRnZXQoSFRNTEZyYW1l
T3duZXJFbGVtZW50JiBlbGVtZW50LCBSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCi0gICAgOiBS
ZW5kZXJSZXBsYWNlZChlbGVtZW50LCBXVEY6Om1vdmUoc3R5bGUpKQorICAgIDogUmVuZGVyUmVw
bGFjZWQoZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpCiAgICAgLCBtX3dlYWtQdHJGYWN0b3J5KHRo
aXMpCiB7CiAgICAgc2V0SW5saW5lKGZhbHNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9Sb290SW5saW5lQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
b290SW5saW5lQm94LmNwcAppbmRleCBjOTE4YTZjMTg1ZGU4NTk4MmRiY2MxMmMyZTk0ZWEyYTFj
ZjZkOWY0Li4zNDY3N2Q5ZjU0NTEwZWIzNDdkMDI2N2UxMjI0NDYzNWRhMDcxOWU2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGluZUJveC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guY3BwCkBAIC0xMzYsNyArMTM2LDcg
QEAgZmxvYXQgUm9vdElubGluZUJveDo6cGxhY2VFbGxpcHNpcyhjb25zdCBBdG9taWNTdHJpbmcm
IGVsbGlwc2lzU3RyLCAgYm9vbCBsdHIsIGYKICAgICBhdXRvIG5ld0VsbGlwc2lzQm94ID0gc3Rk
OjptYWtlX3VuaXF1ZTxFbGxpcHNpc0JveD4oYmxvY2tGbG93KCksIGVsbGlwc2lzU3RyLCB0aGlz
LCBlbGxpcHNpc1dpZHRoIC0gKG1hcmt1cEJveCA/IG1hcmt1cEJveC0+bG9naWNhbFdpZHRoKCkg
OiAwKSwgbG9naWNhbEhlaWdodCgpLCB5KCksICFwcmV2Um9vdEJveCgpLCBpc0hvcml6b250YWwo
KSwgbWFya3VwQm94KTsKICAgICBhdXRvIGVsbGlwc2lzQm94ID0gbmV3RWxsaXBzaXNCb3guZ2V0
KCk7CiAKLSAgICBnRWxsaXBzaXNCb3hNYXAtPmFkZCh0aGlzLCBXVEY6Om1vdmUobmV3RWxsaXBz
aXNCb3gpKTsKKyAgICBnRWxsaXBzaXNCb3hNYXAtPmFkZCh0aGlzLCBXVEZNb3ZlKG5ld0VsbGlw
c2lzQm94KSk7CiAgICAgc2V0SGFzRWxsaXBzaXNCb3godHJ1ZSk7CiAKICAgICAvLyBGSVhNRTog
RG8gd2UgbmVlZCBhbiBSVEwgdmVyc2lvbiBvZiB0aGlzPwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmNwcAppbmRleCA5MGM1OWNl
OTU0MTAxMzNkYzVhOTlkYWUxMTk4ZjE1YzY1Zjk5NWM1Li4xZjQyNmI4NGU4ZmM4ZmQ5ZDc4NjYw
N2E3OGIyZWYyZjFkZTcwNmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
bWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmNwcApAQCAtNDQsMTIgKzQ0LDEyIEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIHVzaW5nIG5hbWVzcGFjZSBNYXRoTUxOYW1lczsKICAgICAKIFJlbmRl
ck1hdGhNTEJsb2NrOjpSZW5kZXJNYXRoTUxCbG9jayhFbGVtZW50JiBjb250YWluZXIsIFJlZjxS
ZW5kZXJTdHlsZT4mJiBzdHlsZSkKLSAgICA6IFJlbmRlckZsZXhpYmxlQm94KGNvbnRhaW5lciwg
V1RGOjptb3ZlKHN0eWxlKSkKKyAgICA6IFJlbmRlckZsZXhpYmxlQm94KGNvbnRhaW5lciwgV1RG
TW92ZShzdHlsZSkpCiB7CiB9CiAKIFJlbmRlck1hdGhNTEJsb2NrOjpSZW5kZXJNYXRoTUxCbG9j
ayhEb2N1bWVudCYgZG9jdW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkKLSAgICA6IFJl
bmRlckZsZXhpYmxlQm94KGRvY3VtZW50LCBXVEY6Om1vdmUoc3R5bGUpKQorICAgIDogUmVuZGVy
RmxleGlibGVCb3goZG9jdW1lbnQsIFdURk1vdmUoc3R5bGUpKQogewogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmgKaW5kZXgg
Y2E5NmQzOTA1NDNhZWVkNTA0MzY0NGU3Y2JhMTkzM2JkZDBhNjQwZS4uNmNiNmU3YmI4NjJjYjVj
NmFjMDk1NmQyYjI2MDVmMmVkZDkyNDM3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suaApAQCAtNzMsNyArNzMsNyBAQCBwcml2
YXRlOgogY2xhc3MgUmVuZGVyTWF0aE1MVGFibGUgZmluYWwgOiBwdWJsaWMgUmVuZGVyVGFibGUg
ewogcHVibGljOgogICAgIGV4cGxpY2l0IFJlbmRlck1hdGhNTFRhYmxlKEVsZW1lbnQmIGVsZW1l
bnQsIFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkKLSAgICAgICAgOiBSZW5kZXJUYWJsZShlbGVt
ZW50LCBXVEY6Om1vdmUoc3R5bGUpKQorICAgICAgICA6IFJlbmRlclRhYmxlKGVsZW1lbnQsIFdU
Rk1vdmUoc3R5bGUpKQogICAgIHsKICAgICB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZlbmNlZC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZlbmNlZC5jcHAKaW5kZXggMzYzZTNk
MzE0ZWE2YTc5NTQ4MDZmZmJhZGUzZTEyMWJhYTBiOTQxYi4uNGJkY2NkYWNmMzIyYjU2MDQ4MDhk
MzI2MTM3ZTQ1Mjc2YmRjYjMxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxGZW5jZWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRmVuY2VkLmNwcApAQCAtNDQsNyArNDQsNyBAQCBzdGF0
aWMgY29uc3QgY2hhciogZ09wZW5pbmdCcmFjZUNoYXIgPSAiKCI7CiBzdGF0aWMgY29uc3QgY2hh
ciogZ0Nsb3NpbmdCcmFjZUNoYXIgPSAiKSI7CiAKIFJlbmRlck1hdGhNTEZlbmNlZDo6UmVuZGVy
TWF0aE1MRmVuY2VkKE1hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQmIGVsZW1lbnQsIFJlZjxS
ZW5kZXJTdHlsZT4mJiBzdHlsZSkKLSAgICA6IFJlbmRlck1hdGhNTFJvdyhlbGVtZW50LCBXVEY6
Om1vdmUoc3R5bGUpKQorICAgIDogUmVuZGVyTWF0aE1MUm93KGVsZW1lbnQsIFdURk1vdmUoc3R5
bGUpKQogICAgICwgbV9jbG9zZUZlbmNlUmVuZGVyZXIobnVsbHB0cikKIHsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGcmFjdGlv
bi5jcHAKaW5kZXggOTJlMjE4MjUwNTE4OTdjMWRjYjhhYmNmODEzNmJhYzA5OGRkM2Q2ZS4uZGQx
ODY5MzRkMWUxYjJmNDQ4MDgxYzY2NTA5NmQ3YzEwNmVlODVjZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGcmFjdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGcmFjdGlvbi5jcHAK
QEAgLTQ0LDcgKzQ0LDcgQEAgc3RhdGljIGNvbnN0IGZsb2F0IGdMaW5lVGhpY2sgPSAzLmY7CiBz
dGF0aWMgY29uc3QgZmxvYXQgZ0ZyYWN0aW9uQmFyV2lkdGggPSAwLjA1ZjsKIAogUmVuZGVyTWF0
aE1MRnJhY3Rpb246OlJlbmRlck1hdGhNTEZyYWN0aW9uKE1hdGhNTElubGluZUNvbnRhaW5lckVs
ZW1lbnQmIGVsZW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkKLSAgICA6IFJlbmRlck1h
dGhNTEJsb2NrKGVsZW1lbnQsIFdURjo6bW92ZShzdHlsZSkpCisgICAgOiBSZW5kZXJNYXRoTUxC
bG9jayhlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSkKICAgICAsIG1fbGluZVRoaWNrbmVzcyhnTGlu
ZU1lZGl1bSkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRo
bWwvUmVuZGVyTWF0aE1MTWF0aC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1s
L1JlbmRlck1hdGhNTE1hdGguY3BwCmluZGV4IDJkOGUxNWQ1N2M2YTZlMTJkNTA3NjU5NDhjYzlj
OTIzODJjMDdiYTAuLmYxODUzZTUyMjMzY2VjMGUwYjhiYThlZTAyYmZlMmY3MDEwZjYwMTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MTWF0
aC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxN
YXRoLmNwcApAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB1c2luZyBuYW1l
c3BhY2UgTWF0aE1MTmFtZXM7CiAKIFJlbmRlck1hdGhNTE1hdGg6OlJlbmRlck1hdGhNTE1hdGgo
RWxlbWVudCYgZWxlbWVudCwgUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQotICAgIDogUmVuZGVy
TWF0aE1MUm93KGVsZW1lbnQsIFdURjo6bW92ZShzdHlsZSkpCisgICAgOiBSZW5kZXJNYXRoTUxS
b3coZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MTWVuY2xvc2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxNZW5jbG9zZS5jcHAKaW5kZXgg
NWRjOWY4MDAyYTYwZWJkODMyZDM4NWFlNTM5OWRiMWQ4MWI0YTU3Yy4uYzNlYTIzOTI1YWY5NzI0
YjMzYWRkZDMzY2ZkMzI4MzQxZjFlZDBkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxNZW5jbG9zZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxNZW5jbG9zZS5jcHAKQEAgLTM5LDcgKzM5
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogdXNpbmcgbmFtZXNwYWNlIE1hdGhNTE5hbWVzOwog
CiBSZW5kZXJNYXRoTUxNZW5jbG9zZTo6UmVuZGVyTWF0aE1MTWVuY2xvc2UoRWxlbWVudCYgZWxl
bWVudCwgUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQotICAgIDogUmVuZGVyTWF0aE1MUm93KGVs
ZW1lbnQsIFdURjo6bW92ZShzdHlsZSkpCisgICAgOiBSZW5kZXJNYXRoTUxSb3coZWxlbWVudCwg
V1RGTW92ZShzdHlsZSkpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5jcHAKaW5kZXggMzg4MmJhMGNkMTJl
OTIyNzc3NTIyMWRmODI3YmRmZjQyMmJlNzE4Mi4uOTM4YThlNDdhNWQwZjBmNjQ1ZjI0NmE2MzM1
ZTgwNjRiOTY4MTk1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGht
bC9SZW5kZXJNYXRoTUxPcGVyYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5jcHAKQEAgLTczLDcgKzczLDcgQEAgc3RhdGlj
IGNvbnN0IFN0cmV0Y2h5Q2hhcmFjdGVyIHN0cmV0Y2h5Q2hhcmFjdGVyc1sxNF0gPSB7CiB9Owog
CiBSZW5kZXJNYXRoTUxPcGVyYXRvcjo6UmVuZGVyTWF0aE1MT3BlcmF0b3IoTWF0aE1MRWxlbWVu
dCYgZWxlbWVudCwgUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQotICAgIDogUmVuZGVyTWF0aE1M
VG9rZW4oZWxlbWVudCwgV1RGOjptb3ZlKHN0eWxlKSkKKyAgICA6IFJlbmRlck1hdGhNTFRva2Vu
KGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKQogICAgICwgbV9zdHJldGNoSGVpZ2h0QWJvdmVCYXNl
bGluZSgwKQogICAgICwgbV9zdHJldGNoRGVwdGhCZWxvd0Jhc2VsaW5lKDApCiAgICAgLCBtX3Rl
eHRDb250ZW50KDApCkBAIC04Myw3ICs4Myw3IEBAIFJlbmRlck1hdGhNTE9wZXJhdG9yOjpSZW5k
ZXJNYXRoTUxPcGVyYXRvcihNYXRoTUxFbGVtZW50JiBlbGVtZW50LCBSZWY8UmVuZGVyU3R5CiB9
CiAKIFJlbmRlck1hdGhNTE9wZXJhdG9yOjpSZW5kZXJNYXRoTUxPcGVyYXRvcihEb2N1bWVudCYg
ZG9jdW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSwgY29uc3QgU3RyaW5nJiBvcGVyYXRv
clN0cmluZywgTWF0aE1MT3BlcmF0b3JEaWN0aW9uYXJ5OjpGb3JtIGZvcm0sIHVuc2lnbmVkIHNo
b3J0IGZsYWdzKQotICAgIDogUmVuZGVyTWF0aE1MVG9rZW4oZG9jdW1lbnQsIFdURjo6bW92ZShz
dHlsZSkpCisgICAgOiBSZW5kZXJNYXRoTUxUb2tlbihkb2N1bWVudCwgV1RGTW92ZShzdHlsZSkp
CiAgICAgLCBtX3N0cmV0Y2hIZWlnaHRBYm92ZUJhc2VsaW5lKDApCiAgICAgLCBtX3N0cmV0Y2hE
ZXB0aEJlbG93QmFzZWxpbmUoMCkKICAgICAsIG1fdGV4dENvbnRlbnQoMCkKQEAgLTYwNSw3ICs2
MDUsNyBAQCB2b2lkIFJlbmRlck1hdGhNTE9wZXJhdG9yOjp1cGRhdGVTdHlsZSgpCiAgICAgYXV0
byBuZXdTdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5
KCZzdHlsZSgpLCBGTEVYKTsKICAgICBuZXdTdHlsZS5nZXQoKS5zZXRNYXJnaW5TdGFydChMZW5n
dGgobV9sZWFkaW5nU3BhY2UsIEZpeGVkKSk7CiAgICAgbmV3U3R5bGUuZ2V0KCkuc2V0TWFyZ2lu
RW5kKExlbmd0aChtX3RyYWlsaW5nU3BhY2UsIEZpeGVkKSk7Ci0gICAgd3JhcHBlci0+c2V0U3R5
bGUoV1RGOjptb3ZlKG5ld1N0eWxlKSk7CisgICAgd3JhcHBlci0+c2V0U3R5bGUoV1RGTW92ZShu
ZXdTdHlsZSkpOwogICAgIHdyYXBwZXItPnNldE5lZWRzTGF5b3V0QW5kUHJlZldpZHRoc1JlY2Fs
YygpOwogCiAgICAgaWYgKCFzaG91bGRBbGxvd1N0cmV0Y2hpbmcoKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUmFkaWNhbE9wZXJhdG9y
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUmFkaWNh
bE9wZXJhdG9yLmNwcAppbmRleCAxODA4MjlkZjA5MTA3NDQzYjcxMWU2NTBmNDQyYjRlZDI4Mjli
OWNjLi4yZDg4MTBkNWU0NmVjNzMyMzMwZTVhOTZjZGNhMjFjNTZmMGE4OTI3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJhZGljYWxPcGVy
YXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRo
TUxSYWRpY2FsT3BlcmF0b3IuY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIGNvbnN0IGZsb2F0IGdSYWRp
Y2FsTGluZVRoaWNrbmVzc0VtcyA9IDAuMDJmOwogY29uc3QgZmxvYXQgZ1JhZGljYWxUaGlja0xp
bmVUaGlja25lc3NFbXMgPSAwLjFmOwogCiBSZW5kZXJNYXRoTUxSYWRpY2FsT3BlcmF0b3I6OlJl
bmRlck1hdGhNTFJhZGljYWxPcGVyYXRvcihEb2N1bWVudCYgZG9jdW1lbnQsIFJlZjxSZW5kZXJT
dHlsZT4mJiBzdHlsZSkKLSAgICA6IFJlbmRlck1hdGhNTE9wZXJhdG9yKGRvY3VtZW50LCBXVEY6
Om1vdmUoc3R5bGUpLCBTdHJpbmcoJmdSYWRpY2FsQ2hhcmFjdGVyLCAxKSwgTWF0aE1MT3BlcmF0
b3JEaWN0aW9uYXJ5OjpQcmVmaXgpCisgICAgOiBSZW5kZXJNYXRoTUxPcGVyYXRvcihkb2N1bWVu
dCwgV1RGTW92ZShzdHlsZSksIFN0cmluZygmZ1JhZGljYWxDaGFyYWN0ZXIsIDEpLCBNYXRoTUxP
cGVyYXRvckRpY3Rpb25hcnk6OlByZWZpeCkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb290LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm9vdC5jcHAKaW5kZXggYzI0M2QyMGU4
YTdiMmEwODc3ZDUwOTMxMzFlNGY4YmUyODA5YWM2Yi4uMTRhZmJkZmE1N2UwNTMwYjQ1YTNkYzIz
YmRlYzY4Y2U1ZjRmN2EyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21h
dGhtbC9SZW5kZXJNYXRoTUxSb290LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
bWF0aG1sL1JlbmRlck1hdGhNTFJvb3QuY3BwCkBAIC01NiwxMiArNTYsMTIgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogLy8gV2Ugd2lsbCBhbGxvdyB0aGUgSW5kZXhXcmFwcGVyIHRvIGJlIGVtcHR5
IGFuZCBpdCB3aWxsIGFsd2F5cyBjb250YWluIHRoZSBsYXN0IGNoaWxkIG9mIHRoZSA8bXJvb3Q+
IGlmIHRoZXJlIGFyZSBhdCBsZWFzdCAyIGVsZW1lbnRzLgogCiBSZW5kZXJNYXRoTUxSb290OjpS
ZW5kZXJNYXRoTUxSb290KEVsZW1lbnQmIGVsZW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4mJiBzdHls
ZSkKLSAgICA6IFJlbmRlck1hdGhNTEJsb2NrKGVsZW1lbnQsIFdURjo6bW92ZShzdHlsZSkpCisg
ICAgOiBSZW5kZXJNYXRoTUxCbG9jayhlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSkKIHsKIH0KIAog
UmVuZGVyTWF0aE1MUm9vdDo6UmVuZGVyTWF0aE1MUm9vdChEb2N1bWVudCYgZG9jdW1lbnQsIFJl
ZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkKLSAgICA6IFJlbmRlck1hdGhNTEJsb2NrKGRvY3VtZW50
LCBXVEY6Om1vdmUoc3R5bGUpKQorICAgIDogUmVuZGVyTWF0aE1MQmxvY2soZG9jdW1lbnQsIFdU
Rk1vdmUoc3R5bGUpKQogewogfQogCkBAIC0yMjcsMTQgKzIyNywxNCBAQCB2b2lkIFJlbmRlck1h
dGhNTFJvb3Q6OnVwZGF0ZVN0eWxlKCkKICAgICBhdXRvIHJhZGljYWwgPSByYWRpY2FsV3JhcHBl
cigpOwogICAgIGF1dG8gcmFkaWNhbFN0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZUFub255bW91
c1N0eWxlV2l0aERpc3BsYXkoJnN0eWxlKCksIEZMRVgpOwogICAgIHJhZGljYWxTdHlsZS5nZXQo
KS5zZXRNYXJnaW5Ub3AoTGVuZ3RoKDAsIEZpeGVkKSk7IC8vIFRoaXMgd2lsbCBiZSB1cGRhdGVk
IGluIFJlbmRlck1hdGhNTFJvb3Q6OmxheW91dCgpLgotICAgIHJhZGljYWwtPnNldFN0eWxlKFdU
Rjo6bW92ZShyYWRpY2FsU3R5bGUpKTsKKyAgICByYWRpY2FsLT5zZXRTdHlsZShXVEZNb3ZlKHJh
ZGljYWxTdHlsZSkpOwogICAgIHJhZGljYWwtPnNldE5lZWRzTGF5b3V0QW5kUHJlZldpZHRoc1Jl
Y2FsYygpOwogCiAgICAgYXV0byBiYXNlID0gYmFzZVdyYXBwZXIoKTsKICAgICBhdXRvIGJhc2VT
dHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KCZzdHls
ZSgpLCBGTEVYKTsKICAgICBiYXNlU3R5bGUuZ2V0KCkuc2V0TWFyZ2luVG9wKExlbmd0aCgwLCBG
aXhlZCkpOyAvLyBUaGlzIHdpbGwgYmUgdXBkYXRlZCBpbiBSZW5kZXJNYXRoTUxSb290OjpsYXlv
dXQoKS4KICAgICBiYXNlU3R5bGUuZ2V0KCkuc2V0QWxpZ25JdGVtc1Bvc2l0aW9uKEl0ZW1Qb3Np
dGlvbkJhc2VsaW5lKTsKLSAgICBiYXNlLT5zZXRTdHlsZShXVEY6Om1vdmUoYmFzZVN0eWxlKSk7
CisgICAgYmFzZS0+c2V0U3R5bGUoV1RGTW92ZShiYXNlU3R5bGUpKTsKICAgICBiYXNlLT5zZXRO
ZWVkc0xheW91dEFuZFByZWZXaWR0aHNSZWNhbGMoKTsKIAogICAgIGlmICghaXNSZW5kZXJNYXRo
TUxTcXVhcmVSb290KCkpIHsKQEAgLTI0NSw3ICsyNDUsNyBAQCB2b2lkIFJlbmRlck1hdGhNTFJv
b3Q6OnVwZGF0ZVN0eWxlKCkKICAgICAgICAgaW5kZXhTdHlsZS5nZXQoKS5zZXRNYXJnaW5TdGFy
dChMZW5ndGgoa2VybkJlZm9yZURlZ3JlZSwgRml4ZWQpKTsKICAgICAgICAgaW5kZXhTdHlsZS5n
ZXQoKS5zZXRNYXJnaW5FbmQoTGVuZ3RoKGtlcm5BZnRlckRlZ3JlZSwgRml4ZWQpKTsKICAgICAg
ICAgaW5kZXhTdHlsZS5nZXQoKS5zZXRBbGlnbkl0ZW1zUG9zaXRpb24oSXRlbVBvc2l0aW9uQmFz
ZWxpbmUpOwotICAgICAgICBpbmRleC0+c2V0U3R5bGUoV1RGOjptb3ZlKGluZGV4U3R5bGUpKTsK
KyAgICAgICAgaW5kZXgtPnNldFN0eWxlKFdURk1vdmUoaW5kZXhTdHlsZSkpOwogICAgICAgICBp
bmRleC0+c2V0TmVlZHNMYXlvdXRBbmRQcmVmV2lkdGhzUmVjYWxjKCk7CiAgICAgfQogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb290
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvb3QuaApp
bmRleCBiYmYyZDliMjU0NzAzNDljNTRiMWZmZTY4NjA4YTc5MjVlMWZmNjUyLi5mMGUxZWM2M2Zm
ZGY0N2Q2NTdkMTkzNmRlODI4YWEzYjY1ZTIxYzU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvb3QuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvb3QuaApAQCAtODAsNyArODAsNyBAQCBm
cmllbmQgY2xhc3MgUmVuZGVyTWF0aE1MUm9vdDsKIAogcHVibGljOgogICAgIFJlbmRlck1hdGhN
TFJvb3RXcmFwcGVyKERvY3VtZW50JiBkb2N1bWVudCwgUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxl
KQotICAgICAgICA6IFJlbmRlck1hdGhNTFJvdyhkb2N1bWVudCwgV1RGOjptb3ZlKHN0eWxlKSkg
eyB9CisgICAgICAgIDogUmVuZGVyTWF0aE1MUm93KGRvY3VtZW50LCBXVEZNb3ZlKHN0eWxlKSkg
eyB9CiAKIHByaXZhdGU6CiAgICAgdm9pZCByZW1vdmVDaGlsZFdpdGhvdXRSZXN0cnVjdHVyaW5n
KFJlbmRlck9iamVjdCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21h
dGhtbC9SZW5kZXJNYXRoTUxSb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGht
bC9SZW5kZXJNYXRoTUxSb3cuY3BwCmluZGV4IGNjN2EzMDI1NGI4NTM4ZjczMjVmY2VhYzI2MWU4
YzhkNjE3ZDQ4MjUuLjVjZjJjOWRkYzRjODdlMmRjYzQ3ZjUwYjgyZDY4ODJmNTc1ODc3MDIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm93
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJv
dy5jcHAKQEAgLTM5LDEyICszOSwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB1c2luZyBuYW1l
c3BhY2UgTWF0aE1MTmFtZXM7CiAKIFJlbmRlck1hdGhNTFJvdzo6UmVuZGVyTWF0aE1MUm93KEVs
ZW1lbnQmIGVsZW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkKLSAgICA6IFJlbmRlck1h
dGhNTEJsb2NrKGVsZW1lbnQsIFdURjo6bW92ZShzdHlsZSkpCisgICAgOiBSZW5kZXJNYXRoTUxC
bG9jayhlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSkKIHsKIH0KIAogUmVuZGVyTWF0aE1MUm93OjpS
ZW5kZXJNYXRoTUxSb3coRG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8UmVuZGVyU3R5bGU+JiYgc3R5
bGUpCi0gICAgOiBSZW5kZXJNYXRoTUxCbG9jayhkb2N1bWVudCwgV1RGOjptb3ZlKHN0eWxlKSkK
KyAgICA6IFJlbmRlck1hdGhNTEJsb2NrKGRvY3VtZW50LCBXVEZNb3ZlKHN0eWxlKSkKIHsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRo
TUxTY3JpcHRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0
aE1MU2NyaXB0cy5jcHAKaW5kZXggZDE3ZjlhZDYzNDRiMzljMzZjYjY5MjBjODY3ODY2OTEzZGJm
ODZmMy4uNDk0Y2E3NmRiNmQ0MTZhMDBiYzU0ZjIyYTA2OTExYWQ4YzA0ZmUzZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTY3JpcHRzLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNjcmlw
dHMuY3BwCkBAIC01Niw3ICs1Niw3IEBAIHN0YXRpYyBib29sIGlzUHJlc2NyaXB0KGNvbnN0IFJl
bmRlck9iamVjdCYgcmVuZGVyT2JqZWN0KQogfQogCiBSZW5kZXJNYXRoTUxTY3JpcHRzOjpSZW5k
ZXJNYXRoTUxTY3JpcHRzKEVsZW1lbnQmIGVsZW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4mJiBzdHls
ZSkKLSAgICA6IFJlbmRlck1hdGhNTEJsb2NrKGVsZW1lbnQsIFdURjo6bW92ZShzdHlsZSkpCisg
ICAgOiBSZW5kZXJNYXRoTUxCbG9jayhlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSkKICAgICAsIG1f
YmFzZVdyYXBwZXIoMCkKIHsKICAgICAvLyBEZXRlcm1pbmUgd2hhdCBraW5kIG9mIHN1Yi9zdXAg
ZXhwcmVzc2lvbiB3ZSBoYXZlIGJ5IGVsZW1lbnQgbmFtZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTY3JpcHRzLmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNjcmlwdHMuaAppbmRleCA1YzRiMTc5
MTliNzE1ODUxMzg4NjQ0YWE0NmU3NzdiYTk1ODZiZmUxLi4xYzk0Y2M0OWQ5YTExNGMxMDM1NDY2
NGNlZTBlYTEyNzU4MjVlMmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
bWF0aG1sL1JlbmRlck1hdGhNTFNjcmlwdHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvbWF0aG1sL1JlbmRlck1hdGhNTFNjcmlwdHMuaApAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6
CiAKIHByaXZhdGU6CiAgICAgUmVuZGVyTWF0aE1MU2NyaXB0c1dyYXBwZXIoRG9jdW1lbnQmIGRv
Y3VtZW50LCBSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUsIFdyYXBwZXJUeXBlIGtpbmQpCi0gICAg
ICAgIDogUmVuZGVyTWF0aE1MQmxvY2soZG9jdW1lbnQsIFdURjo6bW92ZShzdHlsZSkpCisgICAg
ICAgIDogUmVuZGVyTWF0aE1MQmxvY2soZG9jdW1lbnQsIFdURk1vdmUoc3R5bGUpKQogICAgICAg
ICAsIG1fa2luZChraW5kKQogICAgIHsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNwYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3BhY2UuY3BwCmluZGV4IGRiMzdlYjJjZmRk
NDQ3ZTk5ZDJiOGRmZDg4NGQ2MTBmMzhkMTUyZDguLjI4ZTJhYmE4ZmFjNjhhZGE1YjkwYmNmN2Nh
ODQyMGZjMjFiNTJhZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRo
bWwvUmVuZGVyTWF0aE1MU3BhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9t
YXRobWwvUmVuZGVyTWF0aE1MU3BhY2UuY3BwCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIHVzaW5nIG5hbWVzcGFjZSBNYXRoTUxOYW1lczsKIAogUmVuZGVyTWF0aE1MU3Bh
Y2U6OlJlbmRlck1hdGhNTFNwYWNlKE1hdGhNTFRleHRFbGVtZW50JiBlbGVtZW50LCBSZWY8UmVu
ZGVyU3R5bGU+JiYgc3R5bGUpCi0gICAgOiBSZW5kZXJNYXRoTUxCbG9jayhlbGVtZW50LCBXVEY6
Om1vdmUoc3R5bGUpKQorICAgIDogUmVuZGVyTWF0aE1MQmxvY2soZWxlbWVudCwgV1RGTW92ZShz
dHlsZSkpCiAgICAgLCBtX3dpZHRoKDApCiAgICAgLCBtX2hlaWdodCgwKQogICAgICwgbV9kZXB0
aCgwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJN
YXRoTUxTcXVhcmVSb290LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVu
ZGVyTWF0aE1MU3F1YXJlUm9vdC5jcHAKaW5kZXggNTA3YWQ4ZTEyZTQzZDhlNmU5OWU2OTQ5N2Uw
N2M1N2M4NDdlMDNkOC4uODgyNmFiYzg4MDIxN2FhZGZkYTQ4NGJhMmYyYWRjMmM0MjEwNDZmZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxT
cXVhcmVSb290LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRl
ck1hdGhNTFNxdWFyZVJvb3QuY3BwCkBAIC0zNSwxMiArMzUsMTIgQEAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAKIFJlbmRlck1hdGhNTFNxdWFyZVJvb3Q6OlJlbmRlck1hdGhNTFNxdWFyZVJv
b3QoRWxlbWVudCYgZWxlbWVudCwgUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQotICAgIDogUmVu
ZGVyTWF0aE1MUm9vdChlbGVtZW50LCBXVEY6Om1vdmUoc3R5bGUpKQorICAgIDogUmVuZGVyTWF0
aE1MUm9vdChlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSkKIHsKIH0KIAogUmVuZGVyTWF0aE1MU3F1
YXJlUm9vdDo6UmVuZGVyTWF0aE1MU3F1YXJlUm9vdChEb2N1bWVudCYgZG9jdW1lbnQsIFJlZjxS
ZW5kZXJTdHlsZT4mJiBzdHlsZSkKLSAgICA6IFJlbmRlck1hdGhNTFJvb3QoZG9jdW1lbnQsIFdU
Rjo6bW92ZShzdHlsZSkpCisgICAgOiBSZW5kZXJNYXRoTUxSb290KGRvY3VtZW50LCBXVEZNb3Zl
KHN0eWxlKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21h
dGhtbC9SZW5kZXJNYXRoTUxUb2tlbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0
aG1sL1JlbmRlck1hdGhNTFRva2VuLmNwcAppbmRleCAwZmFjMWFiNjZmYTY1MWY1NzZjOGYyODU3
Y2M0ZDY4OWZiNThlZDFhLi5jYmFhYzdhOTdmZTM2OGFjODE3ZTE0YWJmZTdmMTMyNTlkYmMzNDI4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhN
TFRva2VuLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1h
dGhNTFRva2VuLmNwcApAQCAtMzcsMTMgKzM3LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHVz
aW5nIG5hbWVzcGFjZSBNYXRoTUxOYW1lczsKIAogUmVuZGVyTWF0aE1MVG9rZW46OlJlbmRlck1h
dGhNTFRva2VuKEVsZW1lbnQmIGVsZW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkKLSAg
ICA6IFJlbmRlck1hdGhNTEJsb2NrKGVsZW1lbnQsIFdURjo6bW92ZShzdHlsZSkpCisgICAgOiBS
ZW5kZXJNYXRoTUxCbG9jayhlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSkKICAgICAsIG1fY29udGFp
bnNFbGVtZW50KGZhbHNlKQogewogfQogCiBSZW5kZXJNYXRoTUxUb2tlbjo6UmVuZGVyTWF0aE1M
VG9rZW4oRG9jdW1lbnQmIGRvY3VtZW50LCBSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCi0gICAg
OiBSZW5kZXJNYXRoTUxCbG9jayhkb2N1bWVudCwgV1RGOjptb3ZlKHN0eWxlKSkKKyAgICA6IFJl
bmRlck1hdGhNTEJsb2NrKGRvY3VtZW50LCBXVEZNb3ZlKHN0eWxlKSkKICAgICAsIG1fY29udGFp
bnNFbGVtZW50KGZhbHNlKQogewogfQpAQCAtOTUsNyArOTUsNyBAQCB2b2lkIFJlbmRlck1hdGhN
TFRva2VuOjp1cGRhdGVTdHlsZSgpCiAgICAgICAgICAgICBuZXdTdHlsZS5nZXQoKS5mb250Q2Fz
Y2FkZSgpLnVwZGF0ZShmb250U2VsZWN0b3IpOwogICAgIH0KIAotICAgIHdyYXBwZXItPnNldFN0
eWxlKFdURjo6bW92ZShuZXdTdHlsZSkpOworICAgIHdyYXBwZXItPnNldFN0eWxlKFdURk1vdmUo
bmV3U3R5bGUpKTsKICAgICB3cmFwcGVyLT5zZXROZWVkc0xheW91dEFuZFByZWZXaWR0aHNSZWNh
bGMoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9S
ZW5kZXJNYXRoTUxVbmRlck92ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGht
bC9SZW5kZXJNYXRoTUxVbmRlck92ZXIuY3BwCmluZGV4IGUzNjg4ODEzMzNlMWNhMDQzNmYyNThi
Y2EwZDBjZmE4NjM4NmViZTAuLmIwYzM0YzBhMTI5MjJhMDA1ZWQwZDI4NDllNDVjMjMzMGUwYjk0
MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0
aE1MVW5kZXJPdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1Jl
bmRlck1hdGhNTFVuZGVyT3Zlci5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogdXNpbmcgbmFtZXNwYWNlIE1hdGhNTE5hbWVzOwogICAgIAogUmVuZGVyTWF0aE1MVW5k
ZXJPdmVyOjpSZW5kZXJNYXRoTUxVbmRlck92ZXIoRWxlbWVudCYgZWxlbWVudCwgUmVmPFJlbmRl
clN0eWxlPiYmIHN0eWxlKQotICAgIDogUmVuZGVyTWF0aE1MQmxvY2soZWxlbWVudCwgV1RGOjpt
b3ZlKHN0eWxlKSkKKyAgICA6IFJlbmRlck1hdGhNTEJsb2NrKGVsZW1lbnQsIFdURk1vdmUoc3R5
bGUpKQogewogICAgIC8vIERldGVybWluZSB3aGF0IGtpbmQgb2YgdW5kZXIvb3ZlciBleHByZXNz
aW9uIHdlIGhhdmUgYnkgZWxlbWVudCBuYW1lCiAgICAgaWYgKGVsZW1lbnQuaGFzVGFnTmFtZShN
YXRoTUxOYW1lczo6bXVuZGVyVGFnKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zaGFwZXMvUG9seWdvblNoYXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hh
cGVzL1BvbHlnb25TaGFwZS5oCmluZGV4IGFlNTBiMGY3ZTFkMDg4MjE5OWU0YjZiMGUyZjM1NjI4
OTkwMmI5ZTIuLmFlNDNmYzE1Y2I4NzY5MTI5NjQxNzY0OGMzMDAzZmEyNDQ3YzMxOTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvUG9seWdvblNoYXBlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9Qb2x5Z29uU2hhcGUuaApAQCAtNjEs
NyArNjEsNyBAQCBjbGFzcyBQb2x5Z29uU2hhcGUgOiBwdWJsaWMgU2hhcGUgewogICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKFBvbHlnb25TaGFwZSk7CiBwdWJsaWM6CiAgICAgUG9seWdvblNoYXBl
KHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8RmxvYXRQb2ludD4+IHZlcnRpY2VzLCBXaW5kUnVsZSBm
aWxsUnVsZSkKLSAgICAgICAgOiBtX3BvbHlnb24oV1RGOjptb3ZlKHZlcnRpY2VzKSwgZmlsbFJ1
bGUpCisgICAgICAgIDogbV9wb2x5Z29uKFdURk1vdmUodmVydGljZXMpLCBmaWxsUnVsZSkKICAg
ICB7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVz
L1Jhc3RlclNoYXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1Jhc3RlclNo
YXBlLmgKaW5kZXggOTIxNTg5NGUzZGY2YTY2NmI5Njk5MWVjODY5MTgwMmQxNDc4MzJkMy4uYWVk
ZDYxNzUyN2Y3MWY2MjljNGQzZjRiMzgzNzUyN2VmZWZjNjBiMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9SYXN0ZXJTaGFwZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zaGFwZXMvUmFzdGVyU2hhcGUuaApAQCAtODEsNyArODEsNyBAQCBjbGFz
cyBSYXN0ZXJTaGFwZSBmaW5hbCA6IHB1YmxpYyBTaGFwZSB7CiAgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoUmFzdGVyU2hhcGUpOwogcHVibGljOgogICAgIFJhc3RlclNoYXBlKHN0ZDo6dW5pcXVl
X3B0cjxSYXN0ZXJTaGFwZUludGVydmFscz4gaW50ZXJ2YWxzLCBjb25zdCBJbnRTaXplJiBtYXJn
aW5SZWN0U2l6ZSkKLSAgICAgICAgOiBtX2ludGVydmFscyhXVEY6Om1vdmUoaW50ZXJ2YWxzKSkK
KyAgICAgICAgOiBtX2ludGVydmFscyhXVEZNb3ZlKGludGVydmFscykpCiAgICAgICAgICwgbV9t
YXJnaW5SZWN0U2l6ZShtYXJnaW5SZWN0U2l6ZSkKICAgICB7CiAgICAgICAgIG1faW50ZXJ2YWxz
LT5pbml0aWFsaXplQm91bmRzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc2hhcGVzL1NoYXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hh
cGUuY3BwCmluZGV4IGZjYzhiN2E4ODkzNTRjMjJhNTYwZGQ5YTI5ZmI4MWVhNjNiOTcyOTUuLjc2
YzY1ZmEwNDdkMWNjOGJlZjM2MDJmOGQ1YjA2Zjg3Mjc5NjQ2NDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwCkBAIC02Miw3ICs2Miw3IEBAIHN0YXRpYyBzdGQ6
OnVuaXF1ZV9wdHI8U2hhcGU+IGNyZWF0ZUVsbGlwc2VTaGFwZShjb25zdCBGbG9hdFBvaW50JiBj
ZW50ZXIsIGNvbnN0CiAKIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8U2hhcGU+IGNyZWF0ZVBvbHln
b25TaGFwZShzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPEZsb2F0UG9pbnQ+PiB2ZXJ0aWNlcywgV2lu
ZFJ1bGUgZmlsbFJ1bGUpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UG9seWdvblNo
YXBlPihXVEY6Om1vdmUodmVydGljZXMpLCBmaWxsUnVsZSk7CisgICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8UG9seWdvblNoYXBlPihXVEZNb3ZlKHZlcnRpY2VzKSwgZmlsbFJ1bGUpOwogfQog
CiBzdGF0aWMgaW5saW5lIEZsb2F0UmVjdCBwaHlzaWNhbFJlY3RUb0xvZ2ljYWwoY29uc3QgRmxv
YXRSZWN0JiByZWN0LCBmbG9hdCBsb2dpY2FsQm94SGVpZ2h0LCBXcml0aW5nTW9kZSB3cml0aW5n
TW9kZSkKQEAgLTEzNSw3ICsxMzUsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8U2hhcGU+IFNoYXBlOjpj
cmVhdGVTaGFwZShjb25zdCBCYXNpY1NoYXBlJiBiYXNpY1NoYXBlLCBjb25zdCBMYQogICAgICAg
ICAgICAgKCp2ZXJ0aWNlcylbaSAvIDJdID0gcGh5c2ljYWxQb2ludFRvTG9naWNhbCh2ZXJ0ZXgs
IGxvZ2ljYWxCb3hTaXplLmhlaWdodCgpLCB3cml0aW5nTW9kZSk7CiAgICAgICAgIH0KIAotICAg
ICAgICBzaGFwZSA9IGNyZWF0ZVBvbHlnb25TaGFwZShXVEY6Om1vdmUodmVydGljZXMpLCBwb2x5
Z29uLndpbmRSdWxlKCkpOworICAgICAgICBzaGFwZSA9IGNyZWF0ZVBvbHlnb25TaGFwZShXVEZN
b3ZlKHZlcnRpY2VzKSwgcG9seWdvbi53aW5kUnVsZSgpKTsKICAgICAgICAgYnJlYWs7CiAgICAg
fQogCkBAIC0yMTYsMTAgKzIxNiwxMCBAQCBzdGQ6OnVuaXF1ZV9wdHI8U2hhcGU+IFNoYXBlOjpj
cmVhdGVSYXN0ZXJTaGFwZShJbWFnZSogaW1hZ2UsIGZsb2F0IHRocmVzaG9sZCwgYwogICAgICAg
ICB9CiAgICAgfQogCi0gICAgYXV0byByYXN0ZXJTaGFwZSA9IHN0ZDo6bWFrZV91bmlxdWU8UmFz
dGVyU2hhcGU+KFdURjo6bW92ZShpbnRlcnZhbHMpLCBtYXJnaW5SZWN0LnNpemUoKSk7CisgICAg
YXV0byByYXN0ZXJTaGFwZSA9IHN0ZDo6bWFrZV91bmlxdWU8UmFzdGVyU2hhcGU+KFdURk1vdmUo
aW50ZXJ2YWxzKSwgbWFyZ2luUmVjdC5zaXplKCkpOwogICAgIHJhc3RlclNoYXBlLT5tX3dyaXRp
bmdNb2RlID0gd3JpdGluZ01vZGU7CiAgICAgcmFzdGVyU2hhcGUtPm1fbWFyZ2luID0gbWFyZ2lu
OwotICAgIHJldHVybiBXVEY6Om1vdmUocmFzdGVyU2hhcGUpOworICAgIHJldHVybiBXVEZNb3Zl
KHJhc3RlclNoYXBlKTsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPFNoYXBlPiBTaGFwZTo6Y3JlYXRl
Qm94U2hhcGUoY29uc3QgUm91bmRlZFJlY3QmIHJvdW5kZWRSZWN0LCBXcml0aW5nTW9kZSB3cml0
aW5nTW9kZSwgZmxvYXQgbWFyZ2luKQpAQCAtMjMyLDcgKzIzMiw3IEBAIHN0ZDo6dW5pcXVlX3B0
cjxTaGFwZT4gU2hhcGU6OmNyZWF0ZUJveFNoYXBlKGNvbnN0IFJvdW5kZWRSZWN0JiByb3VuZGVk
UmVjdCwgV3JpCiAgICAgc2hhcGUtPm1fd3JpdGluZ01vZGUgPSB3cml0aW5nTW9kZTsKICAgICBz
aGFwZS0+bV9tYXJnaW4gPSBtYXJnaW47CiAKLSAgICByZXR1cm4gV1RGOjptb3ZlKHNoYXBlKTsK
KyAgICByZXR1cm4gV1RGTW92ZShzaGFwZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9CYXNpY1NoYXBlcy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZXMuY3BwCmluZGV4
IDIzYjAyMDJhNzIwZTM4M2M5N2I2MWRkNmVkODYxMDFhZTMyMjgwN2YuLjg4NDllMWZiNjQxOGMw
Zjk5ZjNhYzliYjNhYjY2MmMwZmQ2YTk4NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9CYXNpY1NoYXBlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL0Jhc2ljU2hhcGVzLmNwcApAQCAtNTYsOCArNTYsOCBAQCB2b2lkIEJhc2ljU2hh
cGVDZW50ZXJDb29yZGluYXRlOjp1cGRhdGVDb21wdXRlZExlbmd0aCgpCiAKICAgICBhdXRvIGxo
cyA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FsY0V4cHJlc3Npb25MZW5ndGg+KExlbmd0aCgxMDAsIFBl
cmNlbnQpKTsKICAgICBhdXRvIHJocyA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FsY0V4cHJlc3Npb25M
ZW5ndGg+KG1fbGVuZ3RoKTsKLSAgICBhdXRvIG9wID0gc3RkOjptYWtlX3VuaXF1ZTxDYWxjRXhw
cmVzc2lvbkJpbmFyeU9wZXJhdGlvbj4oV1RGOjptb3ZlKGxocyksIFdURjo6bW92ZShyaHMpLCBD
YWxjU3VidHJhY3QpOwotICAgIG1fY29tcHV0ZWRMZW5ndGggPSBMZW5ndGgoQ2FsY3VsYXRpb25W
YWx1ZTo6Y3JlYXRlKFdURjo6bW92ZShvcCksIENhbGN1bGF0aW9uUmFuZ2VBbGwpKTsKKyAgICBh
dXRvIG9wID0gc3RkOjptYWtlX3VuaXF1ZTxDYWxjRXhwcmVzc2lvbkJpbmFyeU9wZXJhdGlvbj4o
V1RGTW92ZShsaHMpLCBXVEZNb3ZlKHJocyksIENhbGNTdWJ0cmFjdCk7CisgICAgbV9jb21wdXRl
ZExlbmd0aCA9IExlbmd0aChDYWxjdWxhdGlvblZhbHVlOjpjcmVhdGUoV1RGTW92ZShvcCksIENh
bGN1bGF0aW9uUmFuZ2VBbGwpKTsKIH0KIAogYm9vbCBCYXNpY1NoYXBlQ2lyY2xlOjpvcGVyYXRv
cj09KGNvbnN0IEJhc2ljU2hhcGUmIG90aGVyKSBjb25zdApAQCAtMTIwLDcgKzEyMCw3IEBAIFJl
ZjxCYXNpY1NoYXBlPiBCYXNpY1NoYXBlQ2lyY2xlOjpibGVuZChjb25zdCBCYXNpY1NoYXBlJiBv
dGhlciwgZG91YmxlIHByb2dyZXNzCiAgICAgcmVzdWx0LT5zZXRDZW50ZXJYKG1fY2VudGVyWC5i
bGVuZChvdGhlckNpcmNsZS5jZW50ZXJYKCksIHByb2dyZXNzKSk7CiAgICAgcmVzdWx0LT5zZXRD
ZW50ZXJZKG1fY2VudGVyWS5ibGVuZChvdGhlckNpcmNsZS5jZW50ZXJZKCksIHByb2dyZXNzKSk7
CiAgICAgcmVzdWx0LT5zZXRSYWRpdXMobV9yYWRpdXMuYmxlbmQob3RoZXJDaXJjbGUucmFkaXVz
KCksIHByb2dyZXNzKSk7Ci0gICAgcmV0dXJuIFdURjo6bW92ZShyZXN1bHQpOworICAgIHJldHVy
biBXVEZNb3ZlKHJlc3VsdCk7CiB9CiAKIGJvb2wgQmFzaWNTaGFwZUVsbGlwc2U6Om9wZXJhdG9y
PT0oY29uc3QgQmFzaWNTaGFwZSYgb3RoZXIpIGNvbnN0CkBAIC0xODQsMTQgKzE4NCwxNCBAQCBS
ZWY8QmFzaWNTaGFwZT4gQmFzaWNTaGFwZUVsbGlwc2U6OmJsZW5kKGNvbnN0IEJhc2ljU2hhcGUm
IG90aGVyLCBkb3VibGUgcHJvZ3JlcwogICAgICAgICByZXN1bHQtPnNldENlbnRlclkob3RoZXJF
bGxpcHNlLmNlbnRlclkoKSk7CiAgICAgICAgIHJlc3VsdC0+c2V0UmFkaXVzWChvdGhlckVsbGlw
c2UucmFkaXVzWCgpKTsKICAgICAgICAgcmVzdWx0LT5zZXRSYWRpdXNZKG90aGVyRWxsaXBzZS5y
YWRpdXNZKCkpOwotICAgICAgICByZXR1cm4gV1RGOjptb3ZlKHJlc3VsdCk7CisgICAgICAgIHJl
dHVybiBXVEZNb3ZlKHJlc3VsdCk7CiAgICAgfQogCiAgICAgcmVzdWx0LT5zZXRDZW50ZXJYKG1f
Y2VudGVyWC5ibGVuZChvdGhlckVsbGlwc2UuY2VudGVyWCgpLCBwcm9ncmVzcykpOwogICAgIHJl
c3VsdC0+c2V0Q2VudGVyWShtX2NlbnRlclkuYmxlbmQob3RoZXJFbGxpcHNlLmNlbnRlclkoKSwg
cHJvZ3Jlc3MpKTsKICAgICByZXN1bHQtPnNldFJhZGl1c1gobV9yYWRpdXNYLmJsZW5kKG90aGVy
RWxsaXBzZS5yYWRpdXNYKCksIHByb2dyZXNzKSk7CiAgICAgcmVzdWx0LT5zZXRSYWRpdXNZKG1f
cmFkaXVzWS5ibGVuZChvdGhlckVsbGlwc2UucmFkaXVzWSgpLCBwcm9ncmVzcykpOwotICAgIHJl
dHVybiBXVEY6Om1vdmUocmVzdWx0KTsKKyAgICByZXR1cm4gV1RGTW92ZShyZXN1bHQpOwogfQog
CiBib29sIEJhc2ljU2hhcGVQb2x5Z29uOjpvcGVyYXRvcj09KGNvbnN0IEJhc2ljU2hhcGUmIG90
aGVyKSBjb25zdApAQCAtMjQyLDcgKzI0Miw3IEBAIFJlZjxCYXNpY1NoYXBlPiBCYXNpY1NoYXBl
UG9seWdvbjo6YmxlbmQoY29uc3QgQmFzaWNTaGFwZSYgb3RoZXIsIGRvdWJsZSBwcm9ncmVzCiAg
ICAgc2l6ZV90IGxlbmd0aCA9IG1fdmFsdWVzLnNpemUoKTsKICAgICBhdXRvIHJlc3VsdCA9IEJh
c2ljU2hhcGVQb2x5Z29uOjpjcmVhdGUoKTsKICAgICBpZiAoIWxlbmd0aCkKLSAgICAgICAgcmV0
dXJuIFdURjo6bW92ZShyZXN1bHQpOworICAgICAgICByZXR1cm4gV1RGTW92ZShyZXN1bHQpOwog
CiAgICAgcmVzdWx0LT5zZXRXaW5kUnVsZShvdGhlclBvbHlnb24ud2luZFJ1bGUoKSk7CiAKQEAg
LTI1MSwxMSArMjUxLDExIEBAIFJlZjxCYXNpY1NoYXBlPiBCYXNpY1NoYXBlUG9seWdvbjo6Ymxl
bmQoY29uc3QgQmFzaWNTaGFwZSYgb3RoZXIsIGRvdWJsZSBwcm9ncmVzCiAgICAgICAgICAgICBt
X3ZhbHVlcy5hdChpICsgMSkuYmxlbmQob3RoZXJQb2x5Z29uLnZhbHVlcygpLmF0KGkgKyAxKSwg
cHJvZ3Jlc3MpKTsKICAgICB9CiAKLSAgICByZXR1cm4gV1RGOjptb3ZlKHJlc3VsdCk7CisgICAg
cmV0dXJuIFdURk1vdmUocmVzdWx0KTsKIH0KIAogQmFzaWNTaGFwZVBhdGg6OkJhc2ljU2hhcGVQ
YXRoKHN0ZDo6dW5pcXVlX3B0cjxTVkdQYXRoQnl0ZVN0cmVhbT4mJiBieXRlU3RyZWFtKQotICAg
IDogbV9ieXRlU3RyZWFtKFdURjo6bW92ZShieXRlU3RyZWFtKSkKKyAgICA6IG1fYnl0ZVN0cmVh
bShXVEZNb3ZlKGJ5dGVTdHJlYW0pKQogewogfQogCkBAIC0yOTMsOSArMjkzLDkgQEAgUmVmPEJh
c2ljU2hhcGU+IEJhc2ljU2hhcGVQYXRoOjpibGVuZChjb25zdCBCYXNpY1NoYXBlJiBmcm9tLCBk
b3VibGUgcHJvZ3Jlc3MpIGMKICAgICBhdXRvIHJlc3VsdGluZ1BhdGhCeXRlcyA9IHN0ZDo6bWFr
ZV91bmlxdWU8U1ZHUGF0aEJ5dGVTdHJlYW0+KCk7CiAgICAgYnVpbGRBbmltYXRlZFNWR1BhdGhC
eXRlU3RyZWFtKCpmcm9tUGF0aC5tX2J5dGVTdHJlYW0sICptX2J5dGVTdHJlYW0sICpyZXN1bHRp
bmdQYXRoQnl0ZXMsIHByb2dyZXNzKTsKIAotICAgIGF1dG8gcmVzdWx0ID0gQmFzaWNTaGFwZVBh
dGg6OmNyZWF0ZShXVEY6Om1vdmUocmVzdWx0aW5nUGF0aEJ5dGVzKSk7CisgICAgYXV0byByZXN1
bHQgPSBCYXNpY1NoYXBlUGF0aDo6Y3JlYXRlKFdURk1vdmUocmVzdWx0aW5nUGF0aEJ5dGVzKSk7
CiAgICAgcmVzdWx0LT5zZXRXaW5kUnVsZSh3aW5kUnVsZSgpKTsKLSAgICByZXR1cm4gV1RGOjpt
b3ZlKHJlc3VsdCk7CisgICAgcmV0dXJuIFdURk1vdmUocmVzdWx0KTsKIH0KIAogYm9vbCBCYXNp
Y1NoYXBlSW5zZXQ6Om9wZXJhdG9yPT0oY29uc3QgQmFzaWNTaGFwZSYgb3RoZXIpIGNvbnN0CkBA
IC0zNTcsNiArMzU3LDYgQEAgUmVmPEJhc2ljU2hhcGU+IEJhc2ljU2hhcGVJbnNldDo6YmxlbmQo
Y29uc3QgQmFzaWNTaGFwZSYgb3RoZXIsIGRvdWJsZSBwcm9ncmVzcykKICAgICByZXN1bHQtPnNl
dEJvdHRvbVJpZ2h0UmFkaXVzKG1fYm90dG9tUmlnaHRSYWRpdXMuYmxlbmQob3RoZXJJbnNldC5i
b3R0b21SaWdodFJhZGl1cygpLCBwcm9ncmVzcykpOwogICAgIHJlc3VsdC0+c2V0Qm90dG9tTGVm
dFJhZGl1cyhtX2JvdHRvbUxlZnRSYWRpdXMuYmxlbmQob3RoZXJJbnNldC5ib3R0b21MZWZ0UmFk
aXVzKCksIHByb2dyZXNzKSk7CiAKLSAgICByZXR1cm4gV1RGOjptb3ZlKHJlc3VsdCk7CisgICAg
cmV0dXJuIFdURk1vdmUocmVzdWx0KTsKIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9CYXNpY1NoYXBlcy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL0Jhc2ljU2hhcGVzLmgKaW5kZXggZTU3Y2ExNmFlNTI3YzAyYjUwNTcwZjY2MjIzOWMy
NTk2MDU3NjQ0OC4uMjdjYjE2MjQ0NmY0YzE2YWViOGE4OTE2ZWEyYjVhNWMyOTdiYTg4YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVzLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVzLmgKQEAgLTE4Myw5
ICsxODMsOSBAQCBwdWJsaWM6CiAgICAgY29uc3QgQmFzaWNTaGFwZVJhZGl1cyYgcmFkaXVzKCkg
Y29uc3QgeyByZXR1cm4gbV9yYWRpdXM7IH0KICAgICBmbG9hdCBmbG9hdFZhbHVlRm9yUmFkaXVz
SW5Cb3goZmxvYXQgYm94V2lkdGgsIGZsb2F0IGJveEhlaWdodCkgY29uc3Q7CiAKLSAgICB2b2lk
IHNldENlbnRlclgoQmFzaWNTaGFwZUNlbnRlckNvb3JkaW5hdGUgY2VudGVyWCkgeyBtX2NlbnRl
clggPSBXVEY6Om1vdmUoY2VudGVyWCk7IH0KLSAgICB2b2lkIHNldENlbnRlclkoQmFzaWNTaGFw
ZUNlbnRlckNvb3JkaW5hdGUgY2VudGVyWSkgeyBtX2NlbnRlclkgPSBXVEY6Om1vdmUoY2VudGVy
WSk7IH0KLSAgICB2b2lkIHNldFJhZGl1cyhCYXNpY1NoYXBlUmFkaXVzIHJhZGl1cykgeyBtX3Jh
ZGl1cyA9IFdURjo6bW92ZShyYWRpdXMpOyB9CisgICAgdm9pZCBzZXRDZW50ZXJYKEJhc2ljU2hh
cGVDZW50ZXJDb29yZGluYXRlIGNlbnRlclgpIHsgbV9jZW50ZXJYID0gV1RGTW92ZShjZW50ZXJY
KTsgfQorICAgIHZvaWQgc2V0Q2VudGVyWShCYXNpY1NoYXBlQ2VudGVyQ29vcmRpbmF0ZSBjZW50
ZXJZKSB7IG1fY2VudGVyWSA9IFdURk1vdmUoY2VudGVyWSk7IH0KKyAgICB2b2lkIHNldFJhZGl1
cyhCYXNpY1NoYXBlUmFkaXVzIHJhZGl1cykgeyBtX3JhZGl1cyA9IFdURk1vdmUocmFkaXVzKTsg
fQogCiBwcml2YXRlOgogICAgIEJhc2ljU2hhcGVDaXJjbGUoKSA9IGRlZmF1bHQ7CkBAIC0yMTQs
MTAgKzIxNCwxMCBAQCBwdWJsaWM6CiAgICAgY29uc3QgQmFzaWNTaGFwZVJhZGl1cyYgcmFkaXVz
WSgpIGNvbnN0IHsgcmV0dXJuIG1fcmFkaXVzWTsgfQogICAgIGZsb2F0IGZsb2F0VmFsdWVGb3JS
YWRpdXNJbkJveChjb25zdCBCYXNpY1NoYXBlUmFkaXVzJiwgZmxvYXQgY2VudGVyLCBmbG9hdCBi
b3hXaWR0aE9ySGVpZ2h0KSBjb25zdDsKIAotICAgIHZvaWQgc2V0Q2VudGVyWChCYXNpY1NoYXBl
Q2VudGVyQ29vcmRpbmF0ZSBjZW50ZXJYKSB7IG1fY2VudGVyWCA9IFdURjo6bW92ZShjZW50ZXJY
KTsgfQotICAgIHZvaWQgc2V0Q2VudGVyWShCYXNpY1NoYXBlQ2VudGVyQ29vcmRpbmF0ZSBjZW50
ZXJZKSB7IG1fY2VudGVyWSA9IFdURjo6bW92ZShjZW50ZXJZKTsgfQotICAgIHZvaWQgc2V0UmFk
aXVzWChCYXNpY1NoYXBlUmFkaXVzIHJhZGl1c1gpIHsgbV9yYWRpdXNYID0gV1RGOjptb3ZlKHJh
ZGl1c1gpOyB9Ci0gICAgdm9pZCBzZXRSYWRpdXNZKEJhc2ljU2hhcGVSYWRpdXMgcmFkaXVzWSkg
eyBtX3JhZGl1c1kgPSBXVEY6Om1vdmUocmFkaXVzWSk7IH0KKyAgICB2b2lkIHNldENlbnRlclgo
QmFzaWNTaGFwZUNlbnRlckNvb3JkaW5hdGUgY2VudGVyWCkgeyBtX2NlbnRlclggPSBXVEZNb3Zl
KGNlbnRlclgpOyB9CisgICAgdm9pZCBzZXRDZW50ZXJZKEJhc2ljU2hhcGVDZW50ZXJDb29yZGlu
YXRlIGNlbnRlclkpIHsgbV9jZW50ZXJZID0gV1RGTW92ZShjZW50ZXJZKTsgfQorICAgIHZvaWQg
c2V0UmFkaXVzWChCYXNpY1NoYXBlUmFkaXVzIHJhZGl1c1gpIHsgbV9yYWRpdXNYID0gV1RGTW92
ZShyYWRpdXNYKTsgfQorICAgIHZvaWQgc2V0UmFkaXVzWShCYXNpY1NoYXBlUmFkaXVzIHJhZGl1
c1kpIHsgbV9yYWRpdXNZID0gV1RGTW92ZShyYWRpdXNZKTsgfQogCiBwcml2YXRlOgogICAgIEJh
c2ljU2hhcGVFbGxpcHNlKCkgPSBkZWZhdWx0OwpAQCAtMjQ2LDcgKzI0Niw3IEBAIHB1YmxpYzoK
ICAgICBjb25zdCBMZW5ndGgmIGdldFlBdCh1bnNpZ25lZCBpKSBjb25zdCB7IHJldHVybiBtX3Zh
bHVlc1syICogaSArIDFdOyB9CiAKICAgICB2b2lkIHNldFdpbmRSdWxlKFdpbmRSdWxlIHdpbmRS
dWxlKSB7IG1fd2luZFJ1bGUgPSB3aW5kUnVsZTsgfQotICAgIHZvaWQgYXBwZW5kUG9pbnQoTGVu
Z3RoIHgsIExlbmd0aCB5KSB7IG1fdmFsdWVzLmFwcGVuZChXVEY6Om1vdmUoeCkpOyBtX3ZhbHVl
cy5hcHBlbmQoV1RGOjptb3ZlKHkpKTsgfQorICAgIHZvaWQgYXBwZW5kUG9pbnQoTGVuZ3RoIHgs
IExlbmd0aCB5KSB7IG1fdmFsdWVzLmFwcGVuZChXVEZNb3ZlKHgpKTsgbV92YWx1ZXMuYXBwZW5k
KFdURk1vdmUoeSkpOyB9CiAKICAgICB2aXJ0dWFsIFdpbmRSdWxlIHdpbmRSdWxlKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gbV93aW5kUnVsZTsgfQogCkBAIC0yNzAsNyArMjcwLDcgQEAgY2xh
c3MgQmFzaWNTaGFwZVBhdGggZmluYWwgOiBwdWJsaWMgQmFzaWNTaGFwZSB7CiBwdWJsaWM6CiAg
ICAgc3RhdGljIFJlZjxCYXNpY1NoYXBlUGF0aD4gY3JlYXRlKHN0ZDo6dW5pcXVlX3B0cjxTVkdQ
YXRoQnl0ZVN0cmVhbT4mJiBieXRlU3RyZWFtKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgQmFzaWNTaGFwZVBhdGgoV1RGOjptb3ZlKGJ5dGVTdHJlYW0pKSk7CisgICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IEJhc2ljU2hhcGVQYXRoKFdURk1vdmUoYnl0ZVN0cmVhbSkp
KTsKICAgICB9CiAKICAgICB2b2lkIHNldFdpbmRSdWxlKFdpbmRSdWxlIHdpbmRSdWxlKSB7IG1f
d2luZFJ1bGUgPSB3aW5kUnVsZTsgfQpAQCAtMzA4LDE1ICszMDgsMTUgQEAgcHVibGljOgogICAg
IGNvbnN0IExlbmd0aFNpemUmIGJvdHRvbVJpZ2h0UmFkaXVzKCkgY29uc3QgeyByZXR1cm4gbV9i
b3R0b21SaWdodFJhZGl1czsgfQogICAgIGNvbnN0IExlbmd0aFNpemUmIGJvdHRvbUxlZnRSYWRp
dXMoKSBjb25zdCB7IHJldHVybiBtX2JvdHRvbUxlZnRSYWRpdXM7IH0KIAotICAgIHZvaWQgc2V0
VG9wKExlbmd0aCB0b3ApIHsgbV90b3AgPSBXVEY6Om1vdmUodG9wKTsgfQotICAgIHZvaWQgc2V0
UmlnaHQoTGVuZ3RoIHJpZ2h0KSB7IG1fcmlnaHQgPSBXVEY6Om1vdmUocmlnaHQpOyB9Ci0gICAg
dm9pZCBzZXRCb3R0b20oTGVuZ3RoIGJvdHRvbSkgeyBtX2JvdHRvbSA9IFdURjo6bW92ZShib3R0
b20pOyB9Ci0gICAgdm9pZCBzZXRMZWZ0KExlbmd0aCBsZWZ0KSB7IG1fbGVmdCA9IFdURjo6bW92
ZShsZWZ0KTsgfQorICAgIHZvaWQgc2V0VG9wKExlbmd0aCB0b3ApIHsgbV90b3AgPSBXVEZNb3Zl
KHRvcCk7IH0KKyAgICB2b2lkIHNldFJpZ2h0KExlbmd0aCByaWdodCkgeyBtX3JpZ2h0ID0gV1RG
TW92ZShyaWdodCk7IH0KKyAgICB2b2lkIHNldEJvdHRvbShMZW5ndGggYm90dG9tKSB7IG1fYm90
dG9tID0gV1RGTW92ZShib3R0b20pOyB9CisgICAgdm9pZCBzZXRMZWZ0KExlbmd0aCBsZWZ0KSB7
IG1fbGVmdCA9IFdURk1vdmUobGVmdCk7IH0KIAotICAgIHZvaWQgc2V0VG9wTGVmdFJhZGl1cyhM
ZW5ndGhTaXplIHJhZGl1cykgeyBtX3RvcExlZnRSYWRpdXMgPSBXVEY6Om1vdmUocmFkaXVzKTsg
fQotICAgIHZvaWQgc2V0VG9wUmlnaHRSYWRpdXMoTGVuZ3RoU2l6ZSByYWRpdXMpIHsgbV90b3BS
aWdodFJhZGl1cyA9IFdURjo6bW92ZShyYWRpdXMpOyB9Ci0gICAgdm9pZCBzZXRCb3R0b21SaWdo
dFJhZGl1cyhMZW5ndGhTaXplIHJhZGl1cykgeyBtX2JvdHRvbVJpZ2h0UmFkaXVzID0gV1RGOjpt
b3ZlKHJhZGl1cyk7IH0KLSAgICB2b2lkIHNldEJvdHRvbUxlZnRSYWRpdXMoTGVuZ3RoU2l6ZSBy
YWRpdXMpIHsgbV9ib3R0b21MZWZ0UmFkaXVzID0gV1RGOjptb3ZlKHJhZGl1cyk7IH0KKyAgICB2
b2lkIHNldFRvcExlZnRSYWRpdXMoTGVuZ3RoU2l6ZSByYWRpdXMpIHsgbV90b3BMZWZ0UmFkaXVz
ID0gV1RGTW92ZShyYWRpdXMpOyB9CisgICAgdm9pZCBzZXRUb3BSaWdodFJhZGl1cyhMZW5ndGhT
aXplIHJhZGl1cykgeyBtX3RvcFJpZ2h0UmFkaXVzID0gV1RGTW92ZShyYWRpdXMpOyB9CisgICAg
dm9pZCBzZXRCb3R0b21SaWdodFJhZGl1cyhMZW5ndGhTaXplIHJhZGl1cykgeyBtX2JvdHRvbVJp
Z2h0UmFkaXVzID0gV1RGTW92ZShyYWRpdXMpOyB9CisgICAgdm9pZCBzZXRCb3R0b21MZWZ0UmFk
aXVzKExlbmd0aFNpemUgcmFkaXVzKSB7IG1fYm90dG9tTGVmdFJhZGl1cyA9IFdURk1vdmUocmFk
aXVzKTsgfQogCiBwcml2YXRlOgogICAgIEJhc2ljU2hhcGVJbnNldCgpID0gZGVmYXVsdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9Db250ZW50RGF0YS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQ29udGVudERhdGEuY3BwCmluZGV4IGUx
ZjdkNGUyNzFmMzYxMWE3ZjAxYzgxNmQzYTU1Y2Y0OTFkNWI3MzkuLmVhMjhjNDI2OWI2MWFiM2Q4
ZjQ2MDg4YTM3MTViN2I5NDY0YzI1M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9Db250ZW50RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL0NvbnRlbnREYXRhLmNwcApAQCAtNDAsNyArNDAsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8
Q29udGVudERhdGE+IENvbnRlbnREYXRhOjpjbG9uZSgpIGNvbnN0CiAgICAgQ29udGVudERhdGEq
IGxhc3ROZXdEYXRhID0gcmVzdWx0LmdldCgpOwogICAgIGZvciAoY29uc3QgQ29udGVudERhdGEq
IGNvbnRlbnREYXRhID0gbmV4dCgpOyBjb250ZW50RGF0YTsgY29udGVudERhdGEgPSBjb250ZW50
RGF0YS0+bmV4dCgpKSB7CiAgICAgICAgIGF1dG8gbmV3RGF0YSA9IGNvbnRlbnREYXRhLT5jbG9u
ZUludGVybmFsKCk7Ci0gICAgICAgIGxhc3ROZXdEYXRhLT5zZXROZXh0KFdURjo6bW92ZShuZXdE
YXRhKSk7CisgICAgICAgIGxhc3ROZXdEYXRhLT5zZXROZXh0KFdURk1vdmUobmV3RGF0YSkpOwog
ICAgICAgICBsYXN0TmV3RGF0YSA9IGxhc3ROZXdEYXRhLT5uZXh0KCk7CiAgICAgfQogICAgICAg
ICAKQEAgLTUyLDE0ICs1MiwxNCBAQCBSZW5kZXJQdHI8UmVuZGVyT2JqZWN0PiBJbWFnZUNvbnRl
bnREYXRhOjpjcmVhdGVDb250ZW50UmVuZGVyZXIoRG9jdW1lbnQmIGRvY3VtZQogICAgIGF1dG8g
aW1hZ2UgPSBjcmVhdGVSZW5kZXJlcjxSZW5kZXJJbWFnZT4oZG9jdW1lbnQsIFJlbmRlclN0eWxl
OjpjcmVhdGVTdHlsZUluaGVyaXRpbmdGcm9tUHNldWRvU3R5bGUocHNldWRvU3R5bGUpLCBtX2lt
YWdlLmdldCgpKTsKICAgICBpbWFnZS0+aW5pdGlhbGl6ZVN0eWxlKCk7CiAgICAgaW1hZ2UtPnNl
dEFsdFRleHQoYWx0VGV4dCgpKTsKLSAgICByZXR1cm4gV1RGOjptb3ZlKGltYWdlKTsKKyAgICBy
ZXR1cm4gV1RGTW92ZShpbWFnZSk7CiB9CiAKIFJlbmRlclB0cjxSZW5kZXJPYmplY3Q+IFRleHRD
b250ZW50RGF0YTo6Y3JlYXRlQ29udGVudFJlbmRlcmVyKERvY3VtZW50JiBkb2N1bWVudCwgY29u
c3QgUmVuZGVyU3R5bGUmKSBjb25zdAogewogICAgIGF1dG8gZnJhZ21lbnQgPSBjcmVhdGVSZW5k
ZXJlcjxSZW5kZXJUZXh0RnJhZ21lbnQ+KGRvY3VtZW50LCBtX3RleHQpOwogICAgIGZyYWdtZW50
LT5zZXRBbHRUZXh0KGFsdFRleHQoKSk7Ci0gICAgcmV0dXJuIFdURjo6bW92ZShmcmFnbWVudCk7
CisgICAgcmV0dXJuIFdURk1vdmUoZnJhZ21lbnQpOwogfQogCiBSZW5kZXJQdHI8UmVuZGVyT2Jq
ZWN0PiBDb3VudGVyQ29udGVudERhdGE6OmNyZWF0ZUNvbnRlbnRSZW5kZXJlcihEb2N1bWVudCYg
ZG9jdW1lbnQsIGNvbnN0IFJlbmRlclN0eWxlJikgY29uc3QKQEAgLTcxLDcgKzcxLDcgQEAgUmVu
ZGVyUHRyPFJlbmRlck9iamVjdD4gUXVvdGVDb250ZW50RGF0YTo6Y3JlYXRlQ29udGVudFJlbmRl
cmVyKERvY3VtZW50JiBkb2N1bWUKIHsKICAgICBhdXRvIHF1b3RlID0gY3JlYXRlUmVuZGVyZXI8
UmVuZGVyUXVvdGU+KGRvY3VtZW50LCBSZW5kZXJTdHlsZTo6Y3JlYXRlU3R5bGVJbmhlcml0aW5n
RnJvbVBzZXVkb1N0eWxlKHBzZXVkb1N0eWxlKSwgbV9xdW90ZSk7CiAgICAgcXVvdGUtPmluaXRp
YWxpemVTdHlsZSgpOwotICAgIHJldHVybiBXVEY6Om1vdmUocXVvdGUpOworICAgIHJldHVybiBX
VEZNb3ZlKHF1b3RlKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0NvbnRlbnREYXRhLmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvQ29udGVudERhdGEuaAppbmRleCAwYWFkYTViNTYzZjg3OWIy
ODM5MjliZGZiOTBhOWUyNjA3Mjg0YThlLi5kOTdhMTk3YjhiZWZhY2JhNzA3NWQ0NTQ1NWVmMTNm
ZTYyNDg1MmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQ29u
dGVudERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQ29udGVudERh
dGEuaApAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAgICAgc3RkOjp1bmlxdWVfcHRyPENvbnRl
bnREYXRhPiBjbG9uZSgpIGNvbnN0OwogCiAgICAgQ29udGVudERhdGEqIG5leHQoKSBjb25zdCB7
IHJldHVybiBtX25leHQuZ2V0KCk7IH0KLSAgICB2b2lkIHNldE5leHQoc3RkOjp1bmlxdWVfcHRy
PENvbnRlbnREYXRhPiBuZXh0KSB7IG1fbmV4dCA9IFdURjo6bW92ZShuZXh0KTsgfQorICAgIHZv
aWQgc2V0TmV4dChzdGQ6OnVuaXF1ZV9wdHI8Q29udGVudERhdGE+IG5leHQpIHsgbV9uZXh0ID0g
V1RGTW92ZShuZXh0KTsgfQogCiAgICAgdm9pZCBzZXRBbHRUZXh0KGNvbnN0IFN0cmluZyYgYWx0
KSB7IG1fYWx0VGV4dCA9IGFsdDsgfQogICAgIGNvbnN0IFN0cmluZyYgYWx0VGV4dCgpIGNvbnN0
IHsgcmV0dXJuIG1fYWx0VGV4dDsgfQpAQCAtMTUxLDcgKzE1MSw3IEBAIGNsYXNzIENvdW50ZXJD
b250ZW50RGF0YSBmaW5hbCA6IHB1YmxpYyBDb250ZW50RGF0YSB7CiBwdWJsaWM6CiAgICAgZXhw
bGljaXQgQ291bnRlckNvbnRlbnREYXRhKHN0ZDo6dW5pcXVlX3B0cjxDb3VudGVyQ29udGVudD4g
Y291bnRlcikKICAgICAgICAgOiBDb250ZW50RGF0YShDb3VudGVyRGF0YVR5cGUpCi0gICAgICAg
ICwgbV9jb3VudGVyKFdURjo6bW92ZShjb3VudGVyKSkKKyAgICAgICAgLCBtX2NvdW50ZXIoV1RG
TW92ZShjb3VudGVyKSkKICAgICB7CiAgICAgICAgIEFTU0VSVChtX2NvdW50ZXIpOwogICAgIH0K
QEAgLTE2MCw3ICsxNjAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRDb3VudGVyKHN0ZDo6dW5p
cXVlX3B0cjxDb3VudGVyQ29udGVudD4gY291bnRlcikKICAgICB7CiAgICAgICAgIEFTU0VSVChj
b3VudGVyKTsKLSAgICAgICAgbV9jb3VudGVyID0gV1RGOjptb3ZlKGNvdW50ZXIpOworICAgICAg
ICBtX2NvdW50ZXIgPSBXVEZNb3ZlKGNvdW50ZXIpOwogICAgIH0KIAogICAgIHZpcnR1YWwgUmVu
ZGVyUHRyPFJlbmRlck9iamVjdD4gY3JlYXRlQ29udGVudFJlbmRlcmVyKERvY3VtZW50JiwgY29u
c3QgUmVuZGVyU3R5bGUmKSBjb25zdCBvdmVycmlkZTsKQEAgLTE2OSw3ICsxNjksNyBAQCBwcml2
YXRlOgogICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPENvbnRlbnREYXRhPiBjbG9uZUludGVy
bmFsKCkgY29uc3Qgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIGF1dG8gY291bnRlckRhdGEgPSBz
dGQ6Om1ha2VfdW5pcXVlPENvdW50ZXJDb250ZW50Pihjb3VudGVyKCkpOwotICAgICAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxDb3VudGVyQ29udGVudERhdGE+KFdURjo6bW92ZShjb3VudGVy
RGF0YSkpOworICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDb3VudGVyQ29udGVudERh
dGE+KFdURk1vdmUoY291bnRlckRhdGEpKTsKICAgICB9CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
Q291bnRlckNvbnRlbnQ+IG1fY291bnRlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9EYXRhUmVmLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
RGF0YVJlZi5oCmluZGV4IGZiOGZkMjk1OWM0MGQwNjE2MjZmNDMyYWE2OWJjZWE0ZWJlM2RlNTAu
LjBhZmI2ZWNkOTExMzBlOGIxOGNmNDk5ZGQ4MGNiYmE0MzhhMDg5ZDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9EYXRhUmVmLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL0RhdGFSZWYuaApAQCAtMzAsNyArMzAsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBEYXRhUmVmIHsKIHB1Ymxp
YzoKLSAgICBEYXRhUmVmKFJlZjxUPiYmIGRhdGEpIDogbV9kYXRhKFdURjo6bW92ZShkYXRhKSkg
eyB9CisgICAgRGF0YVJlZihSZWY8VD4mJiBkYXRhKSA6IG1fZGF0YShXVEZNb3ZlKGRhdGEpKSB7
IH0KICAgICBEYXRhUmVmKGNvbnN0IERhdGFSZWYmIG90aGVyKSA6IG1fZGF0YShjb25zdF9jYXN0
PFQmPihvdGhlci5tX2RhdGEuZ2V0KCkpKSB7IH0KICAgICBEYXRhUmVmJiBvcGVyYXRvcj0oY29u
c3QgRGF0YVJlZiYgb3RoZXIpIHsgbV9kYXRhID0gY29uc3RfY2FzdDxUJj4ob3RoZXIubV9kYXRh
LmdldCgpKTsgcmV0dXJuICp0aGlzOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9GaWxsTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL0ZpbGxMYXllci5jcHAKaW5kZXggYjFiMzIwODAyYTA2ZDIyOWFhOWViNmFmOWEwODA4Zjcy
MGJhZTRjYi4uMWY0MTk4OGYyMjEyMGExNDYwNjg5NTEzNWQxMmRlMWNkODc1YzBjMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0ZpbGxMYXllci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0ZpbGxMYXllci5jcHAKQEAgLTExMCw3ICsx
MTAsNyBAQCBGaWxsTGF5ZXI6OkZpbGxMYXllcihjb25zdCBGaWxsTGF5ZXImIG8pCiBGaWxsTGF5
ZXI6On5GaWxsTGF5ZXIoKQogewogICAgIC8vIERlbGV0ZSB0aGUgbGF5ZXJzIGluIGEgbG9vcCBy
YXRoZXIgdGhhbiBhbGxvd2luZyByZWN1cnNpdmUgY2FsbHMgdG8gdGhlIGRlc3RydWN0b3JzLgot
ICAgIGZvciAoc3RkOjp1bmlxdWVfcHRyPEZpbGxMYXllcj4gbmV4dCA9IFdURjo6bW92ZShtX25l
eHQpOyBuZXh0OyBuZXh0ID0gV1RGOjptb3ZlKG5leHQtPm1fbmV4dCkpIHsgfQorICAgIGZvciAo
c3RkOjp1bmlxdWVfcHRyPEZpbGxMYXllcj4gbmV4dCA9IFdURk1vdmUobV9uZXh0KTsgbmV4dDsg
bmV4dCA9IFdURk1vdmUobmV4dC0+bV9uZXh0KSkgeyB9CiB9CiAKIEZpbGxMYXllciYgRmlsbExh
eWVyOjpvcGVyYXRvcj0oY29uc3QgRmlsbExheWVyJiBvKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL0ZpbGxMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL0ZpbGxMYXllci5oCmluZGV4IDZkZDBhZGU1NDE4NGMzMjhlNGE1ZmI0ZDQ4Njk5
NmMzZDU0OWE1YmMuLjhiMGU2NWUzZjdmNDRhNjBiODIxYzE2OWVhYjNlOGNjY2U1NzQ1NzcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9GaWxsTGF5ZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvRmlsbExheWVyLmgKQEAgLTEwMiw4ICsx
MDIsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc01hc2tTb3VyY2VUeXBlU2V0KCkgY29uc3QgeyBy
ZXR1cm4gbV9tYXNrU291cmNlVHlwZVNldDsgfQogCiAgICAgdm9pZCBzZXRJbWFnZShQYXNzUmVm
UHRyPFN0eWxlSW1hZ2U+IGltYWdlKSB7IG1faW1hZ2UgPSBpbWFnZTsgbV9pbWFnZVNldCA9IHRy
dWU7IH0KLSAgICB2b2lkIHNldFhQb3NpdGlvbihMZW5ndGggbGVuZ3RoKSB7IG1feFBvc2l0aW9u
ID0gV1RGOjptb3ZlKGxlbmd0aCk7IG1feFBvc1NldCA9IHRydWU7IH0KLSAgICB2b2lkIHNldFlQ
b3NpdGlvbihMZW5ndGggbGVuZ3RoKSB7IG1feVBvc2l0aW9uID0gV1RGOjptb3ZlKGxlbmd0aCk7
IG1feVBvc1NldCA9IHRydWU7IH0KKyAgICB2b2lkIHNldFhQb3NpdGlvbihMZW5ndGggbGVuZ3Ro
KSB7IG1feFBvc2l0aW9uID0gV1RGTW92ZShsZW5ndGgpOyBtX3hQb3NTZXQgPSB0cnVlOyB9Cisg
ICAgdm9pZCBzZXRZUG9zaXRpb24oTGVuZ3RoIGxlbmd0aCkgeyBtX3lQb3NpdGlvbiA9IFdURk1v
dmUobGVuZ3RoKTsgbV95UG9zU2V0ID0gdHJ1ZTsgfQogICAgIHZvaWQgc2V0QmFja2dyb3VuZFhP
cmlnaW4oQmFja2dyb3VuZEVkZ2VPcmlnaW4gbykgeyBtX2JhY2tncm91bmRYT3JpZ2luID0gbzsg
bV9iYWNrZ3JvdW5kT3JpZ2luU2V0ID0gdHJ1ZTsgfQogICAgIHZvaWQgc2V0QmFja2dyb3VuZFlP
cmlnaW4oQmFja2dyb3VuZEVkZ2VPcmlnaW4gbykgeyBtX2JhY2tncm91bmRZT3JpZ2luID0gbzsg
bV9iYWNrZ3JvdW5kT3JpZ2luU2V0ID0gdHJ1ZTsgfQogICAgIHZvaWQgc2V0QXR0YWNobWVudChF
RmlsbEF0dGFjaG1lbnQgYXR0YWNobWVudCkgeyBtX2F0dGFjaG1lbnQgPSBhdHRhY2htZW50OyBt
X2F0dGFjaG1lbnRTZXQgPSB0cnVlOyB9CkBAIC0xMzMsNyArMTMzLDcgQEAgcHVibGljOgogICAg
IHZvaWQgY2xlYXJTaXplKCkgeyBtX3NpemVUeXBlID0gU2l6ZU5vbmU7IH0KICAgICB2b2lkIGNs
ZWFyTWFza1NvdXJjZVR5cGUoKSB7IG1fbWFza1NvdXJjZVR5cGVTZXQgPSBmYWxzZTsgfQogCi0g
ICAgdm9pZCBzZXROZXh0KHN0ZDo6dW5pcXVlX3B0cjxGaWxsTGF5ZXI+IG5leHQpIHsgbV9uZXh0
ID0gV1RGOjptb3ZlKG5leHQpOyB9CisgICAgdm9pZCBzZXROZXh0KHN0ZDo6dW5pcXVlX3B0cjxG
aWxsTGF5ZXI+IG5leHQpIHsgbV9uZXh0ID0gV1RGTW92ZShuZXh0KTsgfQogCiAgICAgRmlsbExh
eWVyJiBvcGVyYXRvcj0oY29uc3QgRmlsbExheWVyJik7CiAgICAgRmlsbExheWVyKGNvbnN0IEZp
bGxMYXllciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL05p
bmVQaWVjZUltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9OaW5lUGll
Y2VJbWFnZS5jcHAKaW5kZXggNWRlZGI1NTYyYjgzNDFhN2FlNjc1OTkzODZkMGI5MTBmOGVjMzM0
Yy4uYjRjMzNmNGYwMzA3ZjMyYTIwNWEyOGU1NTZhZWZkNWMxMmE1MDIzNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL05pbmVQaWVjZUltYWdlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvTmluZVBpZWNlSW1hZ2UuY3BwCkBAIC00Nyw5
ICs0Nyw5IEBAIE5pbmVQaWVjZUltYWdlOjpOaW5lUGllY2VJbWFnZShQYXNzUmVmUHRyPFN0eWxl
SW1hZ2U+IGltYWdlLCBMZW5ndGhCb3ggaW1hZ2VTbGljCiAgICAgOiBtX2RhdGEoTmluZVBpZWNl
SW1hZ2VEYXRhOjpjcmVhdGUoKSkKIHsKICAgICBtX2RhdGEuYWNjZXNzKCktPmltYWdlID0gaW1h
Z2U7Ci0gICAgbV9kYXRhLmFjY2VzcygpLT5pbWFnZVNsaWNlcyA9IFdURjo6bW92ZShpbWFnZVNs
aWNlcyk7Ci0gICAgbV9kYXRhLmFjY2VzcygpLT5ib3JkZXJTbGljZXMgPSBXVEY6Om1vdmUoYm9y
ZGVyU2xpY2VzKTsKLSAgICBtX2RhdGEuYWNjZXNzKCktPm91dHNldCA9IFdURjo6bW92ZShvdXRz
ZXQpOworICAgIG1fZGF0YS5hY2Nlc3MoKS0+aW1hZ2VTbGljZXMgPSBXVEZNb3ZlKGltYWdlU2xp
Y2VzKTsKKyAgICBtX2RhdGEuYWNjZXNzKCktPmJvcmRlclNsaWNlcyA9IFdURk1vdmUoYm9yZGVy
U2xpY2VzKTsKKyAgICBtX2RhdGEuYWNjZXNzKCktPm91dHNldCA9IFdURk1vdmUob3V0c2V0KTsK
ICAgICBtX2RhdGEuYWNjZXNzKCktPmZpbGwgPSBmaWxsOwogICAgIG1fZGF0YS5hY2Nlc3MoKS0+
aG9yaXpvbnRhbFJ1bGUgPSBob3Jpem9udGFsUnVsZTsKICAgICBtX2RhdGEuYWNjZXNzKCktPnZl
cnRpY2FsUnVsZSA9IHZlcnRpY2FsUnVsZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9OaW5lUGllY2VJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL05pbmVQaWVjZUltYWdlLmgKaW5kZXggYzJjYTg2MWMzMWI3NzIyZGFiOGI3YTYyOTZi
NzEzNWY5NmUzZGEyMC4uNDE0YWY5ZDg3ZWQxOTU2ZGFkZWQwODFmYzBhYmY1ZGY4YjA0NGEwNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL05pbmVQaWVjZUltYWdl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL05pbmVQaWVjZUltYWdlLmgK
QEAgLTEzNiwxNiArMTM2LDE2IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEltYWdlKFBhc3NSZWZQ
dHI8U3R5bGVJbWFnZT4gaW1hZ2UpIHsgbV9kYXRhLmFjY2VzcygpLT5pbWFnZSA9IGltYWdlOyB9
CiAgICAgCiAgICAgY29uc3QgTGVuZ3RoQm94JiBpbWFnZVNsaWNlcygpIGNvbnN0IHsgcmV0dXJu
IG1fZGF0YS0+aW1hZ2VTbGljZXM7IH0KLSAgICB2b2lkIHNldEltYWdlU2xpY2VzKExlbmd0aEJv
eCBzbGljZXMpIHsgbV9kYXRhLmFjY2VzcygpLT5pbWFnZVNsaWNlcyA9IFdURjo6bW92ZShzbGlj
ZXMpOyB9CisgICAgdm9pZCBzZXRJbWFnZVNsaWNlcyhMZW5ndGhCb3ggc2xpY2VzKSB7IG1fZGF0
YS5hY2Nlc3MoKS0+aW1hZ2VTbGljZXMgPSBXVEZNb3ZlKHNsaWNlcyk7IH0KIAogICAgIGJvb2wg
ZmlsbCgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS0+ZmlsbDsgfQogICAgIHZvaWQgc2V0RmlsbChi
b29sIGZpbGwpIHsgbV9kYXRhLmFjY2VzcygpLT5maWxsID0gZmlsbDsgfQogCiAgICAgY29uc3Qg
TGVuZ3RoQm94JiBib3JkZXJTbGljZXMoKSBjb25zdCB7IHJldHVybiBtX2RhdGEtPmJvcmRlclNs
aWNlczsgfQotICAgIHZvaWQgc2V0Qm9yZGVyU2xpY2VzKExlbmd0aEJveCBzbGljZXMpIHsgbV9k
YXRhLmFjY2VzcygpLT5ib3JkZXJTbGljZXMgPSBXVEY6Om1vdmUoc2xpY2VzKTsgfQorICAgIHZv
aWQgc2V0Qm9yZGVyU2xpY2VzKExlbmd0aEJveCBzbGljZXMpIHsgbV9kYXRhLmFjY2VzcygpLT5i
b3JkZXJTbGljZXMgPSBXVEZNb3ZlKHNsaWNlcyk7IH0KIAogICAgIGNvbnN0IExlbmd0aEJveCYg
b3V0c2V0KCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLT5vdXRzZXQ7IH0KLSAgICB2b2lkIHNldE91
dHNldChMZW5ndGhCb3ggb3V0c2V0KSB7IG1fZGF0YS5hY2Nlc3MoKS0+b3V0c2V0ID0gV1RGOjpt
b3ZlKG91dHNldCk7IH0KKyAgICB2b2lkIHNldE91dHNldChMZW5ndGhCb3ggb3V0c2V0KSB7IG1f
ZGF0YS5hY2Nlc3MoKS0+b3V0c2V0ID0gV1RGTW92ZShvdXRzZXQpOyB9CiAKICAgICBFTmluZVBp
ZWNlSW1hZ2VSdWxlIGhvcml6b250YWxSdWxlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8
RU5pbmVQaWVjZUltYWdlUnVsZT4obV9kYXRhLT5ob3Jpem9udGFsUnVsZSk7IH0KICAgICB2b2lk
IHNldEhvcml6b250YWxSdWxlKEVOaW5lUGllY2VJbWFnZVJ1bGUgcnVsZSkgeyBtX2RhdGEuYWNj
ZXNzKCktPmhvcml6b250YWxSdWxlID0gcnVsZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKaW5kZXggYmFkOTAzNWUxYWFjNjY2YWFhMWE5NTA5
NjM2M2VlYTA5NjVjYmZiZi4uNjU4ZGVkNTMwMzVlODFjZDJlMWUyNTFmMTU1NjQ0ZjRlOWI1ZjVh
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3Bw
CkBAIC05NDQsNyArOTQ0LDcgQEAgdm9pZCBSZW5kZXJTdHlsZTo6c2V0V2lsbENoYW5nZShQYXNz
UmVmUHRyPFdpbGxDaGFuZ2VEYXRhPiB3aWxsQ2hhbmdlRGF0YSkKICAgICBpZiAoYXJlUG9pbnRp
bmdUb0VxdWFsRGF0YShyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV93aWxsQ2hhbmdlLmdldCgpLCB3
aWxsQ2hhbmdlRGF0YS5nZXQoKSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHJhcmVOb25Jbmhl
cml0ZWREYXRhLmFjY2VzcygpLT5tX3dpbGxDaGFuZ2UgPSBXVEY6Om1vdmUod2lsbENoYW5nZURh
dGEpOworICAgIHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX3dpbGxDaGFuZ2UgPSBX
VEZNb3ZlKHdpbGxDaGFuZ2VEYXRhKTsKIH0KIAogdm9pZCBSZW5kZXJTdHlsZTo6Y2xlYXJDdXJz
b3JMaXN0KCkKQEAgLTk2Nyw5ICs5NjcsOSBAQCB2b2lkIFJlbmRlclN0eWxlOjphcHBlbmRDb250
ZW50KHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50RGF0YT4gY29udGVudERhdGEpCiAgICAgICAgIGxh
c3RDb250ZW50ID0gbGFzdENvbnRlbnQtPm5leHQoKTsKIAogICAgIGlmIChsYXN0Q29udGVudCkK
LSAgICAgICAgbGFzdENvbnRlbnQtPnNldE5leHQoV1RGOjptb3ZlKGNvbnRlbnREYXRhKSk7Cisg
ICAgICAgIGxhc3RDb250ZW50LT5zZXROZXh0KFdURk1vdmUoY29udGVudERhdGEpKTsKICAgICBl
bHNlCi0gICAgICAgIGNvbnRlbnQgPSBXVEY6Om1vdmUoY29udGVudERhdGEpOworICAgICAgICBj
b250ZW50ID0gV1RGTW92ZShjb250ZW50RGF0YSk7CiB9CiAKIHZvaWQgUmVuZGVyU3R5bGU6OnNl
dENvbnRlbnQoUGFzc1JlZlB0cjxTdHlsZUltYWdlPiBpbWFnZSwgYm9vbCBhZGQpCkBAIC0xMDIw
LDExICsxMDIwLDExIEBAIHZvaWQgUmVuZGVyU3R5bGU6OnNldENvbnRlbnQoc3RkOjp1bmlxdWVf
cHRyPENvdW50ZXJDb250ZW50PiBjb3VudGVyLCBib29sIGFkZCkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgaWYgKGFkZCkgewotICAgICAgICBhcHBlbmRDb250ZW50KHN0ZDo6bWFrZV91bmlxdWU8
Q291bnRlckNvbnRlbnREYXRhPihXVEY6Om1vdmUoY291bnRlcikpKTsKKyAgICAgICAgYXBwZW5k
Q29udGVudChzdGQ6Om1ha2VfdW5pcXVlPENvdW50ZXJDb250ZW50RGF0YT4oV1RGTW92ZShjb3Vu
dGVyKSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgcmFyZU5vbkluaGVyaXRlZERh
dGEuYWNjZXNzKCktPm1fY29udGVudCA9IHN0ZDo6bWFrZV91bmlxdWU8Q291bnRlckNvbnRlbnRE
YXRhPihXVEY6Om1vdmUoY291bnRlcikpOworICAgIHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2Vz
cygpLT5tX2NvbnRlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPENvdW50ZXJDb250ZW50RGF0YT4oV1RG
TW92ZShjb3VudGVyKSk7CiB9CiAKIHZvaWQgUmVuZGVyU3R5bGU6OnNldENvbnRlbnQoUXVvdGVU
eXBlIHF1b3RlLCBib29sIGFkZCkKQEAgLTExMTMsMjQgKzExMTMsMjQgQEAgdm9pZCBSZW5kZXJT
dHlsZTo6c2V0VGV4dFNoYWRvdyhzdGQ6OnVuaXF1ZV9wdHI8U2hhZG93RGF0YT4gc2hhZG93RGF0
YSwgYm9vbCBhZGQKIAogICAgIFN0eWxlUmFyZUluaGVyaXRlZERhdGEqIHJhcmVEYXRhID0gcmFy
ZUluaGVyaXRlZERhdGEuYWNjZXNzKCk7CiAgICAgaWYgKCFhZGQpIHsKLSAgICAgICAgcmFyZURh
dGEtPnRleHRTaGFkb3cgPSBXVEY6Om1vdmUoc2hhZG93RGF0YSk7CisgICAgICAgIHJhcmVEYXRh
LT50ZXh0U2hhZG93ID0gV1RGTW92ZShzaGFkb3dEYXRhKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIHNoYWRvd0RhdGEtPnNldE5leHQoV1RGOjptb3ZlKHJhcmVEYXRhLT50ZXh0U2hh
ZG93KSk7Ci0gICAgcmFyZURhdGEtPnRleHRTaGFkb3cgPSBXVEY6Om1vdmUoc2hhZG93RGF0YSk7
CisgICAgc2hhZG93RGF0YS0+c2V0TmV4dChXVEZNb3ZlKHJhcmVEYXRhLT50ZXh0U2hhZG93KSk7
CisgICAgcmFyZURhdGEtPnRleHRTaGFkb3cgPSBXVEZNb3ZlKHNoYWRvd0RhdGEpOwogfQogCiB2
b2lkIFJlbmRlclN0eWxlOjpzZXRCb3hTaGFkb3coc3RkOjp1bmlxdWVfcHRyPFNoYWRvd0RhdGE+
IHNoYWRvd0RhdGEsIGJvb2wgYWRkKQogewogICAgIFN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEq
IHJhcmVEYXRhID0gcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCk7CiAgICAgaWYgKCFhZGQp
IHsKLSAgICAgICAgcmFyZURhdGEtPm1fYm94U2hhZG93ID0gV1RGOjptb3ZlKHNoYWRvd0RhdGEp
OworICAgICAgICByYXJlRGF0YS0+bV9ib3hTaGFkb3cgPSBXVEZNb3ZlKHNoYWRvd0RhdGEpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgc2hhZG93RGF0YS0+c2V0TmV4dChXVEY6Om1v
dmUocmFyZURhdGEtPm1fYm94U2hhZG93KSk7Ci0gICAgcmFyZURhdGEtPm1fYm94U2hhZG93ID0g
V1RGOjptb3ZlKHNoYWRvd0RhdGEpOworICAgIHNoYWRvd0RhdGEtPnNldE5leHQoV1RGTW92ZShy
YXJlRGF0YS0+bV9ib3hTaGFkb3cpKTsKKyAgICByYXJlRGF0YS0+bV9ib3hTaGFkb3cgPSBXVEZN
b3ZlKHNoYWRvd0RhdGEpOwogfQogCiBzdGF0aWMgUm91bmRlZFJlY3Q6OlJhZGlpIGNhbGNSYWRp
aUZvcihjb25zdCBCb3JkZXJEYXRhJiBib3JkZXIsIGNvbnN0IExheW91dFNpemUmIHNpemUpCkBA
IC0xNDg0LDcgKzE0ODQsNyBAQCB2b2lkIFJlbmRlclN0eWxlOjpzZXRXb3JkU3BhY2luZyhMZW5n
dGggdmFsdWUpCiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBpbmhlcml0ZWQuYWNjZXNzKCkt
PmZvbnRDYXNjYWRlLnNldFdvcmRTcGFjaW5nKGZvbnRXb3JkU3BhY2luZyk7Ci0gICAgcmFyZUlu
aGVyaXRlZERhdGEuYWNjZXNzKCktPndvcmRTcGFjaW5nID0gV1RGOjptb3ZlKHZhbHVlKTsKKyAg
ICByYXJlSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+d29yZFNwYWNpbmcgPSBXVEZNb3ZlKHZhbHVl
KTsKIH0KIAogdm9pZCBSZW5kZXJTdHlsZTo6c2V0TGV0dGVyU3BhY2luZyhmbG9hdCB2KSB7IGlu
aGVyaXRlZC5hY2Nlc3MoKS0+Zm9udENhc2NhZGUuc2V0TGV0dGVyU3BhY2luZyh2KTsgfQpAQCAt
MTk0MywyOCArMTk0MywyOCBAQCB2b2lkIFJlbmRlclN0eWxlOjpzZXRTY3JvbGxTbmFwUG9pbnRz
WChzdGQ6OnVuaXF1ZV9wdHI8U2Nyb2xsU25hcFBvaW50cz4gcG9pbnRzKQogewogICAgIGlmIChy
YXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9zY3JvbGxTbmFwUG9pbnRzLT54UG9pbnRzLmdldCgpID09
IHBvaW50cy5nZXQoKSkKICAgICAgICAgcmV0dXJuOwotICAgIHJhcmVOb25Jbmhlcml0ZWREYXRh
LmFjY2VzcygpLT5tX3Njcm9sbFNuYXBQb2ludHMuYWNjZXNzKCktPnhQb2ludHMgPSBXVEY6Om1v
dmUocG9pbnRzKTsKKyAgICByYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9zY3JvbGxT
bmFwUG9pbnRzLmFjY2VzcygpLT54UG9pbnRzID0gV1RGTW92ZShwb2ludHMpOwogfQogCiB2b2lk
IFJlbmRlclN0eWxlOjpzZXRTY3JvbGxTbmFwUG9pbnRzWShzdGQ6OnVuaXF1ZV9wdHI8U2Nyb2xs
U25hcFBvaW50cz4gcG9pbnRzKQogewogICAgIGlmIChyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9z
Y3JvbGxTbmFwUG9pbnRzLT55UG9pbnRzLmdldCgpID09IHBvaW50cy5nZXQoKSkKICAgICAgICAg
cmV0dXJuOwotICAgIHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX3Njcm9sbFNuYXBQ
b2ludHMuYWNjZXNzKCktPnlQb2ludHMgPSBXVEY6Om1vdmUocG9pbnRzKTsKKyAgICByYXJlTm9u
SW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9zY3JvbGxTbmFwUG9pbnRzLmFjY2VzcygpLT55UG9p
bnRzID0gV1RGTW92ZShwb2ludHMpOwogfQogCiB2b2lkIFJlbmRlclN0eWxlOjpzZXRTY3JvbGxT
bmFwRGVzdGluYXRpb24oTGVuZ3RoU2l6ZSBkZXN0aW5hdGlvbikKIHsKICAgICBpZiAocmFyZU5v
bkluaGVyaXRlZERhdGEtPm1fc2Nyb2xsU25hcFBvaW50cy0+ZGVzdGluYXRpb24gPT0gZGVzdGlu
YXRpb24pCiAgICAgICAgIHJldHVybjsKLSAgICByYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3Mo
KS0+bV9zY3JvbGxTbmFwUG9pbnRzLmFjY2VzcygpLT5kZXN0aW5hdGlvbiA9IFdURjo6bW92ZShk
ZXN0aW5hdGlvbik7CisgICAgcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fc2Nyb2xs
U25hcFBvaW50cy5hY2Nlc3MoKS0+ZGVzdGluYXRpb24gPSBXVEZNb3ZlKGRlc3RpbmF0aW9uKTsK
IH0KIAogdm9pZCBSZW5kZXJTdHlsZTo6c2V0U2Nyb2xsU25hcENvb3JkaW5hdGVzKFZlY3RvcjxM
ZW5ndGhTaXplPiBjb29yZGluYXRlcykKIHsKICAgICBpZiAocmFyZU5vbkluaGVyaXRlZERhdGEt
Pm1fc2Nyb2xsU25hcFBvaW50cy0+Y29vcmRpbmF0ZXMgPT0gY29vcmRpbmF0ZXMpCiAgICAgICAg
IHJldHVybjsKLSAgICByYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9zY3JvbGxTbmFw
UG9pbnRzLmFjY2VzcygpLT5jb29yZGluYXRlcyA9IFdURjo6bW92ZShjb29yZGluYXRlcyk7Cisg
ICAgcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fc2Nyb2xsU25hcFBvaW50cy5hY2Nl
c3MoKS0+Y29vcmRpbmF0ZXMgPSBXVEZNb3ZlKGNvb3JkaW5hdGVzKTsKIH0KIAogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCmluZGV4IDQxMDI1
MGRmNjc4YTIxZDY0ZjIzNDFlNmZiMDdlNWM4OTdiMzk1ZTEuLjY1ODVjNmU0ODNmOWQ2OWQ2MGJl
Nzg3ZTE1NzU1YjExM2RhNzY1NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9SZW5kZXJTdHlsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9SZW5kZXJTdHlsZS5oCkBAIC0xMjE0LDM2ICsxMjE0LDM2IEBAIHB1YmxpYzoKICAgICB2b2lk
IHNldFBvc2l0aW9uKEVQb3NpdGlvbiB2KSB7IG5vbmluaGVyaXRlZF9mbGFncy5zZXRQb3NpdGlv
bih2KTsgfQogICAgIHZvaWQgc2V0RmxvYXRpbmcoRUZsb2F0IHYpIHsgbm9uaW5oZXJpdGVkX2Zs
YWdzLnNldEZsb2F0aW5nKHYpOyB9CiAKLSAgICB2b2lkIHNldExlZnQoTGVuZ3RoIHYpIHsgU0VU
X1ZBUihzdXJyb3VuZCwgb2Zmc2V0LmxlZnQoKSwgV1RGOjptb3ZlKHYpKTsgfQotICAgIHZvaWQg
c2V0UmlnaHQoTGVuZ3RoIHYpIHsgU0VUX1ZBUihzdXJyb3VuZCwgb2Zmc2V0LnJpZ2h0KCksIFdU
Rjo6bW92ZSh2KSk7IH0KLSAgICB2b2lkIHNldFRvcChMZW5ndGggdikgeyBTRVRfVkFSKHN1cnJv
dW5kLCBvZmZzZXQudG9wKCksIFdURjo6bW92ZSh2KSk7IH0KLSAgICB2b2lkIHNldEJvdHRvbShM
ZW5ndGggdikgeyBTRVRfVkFSKHN1cnJvdW5kLCBvZmZzZXQuYm90dG9tKCksIFdURjo6bW92ZSh2
KSk7IH0KKyAgICB2b2lkIHNldExlZnQoTGVuZ3RoIHYpIHsgU0VUX1ZBUihzdXJyb3VuZCwgb2Zm
c2V0LmxlZnQoKSwgV1RGTW92ZSh2KSk7IH0KKyAgICB2b2lkIHNldFJpZ2h0KExlbmd0aCB2KSB7
IFNFVF9WQVIoc3Vycm91bmQsIG9mZnNldC5yaWdodCgpLCBXVEZNb3ZlKHYpKTsgfQorICAgIHZv
aWQgc2V0VG9wKExlbmd0aCB2KSB7IFNFVF9WQVIoc3Vycm91bmQsIG9mZnNldC50b3AoKSwgV1RG
TW92ZSh2KSk7IH0KKyAgICB2b2lkIHNldEJvdHRvbShMZW5ndGggdikgeyBTRVRfVkFSKHN1cnJv
dW5kLCBvZmZzZXQuYm90dG9tKCksIFdURk1vdmUodikpOyB9CiAKLSAgICB2b2lkIHNldFdpZHRo
KExlbmd0aCB2KSB7IFNFVF9WQVIobV9ib3gsIG1fd2lkdGgsIFdURjo6bW92ZSh2KSk7IH0KLSAg
ICB2b2lkIHNldEhlaWdodChMZW5ndGggdikgeyBTRVRfVkFSKG1fYm94LCBtX2hlaWdodCwgV1RG
Ojptb3ZlKHYpKTsgfQorICAgIHZvaWQgc2V0V2lkdGgoTGVuZ3RoIHYpIHsgU0VUX1ZBUihtX2Jv
eCwgbV93aWR0aCwgV1RGTW92ZSh2KSk7IH0KKyAgICB2b2lkIHNldEhlaWdodChMZW5ndGggdikg
eyBTRVRfVkFSKG1fYm94LCBtX2hlaWdodCwgV1RGTW92ZSh2KSk7IH0KIAogICAgIHZvaWQgc2V0
TG9naWNhbFdpZHRoKExlbmd0aCB2KQogICAgIHsKICAgICAgICAgaWYgKGlzSG9yaXpvbnRhbFdy
aXRpbmdNb2RlKCkpIHsKLSAgICAgICAgICAgIFNFVF9WQVIobV9ib3gsIG1fd2lkdGgsIFdURjo6
bW92ZSh2KSk7CisgICAgICAgICAgICBTRVRfVkFSKG1fYm94LCBtX3dpZHRoLCBXVEZNb3ZlKHYp
KTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIFNFVF9WQVIobV9ib3gsIG1faGVpZ2h0
LCBXVEY6Om1vdmUodikpOworICAgICAgICAgICAgU0VUX1ZBUihtX2JveCwgbV9oZWlnaHQsIFdU
Rk1vdmUodikpOwogICAgICAgICB9CiAgICAgfQogCiAgICAgdm9pZCBzZXRMb2dpY2FsSGVpZ2h0
KExlbmd0aCB2KQogICAgIHsKICAgICAgICAgaWYgKGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkp
IHsKLSAgICAgICAgICAgIFNFVF9WQVIobV9ib3gsIG1faGVpZ2h0LCBXVEY6Om1vdmUodikpOwor
ICAgICAgICAgICAgU0VUX1ZBUihtX2JveCwgbV9oZWlnaHQsIFdURk1vdmUodikpOwogICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgU0VUX1ZBUihtX2JveCwgbV93aWR0aCwgV1RGOjptb3Zl
KHYpKTsKKyAgICAgICAgICAgIFNFVF9WQVIobV9ib3gsIG1fd2lkdGgsIFdURk1vdmUodikpOwog
ICAgICAgICB9CiAgICAgfQogCi0gICAgdm9pZCBzZXRNaW5XaWR0aChMZW5ndGggdikgeyBTRVRf
VkFSKG1fYm94LCBtX21pbldpZHRoLCBXVEY6Om1vdmUodikpOyB9Ci0gICAgdm9pZCBzZXRNYXhX
aWR0aChMZW5ndGggdikgeyBTRVRfVkFSKG1fYm94LCBtX21heFdpZHRoLCBXVEY6Om1vdmUodikp
OyB9Ci0gICAgdm9pZCBzZXRNaW5IZWlnaHQoTGVuZ3RoIHYpIHsgU0VUX1ZBUihtX2JveCwgbV9t
aW5IZWlnaHQsIFdURjo6bW92ZSh2KSk7IH0KLSAgICB2b2lkIHNldE1heEhlaWdodChMZW5ndGgg
dikgeyBTRVRfVkFSKG1fYm94LCBtX21heEhlaWdodCwgV1RGOjptb3ZlKHYpKTsgfQorICAgIHZv
aWQgc2V0TWluV2lkdGgoTGVuZ3RoIHYpIHsgU0VUX1ZBUihtX2JveCwgbV9taW5XaWR0aCwgV1RG
TW92ZSh2KSk7IH0KKyAgICB2b2lkIHNldE1heFdpZHRoKExlbmd0aCB2KSB7IFNFVF9WQVIobV9i
b3gsIG1fbWF4V2lkdGgsIFdURk1vdmUodikpOyB9CisgICAgdm9pZCBzZXRNaW5IZWlnaHQoTGVu
Z3RoIHYpIHsgU0VUX1ZBUihtX2JveCwgbV9taW5IZWlnaHQsIFdURk1vdmUodikpOyB9CisgICAg
dm9pZCBzZXRNYXhIZWlnaHQoTGVuZ3RoIHYpIHsgU0VUX1ZBUihtX2JveCwgbV9tYXhIZWlnaHQs
IFdURk1vdmUodikpOyB9CiAKICNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCiAgICAgVmVj
dG9yPFN0eWxlRGFzaGJvYXJkUmVnaW9uPiBkYXNoYm9hcmRSZWdpb25zKCkgY29uc3QgeyByZXR1
cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZGFzaGJvYXJkUmVnaW9uczsgfQpAQCAtMTI1Mywx
MCArMTI1MywxMCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBTdHlsZURhc2hib2FyZFJlZ2lv
biByZWdpb247CiAgICAgICAgIHJlZ2lvbi5sYWJlbCA9IGxhYmVsOwotICAgICAgICByZWdpb24u
b2Zmc2V0LnRvcCgpID0gV1RGOjptb3ZlKHQpOwotICAgICAgICByZWdpb24ub2Zmc2V0LnJpZ2h0
KCkgPSBXVEY6Om1vdmUocik7Ci0gICAgICAgIHJlZ2lvbi5vZmZzZXQuYm90dG9tKCkgPSBXVEY6
Om1vdmUoYik7Ci0gICAgICAgIHJlZ2lvbi5vZmZzZXQubGVmdCgpID0gV1RGOjptb3ZlKGwpOwor
ICAgICAgICByZWdpb24ub2Zmc2V0LnRvcCgpID0gV1RGTW92ZSh0KTsKKyAgICAgICAgcmVnaW9u
Lm9mZnNldC5yaWdodCgpID0gV1RGTW92ZShyKTsKKyAgICAgICAgcmVnaW9uLm9mZnNldC5ib3R0
b20oKSA9IFdURk1vdmUoYik7CisgICAgICAgIHJlZ2lvbi5vZmZzZXQubGVmdCgpID0gV1RGTW92
ZShsKTsKICAgICAgICAgcmVnaW9uLnR5cGUgPSB0eXBlOwogICAgICAgICBpZiAoIWFwcGVuZCkK
ICAgICAgICAgICAgIHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX2Rhc2hib2FyZFJl
Z2lvbnMuY2xlYXIoKTsKQEAgLTEyNzgsMTAgKzEyNzgsMTAgQEAgcHVibGljOgogCiAgICAgdm9p
ZCBzZXRCYWNrZ3JvdW5kQ29sb3IoY29uc3QgQ29sb3ImIHYpIHsgU0VUX1ZBUihtX2JhY2tncm91
bmQsIG1fY29sb3IsIHYpOyB9CiAKLSAgICB2b2lkIHNldEJhY2tncm91bmRYUG9zaXRpb24oTGVu
Z3RoIGxlbmd0aCkgeyBTRVRfVkFSKG1fYmFja2dyb3VuZCwgbV9iYWNrZ3JvdW5kLm1feFBvc2l0
aW9uLCBXVEY6Om1vdmUobGVuZ3RoKSk7IH0KLSAgICB2b2lkIHNldEJhY2tncm91bmRZUG9zaXRp
b24oTGVuZ3RoIGxlbmd0aCkgeyBTRVRfVkFSKG1fYmFja2dyb3VuZCwgbV9iYWNrZ3JvdW5kLm1f
eVBvc2l0aW9uLCBXVEY6Om1vdmUobGVuZ3RoKSk7IH0KKyAgICB2b2lkIHNldEJhY2tncm91bmRY
UG9zaXRpb24oTGVuZ3RoIGxlbmd0aCkgeyBTRVRfVkFSKG1fYmFja2dyb3VuZCwgbV9iYWNrZ3Jv
dW5kLm1feFBvc2l0aW9uLCBXVEZNb3ZlKGxlbmd0aCkpOyB9CisgICAgdm9pZCBzZXRCYWNrZ3Jv
dW5kWVBvc2l0aW9uKExlbmd0aCBsZW5ndGgpIHsgU0VUX1ZBUihtX2JhY2tncm91bmQsIG1fYmFj
a2dyb3VuZC5tX3lQb3NpdGlvbiwgV1RGTW92ZShsZW5ndGgpKTsgfQogICAgIHZvaWQgc2V0QmFj
a2dyb3VuZFNpemUoRUZpbGxTaXplVHlwZSBiKSB7IFNFVF9WQVIobV9iYWNrZ3JvdW5kLCBtX2Jh
Y2tncm91bmQubV9zaXplVHlwZSwgYik7IH0KLSAgICB2b2lkIHNldEJhY2tncm91bmRTaXplTGVu
Z3RoKExlbmd0aFNpemUgc2l6ZSkgeyBTRVRfVkFSKG1fYmFja2dyb3VuZCwgbV9iYWNrZ3JvdW5k
Lm1fc2l6ZUxlbmd0aCwgV1RGOjptb3ZlKHNpemUpKTsgfQorICAgIHZvaWQgc2V0QmFja2dyb3Vu
ZFNpemVMZW5ndGgoTGVuZ3RoU2l6ZSBzaXplKSB7IFNFVF9WQVIobV9iYWNrZ3JvdW5kLCBtX2Jh
Y2tncm91bmQubV9zaXplTGVuZ3RoLCBXVEZNb3ZlKHNpemUpKTsgfQogICAgIAogICAgIHZvaWQg
c2V0Qm9yZGVySW1hZ2UoY29uc3QgTmluZVBpZWNlSW1hZ2UmIGIpIHsgU0VUX1ZBUihzdXJyb3Vu
ZCwgYm9yZGVyLm1faW1hZ2UsIGIpOyB9CiAgICAgdm9pZCBzZXRCb3JkZXJJbWFnZVNvdXJjZShQ
YXNzUmVmUHRyPFN0eWxlSW1hZ2U+KTsKQEAgLTEyODksMTAgKzEyODksMTAgQEAgcHVibGljOgog
ICAgIHZvaWQgc2V0Qm9yZGVySW1hZ2VXaWR0aChMZW5ndGhCb3gpOwogICAgIHZvaWQgc2V0Qm9y
ZGVySW1hZ2VPdXRzZXQoTGVuZ3RoQm94KTsKIAotICAgIHZvaWQgc2V0Qm9yZGVyVG9wTGVmdFJh
ZGl1cyhMZW5ndGhTaXplIHNpemUpIHsgU0VUX1ZBUihzdXJyb3VuZCwgYm9yZGVyLm1fdG9wTGVm
dCwgV1RGOjptb3ZlKHNpemUpKTsgfQotICAgIHZvaWQgc2V0Qm9yZGVyVG9wUmlnaHRSYWRpdXMo
TGVuZ3RoU2l6ZSBzaXplKSB7IFNFVF9WQVIoc3Vycm91bmQsIGJvcmRlci5tX3RvcFJpZ2h0LCBX
VEY6Om1vdmUoc2l6ZSkpOyB9Ci0gICAgdm9pZCBzZXRCb3JkZXJCb3R0b21MZWZ0UmFkaXVzKExl
bmd0aFNpemUgc2l6ZSkgeyBTRVRfVkFSKHN1cnJvdW5kLCBib3JkZXIubV9ib3R0b21MZWZ0LCBX
VEY6Om1vdmUoc2l6ZSkpOyB9Ci0gICAgdm9pZCBzZXRCb3JkZXJCb3R0b21SaWdodFJhZGl1cyhM
ZW5ndGhTaXplIHNpemUpIHsgU0VUX1ZBUihzdXJyb3VuZCwgYm9yZGVyLm1fYm90dG9tUmlnaHQs
IFdURjo6bW92ZShzaXplKSk7IH0KKyAgICB2b2lkIHNldEJvcmRlclRvcExlZnRSYWRpdXMoTGVu
Z3RoU2l6ZSBzaXplKSB7IFNFVF9WQVIoc3Vycm91bmQsIGJvcmRlci5tX3RvcExlZnQsIFdURk1v
dmUoc2l6ZSkpOyB9CisgICAgdm9pZCBzZXRCb3JkZXJUb3BSaWdodFJhZGl1cyhMZW5ndGhTaXpl
IHNpemUpIHsgU0VUX1ZBUihzdXJyb3VuZCwgYm9yZGVyLm1fdG9wUmlnaHQsIFdURk1vdmUoc2l6
ZSkpOyB9CisgICAgdm9pZCBzZXRCb3JkZXJCb3R0b21MZWZ0UmFkaXVzKExlbmd0aFNpemUgc2l6
ZSkgeyBTRVRfVkFSKHN1cnJvdW5kLCBib3JkZXIubV9ib3R0b21MZWZ0LCBXVEZNb3ZlKHNpemUp
KTsgfQorICAgIHZvaWQgc2V0Qm9yZGVyQm90dG9tUmlnaHRSYWRpdXMoTGVuZ3RoU2l6ZSBzaXpl
KSB7IFNFVF9WQVIoc3Vycm91bmQsIGJvcmRlci5tX2JvdHRvbVJpZ2h0LCBXVEZNb3ZlKHNpemUp
KTsgfQogCiAgICAgdm9pZCBzZXRCb3JkZXJSYWRpdXMoTGVuZ3RoU2l6ZSBzKQogICAgIHsKQEAg
LTEzMzQsMTUgKzEzMzQsMTUgQEAgcHVibGljOgogICAgIHZvaWQgc2V0T3ZlcmZsb3dZKEVPdmVy
ZmxvdyB2KSB7IG5vbmluaGVyaXRlZF9mbGFncy5zZXRPdmVyZmxvd1kodik7IH0KICAgICB2b2lk
IHNldFZpc2liaWxpdHkoRVZpc2liaWxpdHkgdikgeyBpbmhlcml0ZWRfZmxhZ3MuX3Zpc2liaWxp
dHkgPSB2OyB9CiAgICAgdm9pZCBzZXRWZXJ0aWNhbEFsaWduKEVWZXJ0aWNhbEFsaWduIHYpIHsg
bm9uaW5oZXJpdGVkX2ZsYWdzLnNldFZlcnRpY2FsQWxpZ24odik7IH0KLSAgICB2b2lkIHNldFZl
cnRpY2FsQWxpZ25MZW5ndGgoTGVuZ3RoIGxlbmd0aCkgeyBzZXRWZXJ0aWNhbEFsaWduKExFTkdU
SCk7IFNFVF9WQVIobV9ib3gsIG1fdmVydGljYWxBbGlnbiwgV1RGOjptb3ZlKGxlbmd0aCkpOyB9
CisgICAgdm9pZCBzZXRWZXJ0aWNhbEFsaWduTGVuZ3RoKExlbmd0aCBsZW5ndGgpIHsgc2V0VmVy
dGljYWxBbGlnbihMRU5HVEgpOyBTRVRfVkFSKG1fYm94LCBtX3ZlcnRpY2FsQWxpZ24sIFdURk1v
dmUobGVuZ3RoKSk7IH0KIAogICAgIHZvaWQgc2V0SGFzQ2xpcChib29sIGIgPSB0cnVlKSB7IFNF
VF9WQVIodmlzdWFsLCBoYXNDbGlwLCBiKTsgfQotICAgIHZvaWQgc2V0Q2xpcExlZnQoTGVuZ3Ro
IGxlbmd0aCkgeyBTRVRfVkFSKHZpc3VhbCwgY2xpcC5sZWZ0KCksIFdURjo6bW92ZShsZW5ndGgp
KTsgfQotICAgIHZvaWQgc2V0Q2xpcFJpZ2h0KExlbmd0aCBsZW5ndGgpIHsgU0VUX1ZBUih2aXN1
YWwsIGNsaXAucmlnaHQoKSwgV1RGOjptb3ZlKGxlbmd0aCkpOyB9Ci0gICAgdm9pZCBzZXRDbGlw
VG9wKExlbmd0aCBsZW5ndGgpIHsgU0VUX1ZBUih2aXN1YWwsIGNsaXAudG9wKCksIFdURjo6bW92
ZShsZW5ndGgpKTsgfQotICAgIHZvaWQgc2V0Q2xpcEJvdHRvbShMZW5ndGggbGVuZ3RoKSB7IFNF
VF9WQVIodmlzdWFsLCBjbGlwLmJvdHRvbSgpLCBXVEY6Om1vdmUobGVuZ3RoKSk7IH0KKyAgICB2
b2lkIHNldENsaXBMZWZ0KExlbmd0aCBsZW5ndGgpIHsgU0VUX1ZBUih2aXN1YWwsIGNsaXAubGVm
dCgpLCBXVEZNb3ZlKGxlbmd0aCkpOyB9CisgICAgdm9pZCBzZXRDbGlwUmlnaHQoTGVuZ3RoIGxl
bmd0aCkgeyBTRVRfVkFSKHZpc3VhbCwgY2xpcC5yaWdodCgpLCBXVEZNb3ZlKGxlbmd0aCkpOyB9
CisgICAgdm9pZCBzZXRDbGlwVG9wKExlbmd0aCBsZW5ndGgpIHsgU0VUX1ZBUih2aXN1YWwsIGNs
aXAudG9wKCksIFdURk1vdmUobGVuZ3RoKSk7IH0KKyAgICB2b2lkIHNldENsaXBCb3R0b20oTGVu
Z3RoIGxlbmd0aCkgeyBTRVRfVkFSKHZpc3VhbCwgY2xpcC5ib3R0b20oKSwgV1RGTW92ZShsZW5n
dGgpKTsgfQogICAgIHZvaWQgc2V0Q2xpcChMZW5ndGggdG9wLCBMZW5ndGggcmlnaHQsIExlbmd0
aCBib3R0b20sIExlbmd0aCBsZWZ0KTsKLSAgICB2b2lkIHNldENsaXAoTGVuZ3RoQm94IGJveCkg
eyBTRVRfVkFSKHZpc3VhbCwgY2xpcCwgV1RGOjptb3ZlKGJveCkpOyB9CisgICAgdm9pZCBzZXRD
bGlwKExlbmd0aEJveCBib3gpIHsgU0VUX1ZBUih2aXN1YWwsIGNsaXAsIFdURk1vdmUoYm94KSk7
IH0KIAogICAgIHZvaWQgc2V0VW5pY29kZUJpZGkoRVVuaWNvZGVCaWRpIGIpIHsgbm9uaW5oZXJp
dGVkX2ZsYWdzLnNldFVuaWNvZGVCaWRpKGIpOyB9CiAKQEAgLTEzNjIsNyArMTM2Miw3IEBAIHB1
YmxpYzoKICNlbmRpZgogCiAgICAgdm9pZCBzZXRDb2xvcihjb25zdCBDb2xvciYpOwotICAgIHZv
aWQgc2V0VGV4dEluZGVudChMZW5ndGggbGVuZ3RoKSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERh
dGEsIGluZGVudCwgV1RGOjptb3ZlKGxlbmd0aCkpOyB9CisgICAgdm9pZCBzZXRUZXh0SW5kZW50
KExlbmd0aCBsZW5ndGgpIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgaW5kZW50LCBXVEZN
b3ZlKGxlbmd0aCkpOyB9CiAjaWYgRU5BQkxFKENTUzNfVEVYVCkKICAgICB2b2lkIHNldFRleHRJ
bmRlbnRMaW5lKFRleHRJbmRlbnRMaW5lIHYpIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwg
bV90ZXh0SW5kZW50TGluZSwgdik7IH0KICAgICB2b2lkIHNldFRleHRJbmRlbnRUeXBlKFRleHRJ
bmRlbnRUeXBlIHYpIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgbV90ZXh0SW5kZW50VHlw
ZSwgdik7IH0KQEAgLTE0MzIsOSArMTQzMiw5IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0TWFz
a0JveEltYWdlKGNvbnN0IE5pbmVQaWVjZUltYWdlJiBiKSB7IFNFVF9WQVIocmFyZU5vbkluaGVy
aXRlZERhdGEsIG1fbWFza0JveEltYWdlLCBiKTsgfQogICAgIHZvaWQgc2V0TWFza0JveEltYWdl
U291cmNlKFBhc3NSZWZQdHI8U3R5bGVJbWFnZT4gdikgeyByYXJlTm9uSW5oZXJpdGVkRGF0YS5h
Y2Nlc3MoKS0+bV9tYXNrQm94SW1hZ2Uuc2V0SW1hZ2Uodik7IH0KLSAgICB2b2lkIHNldE1hc2tY
UG9zaXRpb24oTGVuZ3RoIGxlbmd0aCkgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBt
X21hc2subV94UG9zaXRpb24sIFdURjo6bW92ZShsZW5ndGgpKTsgfQotICAgIHZvaWQgc2V0TWFz
a1lQb3NpdGlvbihMZW5ndGggbGVuZ3RoKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEs
IG1fbWFzay5tX3lQb3NpdGlvbiwgV1RGOjptb3ZlKGxlbmd0aCkpOyB9Ci0gICAgdm9pZCBzZXRN
YXNrU2l6ZShMZW5ndGhTaXplIHNpemUpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwg
bV9tYXNrLm1fc2l6ZUxlbmd0aCwgV1RGOjptb3ZlKHNpemUpKTsgfQorICAgIHZvaWQgc2V0TWFz
a1hQb3NpdGlvbihMZW5ndGggbGVuZ3RoKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEs
IG1fbWFzay5tX3hQb3NpdGlvbiwgV1RGTW92ZShsZW5ndGgpKTsgfQorICAgIHZvaWQgc2V0TWFz
a1lQb3NpdGlvbihMZW5ndGggbGVuZ3RoKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEs
IG1fbWFzay5tX3lQb3NpdGlvbiwgV1RGTW92ZShsZW5ndGgpKTsgfQorICAgIHZvaWQgc2V0TWFz
a1NpemUoTGVuZ3RoU2l6ZSBzaXplKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1f
bWFzay5tX3NpemVMZW5ndGgsIFdURk1vdmUoc2l6ZSkpOyB9CiAKICAgICB2b2lkIHNldEJvcmRl
ckNvbGxhcHNlKEVCb3JkZXJDb2xsYXBzZSBjb2xsYXBzZSkgeyBpbmhlcml0ZWRfZmxhZ3MuX2Jv
cmRlcl9jb2xsYXBzZSA9IGNvbGxhcHNlOyB9CiAgICAgdm9pZCBzZXRIb3Jpem9udGFsQm9yZGVy
U3BhY2luZyhzaG9ydCk7CkBAIC0xNDUxLDE5ICsxNDUxLDE5IEBAIHB1YmxpYzoKICAgICB2b2lk
IHNldExpc3RTdHlsZVBvc2l0aW9uKEVMaXN0U3R5bGVQb3NpdGlvbiB2KSB7IGluaGVyaXRlZF9m
bGFncy5fbGlzdF9zdHlsZV9wb3NpdGlvbiA9IHY7IH0KIAogICAgIHZvaWQgcmVzZXRNYXJnaW4o
KSB7IFNFVF9WQVIoc3Vycm91bmQsIG1hcmdpbiwgTGVuZ3RoQm94KEZpeGVkKSk7IH0KLSAgICB2
b2lkIHNldE1hcmdpblRvcChMZW5ndGggbGVuZ3RoKSB7IFNFVF9WQVIoc3Vycm91bmQsIG1hcmdp
bi50b3AoKSwgV1RGOjptb3ZlKGxlbmd0aCkpOyB9Ci0gICAgdm9pZCBzZXRNYXJnaW5Cb3R0b20o
TGVuZ3RoIGxlbmd0aCkgeyBTRVRfVkFSKHN1cnJvdW5kLCBtYXJnaW4uYm90dG9tKCksIFdURjo6
bW92ZShsZW5ndGgpKTsgfQotICAgIHZvaWQgc2V0TWFyZ2luTGVmdChMZW5ndGggbGVuZ3RoKSB7
IFNFVF9WQVIoc3Vycm91bmQsIG1hcmdpbi5sZWZ0KCksIFdURjo6bW92ZShsZW5ndGgpKTsgfQot
ICAgIHZvaWQgc2V0TWFyZ2luUmlnaHQoTGVuZ3RoIGxlbmd0aCkgeyBTRVRfVkFSKHN1cnJvdW5k
LCBtYXJnaW4ucmlnaHQoKSwgV1RGOjptb3ZlKGxlbmd0aCkpOyB9CisgICAgdm9pZCBzZXRNYXJn
aW5Ub3AoTGVuZ3RoIGxlbmd0aCkgeyBTRVRfVkFSKHN1cnJvdW5kLCBtYXJnaW4udG9wKCksIFdU
Rk1vdmUobGVuZ3RoKSk7IH0KKyAgICB2b2lkIHNldE1hcmdpbkJvdHRvbShMZW5ndGggbGVuZ3Ro
KSB7IFNFVF9WQVIoc3Vycm91bmQsIG1hcmdpbi5ib3R0b20oKSwgV1RGTW92ZShsZW5ndGgpKTsg
fQorICAgIHZvaWQgc2V0TWFyZ2luTGVmdChMZW5ndGggbGVuZ3RoKSB7IFNFVF9WQVIoc3Vycm91
bmQsIG1hcmdpbi5sZWZ0KCksIFdURk1vdmUobGVuZ3RoKSk7IH0KKyAgICB2b2lkIHNldE1hcmdp
blJpZ2h0KExlbmd0aCBsZW5ndGgpIHsgU0VUX1ZBUihzdXJyb3VuZCwgbWFyZ2luLnJpZ2h0KCks
IFdURk1vdmUobGVuZ3RoKSk7IH0KICAgICB2b2lkIHNldE1hcmdpblN0YXJ0KExlbmd0aCk7CiAg
ICAgdm9pZCBzZXRNYXJnaW5FbmQoTGVuZ3RoKTsKIAogICAgIHZvaWQgcmVzZXRQYWRkaW5nKCkg
eyBTRVRfVkFSKHN1cnJvdW5kLCBwYWRkaW5nLCBMZW5ndGhCb3goQXV0bykpOyB9Ci0gICAgdm9p
ZCBzZXRQYWRkaW5nQm94KExlbmd0aEJveCBib3gpIHsgU0VUX1ZBUihzdXJyb3VuZCwgcGFkZGlu
ZywgV1RGOjptb3ZlKGJveCkpOyB9Ci0gICAgdm9pZCBzZXRQYWRkaW5nVG9wKExlbmd0aCBsZW5n
dGgpIHsgU0VUX1ZBUihzdXJyb3VuZCwgcGFkZGluZy50b3AoKSwgV1RGOjptb3ZlKGxlbmd0aCkp
OyB9Ci0gICAgdm9pZCBzZXRQYWRkaW5nQm90dG9tKExlbmd0aCBsZW5ndGgpIHsgU0VUX1ZBUihz
dXJyb3VuZCwgcGFkZGluZy5ib3R0b20oKSwgV1RGOjptb3ZlKGxlbmd0aCkpOyB9Ci0gICAgdm9p
ZCBzZXRQYWRkaW5nTGVmdChMZW5ndGggbGVuZ3RoKSB7IFNFVF9WQVIoc3Vycm91bmQsIHBhZGRp
bmcubGVmdCgpLCBXVEY6Om1vdmUobGVuZ3RoKSk7IH0KLSAgICB2b2lkIHNldFBhZGRpbmdSaWdo
dChMZW5ndGggbGVuZ3RoKSB7IFNFVF9WQVIoc3Vycm91bmQsIHBhZGRpbmcucmlnaHQoKSwgV1RG
Ojptb3ZlKGxlbmd0aCkpOyB9CisgICAgdm9pZCBzZXRQYWRkaW5nQm94KExlbmd0aEJveCBib3gp
IHsgU0VUX1ZBUihzdXJyb3VuZCwgcGFkZGluZywgV1RGTW92ZShib3gpKTsgfQorICAgIHZvaWQg
c2V0UGFkZGluZ1RvcChMZW5ndGggbGVuZ3RoKSB7IFNFVF9WQVIoc3Vycm91bmQsIHBhZGRpbmcu
dG9wKCksIFdURk1vdmUobGVuZ3RoKSk7IH0KKyAgICB2b2lkIHNldFBhZGRpbmdCb3R0b20oTGVu
Z3RoIGxlbmd0aCkgeyBTRVRfVkFSKHN1cnJvdW5kLCBwYWRkaW5nLmJvdHRvbSgpLCBXVEZNb3Zl
KGxlbmd0aCkpOyB9CisgICAgdm9pZCBzZXRQYWRkaW5nTGVmdChMZW5ndGggbGVuZ3RoKSB7IFNF
VF9WQVIoc3Vycm91bmQsIHBhZGRpbmcubGVmdCgpLCBXVEZNb3ZlKGxlbmd0aCkpOyB9CisgICAg
dm9pZCBzZXRQYWRkaW5nUmlnaHQoTGVuZ3RoIGxlbmd0aCkgeyBTRVRfVkFSKHN1cnJvdW5kLCBw
YWRkaW5nLnJpZ2h0KCksIFdURk1vdmUobGVuZ3RoKSk7IH0KIAogICAgIHZvaWQgc2V0Q3Vyc29y
KEVDdXJzb3IgYykgeyBpbmhlcml0ZWRfZmxhZ3MuX2N1cnNvcl9zdHlsZSA9IGM7IH0KICAgICB2
b2lkIGFkZEN1cnNvcihQYXNzUmVmUHRyPFN0eWxlSW1hZ2U+LCBjb25zdCBJbnRQb2ludCYgaG90
U3BvdCA9IEludFBvaW50KCkpOwpAQCAtMTUyMyw3ICsxNTIzLDcgQEAgcHVibGljOgogICAgIHZv
aWQgc2V0Qm94U2l6aW5nKEVCb3hTaXppbmcgcykgeyBTRVRfVkFSKG1fYm94LCBtX2JveFNpemlu
Zywgcyk7IH0KICAgICB2b2lkIHNldEZsZXhHcm93KGZsb2F0IGYpIHsgU0VUX1ZBUihyYXJlTm9u
SW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9mbGV4aWJsZUJveCwgbV9mbGV4R3JvdywgZik7IH0K
ICAgICB2b2lkIHNldEZsZXhTaHJpbmsoZmxvYXQgZikgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0
ZWREYXRhLmFjY2VzcygpLT5tX2ZsZXhpYmxlQm94LCBtX2ZsZXhTaHJpbmssIGYpOyB9Ci0gICAg
dm9pZCBzZXRGbGV4QmFzaXMoTGVuZ3RoIGxlbmd0aCkgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0
ZWREYXRhLmFjY2VzcygpLT5tX2ZsZXhpYmxlQm94LCBtX2ZsZXhCYXNpcywgV1RGOjptb3ZlKGxl
bmd0aCkpOyB9CisgICAgdm9pZCBzZXRGbGV4QmFzaXMoTGVuZ3RoIGxlbmd0aCkgeyBTRVRfVkFS
KHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX2ZsZXhpYmxlQm94LCBtX2ZsZXhCYXNp
cywgV1RGTW92ZShsZW5ndGgpKTsgfQogICAgIHZvaWQgc2V0T3JkZXIoaW50IG8pIHsgU0VUX1ZB
UihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9vcmRlciwgbyk7IH0KICAgICB2b2lkIHNldEFsaWdu
Q29udGVudChjb25zdCBTdHlsZUNvbnRlbnRBbGlnbm1lbnREYXRhJiBkYXRhKSB7IFNFVF9WQVIo
cmFyZU5vbkluaGVyaXRlZERhdGEsIG1fYWxpZ25Db250ZW50LCBkYXRhKTsgfQogICAgIHZvaWQg
c2V0QWxpZ25Db250ZW50UG9zaXRpb24oQ29udGVudFBvc2l0aW9uIHBvc2l0aW9uKSB7IHJhcmVO
b25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX2FsaWduQ29udGVudC5zZXRQb3NpdGlvbihwb3Np
dGlvbik7IH0KQEAgLTE1NjgsNyArMTU2OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEdyaWRD
b2x1bW5HYXAoY29uc3QgTGVuZ3RoJiB2KSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEu
YWNjZXNzKCktPm1fZ3JpZCwgbV9ncmlkQ29sdW1uR2FwLCB2KTsgfQogICAgIHZvaWQgc2V0R3Jp
ZFJvd0dhcChjb25zdCBMZW5ndGgmIHYpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YS5h
Y2Nlc3MoKS0+bV9ncmlkLCBtX2dyaWRSb3dHYXAsIHYpOyB9CiAjZW5kaWYgLyogRU5BQkxFKENT
U19HUklEX0xBWU9VVCkgKi8KLSAgICB2b2lkIHNldE1hcnF1ZWVJbmNyZW1lbnQoTGVuZ3RoIGxl
bmd0aCkgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX21hcnF1ZWUs
IGluY3JlbWVudCwgV1RGOjptb3ZlKGxlbmd0aCkpOyB9CisgICAgdm9pZCBzZXRNYXJxdWVlSW5j
cmVtZW50KExlbmd0aCBsZW5ndGgpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nl
c3MoKS0+bV9tYXJxdWVlLCBpbmNyZW1lbnQsIFdURk1vdmUobGVuZ3RoKSk7IH0KICAgICB2b2lk
IHNldE1hcnF1ZWVTcGVlZChpbnQgZikgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLmFj
Y2VzcygpLT5tX21hcnF1ZWUsIHNwZWVkLCBmKTsgfQogICAgIHZvaWQgc2V0TWFycXVlZURpcmVj
dGlvbihFTWFycXVlZURpcmVjdGlvbiBkKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEu
YWNjZXNzKCktPm1fbWFycXVlZSwgZGlyZWN0aW9uLCBkKTsgfQogICAgIHZvaWQgc2V0TWFycXVl
ZUJlaGF2aW9yKEVNYXJxdWVlQmVoYXZpb3IgYikgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWRE
YXRhLmFjY2VzcygpLT5tX21hcnF1ZWUsIGJlaGF2aW9yLCBiKTsgfQpAQCAtMTYxMyw4ICsxNjEz
LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0UmVnaW9uQnJlYWtBZnRlcihFUGFnZUJyZWFrIHAp
IHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9yZWdpb25CcmVha0FmdGVyLCBwKTsg
fQogICAgIHZvaWQgaW5oZXJpdENvbHVtblByb3BlcnRpZXNGcm9tKFJlbmRlclN0eWxlKiBwYXJl
bnQpIHsgcmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fbXVsdGlDb2wgPSBwYXJlbnQt
PnJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX211bHRpQ29sOyB9CiAgICAgdm9pZCBzZXRUcmFuc2Zv
cm0oY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9ucyYgb3BzKSB7IFNFVF9WQVIocmFyZU5vbkluaGVy
aXRlZERhdGEuYWNjZXNzKCktPm1fdHJhbnNmb3JtLCBtX29wZXJhdGlvbnMsIG9wcyk7IH0KLSAg
ICB2b2lkIHNldFRyYW5zZm9ybU9yaWdpblgoTGVuZ3RoIGxlbmd0aCkgeyBTRVRfVkFSKHJhcmVO
b25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX3RyYW5zZm9ybSwgbV94LCBXVEY6Om1vdmUobGVu
Z3RoKSk7IH0KLSAgICB2b2lkIHNldFRyYW5zZm9ybU9yaWdpblkoTGVuZ3RoIGxlbmd0aCkgeyBT
RVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX3RyYW5zZm9ybSwgbV95LCBX
VEY6Om1vdmUobGVuZ3RoKSk7IH0KKyAgICB2b2lkIHNldFRyYW5zZm9ybU9yaWdpblgoTGVuZ3Ro
IGxlbmd0aCkgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX3RyYW5z
Zm9ybSwgbV94LCBXVEZNb3ZlKGxlbmd0aCkpOyB9CisgICAgdm9pZCBzZXRUcmFuc2Zvcm1Pcmln
aW5ZKExlbmd0aCBsZW5ndGgpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3Mo
KS0+bV90cmFuc2Zvcm0sIG1feSwgV1RGTW92ZShsZW5ndGgpKTsgfQogICAgIHZvaWQgc2V0VHJh
bnNmb3JtT3JpZ2luWihmbG9hdCBmKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEuYWNj
ZXNzKCktPm1fdHJhbnNmb3JtLCBtX3osIGYpOyB9CiAgICAgdm9pZCBzZXRTcGVhayhFU3BlYWsg
cykgeyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCBzcGVhaywgcyk7IH0KICAgICB2b2lkIHNl
dFRleHRDb21iaW5lKFRleHRDb21iaW5lIHYpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0
YSwgbV90ZXh0Q29tYmluZSwgdik7IH0KQEAgLTE2NjgsOSArMTY2OCw5IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHNldFRyYW5zZm9ybVN0eWxlM0QoRVRyYW5zZm9ybVN0eWxlM0QgYikgeyBTRVRfVkFS
KHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX3RyYW5zZm9ybVN0eWxlM0QsIGIpOyB9CiAgICAgdm9p
ZCBzZXRCYWNrZmFjZVZpc2liaWxpdHkoRUJhY2tmYWNlVmlzaWJpbGl0eSBiKSB7IFNFVF9WQVIo
cmFyZU5vbkluaGVyaXRlZERhdGEsIG1fYmFja2ZhY2VWaXNpYmlsaXR5LCBiKTsgfQogICAgIHZv
aWQgc2V0UGVyc3BlY3RpdmUoZmxvYXQgcCkgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRh
LCBtX3BlcnNwZWN0aXZlLCBwKTsgfQotICAgIHZvaWQgc2V0UGVyc3BlY3RpdmVPcmlnaW5YKExl
bmd0aCBsZW5ndGgpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9wZXJzcGVjdGl2
ZU9yaWdpblgsIFdURjo6bW92ZShsZW5ndGgpKTsgfQotICAgIHZvaWQgc2V0UGVyc3BlY3RpdmVP
cmlnaW5ZKExlbmd0aCBsZW5ndGgpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9w
ZXJzcGVjdGl2ZU9yaWdpblksIFdURjo6bW92ZShsZW5ndGgpKTsgfQotICAgIHZvaWQgc2V0UGFn
ZVNpemUoTGVuZ3RoU2l6ZSBzaXplKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1f
cGFnZVNpemUsIFdURjo6bW92ZShzaXplKSk7IH0KKyAgICB2b2lkIHNldFBlcnNwZWN0aXZlT3Jp
Z2luWChMZW5ndGggbGVuZ3RoKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fcGVy
c3BlY3RpdmVPcmlnaW5YLCBXVEZNb3ZlKGxlbmd0aCkpOyB9CisgICAgdm9pZCBzZXRQZXJzcGVj
dGl2ZU9yaWdpblkoTGVuZ3RoIGxlbmd0aCkgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRh
LCBtX3BlcnNwZWN0aXZlT3JpZ2luWSwgV1RGTW92ZShsZW5ndGgpKTsgfQorICAgIHZvaWQgc2V0
UGFnZVNpemUoTGVuZ3RoU2l6ZSBzaXplKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEs
IG1fcGFnZVNpemUsIFdURk1vdmUoc2l6ZSkpOyB9CiAgICAgdm9pZCBzZXRQYWdlU2l6ZVR5cGUo
UGFnZVNpemVUeXBlIHQpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9wYWdlU2l6
ZVR5cGUsIHQpOyB9CiAgICAgdm9pZCByZXNldFBhZ2VTaXplVHlwZSgpIHsgU0VUX1ZBUihyYXJl
Tm9uSW5oZXJpdGVkRGF0YSwgbV9wYWdlU2l6ZVR5cGUsIFBBR0VfU0laRV9BVVRPKTsgfQogCkBA
IC0xNzgwLDcgKzE3ODAsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFNoYXBlVmFsdWUqIGluaXRp
YWxTaGFwZU91dHNpZGUoKSB7IHJldHVybiAwOyB9CiAKICAgICBjb25zdCBMZW5ndGgmIHNoYXBl
TWFyZ2luKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fc2hhcGVNYXJn
aW47IH0KLSAgICB2b2lkIHNldFNoYXBlTWFyZ2luKExlbmd0aCBzaGFwZU1hcmdpbikgeyBTRVRf
VkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX3NoYXBlTWFyZ2luLCBXVEY6Om1vdmUoc2hhcGVN
YXJnaW4pKTsgfQorICAgIHZvaWQgc2V0U2hhcGVNYXJnaW4oTGVuZ3RoIHNoYXBlTWFyZ2luKSB7
IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fc2hhcGVNYXJnaW4sIFdURk1vdmUoc2hh
cGVNYXJnaW4pKTsgfQogICAgIHN0YXRpYyBMZW5ndGggaW5pdGlhbFNoYXBlTWFyZ2luKCkgeyBy
ZXR1cm4gTGVuZ3RoKDAsIEZpeGVkKTsgfQogCiAgICAgZmxvYXQgc2hhcGVJbWFnZVRocmVzaG9s
ZCgpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3NoYXBlSW1hZ2VUaHJl
c2hvbGQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TVkdS
ZW5kZXJTdHlsZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NWR1JlbmRlclN0
eWxlLmgKaW5kZXggMDZiZmE4NWQzYzYxOTlkOWRhZDEwZmNmZWRlNWFiN2YxN2EyZmJhYS4uMWVm
ZjM1Njg1NGE0ZDcwOGMzYjA0MTVlM2Y1YzVkYjI2ODRjMjI3YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NWR1JlbmRlclN0eWxlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NWR1JlbmRlclN0eWxlLmgKQEAgLTI4NSw3ICsyODUsNyBA
QCBwdWJsaWM6CiAgICAgICAgICAgICBtaXNjLmFjY2VzcygpLT5iYXNlbGluZVNoaWZ0VmFsdWUg
PSBvYmo7CiAgICAgfQogCi0gICAgdm9pZCBzZXRTaGFkb3coc3RkOjp1bmlxdWVfcHRyPFNoYWRv
d0RhdGE+IG9iaikgeyBzaGFkb3dTVkcuYWNjZXNzKCktPnNoYWRvdyA9IFdURjo6bW92ZShvYmop
OyB9CisgICAgdm9pZCBzZXRTaGFkb3coc3RkOjp1bmlxdWVfcHRyPFNoYWRvd0RhdGE+IG9iaikg
eyBzaGFkb3dTVkcuYWNjZXNzKCktPnNoYWRvdyA9IFdURk1vdmUob2JqKTsgfQogCiAgICAgLy8g
U2V0dGVycyBmb3Igbm9uLWluaGVyaXRlZCByZXNvdXJjZXMKICAgICB2b2lkIHNldENsaXBwZXJS
ZXNvdXJjZShjb25zdCBTdHJpbmcmIG9iaikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9TaGFkb3dEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvU2hhZG93RGF0YS5oCmluZGV4IDhhMWNhYzMzODM2ZTcxYzlmMmJlZTBkM2U4YTgxMzJjZGE3
NmI4MDIuLjRjM2RhYjdhNmM1YzcyOWRmZjA2M2U4ZmQ2MTM3ZDk3MWEyYTM1NGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TaGFkb3dEYXRhLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NoYWRvd0RhdGEuaApAQCAtODIsNyArODIsNyBA
QCBwdWJsaWM6CiAgICAgYm9vbCBpc1dlYmtpdEJveFNoYWRvdygpIGNvbnN0IHsgcmV0dXJuIG1f
aXNXZWJraXRCb3hTaGFkb3c7IH0KIAogICAgIGNvbnN0IFNoYWRvd0RhdGEqIG5leHQoKSBjb25z
dCB7IHJldHVybiBtX25leHQuZ2V0KCk7IH0KLSAgICB2b2lkIHNldE5leHQoc3RkOjp1bmlxdWVf
cHRyPFNoYWRvd0RhdGE+IHNoYWRvdykgeyBtX25leHQgPSBXVEY6Om1vdmUoc2hhZG93KTsgfQor
ICAgIHZvaWQgc2V0TmV4dChzdGQ6OnVuaXF1ZV9wdHI8U2hhZG93RGF0YT4gc2hhZG93KSB7IG1f
bmV4dCA9IFdURk1vdmUoc2hhZG93KTsgfQogCiAgICAgdm9pZCBhZGp1c3RSZWN0Rm9yU2hhZG93
KExheW91dFJlY3QmLCBpbnQgYWRkaXRpb25hbE91dGxpbmVTaXplID0gMCkgY29uc3Q7CiAgICAg
dm9pZCBhZGp1c3RSZWN0Rm9yU2hhZG93KEZsb2F0UmVjdCYsIGludCBhZGRpdGlvbmFsT3V0bGlu
ZVNpemUgPSAwKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9TdHlsZUdlbmVyYXRlZEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9TdHlsZUdlbmVyYXRlZEltYWdlLmNwcAppbmRleCBkNWRkOTU0ZjBmMDgxNzVhYTczMmM4
YWUzYWQ2MzJkZDMyYjRjNTNkLi4yNGFlOTMzYTlhNGZhOGNkZjk5ZWFhMzRjMWYwNmNhZmViOWE0
ODk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVHZW5l
cmF0ZWRJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxl
R2VuZXJhdGVkSW1hZ2UuY3BwCkBAIC0zMSw3ICszMSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgCiBTdHlsZUdlbmVyYXRlZEltYWdlOjpTdHlsZUdlbmVyYXRlZEltYWdlKFJlZjxDU1NJ
bWFnZUdlbmVyYXRvclZhbHVlPiYmIHZhbHVlKQotICAgIDogbV9pbWFnZUdlbmVyYXRvclZhbHVl
KFdURjo6bW92ZSh2YWx1ZSkpCisgICAgOiBtX2ltYWdlR2VuZXJhdG9yVmFsdWUoV1RGTW92ZSh2
YWx1ZSkpCiAgICAgLCBtX2ZpeGVkU2l6ZShtX2ltYWdlR2VuZXJhdG9yVmFsdWUtPmlzRml4ZWRT
aXplKCkpCiB7CiAgICAgbV9pc0dlbmVyYXRlZEltYWdlID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUdlbmVyYXRlZEltYWdlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVHZW5lcmF0ZWRJbWFnZS5oCmluZGV4IDJj
MTNhNDk3YTc1N2UxM2VhYTY4YzAzMGRiODg3ODM0MGY4NzBmODEuLmRiNDlkZDU0NGI5NjUyYzc0
ZTJkYjFiZDE3NzRhODI0M2YyYzA3YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9TdHlsZUdlbmVyYXRlZEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1N0eWxlR2VuZXJhdGVkSW1hZ2UuaApAQCAtMzUsNyArMzUsNyBAQCBjbGFz
cyBTdHlsZUdlbmVyYXRlZEltYWdlIGZpbmFsIDogcHVibGljIFN0eWxlSW1hZ2UgewogcHVibGlj
OgogICAgIHN0YXRpYyBSZWY8U3R5bGVHZW5lcmF0ZWRJbWFnZT4gY3JlYXRlKFJlZjxDU1NJbWFn
ZUdlbmVyYXRvclZhbHVlPiYmIHZhbHVlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgU3R5bGVHZW5lcmF0ZWRJbWFnZShXVEY6Om1vdmUodmFsdWUpKSk7CisgICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFN0eWxlR2VuZXJhdGVkSW1hZ2UoV1RGTW92ZSh2YWx1ZSkpKTsK
ICAgICB9CiAKICAgICBDU1NJbWFnZUdlbmVyYXRvclZhbHVlJiBpbWFnZVZhbHVlKCkgeyByZXR1
cm4gbV9pbWFnZUdlbmVyYXRvclZhbHVlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvU3R5bGVSZWZsZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvU3R5bGVSZWZsZWN0aW9uLmgKaW5kZXggMzQzOTEzY2E5ZDYzMzU2ODMwMjkwMzE4
NTA2ZTBhNmE4ZTM3YzEzYS4uMTdmN2Y3MTk1ZDExY2Y3MjRmZjEzODY2Nzk3YjRjMGMwYTI3MTY3
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmVmbGVj
dGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJlZmxlY3Rp
b24uaApAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgTmluZVBpZWNlSW1hZ2Um
IG1hc2soKSBjb25zdCB7IHJldHVybiBtX21hc2s7IH0KIAogICAgIHZvaWQgc2V0RGlyZWN0aW9u
KENTU1JlZmxlY3Rpb25EaXJlY3Rpb24gZGlyKSB7IG1fZGlyZWN0aW9uID0gZGlyOyB9Ci0gICAg
dm9pZCBzZXRPZmZzZXQoTGVuZ3RoIG9mZnNldCkgeyBtX29mZnNldCA9IFdURjo6bW92ZShvZmZz
ZXQpOyB9CisgICAgdm9pZCBzZXRPZmZzZXQoTGVuZ3RoIG9mZnNldCkgeyBtX29mZnNldCA9IFdU
Rk1vdmUob2Zmc2V0KTsgfQogICAgIHZvaWQgc2V0TWFzayhjb25zdCBOaW5lUGllY2VJbWFnZSYg
aW1hZ2UpIHsgbV9tYXNrID0gaW1hZ2U7IH0KIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQmxvY2suY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdCbG9jay5jcHAKaW5kZXggMzJmOGUzNjQ2MjRlMThi
MTdhYjI4MTc1NzhlZDUxMjdiNWViNjE3Ni4uNWJjMzBjZTdmOGE3OTI2NjFjYjE2OTliNDcxYzhj
OWIyOTc2Yzc2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdCbG9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdCbG9jay5jcHAKQEAgLTI5LDcgKzI5LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUmVu
ZGVyU1ZHQmxvY2s6OlJlbmRlclNWR0Jsb2NrKFNWR0dyYXBoaWNzRWxlbWVudCYgZWxlbWVudCwg
UmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQotICAgIDogUmVuZGVyQmxvY2tGbG93KGVsZW1lbnQs
IFdURjo6bW92ZShzdHlsZSkpCisgICAgOiBSZW5kZXJCbG9ja0Zsb3coZWxlbWVudCwgV1RGTW92
ZShzdHlsZSkpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHQ29udGFpbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHQ29udGFpbmVyLmNwcAppbmRleCBiYTY2MGU2YTllZmFiYTQwZDVhOTljY2M2ZDYx
NjI0MTdhZDdkNWJjLi44Y2Q4OWNjZjAwYmZlY2EzZjA4ZWE3Y2ZlYjg1N2YzYzcyOWYzYjBkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5l
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdDb250YWlu
ZXIuY3BwCkBAIC0zOCw3ICszOCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFJlbmRlclNW
R0NvbnRhaW5lcjo6UmVuZGVyU1ZHQ29udGFpbmVyKFNWR0VsZW1lbnQmIGVsZW1lbnQsIFJlZjxS
ZW5kZXJTdHlsZT4mJiBzdHlsZSkKLSAgICA6IFJlbmRlclNWR01vZGVsT2JqZWN0KGVsZW1lbnQs
IFdURjo6bW92ZShzdHlsZSkpCisgICAgOiBSZW5kZXJTVkdNb2RlbE9iamVjdChlbGVtZW50LCBX
VEZNb3ZlKHN0eWxlKSkKICAgICAsIG1fb2JqZWN0Qm91bmRpbmdCb3hWYWxpZChmYWxzZSkKICAg
ICAsIG1fbmVlZHNCb3VuZGFyaWVzVXBkYXRlKHRydWUpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0VsbGlwc2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdFbGxpcHNlLmNwcAppbmRleCBmYWUzNzFhZWNmZGU4
MWVhYjc3YmU0OTRmMTM5OTg2NTRlYmE3MDU5Li4zNDhiZWI1YTVjMTNjZTZmY2I3ODVkZmJlYmI3
NzhmZDJlNTU3ZjlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR0VsbGlwc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHRWxsaXBzZS5jcHAKQEAgLTM0LDcgKzM0LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogUmVuZGVyU1ZHRWxsaXBzZTo6UmVuZGVyU1ZHRWxsaXBzZShTVkdHcmFwaGljc0VsZW1lbnQm
IGVsZW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkKLSAgICA6IFJlbmRlclNWR1NoYXBl
KGVsZW1lbnQsIFdURjo6bW92ZShzdHlsZSkpCisgICAgOiBSZW5kZXJTVkdTaGFwZShlbGVtZW50
LCBXVEZNb3ZlKHN0eWxlKSkKICAgICAsIG1fdXNlUGF0aEZhbGxiYWNrKGZhbHNlKQogewogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWdu
T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRm9yZWln
bk9iamVjdC5jcHAKaW5kZXggZWRjOWI1MDMwMWVmMDI2YzYxMWE1OTM3M2Q3NWVjZGRmMDZiYzhl
ZS4uZDVlNjY3ZjU4NmVlNmM5MDYwYTJkM2IwNjRiN2ViYWViYTRhOTliNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdGb3JlaWduT2JqZWN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25PYmplY3Qu
Y3BwCkBAIC0zNyw3ICszNyw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFJlbmRlclNWR0Zv
cmVpZ25PYmplY3Q6OlJlbmRlclNWR0ZvcmVpZ25PYmplY3QoU1ZHRm9yZWlnbk9iamVjdEVsZW1l
bnQmIGVsZW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkKLSAgICA6IFJlbmRlclNWR0Js
b2NrKGVsZW1lbnQsIFdURjo6bW92ZShzdHlsZSkpCisgICAgOiBSZW5kZXJTVkdCbG9jayhlbGVt
ZW50LCBXVEZNb3ZlKHN0eWxlKSkKICAgICAsIG1fbmVlZHNUcmFuc2Zvcm1VcGRhdGUodHJ1ZSkK
IHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
R3JhZGllbnRTdG9wLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
R3JhZGllbnRTdG9wLmNwcAppbmRleCAwMmU2ZjEwZDlhNTA2YmUzYTc4ZGVlNDJhNGQwZDE3YTU1
YzdmOTJmLi43MjMzNGRjMDE3OGRiMWVjMjlhMTZlNzgwMjU2OTJhY2Q5OGZjODg1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0dyYWRpZW50U3RvcC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdHcmFkaWVudFN0
b3AuY3BwCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHVzaW5nIG5hbWVz
cGFjZSBTVkdOYW1lczsKIAogUmVuZGVyU1ZHR3JhZGllbnRTdG9wOjpSZW5kZXJTVkdHcmFkaWVu
dFN0b3AoU1ZHU3RvcEVsZW1lbnQmIGVsZW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkK
LSAgICA6IFJlbmRlckVsZW1lbnQoZWxlbWVudCwgV1RGOjptb3ZlKHN0eWxlKSwgMCkKKyAgICA6
IFJlbmRlckVsZW1lbnQoZWxlbWVudCwgV1RGTW92ZShzdHlsZSksIDApCiB7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSGlkZGVuQ29udGFp
bmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSGlkZGVuQ29u
dGFpbmVyLmNwcAppbmRleCA3NzIxZGEzNGNkNDIyYThmMWMwODU1ZjUwZDE1YWFkYWNhNjc2MGVj
Li4wODgwMDU5Y2ZlNjQ4NjBlYzBjNzIwYWYzNmM2Y2E1NGRjM2Y0NTg1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0hpZGRlbkNvbnRhaW5lci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdIaWRkZW5Db250YWlu
ZXIuY3BwCkBAIC0yNiw3ICsyNiw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFJlbmRlclNW
R0hpZGRlbkNvbnRhaW5lcjo6UmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyKFNWR0VsZW1lbnQmIGVs
ZW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkKLSAgICA6IFJlbmRlclNWR0NvbnRhaW5l
cihlbGVtZW50LCBXVEY6Om1vdmUoc3R5bGUpKQorICAgIDogUmVuZGVyU1ZHQ29udGFpbmVyKGVs
ZW1lbnQsIFdURk1vdmUoc3R5bGUpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3BwCmluZGV4IGRjMmIxODQwNzUxNWQwNGM2OTE0NWVi
ZmRmODdjNWNhYzBmNjJiOTIuLmNhMWQ2NWIwNGJkYTg4YTMxYmJhMzM3MDdlODdmMzU3MmMwMGVk
NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1h
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2Uu
Y3BwCkBAIC00NCw3ICs0NCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFJlbmRlclNWR0lt
YWdlOjpSZW5kZXJTVkdJbWFnZShTVkdJbWFnZUVsZW1lbnQmIGVsZW1lbnQsIFJlZjxSZW5kZXJT
dHlsZT4mJiBzdHlsZSkKLSAgICA6IFJlbmRlclNWR01vZGVsT2JqZWN0KGVsZW1lbnQsIFdURjo6
bW92ZShzdHlsZSkpCisgICAgOiBSZW5kZXJTVkdNb2RlbE9iamVjdChlbGVtZW50LCBXVEZNb3Zl
KHN0eWxlKSkKICAgICAsIG1fbmVlZHNCb3VuZGFyaWVzVXBkYXRlKHRydWUpCiAgICAgLCBtX25l
ZWRzVHJhbnNmb3JtVXBkYXRlKHRydWUpCiAgICAgLCBtX2ltYWdlUmVzb3VyY2Uoc3RkOjptYWtl
X3VuaXF1ZTxSZW5kZXJJbWFnZVJlc291cmNlPigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuY3BwCmluZGV4IGMzZTRjNzFiYjIxMDlhMzU0MzA5
YmI0ZGUwMTNmMDkzYzJmZWYxNTAuLmQyOTc5MThkMDZkN2MyMGEzNjNlNzhmMWJhMGUzNTgyYTAw
Y2I2MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
SW5saW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lu
bGluZS5jcHAKQEAgLTMxLDcgKzMxLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKIFJl
bmRlclNWR0lubGluZTo6UmVuZGVyU1ZHSW5saW5lKFNWR0dyYXBoaWNzRWxlbWVudCYgZWxlbWVu
dCwgUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQotICAgIDogUmVuZGVySW5saW5lKGVsZW1lbnQs
IFdURjo6bW92ZShzdHlsZSkpCisgICAgOiBSZW5kZXJJbmxpbmUoZWxlbWVudCwgV1RGTW92ZShz
dHlsZSkpCiB7CiAgICAgc2V0QWx3YXlzQ3JlYXRlTGluZUJveGVzKCk7CiB9CkBAIC00MCw3ICs0
MCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxJbmxpbmVGbG93Qm94PiBSZW5kZXJTVkdJbmxpbmU6OmNy
ZWF0ZUlubGluZUZsb3dCb3goKQogewogICAgIGF1dG8gYm94ID0gc3RkOjptYWtlX3VuaXF1ZTxT
VkdJbmxpbmVGbG93Qm94PigqdGhpcyk7CiAgICAgYm94LT5zZXRIYXNWaXJ0dWFsTG9naWNhbEhl
aWdodCgpOwotICAgIHJldHVybiBXVEY6Om1vdmUoYm94KTsKKyAgICByZXR1cm4gV1RGTW92ZShi
b3gpOwogfQogCiBGbG9hdFJlY3QgUmVuZGVyU1ZHSW5saW5lOjpvYmplY3RCb3VuZGluZ0JveCgp
IGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R0lubGluZVRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJ
bmxpbmVUZXh0LmNwcAppbmRleCBmOTUyYjI1NzMxMGFkOWI0MTNlN2Q5MmJkMDg3YzM0NGQ5YWE1
MGZiLi45NzEzM2UxMGMwZDQzNmUyOTI5Mjk2OTQyNmY1MTQyYjFlZmYyMjJmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZVRleHQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lVGV4dC5jcHAK
QEAgLTExMyw3ICsxMTMsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW5saW5lVGV4dEJveD4gUmVuZGVy
U1ZHSW5saW5lVGV4dDo6Y3JlYXRlVGV4dEJveCgpCiB7CiAgICAgYXV0byBib3ggPSBzdGQ6Om1h
a2VfdW5pcXVlPFNWR0lubGluZVRleHRCb3g+KCp0aGlzKTsKICAgICBib3gtPnNldEhhc1ZpcnR1
YWxMb2dpY2FsSGVpZ2h0KCk7Ci0gICAgcmV0dXJuIFdURjo6bW92ZShib3gpOworICAgIHJldHVy
biBXVEZNb3ZlKGJveCk7CiB9CiAKIExheW91dFJlY3QgUmVuZGVyU1ZHSW5saW5lVGV4dDo6bG9j
YWxDYXJldFJlY3QoSW5saW5lQm94KiBib3gsIGludCBjYXJldE9mZnNldCwgTGF5b3V0VW5pdCop
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVs
T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxP
YmplY3QuY3BwCmluZGV4IDAzMGYxMGJlMzU2ODBkNTA2YjUzZTEyMjQ2YjZhMjlmNmI3OTgwYzMu
LjZjNjg5NjM0Y2E0YWU1N2U1Y2JmNTBiN2JiNDJjYWUwYmE2ZGIyNzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuY3BwCkBA
IC00MCw3ICs0MCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFJlbmRlclNWR01vZGVsT2Jq
ZWN0OjpSZW5kZXJTVkdNb2RlbE9iamVjdChTVkdFbGVtZW50JiBlbGVtZW50LCBSZWY8UmVuZGVy
U3R5bGU+JiYgc3R5bGUpCi0gICAgOiBSZW5kZXJFbGVtZW50KGVsZW1lbnQsIFdURjo6bW92ZShz
dHlsZSksIDApCisgICAgOiBSZW5kZXJFbGVtZW50KGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpLCAw
KQogICAgICwgbV9oYXNTVkdTaGFkb3coZmFsc2UpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1BhdGguY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdQYXRoLmNwcAppbmRleCAyOTRjYjQ2MjNkZDc4MTNkYjY3
ODgzNzVmZDZlYTI2ZDNiZDY1ZWNkLi4zYmUxZDdiNzc0NWM5MWU1NTA5OGVhZDgwOTBiYTk3Yjhj
YzY5YmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1BhdGguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUGF0
aC5jcHAKQEAgLTM0LDcgKzM0LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUmVuZGVyU1ZH
UGF0aDo6UmVuZGVyU1ZHUGF0aChTVkdHcmFwaGljc0VsZW1lbnQmIGVsZW1lbnQsIFJlZjxSZW5k
ZXJTdHlsZT4mJiBzdHlsZSkKLSAgICA6IFJlbmRlclNWR1NoYXBlKGVsZW1lbnQsIFdURjo6bW92
ZShzdHlsZSkpCisgICAgOiBSZW5kZXJTVkdTaGFwZShlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSkK
IHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVjdC5j
cHAKaW5kZXggY2JjODhmN2Y2NjkwYTk1Y2VlOWIzNjMxNzFkMjk1NmU3OGYwNjYwNi4uYWJjOWZk
MzNjZWY5Mjc1NTU4OWVkMDI0ZDBmNzBlNjZmNGU3Y2FiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1JlY3QuY3BwCkBAIC0zMyw3ICszMyw3IEBACiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIFJlbmRlclNWR1JlY3Q6OlJlbmRlclNWR1JlY3QoU1ZHUmVjdEVs
ZW1lbnQmIGVsZW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkKLSAgICA6IFJlbmRlclNW
R1NoYXBlKGVsZW1lbnQsIFdURjo6bW92ZShzdHlsZSkpCisgICAgOiBSZW5kZXJTVkdTaGFwZShl
bGVtZW50LCBXVEZNb3ZlKHN0eWxlKSkKICAgICAsIG1fdXNlUGF0aEZhbGxiYWNrKGZhbHNlKQog
ewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdS
ZXNvdXJjZUNsaXBwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZXNvdXJjZUNsaXBwZXIuY3BwCmluZGV4IDA1MmE4YmUxNDg1MjIyMjQ5ZWJjYmFjYTRkYjc3
MGE3ODM4ZDI4MzMuLmMyNWZlZmM3MDNjYjFlOTU2OTRmM2Y0ZGRiZmRjNjVmMmE4YjU1NzYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VD
bGlwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jl
c291cmNlQ2xpcHBlci5jcHAKQEAgLTQxLDcgKzQxLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyOjpSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIoU1ZH
Q2xpcFBhdGhFbGVtZW50JiBlbGVtZW50LCBSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCi0gICAg
OiBSZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lcihlbGVtZW50LCBXVEY6Om1vdmUoc3R5bGUpKQor
ICAgIDogUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIoZWxlbWVudCwgV1RGTW92ZShzdHlsZSkp
CiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUmVzb3VyY2VDb250YWluZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lci5jcHAKaW5kZXggZWVhMmFlM2YzMmJiZWI3NTllNzc0
NTAxMjMyZTJjMjRkZTI2YzVlMy4uYmQ1ZWZiZjI4ODBjNzY2Zjg5N2VjOTRmNmY1MzBiNWNmYjU5
MDRiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdS
ZXNvdXJjZUNvbnRhaW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lci5jcHAKQEAgLTM1LDcgKzM1LDcgQEAgc3RhdGljIGlu
bGluZSBTVkdEb2N1bWVudEV4dGVuc2lvbnMmIHN2Z0V4dGVuc2lvbnNGcm9tRWxlbWVudChTVkdF
bGVtZW50JiBlbGVtZW4KIH0KIAogUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXI6OlJlbmRlclNW
R1Jlc291cmNlQ29udGFpbmVyKFNWR0VsZW1lbnQmIGVsZW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4m
JiBzdHlsZSkKLSAgICA6IFJlbmRlclNWR0hpZGRlbkNvbnRhaW5lcihlbGVtZW50LCBXVEY6Om1v
dmUoc3R5bGUpKQorICAgIDogUmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyKGVsZW1lbnQsIFdURk1v
dmUoc3R5bGUpKQogICAgICwgbV9pZChlbGVtZW50LmdldElkQXR0cmlidXRlKCkpCiAgICAgLCBt
X3JlZ2lzdGVyZWQoZmFsc2UpCiAgICAgLCBtX2lzSW52YWxpZGF0aW5nKGZhbHNlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmls
dGVyLmNwcAppbmRleCBhMDg2OWQ3MjJkMGJlMmIxMzZmOWZmNGUyZTUxZjM5ODgxMmI5ZmI2Li45
NGRiNzk4MTQyNDA1YzY4OGY5MzNjNDIxMmRiZWVkMWMwOWU2Mzc3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNw
cApAQCAtNDQsNyArNDQsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBSZW5kZXJTVkdSZXNv
dXJjZUZpbHRlcjo6UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIoU1ZHRmlsdGVyRWxlbWVudCYgZWxl
bWVudCwgUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQotICAgIDogUmVuZGVyU1ZHUmVzb3VyY2VD
b250YWluZXIoZWxlbWVudCwgV1RGOjptb3ZlKHN0eWxlKSkKKyAgICA6IFJlbmRlclNWR1Jlc291
cmNlQ29udGFpbmVyKGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKQogewogfQogCkBAIC05Miw3ICs5
Miw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxTVkdGaWx0ZXJCdWlsZGVyPiBSZW5kZXJTVkdSZXNvdXJj
ZUZpbHRlcjo6YnVpbGRQcmltaXRpdmVzKFNWR0ZpCiAgICAgICAgIGVmZmVjdC0+c2V0RWZmZWN0
Qm91bmRhcmllcyhTVkdMZW5ndGhDb250ZXh0OjpyZXNvbHZlUmVjdGFuZ2xlPFNWR0ZpbHRlclBy
aW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcz4oJmVsZW1lbnQsIGZpbHRlckVsZW1lbnQoKS5wcmlt
aXRpdmVVbml0cygpLCB0YXJnZXRCb3VuZGluZ0JveCkpOwogICAgICAgICBpZiAoZWxlbWVudC5y
ZW5kZXJlcigpKQogICAgICAgICAgICAgZWZmZWN0LT5zZXRPcGVyYXRpbmdDb2xvclNwYWNlKGVs
ZW1lbnQucmVuZGVyZXIoKS0+c3R5bGUoKS5zdmdTdHlsZSgpLmNvbG9ySW50ZXJwb2xhdGlvbkZp
bHRlcnMoKSA9PSBDSV9MSU5FQVJSR0IgPyBDb2xvclNwYWNlTGluZWFyUkdCIDogQ29sb3JTcGFj
ZVNSR0IpOwotICAgICAgICBidWlsZGVyLT5hZGQoZWxlbWVudC5yZXN1bHQoKSwgV1RGOjptb3Zl
KGVmZmVjdCkpOworICAgICAgICBidWlsZGVyLT5hZGQoZWxlbWVudC5yZXN1bHQoKSwgV1RGTW92
ZShlZmZlY3QpKTsKICAgICB9CiAgICAgcmV0dXJuIGJ1aWxkZXI7CiB9CkBAIC0xNzcsNyArMTc3
LDcgQEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6YXBwbHlSZXNvdXJjZShSZW5kZXJF
bGVtZW50JiByZW5kZXJlciwgY29uc3QgUmVuZGUKICAgICBpZiAoZmlsdGVyRGF0YS0+ZHJhd2lu
Z1JlZ2lvbi5pc0VtcHR5KCkpIHsKICAgICAgICAgQVNTRVJUKCFtX2ZpbHRlci5jb250YWlucygm
cmVuZGVyZXIpKTsKICAgICAgICAgZmlsdGVyRGF0YS0+c2F2ZWRDb250ZXh0ID0gY29udGV4dDsK
LSAgICAgICAgbV9maWx0ZXIuc2V0KCZyZW5kZXJlciwgV1RGOjptb3ZlKGZpbHRlckRhdGEpKTsK
KyAgICAgICAgbV9maWx0ZXIuc2V0KCZyZW5kZXJlciwgV1RGTW92ZShmaWx0ZXJEYXRhKSk7CiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTE5Miw3ICsxOTIsNyBAQCBib29sIFJl
bmRlclNWR1Jlc291cmNlRmlsdGVyOjphcHBseVJlc291cmNlKFJlbmRlckVsZW1lbnQmIHJlbmRl
cmVyLCBjb25zdCBSZW5kZQogICAgIGlmICghc291cmNlR3JhcGhpYykgewogICAgICAgICBBU1NF
UlQoIW1fZmlsdGVyLmNvbnRhaW5zKCZyZW5kZXJlcikpOwogICAgICAgICBmaWx0ZXJEYXRhLT5z
YXZlZENvbnRleHQgPSBjb250ZXh0OwotICAgICAgICBtX2ZpbHRlci5zZXQoJnJlbmRlcmVyLCBX
VEY6Om1vdmUoZmlsdGVyRGF0YSkpOworICAgICAgICBtX2ZpbHRlci5zZXQoJnJlbmRlcmVyLCBX
VEZNb3ZlKGZpbHRlckRhdGEpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAK
QEAgLTIwMSwxMyArMjAxLDEzIEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OmFwcGx5
UmVzb3VyY2UoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0IFJlbmRlCiAKICAgICBHcmFw
aGljc0NvbnRleHQmIHNvdXJjZUdyYXBoaWNDb250ZXh0ID0gc291cmNlR3JhcGhpYy0+Y29udGV4
dCgpOwogICAKLSAgICBmaWx0ZXJEYXRhLT5zb3VyY2VHcmFwaGljQnVmZmVyID0gV1RGOjptb3Zl
KHNvdXJjZUdyYXBoaWMpOworICAgIGZpbHRlckRhdGEtPnNvdXJjZUdyYXBoaWNCdWZmZXIgPSBX
VEZNb3ZlKHNvdXJjZUdyYXBoaWMpOwogICAgIGZpbHRlckRhdGEtPnNhdmVkQ29udGV4dCA9IGNv
bnRleHQ7CiAKICAgICBjb250ZXh0ID0gJnNvdXJjZUdyYXBoaWNDb250ZXh0OwogCiAgICAgQVNT
RVJUKCFtX2ZpbHRlci5jb250YWlucygmcmVuZGVyZXIpKTsKLSAgICBtX2ZpbHRlci5zZXQoJnJl
bmRlcmVyLCBXVEY6Om1vdmUoZmlsdGVyRGF0YSkpOworICAgIG1fZmlsdGVyLnNldCgmcmVuZGVy
ZXIsIFdURk1vdmUoZmlsdGVyRGF0YSkpOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0yNTUs
NyArMjU1LDcgQEAgdm9pZCBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6cG9zdEFwcGx5UmVzb3Vy
Y2UoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIEdyYXBoaWMKICAgICAgICAgLy8gaW5pdGlhbCBm
aWx0ZXJpbmcgcHJvY2Vzcy4gV2UganVzdCB0YWtlIHRoZSBzdG9yZWQgZmlsdGVyIHJlc3VsdCBv
biBhCiAgICAgICAgIC8vIHNlY29uZCBkcmF3aW5nLgogICAgICAgICBpZiAoZmlsdGVyRGF0YS0+
c3RhdGUgIT0gRmlsdGVyRGF0YTo6QnVpbHQpCi0gICAgICAgICAgICBmaWx0ZXJEYXRhLT5maWx0
ZXItPnNldFNvdXJjZUltYWdlKFdURjo6bW92ZShmaWx0ZXJEYXRhLT5zb3VyY2VHcmFwaGljQnVm
ZmVyKSk7CisgICAgICAgICAgICBmaWx0ZXJEYXRhLT5maWx0ZXItPnNldFNvdXJjZUltYWdlKFdU
Rk1vdmUoZmlsdGVyRGF0YS0+c291cmNlR3JhcGhpY0J1ZmZlcikpOwogCiAgICAgICAgIC8vIEFs
d2F5cyB0cnVlIGlmIGZpbHRlckRhdGEgaXMganVzdCBidWlsdCAoZmlsdGVyRGF0YS0+c3RhdGUg
PT0gRmlsdGVyRGF0YTo6QnVpbHQpLgogICAgICAgICBpZiAoIWxhc3RFZmZlY3QtPmhhc1Jlc3Vs
dCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUuY3BwCmluZGV4IDQ3MzY0NTI4OGFh
MTZhYjNmMzFhMTAxY2I4NWEyMjJhZWFhZDY5MTEuLjdlMzlmYjg4NmFkNGUyMzBhNDUwMjM5MTJm
ZGE0MzkxZjYwYjhhOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUuY3BwCkBAIC0z
OCw3ICszOCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFJlbmRlclNWR1Jlc291cmNlRmls
dGVyUHJpbWl0aXZlOjpSZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZShTVkdGaWx0ZXJQ
cmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMmIGZpbHRlclByaW1pdGl2ZUVsZW1lbnQsIFJlZjxS
ZW5kZXJTdHlsZT4mJiBzdHlsZSkKLSAgICA6IFJlbmRlclNWR0hpZGRlbkNvbnRhaW5lcihmaWx0
ZXJQcmltaXRpdmVFbGVtZW50LCBXVEY6Om1vdmUoc3R5bGUpKQorICAgIDogUmVuZGVyU1ZHSGlk
ZGVuQ29udGFpbmVyKGZpbHRlclByaW1pdGl2ZUVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKQogewog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jl
c291cmNlR3JhZGllbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZXNvdXJjZUdyYWRpZW50LmNwcAppbmRleCAwZTFiOTM2NzNiM2M5YjEwMGZhNmQyYTNhYjY3
NDkwZDJiZmQ1MWMxLi5hMTZjOTA5ZTA0YTY3NGQyZmFlYjYyNjZjM2JiNjEyYzYxZWU2N2ZmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNl
R3JhZGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
UmVzb3VyY2VHcmFkaWVudC5jcHAKQEAgLTMxLDcgKzMxLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudDo6UmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVu
dChTVkdHcmFkaWVudEVsZW1lbnQmIG5vZGUsIFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkKLSAg
ICA6IFJlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyKG5vZGUsIFdURjo6bW92ZShzdHlsZSkpCisg
ICAgOiBSZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lcihub2RlLCBXVEZNb3ZlKHN0eWxlKSkKICAg
ICAsIG1fc2hvdWxkQ29sbGVjdEdyYWRpZW50QXR0cmlidXRlcyh0cnVlKQogI2lmIFVTRShDRykK
ICAgICAsIG1fc2F2ZWRDb250ZXh0KDApCkBAIC02OSw3ICs2OSw3IEBAIHN0YXRpYyBpbmxpbmUg
Ym9vbCBjcmVhdGVNYXNrQW5kU3dhcENvbnRleHRGb3JUZXh0R3JhZGllbnQoR3JhcGhpY3NDb250
ZXh0KiYgY29uCiAgICAgQVNTRVJUKG1hc2tJbWFnZSk7CiAgICAgc2F2ZWRDb250ZXh0ID0gY29u
dGV4dDsKICAgICBjb250ZXh0ID0gJm1hc2tJbWFnZUNvbnRleHQ7Ci0gICAgaW1hZ2VCdWZmZXIg
PSBXVEY6Om1vdmUobWFza0ltYWdlKTsKKyAgICBpbWFnZUJ1ZmZlciA9IFdURk1vdmUobWFza0lt
YWdlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUxpbmVhckdyYWRpZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VMaW5lYXJHcmFkaWVudC5j
cHAKaW5kZXggN2Q1N2MzZmZmOTRjZDk4MjY4OTBhMmNlZjIxZDNmODQxZDA0Yjc1NC4uYjM1NjRl
N2QwYzhhMDg5NTcyZTAzMmQwZTlkZmRjZmI2YWYwNWE3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUxpbmVhckdyYWRpZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTGluZWFy
R3JhZGllbnQuY3BwCkBAIC0yNSw3ICsyNSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFJl
bmRlclNWR1Jlc291cmNlTGluZWFyR3JhZGllbnQ6OlJlbmRlclNWR1Jlc291cmNlTGluZWFyR3Jh
ZGllbnQoU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50JiBlbGVtZW50LCBSZWY8UmVuZGVyU3R5bGU+
JiYgc3R5bGUpCi0gICAgOiBSZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50KGVsZW1lbnQsIFdURjo6
bW92ZShzdHlsZSkpCisgICAgOiBSZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50KGVsZW1lbnQsIFdU
Rk1vdmUoc3R5bGUpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFya2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXIuY3BwCmluZGV4IDY5ZTVkYjE2ZmYxMWQ2
MWMwMDRjNWNiNWIwMTBlNTAyOTE2YjYwMDcuLmQyMGE1MTY5NWZkNDQwYTJkMGEyZjIxZTIxYWZk
ODE4ZjEyN2NjNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUmVzb3VyY2VNYXJrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXIuY3BwCkBAIC0yOSw3ICsyOSw3IEBACiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIFJlbmRlclNWR1Jlc291cmNlTWFya2VyOjpSZW5kZXJTVkdSZXNvdXJj
ZU1hcmtlcihTVkdNYXJrZXJFbGVtZW50JiBlbGVtZW50LCBSZWY8UmVuZGVyU3R5bGU+JiYgc3R5
bGUpCi0gICAgOiBSZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lcihlbGVtZW50LCBXVEY6Om1vdmUo
c3R5bGUpKQorICAgIDogUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIoZWxlbWVudCwgV1RGTW92
ZShzdHlsZSkpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5jcHAKaW5kZXggYjQxYmM3YTJhM2FlOWJjZTM2
ZmFjYTUxZjIzMzE3YWYyZjhhNTgwMS4uNzA1MTVmZjhhNmE0YzAzMjM1YjA2MTYzMzg2NjdlNDAx
NzZmNmE1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZXNvdXJjZU1hc2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5jcHAKQEAgLTMwLDcgKzMwLDcgQEAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXI6OlJlbmRlclNWR1Jlc291cmNlTWFz
a2VyKFNWR01hc2tFbGVtZW50JiBlbGVtZW50LCBSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCi0g
ICAgOiBSZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lcihlbGVtZW50LCBXVEY6Om1vdmUoc3R5bGUp
KQorICAgIDogUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIoZWxlbWVudCwgV1RGTW92ZShzdHls
ZSkpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcAppbmRleCAwNGM4MTYyZDgzMDY1ZjIzZmZhMTUy
YmU2NDk0NGQyYWMwNWE1OGRlLi5mYTFlODRmNTdhZDMwMGE1MDYzOTY5NGZlOWRhYzUyNTJmZDIw
NDc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jl
c291cmNlUGF0dGVybi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwCkBAIC0zMyw3ICszMyw3IEBACiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIFJlbmRlclNWR1Jlc291cmNlUGF0dGVybjo6UmVuZGVyU1ZHUmVzb3VyY2VQYXR0
ZXJuKFNWR1BhdHRlcm5FbGVtZW50JiBlbGVtZW50LCBSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUp
Ci0gICAgOiBSZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lcihlbGVtZW50LCBXVEY6Om1vdmUoc3R5
bGUpKQorICAgIDogUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIoZWxlbWVudCwgV1RGTW92ZShz
dHlsZSkpCiAgICAgLCBtX3Nob3VsZENvbGxlY3RQYXR0ZXJuQXR0cmlidXRlcyh0cnVlKQogewog
fQpAQCAtMTE1LDcgKzExNSw3IEBAIFBhdHRlcm5EYXRhKiBSZW5kZXJTVkdSZXNvdXJjZVBhdHRl
cm46OmJ1aWxkUGF0dGVybihSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgdW5zCiAKICAgICBjb25z
dCBJbnRTaXplIHRpbGVJbWFnZVNpemUgPSB0aWxlSW1hZ2UtPmxvZ2ljYWxTaXplKCk7CiAKLSAg
ICBSZWZQdHI8SW1hZ2U+IGNvcGllZEltYWdlID0gSW1hZ2VCdWZmZXI6OnNpbmtJbnRvSW1hZ2Uo
V1RGOjptb3ZlKHRpbGVJbWFnZSkpOworICAgIFJlZlB0cjxJbWFnZT4gY29waWVkSW1hZ2UgPSBJ
bWFnZUJ1ZmZlcjo6c2lua0ludG9JbWFnZShXVEZNb3ZlKHRpbGVJbWFnZSkpOwogICAgIGlmICgh
Y29waWVkSW1hZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC0xNDMsNyArMTQzLDcg
QEAgUGF0dGVybkRhdGEqIFJlbmRlclNWR1Jlc291cmNlUGF0dGVybjo6YnVpbGRQYXR0ZXJuKFJl
bmRlckVsZW1lbnQmIHJlbmRlcmVyLCB1bnMKICAgICAvLyBWYXJpb3VzIGNhbGxzIGFib3ZlIG1h
eSB0cmlnZ2VyIGludmFsaWRhdGlvbnMgaW4gc29tZSBmcmluZ2UgY2FzZXMgKEltYWdlQnVmZmVy
IGFsbG9jYXRpb24KICAgICAvLyBmYWlsdXJlcyBpbiB0aGUgU1ZHIGltYWdlIGNhY2hlIGZvciBl
eGFtcGxlKS4gVG8gYXZvaWQgaGF2aW5nIG91ciBQYXR0ZXJuRGF0YSBkZWxldGVkIGJ5CiAgICAg
Ly8gcmVtb3ZlQWxsQ2xpZW50c0Zyb21DYWNoZSgpLCB3ZSBvbmx5IG1ha2UgaXQgdmlzaWJsZSBp
biB0aGUgY2FjaGUgYXQgdGhlIHZlcnkgZW5kLgotICAgIHJldHVybiBtX3BhdHRlcm5NYXAuc2V0
KCZyZW5kZXJlciwgV1RGOjptb3ZlKHBhdHRlcm5EYXRhKSkuaXRlcmF0b3ItPnZhbHVlLmdldCgp
OworICAgIHJldHVybiBtX3BhdHRlcm5NYXAuc2V0KCZyZW5kZXJlciwgV1RGTW92ZShwYXR0ZXJu
RGF0YSkpLml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsKIH0KIAogYm9vbCBSZW5kZXJTVkdSZXNvdXJj
ZVBhdHRlcm46OmFwcGx5UmVzb3VyY2UoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0IFJl
bmRlclN0eWxlJiBzdHlsZSwgR3JhcGhpY3NDb250ZXh0KiYgY29udGV4dCwgdW5zaWduZWQgc2hv
cnQgcmVzb3VyY2VNb2RlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZXNvdXJjZVJhZGlhbEdyYWRpZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VSYWRpYWxHcmFkaWVudC5jcHAKaW5kZXggOTQ2
ZjBlZGMyOTU3OWRiYjY0YzExMmE1MGRiY2RmOGM3MTlhOTU1ZC4uM2VhZmJhMWZlYmU3YWFjNWNl
NGE2ZjQ2OWIyNTc4ZWMxY2JmZjhhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVJhZGlhbEdyYWRpZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUmFkaWFsR3JhZGllbnQuY3Bw
CkBAIC0yNSw3ICsyNSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFJlbmRlclNWR1Jlc291
cmNlUmFkaWFsR3JhZGllbnQ6OlJlbmRlclNWR1Jlc291cmNlUmFkaWFsR3JhZGllbnQoU1ZHUmFk
aWFsR3JhZGllbnRFbGVtZW50JiBlbGVtZW50LCBSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCi0g
ICAgOiBSZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50KGVsZW1lbnQsIFdURjo6bW92ZShzdHlsZSkp
CisgICAgOiBSZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50KGVsZW1lbnQsIFdURk1vdmUoc3R5bGUp
KQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1Jvb3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290
LmNwcAppbmRleCBkNWMzODk5YTFlYjgyMmJiMmE3YmNmZjA1NjU5NDkxZDU3ZjRkZDhmLi45NmE2
NDJkOTE1NzFiZDU5ZDFiNWUzZjRlMmJjZWU4ZjczMWQ3ZDBkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAKQEAgLTUxLDcgKzUxLDcgQEAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogUmVuZGVyU1ZHUm9vdDo6UmVuZGVyU1ZHUm9vdChTVkdTVkdF
bGVtZW50JiBlbGVtZW50LCBSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCi0gICAgOiBSZW5kZXJS
ZXBsYWNlZChlbGVtZW50LCBXVEY6Om1vdmUoc3R5bGUpKQorICAgIDogUmVuZGVyUmVwbGFjZWQo
ZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpCiAgICAgLCBtX29iamVjdEJvdW5kaW5nQm94VmFsaWQo
ZmFsc2UpCiAgICAgLCBtX2lzTGF5b3V0U2l6ZUNoYW5nZWQoZmFsc2UpCiAgICAgLCBtX25lZWRz
Qm91bmRhcmllc09yVHJhbnNmb3JtVXBkYXRlKHRydWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuY3BwCmluZGV4IDcxNDdmOWJlZWY0NDk1MTZlYWY1
MWYzZmIyZDc5YTIxYjg2ZDVmODYuLjgyMjg1ODM3MWMzNWI2MWMxNWQ1MWUyMzY5MTBlYzRjN2Ni
Y2Q1Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
U2hhcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hh
cGUuY3BwCkBAIC02NCw3ICs2NCw3IEBAIHByaXZhdGU6CiB9OwogCiBSZW5kZXJTVkdTaGFwZTo6
UmVuZGVyU1ZHU2hhcGUoU1ZHR3JhcGhpY3NFbGVtZW50JiBlbGVtZW50LCBSZWY8UmVuZGVyU3R5
bGU+JiYgc3R5bGUpCi0gICAgOiBSZW5kZXJTVkdNb2RlbE9iamVjdChlbGVtZW50LCBXVEY6Om1v
dmUoc3R5bGUpKQorICAgIDogUmVuZGVyU1ZHTW9kZWxPYmplY3QoZWxlbWVudCwgV1RGTW92ZShz
dHlsZSkpCiAgICAgLCBtX25lZWRzQm91bmRhcmllc1VwZGF0ZShmYWxzZSkgLy8gRGVmYXVsdCBp
cyBmYWxzZSwgdGhlIGNhY2hlZCByZWN0cyBhcmUgZW1wdHkgZnJvbSB0aGUgYmVnaW5uaW5nLgog
ICAgICwgbV9uZWVkc1NoYXBlVXBkYXRlKHRydWUpIC8vIERlZmF1bHQgaXMgdHJ1ZSwgc28gd2Ug
Z3JhYiBhIFBhdGggb2JqZWN0IG9uY2UgZnJvbSBTVkdHcmFwaGljc0VsZW1lbnQuCiAgICAgLCBt
X25lZWRzVHJhbnNmb3JtVXBkYXRlKHRydWUpIC8vIERlZmF1bHQgaXMgdHJ1ZSwgc28gd2UgZ3Jh
YiBhIEFmZmluZVRyYW5zZm9ybSBvYmplY3Qgb25jZSBmcm9tIFNWR0dyYXBoaWNzRWxlbWVudC4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVFNwYW4u
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVFNwYW4uaAppbmRleCBi
N2E3ODgzMDcyODMwMmI4Mzc5MmY5ZDdhZjJiYjVmZThhNjRiNzkwLi41NDZkZjk3ZDI5ZjQ0YWM1
ZWUxOTgyMjdkNTE4ZDJmYWZmY2QzNThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1RTcGFuLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdUU3Bhbi5oCkBAIC0yOSw3ICsyOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIGNsYXNzIFJlbmRlclNWR1RTcGFuIGZpbmFsIDogcHVibGljIFJlbmRlclNWR0lubGluZSB7
CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgUmVuZGVyU1ZHVFNwYW4oU1ZHVGV4dFBvc2l0aW9uaW5n
RWxlbWVudCYgZWxlbWVudCwgUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQotICAgICAgICA6IFJl
bmRlclNWR0lubGluZShlbGVtZW50LCBXVEY6Om1vdmUoc3R5bGUpKQorICAgICAgICA6IFJlbmRl
clNWR0lubGluZShlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSkKICAgICB7CiAgICAgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNwcAppbmRleCBlZjI2
MWNhYTJlMDg5YTQzNTcxMDM3NzljYTE1NjMxNGM0ODk0YmZmLi4yNGJjZTk1YjQ5MTg5YWZlNTFh
OWE4MGExNjkyMmJjY2UxNTIzZGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1RleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHVGV4dC5jcHAKQEAgLTUzLDcgKzUzLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogUmVuZGVyU1ZHVGV4dDo6UmVuZGVyU1ZHVGV4dChTVkdUZXh0RWxlbWVudCYgZWxlbWVu
dCwgUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQotICAgIDogUmVuZGVyU1ZHQmxvY2soZWxlbWVu
dCwgV1RGOjptb3ZlKHN0eWxlKSkKKyAgICA6IFJlbmRlclNWR0Jsb2NrKGVsZW1lbnQsIFdURk1v
dmUoc3R5bGUpKQogICAgICwgbV9uZWVkc1Jlb3JkZXJpbmcoZmFsc2UpCiAgICAgLCBtX25lZWRz
UG9zaXRpb25pbmdWYWx1ZXNVcGRhdGUoZmFsc2UpCiAgICAgLCBtX25lZWRzVHJhbnNmb3JtVXBk
YXRlKHRydWUpCkBAIC00MjYsNyArNDI2LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFJvb3RJbmxpbmVC
b3g+IFJlbmRlclNWR1RleHQ6OmNyZWF0ZVJvb3RJbmxpbmVCb3goKQogewogICAgIGF1dG8gYm94
ID0gc3RkOjptYWtlX3VuaXF1ZTxTVkdSb290SW5saW5lQm94PigqdGhpcyk7CiAgICAgYm94LT5z
ZXRIYXNWaXJ0dWFsTG9naWNhbEhlaWdodCgpOwotICAgIHJldHVybiBXVEY6Om1vdmUoYm94KTsK
KyAgICByZXR1cm4gV1RGTW92ZShib3gpOwogfQogCiBib29sIFJlbmRlclNWR1RleHQ6Om5vZGVB
dEZsb2F0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIEhpdFRlc3RSZXN1bHQm
IHJlc3VsdCwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnRJblBhcmVudCwgSGl0VGVzdEFjdGlvbiBo
aXRUZXN0QWN0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdUZXh0UGF0aC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1RleHRQYXRoLmNwcAppbmRleCA5NjcxYzliMzRhOTc1ZDIyNGE1ODRiYjViZGZmN2MwODJk
OGE3ZGQ3Li40YmVjYmVlYTllNjBiNjc0MWUwOGQ5YmNmZjM4NTFiNTBmYmE3NDgzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHRQYXRoLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHRQYXRoLmNwcApA
QCAtMzMsNyArMzMsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBSZW5kZXJTVkdUZXh0UGF0
aDo6UmVuZGVyU1ZHVGV4dFBhdGgoU1ZHVGV4dFBhdGhFbGVtZW50JiBlbGVtZW50LCBSZWY8UmVu
ZGVyU3R5bGU+JiYgc3R5bGUpCi0gICAgOiBSZW5kZXJTVkdJbmxpbmUoZWxlbWVudCwgV1RGOjpt
b3ZlKHN0eWxlKSkKKyAgICA6IFJlbmRlclNWR0lubGluZShlbGVtZW50LCBXVEZNb3ZlKHN0eWxl
KSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lci5jcHAKaW5kZXggZWE2NGQzY2M5
NjU4NWNmYTg4NTU0ZTI5NjY1NTBmNDc5MzFiODY0Yy4uYTI0NDEyODYyZmE0MWU1ZDAwMzIzNGUx
OGM0MWU3NTk3MTE1Y2JjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RyYW5zZm9ybWFibGVDb250YWluZXIuY3BwCkBAIC0y
OCw3ICsyOCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCiBSZW5kZXJTVkdUcmFuc2Zv
cm1hYmxlQ29udGFpbmVyOjpSZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyKFNWR0dyYXBo
aWNzRWxlbWVudCYgZWxlbWVudCwgUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlKQotICAgIDogUmVu
ZGVyU1ZHQ29udGFpbmVyKGVsZW1lbnQsIFdURjo6bW92ZShzdHlsZSkpCisgICAgOiBSZW5kZXJT
VkdDb250YWluZXIoZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpCiAgICAgLCBtX25lZWRzVHJhbnNm
b3JtVXBkYXRlKHRydWUpCiAgICAgLCBtX2RpZFRyYW5zZm9ybVRvUm9vdFVwZGF0ZShmYWxzZSkK
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVmll
d3BvcnRDb250YWluZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdWaWV3cG9ydENvbnRhaW5lci5jcHAKaW5kZXggNzgzN2ViNTI0ZWUyNWMyNGJhOGZhZjAzZGIw
ZGY3ZWNjZmFiNWE1MC4uOGU2ZGYyZjM0NmRhYTkyOTQ1OGY0YTk1YzJlZmU4Mzc4NTFhOTE4MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdWaWV3cG9y
dENvbnRhaW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdWaWV3cG9ydENvbnRhaW5lci5jcHAKQEAgLTMxLDcgKzMxLDcgQEAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogUmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXI6OlJlbmRlclNWR1ZpZXdwb3J0Q29u
dGFpbmVyKFNWR1NWR0VsZW1lbnQmIGVsZW1lbnQsIFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSkK
LSAgICA6IFJlbmRlclNWR0NvbnRhaW5lcihlbGVtZW50LCBXVEY6Om1vdmUoc3R5bGUpKQorICAg
IDogUmVuZGVyU1ZHQ29udGFpbmVyKGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKQogICAgICwgbV9k
aWRUcmFuc2Zvcm1Ub1Jvb3RVcGRhdGUoZmFsc2UpCiAgICAgLCBtX2lzTGF5b3V0U2l6ZUNoYW5n
ZWQoZmFsc2UpCiAgICAgLCBtX25lZWRzVHJhbnNmb3JtVXBkYXRlKHRydWUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jlc291cmNlc0NhY2hlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVzb3VyY2VzQ2FjaGUuY3BwCmluZGV4IGY1
ZDk3ODBkMmFmNjRmMzRlNjJjNWM3YzlkNGZlYzAxNDlhN2EwMjAuLmY0YmIxYWZkYzIzZDBiNTNj
YWE0MTJjNTJjZDA3MzYzMTc1MmRjYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvU1ZHUmVzb3VyY2VzQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvU1ZHUmVzb3VyY2VzQ2FjaGUuY3BwCkBAIC00NSw3ICs0NSw3IEBAIHZvaWQgU1ZH
UmVzb3VyY2VzQ2FjaGU6OmFkZFJlc291cmNlc0Zyb21SZW5kZXJlcihSZW5kZXJFbGVtZW50JiBy
ZW5kZXJlciwgY29uc3QKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gUHV0IG9iamVjdCBpbiBj
YWNoZS4KLSAgICBTVkdSZXNvdXJjZXMmIHJlc291cmNlcyA9ICptX2NhY2hlLmFkZCgmcmVuZGVy
ZXIsIFdURjo6bW92ZShuZXdSZXNvdXJjZXMpKS5pdGVyYXRvci0+dmFsdWU7CisgICAgU1ZHUmVz
b3VyY2VzJiByZXNvdXJjZXMgPSAqbV9jYWNoZS5hZGQoJnJlbmRlcmVyLCBXVEZNb3ZlKG5ld1Jl
c291cmNlcykpLml0ZXJhdG9yLT52YWx1ZTsKIAogICAgIC8vIFJ1biBjeWNsZS1kZXRlY3Rpb24g
X2FmdGVyd2FyZHNfLCBzbyBzZWxmLXJlZmVyZW5jZXMgY2FuIGJlIGNhdWdodCBhcyB3ZWxsLgog
ICAgIFNWR1Jlc291cmNlc0N5Y2xlU29sdmVyIHNvbHZlcihyZW5kZXJlciwgcmVzb3VyY2VzKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlcGxheS9DYXB0dXJpbmdJbnB1dEN1cnNvci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZXBsYXkvQ2FwdHVyaW5nSW5wdXRDdXJzb3IuY3BwCmluZGV4
IDAzY2VlOTIwMDQwOTVmMTkxODk0Yjc3MzdhMjliZjlmMTE3NDY2MzkuLjk5NjQ5YmZlMjkwMzY2
NzZhZDQ5NjhhMzZkZjFmNWMzYzYyZTBlZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
cGxheS9DYXB0dXJpbmdJbnB1dEN1cnNvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVwbGF5
L0NhcHR1cmluZ0lucHV0Q3Vyc29yLmNwcApAQCAtMzksNyArMzksNyBAQAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBDYXB0dXJpbmdJbnB1dEN1cnNvcjo6Q2FwdHVyaW5nSW5wdXRDdXJzb3IoUmVm
UHRyPFJlcGxheVNlc3Npb25TZWdtZW50PiYmIHNlZ21lbnQpCi0gICAgOiBtX3NlZ21lbnQoV1RG
Ojptb3ZlKHNlZ21lbnQpKQorICAgIDogbV9zZWdtZW50KFdURk1vdmUoc2VnbWVudCkpCiB7CiAg
ICAgTE9HKFdlYlJlcGxheSwgIiUtMzBzQ3JlYXRlZCBjYXB0dXJlIGN1cnNvcj0lcC5cbiIsICJb
UmVwbGF5Q29udHJvbGxlcl0iLCB0aGlzKTsKIH0KQEAgLTUxLDcgKzUxLDcgQEAgQ2FwdHVyaW5n
SW5wdXRDdXJzb3I6On5DYXB0dXJpbmdJbnB1dEN1cnNvcigpCiAKIFJlZjxDYXB0dXJpbmdJbnB1
dEN1cnNvcj4gQ2FwdHVyaW5nSW5wdXRDdXJzb3I6OmNyZWF0ZShSZWZQdHI8UmVwbGF5U2Vzc2lv
blNlZ21lbnQ+JiYgc2VnbWVudCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDYXB0dXJp
bmdJbnB1dEN1cnNvcihXVEY6Om1vdmUoc2VnbWVudCkpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBDYXB0dXJpbmdJbnB1dEN1cnNvcihXVEZNb3ZlKHNlZ21lbnQpKSk7CiB9CiAKIHZvaWQg
Q2FwdHVyaW5nSW5wdXRDdXJzb3I6OnN0b3JlSW5wdXQoc3RkOjp1bmlxdWVfcHRyPE5vbmRldGVy
bWluaXN0aWNJbnB1dEJhc2U+IGlucHV0KQpAQCAtNjQsNyArNjQsNyBAQCB2b2lkIENhcHR1cmlu
Z0lucHV0Q3Vyc29yOjpzdG9yZUlucHV0KHN0ZDo6dW5pcXVlX3B0cjxOb25kZXRlcm1pbmlzdGlj
SW5wdXRCYXNlPgogICAgICAgICBtX3NlZ21lbnQtPmV2ZW50TG9vcFRpbWluZ3MoKS5hcHBlbmQo
bm93KTsKICAgICB9CiAKLSAgICBtX3NlZ21lbnQtPnN0b3JhZ2UoKS5zdG9yZShXVEY6Om1vdmUo
aW5wdXQpKTsKKyAgICBtX3NlZ21lbnQtPnN0b3JhZ2UoKS5zdG9yZShXVEZNb3ZlKGlucHV0KSk7
CiB9CiAKIE5vbmRldGVybWluaXN0aWNJbnB1dEJhc2UqIENhcHR1cmluZ0lucHV0Q3Vyc29yOjps
b2FkSW5wdXQoSW5wdXRRdWV1ZSwgY29uc3QgU3RyaW5nJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlcGxheS9GdW5jdG9ySW5wdXRDdXJzb3IuaCBiL1NvdXJjZS9XZWJDb3JlL3JlcGxh
eS9GdW5jdG9ySW5wdXRDdXJzb3IuaAppbmRleCBhZmY0NmU1ZmNlMmU1ZGNhZjAwZmE2YTJmNzJh
OWU4ODRjNWQ2NjZlLi4wMDQzZjczNDQxZDE2YzEwNjhiNjg4ZDg5NzI5OGU1MGY2ODY5OWVkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZXBsYXkvRnVuY3RvcklucHV0Q3Vyc29yLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVwbGF5L0Z1bmN0b3JJbnB1dEN1cnNvci5oCkBAIC00NSw3ICs0
NSw3IEBAIGNsYXNzIEZ1bmN0b3JJbnB1dEN1cnNvciBmaW5hbCA6IHB1YmxpYyBJbnB1dEN1cnNv
ciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxGdW5jdG9ySW5wdXRDdXJzb3I+IGNyZWF0ZShS
ZWZQdHI8UmVwbGF5U2Vzc2lvblNlZ21lbnQ+JiYgc2VnbWVudCkKICAgICB7Ci0gICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IEZ1bmN0b3JJbnB1dEN1cnNvcihXVEY6Om1vdmUoc2VnbWVudCkp
KTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRnVuY3RvcklucHV0Q3Vyc29yKFdURk1v
dmUoc2VnbWVudCkpKTsKICAgICB9CiAKICAgICAvLyBJbnB1dEN1cnNvcgpAQCAtNzUsNyArNzUs
NyBAQCB0eXBlbmFtZSBGdW5jdG9yOjpSZXR1cm5UeXBlIEZ1bmN0b3JJbnB1dEN1cnNvcjo6Zm9y
RWFjaElucHV0SW5RdWV1ZShJbnB1dFF1ZXVlCiB9CiAKIGlubGluZSBGdW5jdG9ySW5wdXRDdXJz
b3I6OkZ1bmN0b3JJbnB1dEN1cnNvcihSZWZQdHI8UmVwbGF5U2Vzc2lvblNlZ21lbnQ+JiYgc2Vn
bWVudCkKLSAgICA6IG1fc2VnbWVudChXVEY6Om1vdmUoc2VnbWVudCkpCisgICAgOiBtX3NlZ21l
bnQoV1RGTW92ZShzZWdtZW50KSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVwbGF5L01lbW9pemVkRE9NUmVzdWx0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlcGxheS9NZW1v
aXplZERPTVJlc3VsdC5jcHAKaW5kZXggZDJiNTc0YWFmY2Y2ZTYyYjdhYzQ1OWZhZmRhYjllNmNk
NDA3Y2IzMC4uZmRlZjk1ZDA4YmFmOTVkMzY2MGU2MTljOTZkM2JhZDFhNWY1MjY1MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVwbGF5L01lbW9pemVkRE9NUmVzdWx0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZXBsYXkvTWVtb2l6ZWRET01SZXN1bHQuY3BwCkBAIC0xMDQsNyArMTA0
LDcgQEAgYm9vbCBJbnB1dFRyYWl0czxNZW1vaXplZERPTVJlc3VsdEJhc2U+OjpkZWNvZGUoRW5j
b2RlZFZhbHVlJiBlbmNvZGVkVmFsdWUsIHN0ZDoKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TWVtb2l6
ZWRET01SZXN1bHRCYXNlPiBkZWNvZGVkSW5wdXQgPSBNZW1vaXplZERPTVJlc3VsdEJhc2U6OmNy
ZWF0ZUZyb21FbmNvZGVkUmVzdWx0KGF0dHJpYnV0ZSwgY3R5cGUsIGVuY29kZWRSZXN1bHQsIGV4
Y2VwdGlvbkNvZGUpOwogICAgIGlmICghZGVjb2RlZElucHV0KQogICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgaW5wdXQgPSBXVEY6Om1vdmUoZGVjb2RlZElucHV0KTsKKyAgICBpbnB1dCA9IFdU
Rk1vdmUoZGVjb2RlZElucHV0KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVwbGF5L1JlcGxheUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVwbGF5L1JlcGxheUNvbnRyb2xsZXIuY3BwCmluZGV4IDA3NjQyOTYwYTJhZmNmMzBkN2Rl
N2Q3MmJjMzJjZWUyOGE0ODBkM2YuLjkxYTI5NTE0YTk1ODQxMjM3M2Q0ZDc5YTI0OTZlMTAyMGY4
ODlhNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlcGxheS9SZXBsYXlDb250cm9sbGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZXBsYXkvUmVwbGF5Q29udHJvbGxlci5jcHAKQEAg
LTIzMCw3ICsyMzAsNyBAQCB2b2lkIFJlcGxheUNvbnRyb2xsZXI6OmNyZWF0ZVNlZ21lbnQoKQog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxJbml0aWFsTmF2aWdhdGlvbj4gbmF2aWdhdGlvbklucHV0ID0g
SW5pdGlhbE5hdmlnYXRpb246OmNyZWF0ZUZyb21QYWdlKG1fcGFnZSk7CiAgICAgLy8gRGlzcGF0
Y2hpbmcgdGhpcyBpbnB1dCBzY2hlZHVsZXMgbmF2aWdhdGlvbiBvZiB0aGUgbWFpbiBmcmFtZSwg
Y2F1c2luZyBhIHJlZnJlc2guCiAgICAgbmF2aWdhdGlvbklucHV0LT5kaXNwYXRjaCgqdGhpcyk7
Ci0gICAgbV9hY3RpdmVDdXJzb3ItPnN0b3JlSW5wdXQoV1RGOjptb3ZlKG5hdmlnYXRpb25JbnB1
dCkpOworICAgIG1fYWN0aXZlQ3Vyc29yLT5zdG9yZUlucHV0KFdURk1vdmUobmF2aWdhdGlvbklu
cHV0KSk7CiB9CiAKIHZvaWQgUmVwbGF5Q29udHJvbGxlcjo6Y29tcGxldGVTZWdtZW50KCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlcGxheS9SZXBsYXlJbnB1dENyZWF0aW9uTWV0aG9k
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZXBsYXkvUmVwbGF5SW5wdXRDcmVhdGlvbk1ldGhvZHMu
Y3BwCmluZGV4IGI0ZDFjM2Q2MDdlNDMwNjljZTVkZjA2ZTBkNzVlNGE2YmJlY2YwNzkuLjcwZDk0
NDU2ZTU1ZGQ1YjNjY2RiYjVkM2FlMTk1NmQxZTQwZGY1MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlcGxheS9SZXBsYXlJbnB1dENyZWF0aW9uTWV0aG9kcy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVwbGF5L1JlcGxheUlucHV0Q3JlYXRpb25NZXRob2RzLmNwcApAQCAtNDYsNyAr
NDYsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW5pdGlhbE5hdmlnYXRpb24+IEluaXRpYWxOYXZpZ2F0
aW9uOjpjcmVhdGVGcm9tUGFnZShjb25zdCBQYWdlJgogICAgIFJlZlB0cjxTZWN1cml0eU9yaWdp
bj4gb3JpZ2luQ29weSA9IG1haW5GcmFtZS5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLT5p
c29sYXRlZENvcHkoKTsKICAgICBVUkwgdXJsID0gbWFpbkZyYW1lLmRvY3VtZW50KCktPnVybCgp
OwogICAgIFN0cmluZyByZWZlcnJlciA9IG1haW5GcmFtZS5sb2FkZXIoKS5yZWZlcnJlcigpOwot
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEluaXRpYWxOYXZpZ2F0aW9uPihXVEY6Om1vdmUo
b3JpZ2luQ29weSksIHVybCwgcmVmZXJyZXIpOworICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PEluaXRpYWxOYXZpZ2F0aW9uPihXVEZNb3ZlKG9yaWdpbkNvcHkpLCB1cmwsIHJlZmVycmVyKTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVwbGF5L1JlcGxheVNlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVwbGF5L1JlcGxheVNl
c3Npb24uY3BwCmluZGV4IGYzNzFkMWU1YWRiNmVmMDI2OTdiYjg2NGNlMjE2YmNmZGViOGZiNzMu
LjkzZGEyOGMxY2U2YWFhNDY0MmE0YzQ5MDI1NjFmYzBhZGI1M2U0NTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlcGxheS9SZXBsYXlTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZXBsYXkvUmVwbGF5U2Vzc2lvbi5jcHAKQEAgLTcwLDcgKzcwLDcgQEAgdm9pZCBSZXBsYXlT
ZXNzaW9uOjphcHBlbmRTZWdtZW50KFJlZlB0cjxSZXBsYXlTZXNzaW9uU2VnbWVudD4mJiBzZWdt
ZW50KQogICAgIHNpemVfdCBvZmZzZXQgPSBtX3NlZ21lbnRzLmZpbmQoc2VnbWVudC5jb3B5UmVm
KCkpOwogICAgIEFTU0VSVF9VTlVTRUQob2Zmc2V0LCBvZmZzZXQgPT0gbm90Rm91bmQpOwogCi0g
ICAgbV9zZWdtZW50cy5hcHBlbmQoV1RGOjptb3ZlKHNlZ21lbnQpKTsKKyAgICBtX3NlZ21lbnRz
LmFwcGVuZChXVEZNb3ZlKHNlZ21lbnQpKTsKIH0KIAogdm9pZCBSZXBsYXlTZXNzaW9uOjppbnNl
cnRTZWdtZW50KHNpemVfdCBwb3NpdGlvbiwgUmVmUHRyPFJlcGxheVNlc3Npb25TZWdtZW50PiYm
IHNlZ21lbnQpCkBAIC03OCw3ICs3OCw3IEBAIHZvaWQgUmVwbGF5U2Vzc2lvbjo6aW5zZXJ0U2Vn
bWVudChzaXplX3QgcG9zaXRpb24sIFJlZlB0cjxSZXBsYXlTZXNzaW9uU2VnbWVudD4mCiAgICAg
QVNTRVJUX0FSRyhzZWdtZW50LCBzZWdtZW50KTsKICAgICBBU1NFUlRfQVJHKHBvc2l0aW9uLCBw
b3NpdGlvbiA+PSAwICYmIHBvc2l0aW9uIDwgbV9zZWdtZW50cy5zaXplKCkpOwogCi0gICAgbV9z
ZWdtZW50cy5pbnNlcnQocG9zaXRpb24sIFdURjo6bW92ZShzZWdtZW50KSk7CisgICAgbV9zZWdt
ZW50cy5pbnNlcnQocG9zaXRpb24sIFdURk1vdmUoc2VnbWVudCkpOwogfQogCiB2b2lkIFJlcGxh
eVNlc3Npb246OnJlbW92ZVNlZ21lbnQoc2l6ZV90IHBvc2l0aW9uKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVwbGF5L1JlcGxheWluZ0lucHV0Q3Vyc29yLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlcGxheS9SZXBsYXlpbmdJbnB1dEN1cnNvci5jcHAKaW5kZXggNmNhNzUwMzE3MTBlMzk5
ZjQ1NTY2YzA0YTgwMjY2Y2QwODA1M2ZlYy4uMGUyNmEyYTRiZTExZmUzZjg5MjhmMGE2ODc0MmVm
ZDE5ODVlYTU0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVwbGF5L1JlcGxheWluZ0lu
cHV0Q3Vyc29yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZXBsYXkvUmVwbGF5aW5nSW5wdXRD
dXJzb3IuY3BwCkBAIC00MCw3ICs0MCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFJlcGxh
eWluZ0lucHV0Q3Vyc29yOjpSZXBsYXlpbmdJbnB1dEN1cnNvcihSZWZQdHI8UmVwbGF5U2Vzc2lv
blNlZ21lbnQ+JiYgc2VnbWVudCwgUGFnZSYgcGFnZSwgRXZlbnRMb29wSW5wdXREaXNwYXRjaGVy
Q2xpZW50KiBjbGllbnQpCi0gICAgOiBtX3NlZ21lbnQoV1RGOjptb3ZlKHNlZ21lbnQpKQorICAg
IDogbV9zZWdtZW50KFdURk1vdmUoc2VnbWVudCkpCiAgICAgLCBtX2Rpc3BhdGNoZXIoc3RkOjpt
YWtlX3VuaXF1ZTxFdmVudExvb3BJbnB1dERpc3BhdGNoZXI+KHBhZ2UsICp0aGlzLCBjbGllbnQp
KQogewogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RhdGljX2Nhc3Q8c2l6ZV90PihJbnB1
dFF1ZXVlOjpDb3VudCk7IGkrKykKQEAgLTUzLDcgKzUzLDcgQEAgUmVwbGF5aW5nSW5wdXRDdXJz
b3I6On5SZXBsYXlpbmdJbnB1dEN1cnNvcigpCiAKIFJlZjxSZXBsYXlpbmdJbnB1dEN1cnNvcj4g
UmVwbGF5aW5nSW5wdXRDdXJzb3I6OmNyZWF0ZShSZWZQdHI8UmVwbGF5U2Vzc2lvblNlZ21lbnQ+
JiYgc2VnbWVudCwgUGFnZSYgcGFnZSwgRXZlbnRMb29wSW5wdXREaXNwYXRjaGVyQ2xpZW50KiBj
bGllbnQpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVwbGF5aW5nSW5wdXRDdXJzb3Io
V1RGOjptb3ZlKHNlZ21lbnQpLCBwYWdlLCBjbGllbnQpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBSZXBsYXlpbmdJbnB1dEN1cnNvcihXVEZNb3ZlKHNlZ21lbnQpLCBwYWdlLCBjbGllbnQp
KTsKIH0KIAogdm9pZCBSZXBsYXlpbmdJbnB1dEN1cnNvcjo6c3RvcmVJbnB1dChzdGQ6OnVuaXF1
ZV9wdHI8Tm9uZGV0ZXJtaW5pc3RpY0lucHV0QmFzZT4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZXBsYXkvU2VnbWVudGVkSW5wdXRTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
cGxheS9TZWdtZW50ZWRJbnB1dFN0b3JhZ2UuY3BwCmluZGV4IDIxNDI0OWJmZDE4OTY4NmIyMGJl
ZWM4MjM1ZjVhMTMyZDM4YWYyMmUuLmU2MWIwNjllNWFiNzg5NzhlMDg5ZTM1YmUxYTRmODUxODQ2
ZTEzZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlcGxheS9TZWdtZW50ZWRJbnB1dFN0
b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlcGxheS9TZWdtZW50ZWRJbnB1dFN0b3Jh
Z2UuY3BwCkBAIC0xMDQsNyArMTA0LDcgQEAgdm9pZCBTZWdtZW50ZWRJbnB1dFN0b3JhZ2U6OnN0
b3JlKHN0ZDo6dW5pcXVlX3B0cjxOb25kZXRlcm1pbmlzdGljSW5wdXRCYXNlPiBpbnAKIAogICAg
IExPRyhXZWJSZXBsYXksICIlLTE0cyMlLTV1ICVzOiAlcyAlc1xuIiwgIlJlcGxheUV2ZW50cyIs
IG1faW5wdXRDb3VudCsrLCBxdWV1ZVR5cGVUb0xvZ1ByZWZpeChpbnB1dC0+cXVldWUoKSwgZmFs
c2UpLCBpbnB1dC0+dHlwZSgpLnV0ZjgoKS5kYXRhKCksIGpzb25TdHJpbmdGb3JJbnB1dCgqaW5w
dXQpLnV0ZjgoKS5kYXRhKCkpOwogCi0gICAgbV9xdWV1ZXMuYXQob2Zmc2V0Rm9ySW5wdXRRdWV1
ZShpbnB1dC0+cXVldWUoKSkpLT5hcHBlbmQoV1RGOjptb3ZlKGlucHV0KSk7CisgICAgbV9xdWV1
ZXMuYXQob2Zmc2V0Rm9ySW5wdXRRdWV1ZShpbnB1dC0+cXVldWUoKSkpLT5hcHBlbmQoV1RGTW92
ZShpbnB1dCkpOwogfQogCiBzaXplX3QgU2VnbWVudGVkSW5wdXRTdG9yYWdlOjpxdWV1ZVNpemUo
SW5wdXRRdWV1ZSBpbnB1dFF1ZXVlKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVwbGF5L1NlcmlhbGl6YXRpb25NZXRob2RzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlcGxheS9T
ZXJpYWxpemF0aW9uTWV0aG9kcy5jcHAKaW5kZXggZjlmMDY1YmY4ZDI3OTUwYTcxNDNjZWUyY2I3
OGZhOGU2ODFjNDhhNS4uYjQyYjZiNTkwMmMyYTI2ODI2MDgwZTNlYjcyNmVmMWQxM2U3YWI2MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVwbGF5L1NlcmlhbGl6YXRpb25NZXRob2RzLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZXBsYXkvU2VyaWFsaXphdGlvbk1ldGhvZHMuY3BwCkBA
IC0xOTYsNyArMTk2LDcgQEAgYm9vbCBFbmNvZGluZ1RyYWl0czxOb25kZXRlcm1pbmlzdGljSW5w
dXRCYXNlPjo6ZGVjb2RlVmFsdWUoRW5jb2RlZFZhbHVlJiBlbmNvZGUKICAgICAgICAgaWYgKCFJ
bnB1dFRyYWl0czxuYW1lPjo6ZGVjb2RlKGVuY29kZWRWYWx1ZSwgZGVjb2RlZElucHV0KSkgXAog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyBcCiAgICAgICAgIFwKLSAgICAgICAgaW5wdXQgPSBX
VEY6Om1vdmUoZGVjb2RlZElucHV0KTsgXAorICAgICAgICBpbnB1dCA9IFdURk1vdmUoZGVjb2Rl
ZElucHV0KTsgXAogICAgICAgICByZXR1cm4gdHJ1ZTsgXAogICAgIH0gXAogCkBAIC0yMDksNyAr
MjA5LDcgQEAgYm9vbCBFbmNvZGluZ1RyYWl0czxOb25kZXRlcm1pbmlzdGljSW5wdXRCYXNlPjo6
ZGVjb2RlVmFsdWUoRW5jb2RlZFZhbHVlJiBlbmNvZGUKICAgICAgICAgaWYgKCFJbnB1dFRyYWl0
czxNZW1vaXplZERPTVJlc3VsdEJhc2U+OjpkZWNvZGUoZW5jb2RlZFZhbHVlLCBkZWNvZGVkSW5w
dXQpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIGlucHV0ID0gV1RGOjpt
b3ZlKGRlY29kZWRJbnB1dCk7CisgICAgICAgIGlucHV0ID0gV1RGTW92ZShkZWNvZGVkSW5wdXQp
OwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlcGxheS9Vc2VySW5wdXRCcmlkZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVwbGF5L1Vz
ZXJJbnB1dEJyaWRnZS5jcHAKaW5kZXggMWQ0OGQ0MDJlNTNiNTMzMTkyYzg1ZTk1YWUyYTE0MmQw
YTZmYmY1NS4uMjMzYmNjNDc1MTFjZGQxYzQ5ZmU1NjJmYjM2N2ZlOGE2YWIzZjc0OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVwbGF5L1VzZXJJbnB1dEJyaWRnZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVwbGF5L1VzZXJJbnB1dEJyaWRnZS5jcHAKQEAgLTgzLDcgKzgzLDcgQEAg
Ym9vbCBVc2VySW5wdXRCcmlkZ2U6OmhhbmRsZU1vdXNlUHJlc3NFdmVudChjb25zdCBQbGF0Zm9y
bU1vdXNlRXZlbnQmIG1vdXNlRXZlbnQKICAgICBJbnB1dEN1cnNvciYgY3Vyc29yID0gYWN0aXZl
Q3Vyc29yKCk7CiAgICAgaWYgKGN1cnNvci5pc0NhcHR1cmluZygpKSB7CiAgICAgICAgIHN0ZDo6
dW5pcXVlX3B0cjxQbGF0Zm9ybU1vdXNlRXZlbnQ+IG93bmVkRXZlbnQgPSBzdGQ6Om1ha2VfdW5p
cXVlPFBsYXRmb3JtTW91c2VFdmVudD4obW91c2VFdmVudCk7Ci0gICAgICAgIGN1cnNvci5hcHBl
bmRJbnB1dDxIYW5kbGVNb3VzZVByZXNzPihXVEY6Om1vdmUob3duZWRFdmVudCkpOworICAgICAg
ICBjdXJzb3IuYXBwZW5kSW5wdXQ8SGFuZGxlTW91c2VQcmVzcz4oV1RGTW92ZShvd25lZEV2ZW50
KSk7CiAgICAgfQogICAgIEV2ZW50TG9vcElucHV0RXh0ZW50IGV4dGVudChjdXJzb3IpOwogI2Vs
c2UKQEAgLTEwMSw3ICsxMDEsNyBAQCBib29sIFVzZXJJbnB1dEJyaWRnZTo6aGFuZGxlTW91c2VS
ZWxlYXNlRXZlbnQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBtb3VzZUV2ZQogICAgIElucHV0
Q3Vyc29yJiBjdXJzb3IgPSBhY3RpdmVDdXJzb3IoKTsKICAgICBpZiAoY3Vyc29yLmlzQ2FwdHVy
aW5nKCkpIHsKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtTW91c2VFdmVudD4gb3du
ZWRFdmVudCA9IHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1Nb3VzZUV2ZW50Pihtb3VzZUV2ZW50
KTsKLSAgICAgICAgY3Vyc29yLmFwcGVuZElucHV0PEhhbmRsZU1vdXNlUmVsZWFzZT4oV1RGOjpt
b3ZlKG93bmVkRXZlbnQpKTsKKyAgICAgICAgY3Vyc29yLmFwcGVuZElucHV0PEhhbmRsZU1vdXNl
UmVsZWFzZT4oV1RGTW92ZShvd25lZEV2ZW50KSk7CiAgICAgfQogICAgIEV2ZW50TG9vcElucHV0
RXh0ZW50IGV4dGVudChjdXJzb3IpOwogI2Vsc2UKQEAgLTExOSw3ICsxMTksNyBAQCBib29sIFVz
ZXJJbnB1dEJyaWRnZTo6aGFuZGxlTW91c2VNb3ZlRXZlbnQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2
ZW50JiBtb3VzZUV2ZW50LAogICAgIElucHV0Q3Vyc29yJiBjdXJzb3IgPSBhY3RpdmVDdXJzb3Io
KTsKICAgICBpZiAoY3Vyc29yLmlzQ2FwdHVyaW5nKCkpIHsKICAgICAgICAgc3RkOjp1bmlxdWVf
cHRyPFBsYXRmb3JtTW91c2VFdmVudD4gb3duZWRFdmVudCA9IHN0ZDo6bWFrZV91bmlxdWU8UGxh
dGZvcm1Nb3VzZUV2ZW50Pihtb3VzZUV2ZW50KTsKLSAgICAgICAgY3Vyc29yLmFwcGVuZElucHV0
PEhhbmRsZU1vdXNlTW92ZT4oV1RGOjptb3ZlKG93bmVkRXZlbnQpLCBmYWxzZSk7CisgICAgICAg
IGN1cnNvci5hcHBlbmRJbnB1dDxIYW5kbGVNb3VzZU1vdmU+KFdURk1vdmUob3duZWRFdmVudCks
IGZhbHNlKTsKICAgICB9CiAgICAgRXZlbnRMb29wSW5wdXRFeHRlbnQgZXh0ZW50KGN1cnNvcik7
CiAjZWxzZQpAQCAtMTM3LDcgKzEzNyw3IEBAIGJvb2wgVXNlcklucHV0QnJpZGdlOjpoYW5kbGVN
b3VzZU1vdmVPblNjcm9sbGJhckV2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYKICAgICBJ
bnB1dEN1cnNvciYgY3Vyc29yID0gYWN0aXZlQ3Vyc29yKCk7CiAgICAgaWYgKGN1cnNvci5pc0Nh
cHR1cmluZygpKSB7CiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybU1vdXNlRXZlbnQ+
IG93bmVkRXZlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtTW91c2VFdmVudD4obW91c2VF
dmVudCk7Ci0gICAgICAgIGN1cnNvci5hcHBlbmRJbnB1dDxIYW5kbGVNb3VzZU1vdmU+KFdURjo6
bW92ZShvd25lZEV2ZW50KSwgdHJ1ZSk7CisgICAgICAgIGN1cnNvci5hcHBlbmRJbnB1dDxIYW5k
bGVNb3VzZU1vdmU+KFdURk1vdmUob3duZWRFdmVudCksIHRydWUpOwogICAgIH0KICAgICBFdmVu
dExvb3BJbnB1dEV4dGVudCBleHRlbnQoY3Vyc29yKTsKICNlbHNlCkBAIC0xNjAsNyArMTYwLDcg
QEAgYm9vbCBVc2VySW5wdXRCcmlkZ2U6OmhhbmRsZUtleUV2ZW50KGNvbnN0IFBsYXRmb3JtS2V5
Ym9hcmRFdmVudCYga2V5RXZlbnQsIElucHUKICAgICBJbnB1dEN1cnNvciYgY3Vyc29yID0gYWN0
aXZlQ3Vyc29yKCk7CiAgICAgaWYgKGN1cnNvci5pc0NhcHR1cmluZygpKSB7CiAgICAgICAgIHN0
ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybUtleWJvYXJkRXZlbnQ+IG93bmVkRXZlbnQgPSBzdGQ6Om1h
a2VfdW5pcXVlPFBsYXRmb3JtS2V5Ym9hcmRFdmVudD4oa2V5RXZlbnQpOwotICAgICAgICBjdXJz
b3IuYXBwZW5kSW5wdXQ8SGFuZGxlS2V5UHJlc3M+KFdURjo6bW92ZShvd25lZEV2ZW50KSk7Cisg
ICAgICAgIGN1cnNvci5hcHBlbmRJbnB1dDxIYW5kbGVLZXlQcmVzcz4oV1RGTW92ZShvd25lZEV2
ZW50KSk7CiAgICAgfQogICAgIEV2ZW50TG9vcElucHV0RXh0ZW50IGV4dGVudChjdXJzb3IpOwog
I2Vsc2UKQEAgLTE4Myw3ICsxODMsNyBAQCBib29sIFVzZXJJbnB1dEJyaWRnZTo6aGFuZGxlV2hl
ZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQsIElucAogICAgIElu
cHV0Q3Vyc29yJiBjdXJzb3IgPSBhY3RpdmVDdXJzb3IoKTsKICAgICBpZiAoY3Vyc29yLmlzQ2Fw
dHVyaW5nKCkpIHsKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtV2hlZWxFdmVudD4g
b3duZWRFdmVudCA9IHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1XaGVlbEV2ZW50Pih3aGVlbEV2
ZW50KTsKLSAgICAgICAgY3Vyc29yLmFwcGVuZElucHV0PEhhbmRsZVdoZWVsRXZlbnQ+KFdURjo6
bW92ZShvd25lZEV2ZW50KSk7CisgICAgICAgIGN1cnNvci5hcHBlbmRJbnB1dDxIYW5kbGVXaGVl
bEV2ZW50PihXVEZNb3ZlKG93bmVkRXZlbnQpKTsKICAgICB9CiAgICAgRXZlbnRMb29wSW5wdXRF
eHRlbnQgZXh0ZW50KGN1cnNvcik7CiAjZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3RvcmFnZS9TdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZS5jcHAK
aW5kZXggZGQ3ZDZkMGViMWEzMzA0MDg1Y2ZhNzZlZGIxYjU1MmZmNjFhOTY5MC4uNWViZGYzOGQw
ZjYyNGRkMDQ4MzMwZGJhMTM4ZTNkYWU3MGQ4NWI4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3RvcmFnZS9TdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3Jh
Z2UuY3BwCkBAIC0zOSwxMiArMzksMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBSZWY8U3Rv
cmFnZT4gU3RvcmFnZTo6Y3JlYXRlKEZyYW1lKiBmcmFtZSwgUmVmUHRyPFN0b3JhZ2VBcmVhPiYm
IHN0b3JhZ2VBcmVhKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0b3JhZ2UoZnJhbWUs
IFdURjo6bW92ZShzdG9yYWdlQXJlYSkpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdG9y
YWdlKGZyYW1lLCBXVEZNb3ZlKHN0b3JhZ2VBcmVhKSkpOwogfQogCiBTdG9yYWdlOjpTdG9yYWdl
KEZyYW1lKiBmcmFtZSwgUmVmUHRyPFN0b3JhZ2VBcmVhPiYmIHN0b3JhZ2VBcmVhKQogICAgIDog
RE9NV2luZG93UHJvcGVydHkoZnJhbWUpCi0gICAgLCBtX3N0b3JhZ2VBcmVhKFdURjo6bW92ZShz
dG9yYWdlQXJlYSkpCisgICAgLCBtX3N0b3JhZ2VBcmVhKFdURk1vdmUoc3RvcmFnZUFyZWEpKQog
ewogICAgIEFTU0VSVChtX2ZyYW1lKTsKICAgICBBU1NFUlQobV9zdG9yYWdlQXJlYSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVGb3JEb2N1bWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVGb3JEb2N1bWVudC5jcHAKaW5kZXgg
ZDRkMTE1YzhjZTQxYzViOGQ5YmFjNTRlMzU1YjNlNzBhM2VmYWVmMC4uMTIzMGIzMmQ5MTRlZTVk
YWFjYjgwMTcxMWJkNmU3MDY1ZDRiZWVkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5
bGUvU3R5bGVSZXNvbHZlRm9yRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxl
L1N0eWxlUmVzb2x2ZUZvckRvY3VtZW50LmNwcApAQCAtNjEsNyArNjEsNyBAQCBSZWY8UmVuZGVy
U3R5bGU+IHJlc29sdmVGb3JEb2N1bWVudChjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAg
ZG9jdW1lbnRTdHlsZS5nZXQoKS5zZXRQYWdlU2NhbGVUcmFuc2Zvcm0ocmVuZGVyVmlldy5mcmFt
ZSgpLmZyYW1lU2NhbGVGYWN0b3IoKSk7CiAgICAgRm9udENhc2NhZGVEZXNjcmlwdGlvbiBkb2N1
bWVudEZvbnREZXNjcmlwdGlvbiA9IGRvY3VtZW50U3R5bGUuZ2V0KCkuZm9udERlc2NyaXB0aW9u
KCk7CiAgICAgZG9jdW1lbnRGb250RGVzY3JpcHRpb24uc2V0TG9jYWxlKGRvY3VtZW50LmNvbnRl
bnRMYW5ndWFnZSgpKTsKLSAgICBkb2N1bWVudFN0eWxlLmdldCgpLnNldEZvbnREZXNjcmlwdGlv
bihXVEY6Om1vdmUoZG9jdW1lbnRGb250RGVzY3JpcHRpb24pKTsKKyAgICBkb2N1bWVudFN0eWxl
LmdldCgpLnNldEZvbnREZXNjcmlwdGlvbihXVEZNb3ZlKGRvY3VtZW50Rm9udERlc2NyaXB0aW9u
KSk7CiAKICAgICAvLyBUaGlzIG92ZXJyaWRlcyBhbnkgLXdlYmtpdC11c2VyLW1vZGlmeSBpbmhl
cml0ZWQgZnJvbSB0aGUgcGFyZW50IGlmcmFtZS4KICAgICBkb2N1bWVudFN0eWxlLmdldCgpLnNl
dFVzZXJNb2RpZnkoZG9jdW1lbnQuaW5EZXNpZ25Nb2RlKCkgPyBSRUFEX1dSSVRFIDogUkVBRF9P
TkxZKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZVRyZWUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlVHJlZS5jcHAKaW5kZXggNWM5
ODQ0MzU3MTEyNWVlN2E5YzJhZDU1Y2JhYWZlZGFlMWNmNTY4Zi4uOTI0NGEyMjE5ZDRjMTllMmE3
NGU2ZGQzNDY0YWRkNjhiYzgxNGM1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUv
U3R5bGVSZXNvbHZlVHJlZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNv
bHZlVHJlZS5jcHAKQEAgLTIwMyw3ICsyMDMsNyBAQCBzdGF0aWMgdm9pZCBjcmVhdGVSZW5kZXJl
cklmTmVlZGVkKEVsZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiBpbmhlcml0ZWRTdHlsZQog
ICAgIC8vIFRoaXMganVzdCBkb2VzIHdoYXQgc2V0QW5pbWF0ZWRTdHlsZSgpIGRvZXMsIGV4Y2Vw
dCB3aXRoIHNldFN0eWxlSW50ZXJuYWwoKSBpbnN0ZWFkIG9mIHNldFN0eWxlKCkuCiAgICAgUmVm
PFJlbmRlclN0eWxlPiBhbmltYXRlZFN0eWxlID0gbmV3UmVuZGVyZXItPnN0eWxlKCk7CiAgICAg
bmV3UmVuZGVyZXItPmFuaW1hdGlvbigpLnVwZGF0ZUFuaW1hdGlvbnMoKm5ld1JlbmRlcmVyLCBh
bmltYXRlZFN0eWxlLCBhbmltYXRlZFN0eWxlKTsKLSAgICBuZXdSZW5kZXJlci0+c2V0U3R5bGVJ
bnRlcm5hbChXVEY6Om1vdmUoYW5pbWF0ZWRTdHlsZSkpOworICAgIG5ld1JlbmRlcmVyLT5zZXRT
dHlsZUludGVybmFsKFdURk1vdmUoYW5pbWF0ZWRTdHlsZSkpOwogCiAgICAgbmV3UmVuZGVyZXIt
PmluaXRpYWxpemVTdHlsZSgpOwogCkBAIC0zODEsMTAgKzM4MSwxMCBAQCBzdGF0aWMgdm9pZCBz
ZXRCZWZvcmVPckFmdGVyUHNldWRvRWxlbWVudChFbGVtZW50JiBjdXJyZW50LCBSZWY8UHNldWRv
RWxlbWVudD4mJgogewogICAgIEFTU0VSVChwc2V1ZG9JZCA9PSBCRUZPUkUgfHwgcHNldWRvSWQg
PT0gQUZURVIpOwogICAgIGlmIChwc2V1ZG9JZCA9PSBCRUZPUkUpIHsKLSAgICAgICAgY3VycmVu
dC5zZXRCZWZvcmVQc2V1ZG9FbGVtZW50KFdURjo6bW92ZShwc2V1ZG9FbGVtZW50KSk7CisgICAg
ICAgIGN1cnJlbnQuc2V0QmVmb3JlUHNldWRvRWxlbWVudChXVEZNb3ZlKHBzZXVkb0VsZW1lbnQp
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBjdXJyZW50LnNldEFmdGVyUHNldWRvRWxl
bWVudChXVEY6Om1vdmUocHNldWRvRWxlbWVudCkpOworICAgIGN1cnJlbnQuc2V0QWZ0ZXJQc2V1
ZG9FbGVtZW50KFdURk1vdmUocHNldWRvRWxlbWVudCkpOwogfQogCiBzdGF0aWMgdm9pZCBjbGVh
ckJlZm9yZU9yQWZ0ZXJQc2V1ZG9FbGVtZW50KEVsZW1lbnQmIGN1cnJlbnQsIFBzZXVkb0lkIHBz
ZXVkb0lkKQpAQCAtODg1LDcgKzg4NSw3IEBAIHZvaWQgcmVzb2x2ZVRyZWUoRG9jdW1lbnQmIGRv
Y3VtZW50LCBDaGFuZ2UgY2hhbmdlKQogCiAgICAgICAgIFN0eWxlOjpDaGFuZ2UgZG9jdW1lbnRD
aGFuZ2UgPSBkZXRlcm1pbmVDaGFuZ2UoZG9jdW1lbnRTdHlsZS5nZXQoKSwgcmVuZGVyVmlldy5z
dHlsZSgpKTsKICAgICAgICAgaWYgKGRvY3VtZW50Q2hhbmdlICE9IE5vQ2hhbmdlKQotICAgICAg
ICAgICAgcmVuZGVyVmlldy5zZXRTdHlsZShXVEY6Om1vdmUoZG9jdW1lbnRTdHlsZSkpOworICAg
ICAgICAgICAgcmVuZGVyVmlldy5zZXRTdHlsZShXVEZNb3ZlKGRvY3VtZW50U3R5bGUpKTsKICAg
ICB9CiAKICAgICBFbGVtZW50KiBkb2N1bWVudEVsZW1lbnQgPSBkb2N1bWVudC5kb2N1bWVudEVs
ZW1lbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQUVsZW1lbnQuY3BwCmluZGV4IGU1Y2U1MTM2YTMwOTNm
ZThiMDk3ZGU2NmQxMGQ1MDc0OGJhOTFlOTAuLmFkNWNlMTM4MTVlZWU2YTNhMTJmODZmMDY3Mjkx
YThjMWZhNTk1ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FFbGVtZW50LmNwcApAQCAtMTA4LDkgKzEw
OCw5IEBAIHZvaWQgU1ZHQUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlm
aWVkTmFtZSYgYXR0ck5hbWUpCiBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gU1ZHQUVsZW1lbnQ6
OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUsIGNvbnN0IFJl
bmRlclRyZWVQb3NpdGlvbiYpCiB7CiAgICAgaWYgKHBhcmVudE5vZGUoKSAmJiBwYXJlbnROb2Rl
KCktPmlzU1ZHRWxlbWVudCgpICYmIGRvd25jYXN0PFNWR0VsZW1lbnQ+KCpwYXJlbnROb2RlKCkp
LmlzVGV4dENvbnRlbnQoKSkKLSAgICAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlclNW
R0lubGluZT4oKnRoaXMsIFdURjo6bW92ZShzdHlsZSkpOworICAgICAgICByZXR1cm4gY3JlYXRl
UmVuZGVyZXI8UmVuZGVyU1ZHSW5saW5lPigqdGhpcywgV1RGTW92ZShzdHlsZSkpOwogCi0gICAg
cmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlclNWR1RyYW5zZm9ybWFibGVDb250YWluZXI+KCp0
aGlzLCBXVEY6Om1vdmUoc3R5bGUpKTsKKyAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVy
U1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lcj4oKnRoaXMsIFdURk1vdmUoc3R5bGUpKTsKIH0KIAog
dm9pZCBTVkdBRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQWx0R2x5cGhFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdBbHRHbHlwaEVsZW1lbnQuY3BwCmluZGV4IDA3Y2UzMjkxN2E1YzY3
YjYwNWI0NTI1OTg3YjA3ZDA3MjZkNWQ4ODcuLmVmZWE1ZGViZWIzZWJiYzFiZTIyNWE0NDVmNzY2
N2E1MjM0ZjhiYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbHRHbHlwaEVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbHRHbHlwaEVsZW1lbnQuY3Bw
CkBAIC04NCw3ICs4NCw3IEBAIGJvb2wgU1ZHQWx0R2x5cGhFbGVtZW50OjpjaGlsZFNob3VsZENy
ZWF0ZVJlbmRlcmVyKGNvbnN0IE5vZGUmIGNoaWxkKSBjb25zdAogCiBSZW5kZXJQdHI8UmVuZGVy
RWxlbWVudD4gU1ZHQWx0R2x5cGhFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJl
bmRlclN0eWxlPiYmIHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQogewotICAgIHJl
dHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJTVkdUU3Bhbj4oKnRoaXMsIFdURjo6bW92ZShzdHls
ZSkpOworICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJTVkdUU3Bhbj4oKnRoaXMsIFdU
Rk1vdmUoc3R5bGUpKTsKIH0KIAogYm9vbCBTVkdBbHRHbHlwaEVsZW1lbnQ6Omhhc1ZhbGlkR2x5
cGhFbGVtZW50cyhWZWN0b3I8U3RyaW5nPiYgZ2x5cGhOYW1lcykgY29uc3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFBhdGguY3BwIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0FuaW1hdGVkUGF0aC5jcHAKaW5kZXggY2U5MmZlNDQxMDk4ZTc2YjI1ODllZjg0Yzdj
YTc1YzRlOWU4ODFmZS4uMTNhY2ZkZGM4OTI1MmVmZmZhYmY2OTE3ZmZkNWJlMmRhNmM0ZmJmZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkUGF0aC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkUGF0aC5jcHAKQEAgLTM1LDcgKzM1LDcgQEAg
c3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4gU1ZHQW5pbWF0ZWRQYXRoQW5pbWF0b3I6
OmNvbnN0cnVjdEZyb21TdHJpbmcoY28KIHsKICAgICBhdXRvIGJ5dGVTdHJlYW0gPSBzdGQ6Om1h
a2VfdW5pcXVlPFNWR1BhdGhCeXRlU3RyZWFtPigpOwogICAgIGJ1aWxkU1ZHUGF0aEJ5dGVTdHJl
YW1Gcm9tU3RyaW5nKHN0cmluZywgKmJ5dGVTdHJlYW0sIFVuYWx0ZXJlZFBhcnNpbmcpOwotICAg
IHJldHVybiBTVkdBbmltYXRlZFR5cGU6OmNyZWF0ZVBhdGgoV1RGOjptb3ZlKGJ5dGVTdHJlYW0p
KTsKKyAgICByZXR1cm4gU1ZHQW5pbWF0ZWRUeXBlOjpjcmVhdGVQYXRoKFdURk1vdmUoYnl0ZVN0
cmVhbSkpOwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiBTVkdBbmltYXRl
ZFBhdGhBbmltYXRvcjo6c3RhcnRBbmltVmFsQW5pbWF0aW9uKGNvbnN0IFNWR0VsZW1lbnRBbmlt
YXRlZFByb3BlcnR5TGlzdCYgYW5pbWF0ZWRUeXBlcykKQEAgLTQ1LDcgKzQ1LDcgQEAgc3RkOjp1
bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4gU1ZHQW5pbWF0ZWRQYXRoQW5pbWF0b3I6OnN0YXJ0
QW5pbVZhbEFuaW1hdGlvbigKICAgICAvLyBCdWlsZCBpbml0aWFsIHBhdGggYnl0ZSBzdHJlYW0u
CiAgICAgYXV0byBieXRlU3RyZWFtID0gc3RkOjptYWtlX3VuaXF1ZTxTVkdQYXRoQnl0ZVN0cmVh
bT4oKTsKICAgICByZXNldEFuaW1WYWxUb0Jhc2VWYWwoYW5pbWF0ZWRUeXBlcywgYnl0ZVN0cmVh
bS5nZXQoKSk7Ci0gICAgcmV0dXJuIFNWR0FuaW1hdGVkVHlwZTo6Y3JlYXRlUGF0aChXVEY6Om1v
dmUoYnl0ZVN0cmVhbSkpOworICAgIHJldHVybiBTVkdBbmltYXRlZFR5cGU6OmNyZWF0ZVBhdGgo
V1RGTW92ZShieXRlU3RyZWFtKSk7CiB9CiAKIHZvaWQgU1ZHQW5pbWF0ZWRQYXRoQW5pbWF0b3I6
OnN0b3BBbmltVmFsQW5pbWF0aW9uKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlz
dCYgYW5pbWF0ZWRUeXBlcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmlt
YXRlZFR5cGVBbmltYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUeXBl
QW5pbWF0b3IuY3BwCmluZGV4IDg1YTJjMWZiNmQyOGM5NjhjNzUwN2VhMDQ0NzQ3ZmM4MTJlNjU2
ZWIuLmEyZDU5YjZlOTc2N2VkMDA4ZDExNDM0MDM4Y2I3NWYzZGU3NGVjNTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFR5cGVBbmltYXRvci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHlwZUFuaW1hdG9yLmNwcApAQCAtNjQsNyArNjQs
NyBAQCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QgU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0
b3I6OmZpbmRBbmltYXRlZFByb3BlcnRpZXNGbwogICAgIGlmICh0YXJnZXRQcm9wZXJ0aWVzLmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKIAotICAgIHJlc3VsdC5hcHBlbmQoU1ZH
RWxlbWVudEFuaW1hdGVkUHJvcGVydGllcyB7ICZ0YXJnZXRFbGVtZW50LCBXVEY6Om1vdmUodGFy
Z2V0UHJvcGVydGllcykgfSk7CisgICAgcmVzdWx0LmFwcGVuZChTVkdFbGVtZW50QW5pbWF0ZWRQ
cm9wZXJ0aWVzIHsgJnRhcmdldEVsZW1lbnQsIFdURk1vdmUodGFyZ2V0UHJvcGVydGllcykgfSk7
CiAKICAgICBmb3IgKFNWR0VsZW1lbnQqIGluc3RhbmNlIDogdGFyZ2V0RWxlbWVudC5pbnN0YW5j
ZXMoKSkKICAgICAgICAgcmVzdWx0LmFwcGVuZChTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0aWVz
IHsgaW5zdGFuY2UsIHByb3BlcnR5TWFwLnByb3BlcnRpZXMoKmluc3RhbmNlLCBhdHRyaWJ1dGVO
YW1lKSB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDaXJjbGVFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDaXJjbGVFbGVtZW50LmNwcAppbmRleCA0ZmUy
NzVhNWE3M2I3YjM1ZWE3Yjk5MGRlZjJjZDBlZjk0YmI5MTMxLi4zMWE2NTUyMjU1MzMwNDI2MDc4
YTU1MWYxYWQ3NTViYzhiZmU1NzU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
Q2lyY2xlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NpcmNsZUVsZW1l
bnQuY3BwCkBAIC0xMDAsNyArMTAwLDcgQEAgdm9pZCBTVkdDaXJjbGVFbGVtZW50OjpzdmdBdHRy
aWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogCiBSZW5kZXJQdHI8
UmVuZGVyRWxlbWVudD4gU1ZHQ2lyY2xlRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJl
ZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKIHsKLSAg
ICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyU1ZHRWxsaXBzZT4oKnRoaXMsIFdURjo6bW92
ZShzdHlsZSkpOworICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJTVkdFbGxpcHNlPigq
dGhpcywgV1RGTW92ZShzdHlsZSkpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDbGlw
UGF0aEVsZW1lbnQuY3BwCmluZGV4IDYzNmY5MTQ5ZGZjYTY1Mjk4NjcxNDFmODM5NjVlYjkwNjdl
MDM3YmIuLjIwOTRiNmI5NTEwYTExMTkwMDg0MDI1OTMyNzdlOWZkYmRkODI0NmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDbGlwUGF0aEVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdDbGlwUGF0aEVsZW1lbnQuY3BwCkBAIC0xMDQsNyArMTA0LDcgQEAg
dm9pZCBTVkdDbGlwUGF0aEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5n
ZSYgY2hhbmdlKQogCiBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gU1ZHQ2xpcFBhdGhFbGVtZW50
OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlLCBjb25zdCBS
ZW5kZXJUcmVlUG9zaXRpb24mKQogewotICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJT
VkdSZXNvdXJjZUNsaXBwZXI+KCp0aGlzLCBXVEY6Om1vdmUoc3R5bGUpKTsKKyAgICByZXR1cm4g
Y3JlYXRlUmVuZGVyZXI8UmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyPigqdGhpcywgV1RGTW92ZShz
dHlsZSkpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRGVmc0Vs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RlZnNFbGVtZW50LmNwcAppbmRleCA4
N2Q4Njk2MDdlMzQ0ODU4MDg5MzlmODM3YTZlMmIyMDk1YTNjYTllLi41MWNkMzIwN2VkNjc2ZWM3
ZjFkNDM0YjY1OGJmZDc1ZDhhNzA2ZmQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRGVmc0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEZWZzRWxlbWVu
dC5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgYm9vbCBTVkdEZWZzRWxlbWVudDo6aXNWYWxpZCgpIGNv
bnN0CiAKIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdEZWZzRWxlbWVudDo6Y3JlYXRlRWxl
bWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBv
c2l0aW9uJikKIHsKLSAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyU1ZHSGlkZGVuQ29u
dGFpbmVyPigqdGhpcywgV1RGOjptb3ZlKHN0eWxlKSk7CisgICAgcmV0dXJuIGNyZWF0ZVJlbmRl
cmVyPFJlbmRlclNWR0hpZGRlbkNvbnRhaW5lcj4oKnRoaXMsIFdURk1vdmUoc3R5bGUpKTsKIH0K
IAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50RXh0ZW5zaW9u
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmNwcAppbmRl
eCAzYWQ1ZmY2MGQzZjQ0NWI3ZWQ2Yzc4ODZhNGU0M2ZkNjRhNjNlOTAyLi45NTkzY2UzMWU1ODkw
MGJlZmI3MTY5ZTZkMTI5MWRiMzljYzE3YzgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RG9jdW1lbnRFeHRlbnNpb25zLmNwcApAQCAtMjU2LDcgKzI1Niw3IEBAIHZvaWQgU1ZHRG9jdW1l
bnRFeHRlbnNpb25zOjptYXJrUGVuZGluZ1Jlc291cmNlc0ZvclJlbW92YWwoY29uc3QgQXRvbWlj
U3RyaW5nJiBpCiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGVuZGluZ0VsZW1lbnRzPiBleGlzdGlu
ZyA9IG1fcGVuZGluZ1Jlc291cmNlcy50YWtlKGlkKTsKICAgICBpZiAoZXhpc3RpbmcgJiYgIWV4
aXN0aW5nLT5pc0VtcHR5KCkpCi0gICAgICAgIG1fcGVuZGluZ1Jlc291cmNlc0ZvclJlbW92YWwu
YWRkKGlkLCBXVEY6Om1vdmUoZXhpc3RpbmcpKTsKKyAgICAgICAgbV9wZW5kaW5nUmVzb3VyY2Vz
Rm9yUmVtb3ZhbC5hZGQoaWQsIFdURk1vdmUoZXhpc3RpbmcpKTsKIH0KIAogRWxlbWVudCogU1ZH
RG9jdW1lbnRFeHRlbnNpb25zOjpyZW1vdmVFbGVtZW50RnJvbVBlbmRpbmdSZXNvdXJjZXNGb3JS
ZW1vdmFsTWFwKGNvbnN0IEF0b21pY1N0cmluZyYgaWQpCkBAIC0zMDAsNyArMzAwLDcgQEAgdm9p
ZCBTVkdEb2N1bWVudEV4dGVuc2lvbnM6OmFkZEVsZW1lbnRSZWZlcmVuY2luZ1RhcmdldChTVkdF
bGVtZW50KiByZWZlcmVuY2luZ0UKIAogICAgIGF1dG8gZWxlbWVudHMgPSBzdGQ6Om1ha2VfdW5p
cXVlPEhhc2hTZXQ8U1ZHRWxlbWVudCo+PigpOwogICAgIGVsZW1lbnRzLT5hZGQocmVmZXJlbmNp
bmdFbGVtZW50KTsKLSAgICBtX2VsZW1lbnREZXBlbmRlbmNpZXMuc2V0KHJlZmVyZW5jZWRFbGVt
ZW50LCBXVEY6Om1vdmUoZWxlbWVudHMpKTsKKyAgICBtX2VsZW1lbnREZXBlbmRlbmNpZXMuc2V0
KHJlZmVyZW5jZWRFbGVtZW50LCBXVEZNb3ZlKGVsZW1lbnRzKSk7CiB9CiAKIHZvaWQgU1ZHRG9j
dW1lbnRFeHRlbnNpb25zOjpyZW1vdmVBbGxUYXJnZXRSZWZlcmVuY2VzRm9yRWxlbWVudChTVkdF
bGVtZW50KiByZWZlcmVuY2luZ0VsZW1lbnQpCkBAIC0zMjEsNyArMzIxLDcgQEAgdm9pZCBTVkdE
b2N1bWVudEV4dGVuc2lvbnM6OnJlbW92ZUFsbFRhcmdldFJlZmVyZW5jZXNGb3JFbGVtZW50KFNW
R0VsZW1lbnQqIHJlZmUKIAogdm9pZCBTVkdEb2N1bWVudEV4dGVuc2lvbnM6OnJlYnVpbGRFbGVt
ZW50cygpCiB7Ci0gICAgVmVjdG9yPFNWR0VsZW1lbnQqPiBzaGFkb3dSZWJ1aWxkRWxlbWVudHMg
PSBXVEY6Om1vdmUobV9yZWJ1aWxkRWxlbWVudHMpOworICAgIFZlY3RvcjxTVkdFbGVtZW50Kj4g
c2hhZG93UmVidWlsZEVsZW1lbnRzID0gV1RGTW92ZShtX3JlYnVpbGRFbGVtZW50cyk7CiAgICAg
Zm9yIChhdXRvKiBlbGVtZW50IDogc2hhZG93UmVidWlsZEVsZW1lbnRzKQogICAgICAgICBlbGVt
ZW50LT5zdmdBdHRyaWJ1dGVDaGFuZ2VkKFhMaW5rTmFtZXM6OmhyZWZBdHRyKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGxpcHNlRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRWxsaXBzZUVsZW1lbnQuY3BwCmluZGV4IGFlMzY5NjFmZDE5MmNmODdl
ZWUzM2NkNjAwOTMzNjE4YWYwNTFiOGMuLjViMmIxOTI4MzIyZjUxNmU0N2ZmODcyMjNhMDg1NDQ5
N2VjYjIxNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGxpcHNlRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsbGlwc2VFbGVtZW50LmNwcApAQCAt
MTAyLDcgKzEwMiw3IEBAIHZvaWQgU1ZHRWxsaXBzZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5n
ZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiAKIFJlbmRlclB0cjxSZW5kZXJFbGVt
ZW50PiBTVkdFbGxpcHNlRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJT
dHlsZT4mJiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKIHsKLSAgICByZXR1cm4g
Y3JlYXRlUmVuZGVyZXI8UmVuZGVyU1ZHRWxsaXBzZT4oKnRoaXMsIFdURjo6bW92ZShzdHlsZSkp
OworICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJTVkdFbGxpcHNlPigqdGhpcywgV1RG
TW92ZShzdHlsZSkpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RmlsdGVyRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyRWxlbWVudC5j
cHAKaW5kZXggMmE3ZmIzYzE4NWU5ZDIyZTQyZDU4YjhmZWFkZWUxOTA2ODI5ZGY1ZC4uZjMyYzMy
ZjE2NWJmMjNiZmZkNDc5NWRiNzhmNGIzMjI5MmQ0NzQ3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGaWx0ZXJFbGVtZW50LmNwcApAQCAtMTg1LDcgKzE4NSw3IEBAIHZvaWQgU1ZHRmlsdGVyRWxl
bWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJiBjaGFuZ2UpCiAKIFJlbmRl
clB0cjxSZW5kZXJFbGVtZW50PiBTVkdGaWx0ZXJFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVy
ZXIoUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQog
ewotICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcj4oKnRo
aXMsIFdURjo6bW92ZShzdHlsZSkpOworICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJT
VkdSZXNvdXJjZUZpbHRlcj4oKnRoaXMsIFdURk1vdmUoc3R5bGUpKTsKIH0KIAogYm9vbCBTVkdG
aWx0ZXJFbGVtZW50OjpjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKGNvbnN0IE5vZGUmIGNoaWxk
KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2
ZVN0YW5kYXJkQXR0cmlidXRlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJp
bWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNwcAppbmRleCBkODNlMDFmZTM4NjcwZWJiMzE3YmRi
NmYwZmQzMDQ5MDdkNzAxZmExLi4zMDMwZGQ5NTZmOTExMDIxODkwMTkzODExMTE1M2YzMDcyZTZi
YjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3Rh
bmRhcmRBdHRyaWJ1dGVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJp
bWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNwcApAQCAtMTM5LDcgKzEzOSw3IEBAIHZvaWQgU1ZH
RmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpzZXRTdGFuZGFyZEF0dHJpYnV0ZXMo
RmlsdGVyRWZmZWN0KiBmCiAKIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdGaWx0ZXJQcmlt
aXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVy
U3R5bGU+JiYgc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCiB7Ci0gICAgcmV0dXJu
IGNyZWF0ZVJlbmRlcmVyPFJlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlPigqdGhpcywg
V1RGOjptb3ZlKHN0eWxlKSk7CisgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlclNWR1Jl
c291cmNlRmlsdGVyUHJpbWl0aXZlPigqdGhpcywgV1RGTW92ZShzdHlsZSkpOwogfQogCiBib29s
IFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6cmVuZGVyZXJJc05lZWRlZChj
b25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRm9udEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRFbGVtZW50LmNw
cAppbmRleCAxMTQ4ODEyMjQ5YzI4ZTc0NGU2ZDc5YjI5ZDlmMDUzNzg2NGI4OTY2Li40OGZjMjll
Y2ZmM2I2Yjg2MDk2YThkYzlmYmQ0OWVlOWU5MjRmMjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRm9udEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
b250RWxlbWVudC5jcHAKQEAgLTE3Nyw3ICsxNzcsNyBAQCB2b2lkIFNWR0tlcm5pbmdNYXA6Omlu
c2VydChjb25zdCBTVkdLZXJuaW5nUGFpciYga2VybmluZ1BhaXIpCiAgICAgICAgIGVsc2Ugewog
ICAgICAgICAgICAgYXV0byBuZXdWZWN0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPFNWR0tlcm5pbmdW
ZWN0b3I+KCk7CiAgICAgICAgICAgICBuZXdWZWN0b3ItPmFwcGVuZChzdmdLZXJuaW5nKTsKLSAg
ICAgICAgICAgIHVuaWNvZGVNYXAuYWRkKG5hbWUsIFdURjo6bW92ZShuZXdWZWN0b3IpKTsKKyAg
ICAgICAgICAgIHVuaWNvZGVNYXAuYWRkKG5hbWUsIFdURk1vdmUobmV3VmVjdG9yKSk7CiAgICAg
ICAgIH0KICAgICB9CiAKQEAgLTE4Nyw3ICsxODcsNyBAQCB2b2lkIFNWR0tlcm5pbmdNYXA6Omlu
c2VydChjb25zdCBTVkdLZXJuaW5nUGFpciYga2VybmluZ1BhaXIpCiAgICAgICAgIGVsc2Ugewog
ICAgICAgICAgICAgYXV0byBuZXdWZWN0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPFNWR0tlcm5pbmdW
ZWN0b3I+KCk7CiAgICAgICAgICAgICBuZXdWZWN0b3ItPmFwcGVuZChzdmdLZXJuaW5nKTsKLSAg
ICAgICAgICAgIGdseXBoTWFwLmFkZChuYW1lLCBXVEY6Om1vdmUobmV3VmVjdG9yKSk7CisgICAg
ICAgICAgICBnbHlwaE1hcC5hZGQobmFtZSwgV1RGTW92ZShuZXdWZWN0b3IpKTsKICAgICAgICAg
fQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmpl
Y3RFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVu
dC5jcHAKaW5kZXggZWEzNTc5M2M3NDg0Mjk5ZmNlYTVhMGY3NzliZjlmMjg5YmQwM2Y2MC4uM2Jk
ZGJkODdmNmY1ZTk1YmU3NzE5OTYzM2ZjY2EwZWM0OWQ4M2U3NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuY3BwCkBAIC0xMjQsNyArMTI0LDcgQEAg
dm9pZCBTVkdGb3JlaWduT2JqZWN0RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBR
dWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKIAogUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR0Zv
cmVpZ25PYmplY3RFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxl
PiYmIHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQogewotICAgIHJldHVybiBjcmVh
dGVSZW5kZXJlcjxSZW5kZXJTVkdGb3JlaWduT2JqZWN0PigqdGhpcywgV1RGOjptb3ZlKHN0eWxl
KSk7CisgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlclNWR0ZvcmVpZ25PYmplY3Q+KCp0
aGlzLCBXVEZNb3ZlKHN0eWxlKSk7CiB9CiAKIGJvb2wgU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQ6
OmNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoY29uc3QgTm9kZSYgY2hpbGQpIGNvbnN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0dFbGVtZW50LmNwcAppbmRleCA0ZTNlNzkyZDFlMmI4ZGZmYzc5MzExMzRiOWUy
MDlmZTc1MThjOGJmLi4yN2UzYzczZDdjMTZmZjQ5ODU3YjIxMWQyNzY2ZDc3NTBiMDRlZDA0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR0VsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdHRWxlbWVudC5jcHAKQEAgLTkwLDkgKzkwLDkgQEAgUmVuZGVyUHRy
PFJlbmRlckVsZW1lbnQ+IFNWR0dFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJl
bmRlclN0eWxlPiYmIHMKICAgICAvLyBzdWJ0cmVlIG1heSBiZSBoaWRkZW4gLSB3ZSBvbmx5IHdh
bnQgdGhlIHJlc291cmNlIHJlbmRlcmVycyB0byBleGlzdCBzbyB0aGV5IGNhbiBiZQogICAgIC8v
IHJlZmVyZW5jZWQgZnJvbSBzb21ld2hlcmUgZWxzZS4KICAgICBpZiAoc3R5bGUuZ2V0KCkuZGlz
cGxheSgpID09IE5PTkUpCi0gICAgICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJTVkdI
aWRkZW5Db250YWluZXI+KCp0aGlzLCBXVEY6Om1vdmUoc3R5bGUpKTsKKyAgICAgICAgcmV0dXJu
IGNyZWF0ZVJlbmRlcmVyPFJlbmRlclNWR0hpZGRlbkNvbnRhaW5lcj4oKnRoaXMsIFdURk1vdmUo
c3R5bGUpKTsKIAotICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJTVkdUcmFuc2Zvcm1h
YmxlQ29udGFpbmVyPigqdGhpcywgV1RGOjptb3ZlKHN0eWxlKSk7CisgICAgcmV0dXJuIGNyZWF0
ZVJlbmRlcmVyPFJlbmRlclNWR1RyYW5zZm9ybWFibGVDb250YWluZXI+KCp0aGlzLCBXVEZNb3Zl
KHN0eWxlKSk7CiB9CiAKIGJvb2wgU1ZHR0VsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoY29uc3Qg
UmVuZGVyU3R5bGUmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYXBoaWNz
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhcGhpY3NFbGVtZW50LmNwcApp
bmRleCA4MjkwNWFkNGVhYjAxZWFhOWUxNDJjMjNmZTUxZWQyM2E2NWFhMzk0Li5iZWE5NDNhNDUz
OTU2NDZiMGQwNDRiMDY3ODViNGYxYWI4OGJiNWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHR3JhcGhpY3NFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
R3JhcGhpY3NFbGVtZW50LmNwcApAQCAtMTY0LDcgKzE2NCw3IEBAIEZsb2F0UmVjdCBTVkdHcmFw
aGljc0VsZW1lbnQ6OmdldEJCb3goU3R5bGVVcGRhdGVTdHJhdGVneSBzdHlsZVVwZGF0ZVN0cmF0
ZWd5KQogUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR0dyYXBoaWNzRWxlbWVudDo6Y3JlYXRl
RWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSwgY29uc3QgUmVuZGVyVHJl
ZVBvc2l0aW9uJikKIHsKICAgICAvLyBCeSBkZWZhdWx0LCBhbnkgc3ViY2xhc3MgaXMgZXhwZWN0
ZWQgdG8gZG8gcGF0aC1iYXNlZCBkcmF3aW5nCi0gICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJl
bmRlclNWR1BhdGg+KCp0aGlzLCBXVEY6Om1vdmUoc3R5bGUpKTsKKyAgICByZXR1cm4gY3JlYXRl
UmVuZGVyZXI8UmVuZGVyU1ZHUGF0aD4oKnRoaXMsIFdURk1vdmUoc3R5bGUpKTsKIH0KIAogdm9p
ZCBTVkdHcmFwaGljc0VsZW1lbnQ6OnRvQ2xpcFBhdGgoUGF0aCYgcGF0aCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ltYWdlRWxlbWVudC5jcHAKaW5kZXggYjJlOTdkZDdiOTQzMjBmMTk3ZTY5MTM1ZDEz
NzJjZTA5YzU2MDlkMy4uZTI1NDM2OGU0MDRhYTM3MDU5Y2Y5ZDk0MjU5OTcyZjM3MDA3YzQ1MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHAKQEAgLTE2Miw3ICsxNjIsNyBA
QCB2b2lkIFNWR0ltYWdlRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZp
ZWROYW1lJiBhdHRyTmFtZSkKIAogUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR0ltYWdlRWxl
bWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSwgY29u
c3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKIHsKLSAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVu
ZGVyU1ZHSW1hZ2U+KCp0aGlzLCBXVEY6Om1vdmUoc3R5bGUpKTsKKyAgICByZXR1cm4gY3JlYXRl
UmVuZGVyZXI8UmVuZGVyU1ZHSW1hZ2U+KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7CiB9CiAKIGJv
b2wgU1ZHSW1hZ2VFbGVtZW50OjpoYXZlTG9hZGVkUmVxdWlyZWRSZXNvdXJjZXMoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LmNwcAppbmRleCA3NTg0
N2FhNTRkOGU1MTA4NDNjZjAzOGEzZjk4ZjRjNThhNzk2YjQyLi4xYTBmMWIyYjIyNzlkYTFmYWM2
ZWQwZGFjZmI5NDZiMGY1ZjkzYzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
TGluZWFyR3JhZGllbnRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGlu
ZWFyR3JhZGllbnRFbGVtZW50LmNwcApAQCAtMTE1LDcgKzExNSw3IEBAIHZvaWQgU1ZHTGluZWFy
R3JhZGllbnRFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUm
IGF0dHJOYW1lCiAKIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdMaW5lYXJHcmFkaWVudEVs
ZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUsIGNv
bnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJl
bmRlclNWR1Jlc291cmNlTGluZWFyR3JhZGllbnQ+KCp0aGlzLCBXVEY6Om1vdmUoc3R5bGUpKTsK
KyAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyU1ZHUmVzb3VyY2VMaW5lYXJHcmFkaWVu
dD4oKnRoaXMsIFdURk1vdmUoc3R5bGUpKTsKIH0KIAogc3RhdGljIHZvaWQgc2V0R3JhZGllbnRB
dHRyaWJ1dGVzKFNWR0dyYWRpZW50RWxlbWVudCYgZWxlbWVudCwgTGluZWFyR3JhZGllbnRBdHRy
aWJ1dGVzJiBhdHRyaWJ1dGVzLCBib29sIGlzTGluZWFyID0gdHJ1ZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXJrZXJFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdNYXJrZXJFbGVtZW50LmNwcAppbmRleCA0YzJmMmNmYjhjMzE2MGNmNmQwNWU5NTYxMTU5
OTAxYzYyNmQ4MzlkLi4wNjY4N2YyOTUyYzVlY2Y4N2M0YjliZTYzZjI3NjdhMWRkY2I3OGY2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFya2VyRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtlckVsZW1lbnQuY3BwCkBAIC0yMTUsNyArMjE1LDcg
QEAgdm9pZCBTVkdNYXJrZXJFbGVtZW50OjpzZXRPcmllbnRUb0FuZ2xlKGNvbnN0IFNWR0FuZ2xl
JiBhbmdsZSkKIAogUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR01hcmtlckVsZW1lbnQ6OmNy
ZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUsIGNvbnN0IFJlbmRl
clRyZWVQb3NpdGlvbiYpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlclNWR1Jl
c291cmNlTWFya2VyPigqdGhpcywgV1RGOjptb3ZlKHN0eWxlKSk7CisgICAgcmV0dXJuIGNyZWF0
ZVJlbmRlcmVyPFJlbmRlclNWR1Jlc291cmNlTWFya2VyPigqdGhpcywgV1RGTW92ZShzdHlsZSkp
OwogfQogCiBib29sIFNWR01hcmtlckVsZW1lbnQ6OnNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBj
b25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hc2tFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXNrRWxlbWVudC5jcHAKaW5kZXggMjA2ZTQ3NWU5Mzhl
NDE1M2YzZTQwNjVjYjhmNzMyMGQ1OWNlNzA3Mi4uNTVkYjg0ZmQ4NzJhMzA3OWU1MWE5NzdmNDhh
ODI3OTk3MzE5ZWY2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hc2tFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFza0VsZW1lbnQuY3BwCkBAIC0x
NTksNyArMTU5LDcgQEAgdm9pZCBTVkdNYXNrRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNvbnN0
IENoaWxkQ2hhbmdlJiBjaGFuZ2UpCiAKIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdNYXNr
RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSwg
Y29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKIHsKLSAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8
UmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXI+KCp0aGlzLCBXVEY6Om1vdmUoc3R5bGUpKTsKKyAgICBy
ZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXI+KCp0aGlzLCBXVEZN
b3ZlKHN0eWxlKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQ
YXRoRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQuY3BwCmlu
ZGV4IDMzZTlhMWY3NDYwNmE1NzdlNTJmM2JkOGM4MDdmODdjNDNmODc0MDQuLjA5ODdmZDdjNmU0
NzMwNWMzMGE4ZWE4NTA0YjkyNjJhNjBkNDYzZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdQYXRoRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhF
bGVtZW50LmNwcApAQCAtMzk3LDcgKzM5Nyw3IEBAIEZsb2F0UmVjdCBTVkdQYXRoRWxlbWVudDo6
Z2V0QkJveChTdHlsZVVwZGF0ZVN0cmF0ZWd5IHN0eWxlVXBkYXRlU3RyYXRlZ3kpCiBSZW5kZXJQ
dHI8UmVuZGVyRWxlbWVudD4gU1ZHUGF0aEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihS
ZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCiB7CiAg
ICAgLy8gQnkgZGVmYXVsdCwgYW55IHN1YmNsYXNzIGlzIGV4cGVjdGVkIHRvIGRvIHBhdGgtYmFz
ZWQgZHJhd2luZwotICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJTVkdQYXRoPigqdGhp
cywgV1RGOjptb3ZlKHN0eWxlKSk7CisgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlclNW
R1BhdGg+KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdQYXRoVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdQYXRoVXRpbGl0aWVzLmNwcAppbmRleCAxNDJhMjJjYjk2YzM2ZDBmMzNiYjQ1NDVmZjViYTg1
YmE5MjNiZTRjLi4yNjBlZDUxNjcyMTg4OGU2MWI2MjYzYWFmMmMxYjgyZWY3ZmYzMGIxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFV0aWxpdGllcy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhVdGlsaXRpZXMuY3BwCkBAIC02NCw3ICs2NCw3IEBAIGJv
b2wgYXBwZW5kU1ZHUGF0aEJ5dGVTdHJlYW1Gcm9tU1ZHUGF0aFNlZyhSZWZQdHI8U1ZHUGF0aFNl
Zz4mJiBwYXRoU2VnLCBTVkdQYXRoCiAgICAgQVNTRVJUKHBhcnNpbmdNb2RlID09IFVuYWx0ZXJl
ZFBhcnNpbmcpOwogCiAgICAgU1ZHUGF0aFNlZ0xpc3QgYXBwZW5kZWRJdGVtTGlzdChQYXRoU2Vn
VW5hbHRlcmVkUm9sZSk7Ci0gICAgYXBwZW5kZWRJdGVtTGlzdC5hcHBlbmQoV1RGOjptb3ZlKHBh
dGhTZWcpKTsKKyAgICBhcHBlbmRlZEl0ZW1MaXN0LmFwcGVuZChXVEZNb3ZlKHBhdGhTZWcpKTsK
IAogICAgIFNWR1BhdGhCeXRlU3RyZWFtIGFwcGVuZGVkQnl0ZVN0cmVhbTsKICAgICBTVkdQYXRo
U2VnTGlzdFNvdXJjZSBzb3VyY2UoYXBwZW5kZWRJdGVtTGlzdCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1BhdHRlcm5FbGVtZW50LmNwcAppbmRleCBkZjJjOWJhYjRmN2U5M2Y5MGNiNWY4MGM0MGE1
MDFhYTg3YTRmYTNiLi5mZDdmNTFhM2U4ZjY3NjU0ZjllNmYxZjdjZDFmMTNmYTRkZDU0NGVjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5jcHAKQEAgLTE4NCw3ICsxODQs
NyBAQCB2b2lkIFNWR1BhdHRlcm5FbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRD
aGFuZ2UmIGNoYW5nZSkKIAogUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR1BhdHRlcm5FbGVt
ZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlLCBjb25z
dCBSZW5kZXJUcmVlUG9zaXRpb24mKQogewotICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5k
ZXJTVkdSZXNvdXJjZVBhdHRlcm4+KCp0aGlzLCBXVEY6Om1vdmUoc3R5bGUpKTsKKyAgICByZXR1
cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuPigqdGhpcywgV1RGTW92
ZShzdHlsZSkpOwogfQogCiB2b2lkIFNWR1BhdHRlcm5FbGVtZW50Ojpjb2xsZWN0UGF0dGVybkF0
dHJpYnV0ZXMoUGF0dGVybkF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMpIGNvbnN0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuY3BwCmluZGV4IGM2MjUyYTg2
MDQzMTFmZTk2YWQ4MzEwMWYwNGM2OWJlNmVhZDI0NWMuLmE3YmEyYzkxNDEwMDM4NjYyZGUxYjY3
YTkwY2Y3NzM1NDlkZDI1YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSYWRp
YWxHcmFkaWVudEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSYWRpYWxH
cmFkaWVudEVsZW1lbnQuY3BwCkBAIC0xMjcsNyArMTI3LDcgQEAgdm9pZCBTVkdSYWRpYWxHcmFk
aWVudEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0
ck5hbWUKIAogUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR1JhZGlhbEdyYWRpZW50RWxlbWVu
dDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSwgY29uc3Qg
UmVuZGVyVHJlZVBvc2l0aW9uJikKIHsKLSAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVy
U1ZHUmVzb3VyY2VSYWRpYWxHcmFkaWVudD4oKnRoaXMsIFdURjo6bW92ZShzdHlsZSkpOworICAg
IHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJTVkdSZXNvdXJjZVJhZGlhbEdyYWRpZW50Pigq
dGhpcywgV1RGTW92ZShzdHlsZSkpOwogfQogCiBzdGF0aWMgdm9pZCBzZXRHcmFkaWVudEF0dHJp
YnV0ZXMoU1ZHR3JhZGllbnRFbGVtZW50JiBlbGVtZW50LCBSYWRpYWxHcmFkaWVudEF0dHJpYnV0
ZXMmIGF0dHJpYnV0ZXMsIGJvb2wgaXNSYWRpYWwgPSB0cnVlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1JlY3RFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdS
ZWN0RWxlbWVudC5jcHAKaW5kZXggYjczYjBkOGNmNzE2ZTk5OTI5NmExZmRkNzgwZGI3ODQwMWZm
YWNhYy4uNWUzNGVjYzdiN2UxM2EzYTE0NTVjMWQzYzU4NjkwNDI3MzgxYjkxOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JlY3RFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHUmVjdEVsZW1lbnQuY3BwCkBAIC0xMTIsNyArMTEyLDcgQEAgdm9pZCBTVkdS
ZWN0RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRy
TmFtZSkKIAogUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR1JlY3RFbGVtZW50OjpjcmVhdGVF
bGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlLCBjb25zdCBSZW5kZXJUcmVl
UG9zaXRpb24mKQogewotICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJTVkdSZWN0Pigq
dGhpcywgV1RGOjptb3ZlKHN0eWxlKSk7CisgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRl
clNWR1JlY3Q+KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdTVkdFbGVtZW50LmNwcAppbmRleCAwYzU0MDM0OTRjMjcyODgzY2ZiY2U1M2YxZWZlMzVmZWFi
ZDVlZjEyLi5lNWZiZDc0NjU1ODkzMTA0NjU3ZjQ5MjJhYmJmNWQxMDlkN2U5MTA5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwCkBAIC00NDIsOCArNDQyLDggQEAgYm9vbCBTVkdT
VkdFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKIFJl
bmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdTVkdFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVy
ZXIoUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQog
ewogICAgIGlmIChpc091dGVybW9zdFNWR1NWR0VsZW1lbnQoKSkKLSAgICAgICAgcmV0dXJuIGNy
ZWF0ZVJlbmRlcmVyPFJlbmRlclNWR1Jvb3Q+KCp0aGlzLCBXVEY6Om1vdmUoc3R5bGUpKTsKLSAg
ICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXI+KCp0aGlz
LCBXVEY6Om1vdmUoc3R5bGUpKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRl
clNWR1Jvb3Q+KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7CisgICAgcmV0dXJuIGNyZWF0ZVJlbmRl
cmVyPFJlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyPigqdGhpcywgV1RGTW92ZShzdHlsZSkpOwog
fQogCiBOb2RlOjpJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IFNWR1NWR0VsZW1lbnQ6Omlu
c2VydGVkSW50byhDb250YWluZXJOb2RlJiByb290UGFyZW50KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1N0b3BFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdT
dG9wRWxlbWVudC5jcHAKaW5kZXggYmJlNGY2NjBhZDJmZDJjZTEzNTBhM2UxOTBkYWI4ZDI2Y2U3
NWRjNy4uN2RiYWM4MDkxNzA1Zjc0MTI1NDEyODE4NzE2NzMyNGZkZDAwNmMwZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0b3BFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHU3RvcEVsZW1lbnQuY3BwCkBAIC03OCw3ICs3OCw3IEBAIHZvaWQgU1ZHU3Rv
cEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5h
bWUpCiAKIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdTdG9wRWxlbWVudDo6Y3JlYXRlRWxl
bWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBv
c2l0aW9uJikKIHsKLSAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyU1ZHR3JhZGllbnRT
dG9wPigqdGhpcywgV1RGOjptb3ZlKHN0eWxlKSk7CisgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVy
PFJlbmRlclNWR0dyYWRpZW50U3RvcD4oKnRoaXMsIFdURk1vdmUoc3R5bGUpKTsKIH0KIAogYm9v
bCBTVkdTdG9wRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChjb25zdCBSZW5kZXJTdHlsZSYpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3dpdGNoRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHU3dpdGNoRWxlbWVudC5jcHAKaW5kZXggNDQ3NjJjYmU1Y2JiZmNk
NDZmODRmOWJhYWEzYzNlZjI5MzRiMjRkZS4uZDRhYzMwMGIxMWZhOTk5N2NhYjQzZGRjNDJhNzYw
MGU5YmY4MjliOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N3aXRjaEVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTd2l0Y2hFbGVtZW50LmNwcApAQCAt
NjIsNyArNjIsNyBAQCBib29sIFNWR1N3aXRjaEVsZW1lbnQ6OmNoaWxkU2hvdWxkQ3JlYXRlUmVu
ZGVyZXIoY29uc3QgTm9kZSYgY2hpbGQpIGNvbnN0CiAKIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50
PiBTVkdTd2l0Y2hFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxl
PiYmIHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQogewotICAgIHJldHVybiBjcmVh
dGVSZW5kZXJlcjxSZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyPigqdGhpcywgV1RGOjpt
b3ZlKHN0eWxlKSk7CisgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlclNWR1RyYW5zZm9y
bWFibGVDb250YWluZXI+KCp0aGlzLCBXVEZNb3ZlKHN0eWxlKSk7CiB9CiAKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTeW1ib2xFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdTeW1ib2xFbGVtZW50LmNwcAppbmRleCBjOGUxZGVjOGM5MzdiMGYwY2FmNzAw
YTZlY2MyNzAxZWNhNzQzZTBlLi45M2IyYzcwZTZlYjFmMjdhNWEyYjljYTAwYzY1MGI2OTBjM2Jl
ZDYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3ltYm9sRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N5bWJvbEVsZW1lbnQuY3BwCkBAIC03Niw3ICs3
Niw3IEBAIGJvb2wgU1ZHU3ltYm9sRWxlbWVudDo6c2VsZkhhc1JlbGF0aXZlTGVuZ3RocygpIGNv
bnN0CiAKIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdTeW1ib2xFbGVtZW50OjpjcmVhdGVF
bGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmIHN0eWxlLCBjb25zdCBSZW5kZXJUcmVl
UG9zaXRpb24mKQogewotICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJTVkdIaWRkZW5D
b250YWluZXI+KCp0aGlzLCBXVEY6Om1vdmUoc3R5bGUpKTsKKyAgICByZXR1cm4gY3JlYXRlUmVu
ZGVyZXI8UmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyPigqdGhpcywgV1RGTW92ZShzdHlsZSkpOwog
fQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50LmNwcAppbmRleCAzYjU4NzhlMzhh
YWRjMjE3ZGE5ZDI4MWZlMjg2MDNjYjI5N2MxZWU1Li5lMDhmNzE0MGRhYzMwNzRlY2FkYjhmMWQ3
N2JiYzBmNzAzMjZjY2I5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUUmVmRWxlbWVudC5jcHAKQEAg
LTk0LDcgKzk0LDcgQEAgdm9pZCBTVkdUUmVmVGFyZ2V0RXZlbnRMaXN0ZW5lcjo6YXR0YWNoKFJl
ZlB0cjxFbGVtZW50PiYmIHRhcmdldCkKIAogICAgIHRhcmdldC0+YWRkRXZlbnRMaXN0ZW5lcihl
dmVudE5hbWVzKCkuRE9NU3VidHJlZU1vZGlmaWVkRXZlbnQsIHRoaXMsIGZhbHNlKTsKICAgICB0
YXJnZXQtPmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLkRPTU5vZGVSZW1vdmVkRnJvbURv
Y3VtZW50RXZlbnQsIHRoaXMsIGZhbHNlKTsKLSAgICBtX3RhcmdldCA9IFdURjo6bW92ZSh0YXJn
ZXQpOworICAgIG1fdGFyZ2V0ID0gV1RGTW92ZSh0YXJnZXQpOwogfQogCiB2b2lkIFNWR1RSZWZU
YXJnZXRFdmVudExpc3RlbmVyOjpkZXRhY2goKQpAQCAtMTk2LDcgKzE5Niw3IEBAIHZvaWQgU1ZH
VFJlZkVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0
ck5hbWUpCiAKIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdUUmVmRWxlbWVudDo6Y3JlYXRl
RWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSwgY29uc3QgUmVuZGVyVHJl
ZVBvc2l0aW9uJikKIHsKLSAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyU1ZHSW5saW5l
PigqdGhpcywgV1RGOjptb3ZlKHN0eWxlKSk7CisgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJl
bmRlclNWR0lubGluZT4oKnRoaXMsIFdURk1vdmUoc3R5bGUpKTsKIH0KIAogYm9vbCBTVkdUUmVm
RWxlbWVudDo6Y2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihjb25zdCBOb2RlJiBjaGlsZCkgY29u
c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUU3BhbkVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1RTcGFuRWxlbWVudC5jcHAKaW5kZXggY2E5Zjc3ZWJhZjVl
YjM4YjZjMjM3NjVhYTljZWZmMTMzODc0OTFjNi4uZGJhYTM4NGVmMDJlZWZiOGU1OTJmYWVhNjM1
Mzg3YTI1NjdjMWZlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RTcGFuRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RTcGFuRWxlbWVudC5jcHAKQEAg
LTQwLDcgKzQwLDcgQEAgUmVmPFNWR1RTcGFuRWxlbWVudD4gU1ZHVFNwYW5FbGVtZW50OjpjcmVh
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW0KIAogUmVuZGVyUHRyPFJlbmRl
ckVsZW1lbnQ+IFNWR1RTcGFuRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5k
ZXJTdHlsZT4mJiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKIHsKLSAgICByZXR1
cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyU1ZHVFNwYW4+KCp0aGlzLCBXVEY6Om1vdmUoc3R5bGUp
KTsKKyAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyU1ZHVFNwYW4+KCp0aGlzLCBXVEZN
b3ZlKHN0eWxlKSk7CiB9CiAKIGJvb2wgU1ZHVFNwYW5FbGVtZW50OjpjaGlsZFNob3VsZENyZWF0
ZVJlbmRlcmVyKGNvbnN0IE5vZGUmIGNoaWxkKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1RleHRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0
RWxlbWVudC5jcHAKaW5kZXggNGU0ZDlmODQ5YzliMjk0N2UzOWM1MDJlYjI2MDliYmE2YzkxNDMw
Yy4uNjkwNjRiYWUwZTRkY2MyYjkzZTU2ZDEwMGM1NjJmYzdlZDQ5YjM5MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHVGV4dEVsZW1lbnQuY3BwCkBAIC02Niw3ICs2Niw3IEBAIEFmZmluZVRyYW5zZm9y
bSBTVkdUZXh0RWxlbWVudDo6YW5pbWF0ZWRMb2NhbFRyYW5zZm9ybSgpIGNvbnN0CiAKIFJlbmRl
clB0cjxSZW5kZXJFbGVtZW50PiBTVkdUZXh0RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVy
KFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKIHsK
LSAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyU1ZHVGV4dD4oKnRoaXMsIFdURjo6bW92
ZShzdHlsZSkpOworICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJTVkdUZXh0PigqdGhp
cywgV1RGTW92ZShzdHlsZSkpOwogfQogCiBib29sIFNWR1RleHRFbGVtZW50OjpjaGlsZFNob3Vs
ZENyZWF0ZVJlbmRlcmVyKGNvbnN0IE5vZGUmIGNoaWxkKSBjb25zdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHVGV4dFBhdGhFbGVtZW50LmNwcAppbmRleCA1MmFlMTRmNWQyZjEwYTgzZjY4YmQ2MDk1
MGEzMjdjYTE5YTgyZjEyLi45YzNjZDEwMzBmNzE4YmU3Y2QxYWIxZjEzYzJhMzJiZmQxNzM2YWEx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBhdGhFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBhdGhFbGVtZW50LmNwcApAQCAtMTI1LDcg
KzEyNSw3IEBAIHZvaWQgU1ZHVGV4dFBhdGhFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNv
bnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogCiBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4g
U1ZHVGV4dFBhdGhFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxl
PiYmIHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQogewotICAgIHJldHVybiBjcmVh
dGVSZW5kZXJlcjxSZW5kZXJTVkdUZXh0UGF0aD4oKnRoaXMsIFdURjo6bW92ZShzdHlsZSkpOwor
ICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJTVkdUZXh0UGF0aD4oKnRoaXMsIFdURk1v
dmUoc3R5bGUpKTsKIH0KIAogYm9vbCBTVkdUZXh0UGF0aEVsZW1lbnQ6OmNoaWxkU2hvdWxkQ3Jl
YXRlUmVuZGVyZXIoY29uc3QgTm9kZSYgY2hpbGQpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHVG9PVEZGb250Q29udmVyc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHVG9PVEZGb250Q29udmVyc2lvbi5jcHAKaW5kZXggODkwOTdhODc1YjVlNWM1NWQyMTQw
ZjFlN2QxNWQ1OWU5YThmMDYzMS4uOGQ3MWFkMjMxYjMyYzFlN2QxMTk2ZjRhOGRjYWEzMTFhNDc2
ODg3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RvT1RGRm9udENvbnZlcnNp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUb09URkZvbnRDb252ZXJzaW9uLmNw
cApAQCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6CiAKICAgICBWZWN0b3I8Y2hhcj4gcmVsZWFzZVJl
c3VsdCgpCiAgICAgewotICAgICAgICByZXR1cm4gV1RGOjptb3ZlKG1fcmVzdWx0KTsKKyAgICAg
ICAgcmV0dXJuIFdURk1vdmUobV9yZXN1bHQpOwogICAgIH0KIAogcHJpdmF0ZToKQEAgLTEwNjQs
NyArMTA2NCw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBzaXplX3QgU1ZHVG9PVEZG
b250Q29udmVydGVyOjphcHBlbmRLRVJOU3VidGFibGUoYm9vCiAgICAgICAgIGlmICgoZWxlbWVu
dC4qYnVpbGRLZXJuaW5nUGFpcikoa2VybmluZ1BhaXIpKQogICAgICAgICAgICAgYWRkS2Vybmlu
Z1BhaXIoa2VybmluZ0RhdGEsIGtlcm5pbmdQYWlyKTsKICAgICB9Ci0gICAgcmV0dXJuIGZpbmlz
aEFwcGVuZGluZ0tFUk5TdWJ0YWJsZShXVEY6Om1vdmUoa2VybmluZ0RhdGEpLCBjb3ZlcmFnZSk7
CisgICAgcmV0dXJuIGZpbmlzaEFwcGVuZGluZ0tFUk5TdWJ0YWJsZShXVEZNb3ZlKGtlcm5pbmdE
YXRhKSwgY292ZXJhZ2UpOwogfQogCiBzaXplX3QgU1ZHVG9PVEZGb250Q29udmVydGVyOjpmaW5p
c2hBcHBlbmRpbmdLRVJOU3VidGFibGUoVmVjdG9yPEtlcm5pbmdEYXRhPiBrZXJuaW5nRGF0YSwg
dWludDE2X3QgY292ZXJhZ2UpCkBAIC0xMjk4LDcgKzEyOTgsNyBAQCB2b2lkIFNWR1RvT1RGRm9u
dENvbnZlcnRlcjo6cHJvY2Vzc0dseXBoRWxlbWVudChjb25zdCBTVkdFbGVtZW50JiBnbHlwaE9y
TWlzc2luZwogICAgIGlmIChnbHlwaEJvdW5kaW5nQm94KQogICAgICAgICBtX21pblJpZ2h0U2lk
ZUJlYXJpbmcgPSBzdGQ6Om1pbihtX21pblJpZ2h0U2lkZUJlYXJpbmcsIGhvcml6b250YWxBZHZh
bmNlIC0gZ2x5cGhCb3VuZGluZ0JveC52YWx1ZSgpLm1heFgoKSk7CiAKLSAgICBtX2dseXBocy5h
cHBlbmQoR2x5cGhEYXRhKFdURjo6bW92ZShwYXRoKSwgZ2x5cGhFbGVtZW50LCBob3Jpem9udGFs
QWR2YW5jZSwgdmVydGljYWxBZHZhbmNlLCBnbHlwaEJvdW5kaW5nQm94LnZhbHVlT3IoRmxvYXRS
ZWN0KCkpLCBjb2RlcG9pbnRzKSk7CisgICAgbV9nbHlwaHMuYXBwZW5kKEdseXBoRGF0YShXVEZN
b3ZlKHBhdGgpLCBnbHlwaEVsZW1lbnQsIGhvcml6b250YWxBZHZhbmNlLCB2ZXJ0aWNhbEFkdmFu
Y2UsIGdseXBoQm91bmRpbmdCb3gudmFsdWVPcihGbG9hdFJlY3QoKSksIGNvZGVwb2ludHMpKTsK
IH0KIAogdm9pZCBTVkdUb09URkZvbnRDb252ZXJ0ZXI6OmFwcGVuZExpZ2F0dXJlR2x5cGhzKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcAppbmRleCAxYmQwNTliNzliNjQ4MmNkOWYw
NzU4OTZhYmNhN2M4ZDA4Yzc2ODhkLi4xMWQ2Yzk4NmUxNGYzYmM2NzIxODAyNWYyNzcyZWQwNWM5
MDU4ODM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwCkBAIC0yNjQsNyArMjY0
LDcgQEAgU1ZHRWxlbWVudCogU1ZHVXNlRWxlbWVudDo6dGFyZ2V0Q2xvbmUoKSBjb25zdAogCiBS
ZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gU1ZHVXNlRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRl
cmVyKFJlZjxSZW5kZXJTdHlsZT4mJiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikK
IHsKLSAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRh
aW5lcj4oKnRoaXMsIFdURjo6bW92ZShzdHlsZSkpOworICAgIHJldHVybiBjcmVhdGVSZW5kZXJl
cjxSZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyPigqdGhpcywgV1RGTW92ZShzdHlsZSkp
OwogfQogCiBzdGF0aWMgYm9vbCBpc0RpcmVjdFJlZmVyZW5jZShjb25zdCBTVkdFbGVtZW50JiBl
bGVtZW50KQpAQCAtNDEwLDcgKzQxMCw3IEBAIHZvaWQgU1ZHVXNlRWxlbWVudDo6Y2xvbmVUYXJn
ZXQoQ29udGFpbmVyTm9kZSYgY29udGFpbmVyLCBTVkdFbGVtZW50JiB0YXJnZXQpIGNvCiAgICAg
YXNzb2NpYXRlQ2xvbmVzV2l0aE9yaWdpbmFscyh0YXJnZXRDbG9uZS5nZXQoKSwgdGFyZ2V0KTsK
ICAgICByZW1vdmVEaXNhbGxvd2VkRWxlbWVudHNGcm9tU3VidHJlZSh0YXJnZXRDbG9uZS5nZXQo
KSk7CiAgICAgdHJhbnNmZXJTaXplQXR0cmlidXRlc1RvVGFyZ2V0Q2xvbmUodGFyZ2V0Q2xvbmUu
Z2V0KCkpOwotICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZChXVEY6Om1vdmUodGFyZ2V0Q2xvbmUp
KTsKKyAgICBjb250YWluZXIuYXBwZW5kQ2hpbGQoV1RGTW92ZSh0YXJnZXRDbG9uZSkpOwogfQog
CiBzdGF0aWMgdm9pZCBjbG9uZURhdGFBbmRDaGlsZHJlbihTVkdFbGVtZW50JiByZXBsYWNlbWVu
dENsb25lLCBTVkdFbGVtZW50JiBvcmlnaW5hbENsb25lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFw
aGljcy9TVkdJbWFnZS5jcHAKaW5kZXggYTQ0NzlmMWQ1ZWUwNTQ4MjJhOGIwNDE0OTYzMjFkNjcx
NWQ3MTJjNS4uYjAwMTczMGUyNTU3MGVjMDgxYmIxMTFkNjFjNGRkYWI0NTE4ZGU4MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCkBAIC01OSw3ICs1OSw3IEBAIFNW
R0ltYWdlOjp+U1ZHSW1hZ2UoKQogewogICAgIGlmIChtX3BhZ2UpIHsKICAgICAgICAgLy8gU3Rv
cmUgbV9wYWdlIGluIGEgbG9jYWwgdmFyaWFibGUsIGNsZWFyaW5nIG1fcGFnZSwgc28gdGhhdCBT
VkdJbWFnZUNocm9tZUNsaWVudCBrbm93cyB3ZSdyZSBkZXN0cnVjdGVkLgotICAgICAgICBzdGQ6
OnVuaXF1ZV9wdHI8UGFnZT4gY3VycmVudFBhZ2UgPSBXVEY6Om1vdmUobV9wYWdlKTsKKyAgICAg
ICAgc3RkOjp1bmlxdWVfcHRyPFBhZ2U+IGN1cnJlbnRQYWdlID0gV1RGTW92ZShtX3BhZ2UpOwog
ICAgICAgICBjdXJyZW50UGFnZS0+bWFpbkZyYW1lKCkubG9hZGVyKCkuZnJhbWVEZXRhY2hlZCgp
OyAvLyBCcmVhayBib3RoIHRoZSBsb2FkZXIgYW5kIHZpZXcgcmVmZXJlbmNlcyB0byB0aGUgZnJh
bWUKICAgICB9CiAKQEAgLTIwOCw3ICsyMDgsNyBAQCB2b2lkIFNWR0ltYWdlOjpkcmF3UGF0dGVy
bkZvckNvbnRhaW5lcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0U2l6ZQog
ICAgIGlmIChjb250ZXh0LmRyYXdMdW1pbmFuY2VNYXNrKCkpCiAgICAgICAgIGJ1ZmZlci0+Y29u
dmVydFRvTHVtaW5hbmNlTWFzaygpOwogCi0gICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9IEltYWdl
QnVmZmVyOjpzaW5rSW50b0ltYWdlKFdURjo6bW92ZShidWZmZXIpLCBVbnNjYWxlZCk7CisgICAg
UmVmUHRyPEltYWdlPiBpbWFnZSA9IEltYWdlQnVmZmVyOjpzaW5rSW50b0ltYWdlKFdURk1vdmUo
YnVmZmVyKSwgVW5zY2FsZWQpOwogICAgIGlmICghaW1hZ2UpCiAgICAgICAgIHJldHVybjsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDQzMzQ0YzhhMzRjZTljODY5OTQz
NDI1ZDgxMzkzNzBmNTMwZjY4ZjAuLjMyOWE3ZDhhMmNkNTQyOTFjYWU4N2IxYzgzZjE2ZmIwNTA2
ZWU5MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTE5ODMsNyArMTk4
Myw3IEBAIHZvaWQgSW50ZXJuYWxzOjppbnNlcnRBdXRob3JDU1MoY29uc3QgU3RyaW5nJiBjc3Ms
IEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAogICAgIGF1dG8gcGFyc2VkU2hlZXQgPSBTdHlsZVNo
ZWV0Q29udGVudHM6OmNyZWF0ZSgqZG9jdW1lbnQpOwogICAgIHBhcnNlZFNoZWV0LmdldCgpLnNl
dElzVXNlclN0eWxlU2hlZXQoZmFsc2UpOwogICAgIHBhcnNlZFNoZWV0LmdldCgpLnBhcnNlU3Ry
aW5nKGNzcyk7Ci0gICAgZG9jdW1lbnQtPmV4dGVuc2lvblN0eWxlU2hlZXRzKCkuYWRkQXV0aG9y
U3R5bGVTaGVldEZvclRlc3RpbmcoV1RGOjptb3ZlKHBhcnNlZFNoZWV0KSk7CisgICAgZG9jdW1l
bnQtPmV4dGVuc2lvblN0eWxlU2hlZXRzKCkuYWRkQXV0aG9yU3R5bGVTaGVldEZvclRlc3Rpbmco
V1RGTW92ZShwYXJzZWRTaGVldCkpOwogfQogCiB2b2lkIEludGVybmFsczo6aW5zZXJ0VXNlckNT
Uyhjb25zdCBTdHJpbmcmIGNzcywgRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0CkBAIC0xOTk3LDcg
KzE5OTcsNyBAQCB2b2lkIEludGVybmFsczo6aW5zZXJ0VXNlckNTUyhjb25zdCBTdHJpbmcmIGNz
cywgRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0CiAgICAgYXV0byBwYXJzZWRTaGVldCA9IFN0eWxl
U2hlZXRDb250ZW50czo6Y3JlYXRlKCpkb2N1bWVudCk7CiAgICAgcGFyc2VkU2hlZXQuZ2V0KCku
c2V0SXNVc2VyU3R5bGVTaGVldCh0cnVlKTsKICAgICBwYXJzZWRTaGVldC5nZXQoKS5wYXJzZVN0
cmluZyhjc3MpOwotICAgIGRvY3VtZW50LT5leHRlbnNpb25TdHlsZVNoZWV0cygpLmFkZFVzZXJT
dHlsZVNoZWV0KFdURjo6bW92ZShwYXJzZWRTaGVldCkpOworICAgIGRvY3VtZW50LT5leHRlbnNp
b25TdHlsZVNoZWV0cygpLmFkZFVzZXJTdHlsZVNoZWV0KFdURk1vdmUocGFyc2VkU2hlZXQpKTsK
IH0KIAogU3RyaW5nIEludGVybmFsczo6Y291bnRlclZhbHVlKEVsZW1lbnQqIGVsZW1lbnQpCkBA
IC0zMDY1LDcgKzMwNjUsNyBAQCB2b2lkIEludGVybmFsczo6cXVldWVNaWNyb1Rhc2soaW50IHRl
c3ROdW1iZXIpCiAgICAgICAgIGRvY3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291
cmNlOjpKUywgTWVzc2FnZUxldmVsOjpEZWJ1ZywgbWFrZVN0cmluZygiTWljcm9UYXNrICMiLCBT
dHJpbmc6Om51bWJlcih0ZXN0TnVtYmVyKSwgIiBoYXMgcnVuLiIpKTsKICAgICB9KTsKIAotICAg
IE1pY3JvdGFza1F1ZXVlOjptYWluVGhyZWFkUXVldWUoKS5hcHBlbmQoV1RGOjptb3ZlKG1pY3Jv
dGFzaykpOworICAgIE1pY3JvdGFza1F1ZXVlOjptYWluVGhyZWFkUXVldWUoKS5hcHBlbmQoV1RG
TW92ZShtaWNyb3Rhc2spKTsKIH0KIAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyR2xvYmFsU2Nv
cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29w
ZS5jcHAKaW5kZXggZmJjYjBiZTZmM2RjZWY4YmEwOGYzOWNlOGViMWNhZjUzZDk1ZDM3OS4uMTVm
MDE0ZTU4NWE0OTQwN2VkN2YwMDc5ZDY3MDE1ZDFhMDIyOTk1OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5jcHAKQEAgLTc0
LDcgKzc0LDcgQEAgdm9pZCBEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZTo6cG9zdE1lc3NhZ2Uo
UGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG0KICAgICBzdGQ6OnVuaXF1ZV9wdHI8
TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+IGNoYW5uZWxzID0gTWVzc2FnZVBvcnQ6OmRpc2VudGFu
Z2xlUG9ydHMocG9ydHMsIGVjKTsKICAgICBpZiAoZWMpCiAgICAgICAgIHJldHVybjsKLSAgICB0
aHJlYWQoKS53b3JrZXJPYmplY3RQcm94eSgpLnBvc3RNZXNzYWdlVG9Xb3JrZXJPYmplY3QobWVz
c2FnZSwgV1RGOjptb3ZlKGNoYW5uZWxzKSk7CisgICAgdGhyZWFkKCkud29ya2VyT2JqZWN0UHJv
eHkoKS5wb3N0TWVzc2FnZVRvV29ya2VyT2JqZWN0KG1lc3NhZ2UsIFdURk1vdmUoY2hhbm5lbHMp
KTsKIH0KIAogdm9pZCBEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZTo6aW1wb3J0U2NyaXB0cyhj
b25zdCBWZWN0b3I8U3RyaW5nPiYgdXJscywgRXhjZXB0aW9uQ29kZSYgZWMpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlci5jcHAKaW5kZXggY2UxMmI3NzJmYjk0YTlhNjk4NmIwMWFhZjcwYTg5NmU1NDg2
OGIwMy4uNDFmMGE1YmIxYjhlNTcwOTgxNzg5MGZkYmZiMTE1ZDY1ZjA1MWRjNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyLmNwcApAQCAtOTEsNyArOTEsNyBAQCBSZWZQdHI8V29ya2VyPiBXb3Jr
ZXI6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBTdHJpbmcm
IHVybAogICAgIHdvcmtlci0+bV9zY3JpcHRMb2FkZXIgPSBXb3JrZXJTY3JpcHRMb2FkZXI6OmNy
ZWF0ZSgpOwogICAgIHdvcmtlci0+bV9zY3JpcHRMb2FkZXItPmxvYWRBc3luY2hyb25vdXNseSgm
Y29udGV4dCwgc2NyaXB0VVJMLCBEZW55Q3Jvc3NPcmlnaW5SZXF1ZXN0cywgd29ya2VyLnB0cigp
KTsKIAotICAgIHJldHVybiBXVEY6Om1vdmUod29ya2VyKTsKKyAgICByZXR1cm4gV1RGTW92ZSh3
b3JrZXIpOwogfQogCiBXb3JrZXI6On5Xb3JrZXIoKQpAQCAtMTE2LDcgKzExNiw3IEBAIHZvaWQg
V29ya2VyOjpwb3N0TWVzc2FnZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVz
c2FnZSwgY29uc3QgTWVzc2FnCiAgICAgc3RkOjp1bmlxdWVfcHRyPE1lc3NhZ2VQb3J0Q2hhbm5l
bEFycmF5PiBjaGFubmVscyA9IE1lc3NhZ2VQb3J0OjpkaXNlbnRhbmdsZVBvcnRzKHBvcnRzLCBl
Yyk7CiAgICAgaWYgKGVjKQogICAgICAgICByZXR1cm47Ci0gICAgbV9jb250ZXh0UHJveHktPnBv
c3RNZXNzYWdlVG9Xb3JrZXJHbG9iYWxTY29wZShtZXNzYWdlLCBXVEY6Om1vdmUoY2hhbm5lbHMp
KTsKKyAgICBtX2NvbnRleHRQcm94eS0+cG9zdE1lc3NhZ2VUb1dvcmtlckdsb2JhbFNjb3BlKG1l
c3NhZ2UsIFdURk1vdmUoY2hhbm5lbHMpKTsKIH0KIAogdm9pZCBXb3JrZXI6OnRlcm1pbmF0ZSgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckV2ZW50UXVldWUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJFdmVudFF1ZXVlLmNwcAppbmRleCA3ZWI1
OGEyNmE0OGZmNzBlZmY5ZTVmNTUzZDU2ZTQwOGZiMWYyMmM2Li5iYmFiMTc5ZDRjYzQ5YWM2OWNk
ZjhhODJlMTFkNjEwNDY2NGZjN2QyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlckV2ZW50UXVldWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
RXZlbnRRdWV1ZS5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgY2xhc3MgV29ya2VyRXZlbnRRdWV1ZTo6
RXZlbnREaXNwYXRjaGVyCiB7CiBwdWJsaWM6CiAgICAgRXZlbnREaXNwYXRjaGVyKFJlZlB0cjxF
dmVudD4mJiBldmVudCwgV29ya2VyRXZlbnRRdWV1ZSYgZXZlbnRRdWV1ZSkKLSAgICAgICAgOiBt
X2V2ZW50KFdURjo6bW92ZShldmVudCkpCisgICAgICAgIDogbV9ldmVudChXVEZNb3ZlKGV2ZW50
KSkKICAgICAgICAgLCBtX2V2ZW50UXVldWUoZXZlbnRRdWV1ZSkKICAgICAgICAgLCBtX2lzQ2Fu
Y2VsbGVkKGZhbHNlKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyR2xvYmFsU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9i
YWxTY29wZS5jcHAKaW5kZXggNDJmMjEwODliMDQwZjc2YTc3ZDk1YTkzMTliYjMxNDNiYzM4YmJk
MS4uMDAyMDQwODU1ODZjZTQ5YmE4ZDFkOWIxM2IzMjQ2Yzc1NzYzOGIzZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAKQEAgLTE0NSwxMiArMTQ1LDEy
IEBAIFdvcmtlck5hdmlnYXRvciogV29ya2VyR2xvYmFsU2NvcGU6Om5hdmlnYXRvcigpIGNvbnN0
CiAKIHZvaWQgV29ya2VyR2xvYmFsU2NvcGU6OnBvc3RUYXNrKFRhc2sgdGFzaykKIHsKLSAgICB0
aHJlYWQoKS5ydW5Mb29wKCkucG9zdFRhc2soV1RGOjptb3ZlKHRhc2spKTsKKyAgICB0aHJlYWQo
KS5ydW5Mb29wKCkucG9zdFRhc2soV1RGTW92ZSh0YXNrKSk7CiB9CiAKIGludCBXb3JrZXJHbG9i
YWxTY29wZTo6c2V0VGltZW91dChzdGQ6OnVuaXF1ZV9wdHI8U2NoZWR1bGVkQWN0aW9uPiBhY3Rp
b24sIGludCB0aW1lb3V0KQogewotICAgIHJldHVybiBET01UaW1lcjo6aW5zdGFsbCgqdGhpcywg
V1RGOjptb3ZlKGFjdGlvbiksIHRpbWVvdXQsIHRydWUpOworICAgIHJldHVybiBET01UaW1lcjo6
aW5zdGFsbCgqdGhpcywgV1RGTW92ZShhY3Rpb24pLCB0aW1lb3V0LCB0cnVlKTsKIH0KIAogdm9p
ZCBXb3JrZXJHbG9iYWxTY29wZTo6Y2xlYXJUaW1lb3V0KGludCB0aW1lb3V0SWQpCkBAIC0xNjAs
NyArMTYwLDcgQEAgdm9pZCBXb3JrZXJHbG9iYWxTY29wZTo6Y2xlYXJUaW1lb3V0KGludCB0aW1l
b3V0SWQpCiAKIGludCBXb3JrZXJHbG9iYWxTY29wZTo6c2V0SW50ZXJ2YWwoc3RkOjp1bmlxdWVf
cHRyPFNjaGVkdWxlZEFjdGlvbj4gYWN0aW9uLCBpbnQgdGltZW91dCkKIHsKLSAgICByZXR1cm4g
RE9NVGltZXI6Omluc3RhbGwoKnRoaXMsIFdURjo6bW92ZShhY3Rpb24pLCB0aW1lb3V0LCBmYWxz
ZSk7CisgICAgcmV0dXJuIERPTVRpbWVyOjppbnN0YWxsKCp0aGlzLCBXVEZNb3ZlKGFjdGlvbiks
IHRpbWVvdXQsIGZhbHNlKTsKIH0KIAogdm9pZCBXb3JrZXJHbG9iYWxTY29wZTo6Y2xlYXJJbnRl
cnZhbChpbnQgdGltZW91dElkKQpAQCAtMTc5LDcgKzE3OSw3IEBAIHZvaWQgV29ya2VyR2xvYmFs
U2NvcGU6OmltcG9ydFNjcmlwdHMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHVybHMsIEV4Y2VwdGlv
bkNvZGUmCiAgICAgICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KLSAgICAgICAgY29tcGxldGVkVVJMcy5hcHBlbmQoV1RGOjptb3ZlKHVybCkp
OworICAgICAgICBjb21wbGV0ZWRVUkxzLmFwcGVuZChXVEZNb3ZlKHVybCkpOwogICAgIH0KIAog
ICAgIGZvciAoYXV0byYgdXJsIDogY29tcGxldGVkVVJMcykgewpAQCAtMjMyLDcgKzIzMiw3IEBA
IHZvaWQgV29ya2VyR2xvYmFsU2NvcGU6OmFkZE1lc3NhZ2UoTWVzc2FnZVNvdXJjZSBzb3VyY2Us
IE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29uCiAgICAgfQogCiAgICAgdGhyZWFkKCkud29ya2VyUmVw
b3J0aW5nUHJveHkoKS5wb3N0Q29uc29sZU1lc3NhZ2VUb1dvcmtlck9iamVjdChzb3VyY2UsIGxl
dmVsLCBtZXNzYWdlLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIHNvdXJjZVVSTCk7Ci0gICAg
YWRkTWVzc2FnZVRvV29ya2VyQ29uc29sZShzb3VyY2UsIGxldmVsLCBtZXNzYWdlLCBzb3VyY2VV
UkwsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgV1RGOjptb3ZlKGNhbGxTdGFjayksIHN0YXRl
LCByZXF1ZXN0SWRlbnRpZmllcik7CisgICAgYWRkTWVzc2FnZVRvV29ya2VyQ29uc29sZShzb3Vy
Y2UsIGxldmVsLCBtZXNzYWdlLCBzb3VyY2VVUkwsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwg
V1RGTW92ZShjYWxsU3RhY2spLCBzdGF0ZSwgcmVxdWVzdElkZW50aWZpZXIpOwogfQogCiB2b2lk
IFdvcmtlckdsb2JhbFNjb3BlOjphZGRNZXNzYWdlVG9Xb3JrZXJDb25zb2xlKE1lc3NhZ2VTb3Vy
Y2Ugc291cmNlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZVRleHQs
IGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkVVJMLCB1bnNpZ25lZCBzdWdnZXN0ZWRMaW5lTnVtYmVy
LCB1bnNpZ25lZCBzdWdnZXN0ZWRDb2x1bW5OdW1iZXIsIFJlZlB0cjxTY3JpcHRDYWxsU3RhY2s+
JiYgY2FsbFN0YWNrLCBKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHVuc2lnbmVkIGxvbmcgcmVxdWVz
dElkZW50aWZpZXIpCkBAIC0yNDIsMTEgKzI0MiwxMSBAQCB2b2lkIFdvcmtlckdsb2JhbFNjb3Bl
OjphZGRNZXNzYWdlVG9Xb3JrZXJDb25zb2xlKE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdl
TAogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPiBtZXNzYWdl
OwogCiAgICAgaWYgKGNhbGxTdGFjaykKLSAgICAgICAgbWVzc2FnZSA9IHN0ZDo6bWFrZV91bmlx
dWU8SW5zcGVjdG9yOjpDb25zb2xlTWVzc2FnZT4oc291cmNlLCBNZXNzYWdlVHlwZTo6TG9nLCBs
ZXZlbCwgbWVzc2FnZVRleHQsIFdURjo6bW92ZShjYWxsU3RhY2spLCByZXF1ZXN0SWRlbnRpZmll
cik7CisgICAgICAgIG1lc3NhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6Q29uc29s
ZU1lc3NhZ2U+KHNvdXJjZSwgTWVzc2FnZVR5cGU6OkxvZywgbGV2ZWwsIG1lc3NhZ2VUZXh0LCBX
VEZNb3ZlKGNhbGxTdGFjayksIHJlcXVlc3RJZGVudGlmaWVyKTsKICAgICBlbHNlCiAgICAgICAg
IG1lc3NhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KHNv
dXJjZSwgTWVzc2FnZVR5cGU6OkxvZywgbGV2ZWwsIG1lc3NhZ2VUZXh0LCBzdWdnZXN0ZWRVUkws
IHN1Z2dlc3RlZExpbmVOdW1iZXIsIHN1Z2dlc3RlZENvbHVtbk51bWJlciwgc3RhdGUsIHJlcXVl
c3RJZGVudGlmaWVyKTsKIAotICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6YWRkTWVzc2Fn
ZVRvQ29uc29sZSh0aGlzLCBXVEY6Om1vdmUobWVzc2FnZSkpOworICAgIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6YWRkTWVzc2FnZVRvQ29uc29sZSh0aGlzLCBXVEZNb3ZlKG1lc3NhZ2UpKTsK
IH0KIAogYm9vbCBXb3JrZXJHbG9iYWxTY29wZTo6aXNDb250ZXh0VGhyZWFkKCkgY29uc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3Bw
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHAKaW5kZXgg
ZjZjZjEzMDIzZjQxYWZhZDA5OGQ4Njc3YzllMGFkZWY4MTI5ZTBjMi4uODQ1NmFiYmNmZTJlOTU1
NWFhNzViOWY1ZjE1NWY5Mjc2NWMzZTk4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHAKQEAgLTkxLDcgKzkxLDcgQEAgdm9pZCBXb3JrZXJN
ZXNzYWdpbmdQcm94eTo6cG9zdE1lc3NhZ2VUb1dvcmtlck9iamVjdChQYXNzUmVmUHRyPFNlcmlh
bGl6ZWRTY3JpcHQKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBzdGQ6OnVuaXF1ZV9w
dHI8TWVzc2FnZVBvcnRBcnJheT4gcG9ydHMgPSBNZXNzYWdlUG9ydDo6ZW50YW5nbGVQb3J0cyhj
b250ZXh0LCBzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+KGNoYW5uZWxz
UHRyKSk7Ci0gICAgICAgIHdvcmtlck9iamVjdC0+ZGlzcGF0Y2hFdmVudChNZXNzYWdlRXZlbnQ6
OmNyZWF0ZShXVEY6Om1vdmUocG9ydHMpLCBtZXNzYWdlKSk7CisgICAgICAgIHdvcmtlck9iamVj
dC0+ZGlzcGF0Y2hFdmVudChNZXNzYWdlRXZlbnQ6OmNyZWF0ZShXVEZNb3ZlKHBvcnRzKSwgbWVz
c2FnZSkpOwogICAgIH0pOwogfQogCkBAIC0xMDUsMjIgKzEwNSwyMiBAQCB2b2lkIFdvcmtlck1l
c3NhZ2luZ1Byb3h5Ojpwb3N0TWVzc2FnZVRvV29ya2VyR2xvYmFsU2NvcGUoUGFzc1JlZlB0cjxT
ZXJpYWxpemVkUwogICAgICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihzY3Jp
cHRDb250ZXh0LmlzV29ya2VyR2xvYmFsU2NvcGUoKSk7CiAgICAgICAgIERlZGljYXRlZFdvcmtl
ckdsb2JhbFNjb3BlJiBjb250ZXh0ID0gc3RhdGljX2Nhc3Q8RGVkaWNhdGVkV29ya2VyR2xvYmFs
U2NvcGUmPihzY3JpcHRDb250ZXh0KTsKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPE1lc3NhZ2VQ
b3J0QXJyYXk+IHBvcnRzID0gTWVzc2FnZVBvcnQ6OmVudGFuZ2xlUG9ydHMoc2NyaXB0Q29udGV4
dCwgc3RkOjp1bmlxdWVfcHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PihjaGFubmVsc1B0cikp
OwotICAgICAgICBjb250ZXh0LmRpc3BhdGNoRXZlbnQoTWVzc2FnZUV2ZW50OjpjcmVhdGUoV1RG
Ojptb3ZlKHBvcnRzKSwgbWVzc2FnZSkpOworICAgICAgICBjb250ZXh0LmRpc3BhdGNoRXZlbnQo
TWVzc2FnZUV2ZW50OjpjcmVhdGUoV1RGTW92ZShwb3J0cyksIG1lc3NhZ2UpKTsKICAgICAgICAg
Y29udGV4dC50aHJlYWQoKS53b3JrZXJPYmplY3RQcm94eSgpLmNvbmZpcm1NZXNzYWdlRnJvbVdv
cmtlck9iamVjdChjb250ZXh0Lmhhc1BlbmRpbmdBY3Rpdml0eSgpKTsKICAgICB9KTsKIAogICAg
IGlmIChtX3dvcmtlclRocmVhZCkgewogICAgICAgICArK21fdW5jb25maXJtZWRNZXNzYWdlQ291
bnQ7Ci0gICAgICAgIG1fd29ya2VyVGhyZWFkLT5ydW5Mb29wKCkucG9zdFRhc2soV1RGOjptb3Zl
KHRhc2spKTsKKyAgICAgICAgbV93b3JrZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0VGFzayhXVEZN
b3ZlKHRhc2spKTsKICAgICB9IGVsc2UKLSAgICAgICAgbV9xdWV1ZWRFYXJseVRhc2tzLmFwcGVu
ZChzdGQ6Om1ha2VfdW5pcXVlPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+KFdURjo6bW92
ZSh0YXNrKSkpOworICAgICAgICBtX3F1ZXVlZEVhcmx5VGFza3MuYXBwZW5kKHN0ZDo6bWFrZV91
bmlxdWU8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4oV1RGTW92ZSh0YXNrKSkpOwogfQog
CiB2b2lkIFdvcmtlck1lc3NhZ2luZ1Byb3h5Ojpwb3N0VGFza1RvTG9hZGVyKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ6OlRhc2sgdGFzaykKIHsKICAgICAvLyBGSVhNRTogSW4gY2FzZSBvZiBuZXN0
ZWQgd29ya2VycywgdGhpcyBzaG91bGQgZ28gZGlyZWN0bHkgdG8gdGhlIHJvb3QgRG9jdW1lbnQg
Y29udGV4dC4KICAgICBBU1NFUlQobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5pc0RvY3VtZW50
KCkpOwotICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRhc2soV1RGOjptb3ZlKHRh
c2spKTsKKyAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnBvc3RUYXNrKFdURk1vdmUodGFz
aykpOwogfQogCiBib29sIFdvcmtlck1lc3NhZ2luZ1Byb3h5Ojpwb3N0VGFza0Zvck1vZGVUb1dv
cmtlckdsb2JhbFNjb3BlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2sgdGFzaywgY29uc3Qg
U3RyaW5nJiBtb2RlKQpAQCAtMTI5LDcgKzEyOSw3IEBAIGJvb2wgV29ya2VyTWVzc2FnaW5nUHJv
eHk6OnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoU2NyaXB0RXhlY3V0aW9uQ29u
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIEFTU0VSVChtX3dvcmtlclRocmVhZCk7Ci0g
ICAgbV93b3JrZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0VGFza0Zvck1vZGUoV1RGOjptb3ZlKHRh
c2spLCBtb2RlKTsKKyAgICBtX3dvcmtlclRocmVhZC0+cnVuTG9vcCgpLnBvc3RUYXNrRm9yTW9k
ZShXVEZNb3ZlKHRhc2spLCBtb2RlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMTc0LDkg
KzE3NCw5IEBAIHZvaWQgV29ya2VyTWVzc2FnaW5nUHJveHk6OndvcmtlclRocmVhZENyZWF0ZWQo
UGFzc1JlZlB0cjxEZWRpY2F0ZWRXb3JrZXJUaHJlYWQ+CiAgICAgICAgIG1fdW5jb25maXJtZWRN
ZXNzYWdlQ291bnQgPSBtX3F1ZXVlZEVhcmx5VGFza3Muc2l6ZSgpOwogICAgICAgICBtX3dvcmtl
clRocmVhZEhhZFBlbmRpbmdBY3Rpdml0eSA9IHRydWU7IC8vIFdvcmtlciBpbml0aWFsaXphdGlv
biBtZWFucyBhIHBlbmRpbmcgYWN0aXZpdHkuCiAKLSAgICAgICAgYXV0byBxdWV1ZWRFYXJseVRh
c2tzID0gV1RGOjptb3ZlKG1fcXVldWVkRWFybHlUYXNrcyk7CisgICAgICAgIGF1dG8gcXVldWVk
RWFybHlUYXNrcyA9IFdURk1vdmUobV9xdWV1ZWRFYXJseVRhc2tzKTsKICAgICAgICAgZm9yIChh
dXRvJiB0YXNrIDogcXVldWVkRWFybHlUYXNrcykKLSAgICAgICAgICAgIG1fd29ya2VyVGhyZWFk
LT5ydW5Mb29wKCkucG9zdFRhc2soV1RGOjptb3ZlKCp0YXNrKSk7CisgICAgICAgICAgICBtX3dv
cmtlclRocmVhZC0+cnVuTG9vcCgpLnBvc3RUYXNrKFdURk1vdmUoKnRhc2spKTsKICAgICB9CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyUnVuTG9vcC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclJ1bkxvb3AuY3BwCmluZGV4IGJiOGQwODFl
NzgyMDAzYjgyNjU4ZTNkMTFjNWM0OGUzNDQwN2I1MWUuLmU1NDY2ZGIyNDZmOTA1MzYyYWY4N2I0
YzEwMDExNTRmYjBiNWM1YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyUnVuTG9vcC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJSdW5Mb29w
LmNwcApAQCAtNDQsNyArNDQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBXb3JrZXJT
aGFyZWRUaW1lciBmaW5hbCA6IHB1YmxpYyBTaGFyZWRUaW1lciB7CiBwdWJsaWM6CiAgICAgLy8g
U2hhcmVkVGltZXIgaW50ZXJmYWNlLgotICAgIHZpcnR1YWwgdm9pZCBzZXRGaXJlZEZ1bmN0aW9u
KHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiYmIGZ1bmN0aW9uKSBvdmVycmlkZSB7IG1fc2hhcmVkVGlt
ZXJGdW5jdGlvbiA9IFdURjo6bW92ZShmdW5jdGlvbik7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0
RmlyZWRGdW5jdGlvbihzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4mJiBmdW5jdGlvbikgb3ZlcnJpZGUg
eyBtX3NoYXJlZFRpbWVyRnVuY3Rpb24gPSBXVEZNb3ZlKGZ1bmN0aW9uKTsgfQogICAgIHZpcnR1
YWwgdm9pZCBzZXRGaXJlSW50ZXJ2YWwoZG91YmxlIGludGVydmFsKSBvdmVycmlkZSB7IG1fbmV4
dEZpcmVUaW1lID0gaW50ZXJ2YWwgKyBjdXJyZW50VGltZSgpOyB9CiAgICAgdmlydHVhbCB2b2lk
IHN0b3AoKSBvdmVycmlkZSB7IG1fbmV4dEZpcmVUaW1lID0gMDsgfQogCkBAIC0yMDQsMTcgKzIw
NCwxNyBAQCB2b2lkIFdvcmtlclJ1bkxvb3A6OnRlcm1pbmF0ZSgpCiAKIHZvaWQgV29ya2VyUnVu
TG9vcDo6cG9zdFRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayB0YXNrKQogewotICAg
IHBvc3RUYXNrRm9yTW9kZShXVEY6Om1vdmUodGFzayksIGRlZmF1bHRNb2RlKCkpOworICAgIHBv
c3RUYXNrRm9yTW9kZShXVEZNb3ZlKHRhc2spLCBkZWZhdWx0TW9kZSgpKTsKIH0KIAogdm9pZCBX
b3JrZXJSdW5Mb29wOjpwb3N0VGFza0FuZFRlcm1pbmF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
OjpUYXNrIHRhc2spCiB7Ci0gICAgbV9tZXNzYWdlUXVldWUuYXBwZW5kQW5kS2lsbChzdGQ6Om1h
a2VfdW5pcXVlPFRhc2s+KFdURjo6bW92ZSh0YXNrKSwgZGVmYXVsdE1vZGUoKSkpOworICAgIG1f
bWVzc2FnZVF1ZXVlLmFwcGVuZEFuZEtpbGwoc3RkOjptYWtlX3VuaXF1ZTxUYXNrPihXVEZNb3Zl
KHRhc2spLCBkZWZhdWx0TW9kZSgpKSk7CiB9CiAKIHZvaWQgV29ya2VyUnVuTG9vcDo6cG9zdFRh
c2tGb3JNb2RlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2sgdGFzaywgY29uc3QgU3RyaW5n
JiBtb2RlKQogewotICAgIG1fbWVzc2FnZVF1ZXVlLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFRh
c2s+KFdURjo6bW92ZSh0YXNrKSwgbW9kZSkpOworICAgIG1fbWVzc2FnZVF1ZXVlLmFwcGVuZChz
dGQ6Om1ha2VfdW5pcXVlPFRhc2s+KFdURk1vdmUodGFzayksIG1vZGUpKTsKIH0KIAogdm9pZCBX
b3JrZXJSdW5Mb29wOjpUYXNrOjpwZXJmb3JtVGFzayhjb25zdCBXb3JrZXJSdW5Mb29wJiBydW5M
b29wLCBXb3JrZXJHbG9iYWxTY29wZSogY29udGV4dCkKQEAgLTIyNCw3ICsyMjQsNyBAQCB2b2lk
IFdvcmtlclJ1bkxvb3A6OlRhc2s6OnBlcmZvcm1UYXNrKGNvbnN0IFdvcmtlclJ1bkxvb3AmIHJ1
bkxvb3AsIFdvcmtlckdsb2JhbAogfQogCiBXb3JrZXJSdW5Mb29wOjpUYXNrOjpUYXNrKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2sgdGFzaywgY29uc3QgU3RyaW5nJiBtb2RlKQotICAgIDog
bV90YXNrKFdURjo6bW92ZSh0YXNrKSkKKyAgICA6IG1fdGFzayhXVEZNb3ZlKHRhc2spKQogICAg
ICwgbV9tb2RlKG1vZGUuaXNvbGF0ZWRDb3B5KCkpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS94bWwvRE9NUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9ET01QYXJzZXIu
Y3BwCmluZGV4IGU0YzY5NDdkYzdiNmI2NzU4YTU3ZDMzYmRhM2NmNmQ3ZjAwYzlmNGQuLjk5N2Zh
Y2EwZjkyMDYwYTQwZDVkYjhlMDdmMzhjMDkzYmJjZDZhZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3htbC9ET01QYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9ET01QYXJz
ZXIuY3BwCkBAIC0zOCw3ICszOCw3IEBAIFJlZlB0cjxEb2N1bWVudD4gRE9NUGFyc2VyOjpwYXJz
ZUZyb21TdHJpbmcoY29uc3QgU3RyaW5nJiBzdHIsIGNvbnN0IFN0cmluZyYgY29uCiAKICAgICBS
ZWY8RG9jdW1lbnQ+IGRvYyA9IERPTUltcGxlbWVudGF0aW9uOjpjcmVhdGVEb2N1bWVudChjb250
ZW50VHlwZSwgbnVsbHB0ciwgVVJMKCkpOwogICAgIGRvYy0+c2V0Q29udGVudChzdHIpOwotICAg
IHJldHVybiBXVEY6Om1vdmUoZG9jKTsKKyAgICByZXR1cm4gV1RGTW92ZShkb2MpOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvTmF0
aXZlWFBhdGhOU1Jlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9OYXRpdmVYUGF0aE5T
UmVzb2x2ZXIuY3BwCmluZGV4IDFlMmU3OWJjZTNlNDk4ZjZiZmJmYTI0YTgwZmEwMGYxOWZlNWE3
ZDQuLmZiMTE0NzNkNmI3YjZjNDkxMzNmYTU2NjIyMDMxMzA3NjhjMzc5YTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3htbC9OYXRpdmVYUGF0aE5TUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3htbC9OYXRpdmVYUGF0aE5TUmVzb2x2ZXIuY3BwCkBAIC0zMyw3ICszMyw3IEBA
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIE5hdGl2ZVhQYXRoTlNSZXNvbHZlcjo6TmF0aXZlWFBh
dGhOU1Jlc29sdmVyKFJlZlB0cjxOb2RlPiYmIG5vZGUpCi0gICAgOiBtX25vZGUoV1RGOjptb3Zl
KG5vZGUpKQorICAgIDogbV9ub2RlKFdURk1vdmUobm9kZSkpCiB7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3htbC9OYXRpdmVYUGF0aE5TUmVzb2x2ZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3htbC9OYXRpdmVYUGF0aE5TUmVzb2x2ZXIuaAppbmRleCA2ODcxMjI4YzMwZmIxNjlhZmNi
ODhkYTM2NDkxOWJjZWQ4MGI2ZDE0Li42NDEwMjA3MmU3NzRjNzU1YjU0NmM0NDBjYjE0MjIxMzdh
N2NlYzQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvTmF0aXZlWFBhdGhOU1Jlc29s
dmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL05hdGl2ZVhQYXRoTlNSZXNvbHZlci5oCkBA
IC0zNSw3ICszNSw3IEBAIGNsYXNzIE5vZGU7CiAKIGNsYXNzIE5hdGl2ZVhQYXRoTlNSZXNvbHZl
ciA6IHB1YmxpYyBYUGF0aE5TUmVzb2x2ZXIgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8TmF0
aXZlWFBhdGhOU1Jlc29sdmVyPiBjcmVhdGUoUmVmUHRyPE5vZGU+JiYgbm9kZSkgeyByZXR1cm4g
YWRvcHRSZWYoKm5ldyBOYXRpdmVYUGF0aE5TUmVzb2x2ZXIoV1RGOjptb3ZlKG5vZGUpKSk7IH0K
KyAgICBzdGF0aWMgUmVmPE5hdGl2ZVhQYXRoTlNSZXNvbHZlcj4gY3JlYXRlKFJlZlB0cjxOb2Rl
PiYmIG5vZGUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTmF0aXZlWFBhdGhOU1Jlc29sdmVyKFdU
Rk1vdmUobm9kZSkpKTsgfQogICAgIHZpcnR1YWwgfk5hdGl2ZVhQYXRoTlNSZXNvbHZlcigpOwog
CiAgICAgdmlydHVhbCBTdHJpbmcgbG9va3VwTmFtZXNwYWNlVVJJKGNvbnN0IFN0cmluZyYgcHJl
Zml4KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxFcnJvcnMuY3BwIGIvU291
cmNlL1dlYkNvcmUveG1sL1hNTEVycm9ycy5jcHAKaW5kZXggMDEzMDc2MDQ1NzViOTU4YmNhNzEx
ZDM3YmJmNzdmZjg3OWU4YmUzMC4uZThmNzEwYzExNzVjZWI2OWZmMDlkNDZlNjYwMDY4N2QxMGQ0
YWQwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEVycm9ycy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUveG1sL1hNTEVycm9ycy5jcHAKQEAgLTEyNCw3ICsxMjQsNyBAQCB2b2lk
IFhNTEVycm9yczo6aW5zZXJ0RXJyb3JNZXNzYWdlQmxvY2soKQogICAgICAgICBhdXRvIGJvZHkg
PSBtX2RvY3VtZW50LT5jcmVhdGVFbGVtZW50KGJvZHlUYWcsIHRydWUpOwogICAgICAgICByb290
RWxlbWVudC0+cGFyc2VyQXBwZW5kQ2hpbGQoYm9keS5jb3B5UmVmKCkpOwogICAgICAgICBtX2Rv
Y3VtZW50LT5wYXJzZXJBcHBlbmRDaGlsZChyb290RWxlbWVudC5jb3B5UmVmKCkpOwotICAgICAg
ICBkb2N1bWVudEVsZW1lbnQgPSBXVEY6Om1vdmUoYm9keSk7CisgICAgICAgIGRvY3VtZW50RWxl
bWVudCA9IFdURk1vdmUoYm9keSk7CiAgICAgfQogICAgIGVsc2UgaWYgKGRvY3VtZW50RWxlbWVu
dC0+bmFtZXNwYWNlVVJJKCkgPT0gU1ZHTmFtZXM6OnN2Z05hbWVzcGFjZVVSSSkgewogICAgICAg
ICBhdXRvIHJvb3RFbGVtZW50ID0gbV9kb2N1bWVudC0+Y3JlYXRlRWxlbWVudChodG1sVGFnLCB0
cnVlKTsKQEAgLTE0MCw5ICsxNDAsOSBAQCB2b2lkIFhNTEVycm9yczo6aW5zZXJ0RXJyb3JNZXNz
YWdlQmxvY2soKQogICAgICAgICBtX2RvY3VtZW50LT5wYXJzZXJSZW1vdmVDaGlsZCgqZG9jdW1l
bnRFbGVtZW50KTsKIAogICAgICAgICBib2R5LT5wYXJzZXJBcHBlbmRDaGlsZCgqZG9jdW1lbnRF
bGVtZW50KTsKLSAgICAgICAgbV9kb2N1bWVudC0+cGFyc2VyQXBwZW5kQ2hpbGQoV1RGOjptb3Zl
KHJvb3RFbGVtZW50KSk7CisgICAgICAgIG1fZG9jdW1lbnQtPnBhcnNlckFwcGVuZENoaWxkKFdU
Rk1vdmUocm9vdEVsZW1lbnQpKTsKIAotICAgICAgICBkb2N1bWVudEVsZW1lbnQgPSBXVEY6Om1v
dmUoYm9keSk7CisgICAgICAgIGRvY3VtZW50RWxlbWVudCA9IFdURk1vdmUoYm9keSk7CiAgICAg
fQogCiAgICAgU3RyaW5nIGVycm9yTWVzc2FnZXMgPSBtX2Vycm9yTWVzc2FnZXMudG9TdHJpbmco
KTsKQEAgLTE1NSwxNSArMTU1LDE1IEBAIHZvaWQgWE1MRXJyb3JzOjppbnNlcnRFcnJvck1lc3Nh
Z2VCbG9jaygpCiAgICAgICAgIGF1dG8gcGFyYWdyYXBoID0gbV9kb2N1bWVudC0+Y3JlYXRlRWxl
bWVudChwVGFnLCB0cnVlKTsKICAgICAgICAgcGFyYWdyYXBoLT5wYXJzZXJTZXRBdHRyaWJ1dGVz
KGF0dHJpYnV0ZXMpOwogICAgICAgICBwYXJhZ3JhcGgtPnBhcnNlckFwcGVuZENoaWxkKG1fZG9j
dW1lbnQtPmNyZWF0ZVRleHROb2RlKCJUaGlzIGRvY3VtZW50IHdhcyBjcmVhdGVkIGFzIHRoZSBy
ZXN1bHQgb2YgYW4gWFNMIHRyYW5zZm9ybWF0aW9uLiBUaGUgbGluZSBhbmQgY29sdW1uIG51bWJl
cnMgZ2l2ZW4gYXJlIGZyb20gdGhlIHRyYW5zZm9ybWVkIHJlc3VsdC4iKSk7Ci0gICAgICAgIHJl
cG9ydEVsZW1lbnQtPnBhcnNlckFwcGVuZENoaWxkKFdURjo6bW92ZShwYXJhZ3JhcGgpKTsKKyAg
ICAgICAgcmVwb3J0RWxlbWVudC0+cGFyc2VyQXBwZW5kQ2hpbGQoV1RGTW92ZShwYXJhZ3JhcGgp
KTsKICAgICB9CiAjZW5kaWYKIAogICAgIE5vZGUqIGZpcnN0Q2hpbGQgPSBkb2N1bWVudEVsZW1l
bnQtPmZpcnN0Q2hpbGQoKTsKICAgICBpZiAoZmlyc3RDaGlsZCkKLSAgICAgICAgZG9jdW1lbnRF
bGVtZW50LT5wYXJzZXJJbnNlcnRCZWZvcmUoV1RGOjptb3ZlKHJlcG9ydEVsZW1lbnQpLCAqZmly
c3RDaGlsZCk7CisgICAgICAgIGRvY3VtZW50RWxlbWVudC0+cGFyc2VySW5zZXJ0QmVmb3JlKFdU
Rk1vdmUocmVwb3J0RWxlbWVudCksICpmaXJzdENoaWxkKTsKICAgICBlbHNlCi0gICAgICAgIGRv
Y3VtZW50RWxlbWVudC0+cGFyc2VyQXBwZW5kQ2hpbGQoV1RGOjptb3ZlKHJlcG9ydEVsZW1lbnQp
KTsKKyAgICAgICAgZG9jdW1lbnRFbGVtZW50LT5wYXJzZXJBcHBlbmRDaGlsZChXVEZNb3ZlKHJl
cG9ydEVsZW1lbnQpKTsKIAogICAgIG1fZG9jdW1lbnQtPnVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCmluZGV4IDU3OWYxY2NmODU1ZjEw
OTIzMjllMjYwZmQ1NDMxMjQzNWJhYTI2NmMuLjU4ZjgyZmE5ZmJmYjAyMGY3NWU4ZGFiNGNmMTlj
M2M3ZTc3NWJiZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVz
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcApAQCAtMjQy
LDcgKzI0Miw3IEBAIEJsb2IqIFhNTEh0dHBSZXF1ZXN0OjpyZXNwb25zZUJsb2IoKQogICAgICAg
ICAgICAgVmVjdG9yPGNoYXI+IGRhdGE7CiAgICAgICAgICAgICBkYXRhLmFwcGVuZChtX2JpbmFy
eVJlc3BvbnNlQnVpbGRlci0+ZGF0YSgpLCBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlci0+c2l6ZSgp
KTsKICAgICAgICAgICAgIFN0cmluZyBub3JtYWxpemVkQ29udGVudFR5cGUgPSBCbG9iOjpub3Jt
YWxpemVkQ29udGVudFR5cGUocmVzcG9uc2VNSU1FVHlwZSgpKTsgLy8gcmVzcG9uc2VNSU1FVHlw
ZSBkZWZhdWx0cyB0byB0ZXh0L3htbCB3aGljaCBtYXkgYmUgaW5jb3JyZWN0LgotICAgICAgICAg
ICAgbV9yZXNwb25zZUJsb2IgPSBCbG9iOjpjcmVhdGUoV1RGOjptb3ZlKGRhdGEpLCBub3JtYWxp
emVkQ29udGVudFR5cGUpOworICAgICAgICAgICAgbV9yZXNwb25zZUJsb2IgPSBCbG9iOjpjcmVh
dGUoV1RGTW92ZShkYXRhKSwgbm9ybWFsaXplZENvbnRlbnRUeXBlKTsKICAgICAgICAgICAgIG1f
YmluYXJ5UmVzcG9uc2VCdWlsZGVyID0gbnVsbHB0cjsKICAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgIC8vIElmIHdlIGVycm9yZWQgb3V0IG9yIGdvdCBubyBkYXRhLCB3ZSBzdGlsbCByZXR1
cm4gYSBibG9iLCBqdXN0IGFuIGVtcHR5IG9uZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3htbC9YTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnRUaHJvdHRsZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS94bWwvWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50VGhyb3R0bGUuY3BwCmluZGV4IGMz
ZTE1MzhiNDI2Y2UzNTY1OGMwOGIzMTJkOGZjOTE5MDU5OTBhNGMuLjM2MDAwMDc4M2I4Yzc5YjVi
MjdmNmU0MzlhZWY4ZDIyOWQ3MmZmZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9Y
TUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnRUaHJvdHRsZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUveG1sL1hNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudFRocm90dGxlLmNwcApAQCAtMTMxLDcg
KzEzMSw3IEBAIHZvaWQgWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50VGhyb3R0bGU6OmZsdXNo
UHJvZ3Jlc3NFdmVudCgpCiAgICAgLy8gV2Ugc3RvcCB0aGUgdGltZXIgYXMgdGhpcyBpcyBjYWxs
ZWQgd2hlbiBubyBtb3JlIGV2ZW50cyBhcmUgc3VwcG9zZWQgdG8gb2NjdXIuCiAgICAgc3RvcCgp
OwogCi0gICAgZGlzcGF0Y2hFdmVudChXVEY6Om1vdmUoZXZlbnQpKTsKKyAgICBkaXNwYXRjaEV2
ZW50KFdURk1vdmUoZXZlbnQpKTsKIH0KIAogdm9pZCBYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZl
bnRUaHJvdHRsZTo6ZGlzcGF0Y2hEZWZlcnJlZEV2ZW50cygpCkBAIC0xNDAsOSArMTQwLDkgQEAg
dm9pZCBYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnRUaHJvdHRsZTo6ZGlzcGF0Y2hEZWZlcnJl
ZEV2ZW50cygpCiAgICAgbV9kZWZlckV2ZW50cyA9IGZhbHNlOwogCiAgICAgLy8gVGFrZSBvdmVy
IHRoZSBkZWZlcnJlZCBldmVudHMgYmVmb3JlIGRpc3BhdGNoaW5nIHRoZW0gd2hpY2ggY2FuIHBv
dGVudGlhbGx5IGFkZCBtb3JlLgotICAgIGF1dG8gZGVmZXJyZWRFdmVudHMgPSBXVEY6Om1vdmUo
bV9kZWZlcnJlZEV2ZW50cyk7CisgICAgYXV0byBkZWZlcnJlZEV2ZW50cyA9IFdURk1vdmUobV9k
ZWZlcnJlZEV2ZW50cyk7CiAKLSAgICBSZWZQdHI8RXZlbnQ+IGRlZmVycmVkUHJvZ3Jlc3NFdmVu
dCA9IFdURjo6bW92ZShtX2RlZmVycmVkUHJvZ3Jlc3NFdmVudCk7CisgICAgUmVmUHRyPEV2ZW50
PiBkZWZlcnJlZFByb2dyZXNzRXZlbnQgPSBXVEZNb3ZlKG1fZGVmZXJyZWRQcm9ncmVzc0V2ZW50
KTsKIAogICAgIGZvciAoYXV0byYgZGVmZXJyZWRFdmVudCA6IGRlZmVycmVkRXZlbnRzKQogICAg
ICAgICBkaXNwYXRjaEV2ZW50KGRlZmVycmVkRXZlbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUveG1sL1hNTFRyZWVWaWV3ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTFRyZWVW
aWV3ZXIuY3BwCmluZGV4IGE5Zjc3ZWExNjM4NDhmODUwYjYzNWM5MmI5MGNhOTQyNzcyZjg4YWEu
LjVmMTM3YWQyZmM2ZmI0NzgwYTU2MGU5NjgxYWNkMWNjODE5NTA4MWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3htbC9YTUxUcmVlVmlld2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94
bWwvWE1MVHJlZVZpZXdlci5jcHAKQEAgLTYyLDcgKzYyLDcgQEAgdm9pZCBYTUxUcmVlVmlld2Vy
Ojp0cmFuc2Zvcm1Eb2N1bWVudFRvVHJlZVZpZXcoKQogCiAgICAgU3RyaW5nIGNzc1N0cmluZyA9
IFN0cmluZ0ltcGw6OmNyZWF0ZVdpdGhvdXRDb3B5aW5nKFhNTFZpZXdlcl9jc3MsIHNpemVvZihY
TUxWaWV3ZXJfY3NzKSk7CiAgICAgUmVmPFRleHQ+IHRleHQgPSBtX2RvY3VtZW50LmNyZWF0ZVRl
eHROb2RlKGNzc1N0cmluZyk7Ci0gICAgbV9kb2N1bWVudC5nZXRFbGVtZW50QnlJZChTdHJpbmco
QVNDSUlMaXRlcmFsKCJ4bWwtdmlld2VyLXN0eWxlIikpKS0+YXBwZW5kQ2hpbGQoV1RGOjptb3Zl
KHRleHQpLCBJR05PUkVfRVhDRVBUSU9OKTsKKyAgICBtX2RvY3VtZW50LmdldEVsZW1lbnRCeUlk
KFN0cmluZyhBU0NJSUxpdGVyYWwoInhtbC12aWV3ZXItc3R5bGUiKSkpLT5hcHBlbmRDaGlsZChX
VEZNb3ZlKHRleHQpLCBJR05PUkVfRVhDRVBUSU9OKTsKICAgICBtX2RvY3VtZW50LnN0eWxlUmVz
b2x2ZXJDaGFuZ2VkKFJlY2FsY1N0eWxlSW1tZWRpYXRlbHkpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS94bWwvWFBhdGhFeHByZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3ht
bC9YUGF0aEV4cHJlc3Npb24uY3BwCmluZGV4IDMxYjk5MDZkYjEyMjJkNGZhZGNkYzI2Y2NkNWU3
ZWE0MmQyNmExMWQuLjE0NDkwOTNhZjM3YWRlMjM2MWU5MTM5MDRkMDhlNjAxNjNlZDZmZGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aEV4cHJlc3Npb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3htbC9YUGF0aEV4cHJlc3Npb24uY3BwCkBAIC00MSw3ICs0MSw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIHVzaW5nIG5hbWVzcGFjZSBYUGF0aDsKICAgICAKIGlubGluZSBY
UGF0aEV4cHJlc3Npb246OlhQYXRoRXhwcmVzc2lvbihzdGQ6OnVuaXF1ZV9wdHI8WFBhdGg6OkV4
cHJlc3Npb24+IGV4cHJlc3Npb24pCi0gICAgOiBtX3RvcEV4cHJlc3Npb24oV1RGOjptb3ZlKGV4
cHJlc3Npb24pKQorICAgIDogbV90b3BFeHByZXNzaW9uKFdURk1vdmUoZXhwcmVzc2lvbikpCiB7
CiB9CiAKQEAgLTUxLDcgKzUxLDcgQEAgUmVmUHRyPFhQYXRoRXhwcmVzc2lvbj4gWFBhdGhFeHBy
ZXNzaW9uOjpjcmVhdGVFeHByZXNzaW9uKGNvbnN0IFN0cmluZyYgZXhwcmVzc2kKICAgICBpZiAo
IXBhcnNlZEV4cHJlc3Npb24pCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgWFBhdGhFeHByZXNzaW9uKFdURjo6bW92ZShwYXJzZWRFeHByZXNzaW9u
KSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFhQYXRoRXhwcmVzc2lvbihXVEZNb3ZlKHBh
cnNlZEV4cHJlc3Npb24pKSk7CiB9CiAKIFhQYXRoRXhwcmVzc2lvbjo6flhQYXRoRXhwcmVzc2lv
bigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhFeHByZXNzaW9uTm9kZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhFeHByZXNzaW9uTm9kZS5jcHAKaW5kZXggYmNm
NDE0MTc2M2RiMzMxZjdkZTU0MTVlNThlYjMxMzY4MTAwMTdkYS4uNzUyMWJjZTM0MmRhODEzOGE0
N2Y0NDlmNzZhOTFiODc1ZWRiODY5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hQ
YXRoRXhwcmVzc2lvbk5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aEV4cHJl
c3Npb25Ob2RlLmNwcApAQCAtNDksNyArNDksNyBAQCBFeHByZXNzaW9uOjpFeHByZXNzaW9uKCkK
IHZvaWQgRXhwcmVzc2lvbjo6c2V0U3ViZXhwcmVzc2lvbnMoVmVjdG9yPHN0ZDo6dW5pcXVlX3B0
cjxFeHByZXNzaW9uPj4gc3ViZXhwcmVzc2lvbnMpCiB7CiAgICAgQVNTRVJUKG1fc3ViZXhwcmVz
c2lvbnMuaXNFbXB0eSgpKTsKLSAgICBtX3N1YmV4cHJlc3Npb25zID0gV1RGOjptb3ZlKHN1YmV4
cHJlc3Npb25zKTsKKyAgICBtX3N1YmV4cHJlc3Npb25zID0gV1RGTW92ZShzdWJleHByZXNzaW9u
cyk7CiAgICAgZm9yIChhdXRvJiBzdWJleHByZXNzaW9uIDogbV9zdWJleHByZXNzaW9ucykgewog
ICAgICAgICBtX2lzQ29udGV4dE5vZGVTZW5zaXRpdmUgfD0gc3ViZXhwcmVzc2lvbi0+bV9pc0Nv
bnRleHROb2RlU2Vuc2l0aXZlOwogICAgICAgICBtX2lzQ29udGV4dFBvc2l0aW9uU2Vuc2l0aXZl
IHw9IHN1YmV4cHJlc3Npb24tPm1faXNDb250ZXh0UG9zaXRpb25TZW5zaXRpdmU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhFeHByZXNzaW9uTm9kZS5oIGIvU291cmNlL1dl
YkNvcmUveG1sL1hQYXRoRXhwcmVzc2lvbk5vZGUuaAppbmRleCAwNTQ5YmYxM2ExYjdmOGEwNTU3
NWMxMGE1MWMxODJiNjg0YjNjYTI2Li5jNjM2NDEwOWY0NGQ0Yzg3NzUwODhiODljZjM4MGEzZWM1
OWFjMjQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhFeHByZXNzaW9uTm9k
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aEV4cHJlc3Npb25Ob2RlLmgKQEAgLTY2
LDcgKzY2LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICBtX2lzQ29udGV4dE5vZGVTZW5zaXRpdmUg
fD0gZXhwcmVzc2lvbi0+bV9pc0NvbnRleHROb2RlU2Vuc2l0aXZlOwogICAgICAgICBtX2lzQ29u
dGV4dFBvc2l0aW9uU2Vuc2l0aXZlIHw9IGV4cHJlc3Npb24tPm1faXNDb250ZXh0UG9zaXRpb25T
ZW5zaXRpdmU7CiAgICAgICAgIG1faXNDb250ZXh0U2l6ZVNlbnNpdGl2ZSB8PSBleHByZXNzaW9u
LT5tX2lzQ29udGV4dFNpemVTZW5zaXRpdmU7Ci0gICAgICAgIG1fc3ViZXhwcmVzc2lvbnMuYXBw
ZW5kKFdURjo6bW92ZShleHByZXNzaW9uKSk7CisgICAgICAgIG1fc3ViZXhwcmVzc2lvbnMuYXBw
ZW5kKFdURk1vdmUoZXhwcmVzc2lvbikpOwogICAgIH0KIAogICAgIHZvaWQgc2V0U3ViZXhwcmVz
c2lvbnMoVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPj4pOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUveG1sL1hQYXRoRnVuY3Rpb25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3ht
bC9YUGF0aEZ1bmN0aW9ucy5jcHAKaW5kZXggOTZlMWQ3YTI1NDk2MTYxYTliNTk5NDkwNzZjN2Uy
ZTE5YTQ0YTk5NC4uZDY4MjFkZTFiNzM1YjRlODk5YWRiODQ5ZmMyZmY2NmY1Nzg0NTAzOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoRnVuY3Rpb25zLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS94bWwvWFBhdGhGdW5jdGlvbnMuY3BwCkBAIC0yOTEsNyArMjkxLDcgQEAgdm9p
ZCBGdW5jdGlvbjo6c2V0QXJndW1lbnRzKGNvbnN0IFN0cmluZyYgbmFtZSwgVmVjdG9yPHN0ZDo6
dW5pcXVlX3B0cjxFeHByZXNzaW8KICAgICBpZiAobmFtZSAhPSAibGFuZyIgJiYgIWFyZ3VtZW50
cy5pc0VtcHR5KCkpCiAgICAgICAgIHNldElzQ29udGV4dE5vZGVTZW5zaXRpdmUoZmFsc2UpOwog
Ci0gICAgc2V0U3ViZXhwcmVzc2lvbnMoV1RGOjptb3ZlKGFyZ3VtZW50cykpOworICAgIHNldFN1
YmV4cHJlc3Npb25zKFdURk1vdmUoYXJndW1lbnRzKSk7CiB9CiAKIFZhbHVlIEZ1bkxhc3Q6OmV2
YWx1YXRlKCkgY29uc3QKQEAgLTM1NSw3ICszNTUsNyBAQCBWYWx1ZSBGdW5JZDo6ZXZhbHVhdGUo
KSBjb25zdAogICAgIAogICAgIHJlc3VsdC5tYXJrU29ydGVkKGZhbHNlKTsKICAgICAKLSAgICBy
ZXR1cm4gVmFsdWUoV1RGOjptb3ZlKHJlc3VsdCkpOworICAgIHJldHVybiBWYWx1ZShXVEZNb3Zl
KHJlc3VsdCkpOwogfQogCiBzdGF0aWMgaW5saW5lIFN0cmluZyBleHBhbmRlZE5hbWVMb2NhbFBh
cnQoTm9kZSogbm9kZSkKQEAgLTczNSw3ICs3MzUsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8RnVuY3Rp
b24+IEZ1bmN0aW9uOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBuYW1lLCBWZWN0b3I8c3RkOjp1bmlx
dQogewogICAgIHN0ZDo6dW5pcXVlX3B0cjxGdW5jdGlvbj4gZnVuY3Rpb24gPSBjcmVhdGUobmFt
ZSwgYXJndW1lbnRzLnNpemUoKSk7CiAgICAgaWYgKGZ1bmN0aW9uKQotICAgICAgICBmdW5jdGlv
bi0+c2V0QXJndW1lbnRzKG5hbWUsIFdURjo6bW92ZShhcmd1bWVudHMpKTsKKyAgICAgICAgZnVu
Y3Rpb24tPnNldEFyZ3VtZW50cyhuYW1lLCBXVEZNb3ZlKGFyZ3VtZW50cykpOwogICAgIHJldHVy
biBmdW5jdGlvbjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoR3Jh
bW1hci55IGIvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoR3JhbW1hci55CmluZGV4IGJlYzhiY2E5
MjQ4Y2UwYTcyYjg4Y2UyY2M2NmYyNWI0YTRjNWVmNmEuLjM1NmUxMTg4OWVkZjc3NjU4N2JmY2Fj
MTE2NGM3ZjFhNjZkMzNjOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aEdy
YW1tYXIueQorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhHcmFtbWFyLnkKQEAgLTE3MCw5
ICsxNzAsOSBAQCBTdGVwOgogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8U3RlcDo6Tm9kZVRlc3Q+
IG5vZGVUZXN0KCQxKTsKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxzdGQ6OnVuaXF1
ZV9wdHI8RXhwcmVzc2lvbj4+PiBwcmVkaWNhdGVMaXN0KCQyKTsKICAgICAgICAgaWYgKHByZWRp
Y2F0ZUxpc3QpCi0gICAgICAgICAgICAkJCA9IG5ldyBTdGVwKFN0ZXA6OkNoaWxkQXhpcywgV1RG
Ojptb3ZlKCpub2RlVGVzdCksIFdURjo6bW92ZSgqcHJlZGljYXRlTGlzdCkpOworICAgICAgICAg
ICAgJCQgPSBuZXcgU3RlcChTdGVwOjpDaGlsZEF4aXMsIFdURk1vdmUoKm5vZGVUZXN0KSwgV1RG
TW92ZSgqcHJlZGljYXRlTGlzdCkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICAkJCA9IG5l
dyBTdGVwKFN0ZXA6OkNoaWxkQXhpcywgV1RGOjptb3ZlKCpub2RlVGVzdCkpOworICAgICAgICAg
ICAgJCQgPSBuZXcgU3RlcChTdGVwOjpDaGlsZEF4aXMsIFdURk1vdmUoKm5vZGVUZXN0KSk7CiAg
ICAgfQogICAgIHwKICAgICBOQU1FVEVTVCBPcHRpb25hbFByZWRpY2F0ZUxpc3QKQEAgLTE4OCw3
ICsxODgsNyBAQCBTdGVwOgogICAgICAgICB9CiAKICAgICAgICAgaWYgKHByZWRpY2F0ZUxpc3Qp
Ci0gICAgICAgICAgICAkJCA9IG5ldyBTdGVwKFN0ZXA6OkNoaWxkQXhpcywgU3RlcDo6Tm9kZVRl
c3QoU3RlcDo6Tm9kZVRlc3Q6Ok5hbWVUZXN0LCBsb2NhbE5hbWUsIG5hbWVzcGFjZVVSSSksIFdU
Rjo6bW92ZSgqcHJlZGljYXRlTGlzdCkpOworICAgICAgICAgICAgJCQgPSBuZXcgU3RlcChTdGVw
OjpDaGlsZEF4aXMsIFN0ZXA6Ok5vZGVUZXN0KFN0ZXA6Ok5vZGVUZXN0OjpOYW1lVGVzdCwgbG9j
YWxOYW1lLCBuYW1lc3BhY2VVUkkpLCBXVEZNb3ZlKCpwcmVkaWNhdGVMaXN0KSk7CiAgICAgICAg
IGVsc2UKICAgICAgICAgICAgICQkID0gbmV3IFN0ZXAoU3RlcDo6Q2hpbGRBeGlzLCBTdGVwOjpO
b2RlVGVzdChTdGVwOjpOb2RlVGVzdDo6TmFtZVRlc3QsIGxvY2FsTmFtZSwgbmFtZXNwYWNlVVJJ
KSk7CiAgICAgfQpAQCAtMTk5LDkgKzE5OSw5IEBAIFN0ZXA6CiAgICAgICAgIHN0ZDo6dW5pcXVl
X3B0cjxWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Npb24+Pj4gcHJlZGljYXRlTGlzdCgk
Myk7CiAKICAgICAgICAgaWYgKHByZWRpY2F0ZUxpc3QpCi0gICAgICAgICAgICAkJCA9IG5ldyBT
dGVwKCQxLCBXVEY6Om1vdmUoKm5vZGVUZXN0KSwgV1RGOjptb3ZlKCpwcmVkaWNhdGVMaXN0KSk7
CisgICAgICAgICAgICAkJCA9IG5ldyBTdGVwKCQxLCBXVEZNb3ZlKCpub2RlVGVzdCksIFdURk1v
dmUoKnByZWRpY2F0ZUxpc3QpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgJCQgPSBuZXcg
U3RlcCgkMSwgV1RGOjptb3ZlKCpub2RlVGVzdCkpOworICAgICAgICAgICAgJCQgPSBuZXcgU3Rl
cCgkMSwgV1RGTW92ZSgqbm9kZVRlc3QpKTsKICAgICB9CiAgICAgfAogICAgIEF4aXNTcGVjaWZp
ZXIgTkFNRVRFU1QgT3B0aW9uYWxQcmVkaWNhdGVMaXN0CkBAIC0yMTcsNyArMjE3LDcgQEAgU3Rl
cDoKICAgICAgICAgfQogCiAgICAgICAgIGlmIChwcmVkaWNhdGVMaXN0KQotICAgICAgICAgICAg
JCQgPSBuZXcgU3RlcCgkMSwgU3RlcDo6Tm9kZVRlc3QoU3RlcDo6Tm9kZVRlc3Q6Ok5hbWVUZXN0
LCBsb2NhbE5hbWUsIG5hbWVzcGFjZVVSSSksIFdURjo6bW92ZSgqcHJlZGljYXRlTGlzdCkpOwor
ICAgICAgICAgICAgJCQgPSBuZXcgU3RlcCgkMSwgU3RlcDo6Tm9kZVRlc3QoU3RlcDo6Tm9kZVRl
c3Q6Ok5hbWVUZXN0LCBsb2NhbE5hbWUsIG5hbWVzcGFjZVVSSSksIFdURk1vdmUoKnByZWRpY2F0
ZUxpc3QpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgJCQgPSBuZXcgU3RlcCgkMSwgU3Rl
cDo6Tm9kZVRlc3QoU3RlcDo6Tm9kZVRlc3Q6Ok5hbWVUZXN0LCBsb2NhbE5hbWUsIG5hbWVzcGFj
ZVVSSSkpOwogICAgIH0KQEAgLTMyNiw3ICszMjYsNyBAQCBQcmltYXJ5RXhwcjoKICAgICBMSVRF
UkFMCiAgICAgewogICAgICAgICBTdHJpbmcgbGl0ZXJhbCA9IGFkb3B0UmVmKCQxKTsKLSAgICAg
ICAgJCQgPSBuZXcgU3RyaW5nRXhwcmVzc2lvbihXVEY6Om1vdmUobGl0ZXJhbCkpOworICAgICAg
ICAkJCA9IG5ldyBTdHJpbmdFeHByZXNzaW9uKFdURk1vdmUobGl0ZXJhbCkpOwogICAgIH0KICAg
ICB8CiAgICAgTlVNQkVSCkBAIC0zNTEsNyArMzUxLDcgQEAgRnVuY3Rpb25DYWxsOgogICAgIHsK
ICAgICAgICAgU3RyaW5nIG5hbWUgPSBhZG9wdFJlZigkMSk7CiAgICAgICAgIHN0ZDo6dW5pcXVl
X3B0cjxWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Npb24+Pj4gYXJndW1lbnRMaXN0KCQz
KTsKLSAgICAgICAgJCQgPSBYUGF0aDo6RnVuY3Rpb246OmNyZWF0ZShuYW1lLCBXVEY6Om1vdmUo
KmFyZ3VtZW50TGlzdCkpLnJlbGVhc2UoKTsKKyAgICAgICAgJCQgPSBYUGF0aDo6RnVuY3Rpb246
OmNyZWF0ZShuYW1lLCBXVEZNb3ZlKCphcmd1bWVudExpc3QpKS5yZWxlYXNlKCk7CiAgICAgICAg
IGlmICghJCQpCiAgICAgICAgICAgICBZWUFCT1JUOwogICAgIH0KQEAgLTQxMiw3ICs0MTIsNyBA
QCBGaWx0ZXJFeHByOgogICAgIFByaW1hcnlFeHByIFByZWRpY2F0ZUxpc3QKICAgICB7CiAgICAg
ICAgIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Npb24+Pj4g
cHJlZGljYXRlTGlzdCgkMik7Ci0gICAgICAgICQkID0gbmV3IEZpbHRlcihzdGQ6OnVuaXF1ZV9w
dHI8RXhwcmVzc2lvbj4oJDEpLCBXVEY6Om1vdmUoKnByZWRpY2F0ZUxpc3QpKTsKKyAgICAgICAg
JCQgPSBuZXcgRmlsdGVyKHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPigkMSksIFdURk1vdmUo
KnByZWRpY2F0ZUxpc3QpKTsKICAgICB9CiAgICAgOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS94bWwvWFBhdGhOb2RlU2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aE5vZGVT
ZXQuY3BwCmluZGV4IGMxZDBmYWZlNmU3MDZmM2E0YjBhYTU1MzIyYjhhYTkyODA2M2E3YmEuLjA5
NDljNGQ2MTk4NzA3NjI1MDA5YTYyZDk0N2M4NGQ2MjhiNDhiMzYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3htbC9YUGF0aE5vZGVTZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9Y
UGF0aE5vZGVTZXQuY3BwCkBAIC0xNzMsNyArMTczLDcgQEAgdm9pZCBOb2RlU2V0Ojpzb3J0KCkg
Y29uc3QKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbm9kZUNvdW50OyArK2kpCiAgICAg
ICAgIHNvcnRlZE5vZGVzLmFwcGVuZChwYXJlbnRNYXRyaXhbaV1bMF0pOwogICAgIAotICAgIG1f
bm9kZXMgPSBXVEY6Om1vdmUoc29ydGVkTm9kZXMpOworICAgIG1fbm9kZXMgPSBXVEZNb3ZlKHNv
cnRlZE5vZGVzKTsKICAgICBtX2lzU29ydGVkID0gdHJ1ZTsKIH0KIApAQCAtMjI1LDcgKzIyNSw3
IEBAIHZvaWQgTm9kZVNldDo6dHJhdmVyc2FsU29ydCgpIGNvbnN0CiAgICAgfQogCiAgICAgQVNT
RVJUKHNvcnRlZE5vZGVzLnNpemUoKSA9PSBub2RlQ291bnQpOwotICAgIG1fbm9kZXMgPSBXVEY6
Om1vdmUoc29ydGVkTm9kZXMpOworICAgIG1fbm9kZXMgPSBXVEZNb3ZlKHNvcnRlZE5vZGVzKTsK
ICAgICBtX2lzU29ydGVkID0gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
eG1sL1hQYXRoTm9kZVNldC5oIGIvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoTm9kZVNldC5oCmlu
ZGV4IDRkNTliZWFkNTEyNmU2ZmFmNWM0MzFiMmVjZmQyZTJjN2MxNTg4MDcuLmFmNTA1Y2U1OGRj
OGQzYTRhNGNkYjFkNzJhYTkxNzM4NzEyYTZkNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3htbC9YUGF0aE5vZGVTZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhOb2RlU2V0
LmgKQEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBwdWJsaWM6
CiAgICAgICAgICAgICBOb2RlU2V0KCkgOiBtX2lzU29ydGVkKHRydWUpLCBtX3N1YnRyZWVzQXJl
RGlzam9pbnQoZmFsc2UpIHsgfQogICAgICAgICAgICAgZXhwbGljaXQgTm9kZVNldChSZWZQdHI8
Tm9kZT4mJiBub2RlKQotICAgICAgICAgICAgICAgIDogbV9pc1NvcnRlZCh0cnVlKSwgbV9zdWJ0
cmVlc0FyZURpc2pvaW50KGZhbHNlKSwgbV9ub2RlcygxLCBXVEY6Om1vdmUobm9kZSkpCisgICAg
ICAgICAgICAgICAgOiBtX2lzU29ydGVkKHRydWUpLCBtX3N1YnRyZWVzQXJlRGlzam9pbnQoZmFs
c2UpLCBtX25vZGVzKDEsIFdURk1vdmUobm9kZSkpCiAgICAgICAgICAgICB7IH0KICAgICAgICAg
ICAgIAogICAgICAgICAgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX25vZGVzLnNp
emUoKTsgfQpAQCAtNDcsNyArNDcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAg
ICB2b2lkIGNsZWFyKCkgeyBtX25vZGVzLmNsZWFyKCk7IH0KIAogICAgICAgICAgICAgLy8gTm9k
ZVNldCBpdHNlbGYgZG9lcyBub3QgdmVyaWZ5IHRoYXQgbm9kZXMgaW4gaXQgYXJlIHVuaXF1ZS4K
LSAgICAgICAgICAgIHZvaWQgYXBwZW5kKFJlZlB0cjxOb2RlPiYmIG5vZGUpIHsgbV9ub2Rlcy5h
cHBlbmQoV1RGOjptb3ZlKG5vZGUpKTsgfQorICAgICAgICAgICAgdm9pZCBhcHBlbmQoUmVmUHRy
PE5vZGU+JiYgbm9kZSkgeyBtX25vZGVzLmFwcGVuZChXVEZNb3ZlKG5vZGUpKTsgfQogICAgICAg
ICAgICAgdm9pZCBhcHBlbmQoY29uc3QgTm9kZVNldCYgbm9kZVNldCkgeyBtX25vZGVzLmFwcGVu
ZFZlY3Rvcihub2RlU2V0Lm1fbm9kZXMpOyB9CiAKICAgICAgICAgICAgIC8vIFJldHVybnMgdGhl
IHNldCdzIGZpcnN0IG5vZGUgaW4gZG9jdW1lbnQgb3JkZXIsIG9yIG51bGxwdHIgaWYgdGhlIHNl
dCBpcyBlbXB0eS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aFBhcnNlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhQYXJzZXIuY3BwCmluZGV4IGYzZTYzYWRiMjE4
ODMzYjg3NzlhMGQ1NjA2ZmQ4OThhODgzMzJlMjUuLmMzMGU5ZmIxZjE0YWZiMTQzZDdiOTVhODgz
MTY5NGE1NzczMzhhMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aFBhcnNl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoUGFyc2VyLmNwcApAQCAtNDcyLDcg
KzQ3Miw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPiBQYXJzZXI6OnBhcnNlU3RhdGVt
ZW50KGNvbnN0IFN0cmluZyYgc3RhdGVtZW50LCBYUGF0CiAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIH0KIAotICAgIHJldHVybiBXVEY6Om1vdmUocGFyc2VyLm1fcmVzdWx0KTsKKyAgICBy
ZXR1cm4gV1RGTW92ZShwYXJzZXIubV9yZXN1bHQpOwogfQogCiB9IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3htbC9YUGF0aFBhcnNlci5oIGIvU291cmNlL1dlYkNvcmUveG1sL1hQYXRo
UGFyc2VyLmgKaW5kZXggYjI0Mzg3YjVhZjQ2YmMyMWIyMmEzZTViZmQzMTNjNDJlNzMxOTA0NS4u
ZTU1ZGRiYmI3MmZiNGYyZGFkOTUyN2EzNDBkYTRmODI1YzA4NGU0MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUveG1sL1hQYXRoUGFyc2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hQ
YXRoUGFyc2VyLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAg
ICAgICAgICBpbnQgbGV4KFlZU1RZUEUmKTsKICAgICAgICAgICAgIGJvb2wgZXhwYW5kUXVhbGlm
aWVkTmFtZShjb25zdCBTdHJpbmcmIHF1YWxpZmllZE5hbWUsIFN0cmluZyYgbG9jYWxOYW1lLCBT
dHJpbmcmIG5hbWVzcGFjZVVSSSk7Ci0gICAgICAgICAgICB2b2lkIHNldFBhcnNlUmVzdWx0KHN0
ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPiBleHByZXNzaW9uKSB7IG1fcmVzdWx0ID0gV1RGOjpt
b3ZlKGV4cHJlc3Npb24pOyB9CisgICAgICAgICAgICB2b2lkIHNldFBhcnNlUmVzdWx0KHN0ZDo6
dW5pcXVlX3B0cjxFeHByZXNzaW9uPiBleHByZXNzaW9uKSB7IG1fcmVzdWx0ID0gV1RGTW92ZShl
eHByZXNzaW9uKTsgfQogCiAgICAgICAgIHByaXZhdGU6CiAgICAgICAgICAgICBQYXJzZXIoY29u
c3QgU3RyaW5nJiwgWFBhdGhOU1Jlc29sdmVyKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS94bWwvWFBhdGhQYXRoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aFBhdGguY3BwCmlu
ZGV4IGVkMzcwMTUyNjJlNzdmNzBlM2ZkMzQ1YmQ3MTExYjA5MzgxNzliMTQuLmE3MmZjMzFjNjEy
MzNlYmVlNjAwNjFkNTdmODM4ZDE4NjIwZWUyZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3htbC9YUGF0aFBhdGguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aFBhdGguY3Bw
CkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBYUGF0aCB7
CiAgICAgICAgIAogRmlsdGVyOjpGaWx0ZXIoc3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Npb24+IGV4
cHJlc3Npb24sIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4+IHByZWRpY2F0ZXMp
Ci0gICAgOiBtX2V4cHJlc3Npb24oV1RGOjptb3ZlKGV4cHJlc3Npb24pKSwgbV9wcmVkaWNhdGVz
KFdURjo6bW92ZShwcmVkaWNhdGVzKSkKKyAgICA6IG1fZXhwcmVzc2lvbihXVEZNb3ZlKGV4cHJl
c3Npb24pKSwgbV9wcmVkaWNhdGVzKFdURk1vdmUocHJlZGljYXRlcykpCiB7CiAgICAgc2V0SXND
b250ZXh0Tm9kZVNlbnNpdGl2ZShtX2V4cHJlc3Npb24tPmlzQ29udGV4dE5vZGVTZW5zaXRpdmUo
KSk7CiAgICAgc2V0SXNDb250ZXh0UG9zaXRpb25TZW5zaXRpdmUobV9leHByZXNzaW9uLT5pc0Nv
bnRleHRQb3NpdGlvblNlbnNpdGl2ZSgpKTsKQEAgLTYzLDcgKzYzLDcgQEAgVmFsdWUgRmlsdGVy
OjpldmFsdWF0ZSgpIGNvbnN0CiAgICAgICAgICAgICBpZiAoZXZhbHVhdGVQcmVkaWNhdGUoKnBy
ZWRpY2F0ZSkpCiAgICAgICAgICAgICAgICAgbmV3Tm9kZXMuYXBwZW5kKG5vZGUuY29weVJlZigp
KTsKICAgICAgICAgfQotICAgICAgICBub2RlcyA9IFdURjo6bW92ZShuZXdOb2Rlcyk7CisgICAg
ICAgIG5vZGVzID0gV1RGTW92ZShuZXdOb2Rlcyk7CiAgICAgfQogCiAgICAgcmV0dXJuIHJlc3Vs
dDsKQEAgLTEwMCw3ICsxMDAsNyBAQCBWYWx1ZSBMb2NhdGlvblBhdGg6OmV2YWx1YXRlKCkgY29u
c3QKICAgICBldmFsdWF0ZShub2Rlcyk7CiAgICAgCiAgICAgZXZhbHVhdGlvbkNvbnRleHQgPSBi
YWNrdXBDb250ZXh0OwotICAgIHJldHVybiBWYWx1ZShXVEY6Om1vdmUobm9kZXMpKTsKKyAgICBy
ZXR1cm4gVmFsdWUoV1RGTW92ZShub2RlcykpOwogfQogCiB2b2lkIExvY2F0aW9uUGF0aDo6ZXZh
bHVhdGUoTm9kZVNldCYgbm9kZXMpIGNvbnN0CkBAIC0xMzQsNyArMTM0LDcgQEAgdm9pZCBMb2Nh
dGlvblBhdGg6OmV2YWx1YXRlKE5vZGVTZXQmIG5vZGVzKSBjb25zdAogICAgICAgICAgICAgfQog
ICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBub2RlcyA9IFdURjo6bW92ZShuZXdOb2Rlcyk7
CisgICAgICAgIG5vZGVzID0gV1RGTW92ZShuZXdOb2Rlcyk7CiAgICAgfQogCiAgICAgbm9kZXMu
bWFya1NvcnRlZChyZXN1bHRJc1NvcnRlZCk7CkBAIC0xNTAsNyArMTUwLDcgQEAgdm9pZCBMb2Nh
dGlvblBhdGg6OmFwcGVuZFN0ZXAoc3RkOjp1bmlxdWVfcHRyPFN0ZXA+IHN0ZXApCiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgfQogICAgIHN0ZXAtPm9wdGltaXplKCk7Ci0gICAgbV9zdGVwcy5h
cHBlbmQoV1RGOjptb3ZlKHN0ZXApKTsKKyAgICBtX3N0ZXBzLmFwcGVuZChXVEZNb3ZlKHN0ZXAp
KTsKIH0KIAogdm9pZCBMb2NhdGlvblBhdGg6OnByZXBlbmRTdGVwKHN0ZDo6dW5pcXVlX3B0cjxT
dGVwPiBzdGVwKQpAQCAtMTU5LDE3ICsxNTksMTcgQEAgdm9pZCBMb2NhdGlvblBhdGg6OnByZXBl
bmRTdGVwKHN0ZDo6dW5pcXVlX3B0cjxTdGVwPiBzdGVwKQogICAgICAgICBib29sIGRyb3BTZWNv
bmRTdGVwOwogICAgICAgICBvcHRpbWl6ZVN0ZXBQYWlyKCpzdGVwLCAqbV9zdGVwc1swXSwgZHJv
cFNlY29uZFN0ZXApOwogICAgICAgICBpZiAoZHJvcFNlY29uZFN0ZXApIHsKLSAgICAgICAgICAg
IG1fc3RlcHNbMF0gPSBXVEY6Om1vdmUoc3RlcCk7CisgICAgICAgICAgICBtX3N0ZXBzWzBdID0g
V1RGTW92ZShzdGVwKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KICAg
ICBzdGVwLT5vcHRpbWl6ZSgpOwotICAgIG1fc3RlcHMuaW5zZXJ0KDAsIFdURjo6bW92ZShzdGVw
KSk7CisgICAgbV9zdGVwcy5pbnNlcnQoMCwgV1RGTW92ZShzdGVwKSk7CiB9CiAKIFBhdGg6OlBh
dGgoc3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Npb24+IGZpbHRlciwgc3RkOjp1bmlxdWVfcHRyPExv
Y2F0aW9uUGF0aD4gcGF0aCkKLSAgICA6IG1fZmlsdGVyKFdURjo6bW92ZShmaWx0ZXIpKQotICAg
ICwgbV9wYXRoKFdURjo6bW92ZShwYXRoKSkKKyAgICA6IG1fZmlsdGVyKFdURk1vdmUoZmlsdGVy
KSkKKyAgICAsIG1fcGF0aChXVEZNb3ZlKHBhdGgpKQogewogICAgIHNldElzQ29udGV4dE5vZGVT
ZW5zaXRpdmUobV9maWx0ZXItPmlzQ29udGV4dE5vZGVTZW5zaXRpdmUoKSk7CiAgICAgc2V0SXND
b250ZXh0UG9zaXRpb25TZW5zaXRpdmUobV9maWx0ZXItPmlzQ29udGV4dFBvc2l0aW9uU2Vuc2l0
aXZlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoUHJlZGljYXRlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aFByZWRpY2F0ZS5jcHAKaW5kZXggZWYyMmIwZTg1
ODU3ODhjMzQ0Njg3ZDI0MzNlMWQyMTMyZjExYTBlMy4uZWU3Y2NjZGJhYWQ1ZmVhMTU1ZjA4MzZl
YTRiNjdlZWFkZGRmYjAyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoUHJl
ZGljYXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhQcmVkaWNhdGUuY3BwCkBA
IC00Nyw3ICs0Nyw3IEBAIFZhbHVlIE51bWJlcjo6ZXZhbHVhdGUoKSBjb25zdAogfQogCiBTdHJp
bmdFeHByZXNzaW9uOjpTdHJpbmdFeHByZXNzaW9uKFN0cmluZyYmIHZhbHVlKQotICAgIDogbV92
YWx1ZShXVEY6Om1vdmUodmFsdWUpKQorICAgIDogbV92YWx1ZShXVEZNb3ZlKHZhbHVlKSkKIHsK
IH0KIApAQCAtNTgsNyArNTgsNyBAQCBWYWx1ZSBTdHJpbmdFeHByZXNzaW9uOjpldmFsdWF0ZSgp
IGNvbnN0CiAKIE5lZ2F0aXZlOjpOZWdhdGl2ZShzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4g
ZXhwcmVzc2lvbikKIHsKLSAgICBhZGRTdWJleHByZXNzaW9uKFdURjo6bW92ZShleHByZXNzaW9u
KSk7CisgICAgYWRkU3ViZXhwcmVzc2lvbihXVEZNb3ZlKGV4cHJlc3Npb24pKTsKIH0KIAogVmFs
dWUgTmVnYXRpdmU6OmV2YWx1YXRlKCkgY29uc3QKQEAgLTY5LDggKzY5LDggQEAgVmFsdWUgTmVn
YXRpdmU6OmV2YWx1YXRlKCkgY29uc3QKIE51bWVyaWNPcDo6TnVtZXJpY09wKE9wY29kZSBvcGNv
ZGUsIHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPiBsaHMsIHN0ZDo6dW5pcXVlX3B0cjxFeHBy
ZXNzaW9uPiByaHMpCiAgICAgOiBtX29wY29kZShvcGNvZGUpCiB7Ci0gICAgYWRkU3ViZXhwcmVz
c2lvbihXVEY6Om1vdmUobGhzKSk7Ci0gICAgYWRkU3ViZXhwcmVzc2lvbihXVEY6Om1vdmUocmhz
KSk7CisgICAgYWRkU3ViZXhwcmVzc2lvbihXVEZNb3ZlKGxocykpOworICAgIGFkZFN1YmV4cHJl
c3Npb24oV1RGTW92ZShyaHMpKTsKIH0KIAogVmFsdWUgTnVtZXJpY09wOjpldmFsdWF0ZSgpIGNv
bnN0CkBAIC05OCw4ICs5OCw4IEBAIFZhbHVlIE51bWVyaWNPcDo6ZXZhbHVhdGUoKSBjb25zdAog
RXFUZXN0T3A6OkVxVGVzdE9wKE9wY29kZSBvcGNvZGUsIHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNz
aW9uPiBsaHMsIHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPiByaHMpCiAgICAgOiBtX29wY29k
ZShvcGNvZGUpCiB7Ci0gICAgYWRkU3ViZXhwcmVzc2lvbihXVEY6Om1vdmUobGhzKSk7Ci0gICAg
YWRkU3ViZXhwcmVzc2lvbihXVEY6Om1vdmUocmhzKSk7CisgICAgYWRkU3ViZXhwcmVzc2lvbihX
VEZNb3ZlKGxocykpOworICAgIGFkZFN1YmV4cHJlc3Npb24oV1RGTW92ZShyaHMpKTsKIH0KIAog
Ym9vbCBFcVRlc3RPcDo6Y29tcGFyZShjb25zdCBWYWx1ZSYgbGhzLCBjb25zdCBWYWx1ZSYgcmhz
KSBjb25zdApAQCAtMjA3LDggKzIwNyw4IEBAIFZhbHVlIEVxVGVzdE9wOjpldmFsdWF0ZSgpIGNv
bnN0CiBMb2dpY2FsT3A6OkxvZ2ljYWxPcChPcGNvZGUgb3Bjb2RlLCBzdGQ6OnVuaXF1ZV9wdHI8
RXhwcmVzc2lvbj4gbGhzLCBzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4gcmhzKQogICAgIDog
bV9vcGNvZGUob3Bjb2RlKQogewotICAgIGFkZFN1YmV4cHJlc3Npb24oV1RGOjptb3ZlKGxocykp
OwotICAgIGFkZFN1YmV4cHJlc3Npb24oV1RGOjptb3ZlKHJocykpOworICAgIGFkZFN1YmV4cHJl
c3Npb24oV1RGTW92ZShsaHMpKTsKKyAgICBhZGRTdWJleHByZXNzaW9uKFdURk1vdmUocmhzKSk7
CiB9CiAKIGlubGluZSBib29sIExvZ2ljYWxPcDo6c2hvcnRDaXJjdWl0T24oKSBjb25zdApAQCAt
MjI5LDggKzIyOSw4IEBAIFZhbHVlIExvZ2ljYWxPcDo6ZXZhbHVhdGUoKSBjb25zdAogCiBVbmlv
bjo6VW5pb24oc3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Npb24+IGxocywgc3RkOjp1bmlxdWVfcHRy
PEV4cHJlc3Npb24+IHJocykKIHsKLSAgICBhZGRTdWJleHByZXNzaW9uKFdURjo6bW92ZShsaHMp
KTsKLSAgICBhZGRTdWJleHByZXNzaW9uKFdURjo6bW92ZShyaHMpKTsKKyAgICBhZGRTdWJleHBy
ZXNzaW9uKFdURk1vdmUobGhzKSk7CisgICAgYWRkU3ViZXhwcmVzc2lvbihXVEZNb3ZlKHJocykp
OwogfQogCiBWYWx1ZSBVbmlvbjo6ZXZhbHVhdGUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUveG1sL1hQYXRoU3RlcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhTdGVw
LmNwcAppbmRleCA3ZDFiMThhMDM1NWYwODRiNTVmOTk3NmEzMzA1NjI4Yzk5MDliNzUxLi44ODk1
OGQyNWE4OTgxMGJhYjIxOWJlNjE1M2YxNWY2NDU0OWMzODg5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS94bWwvWFBhdGhTdGVwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhT
dGVwLmNwcApAQCAtNDIsMTQgKzQyLDE0IEBAIG5hbWVzcGFjZSBYUGF0aCB7CiAKIFN0ZXA6OlN0
ZXAoQXhpcyBheGlzLCBOb2RlVGVzdCBub2RlVGVzdCkKICAgICA6IG1fYXhpcyhheGlzKQotICAg
ICwgbV9ub2RlVGVzdChXVEY6Om1vdmUobm9kZVRlc3QpKQorICAgICwgbV9ub2RlVGVzdChXVEZN
b3ZlKG5vZGVUZXN0KSkKIHsKIH0KIAogU3RlcDo6U3RlcChBeGlzIGF4aXMsIE5vZGVUZXN0IG5v
ZGVUZXN0LCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Npb24+PiBwcmVkaWNhdGVzKQog
ICAgIDogbV9heGlzKGF4aXMpCi0gICAgLCBtX25vZGVUZXN0KFdURjo6bW92ZShub2RlVGVzdCkp
Ci0gICAgLCBtX3ByZWRpY2F0ZXMoV1RGOjptb3ZlKHByZWRpY2F0ZXMpKQorICAgICwgbV9ub2Rl
VGVzdChXVEZNb3ZlKG5vZGVUZXN0KSkKKyAgICAsIG1fcHJlZGljYXRlcyhXVEZNb3ZlKHByZWRp
Y2F0ZXMpKQogewogfQogCkBAIC02NSwxMSArNjUsMTEgQEAgdm9pZCBTdGVwOjpvcHRpbWl6ZSgp
CiAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPj4gcmVtYWluaW5nUHJlZGlj
YXRlczsKICAgICBmb3IgKGF1dG8mIHByZWRpY2F0ZSA6IG1fcHJlZGljYXRlcykgewogICAgICAg
ICBpZiAoKCFwcmVkaWNhdGVJc0NvbnRleHRQb3NpdGlvblNlbnNpdGl2ZSgqcHJlZGljYXRlKSB8
fCBtX25vZGVUZXN0Lm1fbWVyZ2VkUHJlZGljYXRlcy5pc0VtcHR5KCkpICYmICFwcmVkaWNhdGUt
PmlzQ29udGV4dFNpemVTZW5zaXRpdmUoKSAmJiByZW1haW5pbmdQcmVkaWNhdGVzLmlzRW1wdHko
KSkKLSAgICAgICAgICAgIG1fbm9kZVRlc3QubV9tZXJnZWRQcmVkaWNhdGVzLmFwcGVuZChXVEY6
Om1vdmUocHJlZGljYXRlKSk7CisgICAgICAgICAgICBtX25vZGVUZXN0Lm1fbWVyZ2VkUHJlZGlj
YXRlcy5hcHBlbmQoV1RGTW92ZShwcmVkaWNhdGUpKTsKICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgcmVtYWluaW5nUHJlZGljYXRlcy5hcHBlbmQoV1RGOjptb3ZlKHByZWRpY2F0ZSkpOworICAg
ICAgICAgICAgcmVtYWluaW5nUHJlZGljYXRlcy5hcHBlbmQoV1RGTW92ZShwcmVkaWNhdGUpKTsK
ICAgICB9Ci0gICAgbV9wcmVkaWNhdGVzID0gV1RGOjptb3ZlKHJlbWFpbmluZ1ByZWRpY2F0ZXMp
OworICAgIG1fcHJlZGljYXRlcyA9IFdURk1vdmUocmVtYWluaW5nUHJlZGljYXRlcyk7CiB9CiAK
IHZvaWQgb3B0aW1pemVTdGVwUGFpcihTdGVwJiBmaXJzdCwgU3RlcCYgc2Vjb25kLCBib29sJiBk
cm9wU2Vjb25kU3RlcCkKQEAgLTk5LDggKzk5LDggQEAgdm9pZCBvcHRpbWl6ZVN0ZXBQYWlyKFN0
ZXAmIGZpcnN0LCBTdGVwJiBzZWNvbmQsIGJvb2wmIGRyb3BTZWNvbmRTdGVwKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBmaXJzdC5tX2F4aXMgPSBTdGVwOjpEZXNjZW5kYW50QXhpczsKLSAgICBm
aXJzdC5tX25vZGVUZXN0ID0gV1RGOjptb3ZlKHNlY29uZC5tX25vZGVUZXN0KTsKLSAgICBmaXJz
dC5tX3ByZWRpY2F0ZXMgPSBXVEY6Om1vdmUoc2Vjb25kLm1fcHJlZGljYXRlcyk7CisgICAgZmly
c3QubV9ub2RlVGVzdCA9IFdURk1vdmUoc2Vjb25kLm1fbm9kZVRlc3QpOworICAgIGZpcnN0Lm1f
cHJlZGljYXRlcyA9IFdURk1vdmUoc2Vjb25kLm1fcHJlZGljYXRlcyk7CiAgICAgZmlyc3Qub3B0
aW1pemUoKTsKICAgICBkcm9wU2Vjb25kU3RlcCA9IHRydWU7CiB9CkBAIC0xNDMsNyArMTQzLDcg
QEAgdm9pZCBTdGVwOjpldmFsdWF0ZShOb2RlJiBjb250ZXh0LCBOb2RlU2V0JiBub2RlcykgY29u
c3QKICAgICAgICAgICAgICAgICBuZXdOb2Rlcy5hcHBlbmQobm9kZSk7CiAgICAgICAgIH0KIAot
ICAgICAgICBub2RlcyA9IFdURjo6bW92ZShuZXdOb2Rlcyk7CisgICAgICAgIG5vZGVzID0gV1RG
TW92ZShuZXdOb2Rlcyk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94
bWwvWFBhdGhTdGVwLmggYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhTdGVwLmgKaW5kZXggY2E3
Y2RiYzAwNGU3NmQyZTc5OTdmYmUwZjk3NzZmMzgwZDgzZDQxMC4uZWRmYzg3MzM3NzVhMzhkMjEy
N2ZjY2I0MGU3MjQ0MGYyZDU5MzI4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hQ
YXRoU3RlcC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aFN0ZXAuaApAQCAtNjUsMTcg
KzY1LDE3IEBAIHB1YmxpYzoKIAogICAgICAgICBOb2RlVGVzdChOb2RlVGVzdCYmIG90aGVyKQog
ICAgICAgICAgICAgOiBtX2tpbmQob3RoZXIubV9raW5kKQotICAgICAgICAgICAgLCBtX2RhdGEo
V1RGOjptb3ZlKG90aGVyLm1fZGF0YSkpCi0gICAgICAgICAgICAsIG1fbmFtZXNwYWNlVVJJKFdU
Rjo6bW92ZShvdGhlci5tX25hbWVzcGFjZVVSSSkpCi0gICAgICAgICAgICAsIG1fbWVyZ2VkUHJl
ZGljYXRlcyhXVEY6Om1vdmUob3RoZXIubV9tZXJnZWRQcmVkaWNhdGVzKSkKKyAgICAgICAgICAg
ICwgbV9kYXRhKFdURk1vdmUob3RoZXIubV9kYXRhKSkKKyAgICAgICAgICAgICwgbV9uYW1lc3Bh
Y2VVUkkoV1RGTW92ZShvdGhlci5tX25hbWVzcGFjZVVSSSkpCisgICAgICAgICAgICAsIG1fbWVy
Z2VkUHJlZGljYXRlcyhXVEZNb3ZlKG90aGVyLm1fbWVyZ2VkUHJlZGljYXRlcykpCiAgICAgICAg
IHsKICAgICAgICAgfQogICAgICAgICBOb2RlVGVzdCYgb3BlcmF0b3I9KE5vZGVUZXN0JiYgb3Ro
ZXIpCiAgICAgICAgIHsKICAgICAgICAgICAgIG1fa2luZCA9IG90aGVyLm1fa2luZDsKLSAgICAg
ICAgICAgIG1fZGF0YSA9IFdURjo6bW92ZShvdGhlci5tX2RhdGEpOwotICAgICAgICAgICAgbV9u
YW1lc3BhY2VVUkkgPSBXVEY6Om1vdmUob3RoZXIubV9uYW1lc3BhY2VVUkkpOwotICAgICAgICAg
ICAgbV9tZXJnZWRQcmVkaWNhdGVzID0gV1RGOjptb3ZlKG90aGVyLm1fbWVyZ2VkUHJlZGljYXRl
cyk7CisgICAgICAgICAgICBtX2RhdGEgPSBXVEZNb3ZlKG90aGVyLm1fZGF0YSk7CisgICAgICAg
ICAgICBtX25hbWVzcGFjZVVSSSA9IFdURk1vdmUob3RoZXIubV9uYW1lc3BhY2VVUkkpOworICAg
ICAgICAgICAgbV9tZXJnZWRQcmVkaWNhdGVzID0gV1RGTW92ZShvdGhlci5tX21lcmdlZFByZWRp
Y2F0ZXMpOwogICAgICAgICAgICAgcmV0dXJuICp0aGlzOwogICAgICAgICB9CiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aFZhbHVlLmggYi9Tb3VyY2UvV2ViQ29y
ZS94bWwvWFBhdGhWYWx1ZS5oCmluZGV4IDhkYmIyMzQyY2RjOGRhYjJmMTZkMTliZmFhNWJhNGYz
NTAwNTY1NmQuLjNmM2M1MWUyODk1NmZkZDJlYjU0MzJkNmI0YWFkMjZhZDQyNDIyZjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aFZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUveG1sL1hQYXRoVmFsdWUuaApAQCAtNDUsMTMgKzQ1LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgICAgIFZhbHVlKGNvbnN0IGNoYXIqIHZhbHVlKSA6IG1fdHlwZShTdHJpbmdW
YWx1ZSksIG1fZGF0YShEYXRhOjpjcmVhdGUodmFsdWUpKSB7IH0KIAogICAgICAgICAgICAgZXhw
bGljaXQgVmFsdWUoTm9kZVNldCYmIHZhbHVlKQotICAgICAgICAgICAgICAgIDogbV90eXBlKE5v
ZGVTZXRWYWx1ZSksIG1fZGF0YShEYXRhOjpjcmVhdGUoV1RGOjptb3ZlKHZhbHVlKSkpCisgICAg
ICAgICAgICAgICAgOiBtX3R5cGUoTm9kZVNldFZhbHVlKSwgbV9kYXRhKERhdGE6OmNyZWF0ZShX
VEZNb3ZlKHZhbHVlKSkpCiAgICAgICAgICAgICB7IH0KICAgICAgICAgICAgIGV4cGxpY2l0IFZh
bHVlKE5vZGUqIHZhbHVlKQogICAgICAgICAgICAgICAgIDogbV90eXBlKE5vZGVTZXRWYWx1ZSks
IG1fZGF0YShEYXRhOjpjcmVhdGUodmFsdWUpKQogICAgICAgICAgICAgeyB9CiAgICAgICAgICAg
ICBleHBsaWNpdCBWYWx1ZShSZWZQdHI8Tm9kZT4mJiB2YWx1ZSkKLSAgICAgICAgICAgICAgICA6
IG1fdHlwZShOb2RlU2V0VmFsdWUpLCBtX2RhdGEoRGF0YTo6Y3JlYXRlKFdURjo6bW92ZSh2YWx1
ZSkpKQorICAgICAgICAgICAgICAgIDogbV90eXBlKE5vZGVTZXRWYWx1ZSksIG1fZGF0YShEYXRh
OjpjcmVhdGUoV1RGTW92ZSh2YWx1ZSkpKQogICAgICAgICAgICAgeyB9CiAKICAgICAgICAgICAg
IFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQpAQCAtNzYsOCArNzYsOCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICBzdHJ1Y3QgRGF0YSA6IHB1YmxpYyBSZWZD
b3VudGVkPERhdGE+IHsKICAgICAgICAgICAgICAgICBzdGF0aWMgUmVmPERhdGE+IGNyZWF0ZSgp
IHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YSk7IH0KICAgICAgICAgICAgICAgICBzdGF0aWMg
UmVmPERhdGE+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHN0cmluZykgeyByZXR1cm4gYWRvcHRSZWYo
Km5ldyBEYXRhKHN0cmluZykpOyB9Ci0gICAgICAgICAgICAgICAgc3RhdGljIFJlZjxEYXRhPiBj
cmVhdGUoTm9kZVNldCYmIG5vZGVTZXQpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YShXVEY6
Om1vdmUobm9kZVNldCkpKTsgfQotICAgICAgICAgICAgICAgIHN0YXRpYyBSZWY8RGF0YT4gY3Jl
YXRlKFJlZlB0cjxOb2RlPiYmIG5vZGUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YShXVEY6
Om1vdmUobm9kZSkpKTsgfQorICAgICAgICAgICAgICAgIHN0YXRpYyBSZWY8RGF0YT4gY3JlYXRl
KE5vZGVTZXQmJiBub2RlU2V0KSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGEoV1RGTW92ZShu
b2RlU2V0KSkpOyB9CisgICAgICAgICAgICAgICAgc3RhdGljIFJlZjxEYXRhPiBjcmVhdGUoUmVm
UHRyPE5vZGU+JiYgbm9kZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhKFdURk1vdmUobm9k
ZSkpKTsgfQogCiAgICAgICAgICAgICAgICAgU3RyaW5nIHN0cmluZzsKICAgICAgICAgICAgICAg
ICBOb2RlU2V0IG5vZGVTZXQ7CkBAIC04OCwxMCArODgsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICAgICAgICAgICAgICA6IHN0cmluZyhzdHJpbmcpCiAgICAgICAgICAgICAgICAg
eyB9CiAgICAgICAgICAgICAgICAgZXhwbGljaXQgRGF0YShOb2RlU2V0JiYgbm9kZVNldCkKLSAg
ICAgICAgICAgICAgICAgICAgOiBub2RlU2V0KFdURjo6bW92ZShub2RlU2V0KSkKKyAgICAgICAg
ICAgICAgICAgICAgOiBub2RlU2V0KFdURk1vdmUobm9kZVNldCkpCiAgICAgICAgICAgICAgICAg
eyB9CiAgICAgICAgICAgICAgICAgZXhwbGljaXQgRGF0YShSZWZQdHI8Tm9kZT4mJiBub2RlKQot
ICAgICAgICAgICAgICAgICAgICA6IG5vZGVTZXQoV1RGOjptb3ZlKG5vZGUpKQorICAgICAgICAg
ICAgICAgICAgICA6IG5vZGVTZXQoV1RGTW92ZShub2RlKSkKICAgICAgICAgICAgICAgICB7IH0K
ICAgICAgICAgICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJv
Y2Vzc29yLmggYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3Nvci5oCmluZGV4IDQ4YjI3
ODA2MTNlMDY4YWQ4MzM4MzA0N2FjNTU5MDJkOTJmOTQxMDcuLmNmZmQxYzQ1ZDU1ODg0MTc2YjY2
M2I0NzhlZjdjZTEyMmYwYWJlYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xU
UHJvY2Vzc29yLmgKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3IuaApAQCAt
NDQsNyArNDQsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxYU0xUUHJvY2Vzc29yPiBjcmVh
dGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFhTTFRQcm9jZXNzb3IpOyB9CiAgICAgflhTTFRQ
cm9jZXNzb3IoKTsKIAotICAgIHZvaWQgc2V0WFNMU3R5bGVTaGVldChSZWZQdHI8WFNMU3R5bGVT
aGVldD4mJiBzdHlsZVNoZWV0KSB7IG1fc3R5bGVzaGVldCA9IFdURjo6bW92ZShzdHlsZVNoZWV0
KTsgfQorICAgIHZvaWQgc2V0WFNMU3R5bGVTaGVldChSZWZQdHI8WFNMU3R5bGVTaGVldD4mJiBz
dHlsZVNoZWV0KSB7IG1fc3R5bGVzaGVldCA9IFdURk1vdmUoc3R5bGVTaGVldCk7IH0KICAgICBi
b29sIHRyYW5zZm9ybVRvU3RyaW5nKE5vZGUmIHNvdXJjZSwgU3RyaW5nJiByZXN1bHRNSU1FVHlw
ZSwgU3RyaW5nJiByZXN1bHRTdHJpbmcsIFN0cmluZyYgcmVzdWx0RW5jb2RpbmcpOwogICAgIFJl
ZjxEb2N1bWVudD4gY3JlYXRlRG9jdW1lbnRGcm9tU291cmNlKGNvbnN0IFN0cmluZyYgc291cmNl
LCBjb25zdCBTdHJpbmcmIHNvdXJjZUVuY29kaW5nLCBjb25zdCBTdHJpbmcmIHNvdXJjZU1JTUVU
eXBlLCBOb2RlKiBzb3VyY2VOb2RlLCBGcmFtZSogZnJhbWUpOwogICAgIApAQCAtNTIsNyArNTIs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBpbXBvcnRTdHlsZXNoZWV0KFJlZlB0cjxOb2RlPiYmIHN0
eWxlKQogICAgIHsKICAgICAgICAgaWYgKHN0eWxlKQotICAgICAgICAgICAgbV9zdHlsZXNoZWV0
Um9vdE5vZGUgPSBXVEY6Om1vdmUoc3R5bGUpOworICAgICAgICAgICAgbV9zdHlsZXNoZWV0Um9v
dE5vZGUgPSBXVEZNb3ZlKHN0eWxlKTsKICAgICB9CiAgICAgUmVmUHRyPERvY3VtZW50RnJhZ21l
bnQ+IHRyYW5zZm9ybVRvRnJhZ21lbnQoTm9kZSogc291cmNlLCBEb2N1bWVudCogb3VwdXREb2Mp
OwogICAgIFJlZlB0cjxEb2N1bWVudD4gdHJhbnNmb3JtVG9Eb2N1bWVudChOb2RlKiBzb3VyY2Up
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNwcApp
bmRleCBlZjRjYjQxYjRhODcxNTBmMjI3ZDE2MjJkZWNjZjg0NjkzNTE0MjAyLi4zZmQ3ZGJiZWU5
NzFhYjIxMzdlNDlkY2MzN2MxN2Y5MDVkNmRmODE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94
bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNwcApAQCAtMTA3LDcgKzEwNyw3IEBAIHZvaWQg
WE1MRG9jdW1lbnRQYXJzZXI6Omluc2VydChjb25zdCBTZWdtZW50ZWRTdHJpbmcmKQogCiB2b2lk
IFhNTERvY3VtZW50UGFyc2VyOjphcHBlbmQoUmVmUHRyPFN0cmluZ0ltcGw+JiYgaW5wdXRTb3Vy
Y2UpCiB7Ci0gICAgU2VnbWVudGVkU3RyaW5nIHNvdXJjZShXVEY6Om1vdmUoaW5wdXRTb3VyY2Up
KTsKKyAgICBTZWdtZW50ZWRTdHJpbmcgc291cmNlKFdURk1vdmUoaW5wdXRTb3VyY2UpKTsKICAg
ICBpZiAobV9zYXdYU0xUcmFuc2Zvcm0gfHwgIW1fc2F3Rmlyc3RFbGVtZW50KQogICAgICAgICBt
X29yaWdpbmFsU291cmNlRm9yVHJhbnNmb3JtLmFwcGVuZChzb3VyY2UpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAK
aW5kZXggYzQwOTYwY2I2ODY1ZjcwNmRjYWQ3ZWM3MDM3NzRhZTA4MTU1ODE0Ni4uMGU3N2VhYzRk
YWQzMGMwZmRkYjg4ZTdlMzM1OTFmOWUxMThmNjRiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcApAQCAtMTI4LDcg
KzEyOCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGNhbGxiYWNrLT5hdHRyaWJ1dGVzW2kgKiA1
ICsgNF0gPSBjYWxsYmFjay0+YXR0cmlidXRlc1tpICogNSArIDNdICsgbGVuOwogICAgICAgICB9
CiAKLSAgICAgICAgbV9jYWxsYmFja3MuYXBwZW5kKFdURjo6bW92ZShjYWxsYmFjaykpOworICAg
ICAgICBtX2NhbGxiYWNrcy5hcHBlbmQoV1RGTW92ZShjYWxsYmFjaykpOwogICAgIH0KIAogICAg
IHZvaWQgYXBwZW5kRW5kRWxlbWVudE5TQ2FsbGJhY2soKQpAQCAtMTQzLDcgKzE0Myw3IEBAIHB1
YmxpYzoKICAgICAgICAgY2FsbGJhY2stPnMgPSB4bWxTdHJuZHVwKHMsIGxlbik7CiAgICAgICAg
IGNhbGxiYWNrLT5sZW4gPSBsZW47CiAKLSAgICAgICAgbV9jYWxsYmFja3MuYXBwZW5kKFdURjo6
bW92ZShjYWxsYmFjaykpOworICAgICAgICBtX2NhbGxiYWNrcy5hcHBlbmQoV1RGTW92ZShjYWxs
YmFjaykpOwogICAgIH0KIAogICAgIHZvaWQgYXBwZW5kUHJvY2Vzc2luZ0luc3RydWN0aW9uQ2Fs
bGJhY2soY29uc3QgeG1sQ2hhciogdGFyZ2V0LCBjb25zdCB4bWxDaGFyKiBkYXRhKQpAQCAtMTUz
LDcgKzE1Myw3IEBAIHB1YmxpYzoKICAgICAgICAgY2FsbGJhY2stPnRhcmdldCA9IHhtbFN0cmR1
cCh0YXJnZXQpOwogICAgICAgICBjYWxsYmFjay0+ZGF0YSA9IHhtbFN0cmR1cChkYXRhKTsKIAot
ICAgICAgICBtX2NhbGxiYWNrcy5hcHBlbmQoV1RGOjptb3ZlKGNhbGxiYWNrKSk7CisgICAgICAg
IG1fY2FsbGJhY2tzLmFwcGVuZChXVEZNb3ZlKGNhbGxiYWNrKSk7CiAgICAgfQogCiAgICAgdm9p
ZCBhcHBlbmRDREFUQUJsb2NrQ2FsbGJhY2soY29uc3QgeG1sQ2hhciogcywgaW50IGxlbikKQEAg
LTE2Myw3ICsxNjMsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNhbGxiYWNrLT5zID0geG1sU3RybmR1
cChzLCBsZW4pOwogICAgICAgICBjYWxsYmFjay0+bGVuID0gbGVuOwogCi0gICAgICAgIG1fY2Fs
bGJhY2tzLmFwcGVuZChXVEY6Om1vdmUoY2FsbGJhY2spKTsKKyAgICAgICAgbV9jYWxsYmFja3Mu
YXBwZW5kKFdURk1vdmUoY2FsbGJhY2spKTsKICAgICB9CiAKICAgICB2b2lkIGFwcGVuZENvbW1l
bnRDYWxsYmFjayhjb25zdCB4bWxDaGFyKiBzKQpAQCAtMTcyLDcgKzE3Miw3IEBAIHB1YmxpYzoK
IAogICAgICAgICBjYWxsYmFjay0+cyA9IHhtbFN0cmR1cChzKTsKIAotICAgICAgICBtX2NhbGxi
YWNrcy5hcHBlbmQoV1RGOjptb3ZlKGNhbGxiYWNrKSk7CisgICAgICAgIG1fY2FsbGJhY2tzLmFw
cGVuZChXVEZNb3ZlKGNhbGxiYWNrKSk7CiAgICAgfQogCiAgICAgdm9pZCBhcHBlbmRJbnRlcm5h
bFN1YnNldENhbGxiYWNrKGNvbnN0IHhtbENoYXIqIG5hbWUsIGNvbnN0IHhtbENoYXIqIGV4dGVy
bmFsSUQsIGNvbnN0IHhtbENoYXIqIHN5c3RlbUlEKQpAQCAtMTgzLDcgKzE4Myw3IEBAIHB1Ymxp
YzoKICAgICAgICAgY2FsbGJhY2stPmV4dGVybmFsSUQgPSB4bWxTdHJkdXAoZXh0ZXJuYWxJRCk7
CiAgICAgICAgIGNhbGxiYWNrLT5zeXN0ZW1JRCA9IHhtbFN0cmR1cChzeXN0ZW1JRCk7CiAKLSAg
ICAgICAgbV9jYWxsYmFja3MuYXBwZW5kKFdURjo6bW92ZShjYWxsYmFjaykpOworICAgICAgICBt
X2NhbGxiYWNrcy5hcHBlbmQoV1RGTW92ZShjYWxsYmFjaykpOwogICAgIH0KIAogICAgIHZvaWQg
YXBwZW5kRXJyb3JDYWxsYmFjayhYTUxFcnJvcnM6OkVycm9yVHlwZSB0eXBlLCBjb25zdCB4bWxD
aGFyKiBtZXNzYWdlLCBPcmRpbmFsTnVtYmVyIGxpbmVOdW1iZXIsIE9yZGluYWxOdW1iZXIgY29s
dW1uTnVtYmVyKQpAQCAtMTk1LDcgKzE5NSw3IEBAIHB1YmxpYzoKICAgICAgICAgY2FsbGJhY2st
PmxpbmVOdW1iZXIgPSBsaW5lTnVtYmVyOwogICAgICAgICBjYWxsYmFjay0+Y29sdW1uTnVtYmVy
ID0gY29sdW1uTnVtYmVyOwogCi0gICAgICAgIG1fY2FsbGJhY2tzLmFwcGVuZChXVEY6Om1vdmUo
Y2FsbGJhY2spKTsKKyAgICAgICAgbV9jYWxsYmFja3MuYXBwZW5kKFdURk1vdmUoY2FsbGJhY2sp
KTsKICAgICB9CiAKICAgICB2b2lkIGNhbGxBbmRSZW1vdmVGaXJzdENhbGxiYWNrKFhNTERvY3Vt
ZW50UGFyc2VyKiBwYXJzZXIpCkBAIC0zNjQsNyArMzY0LDcgQEAgY2xhc3MgT2Zmc2V0QnVmZmVy
IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBPZmZzZXRCdWZm
ZXIoVmVjdG9yPGNoYXI+IGJ1ZmZlcikKLSAgICAgICAgOiBtX2J1ZmZlcihXVEY6Om1vdmUoYnVm
ZmVyKSkKKyAgICAgICAgOiBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpCiAgICAgICAgICwgbV9j
dXJyZW50T2Zmc2V0KDApCiAgICAgewogICAgIH0KQEAgLTQ3Myw3ICs0NzMsNyBAQCBzdGF0aWMg
dm9pZCogb3BlbkZ1bmMoY29uc3QgY2hhciogdXJpKQogICAgIFZlY3RvcjxjaGFyPiBidWZmZXI7
CiAgICAgaWYgKGRhdGEpCiAgICAgICAgIGJ1ZmZlci5hcHBlbmQoZGF0YS0+ZGF0YSgpLCBkYXRh
LT5zaXplKCkpOwotICAgIHJldHVybiBuZXcgT2Zmc2V0QnVmZmVyKFdURjo6bW92ZShidWZmZXIp
KTsKKyAgICByZXR1cm4gbmV3IE9mZnNldEJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpOwogfQogCiBz
dGF0aWMgaW50IHJlYWRGdW5jKHZvaWQqIGNvbnRleHQsIGNoYXIqIGJ1ZmZlciwgaW50IGxlbikK
QEAgLTEwMzIsNyArMTAzMiw3IEBAIHZvaWQgWE1MRG9jdW1lbnRQYXJzZXI6OmNkYXRhQmxvY2so
Y29uc3QgeG1sQ2hhciogcywgaW50IGxlbikKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byBu
ZXdOb2RlID0gQ0RBVEFTZWN0aW9uOjpjcmVhdGUobV9jdXJyZW50Tm9kZS0+ZG9jdW1lbnQoKSwg
dG9TdHJpbmcocywgbGVuKSk7Ci0gICAgbV9jdXJyZW50Tm9kZS0+cGFyc2VyQXBwZW5kQ2hpbGQo
V1RGOjptb3ZlKG5ld05vZGUpKTsKKyAgICBtX2N1cnJlbnROb2RlLT5wYXJzZXJBcHBlbmRDaGls
ZChXVEZNb3ZlKG5ld05vZGUpKTsKIH0KIAogdm9pZCBYTUxEb2N1bWVudFBhcnNlcjo6Y29tbWVu
dChjb25zdCB4bWxDaGFyKiBzKQpAQCAtMTA0OSw3ICsxMDQ5LDcgQEAgdm9pZCBYTUxEb2N1bWVu
dFBhcnNlcjo6Y29tbWVudChjb25zdCB4bWxDaGFyKiBzKQogICAgICAgICByZXR1cm47CiAKICAg
ICBhdXRvIG5ld05vZGUgPSBDb21tZW50OjpjcmVhdGUobV9jdXJyZW50Tm9kZS0+ZG9jdW1lbnQo
KSwgdG9TdHJpbmcocykpOwotICAgIG1fY3VycmVudE5vZGUtPnBhcnNlckFwcGVuZENoaWxkKFdU
Rjo6bW92ZShuZXdOb2RlKSk7CisgICAgbV9jdXJyZW50Tm9kZS0+cGFyc2VyQXBwZW5kQ2hpbGQo
V1RGTW92ZShuZXdOb2RlKSk7CiB9CiAKIGVudW0gU3RhbmRhbG9uZUluZm8gewpAQCAtMTU1OCw3
ICsxNTU4LDcgQEAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gcGFyc2VBdHRyaWJ1dGVzKGNvbnN0
IFN0cmluZyYgc3RyaW5nLCBib29sJiBhdHRyc09LKQogICAgIHhtbFBhcnNlQ2h1bmsocGFyc2Vy
LT5jb250ZXh0KCksIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KFN0cmluZ1ZpZXcocGFy
c2VTdHJpbmcpLnVwY29udmVydGVkQ2hhcmFjdGVycygpLmdldCgpKSwgcGFyc2VTdHJpbmcubGVu
Z3RoKCkgKiBzaXplb2YoVUNoYXIpLCAxKTsKIAogICAgIGF0dHJzT0sgPSBzdGF0ZS5nb3RBdHRy
aWJ1dGVzOwotICAgIHJldHVybiBXVEY6Om1vdmUoc3RhdGUuYXR0cmlidXRlcyk7CisgICAgcmV0
dXJuIFdURk1vdmUoc3RhdGUuYXR0cmlidXRlcyk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwCmluZGV4IDNiNWE5ODM0NjcxZWUyYTU4
ODdlNzhiODJlMzA5MmY4MjY5Mzk4YTIuLjdkODVjMWMwZDFmMGU5ZDgzYzk5MWViZjk0NGQ4M2Rk
YTlmNDIwNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZS9TdG9yYWdlTmFtZXNw
YWNlSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJ
bXBsLmNwcApAQCAtMTA5LDcgKzEwOSw3IEBAIFJlZlB0cjxTdG9yYWdlQXJlYT4gU3RvcmFnZU5h
bWVzcGFjZUltcGw6OnN0b3JhZ2VBcmVhKFJlZlB0cjxTZWN1cml0eU9yaWdpbj4mJiBvCiAgICAg
ICAgIHJldHVybiBzdG9yYWdlQXJlYTsKIAogICAgIHN0b3JhZ2VBcmVhID0gU3RvcmFnZUFyZWFJ
bXBsOjpjcmVhdGUobV9zdG9yYWdlVHlwZSwgb3JpZ2luLmNvcHlSZWYoKSwgbV9zeW5jTWFuYWdl
ciwgbV9xdW90YSk7Ci0gICAgbV9zdG9yYWdlQXJlYU1hcC5zZXQoV1RGOjptb3ZlKG9yaWdpbiks
IHN0b3JhZ2VBcmVhKTsKKyAgICBtX3N0b3JhZ2VBcmVhTWFwLnNldChXVEZNb3ZlKG9yaWdpbiks
IHN0b3JhZ2VBcmVhKTsKICAgICByZXR1cm4gc3RvcmFnZUFyZWE7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkZpeGVkUG9zaXRpb25Db250ZW50
Lm1tIGIvU291cmNlL1dlYktpdC9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViRml4ZWRQb3NpdGlvbkNv
bnRlbnQubW0KaW5kZXggZDUxOGI1NWI3OTMyYWM2ZjY1NDI0YTNkMDA4MjVkZjE5NDYyNjFkMC4u
MjFlNWZhMmMzZmEyOTQyMWE2YmU5NDY4YzRhMzFlM2NmMjk3ZGVkYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViRml4ZWRQb3NpdGlvbkNvbnRlbnQubW0K
KysrIGIvU291cmNlL1dlYktpdC9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViRml4ZWRQb3NpdGlvbkNv
bnRlbnQubW0KQEAgLTE4Miw5ICsxODIsOSBAQCAtICh2b2lkKXNldFZpZXdwb3J0Q29uc3RyYWlu
ZWRMYXllcnM6KFdURjo6SGFzaE1hcDxDQUxheWVyICosIHN0ZDo6dW5pcXVlX3B0cjxXZQogICAg
ICAgICBhdXRvIGxheWVyRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8Vmlld3BvcnRDb25zdHJhaW5l
ZExheWVyRGF0YT4oKTsKIAogICAgICAgICBsYXllckRhdGEtPm1fZW5jbG9zaW5nQWNjZWxlcmF0
ZWRTY3JvbGxMYXllciA9IHN0aWNreUNvbnRhaW5lcnMuZ2V0KGxheWVyKTsKLSAgICAgICAgbGF5
ZXJEYXRhLT5tX3ZpZXdwb3J0Q29uc3RyYWludHMgPSBXVEY6Om1vdmUobGF5ZXJBbmRDb25zdHJh
aW50cy52YWx1ZSk7CisgICAgICAgIGxheWVyRGF0YS0+bV92aWV3cG9ydENvbnN0cmFpbnRzID0g
V1RGTW92ZShsYXllckFuZENvbnN0cmFpbnRzLnZhbHVlKTsKIAotICAgICAgICBfcHJpdmF0ZS0+
bV92aWV3cG9ydENvbnN0cmFpbmVkTGF5ZXJzLnNldChsYXllciwgV1RGOjptb3ZlKGxheWVyRGF0
YSkpOworICAgICAgICBfcHJpdmF0ZS0+bV92aWV3cG9ydENvbnN0cmFpbmVkTGF5ZXJzLnNldChs
YXllciwgV1RGTW92ZShsYXllckRhdGEpKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudElPUy5tbSBiL1Nv
dXJjZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudElPUy5tbQpp
bmRleCA5OTk0ZTM5MzU0MGYxOGYzODZkMGI1ZWM0NDk2OWNhOWUyMzhlODZiLi5kZDFkZWU3ZmQ3
YjlkYzk2OWM0N2JmYTFhNjgyOWY0MTYwN2ZhNmQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRJT1MubW0KKysrIGIvU291cmNl
L1dlYktpdC9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50SU9TLm1tCkBAIC0x
MTMsNyArMTEzLDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6OmRpZFNldFNlYXJjaGluZ0Zv
ck5vZGUoYm9vbCBlbmFibGVkKQogI3ByYWdtYSBtYXJrIFdlYkluc3BlY3RvckZyb250ZW5kQ2xp
ZW50IEltcGxlbWVudGF0aW9uCiAKIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpXZWJJbnNw
ZWN0b3JGcm9udGVuZENsaWVudChXZWJWaWV3KiBpbnNwZWN0ZWRXZWJWaWV3LCBXZWJJbnNwZWN0
b3JXaW5kb3dDb250cm9sbGVyKiBmcm9udGVuZFdpbmRvd0NvbnRyb2xsZXIsIEluc3BlY3RvckNv
bnRyb2xsZXIqIGluc3BlY3RlZFBhZ2VDb250cm9sbGVyLCBQYWdlKiBmcm9udGVuZFBhZ2UsIHN0
ZDo6dW5pcXVlX3B0cjxTZXR0aW5ncz4gc2V0dGluZ3MpCi0gICAgOiBJbnNwZWN0b3JGcm9udGVu
ZENsaWVudExvY2FsKGluc3BlY3RlZFBhZ2VDb250cm9sbGVyLCBmcm9udGVuZFBhZ2UsIFdURjo6
bW92ZShzZXR0aW5ncykpCisgICAgOiBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsKGluc3Bl
Y3RlZFBhZ2VDb250cm9sbGVyLCBmcm9udGVuZFBhZ2UsIFdURk1vdmUoc2V0dGluZ3MpKQogewog
ICAgIC8vIGlPUyBkb2VzIG5vdCBoYXZlIGEgbG9jYWwgaW5zcGVjdG9yLCB0aGlzIHNob3VsZCBu
b3QgYmUgcmVhY2hlZC4KICAgICBub3RJbXBsZW1lbnRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9tYWMvSGlzdG9yeS9XZWJIaXN0b3J5SXRlbS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFj
L0hpc3RvcnkvV2ViSGlzdG9yeUl0ZW0ubW0KaW5kZXggM2Y1N2UzNmZlMDhlMWIzYmU1OTA5YzJl
NzU4MTVkMDkyZmMyZWU3OC4uZDVhNTczNzdhMTIwZDIxZDlmZjEyZTI4ODRkODkzNTk2N2VjY2Fh
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvSGlzdG9yeS9XZWJIaXN0b3J5SXRlbS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9IaXN0b3J5L1dlYkhpc3RvcnlJdGVtLm1tCkBAIC0z
NTMsNyArMzUzLDcgQEAgLSAoaWQpaW5pdEZyb21EaWN0aW9uYXJ5UmVwcmVzZW50YXRpb246KE5T
RGljdGlvbmFyeSAqKWRpY3QKICAgICAgICAgICAgIHJlZGlyZWN0VVJMc1ZlY3Rvci0+dW5jaGVj
a2VkQXBwZW5kKChOU1N0cmluZyAqKXJlZGlyZWN0VVJMKTsKICAgICAgICAgfQogCi0gICAgICAg
IGNvcmUoX3ByaXZhdGUpLT5zZXRSZWRpcmVjdFVSTHMoV1RGOjptb3ZlKHJlZGlyZWN0VVJMc1Zl
Y3RvcikpOworICAgICAgICBjb3JlKF9wcml2YXRlKS0+c2V0UmVkaXJlY3RVUkxzKFdURk1vdmUo
cmVkaXJlY3RVUkxzVmVjdG9yKSk7CiAgICAgfQogCiAgICAgTlNBcnJheSAqY2hpbGREaWN0cyA9
IFtkaWN0IG9iamVjdEZvcktleTpjaGlsZHJlbktleV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Ib3N0ZWROZXRzY2FwZVBsdWdpblN0cmVhbS5tbSBiL1Nv
dXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL0hvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFt
Lm1tCmluZGV4IGMxNjZlZDAwMjMyNmYyNzBhODE5NzU4YTQyYmI4OTc5M2UzMWYxYjcuLjhkZjBj
ZGNkMzNiNzBlOGI0M2ViMWI0NTIxMGI2M2FiMzBhNWI0OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL0hvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFtLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL0hvc3RlZE5ldHNjYXBlUGx1Z2lu
U3RyZWFtLm1tCkBAIC0xMzQsNyArMTM0LDcgQEAgdm9pZCBIb3N0ZWROZXRzY2FwZVBsdWdpblN0
cmVhbTo6ZGlkRmluaXNoTG9hZGluZyhXZWJDb3JlOjpOZXRzY2FwZVBsdWdJblN0cmVhbUwKIHZv
aWQgSG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJlYW06OndpbGxTZW5kUmVxdWVzdChOZXRzY2FwZVBs
dWdJblN0cmVhbUxvYWRlciosIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYmKT4mJiBjYWxsYmFjaykKIHsKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIG5vdGlmeSB0aGUg
cGx1Zy1pbiB3aXRoIE5QUF9VUkxSZWRpcmVjdE5vdGlmeSBoZXJlLgotICAgIGNhbGxiYWNrKFdU
Rjo6bW92ZShyZXF1ZXN0KSk7CisgICAgY2FsbGJhY2soV1RGTW92ZShyZXF1ZXN0KSk7CiB9CiAK
IHZvaWQgSG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJlYW06OmRpZFJlY2VpdmVSZXNwb25zZShOZXRz
Y2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQ
bHVnaW5JbnN0YW5jZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9O
ZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkuaAppbmRleCAwZGIyNTJiYjYxZTJjN2U3MDAyZjkw
MmVkZmNkZTQ4MGExMzkxZTRhLi42MzJjMWE3NThhNjdmNTBiNjRhMjkyMzQ3YWI3MzIwOTgwZTRh
MzIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2Fw
ZVBsdWdpbkluc3RhbmNlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hv
c3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkuaApAQCAtMjUxLDcgKzI1MSw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIHNldEN1cnJlbnRSZXBseSh1aW50MzJfdCByZXF1ZXN0SUQsIHN0ZDo6
dW5pcXVlX3B0cjxSZXBseT4gcmVwbHkpCiAgICAgewogICAgICAgICBBU1NFUlQoIW1fcmVwbGll
cy5jb250YWlucyhyZXF1ZXN0SUQpKTsKLSAgICAgICAgbV9yZXBsaWVzLmFkZChyZXF1ZXN0SUQs
IFdURjo6bW92ZShyZXBseSkpOworICAgICAgICBtX3JlcGxpZXMuYWRkKHJlcXVlc3RJRCwgV1RG
TW92ZShyZXBseSkpOwogICAgIH0KICAgICAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5TdHJl
YW0ubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luU3RyZWFt
Lm1tCmluZGV4IDQxYjQ4MTdhMGVjZWNhZjI2MmEyYWY0MDMxMTY1NWVmNGM5MWRmNTYuLjkyZjg5
OTAxMjdkNDA5YTE3NDNhN2NkNjFkYTM3NTJlNzljNjM2MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0ubW0KKysrIGIvU291cmNl
L1dlYktpdC9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblN0cmVhbS5tbQpAQCAtMzAzLDcg
KzMwMyw3IEBAIHZvaWQgV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW06OnN0b3AoKQogdm9pZCBXZWJO
ZXRzY2FwZVBsdWdpblN0cmVhbTo6d2lsbFNlbmRSZXF1ZXN0KE5ldHNjYXBlUGx1Z0luU3RyZWFt
TG9hZGVyKiwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNh
bGxiYWNrKQogewogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgbm90aWZ5IHRoZSBwbHVnLWluIHdp
dGggTlBQX1VSTFJlZGlyZWN0Tm90aWZ5IGhlcmUuCi0gICAgY2FsbGJhY2soV1RGOjptb3ZlKHJl
cXVlc3QpKTsKKyAgICBjYWxsYmFjayhXVEZNb3ZlKHJlcXVlc3QpKTsKIH0KIAogdm9pZCBXZWJO
ZXRzY2FwZVBsdWdpblN0cmVhbTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKE5ldHNjYXBlUGx1Z0luU3Ry
ZWFtTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmlldy5tbSBiL1Nv
dXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCmluZGV4IGZj
ZmFiZDIyZWRkMDMyMmFkNzZhYWQ4ZWU0ZTZiOTU1Y2RiNjM4YzIuLmIzM2ZjZjBmZjVhMTM2M2Rk
ZjUyZTkzNWIxZjllNTI2MDA5NjZhNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1Bs
dWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1Bs
dWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCkBAIC0yMTU0LDcgKzIxNTQsNyBAQCAtICh1
aW50MzJfdClzY2hlZHVsZVRpbWVyV2l0aEludGVydmFsOih1aW50MzJfdClpbnRlcnZhbCByZXBl
YXQ6KE5QQm9vbClyZXBlYXQgdAogICAgIGlmIChfc2hvdWxkRmlyZVRpbWVycykKICAgICAgICAg
dGltZXItPnN0YXJ0KF9pc0NvbXBsZXRlbHlPYnNjdXJlZCk7CiAgICAgCi0gICAgKnNsb3QgPSBX
VEY6Om1vdmUodGltZXIpOworICAgICpzbG90ID0gV1RGTW92ZSh0aW1lcik7CiAKICAgICByZXR1
cm4gdGltZXJJRDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkNvbnRleHRNZW51Q2xpZW50Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQubW0KaW5kZXggYzRhZmRkNzFjODE2MTgzMzBmYTc1
NWM4ODE2Y2FkNjg3MjIxZTcwNi4uM2NmOTU5ODBkMGI0Mjg0MDAxMTljNTZhNGEyZGJmMmNjMTc5
MGYwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29u
dGV4dE1lbnVDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViQ29udGV4dE1lbnVDbGllbnQubW0KQEAgLTIyMCw3ICsyMjAsNyBAQCBSZXRhaW5QdHI8TlNJ
bWFnZT4gV2ViQ29udGV4dE1lbnVDbGllbnQ6OmltYWdlRm9yQ3VycmVudFNoYXJpbmdTZXJ2aWNl
UGlja2VySXRlbQogICAgIGZyYW1lVmlldy0+ZnJhbWUoKS5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rp
b24ob2xkU2VsZWN0aW9uKTsKICAgICBmcmFtZVZpZXctPnNldFBhaW50QmVoYXZpb3Iob2xkUGFp
bnRCZWhhdmlvcik7CiAKLSAgICBSZWZQdHI8SW1hZ2U+IGltYWdlID0gSW1hZ2VCdWZmZXI6OnNp
bmtJbnRvSW1hZ2UoV1RGOjptb3ZlKGJ1ZmZlcikpOworICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2Ug
PSBJbWFnZUJ1ZmZlcjo6c2lua0ludG9JbWFnZShXVEZNb3ZlKGJ1ZmZlcikpOwogICAgIGlmICgh
aW1hZ2UpCiAgICAgICAgIHJldHVybiBuaWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tIGIvU291cmNlL1dlYktp
dC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KaW5kZXggZDJlYWY5
NDM1OTNkOTk3YzAzYjdiNjA3NzE2ZGI1MTgyNWM5Y2RjOC4uMGZjMjc0M2RmZjMwZmY5OTU3MTVl
Mjc1Y2E2NDQ4NTgzNDA1OTgyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KQEAgLTg3Myw3ICs4NzMsNyBA
QCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvclJlc3Bv
bnNlKGNvbnN0IFJlc291cmNlUmVzcG9ucwogICAgICAgICAgICAgICAgICAgICAgICAgZGVjaWRl
UG9saWN5Rm9yTUlNRVR5cGU6cmVzcG9uc2UubWltZVR5cGUoKQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Q6cmVxdWVzdC5uc1VSTFJlcXVlc3QoVXBkYXRl
SFRUUEJvZHkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFt
ZTptX3dlYkZyYW1lLmdldCgpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjaXNp
b25MaXN0ZW5lcjpzZXRVcFBvbGljeUxpc3RlbmVyKFdURjo6bW92ZShmdW5jdGlvbikpLmdldCgp
XTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNpc2lvbkxpc3RlbmVyOnNldFVw
UG9saWN5TGlzdGVuZXIoV1RGTW92ZShmdW5jdGlvbikpLmdldCgpXTsKIH0KIAogCkBAIC05MDUs
NyArOTA1LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xp
Y3lGb3JOZXdXaW5kb3dBY3Rpb24oY29uc3QgTmF2aWdhdGkKICAgICAgICAgICAgIGRlY2lkZVBv
bGljeUZvck5ld1dpbmRvd0FjdGlvbjphY3Rpb25EaWN0aW9uYXJ5KGFjdGlvbiwgZm9ybVN0YXRl
KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0OnJlcXVlc3QubnNV
UkxSZXF1ZXN0KFVwZGF0ZUhUVFBCb2R5KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bmV3RnJhbWVOYW1lOmZyYW1lTmFtZQotICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNpc2lv
bkxpc3RlbmVyOnNldFVwUG9saWN5TGlzdGVuZXIoV1RGOjptb3ZlKGZ1bmN0aW9uKSwgdHJ5QXBw
TGluayA/IChOU1VSTCAqKXJlcXVlc3QudXJsKCkgOiBuaWwpLmdldCgpXTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgZGVjaXNpb25MaXN0ZW5lcjpzZXRVcFBvbGljeUxpc3RlbmVyKFdURk1v
dmUoZnVuY3Rpb24pLCB0cnlBcHBMaW5rID8gKE5TVVJMICopcmVxdWVzdC51cmwoKSA6IG5pbCku
Z2V0KCldOwogfQogCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBv
bGljeUZvck5hdmlnYXRpb25BY3Rpb24oY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgYWN0aW9uLCBj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPiBmb3Jt
U3RhdGUsIEZyYW1lUG9saWN5RnVuY3Rpb24gZnVuY3Rpb24pCkBAIC05MTcsNyArOTE3LDcgQEAg
dm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0
aW9uQWN0aW9uKGNvbnN0IE5hdmlnYXQKICAgICAgICAgICAgICAgICBkZWNpZGVQb2xpY3lGb3JO
YXZpZ2F0aW9uQWN0aW9uOmFjdGlvbkRpY3Rpb25hcnkoYWN0aW9uLCBmb3JtU3RhdGUpCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdDpyZXF1ZXN0Lm5zVVJM
UmVxdWVzdChVcGRhdGVIVFRQQm9keSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGZyYW1lOm1fd2ViRnJhbWUuZ2V0KCkKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkZWNpc2lvbkxpc3RlbmVyOnNldFVwUG9saWN5TGlzdGVuZXIoV1RGOjptb3ZlKGZ1
bmN0aW9uKSwgdHJ5QXBwTGluayA/IChOU1VSTCAqKXJlcXVlc3QudXJsKCkgOiBuaWwpLmdldCgp
XTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNpc2lvbkxpc3RlbmVyOnNldFVw
UG9saWN5TGlzdGVuZXIoV1RGTW92ZShmdW5jdGlvbiksIHRyeUFwcExpbmsgPyAoTlNVUkwgKily
ZXF1ZXN0LnVybCgpIDogbmlsKS5nZXQoKV07CiB9CiAKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OmNhbmNlbFBvbGljeUNoZWNrKCkKQEAgLTk2Myw3ICs5NjMsNyBAQCB2b2lkIFdlYkZyYW1l
TG9hZGVyQ2xpZW50OjpkaXNwYXRjaFdpbGxTdWJtaXRGb3JtKFBhc3NSZWZQdHI8Rm9ybVN0YXRl
PiBmb3JtU3RhdAogICAgIH0KIAogICAgIE5TRGljdGlvbmFyeSAqdmFsdWVzID0gbWFrZUZvcm1G
aWVsZFZhbHVlc0RpY3Rpb25hcnkoZm9ybVN0YXRlLmdldCgpKTsKLSAgICBDYWxsRm9ybURlbGVn
YXRlKGdldFdlYlZpZXcobV93ZWJGcmFtZS5nZXQoKSksIEBzZWxlY3RvcihmcmFtZTpzb3VyY2VG
cmFtZTp3aWxsU3VibWl0Rm9ybTp3aXRoVmFsdWVzOnN1Ym1pc3Npb25MaXN0ZW5lcjopLCBtX3dl
YkZyYW1lLmdldCgpLCBraXQoZm9ybVN0YXRlLT5zb3VyY2VEb2N1bWVudCgpLT5mcmFtZSgpKSwg
a2l0KGZvcm1TdGF0ZS0+Zm9ybSgpKSwgdmFsdWVzLCBzZXRVcFBvbGljeUxpc3RlbmVyKFdURjo6
bW92ZShmdW5jdGlvbikpLmdldCgpKTsKKyAgICBDYWxsRm9ybURlbGVnYXRlKGdldFdlYlZpZXco
bV93ZWJGcmFtZS5nZXQoKSksIEBzZWxlY3RvcihmcmFtZTpzb3VyY2VGcmFtZTp3aWxsU3VibWl0
Rm9ybTp3aXRoVmFsdWVzOnN1Ym1pc3Npb25MaXN0ZW5lcjopLCBtX3dlYkZyYW1lLmdldCgpLCBr
aXQoZm9ybVN0YXRlLT5zb3VyY2VEb2N1bWVudCgpLT5mcmFtZSgpKSwga2l0KGZvcm1TdGF0ZS0+
Zm9ybSgpKSwgdmFsdWVzLCBzZXRVcFBvbGljeUxpc3RlbmVyKFdURk1vdmUoZnVuY3Rpb24pKS5n
ZXQoKSk7CiB9CiAKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnJldmVydFRvUHJvdmlzaW9u
YWxTdGF0ZShEb2N1bWVudExvYWRlciogbG9hZGVyKQpAQCAtMTM0MCw3ICsxMzQwLDcgQEAgUmVm
PERvY3VtZW50TG9hZGVyPiBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlRG9jdW1lbnRMb2Fk
ZXIoY29uc3QgUmVzb3VyY2VSZXEKICAgICBsb2FkZXItPnNldERhdGFTb3VyY2UoZGF0YVNvdXJj
ZSwgZ2V0V2ViVmlldyhtX3dlYkZyYW1lLmdldCgpKSk7CiAgICAgW2RhdGFTb3VyY2UgcmVsZWFz
ZV07CiAKLSAgICByZXR1cm4gV1RGOjptb3ZlKGxvYWRlcik7CisgICAgcmV0dXJuIFdURk1vdmUo
bG9hZGVyKTsKIH0KIAogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6c2V0VGl0bGUoY29uc3Qg
U3RyaW5nV2l0aERpcmVjdGlvbiYgdGl0bGUsIGNvbnN0IFVSTCYgdXJsKQpAQCAtMjI4NSw3ICsy
Mjg1LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlkQ3JlYXRlUXVpY2tMb29rSGFu
ZGxlKFdlYkNvcmU6OlF1aWNrTG9va0hhbmRsZSYgaGEKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxU
RVJJTkcpCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpjb250ZW50RmlsdGVyRGlkQmxvY2tM
b2FkKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciB1bmJsb2NrSGFuZGxlcikK
IHsKLSAgICBjb3JlKG1fd2ViRnJhbWUuZ2V0KCkpLT5sb2FkZXIoKS5wb2xpY3lDaGVja2VyKCku
c2V0Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyKFdURjo6bW92ZSh1bmJsb2NrSGFuZGxlcikp
OworICAgIGNvcmUobV93ZWJGcmFtZS5nZXQoKSktPmxvYWRlcigpLnBvbGljeUNoZWNrZXIoKS5z
ZXRDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIoV1RGTW92ZSh1bmJsb2NrSGFuZGxlcikpOwog
fQogI2VuZGlmCiAKQEAgLTIzMTIsNyArMjMxMiw3IEBAIC0gKGlkKWluaXRXaXRoRnJhbWU6KEZy
YW1lKilmcmFtZSBwb2xpY3lGdW5jdGlvbjooRnJhbWVQb2xpY3lGdW5jdGlvbilwb2xpY3lGdW5j
CiAgICAgICAgIHJldHVybiBuaWw7CiAKICAgICBfZnJhbWUgPSBmcmFtZTsKLSAgICBfcG9saWN5
RnVuY3Rpb24gPSBXVEY6Om1vdmUocG9saWN5RnVuY3Rpb24pOworICAgIF9wb2xpY3lGdW5jdGlv
biA9IFdURk1vdmUocG9saWN5RnVuY3Rpb24pOwogCiAgICAgcmV0dXJuIHNlbGY7CiB9CkBAIC0y
MzQ5LDcgKzIzNDksNyBAQCAtICh2b2lkKXJlY2VpdmVkUG9saWN5RGVjaXNpb246KFBvbGljeUFj
dGlvbilhY3Rpb24KICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm47CiAKLSAgICBGcmFt
ZVBvbGljeUZ1bmN0aW9uIHBvbGljeUZ1bmN0aW9uID0gV1RGOjptb3ZlKF9wb2xpY3lGdW5jdGlv
bik7CisgICAgRnJhbWVQb2xpY3lGdW5jdGlvbiBwb2xpY3lGdW5jdGlvbiA9IFdURk1vdmUoX3Bv
bGljeUZ1bmN0aW9uKTsKICAgICBfcG9saWN5RnVuY3Rpb24gPSBudWxscHRyOwogCiAgICAgQVNT
RVJUKHBvbGljeUZ1bmN0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5tbQppbmRleCBhNGQ0OWEzNzFjODg1MjEyZjE2
MTY4MmRiN2I4NDU3OTM0N2Q1MTViLi4zMTIwZTI2ZWUxMTg4ZDNlNjY5ZGM0ZWFmNTFjMGI2MDRl
Zjk0ZTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJ
bnNwZWN0b3JDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViSW5zcGVjdG9yQ2xpZW50Lm1tCkBAIC0xNzQsNyArMTc0LDcgQEAgdm9pZCBXZWJJbnNwZWN0
b3JDbGllbnQ6OnJlbGVhc2VGcm9udGVuZCgpCiAKIAogV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGll
bnQ6OldlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50KFdlYlZpZXcqIGluc3BlY3RlZFdlYlZpZXcs
IFdlYkluc3BlY3RvcldpbmRvd0NvbnRyb2xsZXIqIGZyb250ZW5kV2luZG93Q29udHJvbGxlciwg
SW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdGVkUGFnZUNvbnRyb2xsZXIsIFBhZ2UqIGZyb250
ZW5kUGFnZSwgc3RkOjp1bmlxdWVfcHRyPFNldHRpbmdzPiBzZXR0aW5ncykKLSAgICA6IEluc3Bl
Y3RvckZyb250ZW5kQ2xpZW50TG9jYWwoaW5zcGVjdGVkUGFnZUNvbnRyb2xsZXIsIGZyb250ZW5k
UGFnZSwgV1RGOjptb3ZlKHNldHRpbmdzKSkKKyAgICA6IEluc3BlY3RvckZyb250ZW5kQ2xpZW50
TG9jYWwoaW5zcGVjdGVkUGFnZUNvbnRyb2xsZXIsIGZyb250ZW5kUGFnZSwgV1RGTW92ZShzZXR0
aW5ncykpCiAgICAgLCBtX2luc3BlY3RlZFdlYlZpZXcoaW5zcGVjdGVkV2ViVmlldykKICAgICAs
IG1fZnJvbnRlbmRXaW5kb3dDb250cm9sbGVyKGZyb250ZW5kV2luZG93Q29udHJvbGxlcikKIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViQXJjaGl2ZS5tbSBiL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViQXJjaGl2ZS5tbQppbmRleCA2YjYzNTYzNTdhNjVm
YjA4ZTIwMDVkMTc0MmQ5NGZlZDU1OTg3OTc1Li4xNThlNmZhYjBiN2UzMDlmOTZjMmI1YWZmZmQz
ZjdjNjRjOWYwNmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkFy
Y2hpdmUubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJBcmNoaXZlLm1tCkBA
IC0xODUsNyArMTg1LDcgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoTWFpblJlc291cmNlOihX
ZWJSZXNvdXJjZSAqKW1haW5SZXNvdXJjZSBzdWJyZXNvdXJjZXM6KE4KICAgICBmb3IgKFdlYkFy
Y2hpdmUgKnN1YmZyYW1lQXJjaGl2ZSBpbiBzdWJmcmFtZUFyY2hpdmVzKQogICAgICAgICBjb3Jl
QXJjaGl2ZXMuYXBwZW5kKFtzdWJmcmFtZUFyY2hpdmUtPl9wcml2YXRlIGNvcmVBcmNoaXZlXSk7
CiAKLSAgICBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gY29yZUFyY2hpdmUgPSBMZWdhY3lXZWJB
cmNoaXZlOjpjcmVhdGUoY29yZU1haW5SZXNvdXJjZS5yZWxlYXNlKCksIFdURjo6bW92ZShjb3Jl
UmVzb3VyY2VzKSwgV1RGOjptb3ZlKGNvcmVBcmNoaXZlcykpOworICAgIFJlZlB0cjxMZWdhY3lX
ZWJBcmNoaXZlPiBjb3JlQXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShjb3JlTWFp
blJlc291cmNlLnJlbGVhc2UoKSwgV1RGTW92ZShjb3JlUmVzb3VyY2VzKSwgV1RGTW92ZShjb3Jl
QXJjaGl2ZXMpKTsKICAgICBpZiAoIWNvcmVBcmNoaXZlKSB7CiAgICAgICAgIFtzZWxmIHJlbGVh
c2VdOwogICAgICAgICByZXR1cm4gbmlsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMv
V2ViVmlldy9XZWJGcmFtZS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUu
bW0KaW5kZXggMTcyMzU0MjcwNGIyZjJkNjgwOGNmMTE2YjRjNmNkZWEwMDA0NzZlOC4uYmVjMmMx
NjkyOWNkZGVkMDNiZTUyZjM2NzBjOTg2ZTY2NGYxODM5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJW
aWV3L1dlYkZyYW1lLm1tCkBAIC04OTAsNyArODkwLDcgQEAgLSAoRE9NRG9jdW1lbnRGcmFnbWVu
dCAqKV9kb2N1bWVudEZyYWdtZW50V2l0aE5vZGVzQXNQYXJhZ3JhcGhzOihOU0FycmF5ICopbm9k
ZXMKICAgICBmb3IgKGF1dG8qIG5vZGUgOiBub2Rlc1ZlY3RvcikgewogICAgICAgICBSZWY8RWxl
bWVudD4gZWxlbWVudCA9IGNyZWF0ZURlZmF1bHRQYXJhZ3JhcGhFbGVtZW50KCpkb2N1bWVudCk7
CiAgICAgICAgIGVsZW1lbnQtPmFwcGVuZENoaWxkKCpub2RlKTsKLSAgICAgICAgZnJhZ21lbnQt
PmFwcGVuZENoaWxkKFdURjo6bW92ZShlbGVtZW50KSk7CisgICAgICAgIGZyYWdtZW50LT5hcHBl
bmRDaGlsZChXVEZNb3ZlKGVsZW1lbnQpKTsKICAgICB9CiAKICAgICByZXR1cm4ga2l0KGZyYWdt
ZW50LnJlbGVhc2UoKS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJW
aWV3L1dlYkhUTUxWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmll
dy5tbQppbmRleCA2YzdlZDQxYThlZTcwZDZmMWE0MTkwZDc2NGQyOWQ4ZDUxMDc1MjBkLi45MDFm
NGFlZjZlNDcxYjE4Yjg4MzQ5NTgxOTJmM2FhMjE2NjNiNmY4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KQEAgLTU0MzksNyArNTQzOSw3IEBAIC0gKHZvaWQpX2Fw
cGx5U3R5bGVUb1NlbGVjdGlvbjooRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbiAqKXN0eWxlIHdpdGhV
bmRvQWN0aW9uOihFCiAtICh2b2lkKV9hcHBseUVkaXRpbmdTdHlsZVRvU2VsZWN0aW9uOihSZWY8
RWRpdGluZ1N0eWxlPiYmKWVkaXRpbmdTdHlsZSB3aXRoVW5kb0FjdGlvbjooRWRpdEFjdGlvbil1
bmRvQWN0aW9uCiB7CiAgICAgaWYgKEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKFtzZWxmIF9mcmFt
ZV0pKQotICAgICAgICBjb3JlRnJhbWUtPmVkaXRvcigpLmFwcGx5U3R5bGVUb1NlbGVjdGlvbihX
VEY6Om1vdmUoZWRpdGluZ1N0eWxlKSwgdW5kb0FjdGlvbik7CisgICAgICAgIGNvcmVGcmFtZS0+
ZWRpdG9yKCkuYXBwbHlTdHlsZVRvU2VsZWN0aW9uKFdURk1vdmUoZWRpdGluZ1N0eWxlKSwgdW5k
b0FjdGlvbik7CiB9CiAKICNpZiAhUExBVEZPUk0oSU9TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyLm1tIGIvU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyLm1tCmluZGV4
IDk3ODUzMTM2N2M3ZDNhMzIyMTc3NDc1OTdkNGIyZGMyMmViODQ3ZDcuLjZkOGNiZjU3NWZmYTcw
YmE2ZmU4ZjJmNzAwNjg1MzhmOWY5ZTJiMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlci5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIubW0KQEAgLTc2LDcg
Kzc2LDcgQEAgdm9pZCBXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyOjpzZXRQbGF5YmFja1Rh
cmdldCh1aW50NjRfdCBjb250ZXh0SWQsIFJlZjxXZWIKICAgICBpZiAoIW1fcGFnZSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgbV9wYWdlLT5zZXRQbGF5YmFja1RhcmdldChjb250ZXh0SWQsIFdU
Rjo6bW92ZSh0YXJnZXQpKTsKKyAgICBtX3BhZ2UtPnNldFBsYXliYWNrVGFyZ2V0KGNvbnRleHRJ
ZCwgV1RGTW92ZSh0YXJnZXQpKTsKIH0KIAogdm9pZCBXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlj
a2VyOjpleHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5nZSh1aW50NjRfdCBjb250
ZXh0SWQsIGJvb2wgYXZhaWxhYmxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2Vi
Vmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmlu
ZGV4IDlhOTJhODg0Yzk3NmVkNDE5NzAwMTFjMzMxZDc5MTk0Yzk1YzMxMjcuLjZlNzlmMDg4NmQ2
Yjk4NDkwNWNjZjdhYTU4YmMxZWFlNzYzNWQxZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dl
YlZpZXcubW0KQEAgLTIwMzgsNyArMjAzOCw3IEBAIC0gKHZvaWQpX2xvYWRCYWNrRm9yd2FyZExp
c3RGcm9tT3RoZXJWaWV3OihXZWJWaWV3ICopb3RoZXJWaWV3CiAgICAgICAgIFJlZjxIaXN0b3J5
SXRlbT4gbmV3SXRlbSA9IG90aGVyQmFja0ZvcndhcmQuaXRlbUF0SW5kZXgoaSktPmNvcHkoKTsK
ICAgICAgICAgaWYgKGkgPT0gMCkgCiAgICAgICAgICAgICBuZXdJdGVtVG9Hb1RvID0gbmV3SXRl
bS5wdHIoKTsKLSAgICAgICAgYmFja0ZvcndhcmQuY2xpZW50KCktPmFkZEl0ZW0oV1RGOjptb3Zl
KG5ld0l0ZW0pKTsKKyAgICAgICAgYmFja0ZvcndhcmQuY2xpZW50KCktPmFkZEl0ZW0oV1RGTW92
ZShuZXdJdGVtKSk7CiAgICAgfQogCiAgICAgQVNTRVJUKG5ld0l0ZW1Ub0dvVG8pOwpAQCAtNDA1
OSw3ICs0MDU5LDcgQEAgKyAodm9pZClfYWRkVXNlclNjcmlwdFRvR3JvdXA6KE5TU3RyaW5nICop
Z3JvdXBOYW1lIHdvcmxkOihXZWJTY3JpcHRXb3JsZCAqKXdvcmwKICAgICAgICAgcmV0dXJuOwog
CiAgICAgYXV0byB1c2VyU2NyaXB0ID0gc3RkOjptYWtlX3VuaXF1ZTxVc2VyU2NyaXB0Pihzb3Vy
Y2UsIHVybCwgdG9TdHJpbmdWZWN0b3Iod2hpdGVsaXN0KSwgdG9TdHJpbmdWZWN0b3IoYmxhY2ts
aXN0KSwgaW5qZWN0aW9uVGltZSA9PSBXZWJJbmplY3RBdERvY3VtZW50U3RhcnQgPyBJbmplY3RB
dERvY3VtZW50U3RhcnQgOiBJbmplY3RBdERvY3VtZW50RW5kLCBpbmplY3RlZEZyYW1lcyA9PSBX
ZWJJbmplY3RJbkFsbEZyYW1lcyA/IEluamVjdEluQWxsRnJhbWVzIDogSW5qZWN0SW5Ub3BGcmFt
ZU9ubHkpOwotICAgIHZpZXdHcm91cC0+dXNlckNvbnRlbnRDb250cm9sbGVyKCkuYWRkVXNlclNj
cmlwdCgqY29yZSh3b3JsZCksIFdURjo6bW92ZSh1c2VyU2NyaXB0KSk7CisgICAgdmlld0dyb3Vw
LT51c2VyQ29udGVudENvbnRyb2xsZXIoKS5hZGRVc2VyU2NyaXB0KCpjb3JlKHdvcmxkKSwgV1RG
TW92ZSh1c2VyU2NyaXB0KSk7CiB9CiAKICsgKHZvaWQpX2FkZFVzZXJTdHlsZVNoZWV0VG9Hcm91
cDooTlNTdHJpbmcgKilncm91cE5hbWUgd29ybGQ6KFdlYlNjcmlwdFdvcmxkICopd29ybGQgc291
cmNlOihOU1N0cmluZyAqKXNvdXJjZSB1cmw6KE5TVVJMICopdXJsCkBAIC00MDg0LDcgKzQwODQs
NyBAQCArICh2b2lkKV9hZGRVc2VyU3R5bGVTaGVldFRvR3JvdXA6KE5TU3RyaW5nICopZ3JvdXBO
YW1lIHdvcmxkOihXZWJTY3JpcHRXb3JsZCAqKQogICAgICAgICByZXR1cm47CiAKICAgICBhdXRv
IHN0eWxlU2hlZXQgPSBzdGQ6Om1ha2VfdW5pcXVlPFVzZXJTdHlsZVNoZWV0Pihzb3VyY2UsIHVy
bCwgdG9TdHJpbmdWZWN0b3Iod2hpdGVsaXN0KSwgdG9TdHJpbmdWZWN0b3IoYmxhY2tsaXN0KSwg
aW5qZWN0ZWRGcmFtZXMgPT0gV2ViSW5qZWN0SW5BbGxGcmFtZXMgPyBJbmplY3RJbkFsbEZyYW1l
cyA6IEluamVjdEluVG9wRnJhbWVPbmx5LCBVc2VyU3R5bGVVc2VyTGV2ZWwpOwotICAgIHZpZXdH
cm91cC0+dXNlckNvbnRlbnRDb250cm9sbGVyKCkuYWRkVXNlclN0eWxlU2hlZXQoKmNvcmUod29y
bGQpLCBXVEY6Om1vdmUoc3R5bGVTaGVldCksIEluamVjdEluRXhpc3RpbmdEb2N1bWVudHMpOwor
ICAgIHZpZXdHcm91cC0+dXNlckNvbnRlbnRDb250cm9sbGVyKCkuYWRkVXNlclN0eWxlU2hlZXQo
KmNvcmUod29ybGQpLCBXVEZNb3ZlKHN0eWxlU2hlZXQpLCBJbmplY3RJbkV4aXN0aW5nRG9jdW1l
bnRzKTsKIH0KIAogKyAodm9pZClfcmVtb3ZlVXNlclNjcmlwdEZyb21Hcm91cDooTlNTdHJpbmcg
Kilncm91cE5hbWUgd29ybGQ6KFdlYlNjcmlwdFdvcmxkICopd29ybGQgdXJsOihOU1VSTCAqKXVy
bApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vUGx1Z2lucy9QbHVnaW5TdHJlYW0uY3Bw
IGIvU291cmNlL1dlYktpdC93aW4vUGx1Z2lucy9QbHVnaW5TdHJlYW0uY3BwCmluZGV4IGRlN2Fm
YmViY2I1NWQzYmIxNTA0YzA2NDQzYjZkZDQxZDM2Y2FkOTEuLmU5Nzk1OTg0OTNmZmJjYjliODIz
NjhlYWI3YWExOThiMDkyZDJmZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1BsdWdp
bnMvUGx1Z2luU3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9QbHVnaW5zL1BsdWdp
blN0cmVhbS5jcHAKQEAgLTQwNiw3ICs0MDYsNyBAQCB2b2lkIFBsdWdpblN0cmVhbTo6c2VuZEph
dmFTY3JpcHRTdHJlYW0oY29uc3QgVVJMJiByZXF1ZXN0VVJMLCBjb25zdCBDU3RyaW5nJiByZQog
dm9pZCBQbHVnaW5TdHJlYW06OndpbGxTZW5kUmVxdWVzdChOZXRzY2FwZVBsdWdJblN0cmVhbUxv
YWRlciosIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
LCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKT4mJiBjYWxs
YmFjaykKIHsKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIG5vdGlmeSB0aGUgcGx1Zy1pbiB3aXRo
IE5QUF9VUkxSZWRpcmVjdE5vdGlmeSBoZXJlLgotICAgIGNhbGxiYWNrKFdURjo6bW92ZShyZXF1
ZXN0KSk7CisgICAgY2FsbGJhY2soV1RGTW92ZShyZXF1ZXN0KSk7CiB9CiAKIHZvaWQgUGx1Z2lu
U3RyZWFtOjpkaWRSZWNlaXZlUmVzcG9uc2UoTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqIGxv
YWRlciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L3dpbi9QbHVnaW5zL1BsdWdpblZpZXcuY3BwIGIvU291cmNlL1dlYktpdC93aW4v
UGx1Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRleCBiNjdjZjg0ZjY1MTY0MDQ0NzliOGVlOGU0OWU0
OWUxYjAxNDZiNzkyLi45ODU0MmViYTRkMWRiNjE5YTk1NmIzYzBjNjE0ZmQzNjZjYmZjMDhjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvd2luL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKQEAgLTQ2MCw3ICs0NjAs
NyBAQCB2b2lkIFBsdWdpblZpZXc6OnJlcXVlc3RUaW1lckZpcmVkKCkKICAgICBBU1NFUlQoIW1f
cmVxdWVzdHMuaXNFbXB0eSgpKTsKICAgICBBU1NFUlQoIW1faXNKYXZhU2NyaXB0UGF1c2VkKTsK
IAotICAgIHN0ZDo6dW5pcXVlX3B0cjxQbHVnaW5SZXF1ZXN0PiByZXF1ZXN0ID0gV1RGOjptb3Zl
KG1fcmVxdWVzdHNbMF0pOworICAgIHN0ZDo6dW5pcXVlX3B0cjxQbHVnaW5SZXF1ZXN0PiByZXF1
ZXN0ID0gV1RGTW92ZShtX3JlcXVlc3RzWzBdKTsKICAgICBtX3JlcXVlc3RzLnJlbW92ZSgwKTsK
ICAgICAKICAgICAvLyBTY2hlZHVsZSBhIG5ldyByZXF1ZXN0IGJlZm9yZSBjYWxsaW5nIHBlcmZv
cm1SZXF1ZXN0IHNpbmNlIHRoZSBjYWxsIHRvCkBAIC00NzMsNyArNDczLDcgQEAgdm9pZCBQbHVn
aW5WaWV3OjpyZXF1ZXN0VGltZXJGaXJlZCgpCiAKIHZvaWQgUGx1Z2luVmlldzo6c2NoZWR1bGVS
ZXF1ZXN0KHN0ZDo6dW5pcXVlX3B0cjxQbHVnaW5SZXF1ZXN0PiByZXF1ZXN0KQogewotICAgIG1f
cmVxdWVzdHMuYXBwZW5kKFdURjo6bW92ZShyZXF1ZXN0KSk7CisgICAgbV9yZXF1ZXN0cy5hcHBl
bmQoV1RGTW92ZShyZXF1ZXN0KSk7CiAKICAgICBpZiAoIW1faXNKYXZhU2NyaXB0UGF1c2VkKQog
ICAgICAgICBtX3JlcXVlc3RUaW1lci5zdGFydE9uZVNob3QoMCk7CkBAIC0xMDgzLDcgKzEwODMs
NyBAQCBOUEVycm9yIFBsdWdpblZpZXc6OmhhbmRsZVBvc3QoY29uc3QgY2hhciogdXJsLCBjb25z
dCBjaGFyKiB0YXJnZXQsIHVpbnQzMl90IGxlbgogCiAgICAgZnJhbWVMb2FkUmVxdWVzdC5yZXNv
dXJjZVJlcXVlc3QoKS5zZXRIVFRQTWV0aG9kKCJQT1NUIik7CiAgICAgZnJhbWVMb2FkUmVxdWVz
dC5yZXNvdXJjZVJlcXVlc3QoKS5zZXRVUkwobWFrZVVSTChtX3BhcmVudEZyYW1lLT5kb2N1bWVu
dCgpLT5iYXNlVVJMKCksIHVybCkpOwotICAgIGZyYW1lTG9hZFJlcXVlc3QucmVzb3VyY2VSZXF1
ZXN0KCkuc2V0SFRUUEhlYWRlckZpZWxkcyhXVEY6Om1vdmUoaGVhZGVyRmllbGRzKSk7CisgICAg
ZnJhbWVMb2FkUmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS5zZXRIVFRQSGVhZGVyRmllbGRzKFdU
Rk1vdmUoaGVhZGVyRmllbGRzKSk7CiAgICAgZnJhbWVMb2FkUmVxdWVzdC5yZXNvdXJjZVJlcXVl
c3QoKS5zZXRIVFRQQm9keShGb3JtRGF0YTo6Y3JlYXRlKHBvc3REYXRhLCBwb3N0RGF0YUxlbmd0
aCkpOwogICAgIGZyYW1lTG9hZFJlcXVlc3Quc2V0RnJhbWVOYW1lKHRhcmdldCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmNwcAppbmRleCBiOWRjNTExYzMyMjQ5OGNiM2MyZTNkYWM0MDhmM2NlYmE4YWUxZWRm
Li44OWMwMzUwM2QxZjVmYTVlZmE5YmVhZGVmN2Q4ZWYzNjg0OTg4MTI0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuY3BwCkBAIC05NjIsNyArOTYyLDcgQEAgUmVmPERvY3VtZW50TG9hZGVyPiBXZWJGcmFtZUxv
YWRlckNsaWVudDo6Y3JlYXRlRG9jdW1lbnRMb2FkZXIoY29uc3QgUmVzb3VyY2VSZXEKICAgICBD
T01QdHI8V2ViRGF0YVNvdXJjZT4gZGF0YVNvdXJjZShBZG9wdENPTSwgV2ViRGF0YVNvdXJjZTo6
Y3JlYXRlSW5zdGFuY2UobG9hZGVyLnB0cigpKSk7CiAKICAgICBsb2FkZXItPnNldERhdGFTb3Vy
Y2UoZGF0YVNvdXJjZS5nZXQoKSk7Ci0gICAgcmV0dXJuIFdURjo6bW92ZShsb2FkZXIpOworICAg
IHJldHVybiBXVEZNb3ZlKGxvYWRlcik7CiB9CiAKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6
OnNldFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mIHRpdGxlLCBjb25zdCBVUkwmIHVy
bCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3Bl
Y3RvckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNw
ZWN0b3JDbGllbnQuY3BwCmluZGV4IDhmNTQ2Y2Q2ODI1MjQxMjkwNGM2YjI3YWExMzQ4ZjFkZjlh
ZDI5MGIuLjJmNmE0NjYwZmZjZTYyNmY2ZGJjMDcxN2YxMTQwZmMxMmFmMmE5MTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xp
ZW50LmNwcApAQCAtMjExLDcgKzIxMSw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50OjpyZWxl
YXNlRnJvbnRlbmQoKQogfQogCiBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6V2ViSW5zcGVj
dG9yRnJvbnRlbmRDbGllbnQoV2ViVmlldyogaW5zcGVjdGVkV2ViVmlldywgSFdORCBpbnNwZWN0
ZWRXZWJWaWV3SHduZCwgSFdORCBmcm9udGVuZEh3bmQsIGNvbnN0IENPTVB0cjxXZWJWaWV3PiYg
ZnJvbnRlbmRXZWJWaWV3LCBIV05EIGZyb250ZW5kV2ViVmlld0h3bmQsIFdlYkluc3BlY3RvckNs
aWVudCogaW5zcGVjdG9yQ2xpZW50LCBzdGQ6OnVuaXF1ZV9wdHI8U2V0dGluZ3M+IHNldHRpbmdz
KQotICAgIDogSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbCgmaW5zcGVjdGVkV2ViVmlldy0+
cGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCksICBjb3JlKGZyb250ZW5kV2ViVmlldy5nZXQo
KSksIFdURjo6bW92ZShzZXR0aW5ncykpCisgICAgOiBJbnNwZWN0b3JGcm9udGVuZENsaWVudExv
Y2FsKCZpbnNwZWN0ZWRXZWJWaWV3LT5wYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKSwgIGNv
cmUoZnJvbnRlbmRXZWJWaWV3LmdldCgpKSwgV1RGTW92ZShzZXR0aW5ncykpCiAgICAgLCBtX2lu
c3BlY3RlZFdlYlZpZXcoaW5zcGVjdGVkV2ViVmlldykKICAgICAsIG1faW5zcGVjdGVkV2ViVmll
d0h3bmQoaW5zcGVjdGVkV2ViVmlld0h3bmQpCiAgICAgLCBtX2luc3BlY3RvckNsaWVudChpbnNw
ZWN0b3JDbGllbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJIaXN0b3J5LmNw
cCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkhpc3RvcnkuY3BwCmluZGV4IDZlZTYwNTU0ZGYzYjU4
Yjk4Mjk1ZDFkYjliZDU0YzhhYzlkNGQzZTkuLjAyZTJiZmNiYzAxMGU5NjBhZTE2Mjk0NzQyZmY3
ZGFlNWY5ZWJiODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkhpc3RvcnkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkhpc3RvcnkuY3BwCkBAIC04Miw3ICs4Miw3IEBA
IHN0YXRpYyBDT01QdHI8SVByb3BlcnR5QmFnPiBjcmVhdGVVc2VySW5mb0Zyb21BcnJheShCU1RS
IG5vdGlmaWNhdGlvblN0ciwgSVdlYkhpCiAKICAgICBIYXNoTWFwPFN0cmluZywgVmVjdG9yPENP
TVB0cjxJV2ViSGlzdG9yeUl0ZW0+Pj4gZGljdGlvbmFyeTsKICAgICBTdHJpbmcga2V5KG5vdGlm
aWNhdGlvblN0ciwgOjpTeXNTdHJpbmdMZW4obm90aWZpY2F0aW9uU3RyKSk7Ci0gICAgZGljdGlv
bmFyeS5zZXQoa2V5LCBXVEY6Om1vdmUoYXJyYXlJdGVtKSk7CisgICAgZGljdGlvbmFyeS5zZXQo
a2V5LCBXVEZNb3ZlKGFycmF5SXRlbSkpOwogICAgIHJldHVybiBDT01QdHI8SVByb3BlcnR5QmFn
PihBZG9wdENPTSwgQ09NUHJvcGVydHlCYWc8VmVjdG9yPENPTVB0cjxJV2ViSGlzdG9yeUl0ZW0+
Pj46OmFkb3B0KGRpY3Rpb25hcnkpKTsKICNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC93aW4vV2ViSGlzdG9yeUl0ZW0uY3BwIGIvU291cmNlL1dlYktpdC93aW4vV2ViSGlzdG9y
eUl0ZW0uY3BwCmluZGV4IDA3OWQ5YTc3OGM0YzZhOGMxZTUwNTNkYmEzYjZlYTdkOTU4ZDMxMDUu
LmQ0OGRjMjU3ZDRlZjNhMDAyYzI2MDZmZGI5OTQ5ODM2ODBmOWM5MWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvd2luL1dlYkhpc3RvcnlJdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dp
bi9XZWJIaXN0b3J5SXRlbS5jcHAKQEAgLTEyNSw3ICsxMjUsNyBAQCBIUkVTVUxUIFdlYkhpc3Rv
cnlJdGVtOjppbml0RnJvbURpY3Rpb25hcnlSZXByZXNlbnRhdGlvbihfSW5fb3B0XyB2b2lkKiBk
aWN0aW9uYQogICAgICAgICBtX2hpc3RvcnlJdGVtLT5zZXRMYXN0VmlzaXRXYXNGYWlsdXJlKHRy
dWUpOwogCiAgICAgaWYgKHJlZGlyZWN0VVJMc1ZlY3Rvci5nZXQoKSkKLSAgICAgICAgbV9oaXN0
b3J5SXRlbS0+c2V0UmVkaXJlY3RVUkxzKFdURjo6bW92ZShyZWRpcmVjdFVSTHNWZWN0b3IpKTsK
KyAgICAgICAgbV9oaXN0b3J5SXRlbS0+c2V0UmVkaXJlY3RVUkxzKFdURk1vdmUocmVkaXJlY3RV
UkxzVmVjdG9yKSk7CiAKICAgICByZXR1cm4gU19PSzsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvd2luL1dlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAKaW5k
ZXggZGMyODExZGNlMDE5NzQzYjQ0MDFhMTYzMDgxNmViYTcxZWU1OGYyMy4uMDNiNDQxMzE2NjMw
ODlkZDk2MmIxZWY5ZGEzMTlkYWQ0MmQ0YTZhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93
aW4vV2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAKQEAgLTg3
MCw3ICs4NzAsNyBAQCB2b2lkIFdlYlZpZXc6OmFkZFRvRGlydHlSZWdpb24oY29uc3QgSW50UmVj
dCYgZGlydHlSZWN0KQogCiAgICAgYXV0byBuZXdSZWdpb24gPSBhZG9wdEdESU9iamVjdCg6OkNy
ZWF0ZVJlY3RSZ24oZGlydHlSZWN0LngoKSwgZGlydHlSZWN0LnkoKSwKICAgICAgICAgZGlydHlS
ZWN0Lm1heFgoKSwgZGlydHlSZWN0Lm1heFkoKSkpOwotICAgIGFkZFRvRGlydHlSZWdpb24oV1RG
Ojptb3ZlKG5ld1JlZ2lvbikpOworICAgIGFkZFRvRGlydHlSZWdpb24oV1RGTW92ZShuZXdSZWdp
b24pKTsKIH0KIAogdm9pZCBXZWJWaWV3OjphZGRUb0RpcnR5UmVnaW9uKEdESU9iamVjdDxIUkdO
PiBuZXdSZWdpb24pCkBAIC04ODQsOSArODg0LDkgQEAgdm9pZCBXZWJWaWV3OjphZGRUb0RpcnR5
UmVnaW9uKEdESU9iamVjdDxIUkdOPiBuZXdSZWdpb24pCiAgICAgaWYgKG1fYmFja2luZ1N0b3Jl
RGlydHlSZWdpb24pIHsKICAgICAgICAgYXV0byBjb21iaW5lZFJlZ2lvbiA9IGFkb3B0R0RJT2Jq
ZWN0KDo6Q3JlYXRlUmVjdFJnbigwLCAwLCAwLCAwKSk7CiAgICAgICAgIDo6Q29tYmluZVJnbihj
b21iaW5lZFJlZ2lvbi5nZXQoKSwgbV9iYWNraW5nU3RvcmVEaXJ0eVJlZ2lvbi0+Z2V0KCksIG5l
d1JlZ2lvbi5nZXQoKSwgUkdOX09SKTsKLSAgICAgICAgbV9iYWNraW5nU3RvcmVEaXJ0eVJlZ2lv
biA9IFNoYXJlZEdESU9iamVjdDxIUkdOPjo6Y3JlYXRlKFdURjo6bW92ZShjb21iaW5lZFJlZ2lv
bikpOworICAgICAgICBtX2JhY2tpbmdTdG9yZURpcnR5UmVnaW9uID0gU2hhcmVkR0RJT2JqZWN0
PEhSR04+OjpjcmVhdGUoV1RGTW92ZShjb21iaW5lZFJlZ2lvbikpOwogICAgIH0gZWxzZQotICAg
ICAgICBtX2JhY2tpbmdTdG9yZURpcnR5UmVnaW9uID0gU2hhcmVkR0RJT2JqZWN0PEhSR04+Ojpj
cmVhdGUoV1RGOjptb3ZlKG5ld1JlZ2lvbikpOworICAgICAgICBtX2JhY2tpbmdTdG9yZURpcnR5
UmVnaW9uID0gU2hhcmVkR0RJT2JqZWN0PEhSR04+OjpjcmVhdGUoV1RGTW92ZShuZXdSZWdpb24p
KTsKIAogICAgIGlmIChtX3VpRGVsZWdhdGVQcml2YXRlKQogICAgICAgICBtX3VpRGVsZWdhdGVQ
cml2YXRlLT53ZWJWaWV3RGlkSW52YWxpZGF0ZSh0aGlzKTsKQEAgLTk0Niw3ICs5NDYsNyBAQCB2
b2lkIFdlYlZpZXc6OnNjcm9sbEJhY2tpbmdTdG9yZShGcmFtZVZpZXcqIGZyYW1lVmlldywgaW50
IGxvZ2ljYWxEeCwgaW50IGxvZ2ljYQogICAgIEdkaUZsdXNoKCk7CiAKICAgICAvLyBBZGQgdGhl
IGRpcnR5IHJlZ2lvbiB0byB0aGUgYmFja2luZyBzdG9yZSdzIGRpcnR5IHJlZ2lvbi4KLSAgICBh
ZGRUb0RpcnR5UmVnaW9uKFdURjo6bW92ZSh1cGRhdGVSZWdpb24pKTsKKyAgICBhZGRUb0RpcnR5
UmVnaW9uKFdURk1vdmUodXBkYXRlUmVnaW9uKSk7CiAKICAgICBpZiAobV91aURlbGVnYXRlUHJp
dmF0ZSkKICAgICAgICAgbV91aURlbGVnYXRlUHJpdmF0ZS0+d2ViVmlld1Njcm9sbGVkKHRoaXMp
OwpAQCAtNTcyNiw3ICs1NzI2LDcgQEAgSFJFU1VMVCBXZWJWaWV3Ojpsb2FkQmFja0ZvcndhcmRM
aXN0RnJvbU90aGVyVmlldyhfSW5fb3B0XyBJV2ViVmlldyogb3RoZXJWaWV3KQogICAgICAgICBS
ZWY8SGlzdG9yeUl0ZW0+IG5ld0l0ZW0gPSBvdGhlckJhY2tGb3J3YXJkLml0ZW1BdEluZGV4KGkp
LT5jb3B5KCk7CiAgICAgICAgIGlmICghaSkgCiAgICAgICAgICAgICBuZXdJdGVtVG9Hb1RvID0g
bmV3SXRlbS5wdHIoKTsKLSAgICAgICAgYmFja0ZvcndhcmQuY2xpZW50KCktPmFkZEl0ZW0oV1RG
Ojptb3ZlKG5ld0l0ZW0pKTsKKyAgICAgICAgYmFja0ZvcndhcmQuY2xpZW50KCktPmFkZEl0ZW0o
V1RGTW92ZShuZXdJdGVtKSk7CiAgICAgfQogICAgIAogICAgIEFTU0VSVChuZXdJdGVtVG9Hb1Rv
KTsKQEAgLTY2ODksNyArNjY4OSw3IEBAIEhSRVNVTFQgV2ViVmlldzo6YWRkVXNlclNjcmlwdFRv
R3JvdXAoX0luXyBCU1RSIGdyb3VwTmFtZSwgX0luX29wdF8gSVdlYlNjcmlwdFdvCiAgICAgYXV0
byB1c2VyU2NyaXB0ID0gc3RkOjptYWtlX3VuaXF1ZTxVc2VyU2NyaXB0Pihzb3VyY2UsIHRvVVJM
KHVybCksIHRvU3RyaW5nVmVjdG9yKHdoaXRlbGlzdCwgd2hpdGVsaXN0Q291bnQpLAogICAgICAg
ICB0b1N0cmluZ1ZlY3RvcihibGFja2xpc3QsIGJsYWNrbGlzdENvdW50KSwgaW5qZWN0aW9uVGlt
ZSA9PSBXZWJJbmplY3RBdERvY3VtZW50U3RhcnQgPyBJbmplY3RBdERvY3VtZW50U3RhcnQgOiBJ
bmplY3RBdERvY3VtZW50RW5kLAogICAgICAgICBpbmplY3RlZEZyYW1lcyA9PSBXZWJJbmplY3RJ
bkFsbEZyYW1lcyA/IEluamVjdEluQWxsRnJhbWVzIDogSW5qZWN0SW5Ub3BGcmFtZU9ubHkpOwot
ICAgIHZpZXdHcm91cC0+dXNlckNvbnRlbnRDb250cm9sbGVyKCkuYWRkVXNlclNjcmlwdCh3b3Js
ZC0+d29ybGQoKSwgV1RGOjptb3ZlKHVzZXJTY3JpcHQpKTsKKyAgICB2aWV3R3JvdXAtPnVzZXJD
b250ZW50Q29udHJvbGxlcigpLmFkZFVzZXJTY3JpcHQod29ybGQtPndvcmxkKCksIFdURk1vdmUo
dXNlclNjcmlwdCkpOwogICAgIHJldHVybiBTX09LOwogfQogCkBAIC02NzE3LDcgKzY3MTcsNyBA
QCBIUkVTVUxUIFdlYlZpZXc6OmFkZFVzZXJTdHlsZVNoZWV0VG9Hcm91cChfSW5fIEJTVFIgZ3Jv
dXBOYW1lLCBfSW5fb3B0XyBJV2ViU2NyaQogICAgIFdlYlNjcmlwdFdvcmxkKiB3b3JsZCA9IHJl
aW50ZXJwcmV0X2Nhc3Q8V2ViU2NyaXB0V29ybGQqPihpV29ybGQpOwogICAgIGF1dG8gc3R5bGVT
aGVldCA9IHN0ZDo6bWFrZV91bmlxdWU8VXNlclN0eWxlU2hlZXQ+KHNvdXJjZSwgdG9VUkwodXJs
KSwgdG9TdHJpbmdWZWN0b3Iod2hpdGVsaXN0LCB3aGl0ZWxpc3RDb3VudCksIHRvU3RyaW5nVmVj
dG9yKGJsYWNrbGlzdCwgYmxhY2tsaXN0Q291bnQpLAogICAgICAgICBpbmplY3RlZEZyYW1lcyA9
PSBXZWJJbmplY3RJbkFsbEZyYW1lcyA/IEluamVjdEluQWxsRnJhbWVzIDogSW5qZWN0SW5Ub3BG
cmFtZU9ubHksIFVzZXJTdHlsZVVzZXJMZXZlbCk7Ci0gICAgdmlld0dyb3VwLT51c2VyQ29udGVu
dENvbnRyb2xsZXIoKS5hZGRVc2VyU3R5bGVTaGVldCh3b3JsZC0+d29ybGQoKSwgV1RGOjptb3Zl
KHN0eWxlU2hlZXQpLCBJbmplY3RJbkV4aXN0aW5nRG9jdW1lbnRzKTsKKyAgICB2aWV3R3JvdXAt
PnVzZXJDb250ZW50Q29udHJvbGxlcigpLmFkZFVzZXJTdHlsZVNoZWV0KHdvcmxkLT53b3JsZCgp
LCBXVEZNb3ZlKHN0eWxlU2hlZXQpLCBJbmplY3RJbkV4aXN0aW5nRG9jdW1lbnRzKTsKICAgICBy
ZXR1cm4gU19PSzsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9j
ZXNzL0RhdGFiYXNlUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3Mv
RGF0YWJhc2VQcm9jZXNzLmNwcAppbmRleCBmMGJjYzAzZGY1ZmZlNzk3NzFjMzc3ZWIzZDk2ZTQ3
MTU5ZWM4YTAyLi5mYTM0MGIyZTYwM2FjMjgwNzY2MzMwNDhjMDg2M2RjNjQ3OTIxMjYxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNzLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNzLmNw
cApAQCAtMTYxLDcgKzE2MSw3IEBAIHZvaWQgRGF0YWJhc2VQcm9jZXNzOjpwb3N0RGF0YWJhc2VU
YXNrKHN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFRhc2s+IHRhc2spCiAKICAgICBMb2NrSG9s
ZGVyIGxvY2tlcihtX2RhdGFiYXNlVGFza011dGV4KTsKIAotICAgIG1fZGF0YWJhc2VUYXNrcy5h
cHBlbmQoV1RGOjptb3ZlKHRhc2spKTsKKyAgICBtX2RhdGFiYXNlVGFza3MuYXBwZW5kKFdURk1v
dmUodGFzaykpOwogCiAgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXNdIHsKICAgICAgICAgcGVy
Zm9ybU5leHREYXRhYmFzZVRhc2soKTsKQEAgLTIwOCw3ICsyMDgsNyBAQCB2b2lkIERhdGFiYXNl
UHJvY2Vzczo6ZmV0Y2hXZWJzaXRlRGF0YShTZXNzaW9uSUQsIHVpbnQ2NF90IHdlYnNpdGVEYXRh
VHlwZXMsIHVpbgogewogICAgIHN0cnVjdCBDYWxsYmFja0FnZ3JlZ2F0b3IgZmluYWwgOiBwdWJs
aWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Q2FsbGJhY2tBZ2dyZWdhdG9yPiB7CiAgICAgICAgIGV4
cGxpY2l0IENhbGxiYWNrQWdncmVnYXRvcihzdGQ6OmZ1bmN0aW9uPHZvaWQgKFdlYnNpdGVEYXRh
KT4gY29tcGxldGlvbkhhbmRsZXIpCi0gICAgICAgICAgICA6IG1fY29tcGxldGlvbkhhbmRsZXIo
V1RGOjptb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkKKyAgICAgICAgICAgIDogbV9jb21wbGV0aW9u
SGFuZGxlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkKICAgICAgICAgewogICAgICAgICB9
CiAKQEAgLTIxNiw4ICsyMTYsOCBAQCB2b2lkIERhdGFiYXNlUHJvY2Vzczo6ZmV0Y2hXZWJzaXRl
RGF0YShTZXNzaW9uSUQsIHVpbnQ2NF90IHdlYnNpdGVEYXRhVHlwZXMsIHVpbgogICAgICAgICB7
CiAgICAgICAgICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgICAgICAgICBh
dXRvIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGOjptb3ZlKG1fY29tcGxldGlvbkhhbmRsZXIpOwot
ICAgICAgICAgICAgYXV0byB3ZWJzaXRlRGF0YSA9IFdURjo6bW92ZShtX3dlYnNpdGVEYXRhKTsK
KyAgICAgICAgICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKG1fY29tcGxldGlv
bkhhbmRsZXIpOworICAgICAgICAgICAgYXV0byB3ZWJzaXRlRGF0YSA9IFdURk1vdmUobV93ZWJz
aXRlRGF0YSk7CiAKICAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbY29tcGxl
dGlvbkhhbmRsZXIsIHdlYnNpdGVEYXRhXSB7CiAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIod2Vic2l0ZURhdGEpOwpAQCAtMjUyLDcgKzI1Miw3IEBAIHZvaWQgRGF0YWJhc2VQcm9j
ZXNzOjpkZWxldGVXZWJzaXRlRGF0YShXZWJDb3JlOjpTZXNzaW9uSUQsIHVpbnQ2NF90IHdlYnNp
dGVEYXRhCiB7CiAgICAgc3RydWN0IENhbGxiYWNrQWdncmVnYXRvciBmaW5hbCA6IHB1YmxpYyBU
aHJlYWRTYWZlUmVmQ291bnRlZDxDYWxsYmFja0FnZ3JlZ2F0b3I+IHsKICAgICAgICAgZXhwbGlj
aXQgQ2FsbGJhY2tBZ2dyZWdhdG9yKHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4gY29tcGxldGlvbkhh
bmRsZXIpCi0gICAgICAgICAgICA6IG1fY29tcGxldGlvbkhhbmRsZXIoV1RGOjptb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSkKKyAgICAgICAgICAgIDogbV9jb21wbGV0aW9uSGFuZGxlcihXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSkKICAgICAgICAgewogICAgICAgICB9CiAKQEAgLTI2MCw3ICsy
NjAsNyBAQCB2b2lkIERhdGFiYXNlUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGEoV2ViQ29yZTo6
U2Vzc2lvbklELCB1aW50NjRfdCB3ZWJzaXRlRGF0YQogICAgICAgICB7CiAgICAgICAgICAgICBB
U1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgICAgICAgICBSdW5Mb29wOjptYWluKCku
ZGlzcGF0Y2goV1RGOjptb3ZlKG1fY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICAgICAgICAgIFJ1
bkxvb3A6Om1haW4oKS5kaXNwYXRjaChXVEZNb3ZlKG1fY29tcGxldGlvbkhhbmRsZXIpKTsKICAg
ICAgICAgfQogCiAgICAgICAgIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4gbV9jb21wbGV0aW9uSGFu
ZGxlcjsKQEAgLTI4NSw3ICsyODUsNyBAQCB2b2lkIERhdGFiYXNlUHJvY2Vzczo6ZGVsZXRlV2Vi
c2l0ZURhdGFGb3JPcmlnaW5zKFdlYkNvcmU6OlNlc3Npb25JRCwgdWludDY0X3QgdwogewogICAg
IHN0cnVjdCBDYWxsYmFja0FnZ3JlZ2F0b3IgZmluYWwgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNv
dW50ZWQ8Q2FsbGJhY2tBZ2dyZWdhdG9yPiB7CiAgICAgICAgIGV4cGxpY2l0IENhbGxiYWNrQWdn
cmVnYXRvcihzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+IGNvbXBsZXRpb25IYW5kbGVyKQotICAgICAg
ICAgICAgOiBtX2NvbXBsZXRpb25IYW5kbGVyKFdURjo6bW92ZShjb21wbGV0aW9uSGFuZGxlcikp
CisgICAgICAgICAgICA6IG1fY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpCiAgICAgICAgIHsKICAgICAgICAgfQogCkBAIC0yOTMsNyArMjkzLDcgQEAgdm9pZCBE
YXRhYmFzZVByb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyhXZWJDb3JlOjpTZXNz
aW9uSUQsIHVpbnQ2NF90IHcKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKFJ1bkxvb3A6
OmlzTWFpbigpKTsKIAotICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFdURjo6
bW92ZShtX2NvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgICAgICAgICBSdW5Mb29wOjptYWluKCku
ZGlzcGF0Y2goV1RGTW92ZShtX2NvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIH0KIAogICAg
ICAgICBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+IG1fY29tcGxldGlvbkhhbmRsZXI7CkBAIC0zMjks
NyArMzI5LDcgQEAgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4+IERhdGFi
YXNlUHJvY2Vzczo6aW5kZXhlZERhdGFiYXNlT3JpZ2lucygKICAgICAgICAgU3RyaW5nIGRhdGFi
YXNlSWRlbnRpZmllciA9IHBhdGhHZXRGaWxlTmFtZShvcmlnaW5QYXRoKTsKIAogICAgICAgICBp
ZiAoYXV0byBzZWN1cml0eU9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjptYXliZUNyZWF0ZUZyb21E
YXRhYmFzZUlkZW50aWZpZXIoZGF0YWJhc2VJZGVudGlmaWVyKSkKLSAgICAgICAgICAgIHNlY3Vy
aXR5T3JpZ2lucy5hcHBlbmQoV1RGOjptb3ZlKHNlY3VyaXR5T3JpZ2luKSk7CisgICAgICAgICAg
ICBzZWN1cml0eU9yaWdpbnMuYXBwZW5kKFdURk1vdmUoc2VjdXJpdHlPcmlnaW4pKTsKICAgICB9
CiAKICAgICByZXR1cm4gc2VjdXJpdHlPcmlnaW5zOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9VbmlxdWVJREJEYXRhYmFzZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL1VuaXF1ZUlEQkRhdGFiYXNlLmNw
cAppbmRleCAxNDkwMWM0YTFjZTQzYzRiNjhiYzNjMjY2YTEzYzBjMzc3NmM2ODk4Li5lMzRjNTA2
OTVhMjM2YzhjYTc1ZTA5YTJkYzY3MjNiZmE2ZTUwNmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL1VuaXF1ZUlEQkRhdGFi
YXNlLmNwcApAQCAtMzIzLDcgKzMyMyw3IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnBvc3RU
cmFuc2FjdGlvbk9wZXJhdGlvbihjb25zdCBJREJJZGVudGlmaWVyJiB0cmFuc2FjdGlvCiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICBwb3N0RGF0YWJhc2VUYXNrKFdURjo6bW92ZSh0YXNr
KSk7CisgICAgcG9zdERhdGFiYXNlVGFzayhXVEZNb3ZlKHRhc2spKTsKIAogICAgIFJlZlB0cjxB
c3luY1JlcXVlc3Q+IHJlcXVlc3QgPSBBc3luY1JlcXVlc3RJbXBsPGJvb2w+OjpjcmVhdGUoW3N1
Y2Nlc3NDYWxsYmFja10oYm9vbCBzdWNjZXNzKSB7CiAgICAgICAgIHN1Y2Nlc3NDYWxsYmFjayhz
dWNjZXNzKTsKQEAgLTExMjcsNyArMTEyNyw3IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnBv
c3RNYWluVGhyZWFkVGFzayhzdGQ6OnVuaXF1ZV9wdHI8Q3Jvc3NUaHJlYWRUYXNrPiB0YXNrCiAK
ICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX21haW5UaHJlYWRUYXNrTXV0ZXgpOwogCi0gICAgbV9t
YWluVGhyZWFkVGFza3MuYXBwZW5kKFdURjo6bW92ZSh0YXNrKSk7CisgICAgbV9tYWluVGhyZWFk
VGFza3MuYXBwZW5kKFdURk1vdmUodGFzaykpOwogCiAgICAgUmVmUHRyPFVuaXF1ZUlEQkRhdGFi
YXNlPiBkYXRhYmFzZSh0aGlzKTsKICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2RhdGFi
YXNlXSB7CkBAIC0xMTY3LDcgKzExNjcsNyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpwb3N0
RGF0YWJhc2VUYXNrKHN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFRhc2s+IHRhc2ssCiAKICAg
ICBMb2NrSG9sZGVyIGxvY2tlcihtX2RhdGFiYXNlVGFza011dGV4KTsKIAotICAgIG1fZGF0YWJh
c2VUYXNrcy5hcHBlbmQoV1RGOjptb3ZlKHRhc2spKTsKKyAgICBtX2RhdGFiYXNlVGFza3MuYXBw
ZW5kKFdURk1vdmUodGFzaykpOwogCiAgICAgUmVmUHRyPFVuaXF1ZUlEQkRhdGFiYXNlPiBkYXRh
YmFzZSh0aGlzKTsKICAgICBEYXRhYmFzZVByb2Nlc3M6OnNpbmdsZXRvbigpLnF1ZXVlKCkuZGlz
cGF0Y2goW2RhdGFiYXNlXSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwCmluZGV4IDQxZjQ5ZGMwZTVk
NTkyZGQ5MmY3Y2EzZDMxZGM3NDA1OTBjMDE1NGEuLmJlNjkxNDQ0MmUzNGQzYzEwNTFkNTQ0ZTI3
MjU3Mzg0MzlhMzJhYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwCkBAIC01NCw3ICs1NCw3IEBA
IHZvaWQgRG93bmxvYWRNYW5hZ2VyOjpzdGFydERvd25sb2FkKFNlc3Npb25JRCBzZXNzaW9uSUQs
IERvd25sb2FkSUQgZG93bmxvYWRJRCwKICAgICBkb3dubG9hZC0+c3RhcnQoKTsKIAogICAgIEFT
U0VSVCghbV9kb3dubG9hZHMuY29udGFpbnMoZG93bmxvYWRJRCkpOwotICAgIG1fZG93bmxvYWRz
LmFkZChkb3dubG9hZElELCBXVEY6Om1vdmUoZG93bmxvYWQpKTsKKyAgICBtX2Rvd25sb2Fkcy5h
ZGQoZG93bmxvYWRJRCwgV1RGTW92ZShkb3dubG9hZCkpOwogfQogCiAjaWYgIVVTRShORVRXT1JL
X1NFU1NJT04pCkBAIC02NCw3ICs2NCw3IEBAIHZvaWQgRG93bmxvYWRNYW5hZ2VyOjpjb252ZXJ0
SGFuZGxlVG9Eb3dubG9hZChEb3dubG9hZElEIGRvd25sb2FkSUQsIFJlc291cmNlSGFuCiAKICAg
ICBkb3dubG9hZC0+c3RhcnRXaXRoSGFuZGxlKGhhbmRsZSwgcmVzcG9uc2UpOwogICAgIEFTU0VS
VCghbV9kb3dubG9hZHMuY29udGFpbnMoZG93bmxvYWRJRCkpOwotICAgIG1fZG93bmxvYWRzLmFk
ZChkb3dubG9hZElELCBXVEY6Om1vdmUoZG93bmxvYWQpKTsKKyAgICBtX2Rvd25sb2Fkcy5hZGQo
ZG93bmxvYWRJRCwgV1RGTW92ZShkb3dubG9hZCkpOwogfQogI2VuZGlmCiAKQEAgLTc4LDcgKzc4
LDcgQEAgdm9pZCBEb3dubG9hZE1hbmFnZXI6OnJlc3VtZURvd25sb2FkKFNlc3Npb25JRCwgRG93
bmxvYWRJRCBkb3dubG9hZElELCBjb25zdCBJUEMKIAogICAgIGRvd25sb2FkLT5yZXN1bWUocmVz
dW1lRGF0YSwgcGF0aCwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSk7CiAgICAgQVNTRVJUKCFtX2Rv
d25sb2Fkcy5jb250YWlucyhkb3dubG9hZElEKSk7Ci0gICAgbV9kb3dubG9hZHMuYWRkKGRvd25s
b2FkSUQsIFdURjo6bW92ZShkb3dubG9hZCkpOworICAgIG1fZG93bmxvYWRzLmFkZChkb3dubG9h
ZElELCBXVEZNb3ZlKGRvd25sb2FkKSk7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRW50cnlQb2ludC9tYWMvWFBDU2VydmljZS9OZXR3b3Jr
U2VydmljZUVudHJ5UG9pbnQubW0gYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9FbnRy
eVBvaW50L21hYy9YUENTZXJ2aWNlL05ldHdvcmtTZXJ2aWNlRW50cnlQb2ludC5tbQppbmRleCA3
MjUxMDM1MDU4YWM5MmMyOGE4OGE3Mjc0NWU2NWRiZTNjODI4ZGM5Li42MzExYzMwODg2NDRmNmYz
YTQzOWQ2NmIyNGYxNGZhMmI5NWIyMmZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9FbnRyeVBvaW50L21hYy9YUENTZXJ2aWNlL05ldHdvcmtTZXJ2aWNlRW50cnlQ
b2ludC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9FbnRyeVBvaW50L21h
Yy9YUENTZXJ2aWNlL05ldHdvcmtTZXJ2aWNlRW50cnlQb2ludC5tbQpAQCAtMzksNyArMzksNyBA
QCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIE5ldHdvcmtTZXJ2aWNlSW5pdGlhbGl6ZXJEZWxl
Z2F0ZSA6IHB1YmxpYyBYUENTZXJ2aWNlSW5pdGlhbGl6ZXJEZWxlZ2F0ZSB7CiBwdWJsaWM6CiAg
ICAgTmV0d29ya1NlcnZpY2VJbml0aWFsaXplckRlbGVnYXRlKE9TT2JqZWN0UHRyPHhwY19jb25u
ZWN0aW9uX3Q+IGNvbm5lY3Rpb24sIHhwY19vYmplY3RfdCBpbml0aWFsaXplck1lc3NhZ2UpCi0g
ICAgICAgIDogWFBDU2VydmljZUluaXRpYWxpemVyRGVsZWdhdGUoV1RGOjptb3ZlKGNvbm5lY3Rp
b24pLCBpbml0aWFsaXplck1lc3NhZ2UpCisgICAgICAgIDogWFBDU2VydmljZUluaXRpYWxpemVy
RGVsZWdhdGUoV1RGTW92ZShjb25uZWN0aW9uKSwgaW5pdGlhbGl6ZXJNZXNzYWdlKQogICAgIHsK
ICAgICB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRmls
ZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9j
ZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5jcHAKaW5kZXggM2E2ZjQ1MmIxMWRjOGFk
YTBmZmRlNzNmZjA3YzMxMWNlZTYyOWYyOS4uYTFjMTU0ZTQ0M2ZiZmUxN2YxODIyMjE4M2RiMjFl
MjBjYmY3MTAxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRmls
ZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9GaWxlQVBJL05ldHdvcmtCbG9iUmVnaXN0cnkuY3BwCkBAIC02MSw3ICs2MSw3IEBA
IHZvaWQgTmV0d29ya0Jsb2JSZWdpc3RyeTo6cmVnaXN0ZXJGaWxlQmxvYlVSTChOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2VzcyogY29uCiAKIHZvaWQgTmV0d29ya0Jsb2JSZWdpc3RyeTo6cmVn
aXN0ZXJCbG9iVVJMKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiBjb25uZWN0aW9uLCBj
b25zdCBVUkwmIHVybCwgVmVjdG9yPFdlYkNvcmU6OkJsb2JQYXJ0PiBibG9iUGFydHMsIGNvbnN0
IFN0cmluZyYgY29udGVudFR5cGUpCiB7Ci0gICAgYmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJCbG9i
VVJMKHVybCwgV1RGOjptb3ZlKGJsb2JQYXJ0cyksIGNvbnRlbnRUeXBlKTsKKyAgICBibG9iUmVn
aXN0cnkoKS5yZWdpc3RlckJsb2JVUkwodXJsLCBXVEZNb3ZlKGJsb2JQYXJ0cyksIGNvbnRlbnRU
eXBlKTsKIAogICAgIEFTU0VSVCghbV9ibG9ic0ZvckNvbm5lY3Rpb24uZ2V0KGNvbm5lY3Rpb24p
LmNvbnRhaW5zKHVybCkpOwogICAgIEJsb2JGb3JDb25uZWN0aW9uTWFwOjppdGVyYXRvciBtYXBJ
dGVyYXRvciA9IG1fYmxvYnNGb3JDb25uZWN0aW9uLmZpbmQoY29ubmVjdGlvbik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5jcHAKaW5kZXggN2RhY2FlMWU2ZWQxNmRkNDQ5NzJiMjZkODhhYWM4
NTY4ZGJjNTY4ZS4uZDg0ODc2MTkxZWYzNzVmODUwMmQ5MGIzOWUxZDk0N2M5MDhiZGQ3ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAtMTIzLDcgKzEyMyw3IEBAIHZvaWQgTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNjaGVkdWxlUmVzb3VyY2VMb2FkKGNvbnN0IE5l
dHdvcmtSZXNvdXJjZUxvCiAKIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnBl
cmZvcm1TeW5jaHJvbm91c0xvYWQoY29uc3QgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMm
IGxvYWRQYXJhbWV0ZXJzLCBSZWZQdHI8TWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpQZXJmb3JtU3luY2hyb25vdXNMb2FkOjpEZWxheWVkUmVwbHk+JiYgcmVwbHkpCiB7
Ci0gICAgYXV0byBsb2FkZXIgPSBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNyZWF0ZShsb2FkUGFy
YW1ldGVycywgKnRoaXMsIFdURjo6bW92ZShyZXBseSkpOworICAgIGF1dG8gbG9hZGVyID0gTmV0
d29ya1Jlc291cmNlTG9hZGVyOjpjcmVhdGUobG9hZFBhcmFtZXRlcnMsICp0aGlzLCBXVEZNb3Zl
KHJlcGx5KSk7CiAgICAgbV9uZXR3b3JrUmVzb3VyY2VMb2FkZXJzLmFkZChsb2FkUGFyYW1ldGVy
cy5pZGVudGlmaWVyLCBsb2FkZXIucHRyKCkpOwogICAgIGxvYWRlci0+c3RhcnQoKTsKIH0KQEAg
LTI0Nyw3ICsyNDcsNyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWdp
c3RlckZpbGVCbG9iVVJMKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdAogCiB2b2lkIE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiB1cmwsIFZl
Y3RvcjxCbG9iUGFydD4gYmxvYlBhcnRzLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQogewot
ICAgIE5ldHdvcmtCbG9iUmVnaXN0cnk6OnNpbmdsZXRvbigpLnJlZ2lzdGVyQmxvYlVSTCh0aGlz
LCB1cmwsIFdURjo6bW92ZShibG9iUGFydHMpLCBjb250ZW50VHlwZSk7CisgICAgTmV0d29ya0Js
b2JSZWdpc3RyeTo6c2luZ2xldG9uKCkucmVnaXN0ZXJCbG9iVVJMKHRoaXMsIHVybCwgV1RGTW92
ZShibG9iUGFydHMpLCBjb250ZW50VHlwZSk7CiB9CiAKIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OnJlZ2lzdGVyQmxvYlVSTEZyb21VUkwoY29uc3QgVVJMJiB1cmwsIGNvbnN0
IFVSTCYgc3JjVVJMKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0xvYWQuY3BwIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xv
YWQuY3BwCmluZGV4IDUxMzk4MmZiZDkxMjNlNGEyNjQxMTE5NzljYjYyZGI0NGQ2NmU2MWEuLjEx
YjQyZDc3N2Q5OThkYmFmZTYxYTNkMTI1MGI1ODQzMzdjODI4OTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAKQEAgLTIwOCw3ICsyMDgsNyBAQCB2
b2lkIE5ldHdvcmtMb2FkOjpkaWRSZWNlaXZlRGF0YShSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlcikKIHsKICAgICBBU1NFUlQoYnVmZmVyKTsKICAgICBhdXRvIHNpemUgPSBidWZmZXItPnNp
emUoKTsKLSAgICBtX2NsaWVudC5kaWRSZWNlaXZlQnVmZmVyKFdURjo6bW92ZShidWZmZXIpLCBz
aXplKTsKKyAgICBtX2NsaWVudC5kaWRSZWNlaXZlQnVmZmVyKFdURk1vdmUoYnVmZmVyKSwgc2l6
ZSk7CiB9CiAKIHZvaWQgTmV0d29ya0xvYWQ6OmRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFJl
c291cmNlRXJyb3ImIGVycm9yKQpAQCAtMjQzLDcgKzI0Myw3IEBAIHZvaWQgTmV0d29ya0xvYWQ6
OmRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxlKiwgY29uc3QgY2hhciogLyogZGF0YSAqLywg
dW5zaWduCiB2b2lkIE5ldHdvcmtMb2FkOjpkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxl
KiBoYW5kbGUsIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIsIGludCByZXBvcnRlZEVu
Y29kZWREYXRhTGVuZ3RoKQogewogICAgIEFTU0VSVF9VTlVTRUQoaGFuZGxlLCBoYW5kbGUgPT0g
bV9oYW5kbGUpOwotICAgIG1fY2xpZW50LmRpZFJlY2VpdmVCdWZmZXIoV1RGOjptb3ZlKGJ1ZmZl
ciksIHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpOworICAgIG1fY2xpZW50LmRpZFJlY2VpdmVC
dWZmZXIoV1RGTW92ZShidWZmZXIpLCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKTsKIH0KIAog
dm9pZCBOZXR3b3JrTG9hZDo6ZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUhhbmRsZSogaGFuZGxl
LCBkb3VibGUgZmluaXNoVGltZSkKQEAgLTI5OCw3ICsyOTgsNyBAQCB2b2lkIE5ldHdvcmtMb2Fk
Ojpjb250aW51ZUNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoYm9vbCByZXN1
bHQpCiB7CiAjaWYgVVNFKE5FVFdPUktfU0VTU0lPTikKICAgICBBU1NFUlQobV9jaGFsbGVuZ2VD
b21wbGV0aW9uSGFuZGxlcik7Ci0gICAgYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFdURjo6bW92
ZShtX2NoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICBhdXRvIGNvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShtX2NoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyKTsKICAgICBpZiAoIXJl
c3VsdCkgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZURpc3Bvc2l0aW9uOjpQZXJmb3JtRGVmYXVsdEhhbmRsaW5nLCBDcmVkZW50aWFsKCkpOwogICAg
ICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5jcHAKaW5kZXggYTE0NjRiOTlkOTJmMjlmMmZhYjY5NDIzYzlkMDg1NzY4MDZiM2Uw
Mi4uMGQzZDlmY2JjYjRiZjRkNzc0MmNjZThjNTA4YTRlZWJjNTY5NjEyNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtMjk4LDcg
KzI5OCw3IEBAIHN0YXRpYyB2b2lkIGZldGNoRGlza0NhY2hlRW50cmllcyhTZXNzaW9uSUQgc2Vz
c2lvbklELCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKFZlY3RvCiAKICNpZiBVU0UoQ0ZVUkxDQUNIRSkK
ICAgICBmb3IgKGF1dG8mIG9yaWdpbiA6IE5ldHdvcmtQcm9jZXNzOjpjZlVSTENhY2hlT3JpZ2lu
cygpKQotICAgICAgICBlbnRyaWVzLmFwcGVuZChXZWJzaXRlRGF0YTo6RW50cnkgeyBXVEY6Om1v
dmUob3JpZ2luKSwgV2Vic2l0ZURhdGFUeXBlRGlza0NhY2hlIH0pOworICAgICAgICBlbnRyaWVz
LmFwcGVuZChXZWJzaXRlRGF0YTo6RW50cnkgeyBXVEZNb3ZlKG9yaWdpbiksIFdlYnNpdGVEYXRh
VHlwZURpc2tDYWNoZSB9KTsKICNlbmRpZgogCiAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNo
KFtjb21wbGV0aW9uSGFuZGxlciwgZW50cmllc10gewpAQCAtMzEwLDcgKzMxMCw3IEBAIHZvaWQg
TmV0d29ya1Byb2Nlc3M6OmZldGNoV2Vic2l0ZURhdGEoU2Vzc2lvbklEIHNlc3Npb25JRCwgdWlu
dDY0X3Qgd2Vic2l0ZURhdGFUCiB7CiAgICAgc3RydWN0IENhbGxiYWNrQWdncmVnYXRvciBmaW5h
bCA6IHB1YmxpYyBSZWZDb3VudGVkPENhbGxiYWNrQWdncmVnYXRvcj4gewogICAgICAgICBleHBs
aWNpdCBDYWxsYmFja0FnZ3JlZ2F0b3Ioc3RkOjpmdW5jdGlvbjx2b2lkIChXZWJzaXRlRGF0YSk+
IGNvbXBsZXRpb25IYW5kbGVyKQotICAgICAgICAgICAgOiBtX2NvbXBsZXRpb25IYW5kbGVyKFdU
Rjo6bW92ZShjb21wbGV0aW9uSGFuZGxlcikpCisgICAgICAgICAgICA6IG1fY29tcGxldGlvbkhh
bmRsZXIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpCiAgICAgICAgIHsKICAgICAgICAgfQog
CkBAIC0zMTgsOCArMzE4LDggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZmV0Y2hXZWJzaXRlRGF0
YShTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCB3ZWJzaXRlRGF0YVQKICAgICAgICAgewog
ICAgICAgICAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgICAgICAgICAgYXV0
byBjb21wbGV0aW9uSGFuZGxlciA9IFdURjo6bW92ZShtX2NvbXBsZXRpb25IYW5kbGVyKTsKLSAg
ICAgICAgICAgIGF1dG8gd2Vic2l0ZURhdGEgPSBXVEY6Om1vdmUobV93ZWJzaXRlRGF0YSk7Cisg
ICAgICAgICAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShtX2NvbXBsZXRpb25I
YW5kbGVyKTsKKyAgICAgICAgICAgIGF1dG8gd2Vic2l0ZURhdGEgPSBXVEZNb3ZlKG1fd2Vic2l0
ZURhdGEpOwogCiAgICAgICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2NvbXBsZXRp
b25IYW5kbGVyLCB3ZWJzaXRlRGF0YV0gewogICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKHdlYnNpdGVEYXRhKTsKQEAgLTM2NSw3ICszNjUsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNz
OjpkZWxldGVXZWJzaXRlRGF0YShTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCB3ZWJzaXRl
RGF0YQogICAgIH07CiAKICAgICBpZiAoKHdlYnNpdGVEYXRhVHlwZXMgJiBXZWJzaXRlRGF0YVR5
cGVEaXNrQ2FjaGUpICYmICFzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkgewotICAgICAgICBjbGVh
ckRpc2tDYWNoZShtb2RpZmllZFNpbmNlLCBXVEY6Om1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsK
KyAgICAgICAgY2xlYXJEaXNrQ2FjaGUobW9kaWZpZWRTaW5jZSwgV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC00MTAsNyArNDEwLDcgQEAg
c3RhdGljIHZvaWQgY2xlYXJEaXNrQ2FjaGVFbnRyaWVzKGNvbnN0IFZlY3RvcjxTZWN1cml0eU9y
aWdpbkRhdGE+JiBvcmlnaW5zLCBzdGQKICAgICBOZXR3b3JrUHJvY2Vzczo6Y2xlYXJDRlVSTENh
Y2hlRm9yT3JpZ2lucyhvcmlnaW5zKTsKICNlbmRpZgogCi0gICAgUnVuTG9vcDo6bWFpbigpLmRp
c3BhdGNoKFdURjo6bW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIFJ1bkxvb3A6Om1haW4o
KS5kaXNwYXRjaChXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZvaWQgTmV0d29y
a1Byb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyhTZXNzaW9uSUQgc2Vzc2lvbklE
LCB1aW50NjRfdCB3ZWJzaXRlRGF0YVR5cGVzLCBjb25zdCBWZWN0b3I8U2VjdXJpdHlPcmlnaW5E
YXRhPiYgb3JpZ2lucywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGNvb2tpZUhvc3ROYW1lcywgdWlu
dDY0X3QgY2FsbGJhY2tJRCkKQEAgLTQyNSw3ICs0MjUsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNz
OjpkZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMoU2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0
X3QgdwogICAgIH07CiAKICAgICBpZiAoKHdlYnNpdGVEYXRhVHlwZXMgJiBXZWJzaXRlRGF0YVR5
cGVEaXNrQ2FjaGUpICYmICFzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkgewotICAgICAgICBjbGVh
ckRpc2tDYWNoZUVudHJpZXMob3JpZ2lucywgV1RGOjptb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
CisgICAgICAgIGNsZWFyRGlza0NhY2hlRW50cmllcyhvcmlnaW5zLCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4
IDA3YTU1MTBhYzEyM2VjZmQwY2JkZjVkNTQ5Njc0MGExNTVjMzc5ZjQuLjU1Mjg0M2M2NDZmZGRi
M2UwNGI3MWI2YTEyYjQyZWZmYmZiNDliMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcApAQCAtNTAsNyArNTAs
NyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogc3RydWN0IE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6
U3luY2hyb25vdXNMb2FkRGF0YSB7CiAgICAgU3luY2hyb25vdXNMb2FkRGF0YShSZWZQdHI8TWVz
c2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpQZXJmb3JtU3luY2hyb25vdXNM
b2FkOjpEZWxheWVkUmVwbHk+JiYgcmVwbHkpCi0gICAgICAgIDogZGVsYXllZFJlcGx5KFdURjo6
bW92ZShyZXBseSkpCisgICAgICAgIDogZGVsYXllZFJlcGx5KFdURk1vdmUocmVwbHkpKQogICAg
IHsKICAgICAgICAgQVNTRVJUKGRlbGF5ZWRSZXBseSk7CiAgICAgfQpAQCAtOTcsNyArOTcsNyBA
QCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcihjb25zdCBOZXR3
b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycwogICAgIH0KIAogICAgIGlmIChzeW5jaHJvbm91c1Jl
cGx5KQotICAgICAgICBtX3N5bmNocm9ub3VzTG9hZERhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFN5
bmNocm9ub3VzTG9hZERhdGE+KFdURjo6bW92ZShzeW5jaHJvbm91c1JlcGx5KSk7CisgICAgICAg
IG1fc3luY2hyb25vdXNMb2FkRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8U3luY2hyb25vdXNMb2Fk
RGF0YT4oV1RGTW92ZShzeW5jaHJvbm91c1JlcGx5KSk7CiB9CiAKIE5ldHdvcmtSZXNvdXJjZUxv
YWRlcjo6fk5ldHdvcmtSZXNvdXJjZUxvYWRlcigpCkBAIC0xNzIsNyArMTcyLDcgQEAgdm9pZCBO
ZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnJldHJpZXZlQ2FjaGVFbnRyeShjb25zdCBSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAg
aWYgKGVudHJ5LT5yZWRpcmVjdFJlcXVlc3QoKSkgewotICAgICAgICAgICAgbG9hZGVyLT5kaXNw
YXRjaFdpbGxTZW5kUmVxdWVzdEZvckNhY2hlRW50cnkoV1RGOjptb3ZlKGVudHJ5KSk7CisgICAg
ICAgICAgICBsb2FkZXItPmRpc3BhdGNoV2lsbFNlbmRSZXF1ZXN0Rm9yQ2FjaGVFbnRyeShXVEZN
b3ZlKGVudHJ5KSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgaWYg
KGxvYWRlci0+bV9wYXJhbWV0ZXJzLm5lZWRzQ2VydGlmaWNhdGVJbmZvICYmICFlbnRyeS0+cmVz
cG9uc2UoKS5jb250YWluc0NlcnRpZmljYXRlSW5mbygpKSB7CkBAIC0xODAsMTAgKzE4MCwxMCBA
QCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6cmV0cmlldmVDYWNoZUVudHJ5KGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog
ICAgICAgICBpZiAoZW50cnktPm5lZWRzVmFsaWRhdGlvbigpKSB7Ci0gICAgICAgICAgICBsb2Fk
ZXItPnZhbGlkYXRlQ2FjaGVFbnRyeShXVEY6Om1vdmUoZW50cnkpKTsKKyAgICAgICAgICAgIGxv
YWRlci0+dmFsaWRhdGVDYWNoZUVudHJ5KFdURk1vdmUoZW50cnkpKTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQotICAgICAgICBsb2FkZXItPmRpZFJldHJpZXZlQ2FjaGVFbnRyeShX
VEY6Om1vdmUoZW50cnkpKTsKKyAgICAgICAgbG9hZGVyLT5kaWRSZXRyaWV2ZUNhY2hlRW50cnko
V1RGTW92ZShlbnRyeSkpOwogICAgIH0pOwogfQogI2VuZGlmCkBAIC0zNDIsNyArMzQyLDcgQEAg
dm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoZG91YmxlIGZpbmlz
aFRpbWUpCiAgICAgICAgIC8vIDMwNCBOb3QgTW9kaWZpZWQKICAgICAgICAgQVNTRVJUKG1fcmVz
cG9uc2UuaHR0cFN0YXR1c0NvZGUoKSA9PSAzMDQpOwogICAgICAgICBMT0coTmV0d29ya0NhY2hl
LCAiKE5ldHdvcmtQcm9jZXNzKSByZXZhbGlkYXRlZCIpOwotICAgICAgICBkaWRSZXRyaWV2ZUNh
Y2hlRW50cnkoV1RGOjptb3ZlKG1fY2FjaGVFbnRyeUZvclZhbGlkYXRpb24pKTsKKyAgICAgICAg
ZGlkUmV0cmlldmVDYWNoZUVudHJ5KFdURk1vdmUobV9jYWNoZUVudHJ5Rm9yVmFsaWRhdGlvbikp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogI2VuZGlmCkBAIC00OTcsNyArNDk3LDcgQEAgdm9p
ZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnRyeVN0b3JlQXNDYWNoZUVudHJ5KCkKICAgICAvLyBL
ZWVwIHRoZSBjb25uZWN0aW9uIGFsaXZlLgogICAgIFJlZlB0cjxOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcz4gY29ubmVjdGlvbigmY29ubmVjdGlvblRvV2ViUHJvY2VzcygpKTsKICAgICBS
ZWZQdHI8TmV0d29ya1Jlc291cmNlTG9hZGVyPiBsb2FkZXIodGhpcyk7Ci0gICAgTmV0d29ya0Nh
Y2hlOjpzaW5nbGV0b24oKS5zdG9yZShtX25ldHdvcmtMb2FkLT5jdXJyZW50UmVxdWVzdCgpLCBt
X3Jlc3BvbnNlLCBXVEY6Om1vdmUobV9idWZmZXJlZERhdGFGb3JDYWNoZSksIFtsb2FkZXIsIGNv
bm5lY3Rpb25dKE5ldHdvcmtDYWNoZTo6TWFwcGVkQm9keSYgbWFwcGVkQm9keSkgeworICAgIE5l
dHdvcmtDYWNoZTo6c2luZ2xldG9uKCkuc3RvcmUobV9uZXR3b3JrTG9hZC0+Y3VycmVudFJlcXVl
c3QoKSwgbV9yZXNwb25zZSwgV1RGTW92ZShtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKSwgW2xvYWRl
ciwgY29ubmVjdGlvbl0oTmV0d29ya0NhY2hlOjpNYXBwZWRCb2R5JiBtYXBwZWRCb2R5KSB7CiAj
aWYgRU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkKICAgICAgICAgaWYgKG1hcHBlZEJvZHkuc2hh
cmVhYmxlUmVzb3VyY2VIYW5kbGUuaXNOdWxsKCkpCiAgICAgICAgICAgICByZXR1cm47CkBAIC01
NDksNyArNTQ5LDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnZhbGlkYXRlQ2FjaGVF
bnRyeShzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NhY2hlOjpFbnQKICAgICAgICAgICAgIHJldmFs
aWRhdGlvblJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpJZk1vZGlm
aWVkU2luY2UsIGxhc3RNb2RpZmllZCk7CiAgICAgfQogCi0gICAgbV9jYWNoZUVudHJ5Rm9yVmFs
aWRhdGlvbiA9IFdURjo6bW92ZShlbnRyeSk7CisgICAgbV9jYWNoZUVudHJ5Rm9yVmFsaWRhdGlv
biA9IFdURk1vdmUoZW50cnkpOwogCiAgICAgc3RhcnROZXR3b3JrTG9hZChyZXZhbGlkYXRpb25S
ZXF1ZXN0KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05l
dHdvcmtSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Jlc291cmNlTG9hZGVyLmgKaW5kZXggOGQ5ZTAzZjRlNmM4NmFjNjE1MmY2MjBlNWY0ZWQ0
ZTNhNmQ1NThjNi4uZDk4MTBkY2I0ODY4MGM3ODRiYjViN2ZhYzQ1MmFjMmQwNTljZjk5YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9h
ZGVyLmgKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNl
TG9hZGVyLmgKQEAgLTUzLDcgKzUzLDcgQEAgY2xhc3MgTmV0d29ya1Jlc291cmNlTG9hZGVyIGZp
bmFsIDogcHVibGljIFJlZkNvdW50ZWQ8TmV0d29ya1Jlc291cmNlTG9hZGVyPiwgcHUKIHB1Ymxp
YzoKICAgICBzdGF0aWMgUmVmPE5ldHdvcmtSZXNvdXJjZUxvYWRlcj4gY3JlYXRlKGNvbnN0IE5l
dHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbiwgUmVmUHRyPE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6UGVyZm9ybVN5bmNocm9ub3VzTG9hZDo6RGVsYXllZFJlcGx5PiYm
IHJlcGx5ID0gbnVsbHB0cikKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE5l
dHdvcmtSZXNvdXJjZUxvYWRlcihwYXJhbWV0ZXJzLCBjb25uZWN0aW9uLCBXVEY6Om1vdmUocmVw
bHkpKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE5ldHdvcmtSZXNvdXJjZUxvYWRl
cihwYXJhbWV0ZXJzLCBjb25uZWN0aW9uLCBXVEZNb3ZlKHJlcGx5KSkpOwogICAgIH0KICAgICB2
aXJ0dWFsIH5OZXR3b3JrUmVzb3VyY2VMb2FkZXIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAKaW5kZXggY2I0NDM3NjA1
ZGY5NzM4MDNmNDIzYWM2ZTNiNzJiMmQyYTgwNDUwNi4uYTBlMWQyOWQ2YzgyMDM4MDU0YWRlMDcw
MWE4NjFjZGRmZDA4MGY2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwCkBAIC0zNzIsNyArMzcyLDcgQEAgdm9pZCBDYWNo
ZTo6cmV0cmlldmUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25z
dCBHbG9iYWxGcmFtZUkKICNpZiBFTkFCTEUoTkVUV09SS19DQUNIRV9TUEVDVUxBVElWRV9SRVZB
TElEQVRJT04pCiAgICAgaWYgKG1fc3BlY3VsYXRpdmVMb2FkTWFuYWdlciAmJiBtX3NwZWN1bGF0
aXZlTG9hZE1hbmFnZXItPnJldHJpZXZlKGZyYW1lSUQsIHN0b3JhZ2VLZXksIFtyZXF1ZXN0LCBj
b21wbGV0aW9uSGFuZGxlcl0oc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBlbnRyeSkgewogICAgICAg
ICBpZiAoZW50cnkgJiYgdmVyaWZ5VmFyeWluZ1JlcXVlc3RIZWFkZXJzKGVudHJ5LT52YXJ5aW5n
UmVxdWVzdEhlYWRlcnMoKSwgcmVxdWVzdCkpCi0gICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihXVEY6Om1vdmUoZW50cnkpKTsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1v
dmUoZW50cnkpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
bnVsbHB0cik7CiAgICAgfSkpCkBAIC00MTIsNyArNDEyLDcgQEAgdm9pZCBDYWNoZTo6cmV0cmll
dmUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBHbG9iYWxG
cmFtZUkKICAgICAgICAgYXV0byBlbGFwc2VkTVMgPSBzdGF0aWNfY2FzdDxpbnQ2NF90PihzdGQ6
OmNocm9ubzo6ZHVyYXRpb25fY2FzdDxzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzPihzdGQ6OmNo
cm9ubzo6c3lzdGVtX2Nsb2NrOjpub3coKSAtIHN0YXJ0VGltZSkuY291bnQoKSk7CiAgICAgICAg
IExPRyhOZXR3b3JrQ2FjaGUsICIoTmV0d29ya1Byb2Nlc3MpIHJldHJpZXZlIGNvbXBsZXRlIHVz
ZURlY2lzaW9uPSVkIHByaW9yaXR5PSVkIHRpbWU9JSIgUFJJaTY0ICJtcyIsIHN0YXRpY19jYXN0
PGludD4odXNlRGVjaXNpb24pLCBzdGF0aWNfY2FzdDxpbnQ+KHJlcXVlc3QucHJpb3JpdHkoKSks
IGVsYXBzZWRNUyk7CiAjZW5kaWYKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGOjptb3Zl
KGVudHJ5KSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoZW50cnkpKTsKIAog
ICAgICAgICBpZiAobV9zdGF0aXN0aWNzKQogICAgICAgICAgICAgbV9zdGF0aXN0aWNzLT5yZWNv
cmRSZXRyaWV2ZWRDYWNoZWRFbnRyeShmcmFtZUlELmZpcnN0LCBzdG9yYWdlS2V5LCByZXF1ZXN0
LCB1c2VEZWNpc2lvbik7CkBAIC00NDQsNyArNDQ0LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5
PiBDYWNoZTo6c3RvcmUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBj
b24KICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgc3RkOjp1bmlxdWVfcHRy
PEVudHJ5PiBjYWNoZUVudHJ5ID0gc3RkOjptYWtlX3VuaXF1ZTxFbnRyeT4obWFrZUNhY2hlS2V5
KHJlcXVlc3QpLCByZXNwb25zZSwgV1RGOjptb3ZlKHJlc3BvbnNlRGF0YSksIGNvbGxlY3RWYXJ5
aW5nUmVxdWVzdEhlYWRlcnMocmVxdWVzdCwgcmVzcG9uc2UpKTsKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8RW50cnk+IGNhY2hlRW50cnkgPSBzdGQ6Om1ha2VfdW5pcXVlPEVudHJ5PihtYWtlQ2FjaGVL
ZXkocmVxdWVzdCksIHJlc3BvbnNlLCBXVEZNb3ZlKHJlc3BvbnNlRGF0YSksIGNvbGxlY3RWYXJ5
aW5nUmVxdWVzdEhlYWRlcnMocmVxdWVzdCwgcmVzcG9uc2UpKTsKIAogICAgIGF1dG8gcmVjb3Jk
ID0gY2FjaGVFbnRyeS0+ZW5jb2RlQXNTdG9yYWdlUmVjb3JkKCk7CiAKQEAgLTQ1Miw3ICs0NTIs
NyBAQCBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IENhY2hlOjpzdG9yZShjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbgogICAgICAgICBNYXBwZWRCb2R5IG1hcHBlZEJv
ZHk7CiAjaWYgRU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkKICAgICAgICAgaWYgKFJlZlB0cjxT
aGFyZWRNZW1vcnk+IHNoYXJlZE1lbW9yeSA9IGJvZHlEYXRhLnRyeUNyZWF0ZVNoYXJlZE1lbW9y
eSgpKSB7Ci0gICAgICAgICAgICBtYXBwZWRCb2R5LnNoYXJlYWJsZVJlc291cmNlID0gU2hhcmVh
YmxlUmVzb3VyY2U6OmNyZWF0ZShXVEY6Om1vdmUoc2hhcmVkTWVtb3J5KSwgMCwgYm9keURhdGEu
c2l6ZSgpKTsKKyAgICAgICAgICAgIG1hcHBlZEJvZHkuc2hhcmVhYmxlUmVzb3VyY2UgPSBTaGFy
ZWFibGVSZXNvdXJjZTo6Y3JlYXRlKFdURk1vdmUoc2hhcmVkTWVtb3J5KSwgMCwgYm9keURhdGEu
c2l6ZSgpKTsKICAgICAgICAgICAgIEFTU0VSVChtYXBwZWRCb2R5LnNoYXJlYWJsZVJlc291cmNl
KTsKICAgICAgICAgICAgIG1hcHBlZEJvZHkuc2hhcmVhYmxlUmVzb3VyY2UtPmNyZWF0ZUhhbmRs
ZShtYXBwZWRCb2R5LnNoYXJlYWJsZVJlc291cmNlSGFuZGxlKTsKICAgICAgICAgfQpAQCAtNjIw
LDcgKzYyMCw3IEBAIHZvaWQgQ2FjaGU6OmNsZWFyKHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6
OnRpbWVfcG9pbnQgbW9kaWZpZWRTaW5jZSwgc3RkOjpmdW5jCiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAgICAgU3RyaW5nIGFueVR5cGU7Ci0gICAgbV9zdG9yYWdlLT5jbGVhcihhbnlUeXBlLCBt
b2RpZmllZFNpbmNlLCBXVEY6Om1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBtX3N0b3Jh
Z2UtPmNsZWFyKGFueVR5cGUsIG1vZGlmaWVkU2luY2UsIFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKTsKIAogICAgIGRlbGV0ZUR1bXBGaWxlKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVDb2RlcnMuaCBiL1NvdXJjZS9X
ZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUNvZGVycy5oCmluZGV4IDg5
N2E3YWZjZTk4MWM1OTJjYzdlMzQ1NzA5MGJkMWQ0YmYyNmQ3MWMuLjEzYWVmYmY0ZmJiMDJhYjA2
ZDNiMWQyZjIzOWI2ZDI5NTFkM2U2YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUNvZGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUNvZGVycy5oCkBAIC0xMjQsNyArMTI0
LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5PiBzdHJ1Y3Qg
VmVjdG9yQ29kZXI8ZmFsc2UsIFQsIGlubGluZUMKICAgICAgICAgICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoZWxlbWVudCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAg
ICAgCi0gICAgICAgICAgICB0bXAuYXBwZW5kKFdURjo6bW92ZShlbGVtZW50KSk7CisgICAgICAg
ICAgICB0bXAuYXBwZW5kKFdURk1vdmUoZWxlbWVudCkpOwogICAgICAgICB9CiAKICAgICAgICAg
dG1wLnNocmlua1RvRml0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhU291cC5jcHAKaW5kZXggYTA4YTA2ZTgy
YTFlYmEzZWU3MDllMjNiMjRhN2JjYjg0MjFjNTc2OS4uNjQ0YzM4ZTMwNGY3ZTgyMjMwMzIxNDZi
MWU2NDdkYTEyM2Q4YzA4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YVNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGFTb3VwLmNwcApAQCAtNTcsNyArNTcs
NyBAQCBEYXRhOjpEYXRhKEdSZWZQdHI8U291cEJ1ZmZlcj4mJiBidWZmZXIsIGludCBmZCkKIERh
dGEgRGF0YTo6ZW1wdHkoKQogewogICAgIEdSZWZQdHI8U291cEJ1ZmZlcj4gYnVmZmVyID0gYWRv
cHRHUmVmKHNvdXBfYnVmZmVyX25ldyhTT1VQX01FTU9SWV9UQUtFLCBudWxscHRyLCAwKSk7Ci0g
ICAgcmV0dXJuIHsgV1RGOjptb3ZlKGJ1ZmZlcikgfTsKKyAgICByZXR1cm4geyBXVEZNb3ZlKGJ1
ZmZlcikgfTsKIH0KIAogY29uc3QgdWludDhfdCogRGF0YTo6ZGF0YSgpIGNvbnN0CkBAIC04NCw3
ICs4NCw3IEBAIERhdGEgRGF0YTo6c3VicmFuZ2Uoc2l6ZV90IG9mZnNldCwgc2l6ZV90IHNpemUp
IGNvbnN0CiAgICAgICAgIHJldHVybiB7IH07CiAKICAgICBHUmVmUHRyPFNvdXBCdWZmZXI+IHN1
YkJ1ZmZlciA9IGFkb3B0R1JlZihzb3VwX2J1ZmZlcl9uZXdfc3ViYnVmZmVyKG1fYnVmZmVyLmdl
dCgpLCBvZmZzZXQsIHNpemUpKTsKLSAgICByZXR1cm4geyBXVEY6Om1vdmUoc3ViQnVmZmVyKSB9
OworICAgIHJldHVybiB7IFdURk1vdmUoc3ViQnVmZmVyKSB9OwogfQogCiBEYXRhIGNvbmNhdGVu
YXRlKGNvbnN0IERhdGEmIGEsIGNvbnN0IERhdGEmIGIpCkBAIC05OSw3ICs5OSw3IEBAIERhdGEg
Y29uY2F0ZW5hdGUoY29uc3QgRGF0YSYgYSwgY29uc3QgRGF0YSYgYikKICAgICBtZW1jcHkoZGF0
YSwgYS5zb3VwQnVmZmVyKCktPmRhdGEsIGEuc291cEJ1ZmZlcigpLT5sZW5ndGgpOwogICAgIG1l
bWNweShkYXRhICsgYS5zb3VwQnVmZmVyKCktPmxlbmd0aCwgYi5zb3VwQnVmZmVyKCktPmRhdGEs
IGIuc291cEJ1ZmZlcigpLT5sZW5ndGgpOwogICAgIEdSZWZQdHI8U291cEJ1ZmZlcj4gYnVmZmVy
ID0gYWRvcHRHUmVmKHNvdXBfYnVmZmVyX25ld193aXRoX293bmVyKGRhdGEsIHNpemUsIGRhdGEs
IGZhc3RGcmVlKSk7Ci0gICAgcmV0dXJuIHsgV1RGOjptb3ZlKGJ1ZmZlcikgfTsKKyAgICByZXR1
cm4geyBXVEZNb3ZlKGJ1ZmZlcikgfTsKIH0KIAogc3RydWN0IE1hcFdyYXBwZXIgewpAQCAtMTI1
LDcgKzEyNSw3IEBAIERhdGEgRGF0YTo6YWRvcHRNYXAodm9pZCogbWFwLCBzaXplX3Qgc2l6ZSwg
aW50IGZkKQogICAgIEFTU0VSVChtYXAgIT0gTUFQX0ZBSUxFRCk7CiAgICAgTWFwV3JhcHBlciog
d3JhcHBlciA9IG5ldyBNYXBXcmFwcGVyIHsgbWFwLCBzaXplLCBmZCB9OwogICAgIEdSZWZQdHI8
U291cEJ1ZmZlcj4gYnVmZmVyID0gYWRvcHRHUmVmKHNvdXBfYnVmZmVyX25ld193aXRoX293bmVy
KG1hcCwgc2l6ZSwgd3JhcHBlciwgcmVpbnRlcnByZXRfY2FzdDxHRGVzdHJveU5vdGlmeT4oZGVs
ZXRlTWFwV3JhcHBlcikpKTsKLSAgICByZXR1cm4geyBXVEY6Om1vdmUoYnVmZmVyKSwgZmQgfTsK
KyAgICByZXR1cm4geyBXVEZNb3ZlKGJ1ZmZlciksIGZkIH07CiB9CiAKIFJlZlB0cjxTaGFyZWRN
ZW1vcnk+IERhdGE6OnRyeUNyZWF0ZVNoYXJlZE1lbW9yeSgpIGNvbnN0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5j
cHAKaW5kZXggZmU2OWRhZTUzODc5MmNlN2M2MDNiMTA3N2QxOGI2YTRkYWRjMWRhYy4uZmFhNGYw
NGQxODMyMGRjN2RmYTMyOWU5OTI0NGU4ODM1NzI1ZTRiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcApA
QCAtNDQsNyArNDQsNyBAQCBFbnRyeTo6RW50cnkoY29uc3QgS2V5JiBrZXksIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8VwogICAgICwgbV90aW1lU3Rh
bXAoc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6bm93KCkpCiAgICAgLCBtX3Jlc3BvbnNlKHJl
c3BvbnNlKQogICAgICwgbV92YXJ5aW5nUmVxdWVzdEhlYWRlcnModmFyeWluZ1JlcXVlc3RIZWFk
ZXJzKQotICAgICwgbV9idWZmZXIoV1RGOjptb3ZlKGJ1ZmZlcikpCisgICAgLCBtX2J1ZmZlcihX
VEZNb3ZlKGJ1ZmZlcikpCiB7CiAgICAgQVNTRVJUKG1fa2V5LnR5cGUoKSA9PSAicmVzb3VyY2Ui
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZUlPQ2hhbm5lbFNvdXAuY3BwIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlSU9DaGFubmVsU291cC5jcHAKaW5kZXggMzdhNTM2YWQ5Yjhm
ZDMxYjFjNDA2OWFmN2M0ZTUyZDZhNGJmZTM3OC4uNDMzOThiMTMzZThhOTNiMjU2NmUxNmZhYzJm
NGM0NDAxYTdkODY0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlSU9DaGFubmVsU291cC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlSU9DaGFubmVsU291cC5jcHAKQEAgLTc3
LDcgKzc3LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIHJ1blRhc2tJblF1ZXVlKHN0ZDo6ZnVuY3Rp
b248dm9pZCAoKT4gdGFzaywgV29ya1F1ZXVlKiBxdWV1ZSkKICAgICB9CiAKICAgICAvLyBVc2lu
ZyBudWxscHRyIGFzIHF1ZXVlIHN1Ym1pdHMgdGhlIHJlc3VsdCB0byB0aGUgbWFpbiBjb250ZXh0
LgotICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChXVEY6Om1vdmUodGFzaykpOworICAgIFJ1
bkxvb3A6Om1haW4oKS5kaXNwYXRjaChXVEZNb3ZlKHRhc2spKTsKIH0KIAogc3RhdGljIHZvaWQg
ZmlsbERhdGFGcm9tUmVhZEJ1ZmZlcihTb3VwQnVmZmVyKiByZWFkQnVmZmVyLCBzaXplX3Qgc2l6
ZSwgRGF0YSYgZGF0YSkKQEAgLTkzLDcgKzkzLDcgQEAgc3RhdGljIHZvaWQgZmlsbERhdGFGcm9t
UmVhZEJ1ZmZlcihTb3VwQnVmZmVyKiByZWFkQnVmZmVyLCBzaXplX3Qgc2l6ZSwgRGF0YSYgZGEK
ICAgICAgICAgLy8gRmlyc3QgY2h1bmssIHdlIG5lZWQgdG8gZm9yY2UgdGhlIGRhdGEgdG8gYmUg
Y29waWVkLgogICAgICAgICBkYXRhID0geyByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3Qq
PihidWZmZXItPmRhdGEpLCBzaXplIH07CiAgICAgfSBlbHNlIHsKLSAgICAgICAgRGF0YSBkYXRh
UmVhZChXVEY6Om1vdmUoYnVmZmVyKSk7CisgICAgICAgIERhdGEgZGF0YVJlYWQoV1RGTW92ZShi
dWZmZXIpKTsKICAgICAgICAgLy8gQ29uY2F0ZW5hdGUgd2lsbCBjb3B5IHRoZSBkYXRhLgogICAg
ICAgICBkYXRhID0gY29uY2F0ZW5hdGUoZGF0YSwgZGF0YVJlYWQpOwogICAgIH0KQEAgLTIxNSw3
ICsyMTUsNyBAQCB2b2lkIElPQ2hhbm5lbDo6cmVhZFN5bmNJblRocmVhZChzaXplX3Qgb2Zmc2V0
LCBzaXplX3Qgc2l6ZSwgV29ya1F1ZXVlKiBxdWV1ZSwgcwogICAgICAgICBHUmVmUHRyPFNvdXBC
dWZmZXI+IGJ1ZmZlckNhcHR1cmUgPSBkYXRhLnNvdXBCdWZmZXIoKTsKICAgICAgICAgcnVuVGFz
a0luUXVldWUoW2NoYW5uZWwsIGJ1ZmZlckNhcHR1cmUsIGNvbXBsZXRpb25IYW5kbGVyXSB7CiAg
ICAgICAgICAgICBHUmVmUHRyPFNvdXBCdWZmZXI+IGJ1ZmZlciA9IGJ1ZmZlckNhcHR1cmU7Ci0g
ICAgICAgICAgICBEYXRhIGRhdGEgPSB7IFdURjo6bW92ZShidWZmZXIpIH07CisgICAgICAgICAg
ICBEYXRhIGRhdGEgPSB7IFdURk1vdmUoYnVmZmVyKSB9OwogICAgICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoZGF0YSwgMCk7CiAgICAgICAgIH0sIHF1ZXVlKTsKICAgICB9KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1
bGF0aXZlTG9hZC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwCmluZGV4IDhmZDQ2MWI2ZWJiZjQxMTE2NTcyYTAw
ZGQzYTU3MDUxMzljNDBmMDEuLmY2ZjU5NDAzMDA0MmZlYWVmY2MxMGJkOGM0YmE3NDY0NDVmYzZk
ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcApAQCAtNDIsMTAgKzQy
LDEwIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBTcGVjdWxhdGl2ZUxvYWQ6OlNwZWN1
bGF0aXZlTG9hZChjb25zdCBHbG9iYWxGcmFtZUlEJiBmcmFtZUlELCBjb25zdCBSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QsIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ2FjaGU6OkVudHJ5PiBjYWNo
ZUVudHJ5Rm9yVmFsaWRhdGlvbiwgUmV2YWxpZGF0aW9uQ29tcGxldGlvbkhhbmRsZXImJiBjb21w
bGV0aW9uSGFuZGxlcikKICAgICA6IG1fZnJhbWVJRChmcmFtZUlEKQotICAgICwgbV9jb21wbGV0
aW9uSGFuZGxlcihXVEY6Om1vdmUoY29tcGxldGlvbkhhbmRsZXIpKQorICAgICwgbV9jb21wbGV0
aW9uSGFuZGxlcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkKICAgICAsIG1fb3JpZ2luYWxS
ZXF1ZXN0KHJlcXVlc3QpCiAgICAgLCBtX2J1ZmZlcmVkRGF0YUZvckNhY2hlKFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKCkpCi0gICAgLCBtX2NhY2hlRW50cnlGb3JWYWxpZGF0aW9uKFdURjo6bW92ZShj
YWNoZUVudHJ5Rm9yVmFsaWRhdGlvbikpCisgICAgLCBtX2NhY2hlRW50cnlGb3JWYWxpZGF0aW9u
KFdURk1vdmUoY2FjaGVFbnRyeUZvclZhbGlkYXRpb24pKQogewogICAgIEFTU0VSVChtX2NhY2hl
RW50cnlGb3JWYWxpZGF0aW9uKTsKICAgICBBU1NFUlQobV9jYWNoZUVudHJ5Rm9yVmFsaWRhdGlv
bi0+bmVlZHNWYWxpZGF0aW9uKCkpOwpAQCAtMTE3LDcgKzExNyw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVMb2FkOjpkaWRGaW5pc2hMb2FkaW5nKGRvdWJsZSBmaW5pc2hUaW1lKQogICAgIH0KIAogICAg
IGlmIChtX2J1ZmZlcmVkRGF0YUZvckNhY2hlICYmIGhhc0NhY2hlYWJsZVJlZGlyZWN0KQotICAg
ICAgICBtX2NhY2hlRW50cnlGb3JWYWxpZGF0aW9uID0gTmV0d29ya0NhY2hlOjpzaW5nbGV0b24o
KS5zdG9yZShtX29yaWdpbmFsUmVxdWVzdCwgbV9yZXNwb25zZSwgV1RGOjptb3ZlKG1fYnVmZmVy
ZWREYXRhRm9yQ2FjaGUpLCBbXShOZXR3b3JrQ2FjaGU6Ok1hcHBlZEJvZHkmIG1hcHBlZEJvZHkp
IHsgfSk7CisgICAgICAgIG1fY2FjaGVFbnRyeUZvclZhbGlkYXRpb24gPSBOZXR3b3JrQ2FjaGU6
OnNpbmdsZXRvbigpLnN0b3JlKG1fb3JpZ2luYWxSZXF1ZXN0LCBtX3Jlc3BvbnNlLCBXVEZNb3Zl
KG1fYnVmZmVyZWREYXRhRm9yQ2FjaGUpLCBbXShOZXR3b3JrQ2FjaGU6Ok1hcHBlZEJvZHkmIG1h
cHBlZEJvZHkpIHsgfSk7CiAgICAgZWxzZSBpZiAoIWhhc0NhY2hlYWJsZVJlZGlyZWN0KSB7CiAg
ICAgICAgIC8vIE1ha2Ugc3VyZSB3ZSBkb24ndCBrZWVwIGEgc3RhbGUgZW50cnkgaW4gdGhlIGNh
Y2hlLgogICAgICAgICBOZXR3b3JrQ2FjaGU6OnNpbmdsZXRvbigpLnJlbW92ZShtX29yaWdpbmFs
UmVxdWVzdCk7CkBAIC0xMzksNyArMTM5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUxvYWQ6OmRpZENv
bXBsZXRlKCkKIAogICAgIG1fbmV0d29ya0xvYWQgPSBudWxscHRyOwogCi0gICAgbV9jb21wbGV0
aW9uSGFuZGxlcihXVEY6Om1vdmUobV9jYWNoZUVudHJ5Rm9yVmFsaWRhdGlvbikpOworICAgIG1f
Y29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShtX2NhY2hlRW50cnlGb3JWYWxpZGF0aW9uKSk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIE5ldHdvcmtDYWNoZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVT
cGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmNwcAppbmRleCBmZDMzYjQ3YjI0ZTNkNzA1NTI3OWMxOWVj
ZDM4MzY0ZGU4MjljM2FmLi4wMjc1OTExMDAzMjE2NTM4NTA2ZTI5Y2IzM2Q5MzBiZDAwYmYwNzkx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmNwcApA
QCAtMTEzLDcgKzExMyw3IEBAIGNsYXNzIFNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OkV4cGlyaW5n
RW50cnkgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIGV4cGxp
Y2l0IEV4cGlyaW5nRW50cnkoc3RkOjpmdW5jdGlvbjx2b2lkKCk+JiYgZXhwaXJhdGlvbkhhbmRs
ZXIpCi0gICAgICAgIDogbV9saWZldGltZVRpbWVyKFdURjo6bW92ZShleHBpcmF0aW9uSGFuZGxl
cikpCisgICAgICAgIDogbV9saWZldGltZVRpbWVyKFdURk1vdmUoZXhwaXJhdGlvbkhhbmRsZXIp
KQogICAgIHsKICAgICAgICAgbV9saWZldGltZVRpbWVyLnN0YXJ0T25lU2hvdChwcmVsb2FkZWRF
bnRyeUxpZmV0aW1lKTsKICAgICB9CkBAIC0xMjYsMTUgKzEyNiwxNSBAQCBjbGFzcyBTcGVjdWxh
dGl2ZUxvYWRNYW5hZ2VyOjpQcmVsb2FkZWRFbnRyeSA6IHByaXZhdGUgRXhwaXJpbmdFbnRyeSB7
CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgUHJlbG9hZGVkRW50
cnkoc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBlbnRyeSwgV2FzUmV2YWxpZGF0ZWQgd2FzUmV2YWxp
ZGF0ZWQsIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiYmIGxpZmV0aW1lUmVhY2hlZEhhbmRsZXIpCi0g
ICAgICAgIDogRXhwaXJpbmdFbnRyeShXVEY6Om1vdmUobGlmZXRpbWVSZWFjaGVkSGFuZGxlcikp
Ci0gICAgICAgICwgbV9lbnRyeShXVEY6Om1vdmUoZW50cnkpKQorICAgICAgICA6IEV4cGlyaW5n
RW50cnkoV1RGTW92ZShsaWZldGltZVJlYWNoZWRIYW5kbGVyKSkKKyAgICAgICAgLCBtX2VudHJ5
KFdURk1vdmUoZW50cnkpKQogICAgICAgICAsIG1fd2FzUmV2YWxpZGF0ZWQod2FzUmV2YWxpZGF0
ZWQgPT0gV2FzUmV2YWxpZGF0ZWQ6OlllcykKICAgICB7IH0KIAogICAgIHN0ZDo6dW5pcXVlX3B0
cjxFbnRyeT4gdGFrZUNhY2hlRW50cnkoKQogICAgIHsKICAgICAgICAgQVNTRVJUKG1fZW50cnkp
OwotICAgICAgICByZXR1cm4gV1RGOjptb3ZlKG1fZW50cnkpOworICAgICAgICByZXR1cm4gV1RG
TW92ZShtX2VudHJ5KTsKICAgICB9CiAKICAgICBib29sIHdhc1JldmFsaWRhdGVkKCkgY29uc3Qg
eyByZXR1cm4gbV93YXNSZXZhbGlkYXRlZDsgfQpAQCAtMTQ4LDcgKzE0OCw3IEBAIGNsYXNzIFNw
ZWN1bGF0aXZlTG9hZE1hbmFnZXI6OlBlbmRpbmdGcmFtZUxvYWQgOiBwdWJsaWMgUmVmQ291bnRl
ZDxQZW5kaW5nRnJhbWVMCiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxQZW5kaW5nRnJhbWVMb2Fk
PiBjcmVhdGUoU3RvcmFnZSYgc3RvcmFnZSwgY29uc3QgS2V5JiBtYWluUmVzb3VyY2VLZXksIHN0
ZDo6ZnVuY3Rpb248dm9pZCgpPiYmIGxvYWRDb21wbGV0aW9uSGFuZGxlcikKICAgICB7Ci0gICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFBlbmRpbmdGcmFtZUxvYWQoc3RvcmFnZSwgbWFpblJl
c291cmNlS2V5LCBXVEY6Om1vdmUobG9hZENvbXBsZXRpb25IYW5kbGVyKSkpOworICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBQZW5kaW5nRnJhbWVMb2FkKHN0b3JhZ2UsIG1haW5SZXNvdXJj
ZUtleSwgV1RGTW92ZShsb2FkQ29tcGxldGlvbkhhbmRsZXIpKSk7CiAgICAgfQogCiAgICAgflBl
bmRpbmdGcmFtZUxvYWQoKQpAQCAtMTg0LDcgKzE4NCw3IEBAIHB1YmxpYzoKICAgICAgICAgQVNT
RVJUKCFtX2V4aXN0aW5nRW50cnkpOwogICAgICAgICBBU1NFUlQoIW1fZGlkUmV0cmlldmVFeGlz
dGluZ0VudHJ5KTsKIAotICAgICAgICBtX2V4aXN0aW5nRW50cnkgPSBXVEY6Om1vdmUoZW50cnkp
OworICAgICAgICBtX2V4aXN0aW5nRW50cnkgPSBXVEZNb3ZlKGVudHJ5KTsKICAgICAgICAgbV9k
aWRSZXRyaWV2ZUV4aXN0aW5nRW50cnkgPSB0cnVlOwogICAgICAgICBzYXZlVG9EaXNrSWZSZWFk
eSgpOwogICAgIH0KQEAgLTE5Myw3ICsxOTMsNyBAQCBwcml2YXRlOgogICAgIFBlbmRpbmdGcmFt
ZUxvYWQoU3RvcmFnZSYgc3RvcmFnZSwgY29uc3QgS2V5JiBtYWluUmVzb3VyY2VLZXksIHN0ZDo6
ZnVuY3Rpb248dm9pZCgpPiYmIGxvYWRDb21wbGV0aW9uSGFuZGxlcikKICAgICAgICAgOiBtX3N0
b3JhZ2Uoc3RvcmFnZSkKICAgICAgICAgLCBtX21haW5SZXNvdXJjZUtleShtYWluUmVzb3VyY2VL
ZXkpCi0gICAgICAgICwgbV9sb2FkQ29tcGxldGlvbkhhbmRsZXIoV1RGOjptb3ZlKGxvYWRDb21w
bGV0aW9uSGFuZGxlcikpCisgICAgICAgICwgbV9sb2FkQ29tcGxldGlvbkhhbmRsZXIoV1RGTW92
ZShsb2FkQ29tcGxldGlvbkhhbmRsZXIpKQogICAgICAgICAsIG1fbG9hZEh5c3RlcmVzaXNBY3Rp
dml0eShbdGhpc10oSHlzdGVyZXNpc1N0YXRlIHN0YXRlKSB7IGlmIChzdGF0ZSA9PSBIeXN0ZXJl
c2lzU3RhdGU6OlN0b3BwZWQpIG1hcmtMb2FkQXNDb21wbGV0ZWQoKTsgfSkKICAgICB7IH0KIApA
QCAtMzAwLDcgKzMwMCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6cmVnaXN0ZXJM
b2FkKGNvbnN0IEdsb2JhbEZyYW1lSUQmIGZyYW1lSUQsIGNvbnN0IFJlCiAgICAgICAgICAgICBp
ZiAoZW50cnkpCiAgICAgICAgICAgICAgICAgc3RhcnRTcGVjdWxhdGl2ZVJldmFsaWRhdGlvbihm
cmFtZUlELCAqZW50cnkpOwogCi0gICAgICAgICAgICBwZW5kaW5nRnJhbWVMb2FkLT5zZXRFeGlz
dGluZ1N1YnJlc291cmNlc0VudHJ5KFdURjo6bW92ZShlbnRyeSkpOworICAgICAgICAgICAgcGVu
ZGluZ0ZyYW1lTG9hZC0+c2V0RXhpc3RpbmdTdWJyZXNvdXJjZXNFbnRyeShXVEZNb3ZlKGVudHJ5
KSk7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMzE0LDcgKzMxNCw3
IEBAIHZvaWQgU3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6YWRkUHJlbG9hZGVkRW50cnkoc3RkOjp1
bmlxdWVfcHRyPEVudHJ5PiBlbnRyeSwgY29uCiAgICAgQVNTRVJUKGVudHJ5KTsKICAgICBBU1NF
UlQoIWVudHJ5LT5uZWVkc1ZhbGlkYXRpb24oKSk7CiAgICAgYXV0byBrZXkgPSBlbnRyeS0+a2V5
KCk7Ci0gICAgbV9wcmVsb2FkZWRFbnRyaWVzLmFkZChrZXksIHN0ZDo6bWFrZV91bmlxdWU8UHJl
bG9hZGVkRW50cnk+KFdURjo6bW92ZShlbnRyeSksIHdhc1JldmFsaWRhdGVkLCBbdGhpcywga2V5
LCBmcmFtZUlEXSB7CisgICAgbV9wcmVsb2FkZWRFbnRyaWVzLmFkZChrZXksIHN0ZDo6bWFrZV91
bmlxdWU8UHJlbG9hZGVkRW50cnk+KFdURk1vdmUoZW50cnkpLCB3YXNSZXZhbGlkYXRlZCwgW3Ro
aXMsIGtleSwgZnJhbWVJRF0gewogICAgICAgICBhdXRvIHByZWxvYWRlZEVudHJ5ID0gbV9wcmVs
b2FkZWRFbnRyaWVzLnRha2Uoa2V5KTsKICAgICAgICAgQVNTRVJUKHByZWxvYWRlZEVudHJ5KTsK
ICAgICAgICAgaWYgKHByZWxvYWRlZEVudHJ5LT53YXNSZXZhbGlkYXRlZCgpKQpAQCAtMzQ2LDcg
KzM0Niw3IEBAIHZvaWQgU3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6cmV0cmlldmVFbnRyeUZyb21T
dG9yYWdlKGNvbnN0IEtleSYga2V5LCBjb25zdCBSZXRyCiAgICAgICAgIGlmIChyZXNwb25zZU5l
ZWRzUmV2YWxpZGF0aW9uKHJlc3BvbnNlLCBlbnRyeS0+dGltZVN0YW1wKCkpKQogICAgICAgICAg
ICAgZW50cnktPnNldE5lZWRzVmFsaWRhdGlvbigpOwogCi0gICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKFdURjo6bW92ZShlbnRyeSkpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3Zl
KGVudHJ5KSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0pOwogfQpAQCAtMzcwLDcgKzM3
MCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6cmV2YWxpZGF0ZUVudHJ5KHN0ZDo6
dW5pcXVlX3B0cjxFbnRyeT4gZW50cnksIGNvbnN0CiAKICAgICBhdXRvIGtleSA9IGVudHJ5LT5r
ZXkoKTsKICAgICBMT0coTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVQcmVsb2FkaW5nLCAiKE5ldHdv
cmtQcm9jZXNzKSBTcGVjdWxhdGl2ZWx5IHJldmFsaWRhdGluZyAnJXMnOiIsIGtleS5pZGVudGlm
aWVyKCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgYXV0byByZXZhbGlkYXRvciA9IHN0ZDo6bWFrZV91
bmlxdWU8U3BlY3VsYXRpdmVMb2FkPihmcmFtZUlELCBjb25zdHJ1Y3RSZXZhbGlkYXRpb25SZXF1
ZXN0KCplbnRyeSksIFdURjo6bW92ZShlbnRyeSksIFt0aGlzLCBrZXksIGZyYW1lSURdKHN0ZDo6
dW5pcXVlX3B0cjxFbnRyeT4gcmV2YWxpZGF0ZWRFbnRyeSkgeworICAgIGF1dG8gcmV2YWxpZGF0
b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPFNwZWN1bGF0aXZlTG9hZD4oZnJhbWVJRCwgY29uc3RydWN0
UmV2YWxpZGF0aW9uUmVxdWVzdCgqZW50cnkpLCBXVEZNb3ZlKGVudHJ5KSwgW3RoaXMsIGtleSwg
ZnJhbWVJRF0oc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiByZXZhbGlkYXRlZEVudHJ5KSB7CiAgICAg
ICAgIEFTU0VSVCghcmV2YWxpZGF0ZWRFbnRyeSB8fCAhcmV2YWxpZGF0ZWRFbnRyeS0+bmVlZHNW
YWxpZGF0aW9uKCkpOwogICAgICAgICBhdXRvIHByb3RlY3RSZXZhbGlkYXRvciA9IG1fcGVuZGlu
Z1ByZWxvYWRzLnRha2Uoa2V5KTsKICAgICAgICAgTE9HKE5ldHdvcmtDYWNoZVNwZWN1bGF0aXZl
UHJlbG9hZGluZywgIihOZXR3b3JrUHJvY2VzcykgU3BlY3VsYXRpdmUgcmV2YWxpZGF0aW9uIGNv
bXBsZXRlZCBmb3IgJyVzJzoiLCBrZXkuaWRlbnRpZmllcigpLnV0ZjgoKS5kYXRhKCkpOwpAQCAt
MzgyLDkgKzM4Miw5IEBAIHZvaWQgU3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6cmV2YWxpZGF0ZUVu
dHJ5KHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gZW50cnksIGNvbnN0CiAgICAgICAgIH0KIAogICAg
ICAgICBpZiAocmV2YWxpZGF0ZWRFbnRyeSkKLSAgICAgICAgICAgIGFkZFByZWxvYWRlZEVudHJ5
KFdURjo6bW92ZShyZXZhbGlkYXRlZEVudHJ5KSwgZnJhbWVJRCwgV2FzUmV2YWxpZGF0ZWQ6Olll
cyk7CisgICAgICAgICAgICBhZGRQcmVsb2FkZWRFbnRyeShXVEZNb3ZlKHJldmFsaWRhdGVkRW50
cnkpLCBmcmFtZUlELCBXYXNSZXZhbGlkYXRlZDo6WWVzKTsKICAgICB9KTsKLSAgICBtX3BlbmRp
bmdQcmVsb2Fkcy5hZGQoa2V5LCBXVEY6Om1vdmUocmV2YWxpZGF0b3IpKTsKKyAgICBtX3BlbmRp
bmdQcmVsb2Fkcy5hZGQoa2V5LCBXVEZNb3ZlKHJldmFsaWRhdG9yKSk7CiB9CiAKIHZvaWQgU3Bl
Y3VsYXRpdmVMb2FkTWFuYWdlcjo6cHJlbG9hZEVudHJ5KGNvbnN0IEtleSYga2V5LCBjb25zdCBH
bG9iYWxGcmFtZUlEJiBmcmFtZUlEKQpAQCAtNDAzLDkgKzQwMyw5IEBAIHZvaWQgU3BlY3VsYXRp
dmVMb2FkTWFuYWdlcjo6cHJlbG9hZEVudHJ5KGNvbnN0IEtleSYga2V5LCBjb25zdCBHbG9iYWxG
cmFtZUlEJiBmCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgaWYgKGVudHJ5LT5uZWVk
c1ZhbGlkYXRpb24oKSkKLSAgICAgICAgICAgIHJldmFsaWRhdGVFbnRyeShXVEY6Om1vdmUoZW50
cnkpLCBmcmFtZUlEKTsKKyAgICAgICAgICAgIHJldmFsaWRhdGVFbnRyeShXVEZNb3ZlKGVudHJ5
KSwgZnJhbWVJRCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGFkZFByZWxvYWRlZEVudHJ5
KFdURjo6bW92ZShlbnRyeSksIGZyYW1lSUQsIFdhc1JldmFsaWRhdGVkOjpObyk7CisgICAgICAg
ICAgICBhZGRQcmVsb2FkZWRFbnRyeShXVEZNb3ZlKGVudHJ5KSwgZnJhbWVJRCwgV2FzUmV2YWxp
ZGF0ZWQ6Ok5vKTsKICAgICB9KTsKIH0KIApAQCAtNDQxLDcgKzQ0MSw3IEBAIHZvaWQgU3BlY3Vs
YXRpdmVMb2FkTWFuYWdlcjo6cmV0cmlldmVTdWJyZXNvdXJjZXNFbnRyeShjb25zdCBLZXkmIHN0
b3JhZ2VLZXksIHN0CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIAotICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEY6Om1vdmUoc3VicmVzb3VyY2VzRW50cnkpKTsKKyAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShzdWJyZXNvdXJjZXNFbnRyeSkpOwogICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0YXRpc3RpY3MuY3BwIGIvU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RhdGlzdGljcy5jcHAK
aW5kZXggZDU5MmRhMDU2YjNkODIwNGQ4ZGI5MWNlMTllYzk4YmZhZjZiYzgxNy4uMjYzMzkzZGI3
NTZmZDZjOTAyOGFjMjZjMTUxMzM3YmU1NGM1NTA3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RhdGlzdGljcy5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RhdGlzdGlj
cy5jcHAKQEAgLTM3NCw3ICszNzQsNyBAQCB2b2lkIFN0YXRpc3RpY3M6OnF1ZXJ5V2FzRXZlclJl
cXVlc3RlZChjb25zdCBTdHJpbmcmIGhhc2gsIE5lZWRVbmNhY2hlZFJlYXNvbiBuZQogICAgIC8v
IFF1ZXJ5IHRoZSBkYXRhYmFzZS4KICAgICBhdXRvIGV2ZXJSZXF1ZXN0ZWRRdWVyeSA9IHN0ZDo6
bWFrZV91bmlxdWU8RXZlclJlcXVlc3RlZFF1ZXJ5PihFdmVyUmVxdWVzdGVkUXVlcnkgeyBoYXNo
LCBuZWVkVW5jYWNoZWRSZWFzb24gPT0gTmVlZFVuY2FjaGVkUmVhc29uOjpZZXMsIGNvbXBsZXRp
b25IYW5kbGVyIH0pOwogICAgIGF1dG8mIHF1ZXJ5ID0gKmV2ZXJSZXF1ZXN0ZWRRdWVyeTsKLSAg
ICBtX2FjdGl2ZVF1ZXJpZXMuYWRkKFdURjo6bW92ZShldmVyUmVxdWVzdGVkUXVlcnkpKTsKKyAg
ICBtX2FjdGl2ZVF1ZXJpZXMuYWRkKFdURk1vdmUoZXZlclJlcXVlc3RlZFF1ZXJ5KSk7CiAgICAg
c2VyaWFsQmFja2dyb3VuZElPUXVldWUoKS5kaXNwYXRjaChbdGhpcywgd2FzQWxyZWFkeVJlcXVl
c3RlZCwgJnF1ZXJ5XSAoKSBtdXRhYmxlIHsKICAgICAgICAgV2ViQ29yZTo6U1FMaXRlVHJhbnNh
Y3Rpb25JblByb2dyZXNzQXV0b0NvdW50ZXIgdHJhbnNhY3Rpb25Db3VudGVyOwogICAgICAgICBP
cHRpb25hbDxTdG9yZURlY2lzaW9uPiBzdG9yZURlY2lzaW9uOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNw
cAppbmRleCA4ODM5NWY0ZTI4MjRhNzUwMTQyMzZmNmYzOTA5MzM2MDZmMDJlMmYwLi45NGFiM2Yx
Yjk2OTkzMGJiODk4YzYyOWUxYWE0ZDhmN2IzYzc4MzAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNw
cApAQCAtOTMsNyArOTMsNyBAQCBib29sIFN0b3JhZ2U6OlJlYWRPcGVyYXRpb246OmZpbmlzaCgp
CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHJlc3VsdFJlY29yZCA9IG51bGxwdHI7CiAgICAg
fQotICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihXVEY6Om1vdmUocmVzdWx0UmVjb3JkKSk7
CisgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVzdWx0UmVjb3JkKSk7CiB9
CiAKIHN0cnVjdCBTdG9yYWdlOjpXcml0ZU9wZXJhdGlvbiB7CkBAIC0yOTIsOCArMjkyLDggQEAg
dm9pZCBTdG9yYWdlOjpzeW5jaHJvbml6ZSgpCiAgICAgICAgICAgICAgICAgYmxvYkZpbHRlci0+
YWRkKGhhc2gpOwogICAgICAgICAgICAgbV9ibG9iRmlsdGVySGFzaGVzQWRkZWREdXJpbmdTeW5j
aHJvbml6YXRpb24uY2xlYXIoKTsKIAotICAgICAgICAgICAgbV9yZWNvcmRGaWx0ZXIgPSBXVEY6
Om1vdmUocmVjb3JkRmlsdGVyKTsKLSAgICAgICAgICAgIG1fYmxvYkZpbHRlciA9IFdURjo6bW92
ZShibG9iRmlsdGVyKTsKKyAgICAgICAgICAgIG1fcmVjb3JkRmlsdGVyID0gV1RGTW92ZShyZWNv
cmRGaWx0ZXIpOworICAgICAgICAgICAgbV9ibG9iRmlsdGVyID0gV1RGTW92ZShibG9iRmlsdGVy
KTsKICAgICAgICAgICAgIG1fYXBwcm94aW1hdGVSZWNvcmRzU2l6ZSA9IHJlY29yZHNTaXplOwog
ICAgICAgICAgICAgbV9zeW5jaHJvbml6YXRpb25JblByb2dyZXNzID0gZmFsc2U7CiAgICAgICAg
IH0pOwpAQCAtNTY3LDcgKzU2Nyw3IEBAIHZvaWQgU3RvcmFnZTo6ZGlzcGF0Y2hSZWFkT3BlcmF0
aW9uKHN0ZDo6dW5pcXVlX3B0cjxSZWFkT3BlcmF0aW9uPiByZWFkT3BlcmF0aW9uCiAgICAgQVNT
RVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAogICAgIGF1dG8mIHJlYWRPcGVyYXRpb24gPSAqcmVh
ZE9wZXJhdGlvblB0cjsKLSAgICBtX2FjdGl2ZVJlYWRPcGVyYXRpb25zLmFkZChXVEY6Om1vdmUo
cmVhZE9wZXJhdGlvblB0cikpOworICAgIG1fYWN0aXZlUmVhZE9wZXJhdGlvbnMuYWRkKFdURk1v
dmUocmVhZE9wZXJhdGlvblB0cikpOwogCiAgICAgLy8gSS9PIHByZXNzdXJlIG1heSBtYWtlIGRp
c2sgb3BlcmF0aW9ucyBzbG93LiBJZiB0aGV5IHN0YXJ0IHRha2luZyB2ZXJ5IGxvbmcgdGltZSB3
ZSByYXRoZXIgZ28gdG8gbmV0d29yay4KICAgICBjb25zdCBhdXRvIHJlYWRUaW1lb3V0ID0gMTUw
MF9tczsKQEAgLTcwMiw3ICs3MDIsNyBAQCB2b2lkIFN0b3JhZ2U6OmRpc3BhdGNoV3JpdGVPcGVy
YXRpb24oc3RkOjp1bmlxdWVfcHRyPFdyaXRlT3BlcmF0aW9uPiB3cml0ZU9wZXJhdAogICAgIEFT
U0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKICAgICBhdXRvJiB3cml0ZU9wZXJhdGlvbiA9ICp3
cml0ZU9wZXJhdGlvblB0cjsKLSAgICBtX2FjdGl2ZVdyaXRlT3BlcmF0aW9ucy5hZGQoV1RGOjpt
b3ZlKHdyaXRlT3BlcmF0aW9uUHRyKSk7CisgICAgbV9hY3RpdmVXcml0ZU9wZXJhdGlvbnMuYWRk
KFdURk1vdmUod3JpdGVPcGVyYXRpb25QdHIpKTsKIAogICAgIC8vIFRoaXMgd2FzIGFkZGVkIGFs
cmVhZHkgd2hlbiBzdGFydGluZyB0aGUgc3RvcmUgYnV0IGZpbHRlciBtaWdodCBoYXZlIGJlZW4g
d2lwZWQuCiAgICAgYWRkVG9SZWNvcmRGaWx0ZXIod3JpdGVPcGVyYXRpb24ucmVjb3JkLmtleSk7
CkBAIC03NjgsOCArNzY4LDggQEAgdm9pZCBTdG9yYWdlOjpyZXRyaWV2ZShjb25zdCBLZXkmIGtl
eSwgdW5zaWduZWQgcHJpb3JpdHksIFJldHJpZXZlQ29tcGxldGlvbkhhbmQKICAgICBpZiAocmV0
cmlldmVGcm9tTWVtb3J5KG1fYWN0aXZlV3JpdGVPcGVyYXRpb25zLCBrZXksIGNvbXBsZXRpb25I
YW5kbGVyKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byByZWFkT3BlcmF0aW9uID0gc3Rk
OjptYWtlX3VuaXF1ZTxSZWFkT3BlcmF0aW9uPihrZXksIFdURjo6bW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpOwotICAgIG1fcGVuZGluZ1JlYWRPcGVyYXRpb25zQnlQcmlvcml0eVtwcmlvcml0eV0u
cHJlcGVuZChXVEY6Om1vdmUocmVhZE9wZXJhdGlvbikpOworICAgIGF1dG8gcmVhZE9wZXJhdGlv
biA9IHN0ZDo6bWFrZV91bmlxdWU8UmVhZE9wZXJhdGlvbj4oa2V5LCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7CisgICAgbV9wZW5kaW5nUmVhZE9wZXJhdGlvbnNCeVByaW9yaXR5W3ByaW9y
aXR5XS5wcmVwZW5kKFdURk1vdmUocmVhZE9wZXJhdGlvbikpOwogICAgIGRpc3BhdGNoUGVuZGlu
Z1JlYWRPcGVyYXRpb25zKCk7CiB9CiAKQEAgLTc4MSw4ICs3ODEsOCBAQCB2b2lkIFN0b3JhZ2U6
OnN0b3JlKGNvbnN0IFJlY29yZCYgcmVjb3JkLCBNYXBwZWRCb2R5SGFuZGxlciYmIG1hcHBlZEJv
ZHlIYW5kbGVyKQogICAgIGlmICghbV9jYXBhY2l0eSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
YXV0byB3cml0ZU9wZXJhdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8V3JpdGVPcGVyYXRpb24+KHJl
Y29yZCwgV1RGOjptb3ZlKG1hcHBlZEJvZHlIYW5kbGVyKSk7Ci0gICAgbV9wZW5kaW5nV3JpdGVP
cGVyYXRpb25zLnByZXBlbmQoV1RGOjptb3ZlKHdyaXRlT3BlcmF0aW9uKSk7CisgICAgYXV0byB3
cml0ZU9wZXJhdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8V3JpdGVPcGVyYXRpb24+KHJlY29yZCwg
V1RGTW92ZShtYXBwZWRCb2R5SGFuZGxlcikpOworICAgIG1fcGVuZGluZ1dyaXRlT3BlcmF0aW9u
cy5wcmVwZW5kKFdURk1vdmUod3JpdGVPcGVyYXRpb24pKTsKIAogICAgIC8vIEFkZCBrZXkgdG8g
dGhlIGZpbHRlciBhbHJlYWR5IGhlcmUgYXMgd2UgZG8gbG9va3VwcyBmcm9tIHRoZSBwZW5kaW5n
IG9wZXJhdGlvbnMgdG9vLgogICAgIGFkZFRvUmVjb3JkRmlsdGVyKHJlY29yZC5rZXkpOwpAQCAt
ODAzLDkgKzgwMyw5IEBAIHZvaWQgU3RvcmFnZTo6dHJhdmVyc2UoY29uc3QgU3RyaW5nJiB0eXBl
LCBUcmF2ZXJzZUZsYWdzIGZsYWdzLCBUcmF2ZXJzZUhhbmRsZXImCiAgICAgQVNTRVJUKHRyYXZl
cnNlSGFuZGxlcik7CiAgICAgLy8gQXZvaWQgbm9uLXRocmVhZCBzYWZlIHN0ZDo6ZnVuY3Rpb24g
Y29waWVzLgogCi0gICAgYXV0byB0cmF2ZXJzZU9wZXJhdGlvblB0ciA9IHN0ZDo6bWFrZV91bmlx
dWU8VHJhdmVyc2VPcGVyYXRpb24+KHR5cGUsIGZsYWdzLCBXVEY6Om1vdmUodHJhdmVyc2VIYW5k
bGVyKSk7CisgICAgYXV0byB0cmF2ZXJzZU9wZXJhdGlvblB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8
VHJhdmVyc2VPcGVyYXRpb24+KHR5cGUsIGZsYWdzLCBXVEZNb3ZlKHRyYXZlcnNlSGFuZGxlcikp
OwogICAgIGF1dG8mIHRyYXZlcnNlT3BlcmF0aW9uID0gKnRyYXZlcnNlT3BlcmF0aW9uUHRyOwot
ICAgIG1fYWN0aXZlVHJhdmVyc2VPcGVyYXRpb25zLmFkZChXVEY6Om1vdmUodHJhdmVyc2VPcGVy
YXRpb25QdHIpKTsKKyAgICBtX2FjdGl2ZVRyYXZlcnNlT3BlcmF0aW9ucy5hZGQoV1RGTW92ZSh0
cmF2ZXJzZU9wZXJhdGlvblB0cikpOwogCiAgICAgaW9RdWV1ZSgpLmRpc3BhdGNoKFt0aGlzLCAm
dHJhdmVyc2VPcGVyYXRpb25dIHsKICAgICAgICAgdHJhdmVyc2VSZWNvcmRzRmlsZXMocmVjb3Jk
c1BhdGgoKSwgdHJhdmVyc2VPcGVyYXRpb24udHlwZSwgW3RoaXMsICZ0cmF2ZXJzZU9wZXJhdGlv
bl0oY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyaW5nJiBoYXNoU3RyaW5nLCBjb25z
dCBTdHJpbmcmIHR5cGUsIGJvb2wgaXNCbG9iLCBjb25zdCBTdHJpbmcmIHJlY29yZERpcmVjdG9y
eVBhdGgpIHsKQEAgLTg5Nyw3ICs4OTcsNyBAQCB2b2lkIFN0b3JhZ2U6OmNsZWFyKGNvbnN0IFN0
cmluZyYgdHlwZSwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCBtbwogICAg
IG1fYXBwcm94aW1hdGVSZWNvcmRzU2l6ZSA9IDA7CiAKICAgICAvLyBBdm9pZCBub24tdGhyZWFk
IHNhZmUgc3RkOjpmdW5jdGlvbiBjb3BpZXMuCi0gICAgYXV0byogY29tcGxldGlvbkhhbmRsZXJQ
dHIgPSBjb21wbGV0aW9uSGFuZGxlciA/IG5ldyBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+KFdURjo6
bW92ZShjb21wbGV0aW9uSGFuZGxlcikpIDogbnVsbHB0cjsKKyAgICBhdXRvKiBjb21wbGV0aW9u
SGFuZGxlclB0ciA9IGNvbXBsZXRpb25IYW5kbGVyID8gbmV3IHN0ZDo6ZnVuY3Rpb248dm9pZCAo
KT4oV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpIDogbnVsbHB0cjsKICAgICBTdHJpbmdDYXB0
dXJlIHR5cGVDYXB0dXJlKHR5cGUpOwogICAgIGlvUXVldWUoKS5kaXNwYXRjaChbdGhpcywgbW9k
aWZpZWRTaW5jZVRpbWUsIGNvbXBsZXRpb25IYW5kbGVyUHRyLCB0eXBlQ2FwdHVyZV0gewogICAg
ICAgICBhdXRvIHJlY29yZHNQYXRoID0gdGhpcy0+cmVjb3Jkc1BhdGgoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN1YnJlc291
cmNlc0VudHJ5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZVN1YnJlc291cmNlc0VudHJ5LmNwcAppbmRleCAyZWI3ZmFlZmE1N2FlNDhiOWY4YjIx
NGE0ZmQ3NGIwMjQ3MzA5ZDMxLi5lNzYyYzNiMzMzZDMzNzY5ZTlhODIyZjc2ODQzYjNhYTIxYmU3
YWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVTdWJyZXNvdXJjZXNFbnRyeS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3VicmVzb3VyY2VzRW50cnkuY3BwCkBAIC03MCw3
ICs3MCw3IEBAIFN1YnJlc291cmNlc0VudHJ5OjpTdWJyZXNvdXJjZXNFbnRyeShjb25zdCBTdG9y
YWdlOjpSZWNvcmQmIHN0b3JhZ2VFbnRyeSkKIH0KIAogU3VicmVzb3VyY2VzRW50cnk6OlN1YnJl
c291cmNlc0VudHJ5KEtleSYmIGtleSwgY29uc3QgVmVjdG9yPEtleT4mIHN1YnJlc291cmNlS2V5
cykKLSAgICA6IG1fa2V5KFdURjo6bW92ZShrZXkpKQorICAgIDogbV9rZXkoV1RGTW92ZShrZXkp
KQogICAgICwgbV90aW1lU3RhbXAoc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6bm93KCkpCiB7
CiAgICAgQVNTRVJUKG1fa2V5LnR5cGUoKSA9PSAic3VicmVzb3VyY2VzIik7CkBAIC04MCw3ICs4
MCw3IEBAIFN1YnJlc291cmNlc0VudHJ5OjpTdWJyZXNvdXJjZXNFbnRyeShLZXkmJiBrZXksIGNv
bnN0IFZlY3RvcjxLZXk+JiBzdWJyZXNvdXJjZUtlCiAKIHZvaWQgU3VicmVzb3VyY2VzRW50cnk6
OnVwZGF0ZVN1YnJlc291cmNlS2V5cyhjb25zdCBWZWN0b3I8S2V5PiYgc3VicmVzb3VyY2VLZXlz
KQogewotICAgIGF1dG8gb2xkU3VicmVzb3VyY2VzID0gV1RGOjptb3ZlKG1fc3VicmVzb3VyY2Vz
KTsKKyAgICBhdXRvIG9sZFN1YnJlc291cmNlcyA9IFdURk1vdmUobV9zdWJyZXNvdXJjZXMpOwog
CiAgICAgLy8gTWFyayBrZXlzIHRoYXQgYXJlIGNvbW1vbiB3aXRoIGxhc3QgbG9hZCBhcyBub24t
VHJhbnNpZW50LgogICAgIGZvciAoYXV0byYga2V5IDogc3VicmVzb3VyY2VLZXlzKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lv
bkNvY29hLm1tIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nl
c3Npb25Db2NvYS5tbQppbmRleCA0Y2YzMDJjMzBiYmZhYjhhNTExMzFkY2VkMTUwZTJjYjRkMTg0
ZDEyLi5kYzFkNmUwM2Y5ZmIwNGUzNTQ1NDJhOTgxODVmOWEyNjhjNmVmOWRmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29h
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNz
aW9uQ29jb2EubW0KQEAgLTI0OSw3ICsyNDksNyBAQCBOZXR3b3JrRGF0YVRhc2sqIE5ldHdvcmtT
ZXNzaW9uOjpkYXRhVGFza0ZvcklkZW50aWZpZXIoTmV0d29ya0RhdGFUYXNrOjpUYXNrSWRlbgog
TmV0d29ya0RhdGFUYXNrOjpOZXR3b3JrRGF0YVRhc2soTmV0d29ya1Nlc3Npb24mIHNlc3Npb24s
IE5ldHdvcmtTZXNzaW9uVGFza0NsaWVudCYgY2xpZW50LCBSZXRhaW5QdHI8TlNVUkxTZXNzaW9u
RGF0YVRhc2s+JiYgdGFzaykKICAgICA6IG1fc2Vzc2lvbihzZXNzaW9uKQogICAgICwgbV9jbGll
bnQoJmNsaWVudCkKLSAgICAsIG1fdGFzayhXVEY6Om1vdmUodGFzaykpCisgICAgLCBtX3Rhc2so
V1RGTW92ZSh0YXNrKSkKIHsKICAgICBBU1NFUlQoIW1fc2Vzc2lvbi5tX2RhdGFUYXNrTWFwLmNv
bnRhaW5zKHRhc2tJZGVudGlmaWVyKCkpKTsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrUHJv
Y2Vzc1NvdXAuY3BwIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3Jr
UHJvY2Vzc1NvdXAuY3BwCmluZGV4IGMyZmQxZmMxMTM3ZjA4YjBmNjIxMjA3OTdhMGE0YTA3YzZk
ZjVkNDguLmMwZTcwZTA1NzUwOTI1YmFkZWFlYWU5YWYyN2UzZTAzNjRkOThmZTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3Vw
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9j
ZXNzU291cC5jcHAKQEAgLTE1NSw3ICsxNTUsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpjbGVh
ckNhY2hlRm9yQWxsT3JpZ2lucyh1aW50MzJfdCBjYWNoZXNUb0NsZWFyKQogdm9pZCBOZXR3b3Jr
UHJvY2Vzczo6Y2xlYXJEaXNrQ2FjaGUoc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9w
b2ludCBtb2RpZmllZFNpbmNlLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+IGNvbXBsZXRpb25IYW5k
bGVyKQogewogI2lmIEVOQUJMRShORVRXT1JLX0NBQ0hFKQotICAgIE5ldHdvcmtDYWNoZTo6c2lu
Z2xldG9uKCkuY2xlYXIobW9kaWZpZWRTaW5jZSwgV1RGOjptb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7CisgICAgTmV0d29ya0NhY2hlOjpzaW5nbGV0b24oKS5jbGVhcihtb2RpZmllZFNpbmNlLCBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShtb2Rp
ZmllZFNpbmNlKTsKICAgICBVTlVTRURfUEFSQU0oY29tcGxldGlvbkhhbmRsZXIpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaAppbmRleCA5ODM4MjAyNzU3
NTZmYTMyYjRhYTBkZmE0NzMwZTIwNDk2ZmNlMmE2Li5iNmI4ZmZiMzViMzc2OWE0ZDk3NGM3OWNm
MWE5YzZhNTQyYmU4ODAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMv
QXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvQXJndW1l
bnRDb2RlcnMuaApAQCAtODEsNyArODEsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3Qg
QXJndW1lbnRDb2RlcjxXVEY6Ok9wdGlvbmFsPFQ+PiB7CiAgICAgICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUodmFsdWUpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIG9wdGlv
bmFsID0gV1RGOjptb3ZlKHZhbHVlKTsKKyAgICAgICAgb3B0aW9uYWwgPSBXVEZNb3ZlKHZhbHVl
KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogfTsKQEAgLTE2OSw3ICsxNjksNyBAQCB0
ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+IHN0cnVjdCBWZWN0b3JB
cmd1bWVudENvZGVyPGZhbHNlLCBULAogICAgICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShl
bGVtZW50KSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAKLSAg
ICAgICAgICAgIHRtcC5hcHBlbmQoV1RGOjptb3ZlKGVsZW1lbnQpKTsKKyAgICAgICAgICAgIHRt
cC5hcHBlbmQoV1RGTW92ZShlbGVtZW50KSk7CiAgICAgICAgIH0KIAogICAgICAgICB0bXAuc2hy
aW5rVG9GaXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9Bcmd1
bWVudERlY29kZXIuY3BwIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL0FyZ3VtZW50RGVj
b2Rlci5jcHAKaW5kZXggZmJhOGVkNmQzMGVjMTEzM2FlODczZDhkYzU4OWY1YTA5MDYwMTM3OS4u
OTdkY2U0NjEzY2EwMDc1MjdjMmJmNmIxM2U3Mzg3MjcxYjQzMGZjZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL0FyZ3VtZW50RGVjb2Rlci5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvUGxhdGZvcm0vSVBDL0FyZ3VtZW50RGVjb2Rlci5jcHAKQEAgLTQwLDcgKzQwLDcg
QEAgQXJndW1lbnREZWNvZGVyOjpBcmd1bWVudERlY29kZXIoY29uc3QgdWludDhfdCogYnVmZmVy
LCBzaXplX3QgYnVmZmVyU2l6ZSwgVmVjdG8KIHsKICAgICBpbml0aWFsaXplKGJ1ZmZlciwgYnVm
ZmVyU2l6ZSk7CiAKLSAgICBtX2F0dGFjaG1lbnRzID0gV1RGOjptb3ZlKGF0dGFjaG1lbnRzKTsK
KyAgICBtX2F0dGFjaG1lbnRzID0gV1RGTW92ZShhdHRhY2htZW50cyk7CiB9CiAKIEFyZ3VtZW50
RGVjb2Rlcjo6fkFyZ3VtZW50RGVjb2RlcigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9Q
bGF0Zm9ybS9JUEMvQXJndW1lbnRFbmNvZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3Jt
L0lQQy9Bcmd1bWVudEVuY29kZXIuY3BwCmluZGV4IDU4NDg3YjUwMzMzZTUyOTUwZmZiZDJmZjkw
NDc1ZjA3MWM4ZGZhNzAuLmI4MTEwMmQxOTFkNjA5NTU1NGU4YWYwZjUwNjM2OTRmZDYzYTY5NzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9Bcmd1bWVudEVuY29kZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9Bcmd1bWVudEVuY29kZXIuY3Bw
CkBAIC0xODcsMTIgKzE4NywxMiBAQCB2b2lkIEFyZ3VtZW50RW5jb2Rlcjo6ZW5jb2RlKGRvdWJs
ZSBuKQogCiB2b2lkIEFyZ3VtZW50RW5jb2Rlcjo6YWRkQXR0YWNobWVudChBdHRhY2htZW50JiYg
YXR0YWNobWVudCkKIHsKLSAgICBtX2F0dGFjaG1lbnRzLmFwcGVuZChXVEY6Om1vdmUoYXR0YWNo
bWVudCkpOworICAgIG1fYXR0YWNobWVudHMuYXBwZW5kKFdURk1vdmUoYXR0YWNobWVudCkpOwog
fQogCiBWZWN0b3I8QXR0YWNobWVudD4gQXJndW1lbnRFbmNvZGVyOjpyZWxlYXNlQXR0YWNobWVu
dHMoKQogewotICAgIHJldHVybiBXVEY6Om1vdmUobV9hdHRhY2htZW50cyk7CisgICAgcmV0dXJu
IFdURk1vdmUobV9hdHRhY2htZW50cyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIElQQwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL0F0dGFjaG1lbnQuY3BwIGIvU291cmNl
L1dlYktpdDIvUGxhdGZvcm0vSVBDL0F0dGFjaG1lbnQuY3BwCmluZGV4IDIxMGRiZDc3MjkyNmJj
MGI5M2ZlYWQ2YTAwYTUzMzQ1ODk5NjkwN2UuLjU5MDMzZGUzODlmNTIwY2IwY2JjNzg4MTNhYmY2
YjJkYjgzOWUwNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9BdHRh
Y2htZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvQXR0YWNobWVudC5j
cHAKQEAgLTUyLDcgKzUyLDcgQEAgdm9pZCBBdHRhY2htZW50OjpyZWxlYXNlKCkKIAogdm9pZCBB
dHRhY2htZW50OjplbmNvZGUoQXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewotICAg
IGVuY29kZXIuYWRkQXR0YWNobWVudChXVEY6Om1vdmUoKmNvbnN0X2Nhc3Q8QXR0YWNobWVudCo+
KHRoaXMpKSk7CisgICAgZW5jb2Rlci5hZGRBdHRhY2htZW50KFdURk1vdmUoKmNvbnN0X2Nhc3Q8
QXR0YWNobWVudCo+KHRoaXMpKSk7CiB9CiAKIGJvb2wgQXR0YWNobWVudDo6ZGVjb2RlKEFyZ3Vt
ZW50RGVjb2RlciYgZGVjb2RlciwgQXR0YWNobWVudCYgYXR0YWNobWVudCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmNwcAppbmRleCA0ZDg4OWUxZWExMTk1M2RkMjg1
NjM0ZDFiNWQ1Yjk5MTVjOWRhYjNlLi44MTY2YzlhMmU5NGI4MDMyODNmM2JlNzhmMGMwYTk2Yzll
NWE4NGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3BwCkBA
IC0xMjgsNyArMTI4LDcgQEAgYm9vbCBDb25uZWN0aW9uOjpTeW5jTWVzc2FnZVN0YXRlOjpwcm9j
ZXNzSW5jb21pbmdNZXNzYWdlKENvbm5lY3Rpb24mIGNvbm5lY3Rpb24KICAgICBpZiAoIW1lc3Nh
Z2UtPnNob3VsZERpc3BhdGNoTWVzc2FnZVdoZW5XYWl0aW5nRm9yU3luY1JlcGx5KCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgIENvbm5lY3Rpb25BbmRJbmNvbWluZ01lc3NhZ2UgY29u
bmVjdGlvbkFuZEluY29taW5nTWVzc2FnZSB7IGNvbm5lY3Rpb24sIFdURjo6bW92ZShtZXNzYWdl
KSB9OworICAgIENvbm5lY3Rpb25BbmRJbmNvbWluZ01lc3NhZ2UgY29ubmVjdGlvbkFuZEluY29t
aW5nTWVzc2FnZSB7IGNvbm5lY3Rpb24sIFdURk1vdmUobWVzc2FnZSkgfTsKIAogICAgIHsKICAg
ICAgICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV9tdXRleCk7CkBAIC0xNDAsNyArMTQw
LDcgQEAgYm9vbCBDb25uZWN0aW9uOjpTeW5jTWVzc2FnZVN0YXRlOjpwcm9jZXNzSW5jb21pbmdN
ZXNzYWdlKENvbm5lY3Rpb24mIGNvbm5lY3Rpb24KICAgICAgICAgICAgIH0pOwogICAgICAgICB9
CiAKLSAgICAgICAgbV9tZXNzYWdlc1RvRGlzcGF0Y2hXaGlsZVdhaXRpbmdGb3JTeW5jUmVwbHku
YXBwZW5kKFdURjo6bW92ZShjb25uZWN0aW9uQW5kSW5jb21pbmdNZXNzYWdlKSk7CisgICAgICAg
IG1fbWVzc2FnZXNUb0Rpc3BhdGNoV2hpbGVXYWl0aW5nRm9yU3luY1JlcGx5LmFwcGVuZChXVEZN
b3ZlKGNvbm5lY3Rpb25BbmRJbmNvbWluZ01lc3NhZ2UpKTsKICAgICB9CiAKICAgICB3YWtlVXBD
bGllbnRSdW5Mb29wKCk7CkBAIC0xNjcsMTggKzE2NywxOCBAQCB2b2lkIENvbm5lY3Rpb246OlN5
bmNNZXNzYWdlU3RhdGU6OmRpc3BhdGNoTWVzc2FnZXMoQ29ubmVjdGlvbiogYWxsb3dlZENvbm5l
Y3RpbwogICAgICAgICBpZiAoYWxsb3dlZENvbm5lY3Rpb24gJiYgYWxsb3dlZENvbm5lY3Rpb24g
IT0gY29ubmVjdGlvbkFuZEluY29taW5nTWVzc2FnZS5jb25uZWN0aW9uLnB0cigpKSB7CiAgICAg
ICAgICAgICAvLyBUaGlzIGluY29taW5nIG1lc3NhZ2UgYmVsb25ncyB0byBhbm90aGVyIGNvbm5l
Y3Rpb24gYW5kIHdlIGRvbid0IHdhbnQgdG8gZGlzcGF0Y2ggaXQgbm93CiAgICAgICAgICAgICAv
LyBzbyBtYXJrIGl0IHRvIGJlIHB1dCBiYWNrIGluIHRoZSBtZXNzYWdlIHF1ZXVlLgotICAgICAg
ICAgICAgbWVzc2FnZXNUb1B1dEJhY2suYXBwZW5kKFdURjo6bW92ZShjb25uZWN0aW9uQW5kSW5j
b21pbmdNZXNzYWdlKSk7CisgICAgICAgICAgICBtZXNzYWdlc1RvUHV0QmFjay5hcHBlbmQoV1RG
TW92ZShjb25uZWN0aW9uQW5kSW5jb21pbmdNZXNzYWdlKSk7CiAgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgfQogCi0gICAgICAgIGNvbm5lY3Rpb25BbmRJbmNvbWluZ01lc3NhZ2UuY29u
bmVjdGlvbi0+ZGlzcGF0Y2hNZXNzYWdlKFdURjo6bW92ZShjb25uZWN0aW9uQW5kSW5jb21pbmdN
ZXNzYWdlLm1lc3NhZ2UpKTsKKyAgICAgICAgY29ubmVjdGlvbkFuZEluY29taW5nTWVzc2FnZS5j
b25uZWN0aW9uLT5kaXNwYXRjaE1lc3NhZ2UoV1RGTW92ZShjb25uZWN0aW9uQW5kSW5jb21pbmdN
ZXNzYWdlLm1lc3NhZ2UpKTsKICAgICB9CiAKICAgICBpZiAoIW1lc3NhZ2VzVG9QdXRCYWNrLmlz
RW1wdHkoKSkgewogICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayhtX211dGV4KTsK
IAogICAgICAgICBmb3IgKGF1dG8mIG1lc3NhZ2UgOiBtZXNzYWdlc1RvUHV0QmFjaykKLSAgICAg
ICAgICAgIG1fbWVzc2FnZXNUb0Rpc3BhdGNoV2hpbGVXYWl0aW5nRm9yU3luY1JlcGx5LmFwcGVu
ZChXVEY6Om1vdmUobWVzc2FnZSkpOworICAgICAgICAgICAgbV9tZXNzYWdlc1RvRGlzcGF0Y2hX
aGlsZVdhaXRpbmdGb3JTeW5jUmVwbHkuYXBwZW5kKFdURk1vdmUobWVzc2FnZSkpOwogICAgIH0K
IH0KIApAQCAtMjk5LDcgKzI5OSw3IEBAIHZvaWQgQ29ubmVjdGlvbjo6ZGlzcGF0Y2hXb3JrUXVl
dWVNZXNzYWdlUmVjZWl2ZXJNZXNzYWdlKFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlCiAgICAgQVNT
RVJUKCFkZWNvZGVyLmlzSW52YWxpZCgpKTsKIAogICAgIGlmIChyZXBseUVuY29kZXIpCi0gICAg
ICAgIHNlbmRTeW5jUmVwbHkoV1RGOjptb3ZlKHJlcGx5RW5jb2RlcikpOworICAgICAgICBzZW5k
U3luY1JlcGx5KFdURk1vdmUocmVwbHlFbmNvZGVyKSk7CiB9CiAKIHZvaWQgQ29ubmVjdGlvbjo6
c2V0RGlkQ2xvc2VPbkNvbm5lY3Rpb25Xb3JrUXVldWVDYWxsYmFjayhEaWRDbG9zZU9uQ29ubmVj
dGlvbldvcmtRdWV1ZUNhbGxiYWNrIGNhbGxiYWNrKQpAQCAtMzUzLDggKzM1Myw4IEBAIGJvb2wg
Q29ubmVjdGlvbjo6c2VuZE1lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPE1lc3NhZ2VFbmNvZGVyPiBl
bmNvZGVyLCB1bnNpZ25lZCBtCiAgICAgICAgIHVpbnQ2NF90IHN5bmNSZXF1ZXN0SUQ7CiAgICAg
ICAgIGF1dG8gd3JhcHBlZE1lc3NhZ2UgPSBjcmVhdGVTeW5jTWVzc2FnZUVuY29kZXIoIklQQyIs
ICJXcmFwcGVkQXN5bmNNZXNzYWdlRm9yVGVzdGluZyIsIGVuY29kZXItPmRlc3RpbmF0aW9uSUQo
KSwgc3luY1JlcXVlc3RJRCk7CiAgICAgICAgIHdyYXBwZWRNZXNzYWdlLT5zZXRGdWxseVN5bmNo
cm9ub3VzTW9kZUZvclRlc3RpbmcoKTsKLSAgICAgICAgd3JhcHBlZE1lc3NhZ2UtPndyYXBGb3JU
ZXN0aW5nKFdURjo6bW92ZShlbmNvZGVyKSk7Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxi
b29sPihzZW5kU3luY01lc3NhZ2Uoc3luY1JlcXVlc3RJRCwgV1RGOjptb3ZlKHdyYXBwZWRNZXNz
YWdlKSwgc3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kczo6bWF4KCkpKTsKKyAgICAgICAgd3JhcHBl
ZE1lc3NhZ2UtPndyYXBGb3JUZXN0aW5nKFdURk1vdmUoZW5jb2RlcikpOworICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8Ym9vbD4oc2VuZFN5bmNNZXNzYWdlKHN5bmNSZXF1ZXN0SUQsIFdURk1v
dmUod3JhcHBlZE1lc3NhZ2UpLCBzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzOjptYXgoKSkpOwog
ICAgIH0KIAogICAgIGlmIChtZXNzYWdlU2VuZEZsYWdzICYgRGlzcGF0Y2hNZXNzYWdlRXZlbldo
ZW5XYWl0aW5nRm9yU3luY1JlcGx5CkBAIC0zNzIsNyArMzcyLDcgQEAgYm9vbCBDb25uZWN0aW9u
OjpzZW5kTWVzc2FnZShzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZUVuY29kZXI+IGVuY29kZXIsIHVu
c2lnbmVkIG0KIAogICAgIHsKICAgICAgICAgc3RkOjpsb2NrX2d1YXJkPExvY2s+IGxvY2sobV9v
dXRnb2luZ01lc3NhZ2VzTXV0ZXgpOwotICAgICAgICBtX291dGdvaW5nTWVzc2FnZXMuYXBwZW5k
KFdURjo6bW92ZShlbmNvZGVyKSk7CisgICAgICAgIG1fb3V0Z29pbmdNZXNzYWdlcy5hcHBlbmQo
V1RGTW92ZShlbmNvZGVyKSk7CiAgICAgfQogICAgIAogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQg
YWRkIGEgYm9vbGVhbiBmbGFnIHNvIHdlIGRvbid0IGNhbGwgdGhpcyB3aGVuIHdvcmsgaGFzIGFs
cmVhZHkgYmVlbiBzY2hlZHVsZWQuCkBAIC0zODUsNyArMzg1LDcgQEAgYm9vbCBDb25uZWN0aW9u
OjpzZW5kTWVzc2FnZShzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZUVuY29kZXI+IGVuY29kZXIsIHVu
c2lnbmVkIG0KIAogYm9vbCBDb25uZWN0aW9uOjpzZW5kU3luY1JlcGx5KHN0ZDo6dW5pcXVlX3B0
cjxNZXNzYWdlRW5jb2Rlcj4gZW5jb2RlcikKIHsKLSAgICByZXR1cm4gc2VuZE1lc3NhZ2UoV1RG
Ojptb3ZlKGVuY29kZXIpKTsKKyAgICByZXR1cm4gc2VuZE1lc3NhZ2UoV1RGTW92ZShlbmNvZGVy
KSk7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlRGVjb2Rlcj4gQ29ubmVjdGlvbjo6d2Fp
dEZvck1lc3NhZ2UoU3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIFN0cmluZ1Jl
ZmVyZW5jZSBtZXNzYWdlTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgc3RkOjpjaHJvbm86
Om1pbGxpc2Vjb25kcyB0aW1lb3V0LCB1bnNpZ25lZCB3YWl0Rm9yTWVzc2FnZUZsYWdzKQpAQCAt
NDAyLDcgKzQwMiw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlRGVjb2Rlcj4gQ29ubmVjdGlv
bjo6d2FpdEZvck1lc3NhZ2UoU3RyaW5nUmVmZXJlbmNlIG1lc3NhCiAgICAgICAgICAgICBzdGQ6
OnVuaXF1ZV9wdHI8TWVzc2FnZURlY29kZXI+JiBtZXNzYWdlID0gKml0OwogCiAgICAgICAgICAg
ICBpZiAobWVzc2FnZS0+bWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IG1lc3NhZ2VSZWNlaXZlck5h
bWUgJiYgbWVzc2FnZS0+bWVzc2FnZU5hbWUoKSA9PSBtZXNzYWdlTmFtZSAmJiBtZXNzYWdlLT5k
ZXN0aW5hdGlvbklEKCkgPT0gZGVzdGluYXRpb25JRCkgewotICAgICAgICAgICAgICAgIHN0ZDo6
dW5pcXVlX3B0cjxNZXNzYWdlRGVjb2Rlcj4gcmV0dXJuZWRNZXNzYWdlID0gV1RGOjptb3ZlKG1l
c3NhZ2UpOworICAgICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlRGVjb2Rlcj4g
cmV0dXJuZWRNZXNzYWdlID0gV1RGTW92ZShtZXNzYWdlKTsKIAogICAgICAgICAgICAgICAgIG1f
aW5jb21pbmdNZXNzYWdlcy5yZW1vdmUoaXQpOwogICAgICAgICAgICAgICAgIHJldHVybiByZXR1
cm5lZE1lc3NhZ2U7CkBAIC00MzYsNyArNDM2LDcgQEAgc3RkOjp1bmlxdWVfcHRyPE1lc3NhZ2VE
ZWNvZGVyPiBDb25uZWN0aW9uOjp3YWl0Rm9yTWVzc2FnZShTdHJpbmdSZWZlcmVuY2UgbWVzc2EK
ICAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxMb2NrPiBsb2NrKG1fd2FpdEZvck1lc3NhZ2VNdXRl
eCk7CiAKICAgICAgICAgaWYgKG1fd2FpdGluZ0Zvck1lc3NhZ2UtPmRlY29kZXIpIHsKLSAgICAg
ICAgICAgIGF1dG8gZGVjb2RlciA9IFdURjo6bW92ZShtX3dhaXRpbmdGb3JNZXNzYWdlLT5kZWNv
ZGVyKTsKKyAgICAgICAgICAgIGF1dG8gZGVjb2RlciA9IFdURk1vdmUobV93YWl0aW5nRm9yTWVz
c2FnZS0+ZGVjb2Rlcik7CiAgICAgICAgICAgICBtX3dhaXRpbmdGb3JNZXNzYWdlID0gbnVsbHB0
cjsKICAgICAgICAgICAgIHJldHVybiBkZWNvZGVyOwogICAgICAgICB9CkBAIC00NTgsNyArNDU4
LDcgQEAgc3RkOjp1bmlxdWVfcHRyPE1lc3NhZ2VEZWNvZGVyPiBDb25uZWN0aW9uOjpzZW5kU3lu
Y01lc3NhZ2UodWludDY0X3Qgc3luY1JlcXVlc3QKICAgICBpZiAoIVJ1bkxvb3A6OmlzTWFpbigp
KSB7CiAgICAgICAgIC8vIE5vIGZsYWdzIGFyZSBzdXBwb3J0ZWQgZm9yIHN5bmNocm9ub3VzIG1l
c3NhZ2VzIHNlbnQgZnJvbSBzZWNvbmRhcnkgdGhyZWFkcy4KICAgICAgICAgQVNTRVJUKCFzeW5j
U2VuZEZsYWdzKTsKLSAgICAgICAgcmV0dXJuIHNlbmRTeW5jTWVzc2FnZUZyb21TZWNvbmRhcnlU
aHJlYWQoc3luY1JlcXVlc3RJRCwgV1RGOjptb3ZlKGVuY29kZXIpLCB0aW1lb3V0KTsKKyAgICAg
ICAgcmV0dXJuIHNlbmRTeW5jTWVzc2FnZUZyb21TZWNvbmRhcnlUaHJlYWQoc3luY1JlcXVlc3RJ
RCwgV1RGTW92ZShlbmNvZGVyKSwgdGltZW91dCk7CiAgICAgfQogCiAgICAgaWYgKCFpc1ZhbGlk
KCkpIHsKQEAgLTQ4NCw3ICs0ODQsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZURlY29kZXI+
IENvbm5lY3Rpb246OnNlbmRTeW5jTWVzc2FnZSh1aW50NjRfdCBzeW5jUmVxdWVzdAogI2VuZGlm
CiAKICAgICAvLyBGaXJzdCBzZW5kIHRoZSBtZXNzYWdlLgotICAgIHNlbmRNZXNzYWdlKFdURjo6
bW92ZShlbmNvZGVyKSwgRGlzcGF0Y2hNZXNzYWdlRXZlbldoZW5XYWl0aW5nRm9yU3luY1JlcGx5
LCB0cnVlKTsKKyAgICBzZW5kTWVzc2FnZShXVEZNb3ZlKGVuY29kZXIpLCBEaXNwYXRjaE1lc3Nh
Z2VFdmVuV2hlbldhaXRpbmdGb3JTeW5jUmVwbHksIHRydWUpOwogCiAgICAgLy8gVGhlbiB3YWl0
IGZvciBhIHJlcGx5LiBXYWl0aW5nIGZvciBhIHJlcGx5IGNvdWxkIGludm9sdmUgZGlzcGF0Y2hp
bmcgaW5jb21pbmcgc3luYyBtZXNzYWdlcywgc28KICAgICAvLyBrZWVwIGFuIGV4dHJhIHJlZmVy
ZW5jZSB0byB0aGUgY29ubmVjdGlvbiBoZXJlIGluIGNhc2UgaXQncyBpbnZhbGlkYXRlZC4KQEAg
LTUyOSw3ICs1MjksNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZURlY29kZXI+IENvbm5lY3Rp
b246OnNlbmRTeW5jTWVzc2FnZUZyb21TZWNvbmRhcnlUaHJlYWQodQogICAgIGF1dG8gdG9rZW4g
PSBNZXNzYWdlUmVjb3JkZXI6OnJlY29yZE91dGdvaW5nTWVzc2FnZSgqdGhpcywgKmVuY29kZXIp
OwogI2VuZGlmCiAKLSAgICBzZW5kTWVzc2FnZShXVEY6Om1vdmUoZW5jb2RlciksIDAsIHRydWUp
OworICAgIHNlbmRNZXNzYWdlKFdURk1vdmUoZW5jb2RlciksIDAsIHRydWUpOwogCiAgICAgcGVu
ZGluZ1JlcGx5LnNlbWFwaG9yZS53YWl0KGN1cnJlbnRUaW1lKCkgKyAodGltZW91dC5jb3VudCgp
IC8gMTAwMC4wKSk7CiAKQEAgLTU0MCw3ICs1NDAsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8TWVzc2Fn
ZURlY29kZXI+IENvbm5lY3Rpb246OnNlbmRTeW5jTWVzc2FnZUZyb21TZWNvbmRhcnlUaHJlYWQo
dQogICAgICAgICBtX3NlY29uZGFyeVRocmVhZFBlbmRpbmdTeW5jUmVwbHlNYXAucmVtb3ZlKHN5
bmNSZXF1ZXN0SUQpOwogICAgIH0KIAotICAgIHJldHVybiBXVEY6Om1vdmUocGVuZGluZ1JlcGx5
LnJlcGx5RGVjb2Rlcik7CisgICAgcmV0dXJuIFdURk1vdmUocGVuZGluZ1JlcGx5LnJlcGx5RGVj
b2Rlcik7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlRGVjb2Rlcj4gQ29ubmVjdGlvbjo6
d2FpdEZvclN5bmNSZXBseSh1aW50NjRfdCBzeW5jUmVxdWVzdElELCBzdGQ6OmNocm9ubzo6bWls
bGlzZWNvbmRzIHRpbWVvdXQsIHVuc2lnbmVkIHN5bmNTZW5kRmxhZ3MpCkBAIC01NjYsNyArNTY2
LDcgQEAgc3RkOjp1bmlxdWVfcHRyPE1lc3NhZ2VEZWNvZGVyPiBDb25uZWN0aW9uOjp3YWl0Rm9y
U3luY1JlcGx5KHVpbnQ2NF90IHN5bmNSZXF1ZXMKICAgICAgICAgICAgIC8vIFdlIGZvdW5kIHRo
ZSBzeW5jIHJlcGx5LCBvciB0aGUgY29ubmVjdGlvbiB3YXMgY2xvc2VkLgogICAgICAgICAgICAg
aWYgKHBlbmRpbmdTeW5jUmVwbHkuZGlkUmVjZWl2ZVJlcGx5IHx8ICFtX3Nob3VsZFdhaXRGb3JT
eW5jUmVwbGllcykgewogICAgICAgICAgICAgICAgIGRpZFJlY2VpdmVTeW5jUmVwbHkoc3luY1Nl
bmRGbGFncyk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bW92ZShwZW5kaW5nU3luY1Jl
cGx5LnJlcGx5RGVjb2Rlcik7CisgICAgICAgICAgICAgICAgcmV0dXJuIFdURk1vdmUocGVuZGlu
Z1N5bmNSZXBseS5yZXBseURlY29kZXIpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKQEAg
LTYwNCw3ICs2MDQsNyBAQCB2b2lkIENvbm5lY3Rpb246OnByb2Nlc3NJbmNvbWluZ1N5bmNSZXBs
eShzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZURlY29kZXI+IGRlY29kZQogCiAgICAgICAgIEFTU0VS
VCghcGVuZGluZ1N5bmNSZXBseS5yZXBseURlY29kZXIpOwogCi0gICAgICAgIHBlbmRpbmdTeW5j
UmVwbHkucmVwbHlEZWNvZGVyID0gV1RGOjptb3ZlKGRlY29kZXIpOworICAgICAgICBwZW5kaW5n
U3luY1JlcGx5LnJlcGx5RGVjb2RlciA9IFdURk1vdmUoZGVjb2Rlcik7CiAgICAgICAgIHBlbmRp
bmdTeW5jUmVwbHkuZGlkUmVjZWl2ZVJlcGx5ID0gdHJ1ZTsKIAogICAgICAgICAvLyBXZSBnb3Qg
YSByZXBseSB0byB0aGUgbGFzdCBzZW5kIG1lc3NhZ2UsIHdha2UgdXAgdGhlIGNsaWVudCBydW4g
bG9vcCBzbyBpdCBjYW4gYmUgcHJvY2Vzc2VkLgpAQCAtNjE5LDcgKzYxOSw3IEBAIHZvaWQgQ29u
bmVjdGlvbjo6cHJvY2Vzc0luY29taW5nU3luY1JlcGx5KHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdl
RGVjb2Rlcj4gZGVjb2RlCiAgICAgaWYgKHNlY29uZGFyeVRocmVhZFJlcGx5TWFwSXRlbSAhPSBt
X3NlY29uZGFyeVRocmVhZFBlbmRpbmdTeW5jUmVwbHlNYXAuZW5kKCkpIHsKICAgICAgICAgU2Vj
b25kYXJ5VGhyZWFkUGVuZGluZ1N5bmNSZXBseSogcmVwbHkgPSBzZWNvbmRhcnlUaHJlYWRSZXBs
eU1hcEl0ZW0tPnZhbHVlOwogICAgICAgICBBU1NFUlQoIXJlcGx5LT5yZXBseURlY29kZXIpOwot
ICAgICAgICByZXBseS0+cmVwbHlEZWNvZGVyID0gV1RGOjptb3ZlKGRlY29kZXIpOworICAgICAg
ICByZXBseS0+cmVwbHlEZWNvZGVyID0gV1RGTW92ZShkZWNvZGVyKTsKICAgICAgICAgcmVwbHkt
PnNlbWFwaG9yZS5zaWduYWwoKTsKICAgICB9CiAKQEAgLTYzMyw3ICs2MzMsNyBAQCB2b2lkIENv
bm5lY3Rpb246OnByb2Nlc3NJbmNvbWluZ01lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPE1lc3NhZ2VE
ZWNvZGVyPiBtZXNzYWdlKQogICAgIEFTU0VSVCghbWVzc2FnZS0+bWVzc2FnZU5hbWUoKS5pc0Vt
cHR5KCkpOwogCiAgICAgaWYgKG1lc3NhZ2UtPm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSAiSVBD
IiAmJiBtZXNzYWdlLT5tZXNzYWdlTmFtZSgpID09ICJTeW5jTWVzc2FnZVJlcGx5IikgewotICAg
ICAgICBwcm9jZXNzSW5jb21pbmdTeW5jUmVwbHkoV1RGOjptb3ZlKG1lc3NhZ2UpKTsKKyAgICAg
ICAgcHJvY2Vzc0luY29taW5nU3luY1JlcGx5KFdURk1vdmUobWVzc2FnZSkpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCkBAIC02OTAsNyArNjkwLDcgQEAgdm9pZCBDb25uZWN0aW9uOjpwcm9j
ZXNzSW5jb21pbmdNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlRGVjb2Rlcj4gbWVzc2Fn
ZSkKIAogICAgICAgICBpZiAobV93YWl0aW5nRm9yTWVzc2FnZSAmJiAhbV93YWl0aW5nRm9yTWVz
c2FnZS0+ZGVjb2RlcikgewogICAgICAgICAgICAgaWYgKG1fd2FpdGluZ0Zvck1lc3NhZ2UtPm1l
c3NhZ2VSZWNlaXZlck5hbWUgPT0gbWVzc2FnZS0+bWVzc2FnZVJlY2VpdmVyTmFtZSgpICYmIG1f
d2FpdGluZ0Zvck1lc3NhZ2UtPm1lc3NhZ2VOYW1lID09IG1lc3NhZ2UtPm1lc3NhZ2VOYW1lKCkg
JiYgbV93YWl0aW5nRm9yTWVzc2FnZS0+ZGVzdGluYXRpb25JRCA9PSBtZXNzYWdlLT5kZXN0aW5h
dGlvbklEKCkpIHsKLSAgICAgICAgICAgICAgICBtX3dhaXRpbmdGb3JNZXNzYWdlLT5kZWNvZGVy
ID0gV1RGOjptb3ZlKG1lc3NhZ2UpOworICAgICAgICAgICAgICAgIG1fd2FpdGluZ0Zvck1lc3Nh
Z2UtPmRlY29kZXIgPSBXVEZNb3ZlKG1lc3NhZ2UpOwogICAgICAgICAgICAgICAgIEFTU0VSVCht
X3dhaXRpbmdGb3JNZXNzYWdlLT5kZWNvZGVyKTsKICAgICAgICAgICAgICAgICBtX3dhaXRGb3JN
ZXNzYWdlQ29uZGl0aW9uLm5vdGlmeU9uZSgpOwogICAgICAgICAgICAgICAgIHJldHVybjsKQEAg
LTcwMyw3ICs3MDMsNyBAQCB2b2lkIENvbm5lY3Rpb246OnByb2Nlc3NJbmNvbWluZ01lc3NhZ2Uo
c3RkOjp1bmlxdWVfcHRyPE1lc3NhZ2VEZWNvZGVyPiBtZXNzYWdlKQogICAgICAgICB9CiAgICAg
fQogCi0gICAgZW5xdWV1ZUluY29taW5nTWVzc2FnZShXVEY6Om1vdmUobWVzc2FnZSkpOworICAg
IGVucXVldWVJbmNvbWluZ01lc3NhZ2UoV1RGTW92ZShtZXNzYWdlKSk7CiB9CiAKIHVpbnQ2NF90
IENvbm5lY3Rpb246Omluc3RhbGxJbmNvbWluZ1N5bmNNZXNzYWdlQ2FsbGJhY2soc3RkOjpmdW5j
dGlvbjx2b2lkICgpPiBjYWxsYmFjaykKQEAgLTgxMSw3ICs4MTEsNyBAQCB2b2lkIENvbm5lY3Rp
b246OnNlbmRPdXRnb2luZ01lc3NhZ2VzKCkKICAgICAgICAgICAgIG1lc3NhZ2UgPSBtX291dGdv
aW5nTWVzc2FnZXMudGFrZUZpcnN0KCk7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoIXNlbmRP
dXRnb2luZ01lc3NhZ2UoV1RGOjptb3ZlKG1lc3NhZ2UpKSkKKyAgICAgICAgaWYgKCFzZW5kT3V0
Z29pbmdNZXNzYWdlKFdURk1vdmUobWVzc2FnZSkpKQogICAgICAgICAgICAgYnJlYWs7CiAgICAg
fQogfQpAQCAtODQwLDcgKzg0MCw3IEBAIHZvaWQgQ29ubmVjdGlvbjo6ZGlzcGF0Y2hTeW5jTWVz
c2FnZShNZXNzYWdlRGVjb2RlciYgZGVjb2RlcikKICAgICAgICAgfQogICAgICAgICBzdGQ6OnVu
aXF1ZV9wdHI8TWVzc2FnZURlY29kZXI+IHVud3JhcHBlZERlY29kZXIgPSBNZXNzYWdlRGVjb2Rl
cjo6dW53cmFwRm9yVGVzdGluZyhkZWNvZGVyKTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQodW53
cmFwcGVkRGVjb2Rlcik7Ci0gICAgICAgIHByb2Nlc3NJbmNvbWluZ01lc3NhZ2UoV1RGOjptb3Zl
KHVud3JhcHBlZERlY29kZXIpKTsKKyAgICAgICAgcHJvY2Vzc0luY29taW5nTWVzc2FnZShXVEZN
b3ZlKHVud3JhcHBlZERlY29kZXIpKTsKIAogICAgICAgICBTeW5jTWVzc2FnZVN0YXRlOjpzaW5n
bGV0b24oKS5kaXNwYXRjaE1lc3NhZ2VzKG51bGxwdHIpOwogICAgIH0gZWxzZSB7CkBAIC04NTIs
NyArODUyLDcgQEAgdm9pZCBDb25uZWN0aW9uOjpkaXNwYXRjaFN5bmNNZXNzYWdlKE1lc3NhZ2VE
ZWNvZGVyJiBkZWNvZGVyKQogICAgIEFTU0VSVCghZGVjb2Rlci5pc0ludmFsaWQoKSk7CiAKICAg
ICBpZiAocmVwbHlFbmNvZGVyKQotICAgICAgICBzZW5kU3luY1JlcGx5KFdURjo6bW92ZShyZXBs
eUVuY29kZXIpKTsKKyAgICAgICAgc2VuZFN5bmNSZXBseShXVEZNb3ZlKHJlcGx5RW5jb2Rlcikp
OwogfQogCiB2b2lkIENvbm5lY3Rpb246OmRpc3BhdGNoRGlkUmVjZWl2ZUludmFsaWRNZXNzYWdl
KGNvbnN0IENTdHJpbmcmIG1lc3NhZ2VSZWNlaXZlck5hbWVTdHJpbmcsIGNvbnN0IENTdHJpbmcm
IG1lc3NhZ2VOYW1lU3RyaW5nKQpAQCAtODc3LDcgKzg3Nyw3IEBAIHZvaWQgQ29ubmVjdGlvbjo6
ZW5xdWV1ZUluY29taW5nTWVzc2FnZShzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZURlY29kZXI+IGlu
Y29taW5nCiB7CiAgICAgewogICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayhtX2lu
Y29taW5nTWVzc2FnZXNNdXRleCk7Ci0gICAgICAgIG1faW5jb21pbmdNZXNzYWdlcy5hcHBlbmQo
V1RGOjptb3ZlKGluY29taW5nTWVzc2FnZSkpOworICAgICAgICBtX2luY29taW5nTWVzc2FnZXMu
YXBwZW5kKFdURk1vdmUoaW5jb21pbmdNZXNzYWdlKSk7CiAgICAgfQogCiAgICAgUmVmUHRyPENv
bm5lY3Rpb24+IHByb3RlY3RlZFRoaXModGhpcyk7CkBAIC05NTAsNyArOTUwLDcgQEAgdm9pZCBD
b25uZWN0aW9uOjpkaXNwYXRjaE9uZU1lc3NhZ2UoKQogICAgICAgICBtZXNzYWdlID0gbV9pbmNv
bWluZ01lc3NhZ2VzLnRha2VGaXJzdCgpOwogICAgIH0KIAotICAgIGRpc3BhdGNoTWVzc2FnZShX
VEY6Om1vdmUobWVzc2FnZSkpOworICAgIGRpc3BhdGNoTWVzc2FnZShXVEZNb3ZlKG1lc3NhZ2Up
KTsKIH0KIAogdm9pZCBDb25uZWN0aW9uOjp3YWtlVXBSdW5Mb29wKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0Mi9Q
bGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCmluZGV4IDc0YTQ2M2I4OWZmYjYwNTZmZTMwMDg1YTgw
YWUwZjNmZjhkNzJlNjYuLjQxM2EzNjFjOGQ5ODQ4OTRkYTRiNTY5MGQyNDliNzM3Y2Y0NjNjY2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmgKKysr
IGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaApAQCAtMTMwLDcgKzEz
MCw3IEBAIHB1YmxpYzoKIAogICAgICAgICBJZGVudGlmaWVyKG1hY2hfcG9ydF90IHBvcnQsIE9T
T2JqZWN0UHRyPHhwY19jb25uZWN0aW9uX3Q+IHhwY0Nvbm5lY3Rpb24pCiAgICAgICAgICAgICA6
IHBvcnQocG9ydCkKLSAgICAgICAgICAgICwgeHBjQ29ubmVjdGlvbihXVEY6Om1vdmUoeHBjQ29u
bmVjdGlvbikpCisgICAgICAgICAgICAsIHhwY0Nvbm5lY3Rpb24oV1RGTW92ZSh4cGNDb25uZWN0
aW9uKSkKICAgICAgICAgewogICAgICAgICB9CiAKQEAgLTM2Nyw3ICszNjcsNyBAQCB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBib29sIENvbm5lY3Rpb246OnNlbmQoVCYmIG1lc3NhZ2UsIHVpbnQ2NF90
IGRlc3RpbmF0aW9uSUQsCiAgICAgYXV0byBlbmNvZGVyID0gc3RkOjptYWtlX3VuaXF1ZTxNZXNz
YWdlRW5jb2Rlcj4oVDo6cmVjZWl2ZXJOYW1lKCksIFQ6Om5hbWUoKSwgZGVzdGluYXRpb25JRCk7
CiAgICAgZW5jb2Rlci0+ZW5jb2RlKG1lc3NhZ2UuYXJndW1lbnRzKCkpOwogICAgIAotICAgIHJl
dHVybiBzZW5kTWVzc2FnZShXVEY6Om1vdmUoZW5jb2RlciksIG1lc3NhZ2VTZW5kRmxhZ3MpOwor
ICAgIHJldHVybiBzZW5kTWVzc2FnZShXVEZNb3ZlKGVuY29kZXIpLCBtZXNzYWdlU2VuZEZsYWdz
KTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4gYm9vbCBDb25uZWN0aW9uOjpzZW5kU3luYyhU
JiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiByZXBseSwgdWludDY0X3QgZGVzdGluYXRp
b25JRCwgc3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcyB0aW1lb3V0LCB1bnNpZ25lZCBzeW5jU2Vu
ZEZsYWdzKQpAQCAtMzg2LDcgKzM4Niw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGJvb2wgQ29u
bmVjdGlvbjo6c2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYKICAgICBl
bmNvZGVyLT5lbmNvZGUobWVzc2FnZS5hcmd1bWVudHMoKSk7CiAKICAgICAvLyBOb3cgc2VuZCB0
aGUgbWVzc2FnZSBhbmQgd2FpdCBmb3IgYSByZXBseS4KLSAgICBzdGQ6OnVuaXF1ZV9wdHI8TWVz
c2FnZURlY29kZXI+IHJlcGx5RGVjb2RlciA9IHNlbmRTeW5jTWVzc2FnZShzeW5jUmVxdWVzdElE
LCBXVEY6Om1vdmUoZW5jb2RlciksIHRpbWVvdXQsIHN5bmNTZW5kRmxhZ3MpOworICAgIHN0ZDo6
dW5pcXVlX3B0cjxNZXNzYWdlRGVjb2Rlcj4gcmVwbHlEZWNvZGVyID0gc2VuZFN5bmNNZXNzYWdl
KHN5bmNSZXF1ZXN0SUQsIFdURk1vdmUoZW5jb2RlciksIHRpbWVvdXQsIHN5bmNTZW5kRmxhZ3Mp
OwogICAgIGlmICghcmVwbHlEZWNvZGVyKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9IYW5kbGVNZXNzYWdlLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvSGFuZGxlTWVzc2FnZS5oCmluZGV4IDIwNjFmODUxYzZl
M2EzMGQ4YTQ3ZTliMWU4YWIzNmJiZTA1N2U1ZjYuLjJjZTA4M2RlNjliMTEwMmFjOTM1NjYyM2Nk
ZDIyZWE0ZjFmNGQwMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9I
YW5kbGVNZXNzYWdlLmgKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL0hhbmRsZU1l
c3NhZ2UuaApAQCAtODksNyArODksNyBAQCB2b2lkIGhhbmRsZU1lc3NhZ2UoTWVzc2FnZURlY29k
ZXImIGRlY29kZXIsIEMqIG9iamVjdCwgTUYgZnVuY3Rpb24pCiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBjYWxsTWVtYmVyRnVuY3Rpb24oV1RGOjptb3ZlKGFyZ3VtZW50cyksIG9iamVj
dCwgZnVuY3Rpb24pOworICAgIGNhbGxNZW1iZXJGdW5jdGlvbihXVEZNb3ZlKGFyZ3VtZW50cyks
IG9iamVjdCwgZnVuY3Rpb24pOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBD
LCB0eXBlbmFtZSBNRj4KQEAgLTEwMiw3ICsxMDIsNyBAQCB2b2lkIGhhbmRsZU1lc3NhZ2UoTWVz
c2FnZURlY29kZXImIGRlY29kZXIsIE1lc3NhZ2VFbmNvZGVyJiByZXBseUVuY29kZXIsIEMqIG9i
agogICAgIH0KIAogICAgIHR5cGVuYW1lIFQ6OlJlcGx5OjpWYWx1ZVR5cGUgcmVwbHlBcmd1bWVu
dHM7Ci0gICAgY2FsbE1lbWJlckZ1bmN0aW9uKFdURjo6bW92ZShhcmd1bWVudHMpLCByZXBseUFy
Z3VtZW50cywgb2JqZWN0LCBmdW5jdGlvbik7CisgICAgY2FsbE1lbWJlckZ1bmN0aW9uKFdURk1v
dmUoYXJndW1lbnRzKSwgcmVwbHlBcmd1bWVudHMsIG9iamVjdCwgZnVuY3Rpb24pOwogICAgIHJl
cGx5RW5jb2RlciA8PCByZXBseUFyZ3VtZW50czsKIH0KIApAQCAtMTE2LDcgKzExNiw3IEBAIHZv
aWQgaGFuZGxlTWVzc2FnZShDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBNZXNzYWdlRGVjb2RlciYg
ZGVjb2RlciwgTWVzc2FnZUVuY29kCiAgICAgfQogCiAgICAgdHlwZW5hbWUgVDo6UmVwbHk6OlZh
bHVlVHlwZSByZXBseUFyZ3VtZW50czsKLSAgICBjYWxsTWVtYmVyRnVuY3Rpb24oY29ubmVjdGlv
biwgV1RGOjptb3ZlKGFyZ3VtZW50cyksIHJlcGx5QXJndW1lbnRzLCBvYmplY3QsIGZ1bmN0aW9u
KTsKKyAgICBjYWxsTWVtYmVyRnVuY3Rpb24oY29ubmVjdGlvbiwgV1RGTW92ZShhcmd1bWVudHMp
LCByZXBseUFyZ3VtZW50cywgb2JqZWN0LCBmdW5jdGlvbik7CiAgICAgcmVwbHlFbmNvZGVyIDw8
IHJlcGx5QXJndW1lbnRzOwogfQogCkBAIC0xMjgsNyArMTI4LDcgQEAgdm9pZCBoYW5kbGVNZXNz
YWdlKENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIE1lc3NhZ2VEZWNvZGVyJiBkZWNvZGVyLCBDKiBv
YmplY3QsIE0KICAgICAgICAgQVNTRVJUKGRlY29kZXIuaXNJbnZhbGlkKCkpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQotICAgIGNhbGxNZW1iZXJGdW5jdGlvbihjb25uZWN0aW9uLCBXVEY6Om1v
dmUoYXJndW1lbnRzKSwgb2JqZWN0LCBmdW5jdGlvbik7CisgICAgY2FsbE1lbWJlckZ1bmN0aW9u
KGNvbm5lY3Rpb24sIFdURk1vdmUoYXJndW1lbnRzKSwgb2JqZWN0LCBmdW5jdGlvbik7CiB9CiAK
IHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEMsIHR5cGVuYW1lIE1GPgpAQCAtMTQwLDgg
KzE0MCw4IEBAIHZvaWQgaGFuZGxlTWVzc2FnZURlbGF5ZWQoQ29ubmVjdGlvbiYgY29ubmVjdGlv
biwgTWVzc2FnZURlY29kZXImIGRlY29kZXIsIHN0ZDo6CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBSZWZQdHI8dHlwZW5hbWUgVDo6RGVsYXllZFJlcGx5PiBkZWxheWVkUmVwbHkgPSBh
ZG9wdFJlZihuZXcgdHlwZW5hbWUgVDo6RGVsYXllZFJlcGx5KCZjb25uZWN0aW9uLCBXVEY6Om1v
dmUocmVwbHlFbmNvZGVyKSkpOwotICAgIGNhbGxNZW1iZXJGdW5jdGlvbihXVEY6Om1vdmUoYXJn
dW1lbnRzKSwgZGVsYXllZFJlcGx5LnJlbGVhc2UoKSwgb2JqZWN0LCBmdW5jdGlvbik7CisgICAg
UmVmUHRyPHR5cGVuYW1lIFQ6OkRlbGF5ZWRSZXBseT4gZGVsYXllZFJlcGx5ID0gYWRvcHRSZWYo
bmV3IHR5cGVuYW1lIFQ6OkRlbGF5ZWRSZXBseSgmY29ubmVjdGlvbiwgV1RGTW92ZShyZXBseUVu
Y29kZXIpKSk7CisgICAgY2FsbE1lbWJlckZ1bmN0aW9uKFdURk1vdmUoYXJndW1lbnRzKSwgZGVs
YXllZFJlcGx5LnJlbGVhc2UoKSwgb2JqZWN0LCBmdW5jdGlvbik7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIElQQwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL01lc3NhZ2VE
ZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9NZXNzYWdlRGVjb2Rlci5j
cHAKaW5kZXggMDVmMjNjZWRhNTNkYTMzZGMyM2M4OGY5NDRmYmI2Yjc1MGUzMDJlYS4uNDc3OWY0
NjgzMzUxNDc1OTlkZTM3MGE1Nzk1ZGJjMmQyNzc0YmVhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvUGxhdGZvcm0vSVBDL01lc3NhZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9QbGF0Zm9ybS9JUEMvTWVzc2FnZURlY29kZXIuY3BwCkBAIC00Niw3ICs0Niw3IEBAIE1lc3Nh
Z2VEZWNvZGVyOjp+TWVzc2FnZURlY29kZXIoKQogfQogCiBNZXNzYWdlRGVjb2Rlcjo6TWVzc2Fn
ZURlY29kZXIoY29uc3QgRGF0YVJlZmVyZW5jZSYgYnVmZmVyLCBWZWN0b3I8QXR0YWNobWVudD4g
YXR0YWNobWVudHMpCi0gICAgOiBBcmd1bWVudERlY29kZXIoYnVmZmVyLmRhdGEoKSwgYnVmZmVy
LnNpemUoKSwgV1RGOjptb3ZlKGF0dGFjaG1lbnRzKSkKKyAgICA6IEFyZ3VtZW50RGVjb2Rlcihi
dWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpLCBXVEZNb3ZlKGF0dGFjaG1lbnRzKSkKIHsKICAg
ICBpZiAoIWRlY29kZShtX21lc3NhZ2VGbGFncykpCiAgICAgICAgIHJldHVybjsKQEAgLTgyLDcg
KzgyLDcgQEAgYm9vbCBNZXNzYWdlRGVjb2Rlcjo6c2hvdWxkVXNlRnVsbHlTeW5jaHJvbm91c01v
ZGVGb3JUZXN0aW5nKCkgY29uc3QKICNpZiBQTEFURk9STShNQUMpCiB2b2lkIE1lc3NhZ2VEZWNv
ZGVyOjpzZXRJbXBvcnRhbmNlQXNzZXJ0aW9uKHN0ZDo6dW5pcXVlX3B0cjxJbXBvcnRhbmNlQXNz
ZXJ0aW9uPiBhc3NlcnRpb24pCiB7Ci0gICAgbV9pbXBvcnRhbmNlQXNzZXJ0aW9uID0gV1RGOjpt
b3ZlKGFzc2VydGlvbik7CisgICAgbV9pbXBvcnRhbmNlQXNzZXJ0aW9uID0gV1RGTW92ZShhc3Nl
cnRpb24pOwogfQogI2VuZGlmCiAKQEAgLTkzLDE0ICs5MywxNCBAQCBzdGQ6OnVuaXF1ZV9wdHI8
TWVzc2FnZURlY29kZXI+IE1lc3NhZ2VEZWNvZGVyOjp1bndyYXBGb3JUZXN0aW5nKE1lc3NhZ2VE
ZWNvZGVyJgogICAgIFZlY3RvcjxBdHRhY2htZW50PiBhdHRhY2htZW50czsKICAgICBBdHRhY2ht
ZW50IGF0dGFjaG1lbnQ7CiAgICAgd2hpbGUgKGRlY29kZXIucmVtb3ZlQXR0YWNobWVudChhdHRh
Y2htZW50KSkKLSAgICAgICAgYXR0YWNobWVudHMuYXBwZW5kKFdURjo6bW92ZShhdHRhY2htZW50
KSk7CisgICAgICAgIGF0dGFjaG1lbnRzLmFwcGVuZChXVEZNb3ZlKGF0dGFjaG1lbnQpKTsKICAg
ICBhdHRhY2htZW50cy5yZXZlcnNlKCk7CiAKICAgICBEYXRhUmVmZXJlbmNlIHdyYXBwZWRNZXNz
YWdlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUod3JhcHBlZE1lc3NhZ2UpKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE1lc3NhZ2VEZWNv
ZGVyPih3cmFwcGVkTWVzc2FnZSwgV1RGOjptb3ZlKGF0dGFjaG1lbnRzKSk7CisgICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8TWVzc2FnZURlY29kZXI+KHdyYXBwZWRNZXNzYWdlLCBXVEZNb3Zl
KGF0dGFjaG1lbnRzKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIElQQwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL01lc3NhZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViS2l0
Mi9QbGF0Zm9ybS9JUEMvTWVzc2FnZURlY29kZXIuaAppbmRleCBhMmZhMWQ3OWY3MWE2ZjUyMzVi
NDI3OWUzZWQ3OWY5OThjZWIwYWU5Li4zOWM1NjBkN2I3Y2RlYTU1N2M1ZWU2NjI3Y2MzNjdkYWVm
NGQ5ZmQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvTWVzc2FnZURl
Y29kZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvTWVzc2FnZURlY29kZXIu
aApAQCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogI2lmIEhBVkUoRFRSQUNFKQot
ICAgIHZvaWQgc2V0TWVzc2FnZVByb2Nlc3NpbmdUb2tlbihzdGQ6OnVuaXF1ZV9wdHI8TWVzc2Fn
ZVJlY29yZGVyOjpNZXNzYWdlUHJvY2Vzc2luZ1Rva2VuPiB0b2tlbikgeyBtX3Byb2Nlc3NpbmdU
b2tlbiA9IFdURjo6bW92ZSh0b2tlbik7IH0KKyAgICB2b2lkIHNldE1lc3NhZ2VQcm9jZXNzaW5n
VG9rZW4oc3RkOjp1bmlxdWVfcHRyPE1lc3NhZ2VSZWNvcmRlcjo6TWVzc2FnZVByb2Nlc3NpbmdU
b2tlbj4gdG9rZW4pIHsgbV9wcm9jZXNzaW5nVG9rZW4gPSBXVEZNb3ZlKHRva2VuKTsgfQogCiAg
ICAgY29uc3QgdXVpZF90JiBVVUlEKCkgY29uc3QgeyByZXR1cm4gbV9VVUlEOyB9CiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9NZXNzYWdlRW5jb2Rlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvTWVzc2FnZUVuY29kZXIuY3BwCmluZGV4
IGNiODM3MGZlZGJiMjdlMDAwMjQ4NjQ4ZmIyMzNjMzM2MWQ5OTM2YzEuLjYxNDRiNzhkNWQ2NWQ0
N2Q3ZDNmYjk4OTExZjQ1NGUxMjllYTU1N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtL0lQQy9NZXNzYWdlRW5jb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZv
cm0vSVBDL01lc3NhZ2VFbmNvZGVyLmNwcApAQCAtMTE4LDcgKzExOCw3IEBAIHZvaWQgTWVzc2Fn
ZUVuY29kZXI6OndyYXBGb3JUZXN0aW5nKHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlRW5jb2Rlcj4g
b3JpZ2luYWwpCiAgICAgVmVjdG9yPEF0dGFjaG1lbnQ+IGF0dGFjaG1lbnRzID0gb3JpZ2luYWwt
PnJlbGVhc2VBdHRhY2htZW50cygpOwogICAgIHJlc2VydmUoYXR0YWNobWVudHMuc2l6ZSgpKTsK
ICAgICBmb3IgKEF0dGFjaG1lbnQmIGF0dGFjaG1lbnQgOiBhdHRhY2htZW50cykKLSAgICAgICAg
YWRkQXR0YWNobWVudChXVEY6Om1vdmUoYXR0YWNobWVudCkpOworICAgICAgICBhZGRBdHRhY2ht
ZW50KFdURk1vdmUoYXR0YWNobWVudCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBJUEMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9NZXNzYWdlUmVjb3JkZXIuY3BwIGIv
U291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL01lc3NhZ2VSZWNvcmRlci5jcHAKaW5kZXggMWIy
ZTljMzc4ZjY1NDgxYWNmNDVhNmU3ZTE5MjUyZDdiZWJlOTJlYy4uZWYzZWUwNzQ2MWE1MDY3Zjlh
YjQxMjk0NjQ2YTA4ODZlNDYzOTcxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZv
cm0vSVBDL01lc3NhZ2VSZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0v
SVBDL01lc3NhZ2VSZWNvcmRlci5jcHAKQEAgLTY0LDcgKzY0LDcgQEAgc3RkOjp1bmlxdWVfcHRy
PE1lc3NhZ2VSZWNvcmRlcjo6TWVzc2FnZVByb2Nlc3NpbmdUb2tlbj4gTWVzc2FnZVJlY29yZGVy
OjpyZWNvcmQKIAogICAgIHV1aWRfY29weShyZWNvcmQuVVVJRCwgZW5jb2Rlci5VVUlEKCkpOwog
Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TWVzc2FnZVByb2Nlc3NpbmdUb2tlbj4oV1RG
Ojptb3ZlKHJlY29yZCkpOworICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE1lc3NhZ2VQcm9j
ZXNzaW5nVG9rZW4+KFdURk1vdmUocmVjb3JkKSk7CiB9CiAKIHZvaWQgTWVzc2FnZVJlY29yZGVy
OjpyZWNvcmRJbmNvbWluZ01lc3NhZ2UoQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgTWVzc2FnZURl
Y29kZXImIGRlY29kZXIpCkBAIC05MiwxMyArOTIsMTMgQEAgdm9pZCBNZXNzYWdlUmVjb3JkZXI6
OnJlY29yZEluY29taW5nTWVzc2FnZShDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBNZXNzYWdlRGVj
b2QKIAogICAgIHV1aWRfY29weShyZWNvcmQuVVVJRCwgZGVjb2Rlci5VVUlEKCkpOwogCi0gICAg
ZGVjb2Rlci5zZXRNZXNzYWdlUHJvY2Vzc2luZ1Rva2VuKHN0ZDo6bWFrZV91bmlxdWU8TWVzc2Fn
ZVByb2Nlc3NpbmdUb2tlbj4oV1RGOjptb3ZlKHJlY29yZCkpKTsKKyAgICBkZWNvZGVyLnNldE1l
c3NhZ2VQcm9jZXNzaW5nVG9rZW4oc3RkOjptYWtlX3VuaXF1ZTxNZXNzYWdlUHJvY2Vzc2luZ1Rv
a2VuPihXVEZNb3ZlKHJlY29yZCkpKTsKIH0KIAogI3ByYWdtYSBtYXJrIE1lc3NhZ2VQcm9jZXNz
aW5nVG9rZW4KIAogTWVzc2FnZVJlY29yZGVyOjpNZXNzYWdlUHJvY2Vzc2luZ1Rva2VuOjpNZXNz
YWdlUHJvY2Vzc2luZ1Rva2VuKFdlYktpdE1lc3NhZ2VSZWNvcmQgcmVjb3JkKQotICAgIDogbV9y
ZWNvcmQoV1RGOjptb3ZlKHJlY29yZCkpCisgICAgOiBtX3JlY29yZChXVEZNb3ZlKHJlY29yZCkp
CiB7CiAgICAgbV9yZWNvcmQuc3RhcnRUaW1lID0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1l
KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvTWVzc2FnZVNl
bmRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvTWVzc2FnZVNlbmRlci5jcHAK
aW5kZXggNTRkOGU5MzQ4OWIxZjAzNGMwNTA0NGI2NTAxYzI2YTNkY2UwZDQ4MS4uZDhjNGNjY2Yy
ODQ5YzFhNGRlYTc5MTc2NGIyOGVlNjA1ODk2OTFjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvUGxhdGZvcm0vSVBDL01lc3NhZ2VTZW5kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtL0lQQy9NZXNzYWdlU2VuZGVyLmNwcApAQCAtMzYsNyArMzYsNyBAQCBib29sIE1lc3Nh
Z2VTZW5kZXI6OnNlbmRNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlRW5jb2Rlcj4gZW5j
b2RlciwgdW5zaWduZQogewogICAgIEFTU0VSVChtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpKTsK
IAotICAgIHJldHVybiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpLT5zZW5kTWVzc2FnZShXVEY6
Om1vdmUoZW5jb2RlciksIG1lc3NhZ2VTZW5kRmxhZ3MpOworICAgIHJldHVybiBtZXNzYWdlU2Vu
ZGVyQ29ubmVjdGlvbigpLT5zZW5kTWVzc2FnZShXVEZNb3ZlKGVuY29kZXIpLCBtZXNzYWdlU2Vu
ZEZsYWdzKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSVBDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybS9JUEMvTWVzc2FnZVNlbmRlci5oIGIvU291cmNlL1dlYktpdDIvUGxhdGZv
cm0vSVBDL01lc3NhZ2VTZW5kZXIuaAppbmRleCBhYmUxYWUwZGQxNzdmNTZjYzljY2UxOWY3NzEw
M2NlOWZiOTU2MjE0Li45NmI3NzI0NzYyZmE2Y2E0YTZhY2JhYTI5ZGQyMGZiYmRjNmE4ZGFjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvTWVzc2FnZVNlbmRlci5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9NZXNzYWdlU2VuZGVyLmgKQEAgLTQ3LDcg
KzQ3LDcgQEAgcHVibGljOgogICAgICAgICBhdXRvIGVuY29kZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PE1lc3NhZ2VFbmNvZGVyPihVOjpyZWNlaXZlck5hbWUoKSwgVTo6bmFtZSgpLCBkZXN0aW5hdGlv
bklEKTsKICAgICAgICAgZW5jb2Rlci0+ZW5jb2RlKG1lc3NhZ2UuYXJndW1lbnRzKCkpOwogICAg
ICAgICAKLSAgICAgICAgcmV0dXJuIHNlbmRNZXNzYWdlKFdURjo6bW92ZShlbmNvZGVyKSwgbWVz
c2FnZVNlbmRGbGFncyk7CisgICAgICAgIHJldHVybiBzZW5kTWVzc2FnZShXVEZNb3ZlKGVuY29k
ZXIpLCBtZXNzYWdlU2VuZEZsYWdzKTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBU
PgpAQCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBzdGF0aWNfYXNzZXJ0
KFQ6OmlzU3luYywgIk1lc3NhZ2UgaXMgbm90IHN5bmMhIik7CiAKLSAgICAgICAgcmV0dXJuIHNl
bmRTeW5jKHN0ZDo6Zm9yd2FyZDxUPihtZXNzYWdlKSwgV1RGOjptb3ZlKHJlcGx5KSwgbWVzc2Fn
ZVNlbmRlckRlc3RpbmF0aW9uSUQoKSwgdGltZW91dCwgc3luY1NlbmRGbGFncyk7CisgICAgICAg
IHJldHVybiBzZW5kU3luYyhzdGQ6OmZvcndhcmQ8VD4obWVzc2FnZSksIFdURk1vdmUocmVwbHkp
LCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpLCB0aW1lb3V0LCBzeW5jU2VuZEZsYWdzKTsK
ICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpAQCAtNjMsNyArNjMsNyBAQCBwdWJs
aWM6CiAgICAgewogICAgICAgICBBU1NFUlQobWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSk7CiAK
LSAgICAgICAgcmV0dXJuIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCktPnNlbmRTeW5jKFdURjo6
bW92ZShtZXNzYWdlKSwgV1RGOjptb3ZlKHJlcGx5KSwgZGVzdGluYXRpb25JRCwgdGltZW91dCwg
c3luY1NlbmRGbGFncyk7CisgICAgICAgIHJldHVybiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigp
LT5zZW5kU3luYyhXVEZNb3ZlKG1lc3NhZ2UpLCBXVEZNb3ZlKHJlcGx5KSwgZGVzdGluYXRpb25J
RCwgdGltZW91dCwgc3luY1NlbmRGbGFncyk7CiAgICAgfQogCiAgICAgdmlydHVhbCBib29sIHNl
bmRNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlRW5jb2Rlcj4sIHVuc2lnbmVkIG1lc3Nh
Z2VTZW5kRmxhZ3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL2ds
aWIvR1NvY2tldE1vbml0b3IuY3BwIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL2dsaWIv
R1NvY2tldE1vbml0b3IuY3BwCmluZGV4IDIyMjkwNThjZjU4MTg1YWQyMjczNzdiMjlmNmI3ZGFi
NmQ0YzIxZTEuLjBmYWYyNjZjY2JmMjgwMDVkODA2ODA1ZmFhNjNiNmNmNGVjN2E5NDkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9nbGliL0dTb2NrZXRNb25pdG9yLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvZ2xpYi9HU29ja2V0TW9uaXRvci5j
cHAKQEAgLTQ5LDcgKzQ5LDcgQEAgdm9pZCBHU29ja2V0TW9uaXRvcjo6c3RhcnQoR1NvY2tldCog
c29ja2V0LCBHSU9Db25kaXRpb24gY29uZGl0aW9uLCBSdW5Mb29wJiBydW4KICAgICBtX2NhbmNl
bGxhYmxlID0gYWRvcHRHUmVmKGdfY2FuY2VsbGFibGVfbmV3KCkpOwogICAgIG1fc291cmNlID0g
YWRvcHRHUmVmKGdfc29ja2V0X2NyZWF0ZV9zb3VyY2Uoc29ja2V0LCBjb25kaXRpb24sIG1fY2Fu
Y2VsbGFibGUuZ2V0KCkpKTsKICAgICBnX3NvdXJjZV9zZXRfbmFtZShtX3NvdXJjZS5nZXQoKSwg
IltXZWJLaXRdIFNvY2tldCBtb25pdG9yIik7Ci0gICAgbV9jYWxsYmFjayA9IFdURjo6bW92ZShj
YWxsYmFjayk7CisgICAgbV9jYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spOwogICAgIGdfc291
cmNlX3NldF9jYWxsYmFjayhtX3NvdXJjZS5nZXQoKSwgcmVpbnRlcnByZXRfY2FzdDxHU291cmNl
RnVuYz4oc29ja2V0U291cmNlQ2FsbGJhY2spLCB0aGlzLCBudWxscHRyKTsKICAgICBnX3NvdXJj
ZV9hdHRhY2gobV9zb3VyY2UuZ2V0KCksIHJ1bkxvb3AubWFpbkNvbnRleHQoKSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvbWFjL0Nvbm5lY3Rpb25NYWMubW0g
Yi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvbWFjL0Nvbm5lY3Rpb25NYWMubW0KaW5kZXgg
OGJlYThiYWUyNGI5YzIzMzgyNDRiNWY1OTM0MjMxYjJhMjg0NzgwYS4uNTMwYmQ4NjFlZWI2OTQw
ODcxNTU5ZjY0ODlmNmQ2MmI5ZWE5N2IyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxh
dGZvcm0vSVBDL21hYy9Db25uZWN0aW9uTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRm
b3JtL0lQQy9tYWMvQ29ubmVjdGlvbk1hYy5tbQpAQCAtMjAzLDcgKzIwMyw3IEBAIGJvb2wgQ29u
bmVjdGlvbjo6b3BlbigpCiAgICAgICAgIGF1dG8gZW5jb2RlciA9IHN0ZDo6bWFrZV91bmlxdWU8
TWVzc2FnZUVuY29kZXI+KCJJUEMiLCAiSW5pdGlhbGl6ZUNvbm5lY3Rpb24iLCAwKTsKICAgICAg
ICAgZW5jb2Rlci0+ZW5jb2RlKE1hY2hQb3J0KG1fcmVjZWl2ZVBvcnQsIE1BQ0hfTVNHX1RZUEVf
TUFLRV9TRU5EKSk7CiAKLSAgICAgICAgc2VuZE1lc3NhZ2UoV1RGOjptb3ZlKGVuY29kZXIpKTsK
KyAgICAgICAgc2VuZE1lc3NhZ2UoV1RGTW92ZShlbmNvZGVyKSk7CiAKICAgICAgICAgaW5pdGlh
bGl6ZURlYWROYW1lU291cmNlKCk7CiAgICAgfQpAQCAtMjI2LDcgKzIyNiw3IEBAIGJvb2wgQ29u
bmVjdGlvbjo6b3BlbigpCiAgICAgICAgIGF1dG8gZW5jb2RlciA9IHN0ZDo6bWFrZV91bmlxdWU8
TWVzc2FnZUVuY29kZXI+KCJJUEMiLCAiU2V0RXhjZXB0aW9uUG9ydCIsIDApOwogICAgICAgICBl
bmNvZGVyLT5lbmNvZGUoTWFjaFBvcnQobV9leGNlcHRpb25Qb3J0LCBNQUNIX01TR19UWVBFX01B
S0VfU0VORCkpOwogCi0gICAgICAgIHNlbmRNZXNzYWdlKFdURjo6bW92ZShlbmNvZGVyKSk7Cisg
ICAgICAgIHNlbmRNZXNzYWdlKFdURk1vdmUoZW5jb2RlcikpOwogICAgIH0KICNlbmRpZgogCkBA
IC00MjgsNyArNDI4LDcgQEAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlRGVjb2Rlcj4g
Y3JlYXRlTWVzc2FnZURlY29kZXIobWFjaF9tc2dfaGVhZGVyX3QqIGgKICAgICAgICAgdWludDhf
dCogbWVzc2FnZUJvZHkgPSBzdGF0aWNfY2FzdDx1aW50OF90Kj4oZGVzY3JpcHRvci0+b3V0X29m
X2xpbmUuYWRkcmVzcyk7CiAgICAgICAgIHNpemVfdCBtZXNzYWdlQm9keVNpemUgPSBkZXNjcmlw
dG9yLT5vdXRfb2ZfbGluZS5zaXplOwogCi0gICAgICAgIGF1dG8gZGVjb2RlciA9IHN0ZDo6bWFr
ZV91bmlxdWU8TWVzc2FnZURlY29kZXI+KERhdGFSZWZlcmVuY2UobWVzc2FnZUJvZHksIG1lc3Nh
Z2VCb2R5U2l6ZSksIFdURjo6bW92ZShhdHRhY2htZW50cykpOworICAgICAgICBhdXRvIGRlY29k
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE1lc3NhZ2VEZWNvZGVyPihEYXRhUmVmZXJlbmNlKG1lc3Nh
Z2VCb2R5LCBtZXNzYWdlQm9keVNpemUpLCBXVEZNb3ZlKGF0dGFjaG1lbnRzKSk7CiAKICAgICAg
ICAgdm1fZGVhbGxvY2F0ZShtYWNoX3Rhc2tfc2VsZigpLCByZWludGVycHJldF9jYXN0PHZtX2Fk
ZHJlc3NfdD4oZGVzY3JpcHRvci0+b3V0X29mX2xpbmUuYWRkcmVzcyksIGRlc2NyaXB0b3ItPm91
dF9vZl9saW5lLnNpemUpOwogCkBAIC01MzUsNyArNTM1LDcgQEAgdm9pZCBDb25uZWN0aW9uOjpy
ZWNlaXZlU291cmNlRXZlbnRIYW5kbGVyKCkKICAgICB9CiAjZW5kaWYKIAotICAgIHByb2Nlc3NJ
bmNvbWluZ01lc3NhZ2UoV1RGOjptb3ZlKGRlY29kZXIpKTsKKyAgICBwcm9jZXNzSW5jb21pbmdN
ZXNzYWdlKFdURk1vdmUoZGVjb2RlcikpOwogfSAgICAKIAogI2lmIFBMQVRGT1JNKE1BQykgJiYg
X19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8PSAxMDEwMDAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy91bml4L0Nvbm5lY3Rpb25Vbml4LmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy91bml4L0Nvbm5lY3Rpb25Vbml4LmNwcAppbmRleCBiMmJk
ZTk4NDY5MjhhMjlmMzhmYmM1NGZkZjc4OWQ5OGY1MGJmNDk0Li4yZjNjZTRkYzFjZWFkMmM3OTE4
ZDQyNTI5ODc0Yzg3OTI4Y2FkMzRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9y
bS9JUEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZv
cm0vSVBDL3VuaXgvQ29ubmVjdGlvblVuaXguY3BwCkBAIC0yNDcsOSArMjQ3LDkgQEAgYm9vbCBD
b25uZWN0aW9uOjpwcm9jZXNzTWVzc2FnZSgpCiAgICAgaWYgKG1lc3NhZ2VJbmZvLmlzTWVzc2Fn
ZUJvZHlJc091dE9mTGluZSgpKQogICAgICAgICBtZXNzYWdlQm9keSA9IHJlaW50ZXJwcmV0X2Nh
c3Q8dWludDhfdCo+KG9vbE1lc3NhZ2VCb2R5LT5kYXRhKCkpOwogCi0gICAgYXV0byBkZWNvZGVy
ID0gc3RkOjptYWtlX3VuaXF1ZTxNZXNzYWdlRGVjb2Rlcj4oRGF0YVJlZmVyZW5jZShtZXNzYWdl
Qm9keSwgbWVzc2FnZUluZm8uYm9keVNpemUoKSksIFdURjo6bW92ZShhdHRhY2htZW50cykpOwor
ICAgIGF1dG8gZGVjb2RlciA9IHN0ZDo6bWFrZV91bmlxdWU8TWVzc2FnZURlY29kZXI+KERhdGFS
ZWZlcmVuY2UobWVzc2FnZUJvZHksIG1lc3NhZ2VJbmZvLmJvZHlTaXplKCkpLCBXVEZNb3ZlKGF0
dGFjaG1lbnRzKSk7CiAKLSAgICBwcm9jZXNzSW5jb21pbmdNZXNzYWdlKFdURjo6bW92ZShkZWNv
ZGVyKSk7CisgICAgcHJvY2Vzc0luY29taW5nTWVzc2FnZShXVEZNb3ZlKGRlY29kZXIpKTsKIAog
ICAgIGlmIChtX3JlYWRCdWZmZXJTaXplID4gbWVzc2FnZUxlbmd0aCkgewogICAgICAgICBtZW1t
b3ZlKG1fcmVhZEJ1ZmZlci5kYXRhKCksIG1fcmVhZEJ1ZmZlci5kYXRhKCkgKyBtZXNzYWdlTGVu
Z3RoLCBtX3JlYWRCdWZmZXJTaXplIC0gbWVzc2FnZUxlbmd0aCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9QbGF0Zm9ybS91bml4L1NoYXJlZE1lbW9yeVVuaXguY3BwIGIvU291cmNlL1dl
YktpdDIvUGxhdGZvcm0vdW5peC9TaGFyZWRNZW1vcnlVbml4LmNwcAppbmRleCBkYWUzNTVkODFj
NjViYWM1NDZjMjJlMTQ0YzgwYThlYTIzZDQwMDVjLi41NjgzNWU3NjY5NDI2ZDQ0OGI1YWNiMjgx
YjIyYmYxYjBlNjBkZTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS91bml4
L1NoYXJlZE1lbW9yeVVuaXguY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL3VuaXgv
U2hhcmVkTWVtb3J5VW5peC5jcHAKQEAgLTc3LDIwICs3NywyMCBAQCBib29sIFNoYXJlZE1lbW9y
eTo6SGFuZGxlOjpkZWNvZGUoSVBDOjpBcmd1bWVudERlY29kZXImIGRlY29kZXIsIEhhbmRsZSYg
aGFuZGxlKQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYXR0YWNobWVudCkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgIGhhbmRsZS5hZG9wdEF0dGFjaG1lbnQoV1RGOjptb3ZlKGF0dGFj
aG1lbnQpKTsKKyAgICBoYW5kbGUuYWRvcHRBdHRhY2htZW50KFdURk1vdmUoYXR0YWNobWVudCkp
OwogICAgIHJldHVybiB0cnVlOwogfQogCiBJUEM6OkF0dGFjaG1lbnQgU2hhcmVkTWVtb3J5OjpI
YW5kbGU6OnJlbGVhc2VBdHRhY2htZW50KCkgY29uc3QKIHsKLSAgICByZXR1cm4gV1RGOjptb3Zl
KG1fYXR0YWNobWVudCk7CisgICAgcmV0dXJuIFdURk1vdmUobV9hdHRhY2htZW50KTsKIH0KIAog
dm9pZCBTaGFyZWRNZW1vcnk6OkhhbmRsZTo6YWRvcHRBdHRhY2htZW50KElQQzo6QXR0YWNobWVu
dCYmIGF0dGFjaG1lbnQpCiB7CiAgICAgQVNTRVJUKGlzTnVsbCgpKTsKIAotICAgIG1fYXR0YWNo
bWVudCA9IFdURjo6bW92ZShhdHRhY2htZW50KTsKKyAgICBtX2F0dGFjaG1lbnQgPSBXVEZNb3Zl
KGF0dGFjaG1lbnQpOwogfQogCiBSZWZQdHI8U2hhcmVkTWVtb3J5PiBTaGFyZWRNZW1vcnk6OmFs
bG9jYXRlKHNpemVfdCBzaXplKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJv
Y2Vzcy9FbnRyeVBvaW50L21hYy9YUENTZXJ2aWNlL1BsdWdpblNlcnZpY2VFbnRyeVBvaW50Lm1t
IGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9FbnRyeVBvaW50L21hYy9YUENTZXJ2aWNl
L1BsdWdpblNlcnZpY2VFbnRyeVBvaW50Lm1tCmluZGV4IDgzYWRmZmNjM2U2OGYyNTRjOTcyNDVi
ZGFkNjVkMWY2MDFjMDUwZGEuLjgzNDg0MDJlYzEyMDdkMGVhMWZiODgzOWRjMzJmZTAxZWU0ODU0
ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvRW50cnlQb2ludC9t
YWMvWFBDU2VydmljZS9QbHVnaW5TZXJ2aWNlRW50cnlQb2ludC5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9QbHVnaW5Qcm9jZXNzL0VudHJ5UG9pbnQvbWFjL1hQQ1NlcnZpY2UvUGx1Z2luU2Vydmlj
ZUVudHJ5UG9pbnQubW0KQEAgLTQyLDcgKzQyLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFz
cyBQbHVnaW5TZXJ2aWNlSW5pdGlhbGl6ZXJEZWxlZ2F0ZSA6IHB1YmxpYyBYUENTZXJ2aWNlSW5p
dGlhbGl6ZXJEZWxlZ2F0ZSB7CiBwdWJsaWM6CiAgICAgUGx1Z2luU2VydmljZUluaXRpYWxpemVy
RGVsZWdhdGUoT1NPYmplY3RQdHI8eHBjX2Nvbm5lY3Rpb25fdD4gY29ubmVjdGlvbiwgeHBjX29i
amVjdF90IGluaXRpYWxpemVyTWVzc2FnZSkKLSAgICAgICAgOiBYUENTZXJ2aWNlSW5pdGlhbGl6
ZXJEZWxlZ2F0ZShXVEY6Om1vdmUoY29ubmVjdGlvbiksIGluaXRpYWxpemVyTWVzc2FnZSkKKyAg
ICAgICAgOiBYUENTZXJ2aWNlSW5pdGlhbGl6ZXJEZWxlZ2F0ZShXVEZNb3ZlKGNvbm5lY3Rpb24p
LCBpbml0aWFsaXplck1lc3NhZ2UpCiAgICAgewogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Qcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1BsdWdpblByb2Nlc3MvUGx1Z2luUHJvY2Vzcy5jcHAKaW5kZXggNDBiZjdjNTNhNDgxNmIwYWYx
NzcxNDdjYjhmMTcxMzBjYjY5NDNjNy4uMjcwMGNhMjI1NTVhNjhlOWMyZjIwNmEyMWZhMTc1YWNh
NmRmNDFiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Q
cm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpblByb2Nl
c3MuY3BwCkBAIC0xNDEsNyArMTQxLDcgQEAgdm9pZCBQbHVnaW5Qcm9jZXNzOjppbml0aWFsaXpl
UGx1Z2luUHJvY2VzcyhQbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGEKICAgICBz
ZXRNaW5pbXVtTGlmZXRpbWUocGFyYW1ldGVycy5taW5pbXVtTGlmZXRpbWUpOwogICAgIHNldFRl
cm1pbmF0aW9uVGltZW91dChwYXJhbWV0ZXJzLnRlcm1pbmF0aW9uVGltZW91dCk7CiAKLSAgICBw
bGF0Zm9ybUluaXRpYWxpemVQbHVnaW5Qcm9jZXNzKFdURjo6bW92ZShwYXJhbWV0ZXJzKSk7Cisg
ICAgcGxhdGZvcm1Jbml0aWFsaXplUGx1Z2luUHJvY2VzcyhXVEZNb3ZlKHBhcmFtZXRlcnMpKTsK
IH0KIAogdm9pZCBQbHVnaW5Qcm9jZXNzOjpjcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbigpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0
aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rp
b24uY3BwCmluZGV4IDgyZDlmYjE3ODhjYmUzY2M3Mjc1OGNlYjY2ZGZhOGMzYjg2NzY1NGUuLmJi
ODU4ZDBhMDMzZmFjMDY2ODc5ZTQ4YWY1MTRmOTQzYTZjYWVmYzQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCkBAIC03
NCw3ICs3NCw3IEBAIHZvaWQgV2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmFkZFBsdWdpbkNvbnRyb2xs
ZXJQcm94eShzdGQ6OnVuaXF1ZV9wdHI8UGx1Z2luQ29udHJvCiAgICAgdWludDY0X3QgcGx1Z2lu
SW5zdGFuY2VJRCA9IHBsdWdpbkNvbnRyb2xsZXItPnBsdWdpbkluc3RhbmNlSUQoKTsKIAogICAg
IEFTU0VSVCghbV9wbHVnaW5Db250cm9sbGVycy5jb250YWlucyhwbHVnaW5JbnN0YW5jZUlEKSk7
Ci0gICAgbV9wbHVnaW5Db250cm9sbGVycy5zZXQocGx1Z2luSW5zdGFuY2VJRCwgV1RGOjptb3Zl
KHBsdWdpbkNvbnRyb2xsZXIpKTsKKyAgICBtX3BsdWdpbkNvbnRyb2xsZXJzLnNldChwbHVnaW5J
bnN0YW5jZUlELCBXVEZNb3ZlKHBsdWdpbkNvbnRyb2xsZXIpKTsKIH0KIAogdm9pZCBXZWJQcm9j
ZXNzQ29ubmVjdGlvbjo6ZGVzdHJveVBsdWdpbkNvbnRyb2xsZXJQcm94eShQbHVnaW5Db250cm9s
bGVyUHJveHkqIHBsdWdpbkNvbnRyb2xsZXIpCkBAIC0yMTQsNyArMjE0LDcgQEAgdm9pZCBXZWJQ
cm9jZXNzQ29ubmVjdGlvbjo6Y3JlYXRlUGx1Z2luSW50ZXJuYWwoY29uc3QgUGx1Z2luQ3JlYXRp
b25QYXJhbWV0ZXJzJgogCiAgICAgLy8gTWFrZSBzdXJlIHRvIGFkZCB0aGUgcHJveHkgdG8gdGhl
IG1hcCBiZWZvcmUgaW5pdGlhbGl6aW5nIGl0LCBzaW5jZSB0aGUgcGx1Zy1pbiBtaWdodCBjYWxs
IG91dCB0byB0aGUgd2ViIHByb2Nlc3MgZnJvbSAKICAgICAvLyBpdHMgTlBQX05ldyBmdW5jdGlv
bi4gVGhpcyB3aWxsIGhhbmQgb3ZlciBvd25lcnNoaXAgb2YgdGhlIHByb3h5IHRvIHRoZSB3ZWIg
cHJvY2VzcyBjb25uZWN0aW9uLgotICAgIGFkZFBsdWdpbkNvbnRyb2xsZXJQcm94eShXVEY6Om1v
dmUocGx1Z2luQ29udHJvbGxlclByb3h5KSk7CisgICAgYWRkUGx1Z2luQ29udHJvbGxlclByb3h5
KFdURk1vdmUocGx1Z2luQ29udHJvbGxlclByb3h5KSk7CiAKICAgICAvLyBOb3cgdHJ5IHRvIGlu
aXRpYWxpemUgdGhlIHBsdWctaW4uCiAgICAgcmVzdWx0ID0gcGx1Z2luQ29udHJvbGxlclByb3h5
UHRyLT5pbml0aWFsaXplKGNyZWF0aW9uUGFyYW1ldGVycyk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL21hYy9QbHVnaW5Qcm9jZXNzTWFjLm1tIGIvU291cmNlL1dl
YktpdDIvUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01hYy5tbQppbmRleCAzMGFmNWE1
ZjhjZTE5ZDU3MWQxMjc1MzYwYTAzYmRlZjdlYTQ1NGU2Li5mOTMwMDlhYzYxZWMzMzRhOGEwZDY5
YzExMDU5NjcxZDUzZWVlYmRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9j
ZXNzL21hYy9QbHVnaW5Qcm9jZXNzTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblBy
b2Nlc3MvbWFjL1BsdWdpblByb2Nlc3NNYWMubW0KQEAgLTQwNiw3ICs0MDYsNyBAQCBzdGF0aWMg
dm9pZCBtdXRlQXVkaW8odm9pZCkKIAogdm9pZCBQbHVnaW5Qcm9jZXNzOjpwbGF0Zm9ybUluaXRp
YWxpemVQbHVnaW5Qcm9jZXNzKFBsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJh
bWV0ZXJzKQogewotICAgIG1fY29tcG9zaXRpbmdSZW5kZXJTZXJ2ZXJQb3J0ID0gV1RGOjptb3Zl
KHBhcmFtZXRlcnMuYWNjZWxlcmF0ZWRDb21wb3NpdGluZ1BvcnQpOworICAgIG1fY29tcG9zaXRp
bmdSZW5kZXJTZXJ2ZXJQb3J0ID0gV1RGTW92ZShwYXJhbWV0ZXJzLmFjY2VsZXJhdGVkQ29tcG9z
aXRpbmdQb3J0KTsKICAgICBpZiAocGFyYW1ldGVycy5wcm9jZXNzVHlwZSA9PSBQbHVnaW5Qcm9j
ZXNzVHlwZVNuYXBzaG90KQogICAgICAgICBtdXRlQXVkaW8oKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvU2NyaXB0cy93ZWJraXQvTGVnYWN5TWVzc2FnZVJlY2VpdmVyLWV4cGVjdGVk
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NjcmlwdHMvd2Via2l0L0xlZ2FjeU1lc3NhZ2VSZWNlaXZl
ci1leHBlY3RlZC5jcHAKaW5kZXggNTAzNTQwOGQ3MTcxYTFlMTFhY2MwMWVmZDczY2ZmMGQ1ZGI3
ZDBkOS4uMjQwZmM3Mzc0Y2IzOWUxZThmYjFhYWNhNmZkZjQ5YjI4N2EyYjA0ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvU2NyaXB0cy93ZWJraXQvTGVnYWN5TWVzc2FnZVJlY2VpdmVyLWV4
cGVjdGVkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TY3JpcHRzL3dlYmtpdC9MZWdhY3lNZXNz
YWdlUmVjZWl2ZXItZXhwZWN0ZWQuY3BwCkBAIC02MSw3ICs2MSw3IEBAIG5hbWVzcGFjZSBXZWJQ
YWdlIHsKIAogR2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseTo6RGVsYXll
ZFJlcGx5KFBhc3NSZWZQdHI8SVBDOjpDb25uZWN0aW9uPiBjb25uZWN0aW9uLCBzdGQ6OnVuaXF1
ZV9wdHI8SVBDOjpNZXNzYWdlRW5jb2Rlcj4gZW5jb2RlcikKICAgICA6IG1fY29ubmVjdGlvbihj
b25uZWN0aW9uKQotICAgICwgbV9lbmNvZGVyKFdURjo6bW92ZShlbmNvZGVyKSkKKyAgICAsIG1f
ZW5jb2RlcihXVEZNb3ZlKGVuY29kZXIpKQogewogfQogCkBAIC03NCwxNCArNzQsMTQgQEAgYm9v
bCBHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5OjpzZW5kKGNvbnN0IElQ
Qzo6Q29ubmVjdGlvbjo6SGFuZGwKIHsKICAgICBBU1NFUlQobV9lbmNvZGVyKTsKICAgICAqbV9l
bmNvZGVyIDw8IGNvbm5lY3Rpb25IYW5kbGU7Ci0gICAgYm9vbCBfcmVzdWx0ID0gbV9jb25uZWN0
aW9uLT5zZW5kU3luY1JlcGx5KFdURjo6bW92ZShtX2VuY29kZXIpKTsKKyAgICBib29sIF9yZXN1
bHQgPSBtX2Nvbm5lY3Rpb24tPnNlbmRTeW5jUmVwbHkoV1RGTW92ZShtX2VuY29kZXIpKTsKICAg
ICBtX2Nvbm5lY3Rpb24gPSBudWxscHRyOwogICAgIHJldHVybiBfcmVzdWx0OwogfQogCiBUZXN0
TXVsdGlwbGVBdHRyaWJ1dGVzOjpEZWxheWVkUmVwbHk6OkRlbGF5ZWRSZXBseShQYXNzUmVmUHRy
PElQQzo6Q29ubmVjdGlvbj4gY29ubmVjdGlvbiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6TWVzc2Fn
ZUVuY29kZXI+IGVuY29kZXIpCiAgICAgOiBtX2Nvbm5lY3Rpb24oY29ubmVjdGlvbikKLSAgICAs
IG1fZW5jb2RlcihXVEY6Om1vdmUoZW5jb2RlcikpCisgICAgLCBtX2VuY29kZXIoV1RGTW92ZShl
bmNvZGVyKSkKIHsKIH0KIApAQCAtOTMsNyArOTMsNyBAQCBUZXN0TXVsdGlwbGVBdHRyaWJ1dGVz
OjpEZWxheWVkUmVwbHk6On5EZWxheWVkUmVwbHkoKQogYm9vbCBUZXN0TXVsdGlwbGVBdHRyaWJ1
dGVzOjpEZWxheWVkUmVwbHk6OnNlbmQoKQogewogICAgIEFTU0VSVChtX2VuY29kZXIpOwotICAg
IGJvb2wgX3Jlc3VsdCA9IG1fY29ubmVjdGlvbi0+c2VuZFN5bmNSZXBseShXVEY6Om1vdmUobV9l
bmNvZGVyKSk7CisgICAgYm9vbCBfcmVzdWx0ID0gbV9jb25uZWN0aW9uLT5zZW5kU3luY1JlcGx5
KFdURk1vdmUobV9lbmNvZGVyKSk7CiAgICAgbV9jb25uZWN0aW9uID0gbnVsbHB0cjsKICAgICBy
ZXR1cm4gX3Jlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NjcmlwdHMvd2Vi
a2l0L01lc3NhZ2VSZWNlaXZlci1leHBlY3RlZC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TY3JpcHRz
L3dlYmtpdC9NZXNzYWdlUmVjZWl2ZXItZXhwZWN0ZWQuY3BwCmluZGV4IDcwN2FiY2IzNWY4OWI4
MmRmNDE0MmYzMzJlY2I1ZTBiZTE2OGZjMTMuLjhkNWUxM2RlYWExNmUwZWMzODBhNWZmYmRhMGI0
YWVjYmQ1YzI4MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NjcmlwdHMvd2Via2l0L01l
c3NhZ2VSZWNlaXZlci1leHBlY3RlZC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2NyaXB0cy93
ZWJraXQvTWVzc2FnZVJlY2VpdmVyLWV4cGVjdGVkLmNwcApAQCAtNjEsNyArNjEsNyBAQCBuYW1l
c3BhY2UgV2ViUGFnZSB7CiAKIEdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVw
bHk6OkRlbGF5ZWRSZXBseShQYXNzUmVmUHRyPElQQzo6Q29ubmVjdGlvbj4gY29ubmVjdGlvbiwg
c3RkOjp1bmlxdWVfcHRyPElQQzo6TWVzc2FnZUVuY29kZXI+IGVuY29kZXIpCiAgICAgOiBtX2Nv
bm5lY3Rpb24oY29ubmVjdGlvbikKLSAgICAsIG1fZW5jb2RlcihXVEY6Om1vdmUoZW5jb2Rlcikp
CisgICAgLCBtX2VuY29kZXIoV1RGTW92ZShlbmNvZGVyKSkKIHsKIH0KIApAQCAtNzQsMTQgKzc0
LDE0IEBAIGJvb2wgR2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseTo6c2Vu
ZChjb25zdCBJUEM6OkNvbm5lY3Rpb246OkhhbmRsCiB7CiAgICAgQVNTRVJUKG1fZW5jb2Rlcik7
CiAgICAgKm1fZW5jb2RlciA8PCBjb25uZWN0aW9uSGFuZGxlOwotICAgIGJvb2wgX3Jlc3VsdCA9
IG1fY29ubmVjdGlvbi0+c2VuZFN5bmNSZXBseShXVEY6Om1vdmUobV9lbmNvZGVyKSk7CisgICAg
Ym9vbCBfcmVzdWx0ID0gbV9jb25uZWN0aW9uLT5zZW5kU3luY1JlcGx5KFdURk1vdmUobV9lbmNv
ZGVyKSk7CiAgICAgbV9jb25uZWN0aW9uID0gbnVsbHB0cjsKICAgICByZXR1cm4gX3Jlc3VsdDsK
IH0KIAogVGVzdE11bHRpcGxlQXR0cmlidXRlczo6RGVsYXllZFJlcGx5OjpEZWxheWVkUmVwbHko
UGFzc1JlZlB0cjxJUEM6OkNvbm5lY3Rpb24+IGNvbm5lY3Rpb24sIHN0ZDo6dW5pcXVlX3B0cjxJ
UEM6Ok1lc3NhZ2VFbmNvZGVyPiBlbmNvZGVyKQogICAgIDogbV9jb25uZWN0aW9uKGNvbm5lY3Rp
b24pCi0gICAgLCBtX2VuY29kZXIoV1RGOjptb3ZlKGVuY29kZXIpKQorICAgICwgbV9lbmNvZGVy
KFdURk1vdmUoZW5jb2RlcikpCiB7CiB9CiAKQEAgLTkzLDcgKzkzLDcgQEAgVGVzdE11bHRpcGxl
QXR0cmlidXRlczo6RGVsYXllZFJlcGx5Ojp+RGVsYXllZFJlcGx5KCkKIGJvb2wgVGVzdE11bHRp
cGxlQXR0cmlidXRlczo6RGVsYXllZFJlcGx5OjpzZW5kKCkKIHsKICAgICBBU1NFUlQobV9lbmNv
ZGVyKTsKLSAgICBib29sIF9yZXN1bHQgPSBtX2Nvbm5lY3Rpb24tPnNlbmRTeW5jUmVwbHkoV1RG
Ojptb3ZlKG1fZW5jb2RlcikpOworICAgIGJvb2wgX3Jlc3VsdCA9IG1fY29ubmVjdGlvbi0+c2Vu
ZFN5bmNSZXBseShXVEZNb3ZlKG1fZW5jb2RlcikpOwogICAgIG1fY29ubmVjdGlvbiA9IG51bGxw
dHI7CiAgICAgcmV0dXJuIF9yZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9T
Y3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJLaXQyL1NjcmlwdHMvd2Via2l0
L21lc3NhZ2VzLnB5CmluZGV4IDYxNGI1Yjg3NjI2ZDI4MTA4OWZjYjgyNGQ3YTEzMzk3Y2IyMjU1
ODIuLmI3MWRmOTFiNjNmZWI0YjY3YjBlNmU0ODRhNzU0ZWExMzk1NjI5ZWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CkBAIC00ODgsNyArNDg4LDcgQEAgZGVm
IGdlbmVyYXRlX21lc3NhZ2VfaGFuZGxlcihmaWxlKToKIAogICAgICAgICAgICAgcmVzdWx0LmFw
cGVuZCgnJXM6OkRlbGF5ZWRSZXBseTo6RGVsYXllZFJlcGx5KFBhc3NSZWZQdHI8SVBDOjpDb25u
ZWN0aW9uPiBjb25uZWN0aW9uLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpNZXNzYWdlRW5jb2Rlcj4g
ZW5jb2RlcilcbicgJSBtZXNzYWdlLm5hbWUpCiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcg
ICAgOiBtX2Nvbm5lY3Rpb24oY29ubmVjdGlvbilcbicpCi0gICAgICAgICAgICByZXN1bHQuYXBw
ZW5kKCcgICAgLCBtX2VuY29kZXIoV1RGOjptb3ZlKGVuY29kZXIpKVxuJykKKyAgICAgICAgICAg
IHJlc3VsdC5hcHBlbmQoJyAgICAsIG1fZW5jb2RlcihXVEZNb3ZlKGVuY29kZXIpKVxuJykKICAg
ICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ3tcbicpCiAgICAgICAgICAgICByZXN1bHQuYXBwZW5k
KCd9XG4nKQogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnXG4nKQpAQCAtNTAxLDcgKzUwMSw3
IEBAIGRlZiBnZW5lcmF0ZV9tZXNzYWdlX2hhbmRsZXIoZmlsZSk6CiAgICAgICAgICAgICByZXN1
bHQuYXBwZW5kKCd7XG4nKQogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAgIEFTU0VSVCht
X2VuY29kZXIpO1xuJykKICAgICAgICAgICAgIHJlc3VsdCArPSBbJyAgICAqbV9lbmNvZGVyIDw8
ICVzO1xuJyAlIHgubmFtZSBmb3IgeCBpbiBtZXNzYWdlLnJlcGx5X3BhcmFtZXRlcnNdCi0gICAg
ICAgICAgICByZXN1bHQuYXBwZW5kKCcgICAgYm9vbCBfcmVzdWx0ID0gbV9jb25uZWN0aW9uLT5z
ZW5kU3luY1JlcGx5KFdURjo6bW92ZShtX2VuY29kZXIpKTtcbicpCisgICAgICAgICAgICByZXN1
bHQuYXBwZW5kKCcgICAgYm9vbCBfcmVzdWx0ID0gbV9jb25uZWN0aW9uLT5zZW5kU3luY1JlcGx5
KFdURk1vdmUobV9lbmNvZGVyKSk7XG4nKQogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICAg
IG1fY29ubmVjdGlvbiA9IG51bGxwdHI7XG4nKQogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgn
ICAgIHJldHVybiBfcmVzdWx0O1xuJykKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ31cbicp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0FQSUFycmF5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvQVBJQXJyYXkuY3BwCmluZGV4IDdjMDhiY2QwMDI4NDE1
NzM2YmY0MzBlMjk0NWJlNmVkZTM2Zjg4NTEuLjk1NDhhYjcyNDdmNjg3NTFlYThiYjM5MDY2NDZi
ZDJjNzcxYjQwNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvQVBJQXJy
YXkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvQVBJQXJyYXkuY3BwCkBAIC0z
Nyw3ICszNyw3IEBAIFJlZjxBcnJheT4gQXJyYXk6OmNyZWF0ZSgpCiAKIFJlZjxBcnJheT4gQXJy
YXk6OmNyZWF0ZShWZWN0b3I8UmVmUHRyPE9iamVjdD4+JiYgZWxlbWVudHMpCiB7Ci0gICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgQXJyYXkoV1RGOjptb3ZlKGVsZW1lbnRzKSkpOworICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IEFycmF5KFdURk1vdmUoZWxlbWVudHMpKSk7CiB9CiAKIFJlZjxBcnJh
eT4gQXJyYXk6OmNyZWF0ZVN0cmluZ0FycmF5KGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mIHN0
cmluZ3MpCkBAIC00OCw3ICs0OCw3IEBAIFJlZjxBcnJheT4gQXJyYXk6OmNyZWF0ZVN0cmluZ0Fy
cmF5KGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mIHN0cmluZ3MpCiAgICAgZm9yIChjb25zdCBh
dXRvJiBzdHJpbmcgOiBzdHJpbmdzKQogICAgICAgICBlbGVtZW50cy51bmNoZWNrZWRBcHBlbmQo
QVBJOjpTdHJpbmc6OmNyZWF0ZShzdHJpbmcpKTsKIAotICAgIHJldHVybiBjcmVhdGUoV1RGOjpt
b3ZlKGVsZW1lbnRzKSk7CisgICAgcmV0dXJuIGNyZWF0ZShXVEZNb3ZlKGVsZW1lbnRzKSk7CiB9
CiAKIFZlY3RvcjxXVEY6OlN0cmluZz4gQXJyYXk6OnRvU3RyaW5nVmVjdG9yKCkKQEAgLTc1LDcg
Kzc1LDcgQEAgUmVmPEFQSTo6QXJyYXk+IEFycmF5Ojpjb3B5KCkKICAgICBlbGVtZW50cy5yZXNl
cnZlSW5pdGlhbENhcGFjaXR5KHNpemUpOwogICAgIGZvciAoY29uc3QgYXV0byYgZW50cnkgOiB0
aGlzLT5lbGVtZW50cygpKQogICAgICAgICBlbGVtZW50cy51bmNoZWNrZWRBcHBlbmQoZW50cnkp
OwotICAgIHJldHVybiBBcnJheTo6Y3JlYXRlKFdURjo6bW92ZShlbGVtZW50cykpOworICAgIHJl
dHVybiBBcnJheTo6Y3JlYXRlKFdURk1vdmUoZWxlbWVudHMpKTsKIH0KIAogQXJyYXk6On5BcnJh
eSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0FQSUFycmF5LmggYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0FQSUFycmF5LmgKaW5kZXggNGNlMTZiOWI0ODk3NjBm
ZjI0NmE1ZjAzODdmZjFiZjBkZDRmNTNjYS4uM2I2ZDM0MzAyNTkxZmM0MDkzYjZhZDk2ZWZkNTMy
M2I0MTg1NGZhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9BUElBcnJh
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvQVBJQXJyYXkuaApAQCAtODUsNyAr
ODUsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgQXJyYXkoVmVjdG9yPFJl
ZlB0cjxPYmplY3Q+PiYmIGVsZW1lbnRzKQotICAgICAgICA6IG1fZWxlbWVudHMoV1RGOjptb3Zl
KGVsZW1lbnRzKSkKKyAgICAgICAgOiBtX2VsZW1lbnRzKFdURk1vdmUoZWxlbWVudHMpKQogICAg
IHsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvQVBJRGlj
dGlvbmFyeS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0FQSURpY3Rpb25hcnkuY3Bw
CmluZGV4IDJiNzYzYWZhYzZkZTg1NjEwOGYyMGQyZWM5OTBiMDYzMWMxNTU5ZGEuLjg5NGU5OGRk
MTIyNWQ0ODA1ZTk3MGI2ZGU5MjVjMGJlNzc5YTBkZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9BUEkvQVBJRGljdGlvbmFyeS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL0FQSS9BUElEaWN0aW9uYXJ5LmNwcApAQCAtMzgsMTEgKzM4LDExIEBAIFJlZjxEaWN0aW9u
YXJ5PiBEaWN0aW9uYXJ5OjpjcmVhdGUoKQogCiBSZWY8RGljdGlvbmFyeT4gRGljdGlvbmFyeTo6
Y3JlYXRlKE1hcFR5cGUgbWFwKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERpY3Rpb25h
cnkoV1RGOjptb3ZlKG1hcCkpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEaWN0aW9uYXJ5
KFdURk1vdmUobWFwKSkpOwogfQogCiBEaWN0aW9uYXJ5OjpEaWN0aW9uYXJ5KE1hcFR5cGUgbWFw
KQotICAgIDogbV9tYXAoV1RGOjptb3ZlKG1hcCkpCisgICAgOiBtX21hcChXVEZNb3ZlKG1hcCkp
CiB7CiB9CiAKQEAgLTYxLDcgKzYxLDcgQEAgUmVmPEFycmF5PiBEaWN0aW9uYXJ5OjprZXlzKCkg
Y29uc3QKICAgICBmb3IgKGNvbnN0IGF1dG8mIGtleSA6IG1fbWFwLmtleXMoKSkKICAgICAgICAg
a2V5cy51bmNoZWNrZWRBcHBlbmQoQVBJOjpTdHJpbmc6OmNyZWF0ZShrZXkpKTsKIAotICAgIHJl
dHVybiBBUEk6OkFycmF5OjpjcmVhdGUoV1RGOjptb3ZlKGtleXMpKTsKKyAgICByZXR1cm4gQVBJ
OjpBcnJheTo6Y3JlYXRlKFdURk1vdmUoa2V5cykpOwogfQogCiBib29sIERpY3Rpb25hcnk6OmFk
ZChjb25zdCBXVEY6OlN0cmluZyYga2V5LCBQYXNzUmVmUHRyPEFQSTo6T2JqZWN0PiBpdGVtKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9BUElQYWdlR3JvdXBIYW5kbGUu
Y3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9BUElQYWdlR3JvdXBIYW5kbGUuY3BwCmlu
ZGV4IGE3NzUxNWYyMGU3NzYyMWJiZmFlYTEzMjcwNDAyZDgyNTM0YmI4ZTAuLjVlOWYyMTgwMjRk
YjBjZDUzYmRmYjAxMmM3Mjg3OTZlZjBiYmEzNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9BUEkvQVBJUGFnZUdyb3VwSGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvQVBJL0FQSVBhZ2VHcm91cEhhbmRsZS5jcHAKQEAgLTMzLDExICszMywxMSBAQCBuYW1l
c3BhY2UgQVBJIHsKIAogUmVmPFBhZ2VHcm91cEhhbmRsZT4gUGFnZUdyb3VwSGFuZGxlOjpjcmVh
dGUoV2ViS2l0OjpXZWJQYWdlR3JvdXBEYXRhJiYgd2ViUGFnZUdyb3VwRGF0YSkKIHsKLSAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBQYWdlR3JvdXBIYW5kbGUoV1RGOjptb3ZlKHdlYlBhZ2VHcm91
cERhdGEpKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUGFnZUdyb3VwSGFuZGxlKFdURk1v
dmUod2ViUGFnZUdyb3VwRGF0YSkpKTsKIH0KIAogUGFnZUdyb3VwSGFuZGxlOjpQYWdlR3JvdXBI
YW5kbGUoV2ViS2l0OjpXZWJQYWdlR3JvdXBEYXRhJiYgd2ViUGFnZUdyb3VwRGF0YSkKLSAgICA6
IG1fd2ViUGFnZUdyb3VwRGF0YShXVEY6Om1vdmUod2ViUGFnZUdyb3VwRGF0YSkpCisgICAgOiBt
X3dlYlBhZ2VHcm91cERhdGEoV1RGTW92ZSh3ZWJQYWdlR3JvdXBEYXRhKSkKIHsKIH0KIApAQCAt
NTYsNyArNTYsNyBAQCBib29sIFBhZ2VHcm91cEhhbmRsZTo6ZGVjb2RlKElQQzo6QXJndW1lbnRE
ZWNvZGVyJiBkZWNvZGVyLCBSZWZQdHI8T2JqZWN0PiYgcmVzdQogICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUod2ViUGFnZUdyb3VwRGF0YSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJl
c3VsdCA9IGNyZWF0ZShXVEY6Om1vdmUod2ViUGFnZUdyb3VwRGF0YSkpOworICAgIHJlc3VsdCA9
IGNyZWF0ZShXVEZNb3ZlKHdlYlBhZ2VHcm91cERhdGEpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9BUElTdHJpbmcuaCBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvQVBJU3RyaW5nLmgKaW5kZXggOTEyNTExZjU1Mjg3MThk
Mjk5OGU1YmM3MzJmODkyYTIxMDY5NWRlNS4uMjcyMmIxYjhiODcxNTFlM2UyMjMwOWY0MzI5NjI0
NmJmNjFmMmMxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9BUElTdHJp
bmcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0FQSVN0cmluZy5oCkBAIC02NSw3
ICs2NSw3IEBAIHByaXZhdGU6CiAgICAgfQogCiAgICAgU3RyaW5nKFdURjo6U3RyaW5nJiYgc3Ry
aW5nKQotICAgICAgICA6IG1fc3RyaW5nKFdURjo6bW92ZShzdHJpbmcpKQorICAgICAgICA6IG1f
c3RyaW5nKFdURk1vdmUoc3RyaW5nKSkKICAgICB7CiAgICAgICAgIEFTU0VSVCghbV9zdHJpbmcu
aXNOdWxsKCkpOwogICAgICAgICBBU1NFUlQobV9zdHJpbmcuaXNTYWZlVG9TZW5kVG9Bbm90aGVy
VGhyZWFkKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9BUElVUkwu
aCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvQVBJVVJMLmgKaW5kZXggYzdmYWI2ZjRhYzY5
NTcxMDRhNzI1NDJkODQ3MjMyMGRjY2M4ZjJmNS4uYjRlN2M4ZGFhNjg4ZDQ1N2E5ZTdjZjQ5ODRj
NDllNTI1Nzg1ZThlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9BUElV
UkwuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0FQSVVSTC5oCkBAIC00OCw3ICs0
OCw3IEBAIHB1YmxpYzoKICAgICAgICAgYXV0byBhYnNvbHV0ZVVSTCA9IHN0ZDo6bWFrZV91bmlx
dWU8V2ViQ29yZTo6VVJMPigqYmFzZVVSTC0+bV9wYXJzZWRVUkwuZ2V0KCksIHJlbGF0aXZlVVJM
KTsKICAgICAgICAgY29uc3QgV1RGOjpTdHJpbmcmIGFic29sdXRlVVJMU3RyaW5nID0gYWJzb2x1
dGVVUkwtPnN0cmluZygpOwogCi0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFVSTChXVEY6
Om1vdmUoYWJzb2x1dGVVUkwpLCBhYnNvbHV0ZVVSTFN0cmluZykpOworICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBVUkwoV1RGTW92ZShhYnNvbHV0ZVVSTCksIGFic29sdXRlVVJMU3RyaW5n
KSk7CiAgICAgfQogCiAgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy5p
c051bGwoKTsgfQpAQCAtMTA4LDcgKzEwOCw3IEBAIHByaXZhdGU6CiAKICAgICBVUkwoc3RkOjp1
bmlxdWVfcHRyPFdlYkNvcmU6OlVSTD4gcGFyc2VkVVJMLCBjb25zdCBXVEY6OlN0cmluZyYgc3Ry
aW5nKQogICAgICAgICA6IG1fc3RyaW5nKHN0cmluZykKLSAgICAgICAgLCBtX3BhcnNlZFVSTChX
VEY6Om1vdmUocGFyc2VkVVJMKSkKKyAgICAgICAgLCBtX3BhcnNlZFVSTChXVEZNb3ZlKHBhcnNl
ZFVSTCkpCiAgICAgewogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L0FQSS9Db2NvYS9SZW1vdGVPYmplY3RJbnZvY2F0aW9uLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvQVBJL0NvY29hL1JlbW90ZU9iamVjdEludm9jYXRpb24uaAppbmRleCBmMWUwN2Y3YTZkOTlk
NTM4YTA3Y2E3ZjgyOWVkNmYwOWMyYzYzMjgyLi5mYjExNTQ0ODQwODc0MmQzYTgxNGVkZjE3Mzhj
OGIzMGY3NThjM2JlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0NvY29h
L1JlbW90ZU9iamVjdEludm9jYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJ
L0NvY29hL1JlbW90ZU9iamVjdEludm9jYXRpb24uaApAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6
CiAgICAgc3RydWN0IFJlcGx5SW5mbyB7CiAgICAgICAgIFJlcGx5SW5mbyh1aW50NjRfdCByZXBs
eUlELCBTdHJpbmcmJiBibG9ja1NpZ25hdHVyZSkKICAgICAgICAgICAgIDogcmVwbHlJRChyZXBs
eUlEKQotICAgICAgICAgICAgLCBibG9ja1NpZ25hdHVyZShXVEY6Om1vdmUoYmxvY2tTaWduYXR1
cmUpKQorICAgICAgICAgICAgLCBibG9ja1NpZ25hdHVyZShXVEZNb3ZlKGJsb2NrU2lnbmF0dXJl
KSkKICAgICAgICAgewogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9BUEkvQ29jb2EvUmVtb3RlT2JqZWN0SW52b2NhdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9BUEkvQ29jb2EvUmVtb3RlT2JqZWN0SW52b2NhdGlvbi5tbQppbmRleCAzNjI1OTM5
YTQ2NGVjYmJiMzNkYTU4MjAwMzQ0NjAzNTMzODhjOGU4Li4wOWNjYjdiYjkzM2UyOTVhNDk3Y2Fh
YjM0YjQ0NTM3NDg5Njk3NzFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJ
L0NvY29hL1JlbW90ZU9iamVjdEludm9jYXRpb24ubW0KKysrIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL0FQSS9Db2NvYS9SZW1vdGVPYmplY3RJbnZvY2F0aW9uLm1tCkBAIC0zNyw4ICszNyw4IEBA
IFJlbW90ZU9iamVjdEludm9jYXRpb246OlJlbW90ZU9iamVjdEludm9jYXRpb24oKQogCiBSZW1v
dGVPYmplY3RJbnZvY2F0aW9uOjpSZW1vdGVPYmplY3RJbnZvY2F0aW9uKGNvbnN0IFN0cmluZyYg
aW50ZXJmYWNlSWRlbnRpZmllciwgUmVmUHRyPEFQSTo6RGljdGlvbmFyeT4mJiBlbmNvZGVkSW52
b2NhdGlvbiwgc3RkOjp1bmlxdWVfcHRyPFJlcGx5SW5mbz4mJiByZXBseUluZm8pCiAgICAgOiBt
X2ludGVyZmFjZUlkZW50aWZpZXIoaW50ZXJmYWNlSWRlbnRpZmllcikKLSAgICAsIG1fZW5jb2Rl
ZEludm9jYXRpb24oV1RGOjptb3ZlKGVuY29kZWRJbnZvY2F0aW9uKSkKLSAgICAsIG1fcmVwbHlJ
bmZvKFdURjo6bW92ZShyZXBseUluZm8pKQorICAgICwgbV9lbmNvZGVkSW52b2NhdGlvbihXVEZN
b3ZlKGVuY29kZWRJbnZvY2F0aW9uKSkKKyAgICAsIG1fcmVwbHlJbmZvKFdURk1vdmUocmVwbHlJ
bmZvKSkKIHsKIH0KIApAQCAtODMsNyArODMsNyBAQCBib29sIFJlbW90ZU9iamVjdEludm9jYXRp
b246OmRlY29kZShJUEM6OkFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgUmVtb3RlT2JqZWN0SQog
ICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGJsb2NrU2lnbmF0dXJlKSkKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgICAgICByZXN1bHQubV9yZXBseUluZm8gPSBzdGQ6Om1ha2Vf
dW5pcXVlPFJlcGx5SW5mbz4ocmVwbHlJRCwgV1RGOjptb3ZlKGJsb2NrU2lnbmF0dXJlKSk7Cisg
ICAgICAgIHJlc3VsdC5tX3JlcGx5SW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8UmVwbHlJbmZvPihy
ZXBseUlELCBXVEZNb3ZlKGJsb2NrU2lnbmF0dXJlKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIHRy
dWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3Rl
T2JqZWN0Q29kZXIubW0gYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3Rl
T2JqZWN0Q29kZXIubW0KaW5kZXggOTY4MmU2YmYyOGFmODAwMjY5YjU1NDZiMDNmNzVmNzI1ZmFh
NTRhNS4uMmEyOTczODE5ODljMWQ3YTcwNDFkYTZlZGE4Yjg5MzFkYjA0ZDg4NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rl
ci5tbQpAQCAtOTgsNyArOTgsNyBAQCBzdGF0aWMgdm9pZCBlbnN1cmVPYmplY3RTdHJlYW0oV0tS
ZW1vdGVPYmplY3RFbmNvZGVyICplbmNvZGVyKQogICAgIFJlZjxBUEk6OkFycmF5PiBvYmplY3RT
dHJlYW0gPSBBUEk6OkFycmF5OjpjcmVhdGUoKTsKICAgICBlbmNvZGVyLT5fb2JqZWN0U3RyZWFt
ID0gb2JqZWN0U3RyZWFtLnB0cigpOwogCi0gICAgZW5jb2Rlci0+X3Jvb3REaWN0aW9uYXJ5LT5z
ZXQob2JqZWN0U3RyZWFtS2V5LCBXVEY6Om1vdmUob2JqZWN0U3RyZWFtKSk7CisgICAgZW5jb2Rl
ci0+X3Jvb3REaWN0aW9uYXJ5LT5zZXQob2JqZWN0U3RyZWFtS2V5LCBXVEZNb3ZlKG9iamVjdFN0
cmVhbSkpOwogfQogCiBzdGF0aWMgdm9pZCBlbmNvZGVUb09iamVjdFN0cmVhbShXS1JlbW90ZU9i
amVjdEVuY29kZXIgKmVuY29kZXIsIGlkIHZhbHVlKQpAQCAtMjcwLDcgKzI3MCw3IEBAIHN0YXRp
YyBSZWZQdHI8QVBJOjpEaWN0aW9uYXJ5PiBjcmVhdGVFbmNvZGVkT2JqZWN0KFdLUmVtb3RlT2Jq
ZWN0RW5jb2RlciAqZW5jb2RlCiAKICAgICBlbmNvZGVPYmplY3QoZW5jb2Rlciwgb2JqZWN0KTsK
IAotICAgIHJldHVybiBXVEY6Om1vdmUoZGljdGlvbmFyeSk7CisgICAgcmV0dXJuIFdURk1vdmUo
ZGljdGlvbmFyeSk7CiB9CiAKIC0gKHZvaWQpZW5jb2RlVmFsdWVPZk9iakNUeXBlOihjb25zdCBj
aGFyICopdHlwZSBhdDooY29uc3Qgdm9pZCAqKWFkZHJlc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9BUEkvQ29jb2EvX1dLUmVtb3RlT2JqZWN0SW50ZXJmYWNlLm1tIGIvU291
cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9Db2NvYS9fV0tSZW1vdGVPYmplY3RJbnRlcmZhY2UubW0K
aW5kZXggZGFhOGQxODZmMjdhNzc0NWExODVmZmVjOGZkNTE5OGQ4MGY1NmFkZS4uZDhmMGYxY2Y1
MDc4NTY2NWQxZDhkYThmODliYmRmYzNmODlhMzA4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL0FQSS9Db2NvYS9fV0tSZW1vdGVPYmplY3RJbnRlcmZhY2UubW0KKysrIGIvU291
cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9Db2NvYS9fV0tSZW1vdGVPYmplY3RJbnRlcmZhY2UubW0K
QEAgLTEzNSw5ICsxMzUsOSBAQCBzdGF0aWMgdm9pZCBpbml0aWFsaXplTWV0aG9kKE1ldGhvZElu
Zm8mIG1ldGhvZEluZm8sIFByb3RvY29sICpwcm90b2NvbCwgU0VMIHNlbAogICAgIH0KIAogICAg
IGlmIChmb3JSZXBseUJsb2NrKQotICAgICAgICBtZXRob2RJbmZvLnJlcGx5SW5mby0+YWxsb3dl
ZFJlcGx5Q2xhc3NlcyA9IFdURjo6bW92ZShhbGxvd2VkQ2xhc3Nlcyk7CisgICAgICAgIG1ldGhv
ZEluZm8ucmVwbHlJbmZvLT5hbGxvd2VkUmVwbHlDbGFzc2VzID0gV1RGTW92ZShhbGxvd2VkQ2xh
c3Nlcyk7CiAgICAgZWxzZQotICAgICAgICBtZXRob2RJbmZvLmFsbG93ZWRBcmd1bWVudENsYXNz
ZXMgPSBXVEY6Om1vdmUoYWxsb3dlZENsYXNzZXMpOworICAgICAgICBtZXRob2RJbmZvLmFsbG93
ZWRBcmd1bWVudENsYXNzZXMgPSBXVEZNb3ZlKGFsbG93ZWRDbGFzc2VzKTsKIH0KIAogc3RhdGlj
IHZvaWQgaW5pdGlhbGl6ZU1ldGhvZHMoX1dLUmVtb3RlT2JqZWN0SW50ZXJmYWNlICppbnRlcmZh
Y2UsIFByb3RvY29sICpwcm90b2NvbCwgYm9vbCByZXF1aXJlZE1ldGhvZHMpCkBAIC0yOTksNyAr
Mjk5LDcgQEAgLSAodm9pZClzZXRDbGFzc2VzOihOU1NldCAqKWNsYXNzZXMgZm9yU2VsZWN0b3I6
KFNFTClzZWxlY3RvciBhcmd1bWVudEluZGV4OihOU1UKICAgICBmb3IgKENsYXNzIGFsbG93ZWRD
bGFzcyBpbiBjbGFzc2VzKQogICAgICAgICBhbGxvd2VkQ2xhc3Nlcy5hZGQoYWxsb3dlZENsYXNz
KTsKIAotICAgIGNsYXNzZXNGb3JTZWxlY3RvckFyZ3VtZW50KHNlbGYsIHNlbGVjdG9yLCBhcmd1
bWVudEluZGV4LCBvZlJlcGx5KSA9IFdURjo6bW92ZShhbGxvd2VkQ2xhc3Nlcyk7CisgICAgY2xh
c3Nlc0ZvclNlbGVjdG9yQXJndW1lbnQoc2VsZiwgc2VsZWN0b3IsIGFyZ3VtZW50SW5kZXgsIG9m
UmVwbHkpID0gV1RGTW92ZShhbGxvd2VkQ2xhc3Nlcyk7CiB9CiAKIC0gKE5TU2V0ICopY2xhc3Nl
c0ZvclNlbGVjdG9yOihTRUwpc2VsZWN0b3IgYXJndW1lbnRJbmRleDooTlNVSW50ZWdlcilhcmd1
bWVudEluZGV4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0NvY29hL19X
S1JlbW90ZU9iamVjdFJlZ2lzdHJ5Lm1tIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9Db2Nv
YS9fV0tSZW1vdGVPYmplY3RSZWdpc3RyeS5tbQppbmRleCA5ZWZmOTJiMTc3YmZmMGZhYjllMjRj
NDFiNGQzZDhlNDE2NWVmY2QwLi40YTM0ZjZlYzhhYzJkNmMxZGJjNDUyMzlhMTQ2N2ZlNWM5MWNm
MTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0NvY29hL19XS1JlbW90
ZU9iamVjdFJlZ2lzdHJ5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvQ29jb2Ev
X1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkubW0KQEAgLTE2OSw3ICsxNjksNyBAQCAtICh2b2lkKV9z
ZW5kSW52b2NhdGlvbjooTlNJbnZvY2F0aW9uICopaW52b2NhdGlvbiBpbnRlcmZhY2U6KF9XS1Jl
bW90ZU9iamVjdEludAogICAgIGlmICghX3JlbW90ZU9iamVjdFJlZ2lzdHJ5KQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBfcmVtb3RlT2JqZWN0UmVnaXN0cnktPnNlbmRJbnZvY2F0aW9uKFJlbW90
ZU9iamVjdEludm9jYXRpb24oaW50ZXJmYWNlLmlkZW50aWZpZXIsIFtlbmNvZGVyIHJvb3RPYmpl
Y3REaWN0aW9uYXJ5XSwgV1RGOjptb3ZlKHJlcGx5SW5mbykpKTsKKyAgICBfcmVtb3RlT2JqZWN0
UmVnaXN0cnktPnNlbmRJbnZvY2F0aW9uKFJlbW90ZU9iamVjdEludm9jYXRpb24oaW50ZXJmYWNl
LmlkZW50aWZpZXIsIFtlbmNvZGVyIHJvb3RPYmplY3REaWN0aW9uYXJ5XSwgV1RGTW92ZShyZXBs
eUluZm8pKSk7CiB9CiAKIC0gKFdlYktpdDo6UmVtb3RlT2JqZWN0UmVnaXN0cnkmKXJlbW90ZU9i
amVjdFJlZ2lzdHJ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tB
cnJheS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tBcnJheS5jcHAKaW5kZXgg
YmU0MDdhYjIwZjJkNmRkYmNhZDMzNzI1N2FlZDFiZGIzYThhYzNhNy4uODQ0MTYxMTI0MjE3YWY0
ZDM1M2ViNmIyOWJmOTE3ZTA0ZDhiZTVhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL0FQSS9jL1dLQXJyYXkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9X
S0FycmF5LmNwcApAQCAtNDQsNyArNDQsNyBAQCBXS0FycmF5UmVmIFdLQXJyYXlDcmVhdGUoV0tU
eXBlUmVmKiB2YWx1ZXMsIHNpemVfdCBudW1iZXJPZlZhbHVlcykKICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IG51bWJlck9mVmFsdWVzOyArK2kpCiAgICAgICAgIGVsZW1lbnRzLnVuY2hlY2tl
ZEFwcGVuZCh0b0ltcGwodmFsdWVzW2ldKSk7CiAKLSAgICByZXR1cm4gdG9BUEkoJkFQSTo6QXJy
YXk6OmNyZWF0ZShXVEY6Om1vdmUoZWxlbWVudHMpKS5sZWFrUmVmKCkpOworICAgIHJldHVybiB0
b0FQSSgmQVBJOjpBcnJheTo6Y3JlYXRlKFdURk1vdmUoZWxlbWVudHMpKS5sZWFrUmVmKCkpOwog
fQogCiBXS0FycmF5UmVmIFdLQXJyYXlDcmVhdGVBZG9wdGluZ1ZhbHVlcyhXS1R5cGVSZWYqIHZh
bHVlcywgc2l6ZV90IG51bWJlck9mVmFsdWVzKQpAQCAtNTUsNyArNTUsNyBAQCBXS0FycmF5UmVm
IFdLQXJyYXlDcmVhdGVBZG9wdGluZ1ZhbHVlcyhXS1R5cGVSZWYqIHZhbHVlcywgc2l6ZV90IG51
bWJlck9mVmFsdWVzKQogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtYmVyT2ZWYWx1ZXM7
ICsraSkKICAgICAgICAgZWxlbWVudHMudW5jaGVja2VkQXBwZW5kKGFkb3B0UmVmKHRvSW1wbCh2
YWx1ZXNbaV0pKSk7CiAKLSAgICByZXR1cm4gdG9BUEkoJkFQSTo6QXJyYXk6OmNyZWF0ZShXVEY6
Om1vdmUoZWxlbWVudHMpKS5sZWFrUmVmKCkpOworICAgIHJldHVybiB0b0FQSSgmQVBJOjpBcnJh
eTo6Y3JlYXRlKFdURk1vdmUoZWxlbWVudHMpKS5sZWFrUmVmKCkpOwogfQogCiBXS1R5cGVSZWYg
V0tBcnJheUdldEl0ZW1BdEluZGV4KFdLQXJyYXlSZWYgYXJyYXlSZWYsIHNpemVfdCBpbmRleCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0RpY3Rpb25hcnkuY3Bw
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLRGljdGlvbmFyeS5jcHAKaW5kZXggMTky
NWRlYzQ5MDcxMTM1MzQ5MjFlYjI1MWY4OGJlZGRmMmYxNzEwNi4uNjU0ZTFlNjFlMDZmMGIwZjdl
ODNmZDZjMjdkYWFiZjMxZTEzOGNkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L0FQSS9jL1dLRGljdGlvbmFyeS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9j
L1dLRGljdGlvbmFyeS5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgV0tfRVhQT1JUIFdLRGljdGlvbmFy
eVJlZiBXS0RpY3Rpb25hcnlDcmVhdGUoY29uc3QgV0tTdHJpbmdSZWYqIGtleXMsIGNvbnN0IFdL
VHkKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bWJlck9mVmFsdWVzOyArK2kpCiAgICAg
ICAgIG1hcC5hZGQodG9JbXBsKGtleXNbaV0pLT5zdHJpbmcoKSwgdG9JbXBsKHZhbHVlc1tpXSkp
OwogCi0gICAgcmV0dXJuIHRvQVBJKCZBUEk6OkRpY3Rpb25hcnk6OmNyZWF0ZShXVEY6Om1vdmUo
bWFwKSkubGVha1JlZigpKTsKKyAgICByZXR1cm4gdG9BUEkoJkFQSTo6RGljdGlvbmFyeTo6Y3Jl
YXRlKFdURk1vdmUobWFwKSkubGVha1JlZigpKTsKIH0KIAogV0tUeXBlUmVmIFdLRGljdGlvbmFy
eUdldEl0ZW1Gb3JLZXkoV0tEaWN0aW9uYXJ5UmVmIGRpY3Rpb25hcnlSZWYsIFdLU3RyaW5nUmVm
IGtleSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1NoYXJlZEFQ
SUNhc3QuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1NoYXJlZEFQSUNhc3QuaApp
bmRleCAwYTQ5ZTAxNTFiYTFjNDlkMDdjNjdlOTU2NGM0N2VlMTA1YWQyOGRjLi5lMjRiMTc5MGZl
MTYxMzYwZDAxM2M0Y2ViNzk4Yzk2ZjZhZGIwMWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQVBJL2MvV0tTaGFyZWRBUElDYXN0LmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL0FQSS9jL1dLU2hhcmVkQVBJQ2FzdC5oCkBAIC0xNDYsNyArMTQ2LDcgQEAgcHVibGljOgog
ICAgIH0KIAogICAgIFByb3h5aW5nUmVmUHRyKFJlZjxJbXBsVHlwZT4mJiBpbXBsKQotICAgICAg
ICA6IG1faW1wbChXVEY6Om1vdmUoaW1wbCkpCisgICAgICAgIDogbV9pbXBsKFdURk1vdmUoaW1w
bCkpCiAgICAgewogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQ
SVdlYkFyY2hpdmUubW0gYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJV2ViQXJjaGl2ZS5tbQpp
bmRleCBhYzAwNzg5YjA2ZmZkMDNhNjA0MjI3NjMxMjQ4MWUwMWZiZGUwOWJlLi44OTFlNzUxYzJk
MzE4ZWM0Yzc0M2FlZDEzYWUyMzA4ZmM1ZGM0ODhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQVBJV2ViQXJjaGl2ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJ
V2ViQXJjaGl2ZS5tbQpAQCAtODIsNyArODIsNyBAQCBXZWJBcmNoaXZlOjpXZWJBcmNoaXZlKFdl
YkFyY2hpdmVSZXNvdXJjZSogbWFpblJlc291cmNlLCBQYXNzUmVmUHRyPEFQSTo6QXJyYXk+CiAg
ICAgICAgIGNvcmVTdWJmcmFtZUxlZ2FjeVdlYkFyY2hpdmVzLnVuY2hlY2tlZEFwcGVuZChzdWJm
cmFtZVdlYkFyY2hpdmUtPmNvcmVMZWdhY3lXZWJBcmNoaXZlKCkpOwogICAgIH0KIAotICAgIG1f
bGVnYWN5V2ViQXJjaGl2ZSA9IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShjb3JlTWFpblJlc291
cmNlLnJlbGVhc2UoKSwgV1RGOjptb3ZlKGNvcmVBcmNoaXZlUmVzb3VyY2VzKSwgV1RGOjptb3Zl
KGNvcmVTdWJmcmFtZUxlZ2FjeVdlYkFyY2hpdmVzKSk7CisgICAgbV9sZWdhY3lXZWJBcmNoaXZl
ID0gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGNvcmVNYWluUmVzb3VyY2UucmVsZWFzZSgpLCBX
VEZNb3ZlKGNvcmVBcmNoaXZlUmVzb3VyY2VzKSwgV1RGTW92ZShjb3JlU3ViZnJhbWVMZWdhY3lX
ZWJBcmNoaXZlcykpOwogfQogCiBXZWJBcmNoaXZlOjpXZWJBcmNoaXZlKEFQSTo6RGF0YSogZGF0
YSkKQEAgLTExNiw3ICsxMTYsNyBAQCBBUEk6OkFycmF5KiBXZWJBcmNoaXZlOjpzdWJyZXNvdXJj
ZXMoKQogICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHN1YnJlc291cmNlIDogbV9sZWdhY3lXZWJB
cmNoaXZlLT5zdWJyZXNvdXJjZXMoKSkKICAgICAgICAgICAgIHN1YnJlc291cmNlcy51bmNoZWNr
ZWRBcHBlbmQoV2ViQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUoc3VicmVzb3VyY2UpKTsKIAotICAg
ICAgICBtX2NhY2hlZFN1YnJlc291cmNlcyA9IEFQSTo6QXJyYXk6OmNyZWF0ZShXVEY6Om1vdmUo
c3VicmVzb3VyY2VzKSk7CisgICAgICAgIG1fY2FjaGVkU3VicmVzb3VyY2VzID0gQVBJOjpBcnJh
eTo6Y3JlYXRlKFdURk1vdmUoc3VicmVzb3VyY2VzKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIG1f
Y2FjaGVkU3VicmVzb3VyY2VzLmdldCgpOwpAQCAtMTMxLDcgKzEzMSw3IEBAIEFQSTo6QXJyYXkq
IFdlYkFyY2hpdmU6OnN1YmZyYW1lQXJjaGl2ZXMoKQogICAgICAgICBmb3IgKGNvbnN0IGF1dG8m
IHN1YmZyYW1lQXJjaGl2ZSA6IG1fbGVnYWN5V2ViQXJjaGl2ZS0+c3ViZnJhbWVBcmNoaXZlcygp
KQogICAgICAgICAgICAgc3ViZnJhbWVXZWJBcmNoaXZlcy51bmNoZWNrZWRBcHBlbmQoV2ViQXJj
aGl2ZTo6Y3JlYXRlKHN0YXRpY19jYXN0PExlZ2FjeVdlYkFyY2hpdmUqPihzdWJmcmFtZUFyY2hp
dmUuZ2V0KCkpKSk7CiAKLSAgICAgICAgbV9jYWNoZWRTdWJmcmFtZUFyY2hpdmVzID0gQVBJOjpB
cnJheTo6Y3JlYXRlKFdURjo6bW92ZShzdWJmcmFtZVdlYkFyY2hpdmVzKSk7CisgICAgICAgIG1f
Y2FjaGVkU3ViZnJhbWVBcmNoaXZlcyA9IEFQSTo6QXJyYXk6OmNyZWF0ZShXVEZNb3ZlKHN1YmZy
YW1lV2ViQXJjaGl2ZXMpKTsKICAgICB9CiAKICAgICByZXR1cm4gbV9jYWNoZWRTdWJmcmFtZUFy
Y2hpdmVzLmdldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FzeW5jUmVx
dWVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQXN5bmNSZXF1ZXN0LmNwcAppbmRleCAw
ZTE5YmNlYWIxNjE5MTcwMDdiNjhkOTMyYTNmNGZmMTJjMTc3OGU5Li5hNGY4YjAyNWZjMWM0MjJl
NWM2NmNkOGU4MTQzZmQzODk3OGJkMTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvQXN5bmNSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQXN5bmNSZXF1
ZXN0LmNwcApAQCAtMzksNyArMzksNyBAQCBzdGF0aWMgdWludDY0X3QgZ2VuZXJhdGVSZXF1ZXN0
SUQoKQogfQogCiBBc3luY1JlcXVlc3Q6OkFzeW5jUmVxdWVzdChzdGQ6OmZ1bmN0aW9uPHZvaWQg
KCk+IGFib3J0SGFuZGxlcikKLSAgICA6IG1fYWJvcnRIYW5kbGVyKFdURjo6bW92ZShhYm9ydEhh
bmRsZXIpKQorICAgIDogbV9hYm9ydEhhbmRsZXIoV1RGTW92ZShhYm9ydEhhbmRsZXIpKQogICAg
ICwgbV9yZXF1ZXN0SUQoZ2VuZXJhdGVSZXF1ZXN0SUQoKSkKIHsKIH0KQEAgLTUxLDcgKzUxLDcg
QEAgQXN5bmNSZXF1ZXN0Ojp+QXN5bmNSZXF1ZXN0KCkKIAogdm9pZCBBc3luY1JlcXVlc3Q6OnNl
dEFib3J0SGFuZGxlcihzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+IGhhbmRsZXIpCiB7Ci0gICAgbV9h
Ym9ydEhhbmRsZXIgPSBXVEY6Om1vdmUoaGFuZGxlcik7CisgICAgbV9hYm9ydEhhbmRsZXIgPSBX
VEZNb3ZlKGhhbmRsZXIpOwogfQogCiB2b2lkIEFzeW5jUmVxdWVzdDo6cmVxdWVzdEFib3J0ZWQo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FzeW5jUmVxdWVzdC5oIGIvU291
cmNlL1dlYktpdDIvU2hhcmVkL0FzeW5jUmVxdWVzdC5oCmluZGV4IGUxMDZkNWI4YTA0OGNiN2Vj
ODlhMDk3YjM2NmY0YmRkYWI0MmE1NTcuLjYwOTE2NGNiOGIxM2QyYjhhZjYxYzhlMGQ2M2UyMjU3
ZTg3NWE0NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Bc3luY1JlcXVlc3Qu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQXN5bmNSZXF1ZXN0LmgKQEAgLTYyLDEyICs2
MiwxMiBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgUmVmPEFzeW5jUmVxdWVzdD4gY3JlYXRlKHN0
ZDo6ZnVuY3Rpb248dm9pZChBcmd1bWVudFR5cGU8QXJndW1lbnRzPi4uLik+IGNvbXBsZXRpb25I
YW5kbGVyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQXN5bmNSZXF1ZXN0
SW1wbDxBcmd1bWVudHMuLi4+KFdURjo6bW92ZShjb21wbGV0aW9uSGFuZGxlciksIG51bGxwdHIp
KTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQXN5bmNSZXF1ZXN0SW1wbDxBcmd1bWVu
dHMuLi4+KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBudWxscHRyKSk7CiAgICAgfQogCiAg
ICAgc3RhdGljIFJlZjxBc3luY1JlcXVlc3Q+IGNyZWF0ZShzdGQ6OmZ1bmN0aW9uPHZvaWQoQXJn
dW1lbnRUeXBlPEFyZ3VtZW50cz4uLi4pPiBjb21wbGV0aW9uSGFuZGxlciwgc3RkOjpmdW5jdGlv
bjx2b2lkKCk+IGFib3J0SGFuZGxlcikKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IEFzeW5jUmVxdWVzdEltcGw8QXJndW1lbnRzLi4uPihXVEY6Om1vdmUoY29tcGxldGlvbkhh
bmRsZXIpLCBXVEY6Om1vdmUoYWJvcnRIYW5kbGVyKSkpOworICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBBc3luY1JlcXVlc3RJbXBsPEFyZ3VtZW50cy4uLj4oV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlciksIFdURk1vdmUoYWJvcnRIYW5kbGVyKSkpOwogICAgIH0KIAogICAgIHZpcnR1YWwg
fkFzeW5jUmVxdWVzdEltcGwoKQpAQCAtODQsOCArODQsOCBAQCBwdWJsaWM6CiAKIHByaXZhdGU6
CiAgICAgQXN5bmNSZXF1ZXN0SW1wbChzdGQ6OmZ1bmN0aW9uPHZvaWQgKEFyZ3VtZW50VHlwZTxB
cmd1bWVudHM+Li4uKT4gY29tcGxldGlvbkhhbmRsZXIsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4g
YWJvcnRIYW5kbGVyKQotICAgICAgICA6IEFzeW5jUmVxdWVzdChXVEY6Om1vdmUoYWJvcnRIYW5k
bGVyKSkKLSAgICAgICAgLCBtX2NvbXBsZXRpb25IYW5kbGVyKFdURjo6bW92ZShjb21wbGV0aW9u
SGFuZGxlcikpCisgICAgICAgIDogQXN5bmNSZXF1ZXN0KFdURk1vdmUoYWJvcnRIYW5kbGVyKSkK
KyAgICAgICAgLCBtX2NvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KQogICAgIHsKICAgICAgICAgQVNTRVJUKG1fY29tcGxldGlvbkhhbmRsZXIpOwogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9CbG9ja2luZ1Jlc3BvbnNlTWFwLmggYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvQmxvY2tpbmdSZXNwb25zZU1hcC5oCmluZGV4IGRkMzFkNDY2
ZDA2M2MwYmMwN2ViYzA2MTRiNzNiNThkZDJlMWY5YmYuLjcyOGM4NDc3YmY5NDg0Nzk3NGUzOWZl
MjFkOTk5ZWVlOTYzOTA3NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9CbG9j
a2luZ1Jlc3BvbnNlTWFwLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Jsb2NraW5nUmVz
cG9uc2VNYXAuaApAQCAtNjAsNyArNjAsNyBAQCBwdWJsaWM6CiAgICAgICAgIHN0ZDo6bG9ja19n
dWFyZDxMb2NrPiBsb2NrKG1fbXV0ZXgpOwogICAgICAgICBBU1NFUlQoIW1fcmVzcG9uc2VzLmNv
bnRhaW5zKHJlcXVlc3RJRCkpOwogCi0gICAgICAgIG1fcmVzcG9uc2VzLnNldChyZXF1ZXN0SUQs
IFdURjo6bW92ZShyZXNwb25zZSkpOworICAgICAgICBtX3Jlc3BvbnNlcy5zZXQocmVxdWVzdElE
LCBXVEZNb3ZlKHJlc3BvbnNlKSk7CiAKICAgICAgICAgLy8gRklYTUU6IENvdWxkIGdldCBhIHNs
aWdodCBzcGVlZC11cCBmcm9tIHVzaW5nIG5vdGlmeU9uZSgpLgogICAgICAgICBtX2NvbmRpdGlv
bi5ub3RpZnlBbGwoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9DaGlsZFBy
b2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ2hpbGRQcm9jZXNzUHJveHku
Y3BwCmluZGV4IDMxOWY4MDIyMzhhMzI1YzFlOGU1NDViZDM3NTFlODFjZjA0NzM2Y2IuLjA2YjEw
OTkzMDZkNGI3ODhjY2Q4YWU0NTdjODg3NDU2ZDdmNTljYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9DaGlsZFByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
U2hhcmVkL0NoaWxkUHJvY2Vzc1Byb3h5LmNwcApAQCAtOTgsMTEgKzk4LDExIEBAIGJvb2wgQ2hp
bGRQcm9jZXNzUHJveHk6OnNlbmRNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxJUEM6Ok1lc3NhZ2VF
bmNvZGVyPiBlbmNvZGVyCiAgICAgc3dpdGNoIChzdGF0ZSgpKSB7CiAgICAgY2FzZSBTdGF0ZTo6
TGF1bmNoaW5nOgogICAgICAgICAvLyBJZiB3ZSdyZSB3YWl0aW5nIGZvciB0aGUgY2hpbGQgcHJv
Y2VzcyB0byBsYXVuY2gsIHdlIG5lZWQgdG8gc3Rhc2ggYXdheSB0aGUgbWVzc2FnZXMgc28gd2Ug
Y2FuIHNlbmQgdGhlbSBvbmNlIHdlIGhhdmUgYSBjb25uZWN0aW9uLgotICAgICAgICBtX3BlbmRp
bmdNZXNzYWdlcy5hcHBlbmQoc3RkOjptYWtlX3BhaXIoV1RGOjptb3ZlKGVuY29kZXIpLCBtZXNz
YWdlU2VuZEZsYWdzKSk7CisgICAgICAgIG1fcGVuZGluZ01lc3NhZ2VzLmFwcGVuZChzdGQ6Om1h
a2VfcGFpcihXVEZNb3ZlKGVuY29kZXIpLCBtZXNzYWdlU2VuZEZsYWdzKSk7CiAgICAgICAgIHJl
dHVybiB0cnVlOwogCiAgICAgY2FzZSBTdGF0ZTo6UnVubmluZzoKLSAgICAgICAgcmV0dXJuIGNv
bm5lY3Rpb24oKS0+c2VuZE1lc3NhZ2UoV1RGOjptb3ZlKGVuY29kZXIpLCBtZXNzYWdlU2VuZEZs
YWdzKTsKKyAgICAgICAgcmV0dXJuIGNvbm5lY3Rpb24oKS0+c2VuZE1lc3NhZ2UoV1RGTW92ZShl
bmNvZGVyKSwgbWVzc2FnZVNlbmRGbGFncyk7CiAKICAgICBjYXNlIFN0YXRlOjpUZXJtaW5hdGVk
OgogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xNTQsOSArMTU0LDkgQEAgdm9pZCBDaGlsZFBy
b2Nlc3NQcm94eTo6ZGlkRmluaXNoTGF1bmNoaW5nKFByb2Nlc3NMYXVuY2hlciosIElQQzo6Q29u
bmVjdGlvbjo6SWQKICAgICBtX2Nvbm5lY3Rpb24tPm9wZW4oKTsKIAogICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgbV9wZW5kaW5nTWVzc2FnZXMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgc3Rk
Ojp1bmlxdWVfcHRyPElQQzo6TWVzc2FnZUVuY29kZXI+IG1lc3NhZ2UgPSBXVEY6Om1vdmUobV9w
ZW5kaW5nTWVzc2FnZXNbaV0uZmlyc3QpOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpN
ZXNzYWdlRW5jb2Rlcj4gbWVzc2FnZSA9IFdURk1vdmUobV9wZW5kaW5nTWVzc2FnZXNbaV0uZmly
c3QpOwogICAgICAgICB1bnNpZ25lZCBtZXNzYWdlU2VuZEZsYWdzID0gbV9wZW5kaW5nTWVzc2Fn
ZXNbaV0uc2Vjb25kOwotICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmRNZXNzYWdlKFdURjo6bW92
ZShtZXNzYWdlKSwgbWVzc2FnZVNlbmRGbGFncyk7CisgICAgICAgIG1fY29ubmVjdGlvbi0+c2Vu
ZE1lc3NhZ2UoV1RGTW92ZShtZXNzYWdlKSwgbWVzc2FnZVNlbmRGbGFncyk7CiAgICAgfQogCiAg
ICAgbV9wZW5kaW5nTWVzc2FnZXMuY2xlYXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9DaGlsZFByb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0NoaWxk
UHJvY2Vzc1Byb3h5LmgKaW5kZXggMDJlZGNjMTNhY2UyN2ZiYmMyYTliNDI0OGUyZjdkZmUzZjkx
MTY1ZS4uYWY2M2YxMmFjNTVlY2RiZTk3YjA0OWU3NDMyODhiNWRjMGUzOWE0YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0NoaWxkUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNl
L1dlYktpdDIvU2hhcmVkL0NoaWxkUHJvY2Vzc1Byb3h5LmgKQEAgLTEwMiw3ICsxMDIsNyBAQCBi
b29sIENoaWxkUHJvY2Vzc1Byb3h5OjpzZW5kKFQmJiBtZXNzYWdlLCB1aW50NjRfdCBkZXN0aW5h
dGlvbklELCB1bnNpZ25lZCBtZXNzYQogICAgIGF1dG8gZW5jb2RlciA9IHN0ZDo6bWFrZV91bmlx
dWU8SVBDOjpNZXNzYWdlRW5jb2Rlcj4oVDo6cmVjZWl2ZXJOYW1lKCksIFQ6Om5hbWUoKSwgZGVz
dGluYXRpb25JRCk7CiAgICAgZW5jb2Rlci0+ZW5jb2RlKG1lc3NhZ2UuYXJndW1lbnRzKCkpOwog
Ci0gICAgcmV0dXJuIHNlbmRNZXNzYWdlKFdURjo6bW92ZShlbmNvZGVyKSwgbWVzc2FnZVNlbmRG
bGFncyk7CisgICAgcmV0dXJuIHNlbmRNZXNzYWdlKFdURk1vdmUoZW5jb2RlciksIG1lc3NhZ2VT
ZW5kRmxhZ3MpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiAKQEAgLTExMyw3ICsxMTMsNyBA
QCBib29sIENoaWxkUHJvY2Vzc1Byb3h5OjpzZW5kU3luYyhVJiYgbWVzc2FnZSwgdHlwZW5hbWUg
VTo6UmVwbHkmJiByZXBseSwgdWludDY0XwogICAgIGlmICghbV9jb25uZWN0aW9uKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gY29ubmVjdGlvbigpLT5zZW5kU3luYyhzdGQ6
OmZvcndhcmQ8VT4obWVzc2FnZSksIFdURjo6bW92ZShyZXBseSksIGRlc3RpbmF0aW9uSUQsIHRp
bWVvdXQsIHNlbmRTeW5jRmxhZ3MpOworICAgIHJldHVybiBjb25uZWN0aW9uKCktPnNlbmRTeW5j
KHN0ZDo6Zm9yd2FyZDxVPihtZXNzYWdlKSwgV1RGTW92ZShyZXBseSksIGRlc3RpbmF0aW9uSUQs
IHRpbWVvdXQsIHNlbmRTeW5jRmxhZ3MpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3Jk
aW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0
ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwCmluZGV4IDBmN2UxZjIxOGJh
NDk1N2Q5ODNiMDE5YzZhNjY4ZjljMWJhYWI1NGIuLjFiNzhmZDhlZmEyMDc4ZjRjODgxZDljYTM5
YmQzOWNkZTQwZjkzYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGlu
YXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5l
LmNwcApAQCAtNDAsNyArNDAsNyBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6ZGlz
cGF0Y2hPbk1haW5UaHJlYWQoc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGZ1bmN0aQogICAgIGlmIChp
c01haW5UaHJlYWQoKSkKICAgICAgICAgZnVuY3Rpb24oKTsKICAgICBlbHNlCi0gICAgICAgIGNh
bGxPbk1haW5UaHJlYWQoV1RGOjptb3ZlKGZ1bmN0aW9uKSk7CisgICAgICAgIGNhbGxPbk1haW5U
aHJlYWQoV1RGTW92ZShmdW5jdGlvbikpOwogfQogCiB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NT
Y2VuZTo6ZGlzcGF0Y2hPbkNsaWVudFJ1bkxvb3Aoc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGZ1bmN0
aW9uKQpAQCAtNDgsNyArNDgsNyBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6ZGlz
cGF0Y2hPbkNsaWVudFJ1bkxvb3Aoc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGZ1bgogICAgIGlmICgm
bV9jbGllbnRSdW5Mb29wID09ICZSdW5Mb29wOjpjdXJyZW50KCkpCiAgICAgICAgIGZ1bmN0aW9u
KCk7CiAgICAgZWxzZQotICAgICAgICBtX2NsaWVudFJ1bkxvb3AuZGlzcGF0Y2goV1RGOjptb3Zl
KGZ1bmN0aW9uKSk7CisgICAgICAgIG1fY2xpZW50UnVuTG9vcC5kaXNwYXRjaChXVEZNb3ZlKGZ1
bmN0aW9uKSk7CiB9CiAKIHN0YXRpYyBib29sIGxheWVyU2hvdWxkSGF2ZUJhY2tpbmdTdG9yZShU
ZXh0dXJlTWFwcGVyTGF5ZXIqIGxheWVyKQpAQCAtMzYxLDcgKzM2MSw3IEBAIHZvaWQgQ29vcmRp
bmF0ZWRHcmFwaGljc1NjZW5lOjpjcmVhdGVMYXllcihDb29yZGluYXRlZExheWVySUQgaWQpCiAg
ICAgc3RkOjp1bmlxdWVfcHRyPFRleHR1cmVNYXBwZXJMYXllcj4gbmV3TGF5ZXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPFRleHR1cmVNYXBwZXJMYXllcj4oKTsKICAgICBuZXdMYXllci0+c2V0SUQoaWQp
OwogICAgIG5ld0xheWVyLT5zZXRTY3JvbGxDbGllbnQodGhpcyk7Ci0gICAgbV9sYXllcnMuYWRk
KGlkLCBXVEY6Om1vdmUobmV3TGF5ZXIpKTsKKyAgICBtX2xheWVycy5hZGQoaWQsIFdURk1vdmUo
bmV3TGF5ZXIpKTsKIH0KIAogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OmRlbGV0ZUxh
eWVycyhjb25zdCBWZWN0b3I8Q29vcmRpbmF0ZWRMYXllcklEPiYgbGF5ZXJJRHMpCkBAIC02NDcs
NyArNjQ3LDcgQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnN5bmNSZW1vdGVDb250
ZW50KCkKICAgICBib29sIGNhbGxlZE9uTWFpblRocmVhZCA9IFdURjo6aXNNYWluVGhyZWFkKCk7
CiAgICAgaWYgKCFjYWxsZWRPbk1haW5UaHJlYWQpCiAgICAgICAgIG1fcmVuZGVyUXVldWVNdXRl
eC5sb2NrKCk7Ci0gICAgcmVuZGVyUXVldWUgPSBXVEY6Om1vdmUobV9yZW5kZXJRdWV1ZSk7Cisg
ICAgcmVuZGVyUXVldWUgPSBXVEZNb3ZlKG1fcmVuZGVyUXVldWUpOwogICAgIGlmICghY2FsbGVk
T25NYWluVGhyZWFkKQogICAgICAgICBtX3JlbmRlclF1ZXVlTXV0ZXgudW5sb2NrKCk7CiAKQEAg
LTcyNCw3ICs3MjQsNyBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6YXBwZW5kVXBk
YXRlKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBmdW5jdGlvbikKIAogICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CiAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9yZW5kZXJRdWV1ZU11dGV4KTsKLSAg
ICBtX3JlbmRlclF1ZXVlLmFwcGVuZChXVEY6Om1vdmUoZnVuY3Rpb24pKTsKKyAgICBtX3JlbmRl
clF1ZXVlLmFwcGVuZChXVEZNb3ZlKGZ1bmN0aW9uKSk7CiB9CiAKIHZvaWQgQ29vcmRpbmF0ZWRH
cmFwaGljc1NjZW5lOjpzZXRBY3RpdmUoYm9vbCBhY3RpdmUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhy
ZWFkU2FmZUNvb3JkaW5hdGVkU3VyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29v
cmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkU2FmZUNvb3JkaW5hdGVk
U3VyZmFjZS5jcHAKaW5kZXggYzJhOTZjYTNkMmFmZDI5OWQ2NTViYzVlODQ5MjA0MTkxYWFiMTQ1
Ni4uNTk0ZTEwOGJiMzczMDViNTJlM2FkMTIyZDA0OTA5N2M2NjM1YjdkMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3Np
dG9yL1RocmVhZFNhZmVDb29yZGluYXRlZFN1cmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRTYWZl
Q29vcmRpbmF0ZWRTdXJmYWNlLmNwcApAQCAtNDQsMTIgKzQ0LDEyIEBAIFJlZjxUaHJlYWRTYWZl
Q29vcmRpbmF0ZWRTdXJmYWNlPiBUaHJlYWRTYWZlQ29vcmRpbmF0ZWRTdXJmYWNlOjpjcmVhdGUo
Y29uc3QgSW50CiAKIFJlZjxUaHJlYWRTYWZlQ29vcmRpbmF0ZWRTdXJmYWNlPiBUaHJlYWRTYWZl
Q29vcmRpbmF0ZWRTdXJmYWNlOjpjcmVhdGUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgQ29vcmRpbmF0
ZWRTdXJmYWNlOjpGbGFncyBmbGFncywgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBidWZm
ZXIpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVGhyZWFkU2FmZUNvb3JkaW5hdGVkU3Vy
ZmFjZShzaXplLCBmbGFncywgV1RGOjptb3ZlKGJ1ZmZlcikpKTsKKyAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBUaHJlYWRTYWZlQ29vcmRpbmF0ZWRTdXJmYWNlKHNpemUsIGZsYWdzLCBXVEZNb3Zl
KGJ1ZmZlcikpKTsKIH0KIAogVGhyZWFkU2FmZUNvb3JkaW5hdGVkU3VyZmFjZTo6VGhyZWFkU2Fm
ZUNvb3JkaW5hdGVkU3VyZmFjZShjb25zdCBJbnRTaXplJiBzaXplLCBDb29yZGluYXRlZFN1cmZh
Y2U6OkZsYWdzIGZsYWdzLCBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+IGJ1ZmZlcikKICAg
ICA6IENvb3JkaW5hdGVkU3VyZmFjZShzaXplLCBmbGFncykKLSAgICAsIG1faW1hZ2VCdWZmZXIo
V1RGOjptb3ZlKGJ1ZmZlcikpCisgICAgLCBtX2ltYWdlQnVmZmVyKFdURk1vdmUoYnVmZmVyKSkK
IHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhy
ZWFkZWRDb21wb3NpdG9yLmNwcAppbmRleCBjNmRkMDQ4OTc2OGY2OTNhZmZjMmQzMzEzYzJmOGQw
NjkxMjM3ZDcyLi5mZWM1ZjY5MTVkMzEwZTBkNDU5NzNhMTI1Yzc5NGYwOTNiNGYyMDg0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRl
ZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21w
b3NpdG9yLmNwcApAQCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6CiAgICAgQ29tcG9zaXRpbmdSdW5M
b29wKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiB1cGRhdGVGdW5jdGlvbikKICAgICAgICAgOiBtX3J1
bkxvb3AoUnVuTG9vcDo6Y3VycmVudCgpKQogICAgICAgICAsIG1fdXBkYXRlVGltZXIobV9ydW5M
b29wLCB0aGlzLCAmQ29tcG9zaXRpbmdSdW5Mb29wOjp1cGRhdGVUaW1lckZpcmVkKQotICAgICAg
ICAsIG1fdXBkYXRlRnVuY3Rpb24oV1RGOjptb3ZlKHVwZGF0ZUZ1bmN0aW9uKSkKKyAgICAgICAg
LCBtX3VwZGF0ZUZ1bmN0aW9uKFdURk1vdmUodXBkYXRlRnVuY3Rpb24pKQogICAgICAgICAsIG1f
bGFzdFVwZGF0ZVRpbWUoMCkKICAgICB7CiAgICAgfQpAQCAtNjcsNyArNjcsNyBAQCBwdWJsaWM6
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBtX3J1bkxvb3AuZGlz
cGF0Y2goV1RGOjptb3ZlKGZ1bmN0aW9uKSk7CisgICAgICAgIG1fcnVuTG9vcC5kaXNwYXRjaChX
VEZNb3ZlKGZ1bmN0aW9uKSk7CiAgICAgfQogCiAgICAgdm9pZCBzZXRVcGRhdGVUaW1lcihVcGRh
dGVUaW1pbmcgdGltaW5nID0gSW1tZWRpYXRlKQpAQCAtMjkxLDcgKzI5MSw3IEBAIHZvaWQgVGhy
ZWFkZWRDb21wb3NpdG9yOjp1cGRhdGVTY2VuZVN0YXRlKGNvbnN0IENvb3JkaW5hdGVkR3JhcGhp
Y3NTdGF0ZSYgc3RhdGUpCiAKIHZvaWQgVGhyZWFkZWRDb21wb3NpdG9yOjpjYWxsT25Db21wb3Np
dGluZ1RocmVhZChzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gZnVuY3Rpb24pCiB7Ci0gICAgbV9jb21w
b3NpdGluZ1J1bkxvb3AtPmNhbGxPbkNvbXBvc2l0aW5nUnVuTG9vcChXVEY6Om1vdmUoZnVuY3Rp
b24pKTsKKyAgICBtX2NvbXBvc2l0aW5nUnVuTG9vcC0+Y2FsbE9uQ29tcG9zaXRpbmdSdW5Mb29w
KFdURk1vdmUoZnVuY3Rpb24pKTsKIH0KIAogdm9pZCBUaHJlYWRlZENvbXBvc2l0b3I6OmNvbXBv
c2l0aW5nVGhyZWFkRW50cnkodm9pZCogY29vcmRpbmF0ZWRDb21wb3NpdG9yKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvbWFjL1hQQ1NlcnZp
Y2UvWFBDU2VydmljZUVudHJ5UG9pbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9FbnRyeVBv
aW50VXRpbGl0aWVzL21hYy9YUENTZXJ2aWNlL1hQQ1NlcnZpY2VFbnRyeVBvaW50LmgKaW5kZXgg
ZmJiMzJhMzk1MGFiZGNiNzdhZWRjYzhkMmI4YWNhNzQ2YjUxNTkzYi4uZWJiZWE1NjFiZTNhOWQz
MWM0NWQzYzJkYzI4NDQ1MTE2OWU1NzMzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvbWFjL1hQQ1NlcnZpY2UvWFBDU2VydmljZUVudHJ5UG9p
bnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9tYWMv
WFBDU2VydmljZS9YUENTZXJ2aWNlRW50cnlQb2ludC5oCkBAIC00NCw3ICs0NCw3IEBAIG5hbWVz
cGFjZSBXZWJLaXQgewogY2xhc3MgWFBDU2VydmljZUluaXRpYWxpemVyRGVsZWdhdGUgewogcHVi
bGljOgogICAgIFhQQ1NlcnZpY2VJbml0aWFsaXplckRlbGVnYXRlKE9TT2JqZWN0UHRyPHhwY19j
b25uZWN0aW9uX3Q+IGNvbm5lY3Rpb24sIHhwY19vYmplY3RfdCBpbml0aWFsaXplck1lc3NhZ2Up
Ci0gICAgICAgIDogbV9jb25uZWN0aW9uKFdURjo6bW92ZShjb25uZWN0aW9uKSkKKyAgICAgICAg
OiBtX2Nvbm5lY3Rpb24oV1RGTW92ZShjb25uZWN0aW9uKSkKICAgICAgICAgLCBtX2luaXRpYWxp
emVyTWVzc2FnZShpbml0aWFsaXplck1lc3NhZ2UpCiAgICAgewogICAgIH0KQEAgLTY5LDcgKzY5
LDcgQEAgcHJvdGVjdGVkOgogdGVtcGxhdGU8dHlwZW5hbWUgWFBDU2VydmljZVR5cGUsIHR5cGVu
YW1lIFhQQ1NlcnZpY2VJbml0aWFsaXplckRlbGVnYXRlVHlwZT4KIHZvaWQgWFBDU2VydmljZUlu
aXRpYWxpemVyKE9TT2JqZWN0UHRyPHhwY19jb25uZWN0aW9uX3Q+IGNvbm5lY3Rpb24sIHhwY19v
YmplY3RfdCBpbml0aWFsaXplck1lc3NhZ2UpCiB7Ci0gICAgWFBDU2VydmljZUluaXRpYWxpemVy
RGVsZWdhdGVUeXBlIGRlbGVnYXRlKFdURjo6bW92ZShjb25uZWN0aW9uKSwgaW5pdGlhbGl6ZXJN
ZXNzYWdlKTsKKyAgICBYUENTZXJ2aWNlSW5pdGlhbGl6ZXJEZWxlZ2F0ZVR5cGUgZGVsZWdhdGUo
V1RGTW92ZShjb25uZWN0aW9uKSwgaW5pdGlhbGl6ZXJNZXNzYWdlKTsKIAogICAgIC8vIFdlIGRv
bid0IHdhbnQgWFBDIHRvIGJlIGluIGNoYXJnZSBvZiB3aGV0aGVyIHRoZSBwcm9jZXNzIHNob3Vs
ZCBiZSB0ZXJtaW5hdGVkIG9yIG5vdCwKICAgICAvLyBzbyBlbnN1cmUgdGhhdCB3ZSBoYXZlIGFu
IG91dHN0YW5kaW5nIHRyYW5zYWN0aW9uIGhlcmUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9QbHVnaW5JbmZvcm1hdGlvbi5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9QbHVnaW5JbmZvcm1hdGlvbi5jcHAKaW5k
ZXggNTI3MzQzYWRlNjI4YjY5N2EyODExZDQ1MmE3ZGUwMjU4MmJkYzk2NC4uY2MzOWU1NTljZmNk
Yjk0NzJlMjIzYWE0NmQ2YmI1MGI1M2JkN2UyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvUGx1Z2luSW5mb3JtYXRpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL1BsdWdpbkluZm9ybWF0aW9uLmNwcApA
QCAtMTI3LDcgKzEyNyw3IEBAIFJlZjxBUEk6OkRpY3Rpb25hcnk+IGNyZWF0ZVBsdWdpbkluZm9y
bWF0aW9uRGljdGlvbmFyeShjb25zdCBQbHVnaW5Nb2R1bGVJbmZvJiBwCiAgICAgQVBJOjpEaWN0
aW9uYXJ5OjpNYXBUeXBlIG1hcDsKICAgICBnZXRQbHVnaW5Nb2R1bGVJbmZvcm1hdGlvbihwbHVn
aW4sIG1hcCk7CiAKLSAgICByZXR1cm4gQVBJOjpEaWN0aW9uYXJ5OjpjcmVhdGUoV1RGOjptb3Zl
KG1hcCkpOworICAgIHJldHVybiBBUEk6OkRpY3Rpb25hcnk6OmNyZWF0ZShXVEZNb3ZlKG1hcCkp
OwogfQogCiBSZWY8QVBJOjpEaWN0aW9uYXJ5PiBjcmVhdGVQbHVnaW5JbmZvcm1hdGlvbkRpY3Rp
b25hcnkoY29uc3QgUGx1Z2luTW9kdWxlSW5mbyYgcGx1Z2luLCBjb25zdCBTdHJpbmcmIGZyYW1l
VVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIHBhZ2VVUkxT
dHJpbmcsIGNvbnN0IFN0cmluZyYgcGx1Z2luc3BhZ2VBdHRyaWJ1dGVVUkxTdHJpbmcsIGNvbnN0
IFN0cmluZyYgcGx1Z2luVVJMU3RyaW5nLCBib29sIHJlcGxhY2VtZW50T2JzY3VyZWQpCkBAIC0x
NDcsNyArMTQ3LDcgQEAgUmVmPEFQSTo6RGljdGlvbmFyeT4gY3JlYXRlUGx1Z2luSW5mb3JtYXRp
b25EaWN0aW9uYXJ5KGNvbnN0IFBsdWdpbk1vZHVsZUluZm8mIHAKICAgICAgICAgbWFwLnNldChw
bHVnaW5JbmZvcm1hdGlvblBsdWdpblVSTEtleSgpLCBBUEk6OlVSTDo6Y3JlYXRlKHBsdWdpblVS
TFN0cmluZykpOwogICAgIG1hcC5zZXQocGx1Z0luSW5mb3JtYXRpb25SZXBsYWNlbWVudE9ic2N1
cmVkS2V5KCksIEFQSTo6Qm9vbGVhbjo6Y3JlYXRlKHJlcGxhY2VtZW50T2JzY3VyZWQpKTsKIAot
ICAgIHJldHVybiBBUEk6OkRpY3Rpb25hcnk6OmNyZWF0ZShXVEY6Om1vdmUobWFwKSk7CisgICAg
cmV0dXJuIEFQSTo6RGljdGlvbmFyeTo6Y3JlYXRlKFdURk1vdmUobWFwKSk7CiB9CiAKIFJlZjxB
UEk6OkRpY3Rpb25hcnk+IGNyZWF0ZVBsdWdpbkluZm9ybWF0aW9uRGljdGlvbmFyeShjb25zdCBT
dHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIGZyYW1lVVJMU3RyaW5nLCBjb25zdCBTdHJp
bmcmIHBhZ2VVUkxTdHJpbmcpCkBAIC0xNjEsNyArMTYxLDcgQEAgUmVmPEFQSTo6RGljdGlvbmFy
eT4gY3JlYXRlUGx1Z2luSW5mb3JtYXRpb25EaWN0aW9uYXJ5KGNvbnN0IFN0cmluZyYgbWltZVR5
cGUsIGMKICAgICBpZiAoIXBhZ2VVUkxTdHJpbmcuaXNFbXB0eSgpKQogICAgICAgICBtYXAuc2V0
KHBsdWdpbkluZm9ybWF0aW9uUGFnZVVSTEtleSgpLCBBUEk6OlVSTDo6Y3JlYXRlKHBhZ2VVUkxT
dHJpbmcpKTsKIAotICAgIHJldHVybiBBUEk6OkRpY3Rpb25hcnk6OmNyZWF0ZShXVEY6Om1vdmUo
bWFwKSk7CisgICAgcmV0dXJuIEFQSTo6RGljdGlvbmFyeTo6Y3JlYXRlKFdURk1vdmUobWFwKSk7
CiB9CiAKICNpZiAhUExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvU2Nyb2xsaW5nL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yVHJhbnNhY3Rpb24uaCBi
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9TY3JvbGxpbmcvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0
b3JUcmFuc2FjdGlvbi5oCmluZGV4IGRiNmE3ZDUwZWRiNGQ1NzhhOTMwODdkMzRkMTRmOWJjYmEx
YjgwNzYuLjBkODFlMThjMzQ0MTFiZWVkZDVlOGQ3MjAwMWViYWU0OWY3Mzg3NDcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9TY3JvbGxpbmcvUmVtb3RlU2Nyb2xsaW5nQ29vcmRp
bmF0b3JUcmFuc2FjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9TY3JvbGxpbmcv
UmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JUcmFuc2FjdGlvbi5oCkBAIC0zOCw3ICszOCw3IEBA
IG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JUcmFu
c2FjdGlvbiB7CiBwdWJsaWM6CiAjaWYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykKLSAgICB2b2lk
IHNldFN0YXRlVHJlZVRvRW5jb2RlKHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTY3JvbGxpbmdT
dGF0ZVRyZWU+IHN0YXRlVHJlZSkgeyBtX3Njcm9sbGluZ1N0YXRlVHJlZSA9IFdURjo6bW92ZShz
dGF0ZVRyZWUpOyB9CisgICAgdm9pZCBzZXRTdGF0ZVRyZWVUb0VuY29kZShzdGQ6OnVuaXF1ZV9w
dHI8V2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVUcmVlPiBzdGF0ZVRyZWUpIHsgbV9zY3JvbGxpbmdT
dGF0ZVRyZWUgPSBXVEZNb3ZlKHN0YXRlVHJlZSk7IH0KICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2Vi
Q29yZTo6U2Nyb2xsaW5nU3RhdGVUcmVlPiYgc2Nyb2xsaW5nU3RhdGVUcmVlKCkgeyByZXR1cm4g
bV9zY3JvbGxpbmdTdGF0ZVRyZWU7IH0KICNlbmRpZiAvLyBFTkFCTEUoQVNZTkNfU0NST0xMSU5H
KQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2Vzc2lvblRyYWNrZXIuY3Bw
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1Nlc3Npb25UcmFja2VyLmNwcAppbmRleCBkNTFkMGMx
Y2QxNDQxYzQwY2EyMjcwNDU1ZGRhYjE0ZmQ5OTk1ZWY0Li5mYThmZmQwMTNkZDFiMDc0OWU1OWVi
NTk2Y2M2MjdiYjljMmJjOGZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2Vz
c2lvblRyYWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9TZXNzaW9uVHJhY2tl
ci5jcHAKQEAgLTEwOSwxMCArMTA5LDEwIEBAIHZvaWQgU2Vzc2lvblRyYWNrZXI6OnNldFNlc3Np
b24oU2Vzc2lvbklEIHNlc3Npb25JRCwgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtTdG9yCiAgICAg
QVNTRVJUKHN0b3JhZ2VTZXNzaW9uKTsKICAgICBBU1NFUlQoc2Vzc2lvbklEICE9IFNlc3Npb25J
RDo6ZGVmYXVsdFNlc3Npb25JRCgpKTsKICAgICBzdG9yYWdlU2Vzc2lvblRvSUQoKS5zZXQoc3Rv
cmFnZVNlc3Npb24uZ2V0KCksIHNlc3Npb25JRCk7Ci0gICAgc3RhdGljU3RvcmFnZVNlc3Npb25N
YXAoKS5zZXQoc2Vzc2lvbklELCBXVEY6Om1vdmUoc3RvcmFnZVNlc3Npb24pKTsKKyAgICBzdGF0
aWNTdG9yYWdlU2Vzc2lvbk1hcCgpLnNldChzZXNzaW9uSUQsIFdURk1vdmUoc3RvcmFnZVNlc3Np
b24pKTsKICNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQogICAgIEFTU0VSVChzZXNzaW9uKTsKLSAg
ICBzdGF0aWNTZXNzaW9uTWFwKCkuc2V0KHNlc3Npb25JRCwgV1RGOjptb3ZlKHNlc3Npb24pKTsK
KyAgICBzdGF0aWNTZXNzaW9uTWFwKCkuc2V0KHNlc3Npb25JRCwgV1RGTW92ZShzZXNzaW9uKSk7
CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1VzZXJEYXRh
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Vc2VyRGF0YS5jcHAKaW5kZXggY2VhZWNkMDc4
NDM2NGQ3MTIzMWJjOTlkNTAxOTQ5MDJmY2M4YWY1MS4uMGVjM2E4YTE1OTk3Y2QzZDQ2MjBkY2My
Y2MzNjA1ZjMzNWE0NjMxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1VzZXJE
YXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvVXNlckRhdGEuY3BwCkBAIC02MCw3
ICs2MCw3IEBAIFVzZXJEYXRhOjpVc2VyRGF0YSgpCiB9CiAKIFVzZXJEYXRhOjpVc2VyRGF0YShS
ZWZQdHI8QVBJOjpPYmplY3Q+JiYgb2JqZWN0KQotICAgIDogbV9vYmplY3QoV1RGOjptb3ZlKG9i
amVjdCkpCisgICAgOiBtX29iamVjdChXVEZNb3ZlKG9iamVjdCkpCiB7CiB9CiAKQEAgLTExMSw3
ICsxMTEsNyBAQCBzdGF0aWMgUmVmUHRyPEFQSTo6T2JqZWN0PiB0cmFuc2Zvcm1HcmFwaChBUEk6
Ok9iamVjdCYgb2JqZWN0LCBjb25zdCBVc2VyRGF0YTo6VAogICAgICAgICAgICAgICAgIGVsZW1l
bnRzLnVuY2hlY2tlZEFwcGVuZCh0cmFuc2Zvcm1HcmFwaCgqZWxlbWVudCwgdHJhbnNmb3JtZXIp
KTsKICAgICAgICAgfQogCi0gICAgICAgIHJldHVybiBBUEk6OkFycmF5OjpjcmVhdGUoV1RGOjpt
b3ZlKGVsZW1lbnRzKSk7CisgICAgICAgIHJldHVybiBBUEk6OkFycmF5OjpjcmVhdGUoV1RGTW92
ZShlbGVtZW50cykpOwogICAgIH0KIAogICAgIGlmIChvYmplY3QudHlwZSgpID09IEFQSTo6T2Jq
ZWN0OjpUeXBlOjpEaWN0aW9uYXJ5KSB7CkBAIC0xMjQsNyArMTI0LDcgQEAgc3RhdGljIFJlZlB0
cjxBUEk6Ok9iamVjdD4gdHJhbnNmb3JtR3JhcGgoQVBJOjpPYmplY3QmIG9iamVjdCwgY29uc3Qg
VXNlckRhdGE6OlQKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBtYXAuYWRkKGtl
eVZhbHVlUGFpci5rZXksIHRyYW5zZm9ybUdyYXBoKCprZXlWYWx1ZVBhaXIudmFsdWUsIHRyYW5z
Zm9ybWVyKSk7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIEFQSTo6RGljdGlvbmFyeTo6Y3Jl
YXRlKFdURjo6bW92ZShtYXApKTsKKyAgICAgICAgcmV0dXJuIEFQSTo6RGljdGlvbmFyeTo6Y3Jl
YXRlKFdURk1vdmUobWFwKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIHRyYW5zZm9ybWVyLnRyYW5z
Zm9ybU9iamVjdChvYmplY3QpOwpAQCAtMzQ1LDEwICszNDUsMTAgQEAgYm9vbCBVc2VyRGF0YTo6
ZGVjb2RlKElQQzo6QXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBSZWZQdHI8QVBJOjpPYmplY3Q+
JiByZXN1bHQKICAgICAgICAgICAgIGlmICghZGVjb2RlKGRlY29kZXIsIGVsZW1lbnQpKQogICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICAgICAgZWxlbWVudHMuYXBwZW5k
KFdURjo6bW92ZShlbGVtZW50KSk7CisgICAgICAgICAgICBlbGVtZW50cy5hcHBlbmQoV1RGTW92
ZShlbGVtZW50KSk7CiAgICAgICAgIH0KIAotICAgICAgICByZXN1bHQgPSBBUEk6OkFycmF5Ojpj
cmVhdGUoV1RGOjptb3ZlKGVsZW1lbnRzKSk7CisgICAgICAgIHJlc3VsdCA9IEFQSTo6QXJyYXk6
OmNyZWF0ZShXVEZNb3ZlKGVsZW1lbnRzKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApAQCAt
Mzg1LDExICszODUsMTEgQEAgYm9vbCBVc2VyRGF0YTo6ZGVjb2RlKElQQzo6QXJndW1lbnREZWNv
ZGVyJiBkZWNvZGVyLCBSZWZQdHI8QVBJOjpPYmplY3Q+JiByZXN1bHQKICAgICAgICAgICAgIGlm
ICghZGVjb2RlKGRlY29kZXIsIHZhbHVlKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICAgICAgICAgIGlmICghbWFwLmFkZChXVEY6Om1vdmUoa2V5KSwgV1RGOjptb3ZlKHZh
bHVlKSkuaXNOZXdFbnRyeSkKKyAgICAgICAgICAgIGlmICghbWFwLmFkZChXVEZNb3ZlKGtleSks
IFdURk1vdmUodmFsdWUpKS5pc05ld0VudHJ5KQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgfQogCi0gICAgICAgIHJlc3VsdCA9IEFQSTo6RGljdGlvbmFyeTo6Y3JlYXRl
KFdURjo6bW92ZShtYXApKTsKKyAgICAgICAgcmVzdWx0ID0gQVBJOjpEaWN0aW9uYXJ5OjpjcmVh
dGUoV1RGTW92ZShtYXApKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5jcHAKaW5kZXggYmZlNTYyYTZm
ZWJkNDg2ZjVlNTY0MTM0MWNkOTI1MWRlOWZjYWEyYy4uNjE2YzBhMGY3ZTE4ZTZjYmI4NDQxYmYz
MGFlMzFmZTY0ZmYyMDI5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkJh
Y2tGb3J3YXJkTGlzdEl0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJCYWNr
Rm9yd2FyZExpc3RJdGVtLmNwcApAQCAtMzQsMTEgKzM0LDExIEBAIHN0YXRpYyB1aW50NjRfdCBo
aWdoZXN0VXNlZEl0ZW1JRCA9IDA7CiAKIFBhc3NSZWZQdHI8V2ViQmFja0ZvcndhcmRMaXN0SXRl
bT4gV2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6Y3JlYXRlKEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0
ZSBiYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUsIHVpbnQ2NF90IHBhZ2VJRCkKIHsKLSAgICByZXR1
cm4gYWRvcHRSZWYobmV3IFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0oV1RGOjptb3ZlKGJhY2tGb3J3
YXJkTGlzdEl0ZW1TdGF0ZSksIHBhZ2VJRCkpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2Vi
QmFja0ZvcndhcmRMaXN0SXRlbShXVEZNb3ZlKGJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSksIHBh
Z2VJRCkpOwogfQogCiBXZWJCYWNrRm9yd2FyZExpc3RJdGVtOjpXZWJCYWNrRm9yd2FyZExpc3RJ
dGVtKEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSBiYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUsIHVp
bnQ2NF90IHBhZ2VJRCkKLSAgICA6IG1faXRlbVN0YXRlKFdURjo6bW92ZShiYWNrRm9yd2FyZExp
c3RJdGVtU3RhdGUpKQorICAgIDogbV9pdGVtU3RhdGUoV1RGTW92ZShiYWNrRm9yd2FyZExpc3RJ
dGVtU3RhdGUpKQogICAgICwgbV9wYWdlSUQocGFnZUlEKQogewogICAgIGlmIChtX2l0ZW1TdGF0
ZS5pZGVudGlmaWVyID4gaGlnaGVzdFVzZWRJdGVtSUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5oIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uaAppbmRleCA0MDkyYjAzZTNlYTFhODQzN2ExOTkw
NGVhZDEzMzQ4MmNlMmI5NzIwLi44MTAxODY1Zjk3NDdmODljOTkxYjc4MjRlMzljYWQyZTRlNTI5
MGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0
SXRlbS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVt
LmgKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogICAgIGNvbnN0IEJhY2tGb3J3YXJkTGlzdEl0
ZW1TdGF0ZSYgaXRlbVN0YXRlKCkgeyByZXR1cm4gbV9pdGVtU3RhdGU7IH0KICAgICB1aW50NjRf
dCBwYWdlSUQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VJRDsgfQogCi0gICAgdm9pZCBzZXRQYWdl
U3RhdGUoUGFnZVN0YXRlIHBhZ2VTdGF0ZSkgeyBtX2l0ZW1TdGF0ZS5wYWdlU3RhdGUgPSBXVEY6
Om1vdmUocGFnZVN0YXRlKTsgfQorICAgIHZvaWQgc2V0UGFnZVN0YXRlKFBhZ2VTdGF0ZSBwYWdl
U3RhdGUpIHsgbV9pdGVtU3RhdGUucGFnZVN0YXRlID0gV1RGTW92ZShwYWdlU3RhdGUpOyB9CiAK
ICAgICBjb25zdCBTdHJpbmcmIG9yaWdpbmFsVVJMKCkgY29uc3QgeyByZXR1cm4gbV9pdGVtU3Rh
dGUucGFnZVN0YXRlLm1haW5GcmFtZVN0YXRlLm9yaWdpbmFsVVJMU3RyaW5nOyB9CiAgICAgY29u
c3QgU3RyaW5nJiB1cmwoKSBjb25zdCB7IHJldHVybiBtX2l0ZW1TdGF0ZS5wYWdlU3RhdGUubWFp
bkZyYW1lU3RhdGUudXJsU3RyaW5nOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvV2ViQ29tcGlsZWRDb250ZW50RXh0ZW5zaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9XZWJDb21waWxlZENvbnRlbnRFeHRlbnNpb24uY3BwCmluZGV4IDU3ZTNhNTZiODEzZDVmZDg4
Y2M5OTMyNzAwZjJiMmNkYzdkNjg0ZTUuLjhhYThjZTkyNTllMzNlZmFjMDQ1ODFmODYwM2MwM2Q0
YTVjOTI0NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb21waWxlZENv
bnRlbnRFeHRlbnNpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb21waWxl
ZENvbnRlbnRFeHRlbnNpb24uY3BwCkBAIC0zMiwxMSArMzIsMTEgQEAgbmFtZXNwYWNlIFdlYktp
dCB7CiAKIFJlZjxXZWJDb21waWxlZENvbnRlbnRFeHRlbnNpb24+IFdlYkNvbXBpbGVkQ29udGVu
dEV4dGVuc2lvbjo6Y3JlYXRlKFdlYkNvbXBpbGVkQ29udGVudEV4dGVuc2lvbkRhdGEmJiBkYXRh
KQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkNvbXBpbGVkQ29udGVudEV4dGVuc2lv
bihXVEY6Om1vdmUoZGF0YSkpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJDb21waWxl
ZENvbnRlbnRFeHRlbnNpb24oV1RGTW92ZShkYXRhKSkpOwogfQogCiBXZWJDb21waWxlZENvbnRl
bnRFeHRlbnNpb246OldlYkNvbXBpbGVkQ29udGVudEV4dGVuc2lvbihXZWJDb21waWxlZENvbnRl
bnRFeHRlbnNpb25EYXRhJiYgZGF0YSkKLSAgICA6IG1fZGF0YShXVEY6Om1vdmUoZGF0YSkpCisg
ICAgOiBtX2RhdGEoV1RGTW92ZShkYXRhKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvU2hhcmVkL1dlYkNvbXBpbGVkQ29udGVudEV4dGVuc2lvbkRhdGEuaCBiL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9XZWJDb21waWxlZENvbnRlbnRFeHRlbnNpb25EYXRhLmgKaW5kZXggYmQ1
MTM3YjRiYzI2NDY2ZWJiZTljOWIyYzYyOWI0MThhOGYxMmEzMy4uYzA3YTFkYTBmNzhjM2YwYjAw
YzhkZjI5ZmMwMWJiZjIxZDgzZDRlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L1dlYkNvbXBpbGVkQ29udGVudEV4dGVuc2lvbkRhdGEuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvV2ViQ29tcGlsZWRDb250ZW50RXh0ZW5zaW9uRGF0YS5oCkBAIC00Niw3ICs0Niw3IEBA
IHB1YmxpYzoKICAgICB9CiAgICAgCiAgICAgV2ViQ29tcGlsZWRDb250ZW50RXh0ZW5zaW9uRGF0
YShSZWZQdHI8U2hhcmVkTWVtb3J5PiYmIGRhdGEsIE5ldHdvcmtDYWNoZTo6RGF0YSBmaWxlRGF0
YSwgdW5zaWduZWQgYWN0aW9uc09mZnNldCwgdW5zaWduZWQgYWN0aW9uc1NpemUsIHVuc2lnbmVk
IGZpbHRlcnNXaXRob3V0RG9tYWluc0J5dGVjb2RlT2Zmc2V0LCB1bnNpZ25lZCBmaWx0ZXJzV2l0
aG91dERvbWFpbnNCeXRlY29kZVNpemUsIHVuc2lnbmVkIGZpbHRlcnNXaXRoRG9tYWluc0J5dGVj
b2RlT2Zmc2V0LCB1bnNpZ25lZCBmaWx0ZXJzV2l0aERvbWFpbnNCeXRlY29kZVNpemUsIHVuc2ln
bmVkIGRvbWFpbkZpbHRlcnNCeXRlY29kZU9mZnNldCwgdW5zaWduZWQgZG9tYWluRmlsdGVyc0J5
dGVjb2RlU2l6ZSkKLSAgICAgICAgOiBkYXRhKFdURjo6bW92ZShkYXRhKSkKKyAgICAgICAgOiBk
YXRhKFdURk1vdmUoZGF0YSkpCiAgICAgICAgICwgZmlsZURhdGEoZmlsZURhdGEpCiAgICAgICAg
ICwgYWN0aW9uc09mZnNldChhY3Rpb25zT2Zmc2V0KQogICAgICAgICAsIGFjdGlvbnNTaXplKGFj
dGlvbnNTaXplKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvbnRleHRN
ZW51SXRlbS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29udGV4dE1lbnVJdGVtLmNw
cAppbmRleCBmZGNlNzgyMzAyZWUyZDc2ZjNhOTg1YjQ0ZGQ2MGExNmFhYTEwYTI0Li42OTk2NTFj
ZmRkM2ZhZGZkODc1OWViZmVlYmU0NmQxMGY5MDA1ZWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvV2ViQ29udGV4dE1lbnVJdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvV2ViQ29udGV4dE1lbnVJdGVtLmNwcApAQCAtNzMsNyArNzMsNyBAQCBSZWY8QVBJOjpB
cnJheT4gV2ViQ29udGV4dE1lbnVJdGVtOjpzdWJtZW51SXRlbXNBc0FQSUFycmF5KCkgY29uc3QK
ICAgICBmb3IgKGNvbnN0IGF1dG8mIGl0ZW0gOiBtX3dlYkNvbnRleHRNZW51SXRlbURhdGEuc3Vi
bWVudSgpKQogICAgICAgICBzdWJtZW51SXRlbXMudW5jaGVja2VkQXBwZW5kKFdlYkNvbnRleHRN
ZW51SXRlbTo6Y3JlYXRlKGl0ZW0pKTsKIAotICAgIHJldHVybiBBUEk6OkFycmF5OjpjcmVhdGUo
V1RGOjptb3ZlKHN1Ym1lbnVJdGVtcykpOworICAgIHJldHVybiBBUEk6OkFycmF5OjpjcmVhdGUo
V1RGTW92ZShzdWJtZW51SXRlbXMpKTsKIH0KIAogQVBJOjpPYmplY3QqIFdlYkNvbnRleHRNZW51
SXRlbTo6dXNlckRhdGEoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRleCA1NTI5OWQ5NzQzY2U3MTJjMmMzODgwMGMyODk2YTBi
Yjc1MmUzNDhiLi5lN2YzYzNjMjIzYzg3ZmRmZjU1MzA4YzQ0MGE4Y2U4YzVhODNkMWRkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAt
MTQ2OCw3ICsxNDY4LDcgQEAgYm9vbCBBcmd1bWVudENvZGVyPFVzZXJTdHlsZVNoZWV0Pjo6ZGVj
b2RlKEFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgVXNlclN0eWxlU2gKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlRW51bShsZXZlbCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHVzZXJT
dHlsZVNoZWV0ID0gVXNlclN0eWxlU2hlZXQoc291cmNlLCB1cmwsIFdURjo6bW92ZSh3aGl0ZWxp
c3QpLCBXVEY6Om1vdmUoYmxhY2tsaXN0KSwgaW5qZWN0ZWRGcmFtZXMsIGxldmVsKTsKKyAgICB1
c2VyU3R5bGVTaGVldCA9IFVzZXJTdHlsZVNoZWV0KHNvdXJjZSwgdXJsLCBXVEZNb3ZlKHdoaXRl
bGlzdCksIFdURk1vdmUoYmxhY2tsaXN0KSwgaW5qZWN0ZWRGcmFtZXMsIGxldmVsKTsKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMTUzNCw3ICsxNTM0LDcgQEAgYm9vbCBBcmd1bWVudENvZGVy
PFVzZXJTY3JpcHQ+OjpkZWNvZGUoQXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBVc2VyU2NyaXB0
JiB1c2UKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlRW51bShpbmplY3RlZEZyYW1lcykpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgIHVzZXJTY3JpcHQgPSBVc2VyU2NyaXB0KHNvdXJjZSwg
dXJsLCBXVEY6Om1vdmUod2hpdGVsaXN0KSwgV1RGOjptb3ZlKGJsYWNrbGlzdCksIGluamVjdGlv
blRpbWUsIGluamVjdGVkRnJhbWVzKTsKKyAgICB1c2VyU2NyaXB0ID0gVXNlclNjcmlwdChzb3Vy
Y2UsIHVybCwgV1RGTW92ZSh3aGl0ZWxpc3QpLCBXVEZNb3ZlKGJsYWNrbGlzdCksIGluamVjdGlv
blRpbWUsIGluamVjdGVkRnJhbWVzKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMTgxNiw3
ICsxODE2LDcgQEAgYm9vbCBBcmd1bWVudENvZGVyPEZpbHRlck9wZXJhdGlvbnM+OjpkZWNvZGUo
QXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBGaWx0ZXJPcGUKICAgICAgICAgUmVmUHRyPEZpbHRl
ck9wZXJhdGlvbj4gZmlsdGVyOwogICAgICAgICBpZiAoIWRlY29kZUZpbHRlck9wZXJhdGlvbihk
ZWNvZGVyLCBmaWx0ZXIpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBmaWx0
ZXJzLm9wZXJhdGlvbnMoKS5hcHBlbmQoV1RGOjptb3ZlKGZpbHRlcikpOworICAgICAgICBmaWx0
ZXJzLm9wZXJhdGlvbnMoKS5hcHBlbmQoV1RGTW92ZShmaWx0ZXIpKTsKICAgICB9CiAKICAgICBy
ZXR1cm4gdHJ1ZTsKQEAgLTE5MTEsNyArMTkxMSw3IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxCbG9i
UGFydD46OmRlY29kZShBcmd1bWVudERlY29kZXImIGRlY29kZXIsIEJsb2JQYXJ0JiBibG9iUGFy
CiAgICAgICAgIFZlY3RvcjxjaGFyPiBkYXRhOwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KGRhdGEpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBibG9iUGFydCA9IEJs
b2JQYXJ0KFdURjo6bW92ZShkYXRhKSk7CisgICAgICAgIGJsb2JQYXJ0ID0gQmxvYlBhcnQoV1RG
TW92ZShkYXRhKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIEJsb2JQYXJ0OjpC
bG9iOiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViS2V5Ym9hcmRFdmVu
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViS2V5Ym9hcmRFdmVudC5jcHAKaW5kZXgg
ODBkZTUwYmIyMzFlNzJlODMyNDk4N2JkMWQ0NDdmMzhkNWUzNGEyZS4uNDhiMjIyNDM0YzQxYjE4
M2UzZjFhMTBjOTI5MTZmNjY1M2UyNTFlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL1dlYktleWJvYXJkRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJL
ZXlib2FyZEV2ZW50LmNwcApAQCAtNjUsNyArNjUsNyBAQCBXZWJLZXlib2FyZEV2ZW50OjpXZWJL
ZXlib2FyZEV2ZW50KFR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBTdHJpbmcm
CiAgICAgLCBtX25hdGl2ZVZpcnR1YWxLZXlDb2RlKG5hdGl2ZVZpcnR1YWxLZXlDb2RlKQogICAg
ICwgbV9tYWNDaGFyQ29kZSgwKQogICAgICwgbV9oYW5kbGVkQnlJbnB1dE1ldGhvZChoYW5kbGVk
QnlJbnB1dE1ldGhvZCkKLSAgICAsIG1fY29tbWFuZHMoV1RGOjptb3ZlKGNvbW1hbmRzKSkKKyAg
ICAsIG1fY29tbWFuZHMoV1RGTW92ZShjb21tYW5kcykpCiAgICAgLCBtX2lzQXV0b1JlcGVhdChm
YWxzZSkKICAgICAsIG1faXNLZXlwYWQoaXNLZXlwYWQpCiAgICAgLCBtX2lzU3lzdGVtS2V5KGZh
bHNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByZWZlcmVuY2VzU3Rv
cmUuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcmVmZXJlbmNlc1N0b3JlLmgKaW5kZXgg
Yjk1MmQ4NjliOGQ4ZDg4MTgwNzdlYThmYjFkMzA2N2UxM2NiZmJhNS4uOGI0NmU3MTQ4OGE4YmIx
M2YzZTE0MzgzNTJhZTZmNWNhNDc4Yjg2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL1dlYlByZWZlcmVuY2VzU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2Vi
UHJlZmVyZW5jZXNTdG9yZS5oCkBAIC04OCw3ICs4OCw3IEBAIHN0cnVjdCBXZWJQcmVmZXJlbmNl
c1N0b3JlIHsKICAgICAgICAgICAgIGNhc2UgVHlwZTo6Tm9uZToKICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgIGNhc2UgVHlwZTo6U3RyaW5nOgotICAgICAgICAgICAgICAgIG5l
dyAoJm1fc3RyaW5nKSBTdHJpbmcoV1RGOjptb3ZlKHZhbHVlLm1fc3RyaW5nKSk7CisgICAgICAg
ICAgICAgICAgbmV3ICgmbV9zdHJpbmcpIFN0cmluZyhXVEZNb3ZlKHZhbHVlLm1fc3RyaW5nKSk7
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFR5cGU6OkJvb2w6CiAg
ICAgICAgICAgICAgICAgbV9ib29sID0gdmFsdWUubV9ib29sOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvU2hhcmVkL1dlYlJlbmRlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9XZWJSZW5kZXJMYXllci5jcHAKaW5kZXggYmFhMDg2ZWZlZmEzMDgyMjhiZGM2YjYxYjU3MzY0
MzUyMjZiYjJhNS4uOWNjMTBlY2E0NmM0NGUxMzEwYzJiNjc3MzY2YjQwMjczY2E0NDk2MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlJlbmRlckxheWVyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUmVuZGVyTGF5ZXIuY3BwCkBAIC03OSw3ICs3OSw3IEBA
IFBhc3NSZWZQdHI8QVBJOjpBcnJheT4gV2ViUmVuZGVyTGF5ZXI6OmNyZWF0ZUFycmF5RnJvbUxh
eWVyTGlzdChWZWN0b3I8UmVuZGVyTGF5CiAgICAgZm9yIChjb25zdCBhdXRvJiBsYXllciA6ICps
aXN0KQogICAgICAgICBsYXllcnMudW5jaGVja2VkQXBwZW5kKGFkb3B0UmVmKG5ldyBXZWJSZW5k
ZXJMYXllcihsYXllcikpKTsKIAotICAgIHJldHVybiBBUEk6OkFycmF5OjpjcmVhdGUoV1RGOjpt
b3ZlKGxheWVycykpOworICAgIHJldHVybiBBUEk6OkFycmF5OjpjcmVhdGUoV1RGTW92ZShsYXll
cnMpKTsKIH0KIAogV2ViUmVuZGVyTGF5ZXI6OldlYlJlbmRlckxheWVyKFJlbmRlckxheWVyKiBs
YXllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJSZW5kZXJPYmplY3Qu
Y3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlJlbmRlck9iamVjdC5jcHAKaW5kZXggZDE4
ZDIwODlhYzQxMTBkYzE5OTU4ZWQ2ZDhmMzE5ZmE5NGFlN2EzYS4uZTU0YzZhYjRmMjBkYzdjYjM2
Y2IwMzNmZGZjMGE3ZDhiODBiOTFiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L1dlYlJlbmRlck9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlJlbmRl
ck9iamVjdC5jcHAKQEAgLTgxLDcgKzgxLDcgQEAgV2ViUmVuZGVyT2JqZWN0OjpXZWJSZW5kZXJP
YmplY3QoUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgYm9vbCBzaG91bGRJbmNsdWRlRGVzY2UKICAg
ICAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMCwgc2l6ZSA9IGVsZW1lbnQuY2xhc3NOYW1l
cygpLnNpemUoKTsgaSA8IHNpemU7ICsraSkKICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1l
cy5hcHBlbmQoQVBJOjpTdHJpbmc6OmNyZWF0ZShlbGVtZW50LmNsYXNzTmFtZXMoKVtpXSkpOwog
Ci0gICAgICAgICAgICAgICAgbV9lbGVtZW50Q2xhc3NOYW1lcyA9IEFQSTo6QXJyYXk6OmNyZWF0
ZShXVEY6Om1vdmUoY2xhc3NOYW1lcykpOworICAgICAgICAgICAgICAgIG1fZWxlbWVudENsYXNz
TmFtZXMgPSBBUEk6OkFycmF5OjpjcmVhdGUoV1RGTW92ZShjbGFzc05hbWVzKSk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KIApAQCAtMTE1LDcgKzExNSw3IEBAIFdlYlJlbmRlck9iamVjdDo6
V2ViUmVuZGVyT2JqZWN0KFJlbmRlck9iamVjdCogcmVuZGVyZXIsIGJvb2wgc2hvdWxkSW5jbHVk
ZURlc2NlCiAKICAgICBmb3IgKFJlbmRlck9iamVjdCogY29yZUNoaWxkID0gcmVuZGVyZXItPmZp
cnN0Q2hpbGRTbG93KCk7IGNvcmVDaGlsZDsgY29yZUNoaWxkID0gY29yZUNoaWxkLT5uZXh0U2li
bGluZygpKSB7CiAgICAgICAgIFJlZlB0cjxXZWJSZW5kZXJPYmplY3Q+IGNoaWxkID0gYWRvcHRS
ZWYobmV3IFdlYlJlbmRlck9iamVjdChjb3JlQ2hpbGQsIHNob3VsZEluY2x1ZGVEZXNjZW5kYW50
cykpOwotICAgICAgICBjaGlsZHJlbi5hcHBlbmQoV1RGOjptb3ZlKGNoaWxkKSk7CisgICAgICAg
IGNoaWxkcmVuLmFwcGVuZChXVEZNb3ZlKGNoaWxkKSk7CiAgICAgfQogCiAgICAgaWYgKGlzPFJl
bmRlcldpZGdldD4oKnJlbmRlcmVyKSkgewpAQCAtMTI1LDEzICsxMjUsMTMgQEAgV2ViUmVuZGVy
T2JqZWN0OjpXZWJSZW5kZXJPYmplY3QoUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgYm9vbCBzaG91
bGRJbmNsdWRlRGVzY2UKICAgICAgICAgICAgICAgICBpZiAoUmVuZGVyVmlldyogY29yZUNvbnRl
bnRSZW5kZXJlciA9IGZyYW1lVmlldy5mcmFtZSgpLmNvbnRlbnRSZW5kZXJlcigpKSB7CiAgICAg
ICAgICAgICAgICAgICAgIFJlZlB0cjxXZWJSZW5kZXJPYmplY3Q+IGNvbnRlbnRSZW5kZXJlciA9
IGFkb3B0UmVmKG5ldyBXZWJSZW5kZXJPYmplY3QoY29yZUNvbnRlbnRSZW5kZXJlciwgc2hvdWxk
SW5jbHVkZURlc2NlbmRhbnRzKSk7CiAKLSAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4uYXBw
ZW5kKFdURjo6bW92ZShjb250ZW50UmVuZGVyZXIpKTsKKyAgICAgICAgICAgICAgICAgICAgY2hp
bGRyZW4uYXBwZW5kKFdURk1vdmUoY29udGVudFJlbmRlcmVyKSk7CiAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogCi0gICAgbV9jaGlsZHJlbiA9IEFQ
STo6QXJyYXk6OmNyZWF0ZShXVEY6Om1vdmUoY2hpbGRyZW4pKTsKKyAgICBtX2NoaWxkcmVuID0g
QVBJOjpBcnJheTo6Y3JlYXRlKFdURk1vdmUoY2hpbGRyZW4pKTsKIH0KIAogV2ViUmVuZGVyT2Jq
ZWN0OjpXZWJSZW5kZXJPYmplY3QoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGVs
ZW1lbnRUYWdOYW1lLCBjb25zdCBTdHJpbmcmIGVsZW1lbnRJRCwgUGFzc1JlZlB0cjxBUEk6OkFy
cmF5PiBlbGVtZW50Q2xhc3NOYW1lcywgV2ViQ29yZTo6SW50UG9pbnQgYWJzb2x1dGVQb3NpdGlv
biwgV2ViQ29yZTo6SW50UmVjdCBmcmFtZVJlY3QsIGNvbnN0IFN0cmluZyYgdGV4dFNuaXBwZXQs
IHVuc2lnbmVkIHRleHRMZW5ndGgsIFBhc3NSZWZQdHI8QVBJOjpBcnJheT4gY2hpbGRyZW4pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViVG91Y2hFdmVudC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvV2ViVG91Y2hFdmVudC5jcHAKaW5kZXggOTFkY2UzYTA5NDQzMTg2
YjI1MjAxOTMwMjAzYzJiMGNkOTIxOTAyNi4uNDAyM2ExODE1YzQxOTZhNjAyMzI5MWYxMzg4NTNj
MjI3Y2I0OWFmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlRvdWNoRXZl
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJUb3VjaEV2ZW50LmNwcApAQCAt
MzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogV2ViVG91Y2hFdmVudDo6V2ViVG91
Y2hFdmVudChXZWJFdmVudDo6VHlwZSB0eXBlLCBWZWN0b3I8V2ViUGxhdGZvcm1Ub3VjaFBvaW50
PiYmIHRvdWNoUG9pbnRzLCBNb2RpZmllcnMgbW9kaWZpZXJzLCBkb3VibGUgdGltZXN0YW1wKQog
ICAgIDogV2ViRXZlbnQodHlwZSwgbW9kaWZpZXJzLCB0aW1lc3RhbXApCi0gICAgLCBtX3RvdWNo
UG9pbnRzKFdURjo6bW92ZSh0b3VjaFBvaW50cykpCisgICAgLCBtX3RvdWNoUG9pbnRzKFdURk1v
dmUodG91Y2hQb2ludHMpKQogewogICAgIEFTU0VSVChpc1RvdWNoRXZlbnRUeXBlKHR5cGUpKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9lZmwvV2ViRXZlbnRGYWN0b3J5
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9lZmwvV2ViRXZlbnRGYWN0b3J5LmNwcAppbmRl
eCAyMTEwMDcxMzE2ZGE3ZjZlYWQ0NDE4MmY3ZGJjNjFiN2NiOGJlNTFlLi4wYmExMWUwMzdiNDJl
MWNmYTAyMjMwYzY0MmY5ZmVkMzM3MmU3ODNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvZWZsL1dlYkV2ZW50RmFjdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVk
L2VmbC9XZWJFdmVudEZhY3RvcnkuY3BwCkBAIC0yNzUsNyArMjc1LDcgQEAgV2ViVG91Y2hFdmVu
dCBXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYlRvdWNoRXZlbnQoY29uc3QgRXdrVG91Y2hFdmVu
dCogZXZlbnQsIGMKICAgICAgICAgICAgIHRvdWNoUG9pbnRzLnVuY2hlY2tlZEFwcGVuZChXZWJQ
bGF0Zm9ybVRvdWNoUG9pbnQocG9pbnQtPmlkKCksIHRvV2ViUGxhdGZvcm1Ub3VjaFBvaW50U3Rh
dGUocG9pbnQtPnN0YXRlKCkpLCB0b0ludFBvaW50KHBvaW50LT5zY3JlZW5Qb3NpdGlvbigpKSwg
dG9XZWJDb250ZW50Lm1hcFBvaW50KHRvSW50UG9pbnQocG9pbnQtPnBvc2l0aW9uKCkpKSwgdG9J
bnRTaXplKHBvaW50LT5yYWRpdXMoKSksIHBvaW50LT5yb3RhdGlvbkFuZ2xlKCksIHBvaW50LT5m
b3JjZUZhY3RvcigpKSk7CiAgICAgfQogCi0gICAgcmV0dXJuIFdlYlRvdWNoRXZlbnQodG9XZWJF
dmVudFR5cGUoZXZlbnQtPmV2ZW50VHlwZSgpKSwgV1RGOjptb3ZlKHRvdWNoUG9pbnRzKSwgdG9X
ZWJFdmVudE1vZGlmaWVycyhldmVudC0+bW9kaWZpZXJzKCkpLCBldmVudC0+dGltZXN0YW1wKCkp
OworICAgIHJldHVybiBXZWJUb3VjaEV2ZW50KHRvV2ViRXZlbnRUeXBlKGV2ZW50LT5ldmVudFR5
cGUoKSksIFdURk1vdmUodG91Y2hQb2ludHMpLCB0b1dlYkV2ZW50TW9kaWZpZXJzKGV2ZW50LT5t
b2RpZmllcnMoKSksIGV2ZW50LT50aW1lc3RhbXAoKSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9OYXRpdmVXZWJLZXlib2FyZEV2ZW50R3RrLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsvTmF0aXZlV2ViS2V5Ym9hcmRFdmVudEd0ay5j
cHAKaW5kZXggYjhlZDIxMTRkNWQ1ZmFkYmNmODUwM2U0Y2ZlNGIzMWI3YTYxNTg4ZS4uODM0YTdl
MDkxOGMxOTg0MzJlNTYxYzE2NDdmMjE2YWE0ZmIwNTgyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvU2hhcmVkL2d0ay9OYXRpdmVXZWJLZXlib2FyZEV2ZW50R3RrLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL05hdGl2ZVdlYktleWJvYXJkRXZlbnRHdGsuY3BwCkBAIC0z
Niw3ICszNiw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogbmFtZXNwYWNlIFdlYktpdCB7
CiAKIE5hdGl2ZVdlYktleWJvYXJkRXZlbnQ6Ok5hdGl2ZVdlYktleWJvYXJkRXZlbnQoR2RrRXZl
bnQqIGV2ZW50LCBjb25zdCBXZWJDb3JlOjpDb21wb3NpdGlvblJlc3VsdHMmIGNvbXBvc2l0aW9u
UmVzdWx0cywgSW5wdXRNZXRob2RGaWx0ZXI6OkV2ZW50RmFrZWRGb3JDb21wb3NpdGlvbiBmYWtl
ZCwgVmVjdG9yPFN0cmluZz4mJiBjb21tYW5kcykKLSAgICA6IFdlYktleWJvYXJkRXZlbnQoV2Vi
RXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJLZXlib2FyZEV2ZW50KGV2ZW50LCBjb21wb3NpdGlvblJl
c3VsdHMsIFdURjo6bW92ZShjb21tYW5kcykpKQorICAgIDogV2ViS2V5Ym9hcmRFdmVudChXZWJF
dmVudEZhY3Rvcnk6OmNyZWF0ZVdlYktleWJvYXJkRXZlbnQoZXZlbnQsIGNvbXBvc2l0aW9uUmVz
dWx0cywgV1RGTW92ZShjb21tYW5kcykpKQogICAgICwgbV9uYXRpdmVFdmVudChnZGtfZXZlbnRf
Y29weShldmVudCkpCiAgICAgLCBtX2NvbXBvc2l0aW9uUmVzdWx0cyhjb21wb3NpdGlvblJlc3Vs
dHMpCiAgICAgLCBtX2Zha2VFdmVudEZvckNvbXBvc2l0aW9uKGZha2VkID09IElucHV0TWV0aG9k
RmlsdGVyOjpFdmVudEZha2VkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL2d0
ay9OYXRpdmVXZWJUb3VjaEV2ZW50R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsv
TmF0aXZlV2ViVG91Y2hFdmVudEd0ay5jcHAKaW5kZXggMDU4MDYzMTY0ZTY4YTlhZjc2MzJmZDVj
ZjIzNGNhMDVmZDE1ODczYy4uNWVjNDc2YjJkYTEzNTMwMWY5YTQzM2JjNjc5YWYzNjkyZWEzNTIz
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9OYXRpdmVXZWJUb3VjaEV2
ZW50R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL05hdGl2ZVdlYlRvdWNo
RXZlbnRHdGsuY3BwCkBAIC0zNCw3ICszNCw3IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogTmF0
aXZlV2ViVG91Y2hFdmVudDo6TmF0aXZlV2ViVG91Y2hFdmVudChHZGtFdmVudCogZXZlbnQsIFZl
Y3RvcjxXZWJQbGF0Zm9ybVRvdWNoUG9pbnQ+JiYgdG91Y2hQb2ludHMpCi0gICAgOiBXZWJUb3Vj
aEV2ZW50KFdlYkV2ZW50RmFjdG9yeTo6Y3JlYXRlV2ViVG91Y2hFdmVudChldmVudCwgV1RGOjpt
b3ZlKHRvdWNoUG9pbnRzKSkpCisgICAgOiBXZWJUb3VjaEV2ZW50KFdlYkV2ZW50RmFjdG9yeTo6
Y3JlYXRlV2ViVG91Y2hFdmVudChldmVudCwgV1RGTW92ZSh0b3VjaFBvaW50cykpKQogICAgICwg
bV9uYXRpdmVFdmVudChnZGtfZXZlbnRfY29weShldmVudCkpCiB7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL1dlYkNvbnRleHRNZW51SXRlbUd0ay5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL1dlYkNvbnRleHRNZW51SXRlbUd0ay5jcHAKaW5kZXggNzBh
MmRjY2Y3MjgxZWU1MThhNjEzMjI2M2RlODI4YjAzOWJjYjhhMi4uNGJhZjYzZmU5ZGUzNTNhMzNl
OTg5NzM4ZDljMWJiM2JhMzQ0YjJhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L2d0ay9XZWJDb250ZXh0TWVudUl0ZW1HdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9ndGsvV2ViQ29udGV4dE1lbnVJdGVtR3RrLmNwcApAQCAtMTM1LDcgKzEzNSw3IEBAIFdlYkNv
bnRleHRNZW51SXRlbUd0azo6V2ViQ29udGV4dE1lbnVJdGVtR3RrKGNvbnN0IFdlYkNvbnRleHRN
ZW51SXRlbUd0ayYgZGF0YSwKICAgICA6IFdlYkNvbnRleHRNZW51SXRlbURhdGEoQWN0aW9uVHlw
ZSwgZGF0YS5hY3Rpb24oKSwgZGF0YS50aXRsZSgpLCBkYXRhLmVuYWJsZWQoKSwgZmFsc2UpCiB7
CiAgICAgbV9hY3Rpb24gPSBkYXRhLmd0a0FjdGlvbigpOwotICAgIG1fc3VibWVudUl0ZW1zID0g
V1RGOjptb3ZlKHN1Ym1lbnUpOworICAgIG1fc3VibWVudUl0ZW1zID0gV1RGTW92ZShzdWJtZW51
KTsKIH0KIAogV2ViQ29udGV4dE1lbnVJdGVtR3RrOjpXZWJDb250ZXh0TWVudUl0ZW1HdGsoR3Rr
QWN0aW9uKiBhY3Rpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL1dl
YkV2ZW50RmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL1dlYkV2ZW50RmFj
dG9yeS5jcHAKaW5kZXggOWNmOTFhYWVhOTkxZWI2ZDk4NDI3M2Q2MTBjNTY0NjJiYjdjNmNlNi4u
ZjdlODk3ZTY5MDcxNjBmMmI2YzIwYzhhMzRhMDlhNWEyMDFmZjhjZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9XZWJFdmVudEZhY3RvcnkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9ndGsvV2ViRXZlbnRGYWN0b3J5LmNwcApAQCAtMTkwLDcgKzE5MCw3IEBA
IFdlYktleWJvYXJkRXZlbnQgV2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJLZXlib2FyZEV2ZW50
KGNvbnN0IEdka0V2ZW50KiBldmVudCwKICAgICAgICAgUGxhdGZvcm1LZXlib2FyZEV2ZW50Ojp3
aW5kb3dzS2V5Q29kZUZvckdka0tleUNvZGUoZXZlbnQtPmtleS5rZXl2YWwpLAogICAgICAgICBz
dGF0aWNfY2FzdDxpbnQ+KGV2ZW50LT5rZXkua2V5dmFsKSwKICAgICAgICAgY29tcG9zaXRpb25S
ZXN1bHRzLmNvbXBvc2l0aW9uVXBkYXRlZCgpLAotICAgICAgICBXVEY6Om1vdmUoY29tbWFuZHMp
LAorICAgICAgICBXVEZNb3ZlKGNvbW1hbmRzKSwKICAgICAgICAgaXNHZGtLZXlDb2RlRnJvbUtl
eVBhZChldmVudC0+a2V5LmtleXZhbCksCiAgICAgICAgIG1vZGlmaWVyc0ZvckV2ZW50KGV2ZW50
KSwKICAgICAgICAgZ2RrX2V2ZW50X2dldF90aW1lKGV2ZW50KSk7CkBAIC0yMTUsNyArMjE1LDcg
QEAgV2ViVG91Y2hFdmVudCBXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYlRvdWNoRXZlbnQoY29u
c3QgR2RrRXZlbnQqIGV2ZW50LCBWZWN0b3IKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAgICAgfQogCi0gICAgcmV0dXJuIFdlYlRvdWNoRXZlbnQodHlwZSwgV1RGOjptb3ZlKHRvdWNo
UG9pbnRzKSwgbW9kaWZpZXJzRm9yRXZlbnQoZXZlbnQpLCBnZGtfZXZlbnRfZ2V0X3RpbWUoZXZl
bnQpKTsKKyAgICByZXR1cm4gV2ViVG91Y2hFdmVudCh0eXBlLCBXVEZNb3ZlKHRvdWNoUG9pbnRz
KSwgbW9kaWZpZXJzRm9yRXZlbnQoZXZlbnQpLCBnZGtfZXZlbnRfZ2V0X3RpbWUoZXZlbnQpKTsK
ICNlbHNlCiAgICAgcmV0dXJuIFdlYlRvdWNoRXZlbnQoKTsKICNlbmRpZiAvLyBHVEtfQVBJX1ZF
UlNJT05fMgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL2xpbnV4L1NlY2NvbXBG
aWx0ZXJzL09wZW5TeXNjYWxsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9saW51eC9TZWNj
b21wRmlsdGVycy9PcGVuU3lzY2FsbC5jcHAKaW5kZXggMDRlZWYwNDJmOWYyZTk0ZDE3OTI0M2Uw
OGI0N2ZiMTkyZjhjOGFiNi4uMThkZjUwOGU5MDBkYmU5ODJkYmFkOTk0NzEwOWExMDJiNDk3ZmU5
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL2xpbnV4L1NlY2NvbXBGaWx0ZXJz
L09wZW5TeXNjYWxsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbGludXgvU2VjY29t
cEZpbHRlcnMvT3BlblN5c2NhbGwuY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIHN0ZDo6dW5pcXVlX3B0
cjxTeXNjYWxsPiBPcGVuU3lzY2FsbDo6Y3JlYXRlRnJvbU9wZW5hdENvbnRleHQobWNvbnRleHRf
dCogY29udGV4CiAKICAgICBpZiAocGF0aFswXSA9PSAnLycpIHsKICAgICAgICAgb3Blbi0+c2V0
UGF0aChwYXRoKTsKLSAgICAgICAgcmV0dXJuIFdURjo6bW92ZShvcGVuKTsKKyAgICAgICAgcmV0
dXJuIFdURk1vdmUob3Blbik7CiAgICAgfQogCiAgICAgc3RydWN0IHN0YXQgcGF0aFN0YXQ7CkBA
IC05MCw3ICs5MCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxTeXNjYWxsPiBPcGVuU3lzY2FsbDo6Y3Jl
YXRlRnJvbU9wZW5hdENvbnRleHQobWNvbnRleHRfdCogY29udGV4CiAgICAgc3ByaW50ZigmZmRQ
YXRoW3NpemVdLCAiLyVzIiwgcGF0aCk7CiAgICAgb3Blbi0+c2V0UGF0aChmZFBhdGgpOwogCi0g
ICAgcmV0dXJuIFdURjo6bW92ZShvcGVuKTsKKyAgICByZXR1cm4gV1RGTW92ZShvcGVuKTsKIH0K
IAogc3RkOjp1bmlxdWVfcHRyPFN5c2NhbGw+IE9wZW5TeXNjYWxsOjpjcmVhdGVGcm9tQ3JlYXRD
b250ZXh0KG1jb250ZXh0X3QqIGNvbnRleHQpCkBAIC0xMDIsNyArMTAyLDcgQEAgc3RkOjp1bmlx
dWVfcHRyPFN5c2NhbGw+IE9wZW5TeXNjYWxsOjpjcmVhdGVGcm9tQ3JlYXRDb250ZXh0KG1jb250
ZXh0X3QqIGNvbnRleHQKICAgICBvcGVuLT5zZXRNb2RlKGNvbnRleHQtPmdyZWdzW1JFR19BUkcx
XSk7CiAgICAgb3Blbi0+c2V0Q29udGV4dChjb250ZXh0KTsKIAotICAgIHJldHVybiBXVEY6Om1v
dmUob3Blbik7CisgICAgcmV0dXJuIFdURk1vdmUob3Blbik7CiB9CiAKIE9wZW5TeXNjYWxsOjpP
cGVuU3lzY2FsbChtY29udGV4dF90KiBjb250ZXh0KQpAQCAtMjAwLDcgKzIwMCw3IEBAIHZvaWQg
T3BlblN5c2NhbGxSZXN1bHQ6OmVuY29kZShJUEM6OkFyZ3VtZW50RW5jb2RlciYgZW5jb2Rlcikg
Y29uc3QKIAogICAgIGlmIChtX2ZkID49IDApIHsKICAgICAgICAgSVBDOjpBdHRhY2htZW50IGF0
dGFjaG1lbnQobV9mZCk7Ci0gICAgICAgIGVuY29kZXIuYWRkQXR0YWNobWVudChXVEY6Om1vdmUo
YXR0YWNobWVudCkpOworICAgICAgICBlbmNvZGVyLmFkZEF0dGFjaG1lbnQoV1RGTW92ZShhdHRh
Y2htZW50KSk7CiAgICAgfQogCiAgICAgZW5jb2RlciA8PCBtX2Vycm9yTnVtYmVyOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9PYmpDT2JqZWN0R3JhcGgubW0gYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvbWFjL09iakNPYmplY3RHcmFwaC5tbQppbmRleCA3Y2RjNDRmZTk0
Njg3YjZjZmI0ZjBkYTAwNzE4N2IzNmU3ZGU0NTY5Li40ZDRjMmI2NTgyNjY4YjZjYzdhZTY4Nzg4
NTJhYzU4MDE3ZjUzZGM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL09i
akNPYmplY3RHcmFwaC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL09iakNPYmpl
Y3RHcmFwaC5tbQpAQCAtMjM2LDcgKzIzNiw3IEBAIGJvb2wgT2JqQ09iamVjdEdyYXBoOjpkZWNv
ZGUoSVBDOjpBcmd1bWVudERlY29kZXImIGRlY29kZXIsIFJldGFpblB0cjxpZD4mIHJlc3VsCiAg
ICAgICAgICAgICBbYXJyYXkgYWRkT2JqZWN0OmVsZW1lbnQuZ2V0KCldOwogICAgICAgICB9CiAK
LSAgICAgICAgcmVzdWx0ID0gV1RGOjptb3ZlKGFycmF5KTsKKyAgICAgICAgcmVzdWx0ID0gV1RG
TW92ZShhcnJheSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApAQCAtMjQ1LDcgKzI0NSw3IEBA
IGJvb2wgT2JqQ09iamVjdEdyYXBoOjpkZWNvZGUoSVBDOjpBcmd1bWVudERlY29kZXImIGRlY29k
ZXIsIFJldGFpblB0cjxpZD4mIHJlc3VsCiAgICAgICAgIGlmICghSVBDOjpkZWNvZGUoZGVjb2Rl
ciwgZGF0YSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgcmVzdWx0ID0g
V1RGOjptb3ZlKGRhdGEpOworICAgICAgICByZXN1bHQgPSBXVEZNb3ZlKGRhdGEpOwogICAgICAg
ICBicmVhazsKICAgICB9CiAKQEAgLTI1NCw3ICsyNTQsNyBAQCBib29sIE9iakNPYmplY3RHcmFw
aDo6ZGVjb2RlKElQQzo6QXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBSZXRhaW5QdHI8aWQ+JiBy
ZXN1bAogICAgICAgICBpZiAoIUlQQzo6ZGVjb2RlKGRlY29kZXIsIGRhdGUpKQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIHJlc3VsdCA9IFdURjo6bW92ZShkYXRlKTsKKyAg
ICAgICAgcmVzdWx0ID0gV1RGTW92ZShkYXRlKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCkBA
IC0yODAsNyArMjgwLDcgQEAgYm9vbCBPYmpDT2JqZWN0R3JhcGg6OmRlY29kZShJUEM6OkFyZ3Vt
ZW50RGVjb2RlciYgZGVjb2RlciwgUmV0YWluUHRyPGlkPiYgcmVzdWwKICAgICAgICAgICAgIH0K
ICAgICAgICAgfQogCi0gICAgICAgIHJlc3VsdCA9IFdURjo6bW92ZShkaWN0aW9uYXJ5KTsKKyAg
ICAgICAgcmVzdWx0ID0gV1RGTW92ZShkaWN0aW9uYXJ5KTsKICAgICAgICAgYnJlYWs7CiAgICAg
fQogCkBAIC0yODksNyArMjg5LDcgQEAgYm9vbCBPYmpDT2JqZWN0R3JhcGg6OmRlY29kZShJUEM6
OkFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgUmV0YWluUHRyPGlkPiYgcmVzdWwKICAgICAgICAg
aWYgKCFJUEM6OmRlY29kZShkZWNvZGVyLCBudW1iZXIpKQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgICAgIHJlc3VsdCA9IFdURjo6bW92ZShudW1iZXIpOworICAgICAgICByZXN1
bHQgPSBXVEZNb3ZlKG51bWJlcik7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApAQCAtMjk4LDcg
KzI5OCw3IEBAIGJvb2wgT2JqQ09iamVjdEdyYXBoOjpkZWNvZGUoSVBDOjpBcmd1bWVudERlY29k
ZXImIGRlY29kZXIsIFJldGFpblB0cjxpZD4mIHJlc3VsCiAgICAgICAgIGlmICghSVBDOjpkZWNv
ZGUoZGVjb2Rlciwgc3RyaW5nKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAg
ICByZXN1bHQgPSBXVEY6Om1vdmUoc3RyaW5nKTsKKyAgICAgICAgcmVzdWx0ID0gV1RGTW92ZShz
dHJpbmcpOwogICAgICAgICBicmVhazsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9tYWMvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW0gYi9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvbWFjL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tCmluZGV4IDhiODg2NTY5MDll
ZGRlNWJmZjk5MTUwZDBhYTk0Zjc0NjJkMjhjYWQuLmFjZDA2YWMyOWZmMmI3NzY2ZDJkZTk4OTU0
N2M1ZmI2ODMxM2ExYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvUmVt
b3RlTGF5ZXJCYWNraW5nU3RvcmUubW0KKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9S
ZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbQpAQCAtNDI0LDcgKzQyNCw3IEBAIHZvaWQgUmVtb3Rl
TGF5ZXJCYWNraW5nU3RvcmU6OmFwcGx5QmFja2luZ1N0b3JlVG9MYXllcihDQUxheWVyICpsYXll
cikKIAogUmV0YWluUHRyPENHQ29udGV4dFJlZj4gUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OnRh
a2VGcm9udENvbnRleHRQZW5kaW5nRmx1c2goKQogewotICAgIHJldHVybiBXVEY6Om1vdmUobV9m
cm9udENvbnRleHRQZW5kaW5nRmx1c2gpOworICAgIHJldHVybiBXVEZNb3ZlKG1fZnJvbnRDb250
ZXh0UGVuZGluZ0ZsdXNoKTsKIH0KIAogI2lmIFVTRShJT1NVUkZBQ0UpCkBAIC00ODIsNyArNDgy
LDcgQEAgdm9pZCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6QnVmZmVyOjpkaXNjYXJkKCkKIHsK
ICNpZiBVU0UoSU9TVVJGQUNFKQogICAgIGlmIChzdXJmYWNlKQotICAgICAgICBJT1N1cmZhY2U6
Om1vdmVUb1Bvb2woV1RGOjptb3ZlKHN1cmZhY2UpKTsKKyAgICAgICAgSU9TdXJmYWNlOjptb3Zl
VG9Qb29sKFdURk1vdmUoc3VyZmFjZSkpOwogICAgIGlzVm9sYXRpbGUgPSBmYWxzZTsKICNlbmRp
ZgogICAgIGJpdG1hcCA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvbWFjL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvbWFjL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLmgKaW5kZXggMDY4ZDIyZTk2N2VmNjcy
ZTMzYTU2OTQxNzU5YjQ5ZDliZWI3ZTcwOC4uZTY4ZTIwYmRjMzc4MmY4MzY3NDYxNmM3NzU4MGRl
Y2NjY2U2ODE5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1vdGVM
YXllclRyZWVUcmFuc2FjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvUmVt
b3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24uaApAQCAtMjM4LDcgKzIzOCw3IEBAIHB1YmxpYzoKIAog
ICAgIHR5cGVkZWYgdWludDY0X3QgVHJhbnNhY3Rpb25DYWxsYmFja0lEOwogICAgIGNvbnN0IFZl
Y3RvcjxUcmFuc2FjdGlvbkNhbGxiYWNrSUQ+JiBjYWxsYmFja0lEcygpIGNvbnN0IHsgcmV0dXJu
IG1fY2FsbGJhY2tJRHM7IH0KLSAgICB2b2lkIHNldENhbGxiYWNrSURzKFZlY3RvcjxUcmFuc2Fj
dGlvbkNhbGxiYWNrSUQ+JiYgY2FsbGJhY2tJRHMpIHsgbV9jYWxsYmFja0lEcyA9IFdURjo6bW92
ZShjYWxsYmFja0lEcyk7IH0KKyAgICB2b2lkIHNldENhbGxiYWNrSURzKFZlY3RvcjxUcmFuc2Fj
dGlvbkNhbGxiYWNrSUQ+JiYgY2FsbGJhY2tJRHMpIHsgbV9jYWxsYmFja0lEcyA9IFdURk1vdmUo
Y2FsbGJhY2tJRHMpOyB9CiAKICAgICBXZWJDb3JlOjpMYXlvdXRNaWxlc3RvbmVzIG5ld2x5UmVh
Y2hlZExheW91dE1pbGVzdG9uZXMoKSBjb25zdCB7IHJldHVybiBtX25ld2x5UmVhY2hlZExheW91
dE1pbGVzdG9uZXM7IH0KICAgICB2b2lkIHNldE5ld2x5UmVhY2hlZExheW91dE1pbGVzdG9uZXMo
V2ViQ29yZTo6TGF5b3V0TWlsZXN0b25lcyBtaWxlc3RvbmVzKSB7IG1fbmV3bHlSZWFjaGVkTGF5
b3V0TWlsZXN0b25lcyA9IG1pbGVzdG9uZXM7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9tYWMvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvbWFjL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1tCmluZGV4IGRlNGFhYzUz
ZmU5YTYyMDUxNGYyODg5YWI5Mzg0MTliZTQ0YjFmZjYuLjdhOWY1MjllMzk4NTliYTU4YjNkNzY5
ZTZhMzViNWQyYmUxZTBkNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMv
UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVk
L21hYy9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5tbQpAQCAtNDEyLDcgKzQxMiw3IEBAIGJv
b2wgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVyUHJvcGVydGllczo6ZGVjb2RlKElQ
Qzo6QXJndW1lbnREZWNvZGVyJiBkCiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGF0aCkp
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIAotICAgICAgICByZXN1bHQuc2hh
cGVQYXRoID0gV1RGOjptb3ZlKHBhdGgpOworICAgICAgICByZXN1bHQuc2hhcGVQYXRoID0gV1RG
TW92ZShwYXRoKTsKICAgICB9CiAKICAgICBpZiAocmVzdWx0LmNoYW5nZWRQcm9wZXJ0aWVzICYg
TWluaWZpY2F0aW9uRmlsdGVyQ2hhbmdlZCkgewpAQCAtNDU0LDcgKzQ1NCw3IEBAIGJvb2wgUmVt
b3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVyUHJvcGVydGllczo6ZGVjb2RlKElQQzo6QXJn
dW1lbnREZWNvZGVyJiBkCiAgICAgICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKCpiYWNraW5n
U3RvcmUpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIAotICAg
ICAgICAgICAgcmVzdWx0LmJhY2tpbmdTdG9yZSA9IFdURjo6bW92ZShiYWNraW5nU3RvcmUpOwor
ICAgICAgICAgICAgcmVzdWx0LmJhY2tpbmdTdG9yZSA9IFdURk1vdmUoYmFja2luZ1N0b3JlKTsK
ICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICByZXN1bHQuYmFja2luZ1N0b3JlID0gbnVsbHB0
cjsKICAgICB9CkBAIC00NjgsNyArNDY4LDcgQEAgYm9vbCBSZW1vdGVMYXllclRyZWVUcmFuc2Fj
dGlvbjo6TGF5ZXJQcm9wZXJ0aWVzOjpkZWNvZGUoSVBDOjpBcmd1bWVudERlY29kZXImIGQKICAg
ICAgICAgc3RkOjp1bmlxdWVfcHRyPEZpbHRlck9wZXJhdGlvbnM+IGZpbHRlcnMgPSBzdGQ6Om1h
a2VfdW5pcXVlPEZpbHRlck9wZXJhdGlvbnM+KCk7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUoKmZpbHRlcnMpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICByZXN1bHQu
ZmlsdGVycyA9IFdURjo6bW92ZShmaWx0ZXJzKTsKKyAgICAgICAgcmVzdWx0LmZpbHRlcnMgPSBX
VEZNb3ZlKGZpbHRlcnMpOwogICAgIH0KIAogICAgIGlmIChyZXN1bHQuY2hhbmdlZFByb3BlcnRp
ZXMgJiBFZGdlQW50aWFsaWFzaW5nTWFza0NoYW5nZWQpIHsKQEAgLTU1NCw3ICs1NTQsNyBAQCBi
b29sIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpkZWNvZGUoSVBDOjpBcmd1bWVudERlY29k
ZXImIGRlY29kZXIsIFJlbW90ZUxheQogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKCpsYXll
clByb3BlcnRpZXMpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIHJlc3Vs
dC5jaGFuZ2VkTGF5ZXJQcm9wZXJ0aWVzKCkuc2V0KGxheWVySUQsIFdURjo6bW92ZShsYXllclBy
b3BlcnRpZXMpKTsKKyAgICAgICAgcmVzdWx0LmNoYW5nZWRMYXllclByb3BlcnRpZXMoKS5zZXQo
bGF5ZXJJRCwgV1RGTW92ZShsYXllclByb3BlcnRpZXMpKTsKICAgICB9CiAKICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKHJlc3VsdC5tX2Rlc3Ryb3llZExheWVySURzKSkKQEAgLTY0MCwxNyArNjQw
LDE3IEBAIHZvaWQgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OmxheWVyUHJvcGVydGllc0No
YW5nZWQoUGxhdGZvcm1DQUxheWVyUmVtb3RlJiByCiAKIHZvaWQgUmVtb3RlTGF5ZXJUcmVlVHJh
bnNhY3Rpb246OnNldENyZWF0ZWRMYXllcnMoVmVjdG9yPExheWVyQ3JlYXRpb25Qcm9wZXJ0aWVz
PiBjcmVhdGVkTGF5ZXJzKQogewotICAgIG1fY3JlYXRlZExheWVycyA9IFdURjo6bW92ZShjcmVh
dGVkTGF5ZXJzKTsKKyAgICBtX2NyZWF0ZWRMYXllcnMgPSBXVEZNb3ZlKGNyZWF0ZWRMYXllcnMp
OwogfQogCiB2b2lkIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpzZXREZXN0cm95ZWRMYXll
cklEcyhWZWN0b3I8R3JhcGhpY3NMYXllcjo6UGxhdGZvcm1MYXllcklEPiBkZXN0cm95ZWRMYXll
cklEcykKIHsKLSAgICBtX2Rlc3Ryb3llZExheWVySURzID0gV1RGOjptb3ZlKGRlc3Ryb3llZExh
eWVySURzKTsKKyAgICBtX2Rlc3Ryb3llZExheWVySURzID0gV1RGTW92ZShkZXN0cm95ZWRMYXll
cklEcyk7CiB9CiAKIHZvaWQgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OnNldExheWVySURz
V2l0aE5ld2x5VW5yZWFjaGFibGVCYWNraW5nU3RvcmUoVmVjdG9yPEdyYXBoaWNzTGF5ZXI6OlBs
YXRmb3JtTGF5ZXJJRD4gbGF5ZXJJRHNXaXRoTmV3bHlVbnJlYWNoYWJsZUJhY2tpbmdTdG9yZSkK
IHsKLSAgICBtX2xheWVySURzV2l0aE5ld2x5VW5yZWFjaGFibGVCYWNraW5nU3RvcmUgPSBXVEY6
Om1vdmUobGF5ZXJJRHNXaXRoTmV3bHlVbnJlYWNoYWJsZUJhY2tpbmdTdG9yZSk7CisgICAgbV9s
YXllcklEc1dpdGhOZXdseVVucmVhY2hhYmxlQmFja2luZ1N0b3JlID0gV1RGTW92ZShsYXllcklE
c1dpdGhOZXdseVVucmVhY2hhYmxlQmFja2luZ1N0b3JlKTsKIH0KIAogI2lmICFkZWZpbmVkKE5E
RUJVRykgfHwgIUxPR19ESVNBQkxFRApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L3NvdXAvV2ViQ29yZUFyZ3VtZW50Q29kZXJzU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvc291cC9XZWJDb3JlQXJndW1lbnRDb2RlcnNTb3VwLmNwcAppbmRleCA4YTg3NzAyODhkZDhl
NjAxY2I1NzliNDY5ZWNiZGRmMThhNWMxNjE2Li4zZDBhNTRiYjYxMzc1NjU5NzE4Njk2NDAzYjkz
ZGZkYTJhNGUyZGUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvc291cC9XZWJD
b3JlQXJndW1lbnRDb2RlcnNTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvc291
cC9XZWJDb3JlQXJndW1lbnRDb2RlcnNTb3VwLmNwcApAQCAtNzksNyArNzksNyBAQCBib29sIEFy
Z3VtZW50Q29kZXI8UmVzb3VyY2VSZXF1ZXN0Pjo6ZGVjb2RlUGxhdGZvcm1EYXRhKEFyZ3VtZW50
RGVjb2RlciYgZGVjb2RlcgogICAgIEhUVFBIZWFkZXJNYXAgaGVhZGVyczsKICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKGhlYWRlcnMpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmVzb3Vy
Y2VSZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZHMoV1RGOjptb3ZlKGhlYWRlcnMpKTsKKyAgICBy
ZXNvdXJjZVJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkcyhXVEZNb3ZlKGhlYWRlcnMpKTsKIAog
ICAgIGRvdWJsZSB0aW1lb3V0SW50ZXJ2YWw7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh0aW1l
b3V0SW50ZXJ2YWwpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9B
UElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgKaW5kZXggODI2ZGE2NTllOGRkNTdjYmRj
MTE0YWY1OWViYjY3ZTBjOTI0NTFkZC4uZDAzODRjZTM5ZWI3ZTQwMzU0OTE0NTdkMWRlOGI3YjU0
YmQ2YWNiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElQcm9j
ZXNzUG9vbENvbmZpZ3VyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oCkBAIC03OCwxMyArNzgsMTMgQEAgcHVibGlj
OgogICAgIHZvaWQgc2V0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeShjb25zdCBXVEY6OlN0cmlu
ZyYgbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSkgeyBtX21lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rv
cnkgPSBtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5OyB9CiAKICAgICBjb25zdCBWZWN0b3I8V1RG
OjpTdHJpbmc+JiBjYWNoZVBhcnRpdGlvbmVkVVJMU2NoZW1lcygpIHsgcmV0dXJuIG1fY2FjaGVQ
YXJ0aXRpb25lZFVSTFNjaGVtZXM7IH0KLSAgICB2b2lkIHNldENhY2hlUGFydGl0aW9uZWRVUkxT
Y2hlbWVzKFZlY3RvcjxXVEY6OlN0cmluZz4mJiBjYWNoZVBhcnRpdGlvbmVkVVJMU2NoZW1lcykg
eyBtX2NhY2hlUGFydGl0aW9uZWRVUkxTY2hlbWVzID0gV1RGOjptb3ZlKGNhY2hlUGFydGl0aW9u
ZWRVUkxTY2hlbWVzKTsgfQorICAgIHZvaWQgc2V0Q2FjaGVQYXJ0aXRpb25lZFVSTFNjaGVtZXMo
VmVjdG9yPFdURjo6U3RyaW5nPiYmIGNhY2hlUGFydGl0aW9uZWRVUkxTY2hlbWVzKSB7IG1fY2Fj
aGVQYXJ0aXRpb25lZFVSTFNjaGVtZXMgPSBXVEZNb3ZlKGNhY2hlUGFydGl0aW9uZWRVUkxTY2hl
bWVzKTsgfQogCiAgICAgYm9vbCBmdWxseVN5bmNocm9ub3VzTW9kZUlzQWxsb3dlZEZvclRlc3Rp
bmcoKSBjb25zdCB7IHJldHVybiBtX2Z1bGx5U3luY2hyb25vdXNNb2RlSXNBbGxvd2VkRm9yVGVz
dGluZzsgfQogICAgIHZvaWQgc2V0RnVsbHlTeW5jaHJvbm91c01vZGVJc0FsbG93ZWRGb3JUZXN0
aW5nKGJvb2wgYWxsb3dlZCkgeyBtX2Z1bGx5U3luY2hyb25vdXNNb2RlSXNBbGxvd2VkRm9yVGVz
dGluZyA9IGFsbG93ZWQ7IH0KIAogICAgIGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mIG92ZXJy
aWRlTGFuZ3VhZ2VzKCkgY29uc3QgeyByZXR1cm4gbV9vdmVycmlkZUxhbmd1YWdlczsgfQotICAg
IHZvaWQgc2V0T3ZlcnJpZGVMYW5ndWFnZXMoVmVjdG9yPFdURjo6U3RyaW5nPiYmIGxhbmd1YWdl
cykgeyBtX292ZXJyaWRlTGFuZ3VhZ2VzID0gV1RGOjptb3ZlKGxhbmd1YWdlcyk7IH0KKyAgICB2
b2lkIHNldE92ZXJyaWRlTGFuZ3VhZ2VzKFZlY3RvcjxXVEY6OlN0cmluZz4mJiBsYW5ndWFnZXMp
IHsgbV9vdmVycmlkZUxhbmd1YWdlcyA9IFdURk1vdmUobGFuZ3VhZ2VzKTsgfQogCiBwcml2YXRl
OgogICAgIGJvb2wgbV9zaG91bGRIYXZlTGVnYWN5RGF0YVN0b3JlIHsgZmFsc2UgfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJU2Vzc2lvblN0YXRlLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJU2Vzc2lvblN0YXRlLmNwcAppbmRleCBl
MWE1NTM4NDBhYjliOGNiZjBmYmFkMzA3ZTI3NmNiMTA3Y2EwYzMyLi40NzNlNWM3NTBlOGQ1MzZh
YmJkMDg2MTVlNTZhMmJlMTAxYjljMmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0FQSVNlc3Npb25TdGF0ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9BUElTZXNzaW9uU3RhdGUuY3BwCkBAIC0zMCwxMSArMzAsMTEgQEAgbmFtZXNwYWNl
IEFQSSB7CiAKIFJlZjxTZXNzaW9uU3RhdGU+IFNlc3Npb25TdGF0ZTo6Y3JlYXRlKFdlYktpdDo6
U2Vzc2lvblN0YXRlIHNlc3Npb25TdGF0ZSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBT
ZXNzaW9uU3RhdGUoV1RGOjptb3ZlKHNlc3Npb25TdGF0ZSkpKTsKKyAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBTZXNzaW9uU3RhdGUoV1RGTW92ZShzZXNzaW9uU3RhdGUpKSk7CiB9CiAKIFNlc3Np
b25TdGF0ZTo6U2Vzc2lvblN0YXRlKFdlYktpdDo6U2Vzc2lvblN0YXRlIHNlc3Npb25TdGF0ZSkK
LSAgICA6IG1fc2Vzc2lvblN0YXRlKFdURjo6bW92ZShzZXNzaW9uU3RhdGUpKQorICAgIDogbV9z
ZXNzaW9uU3RhdGUoV1RGTW92ZShzZXNzaW9uU3RhdGUpKQogewogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVVzZXJDb250ZW50RXh0ZW5zaW9uLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJVXNlckNvbnRlbnRFeHRlbnNpb24uY3Bw
CmluZGV4IGM1YWU3N2JmYWJjMmY4ZWEwYzQ2OTlmYmM4NGMyNDk4Y2ZkYzFlMzYuLmIwNmQ5ZDQz
YjA2OGFkYjc1MDdhZmU3MjRlNzM4OGExMGI3YmQyYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQVBJVXNlckNvbnRlbnRFeHRlbnNpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJVXNlckNvbnRlbnRFeHRlbnNpb24uY3BwCkBAIC0z
NCw3ICszNCw3IEBAIG5hbWVzcGFjZSBBUEkgewogCiBVc2VyQ29udGVudEV4dGVuc2lvbjo6VXNl
ckNvbnRlbnRFeHRlbnNpb24oY29uc3QgV1RGOjpTdHJpbmcmIG5hbWUsIFJlZjxXZWJLaXQ6Oldl
YkNvbXBpbGVkQ29udGVudEV4dGVuc2lvbj4mJiBjb250ZW50RXh0ZW5zaW9uKQogICAgIDogbV9u
YW1lKG5hbWUpCi0gICAgLCBtX2NvbXBpbGVkRXh0ZW5zaW9uKFdURjo6bW92ZShjb250ZW50RXh0
ZW5zaW9uKSkKKyAgICAsIG1fY29tcGlsZWRFeHRlbnNpb24oV1RGTW92ZShjb250ZW50RXh0ZW5z
aW9uKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9B
UElVc2VyQ29udGVudEV4dGVuc2lvbi5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9B
UElVc2VyQ29udGVudEV4dGVuc2lvbi5oCmluZGV4IGExYzc5Zjk1MWVhOTg4YzhjOWU2YzI1OGIz
NWQ1MzIxMWRmZDgwMGIuLmM2MDY2MTg3MDRiYzA2YTE2ODkxZWZiMjE4ZTgyYTEzNmEwNzM4ODUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJVXNlckNvbnRlbnRF
eHRlbnNpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVVzZXJDb250
ZW50RXh0ZW5zaW9uLmgKQEAgLTQwLDcgKzQwLDcgQEAgcHVibGljOgogI2lmIEVOQUJMRShDT05U
RU5UX0VYVEVOU0lPTlMpCiAgICAgc3RhdGljIFJlZjxVc2VyQ29udGVudEV4dGVuc2lvbj4gY3Jl
YXRlKGNvbnN0IFdURjo6U3RyaW5nJiBuYW1lLCBSZWY8V2ViS2l0OjpXZWJDb21waWxlZENvbnRl
bnRFeHRlbnNpb24+JiYgY29udGVudEV4dGVuc2lvbikKICAgICB7Ci0gICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFVzZXJDb250ZW50RXh0ZW5zaW9uKG5hbWUsIFdURjo6bW92ZShjb250ZW50
RXh0ZW5zaW9uKSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBVc2VyQ29udGVudEV4
dGVuc2lvbihuYW1lLCBXVEZNb3ZlKGNvbnRlbnRFeHRlbnNpb24pKSk7CiAgICAgfQogCiAgICAg
VXNlckNvbnRlbnRFeHRlbnNpb24oY29uc3QgV1RGOjpTdHJpbmcmIG5hbWUsIFJlZjxXZWJLaXQ6
OldlYkNvbXBpbGVkQ29udGVudEV4dGVuc2lvbj4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVVzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmUuY3BwIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlLmNw
cAppbmRleCA1ZDYxOTNiNWY2MzE3Y2JiZGJlNjdhOGY2MTI3NzcyZWFlNzAxYmRhLi5hZTA4YTJh
ZDU2ZWY3ZWFlYzdiOWUzNDMzMzczNWRmNjA2NjdhYzQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVVzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmUuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJVXNlckNvbnRlbnRFeHRlbnNpb25TdG9y
ZS5jcHAKQEAgLTI2MCw3ICsyNjAsNyBAQCBzdGF0aWMgc3RkOjplcnJvcl9jb2RlIGNvbXBpbGVk
VG9GaWxlKFN0cmluZyYmIGpzb24sIGNvbnN0IFN0cmluZyYgZmluYWxGaWxlUGF0aAogCiAgICAg
Q29tcGlsYXRpb25DbGllbnQgY29tcGlsYXRpb25DbGllbnQodGVtcG9yYXJ5RmlsZUhhbmRsZSwg
bWV0YURhdGEpOwogICAgIAotICAgIGlmIChhdXRvIGNvbXBpbGVyRXJyb3IgPSBjb21waWxlUnVs
ZUxpc3QoY29tcGlsYXRpb25DbGllbnQsIFdURjo6bW92ZShqc29uKSkpIHsKKyAgICBpZiAoYXV0
byBjb21waWxlckVycm9yID0gY29tcGlsZVJ1bGVMaXN0KGNvbXBpbGF0aW9uQ2xpZW50LCBXVEZN
b3ZlKGpzb24pKSkgewogICAgICAgICBXZWJDb3JlOjpjbG9zZUZpbGUodGVtcG9yYXJ5RmlsZUhh
bmRsZSk7CiAgICAgICAgIHJldHVybiBjb21waWxlckVycm9yOwogICAgIH0KQEAgLTI4Myw3ICsy
ODMsNyBAQCBzdGF0aWMgUmVmUHRyPEFQSTo6VXNlckNvbnRlbnRFeHRlbnNpb24+IGNyZWF0ZUV4
dGVuc2lvbihjb25zdCBTdHJpbmcmIGlkZW50aWZpZQogewogICAgIGF1dG8gc2hhcmVkTWVtb3J5
ID0gV2ViS2l0OjpTaGFyZWRNZW1vcnk6OmNyZWF0ZShjb25zdF9jYXN0PHVpbnQ4X3QqPihmaWxl
RGF0YS5kYXRhKCkpLCBmaWxlRGF0YS5zaXplKCksIFdlYktpdDo6U2hhcmVkTWVtb3J5OjpQcm90
ZWN0aW9uOjpSZWFkT25seSk7CiAgICAgYXV0byBjb21waWxlZENvbnRlbnRFeHRlbnNpb25EYXRh
ID0gV2ViS2l0OjpXZWJDb21waWxlZENvbnRlbnRFeHRlbnNpb25EYXRhKAotICAgICAgICBXVEY6
Om1vdmUoc2hhcmVkTWVtb3J5KSwKKyAgICAgICAgV1RGTW92ZShzaGFyZWRNZW1vcnkpLAogICAg
ICAgICBmaWxlRGF0YSwKICAgICAgICAgQ29udGVudEV4dGVuc2lvbkZpbGVIZWFkZXJTaXplLAog
ICAgICAgICBtZXRhRGF0YS5hY3Rpb25zU2l6ZSwKQEAgLTMwMCw4ICszMDAsOCBAQCBzdGF0aWMg
UmVmUHRyPEFQSTo6VXNlckNvbnRlbnRFeHRlbnNpb24+IGNyZWF0ZUV4dGVuc2lvbihjb25zdCBT
dHJpbmcmIGlkZW50aWZpZQogICAgICAgICAgICAgKyBtZXRhRGF0YS5maWx0ZXJzV2l0aERvbWFp
bkJ5dGVjb2RlU2l6ZSwKICAgICAgICAgbWV0YURhdGEuZG9tYWluRmlsdGVyc0J5dGVjb2RlU2l6
ZQogICAgICk7Ci0gICAgYXV0byBjb21waWxlZENvbnRlbnRFeHRlbnNpb24gPSBXZWJLaXQ6Oldl
YkNvbXBpbGVkQ29udGVudEV4dGVuc2lvbjo6Y3JlYXRlKFdURjo6bW92ZShjb21waWxlZENvbnRl
bnRFeHRlbnNpb25EYXRhKSk7Ci0gICAgcmV0dXJuIEFQSTo6VXNlckNvbnRlbnRFeHRlbnNpb246
OmNyZWF0ZShpZGVudGlmaWVyLCBXVEY6Om1vdmUoY29tcGlsZWRDb250ZW50RXh0ZW5zaW9uKSk7
CisgICAgYXV0byBjb21waWxlZENvbnRlbnRFeHRlbnNpb24gPSBXZWJLaXQ6OldlYkNvbXBpbGVk
Q29udGVudEV4dGVuc2lvbjo6Y3JlYXRlKFdURk1vdmUoY29tcGlsZWRDb250ZW50RXh0ZW5zaW9u
RGF0YSkpOworICAgIHJldHVybiBBUEk6OlVzZXJDb250ZW50RXh0ZW5zaW9uOjpjcmVhdGUoaWRl
bnRpZmllciwgV1RGTW92ZShjb21waWxlZENvbnRlbnRFeHRlbnNpb24pKTsKIH0KIAogdm9pZCBV
c2VyQ29udGVudEV4dGVuc2lvblN0b3JlOjpsb29rdXBDb250ZW50RXh0ZW5zaW9uKGNvbnN0IFdU
Rjo6U3RyaW5nJiBpZGVudGlmaWVyLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoUmVmUHRyPEFQSTo6VXNl
ckNvbnRlbnRFeHRlbnNpb24+LCBzdGQ6OmVycm9yX2NvZGUpPiBjb21wbGV0aW9uSGFuZGxlcikK
QEAgLTM0MCw3ICszNDAsNyBAQCB2b2lkIFVzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmU6OmNvbXBp
bGVDb250ZW50RXh0ZW5zaW9uKGNvbnN0IFdURjo6U3RyaW5nJiBpZGVudAogewogICAgIFJlZlB0
cjxVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlPiBzZWxmKHRoaXMpOwogICAgIFN0cmluZ0NhcHR1
cmUgaWRlbnRpZmllckNhcHR1cmUoaWRlbnRpZmllcik7Ci0gICAgU3RyaW5nQ2FwdHVyZSBqc29u
Q2FwdHVyZShXVEY6Om1vdmUoanNvbikpOworICAgIFN0cmluZ0NhcHR1cmUganNvbkNhcHR1cmUo
V1RGTW92ZShqc29uKSk7CiAgICAgU3RyaW5nQ2FwdHVyZSBwYXRoQ2FwdHVyZShtX3N0b3JlUGF0
aCk7CiAKICAgICBtX2NvbXBpbGVRdWV1ZS0+ZGlzcGF0Y2goW3NlbGYsIGlkZW50aWZpZXJDYXB0
dXJlLCBqc29uQ2FwdHVyZSwgcGF0aENhcHR1cmUsIGNvbXBsZXRpb25IYW5kbGVyXSAoKSBtdXRh
YmxlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJVXNlclNj
cmlwdC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElVc2VyU2NyaXB0LmgKaW5k
ZXggYTRhMjA3ZjMyMGFjNTU3Y2JiMmE1NWQ3OWE3MDdjMWVhYmZlOWMzOS4uMDNlMmY2MmNkNzY3
NmMwZmM3YzNjODY2MjJmZjE2ZmNkY2M1ZDE1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9BUElVc2VyU2NyaXB0LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9BUElVc2VyU2NyaXB0LmgKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOgogCiAgICAg
c3RhdGljIFJlZjxVc2VyU2NyaXB0PiBjcmVhdGUoV2ViQ29yZTo6VXNlclNjcmlwdCB1c2VyU2Ny
aXB0KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVXNlclNjcmlwdChXVEY6
Om1vdmUodXNlclNjcmlwdCkpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVXNlclNj
cmlwdChXVEZNb3ZlKHVzZXJTY3JpcHQpKSk7CiAgICAgfQogCiAgICAgVXNlclNjcmlwdChXZWJD
b3JlOjpVc2VyU2NyaXB0IHVzZXJTY3JpcHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRhUmVjb3JkLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFSZWNvcmQuY3BwCmluZGV4IGU0YjNjZTY5Y2I2MGU3
M2U4YzJjZWRkNzU0NDUzNmQ1NTY2MWYzOTYuLmQ0ODg1OTA0YzUwNjQ0ZjU2ODgxYmJjMjEyZmVm
YjdlMzA3ZTQyMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJ
V2Vic2l0ZURhdGFSZWNvcmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
QVBJV2Vic2l0ZURhdGFSZWNvcmQuY3BwCkBAIC0zMCwxMSArMzAsMTEgQEAgbmFtZXNwYWNlIEFQ
SSB7CiAKIFJlZjxXZWJzaXRlRGF0YVJlY29yZD4gV2Vic2l0ZURhdGFSZWNvcmQ6OmNyZWF0ZShX
ZWJLaXQ6OldlYnNpdGVEYXRhUmVjb3JkJiYgd2Vic2l0ZURhdGFSZWNvcmQpCiB7Ci0gICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgV2Vic2l0ZURhdGFSZWNvcmQoV1RGOjptb3ZlKHdlYnNpdGVEYXRh
UmVjb3JkKSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYnNpdGVEYXRhUmVjb3JkKFdU
Rk1vdmUod2Vic2l0ZURhdGFSZWNvcmQpKSk7CiB9CiAKIFdlYnNpdGVEYXRhUmVjb3JkOjpXZWJz
aXRlRGF0YVJlY29yZChXZWJLaXQ6OldlYnNpdGVEYXRhUmVjb3JkJiYgd2Vic2l0ZURhdGFSZWNv
cmQpCi0gICAgOiBtX3dlYnNpdGVEYXRhUmVjb3JkKFdURjo6bW92ZSh3ZWJzaXRlRGF0YVJlY29y
ZCkpCisgICAgOiBtX3dlYnNpdGVEYXRhUmVjb3JkKFdURk1vdmUod2Vic2l0ZURhdGFSZWNvcmQp
KQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVdl
YnNpdGVEYXRhU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElXZWJz
aXRlRGF0YVN0b3JlLmNwcAppbmRleCBhZjI5MTU3OTYyOWMyZDVkZDVlN2ViOWM0MmU2M2I1YzYz
OWM4ZTUxLi4xZDA4NzM4OTAwM2E3OWJkMmViZDFmYWFlMWI5MmUwYjI0Yjk2NTExIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5j
cHAKQEAgLTQ0LDcgKzQ0LDcgQEAgUmVmPFdlYnNpdGVEYXRhU3RvcmU+IFdlYnNpdGVEYXRhU3Rv
cmU6OmNyZWF0ZU5vblBlcnNpc3RlbnREYXRhU3RvcmUoKQogCiBSZWY8V2Vic2l0ZURhdGFTdG9y
ZT4gV2Vic2l0ZURhdGFTdG9yZTo6Y3JlYXRlKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6Q29u
ZmlndXJhdGlvbiBjb25maWd1cmF0aW9uKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdl
YnNpdGVEYXRhU3RvcmUoV1RGOjptb3ZlKGNvbmZpZ3VyYXRpb24pKSk7CisgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgV2Vic2l0ZURhdGFTdG9yZShXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKSk7CiB9
CiAKIFdlYnNpdGVEYXRhU3RvcmU6OldlYnNpdGVEYXRhU3RvcmUoKQpAQCAtNTMsNyArNTMsNyBA
QCBXZWJzaXRlRGF0YVN0b3JlOjpXZWJzaXRlRGF0YVN0b3JlKCkKIH0KIAogV2Vic2l0ZURhdGFT
dG9yZTo6V2Vic2l0ZURhdGFTdG9yZShXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OkNvbmZpZ3Vy
YXRpb24gY29uZmlndXJhdGlvbikKLSAgICA6IG1fd2Vic2l0ZURhdGFTdG9yZShXZWJLaXQ6Oldl
YnNpdGVEYXRhU3RvcmU6OmNyZWF0ZShXVEY6Om1vdmUoY29uZmlndXJhdGlvbikpKQorICAgIDog
bV93ZWJzaXRlRGF0YVN0b3JlKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6Y3JlYXRlKFdURk1v
dmUoY29uZmlndXJhdGlvbikpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5jcHAKaW5kZXgg
YzU1MWExNWEzN2YyNGM0Mzg3NGEyYTVlMjFmYjdjZTA2ZTNkZjlhMS4uNzJiM2ZhNWM4MjQ5ZTgy
ZjExOWVjYTAxNDA5YjZjMzg1MmYwYzBkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9DL1dLQXBwbGljYXRpb25DYWNoZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmNwcApAQCAt
NDcsNyArNDcsNyBAQCB2b2lkIFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXJHZXRBcHBsaWNhdGlv
bkNhY2hlT3JpZ2lucyhXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZwogICAgICAgICAgICAgICAgIHNl
Y3VyaXR5T3JpZ2lucy5hcHBlbmQoQVBJOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKCpvcmlnaW4p
KTsKICAgICAgICAgfQogCi0gICAgICAgIGNhbGxiYWNrKHRvQVBJKEFQSTo6QXJyYXk6OmNyZWF0
ZShXVEY6Om1vdmUoc2VjdXJpdHlPcmlnaW5zKSkucHRyKCkpLCBudWxscHRyLCBjb250ZXh0KTsK
KyAgICAgICAgY2FsbGJhY2sodG9BUEkoQVBJOjpBcnJheTo6Y3JlYXRlKFdURk1vdmUoc2VjdXJp
dHlPcmlnaW5zKSkucHRyKCkpLCBudWxscHRyLCBjb250ZXh0KTsKICAgICB9KTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLS2V5VmFsdWVTdG9yYWdl
TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tLZXlWYWx1ZVN0
b3JhZ2VNYW5hZ2VyLmNwcAppbmRleCA0ODZmNTJhZWFlMjJjNTEzMTYxYzlkYjdiYTMxZDlkZDc0
YjRkZjhhLi5lNDEyNTExZjY2ZGJmZWIwYjNlNTQ3NGU0NzMwNjMxZWNmYTNiYWZlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tLZXlWYWx1ZVN0b3JhZ2VNYW5h
Z2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tLZXlWYWx1ZVN0
b3JhZ2VNYW5hZ2VyLmNwcApAQCAtNzUsNyArNzUsNyBAQCB2b2lkIFdLS2V5VmFsdWVTdG9yYWdl
TWFuYWdlckdldEtleVZhbHVlU3RvcmFnZU9yaWdpbnMoV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2Vy
UgogICAgICAgICBmb3IgKGF1dG8mIG9yaWdpbiA6IHNlY3VyaXR5T3JpZ2lucykKICAgICAgICAg
ICAgIHdlYlNlY3VyaXR5T3JpZ2lucy51bmNoZWNrZWRBcHBlbmQoQVBJOjpTZWN1cml0eU9yaWdp
bjo6Y3JlYXRlKCpvcmlnaW4pKTsKIAotICAgICAgICBjYWxsYmFjayh0b0FQSShBUEk6OkFycmF5
OjpjcmVhdGUoV1RGOjptb3ZlKHdlYlNlY3VyaXR5T3JpZ2lucykpLnB0cigpKSwgbnVsbHB0ciwg
Y29udGV4dCk7CisgICAgICAgIGNhbGxiYWNrKHRvQVBJKEFQSTo6QXJyYXk6OmNyZWF0ZShXVEZN
b3ZlKHdlYlNlY3VyaXR5T3JpZ2lucykpLnB0cigpKSwgbnVsbHB0ciwgY29udGV4dCk7CiAgICAg
fSk7CiB9CiAKQEAgLTEwNSwxMCArMTA1LDEwIEBAIHZvaWQgV0tLZXlWYWx1ZVN0b3JhZ2VNYW5h
Z2VyR2V0U3RvcmFnZURldGFpbHNCeU9yaWdpbihXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJSCiAg
ICAgICAgICAgICBpZiAob3JpZ2luRGV0YWlscy5tb2RpZmljYXRpb25UaW1lKQogICAgICAgICAg
ICAgICAgIGRldGFpbHNNYXAuc2V0KHRvSW1wbChXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRN
b2RpZmljYXRpb25UaW1lS2V5KCkpLT5zdHJpbmcoKSwgQVBJOjpEb3VibGU6OmNyZWF0ZShvcmln
aW5EZXRhaWxzLm1vZGlmaWNhdGlvblRpbWUudmFsdWVPcigwKSkpOwogCi0gICAgICAgICAgICBy
ZXN1bHQudW5jaGVja2VkQXBwZW5kKEFQSTo6RGljdGlvbmFyeTo6Y3JlYXRlKFdURjo6bW92ZShk
ZXRhaWxzTWFwKSkpOworICAgICAgICAgICAgcmVzdWx0LnVuY2hlY2tlZEFwcGVuZChBUEk6OkRp
Y3Rpb25hcnk6OmNyZWF0ZShXVEZNb3ZlKGRldGFpbHNNYXApKSk7CiAgICAgICAgIH0KIAotICAg
ICAgICBjYWxsYmFjayh0b0FQSShBUEk6OkFycmF5OjpjcmVhdGUoV1RGOjptb3ZlKHJlc3VsdCkp
LnB0cigpKSwgbnVsbHB0ciwgY29udGV4dCk7CisgICAgICAgIGNhbGxiYWNrKHRvQVBJKEFQSTo6
QXJyYXk6OmNyZWF0ZShXVEZNb3ZlKHJlc3VsdCkpLnB0cigpKSwgbnVsbHB0ciwgY29udGV4dCk7
CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9XS1BhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAK
aW5kZXggMTU0ZjRjZmE4MDJjMjg0ZDFlZmQ1OTFjMzBlZjJjNDE1MDYwZTlkMC4uMTAyN2JjY2Fk
NjZjZDdiMzM3MjFiMDRmZWRlMWIyOWQ5MWE2N2Q3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9DL1dLUGFnZS5jcHAKQEAgLTQ0MSw3ICs0NDEsNyBAQCBXS1R5cGVSZWYgV0tQYWdl
Q29weVNlc3Npb25TdGF0ZShXS1BhZ2VSZWYgcGFnZVJlZiwgdm9pZCogY29udGV4dCwgV0tQYWdl
U2Vzc2lvbgogICAgIGlmIChzaG91bGRSZXR1cm5EYXRhKQogICAgICAgICByZXR1cm4gdG9BUEko
ZW5jb2RlTGVnYWN5U2Vzc2lvblN0YXRlKHNlc3Npb25TdGF0ZSkucmVsZWFzZSgpLmxlYWtSZWYo
KSk7CiAKLSAgICByZXR1cm4gdG9BUEkoJkFQSTo6U2Vzc2lvblN0YXRlOjpjcmVhdGUoV1RGOjpt
b3ZlKHNlc3Npb25TdGF0ZSkpLmxlYWtSZWYoKSk7CisgICAgcmV0dXJuIHRvQVBJKCZBUEk6OlNl
c3Npb25TdGF0ZTo6Y3JlYXRlKFdURk1vdmUoc2Vzc2lvblN0YXRlKSkubGVha1JlZigpKTsKIH0K
IAogdm9pZCBXS1BhZ2VSZXN0b3JlRnJvbVNlc3Npb25TdGF0ZShXS1BhZ2VSZWYgcGFnZVJlZiwg
V0tUeXBlUmVmIHNlc3Npb25TdGF0ZVJlZikKQEAgLTQ1OCw3ICs0NTgsNyBAQCB2b2lkIFdLUGFn
ZVJlc3RvcmVGcm9tU2Vzc2lvblN0YXRlKFdLUGFnZVJlZiBwYWdlUmVmLCBXS1R5cGVSZWYgc2Vz
c2lvblN0YXRlUmVmKQogICAgICAgICBzZXNzaW9uU3RhdGUgPSB0b0ltcGwoc3RhdGljX2Nhc3Q8
V0tTZXNzaW9uU3RhdGVSZWY+KHNlc3Npb25TdGF0ZVJlZikpLT5zZXNzaW9uU3RhdGUoKTsKICAg
ICB9CiAKLSAgICB0b0ltcGwocGFnZVJlZiktPnJlc3RvcmVGcm9tU2Vzc2lvblN0YXRlKFdURjo6
bW92ZShzZXNzaW9uU3RhdGUpLCB0cnVlKTsKKyAgICB0b0ltcGwocGFnZVJlZiktPnJlc3RvcmVG
cm9tU2Vzc2lvblN0YXRlKFdURk1vdmUoc2Vzc2lvblN0YXRlKSwgdHJ1ZSk7CiB9CiAKIGRvdWJs
ZSBXS1BhZ2VHZXRUZXh0Wm9vbUZhY3RvcihXS1BhZ2VSZWYgcGFnZVJlZikKQEAgLTgwOCw5ICs4
MDgsOSBAQCB2b2lkIFdLUGFnZVNldFBhZ2VDb250ZXh0TWVudUNsaWVudChXS1BhZ2VSZWYgcGFn
ZVJlZiwgY29uc3QgV0tQYWdlQ29udGV4dE1lbnVDbAogICAgICAgICAgICAgV0tBcnJheVJlZiBu
ZXdNZW51ID0gbnVsbHB0cjsKICAgICAgICAgICAgIGlmIChtX2NsaWVudC5iYXNlLnZlcnNpb24g
Pj0gMikgewogICAgICAgICAgICAgICAgIFJlZlB0cjxBUEk6OkhpdFRlc3RSZXN1bHQ+IHdlYkhp
dFRlc3RSZXN1bHQgPSBBUEk6OkhpdFRlc3RSZXN1bHQ6OmNyZWF0ZShoaXRUZXN0UmVzdWx0RGF0
YSk7Ci0gICAgICAgICAgICAgICAgbV9jbGllbnQuZ2V0Q29udGV4dE1lbnVGcm9tUHJvcG9zZWRN
ZW51KHRvQVBJKCZwYWdlKSwgdG9BUEkoQVBJOjpBcnJheTo6Y3JlYXRlKFdURjo6bW92ZShwcm9w
b3NlZE1lbnVJdGVtcykpLnB0cigpKSwgJm5ld01lbnUsIHRvQVBJKHdlYkhpdFRlc3RSZXN1bHQu
Z2V0KCkpLCB0b0FQSSh1c2VyRGF0YSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAg
ICAgICAgICAgICAgbV9jbGllbnQuZ2V0Q29udGV4dE1lbnVGcm9tUHJvcG9zZWRNZW51KHRvQVBJ
KCZwYWdlKSwgdG9BUEkoQVBJOjpBcnJheTo6Y3JlYXRlKFdURk1vdmUocHJvcG9zZWRNZW51SXRl
bXMpKS5wdHIoKSksICZuZXdNZW51LCB0b0FQSSh3ZWJIaXRUZXN0UmVzdWx0LmdldCgpKSwgdG9B
UEkodXNlckRhdGEpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogICAgICAgICAgICAgfSBl
bHNlCi0gICAgICAgICAgICAgICAgbV9jbGllbnQuZ2V0Q29udGV4dE1lbnVGcm9tUHJvcG9zZWRN
ZW51X2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjAodG9BUEkoJnBhZ2UpLCB0b0FQSShBUEk6OkFycmF5
OjpjcmVhdGUoV1RGOjptb3ZlKHByb3Bvc2VkTWVudUl0ZW1zKSkucHRyKCkpLCAmbmV3TWVudSwg
dG9BUEkodXNlckRhdGEpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgICAgICAgICAg
ICAgIG1fY2xpZW50LmdldENvbnRleHRNZW51RnJvbVByb3Bvc2VkTWVudV9kZXByZWNhdGVkRm9y
VXNlV2l0aFYwKHRvQVBJKCZwYWdlKSwgdG9BUEkoQVBJOjpBcnJheTo6Y3JlYXRlKFdURk1vdmUo
cHJvcG9zZWRNZW51SXRlbXMpKS5wdHIoKSksICZuZXdNZW51LCB0b0FQSSh1c2VyRGF0YSksIG1f
Y2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiAKICAgICAgICAgICAgIFJlZlB0cjxBUEk6OkFycmF5
PiBhcnJheSA9IGFkb3B0UmVmKHRvSW1wbChuZXdNZW51KSk7CiAKQEAgLTg0OSw3ICs4NDksNyBA
QCB2b2lkIFdLUGFnZVNldFBhZ2VDb250ZXh0TWVudUNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwg
Y29uc3QgV0tQYWdlQ29udGV4dE1lbnVDbAogICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBt
ZW51SXRlbSA6IG1lbnVJdGVtc1ZlY3RvcikKICAgICAgICAgICAgICAgICBtZW51SXRlbXMudW5j
aGVja2VkQXBwZW5kKG1lbnVJdGVtKTsKIAotICAgICAgICAgICAgbV9jbGllbnQuc2hvd0NvbnRl
eHRNZW51KHRvQVBJKCZwYWdlKSwgdG9BUEkobWVudUxvY2F0aW9uKSwgdG9BUEkoQVBJOjpBcnJh
eTo6Y3JlYXRlKFdURjo6bW92ZShtZW51SXRlbXMpKS5wdHIoKSksIG1fY2xpZW50LmJhc2UuY2xp
ZW50SW5mbyk7CisgICAgICAgICAgICBtX2NsaWVudC5zaG93Q29udGV4dE1lbnUodG9BUEkoJnBh
Z2UpLCB0b0FQSShtZW51TG9jYXRpb24pLCB0b0FQSShBUEk6OkFycmF5OjpjcmVhdGUoV1RGTW92
ZShtZW51SXRlbXMpKS5wdHIoKSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiAKICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CkBAIC05NDAsMTAgKzk0MCwxMCBAQCB2b2lk
IFdLUGFnZVNldFBhZ2VGaW5kTWF0Y2hlc0NsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3Qg
V0tQYWdlRmluZE1hdGNoZXNDbAogICAgICAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgcmVj
dCA6IHJlY3RzKQogICAgICAgICAgICAgICAgICAgICBhcGlSZWN0cy51bmNoZWNrZWRBcHBlbmQo
QVBJOjpSZWN0OjpjcmVhdGUodG9BUEkocmVjdCkpKTsKIAotICAgICAgICAgICAgICAgIG1hdGNo
ZXMudW5jaGVja2VkQXBwZW5kKEFQSTo6QXJyYXk6OmNyZWF0ZShXVEY6Om1vdmUoYXBpUmVjdHMp
KSk7CisgICAgICAgICAgICAgICAgbWF0Y2hlcy51bmNoZWNrZWRBcHBlbmQoQVBJOjpBcnJheTo6
Y3JlYXRlKFdURk1vdmUoYXBpUmVjdHMpKSk7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAg
IG1fY2xpZW50LmRpZEZpbmRTdHJpbmdNYXRjaGVzKHRvQVBJKHBhZ2UpLCB0b0FQSShzdHJpbmcu
aW1wbCgpKSwgdG9BUEkoQVBJOjpBcnJheTo6Y3JlYXRlKFdURjo6bW92ZShtYXRjaGVzKSkucHRy
KCkpLCBpbmRleCwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICAgICAgICAgIG1fY2xp
ZW50LmRpZEZpbmRTdHJpbmdNYXRjaGVzKHRvQVBJKHBhZ2UpLCB0b0FQSShzdHJpbmcuaW1wbCgp
KSwgdG9BUEkoQVBJOjpBcnJheTo6Y3JlYXRlKFdURk1vdmUobWF0Y2hlcykpLnB0cigpKSwgaW5k
ZXgsIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiAgICAgICAgIH0KIAogICAgICAgICB2aXJ0
dWFsIHZvaWQgZGlkR2V0SW1hZ2VGb3JNYXRjaFJlc3VsdChXZWJQYWdlUHJveHkqIHBhZ2UsIFdl
YkltYWdlKiBpbWFnZSwgaW50MzJfdCBpbmRleCkgb3ZlcnJpZGUKQEAgLTExNzIsOSArMTE3Miw5
IEBAIHZvaWQgV0tQYWdlU2V0UGFnZUxvYWRlckNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29u
c3QgV0tQYWdlTG9hZGVyQ2xpZW50QmFzZSoKICAgICAgICAgICAgICAgICBWZWN0b3I8UmVmUHRy
PEFQSTo6T2JqZWN0Pj4gcmVtb3ZlZEl0ZW1zVmVjdG9yOwogICAgICAgICAgICAgICAgIHJlbW92
ZWRJdGVtc1ZlY3Rvci5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHJlbW92ZWRJdGVtcy5zaXplKCkp
OwogICAgICAgICAgICAgICAgIGZvciAoYXV0byYgcmVtb3ZlZEl0ZW0gOiByZW1vdmVkSXRlbXMp
Ci0gICAgICAgICAgICAgICAgICAgIHJlbW92ZWRJdGVtc1ZlY3Rvci5hcHBlbmQoV1RGOjptb3Zl
KHJlbW92ZWRJdGVtKSk7CisgICAgICAgICAgICAgICAgICAgIHJlbW92ZWRJdGVtc1ZlY3Rvci5h
cHBlbmQoV1RGTW92ZShyZW1vdmVkSXRlbSkpOwogCi0gICAgICAgICAgICAgICAgcmVtb3ZlZEl0
ZW1zQXJyYXkgPSBBUEk6OkFycmF5OjpjcmVhdGUoV1RGOjptb3ZlKHJlbW92ZWRJdGVtc1ZlY3Rv
cikpOworICAgICAgICAgICAgICAgIHJlbW92ZWRJdGVtc0FycmF5ID0gQVBJOjpBcnJheTo6Y3Jl
YXRlKFdURk1vdmUocmVtb3ZlZEl0ZW1zVmVjdG9yKSk7CiAgICAgICAgICAgICB9CiAKICAgICAg
ICAgICAgIG1fY2xpZW50LmRpZENoYW5nZUJhY2tGb3J3YXJkTGlzdCh0b0FQSSgmcGFnZSksIHRv
QVBJKGFkZGVkSXRlbSksIHRvQVBJKHJlbW92ZWRJdGVtc0FycmF5LmdldCgpKSwgbV9jbGllbnQu
YmFzZS5jbGllbnRJbmZvKTsKQEAgLTEyOTgsNyArMTI5OCw3IEBAIHZvaWQgV0tQYWdlU2V0UGFn
ZUxvYWRlckNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlTG9hZGVyQ2xpZW50
QmFzZSoKICAgICBpZiAobWlsZXN0b25lcykKICAgICAgICAgd2ViUGFnZVByb3h5LT5wcm9jZXNz
KCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TGlzdGVuRm9yTGF5b3V0TWlsZXN0b25lcyhtaWxl
c3RvbmVzKSwgd2ViUGFnZVByb3h5LT5wYWdlSUQoKSk7CiAKLSAgICB3ZWJQYWdlUHJveHktPnNl
dExvYWRlckNsaWVudChXVEY6Om1vdmUobG9hZGVyQ2xpZW50KSk7CisgICAgd2ViUGFnZVByb3h5
LT5zZXRMb2FkZXJDbGllbnQoV1RGTW92ZShsb2FkZXJDbGllbnQpKTsKIH0KIAogdm9pZCBXS1Bh
Z2VTZXRQYWdlUG9saWN5Q2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VQb2xp
Y3lDbGllbnRCYXNlKiB3a0NsaWVudCkKQEAgLTE1MDksNyArMTUwOSw3IEBAIGNsYXNzIFJ1bkph
dmFTY3JpcHRBbGVydFJlc3VsdExpc3RlbmVyIDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6
Ok9iamVjdDo6VHlwCiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8UnVuSmF2YVNjcmlw
dEFsZXJ0UmVzdWx0TGlzdGVuZXI+IGNyZWF0ZShzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFJ1bkph
dmFTY3JpcHRBbGVydFJlc3VsdExpc3RlbmVyKFdURjo6bW92ZShjb21wbGV0aW9uSGFuZGxlcikp
KTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBSdW5KYXZhU2NyaXB0QWxlcnRSZXN1bHRM
aXN0ZW5lcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkpOwogICAgIH0KIAogICAgIHZpcnR1
YWwgflJ1bkphdmFTY3JpcHRBbGVydFJlc3VsdExpc3RlbmVyKCkKQEAgLTE1MjMsNyArMTUyMyw3
IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBSdW5KYXZhU2NyaXB0QWxlcnRS
ZXN1bHRMaXN0ZW5lcihzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
Ci0gICAgICAgIDogbV9jb21wbGV0aW9uSGFuZGxlcihXVEY6Om1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKQorICAgICAgICA6IG1fY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpCiAgICAgewogICAgIH0KICAgICAKQEAgLTE1MzQsNyArMTUzNCw3IEBAIGNsYXNzIFJ1
bkphdmFTY3JpcHRDb25maXJtUmVzdWx0TGlzdGVuZXIgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBs
PEFQSTo6T2JqZWN0OjpUCiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8UnVuSmF2YVNj
cmlwdENvbmZpcm1SZXN1bHRMaXN0ZW5lcj4gY3JlYXRlKHN0ZDo6ZnVuY3Rpb248dm9pZCAoYm9v
bCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IFJ1bkphdmFTY3JpcHRDb25maXJtUmVzdWx0TGlzdGVuZXIoV1RGOjptb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFJ1bkphdmFTY3JpcHRD
b25maXJtUmVzdWx0TGlzdGVuZXIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpKTsKICAgICB9
CiAKICAgICB2aXJ0dWFsIH5SdW5KYXZhU2NyaXB0Q29uZmlybVJlc3VsdExpc3RlbmVyKCkKQEAg
LTE1NDgsNyArMTU0OCw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBSdW5K
YXZhU2NyaXB0Q29uZmlybVJlc3VsdExpc3RlbmVyKHN0ZDo6ZnVuY3Rpb248dm9pZCAoYm9vbCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCi0gICAgICAgIDogbV9jb21wbGV0aW9uSGFuZGxlcihXVEY6
Om1vdmUoY29tcGxldGlvbkhhbmRsZXIpKQorICAgICAgICA6IG1fY29tcGxldGlvbkhhbmRsZXIo
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpCiAgICAgewogICAgIH0KIApAQCAtMTU1OSw3ICsx
NTU5LDcgQEAgY2xhc3MgUnVuSmF2YVNjcmlwdFByb21wdFJlc3VsdExpc3RlbmVyIDogcHVibGlj
IEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHkKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFz
c1JlZlB0cjxSdW5KYXZhU2NyaXB0UHJvbXB0UmVzdWx0TGlzdGVuZXI+IGNyZWF0ZShzdGQ6OmZ1
bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBSdW5KYXZhU2NyaXB0UHJvbXB0UmVzdWx0TGlz
dGVuZXIoV1RGOjptb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkpOworICAgICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IFJ1bkphdmFTY3JpcHRQcm9tcHRSZXN1bHRMaXN0ZW5lcihXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSkpOwogICAgIH0KIAogICAgIHZpcnR1YWwgflJ1bkphdmFTY3JpcHRQcm9t
cHRSZXN1bHRMaXN0ZW5lcigpCkBAIC0xNTczLDcgKzE1NzMsNyBAQCBwdWJsaWM6CiAKIHByaXZh
dGU6CiAgICAgZXhwbGljaXQgUnVuSmF2YVNjcmlwdFByb21wdFJlc3VsdExpc3RlbmVyKHN0ZDo6
ZnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCi0gICAg
ICAgIDogbV9jb21wbGV0aW9uSGFuZGxlcihXVEY6Om1vdmUoY29tcGxldGlvbkhhbmRsZXIpKQor
ICAgICAgICA6IG1fY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
CiAgICAgewogICAgIH0KIApAQCAtMTY2Nyw3ICsxNjY3LDcgQEAgdm9pZCBXS1BhZ2VTZXRQYWdl
VUlDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZVVJQ2xpZW50QmFzZSogd2tD
bGllbnQKICAgICAgICAgICAgICAgICBtYXAuc2V0KCJyZXNpemFibGUiLCBBUEk6OkJvb2xlYW46
OmNyZWF0ZSh3aW5kb3dGZWF0dXJlcy5yZXNpemFibGUpKTsKICAgICAgICAgICAgICAgICBtYXAu
c2V0KCJmdWxsc2NyZWVuIiwgQVBJOjpCb29sZWFuOjpjcmVhdGUod2luZG93RmVhdHVyZXMuZnVs
bHNjcmVlbikpOwogICAgICAgICAgICAgICAgIG1hcC5zZXQoImRpYWxvZyIsIEFQSTo6Qm9vbGVh
bjo6Y3JlYXRlKHdpbmRvd0ZlYXR1cmVzLmRpYWxvZykpOwotICAgICAgICAgICAgICAgIFJlZjxB
UEk6OkRpY3Rpb25hcnk+IGZlYXR1cmVzTWFwID0gQVBJOjpEaWN0aW9uYXJ5OjpjcmVhdGUoV1RG
Ojptb3ZlKG1hcCkpOworICAgICAgICAgICAgICAgIFJlZjxBUEk6OkRpY3Rpb25hcnk+IGZlYXR1
cmVzTWFwID0gQVBJOjpEaWN0aW9uYXJ5OjpjcmVhdGUoV1RGTW92ZShtYXApKTsKIAogICAgICAg
ICAgICAgICAgIGlmIChtX2NsaWVudC5jcmVhdGVOZXdQYWdlX2RlcHJlY2F0ZWRGb3JVc2VXaXRo
VjEpIHsKICAgICAgICAgICAgICAgICAgICAgUmVmPEFQSTo6VVJMUmVxdWVzdD4gcmVxdWVzdCA9
IEFQSTo6VVJMUmVxdWVzdDo6Y3JlYXRlKHJlc291cmNlUmVxdWVzdCk7CkBAIC0xNzI0LDcgKzE3
MjQsNyBAQCB2b2lkIFdLUGFnZVNldFBhZ2VVSUNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29u
c3QgV0tQYWdlVUlDbGllbnRCYXNlKiB3a0NsaWVudAogICAgICAgICB2aXJ0dWFsIHZvaWQgcnVu
SmF2YVNjcmlwdEFsZXJ0KFdlYlBhZ2VQcm94eSogcGFnZSwgY29uc3QgU3RyaW5nJiBtZXNzYWdl
LCBXZWJGcmFtZVByb3h5KiBmcmFtZSwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0
eU9yaWdpbkRhdGEsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4gY29tcGxldGlvbkhhbmRsZXIpIG92
ZXJyaWRlCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmIChtX2NsaWVudC5ydW5KYXZhU2NyaXB0
QWxlcnQpIHsKLSAgICAgICAgICAgICAgICBSZWZQdHI8UnVuSmF2YVNjcmlwdEFsZXJ0UmVzdWx0
TGlzdGVuZXI+IGxpc3RlbmVyID0gUnVuSmF2YVNjcmlwdEFsZXJ0UmVzdWx0TGlzdGVuZXI6OmNy
ZWF0ZShXVEY6Om1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICAgICAgICAgICAgICBSZWZQ
dHI8UnVuSmF2YVNjcmlwdEFsZXJ0UmVzdWx0TGlzdGVuZXI+IGxpc3RlbmVyID0gUnVuSmF2YVNj
cmlwdEFsZXJ0UmVzdWx0TGlzdGVuZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7CiAgICAgICAgICAgICAgICAgUmVmUHRyPEFQSTo6U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5
T3JpZ2luID0gQVBJOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHNlY3VyaXR5T3JpZ2luRGF0YS5w
cm90b2NvbCwgc2VjdXJpdHlPcmlnaW5EYXRhLmhvc3QsIHNlY3VyaXR5T3JpZ2luRGF0YS5wb3J0
KTsKICAgICAgICAgICAgICAgICBtX2NsaWVudC5ydW5KYXZhU2NyaXB0QWxlcnQodG9BUEkocGFn
ZSksIHRvQVBJKG1lc3NhZ2UuaW1wbCgpKSwgdG9BUEkoZnJhbWUpLCB0b0FQSShzZWN1cml0eU9y
aWdpbi5nZXQoKSksIHRvQVBJKGxpc3RlbmVyLmdldCgpKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJ
bmZvKTsKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0xNzUwLDcgKzE3NTAsNyBAQCB2b2lk
IFdLUGFnZVNldFBhZ2VVSUNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlVUlD
bGllbnRCYXNlKiB3a0NsaWVudAogICAgICAgICB2aXJ0dWFsIHZvaWQgcnVuSmF2YVNjcmlwdENv
bmZpcm0oV2ViUGFnZVByb3h5KiBwYWdlLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIFdlYkZyYW1l
UHJveHkqIGZyYW1lLCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luRGF0
YSwgc3RkOjpmdW5jdGlvbjx2b2lkIChib29sKT4gY29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRl
CiAgICAgICAgIHsKICAgICAgICAgICAgIGlmIChtX2NsaWVudC5ydW5KYXZhU2NyaXB0Q29uZmly
bSkgewotICAgICAgICAgICAgICAgIFJlZlB0cjxSdW5KYXZhU2NyaXB0Q29uZmlybVJlc3VsdExp
c3RlbmVyPiBsaXN0ZW5lciA9IFJ1bkphdmFTY3JpcHRDb25maXJtUmVzdWx0TGlzdGVuZXI6OmNy
ZWF0ZShXVEY6Om1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICAgICAgICAgICAgICBSZWZQ
dHI8UnVuSmF2YVNjcmlwdENvbmZpcm1SZXN1bHRMaXN0ZW5lcj4gbGlzdGVuZXIgPSBSdW5KYXZh
U2NyaXB0Q29uZmlybVJlc3VsdExpc3RlbmVyOjpjcmVhdGUoV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpOwogICAgICAgICAgICAgICAgIFJlZlB0cjxBUEk6OlNlY3VyaXR5T3JpZ2luPiBzZWN1
cml0eU9yaWdpbiA9IEFQSTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZShzZWN1cml0eU9yaWdpbkRh
dGEucHJvdG9jb2wsIHNlY3VyaXR5T3JpZ2luRGF0YS5ob3N0LCBzZWN1cml0eU9yaWdpbkRhdGEu
cG9ydCk7CiAgICAgICAgICAgICAgICAgbV9jbGllbnQucnVuSmF2YVNjcmlwdENvbmZpcm0odG9B
UEkocGFnZSksIHRvQVBJKG1lc3NhZ2UuaW1wbCgpKSwgdG9BUEkoZnJhbWUpLCB0b0FQSShzZWN1
cml0eU9yaWdpbi5nZXQoKSksIHRvQVBJKGxpc3RlbmVyLmdldCgpKSwgbV9jbGllbnQuYmFzZS5j
bGllbnRJbmZvKTsKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0xNzc3LDcgKzE3NzcsNyBA
QCB2b2lkIFdLUGFnZVNldFBhZ2VVSUNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQ
YWdlVUlDbGllbnRCYXNlKiB3a0NsaWVudAogICAgICAgICB2aXJ0dWFsIHZvaWQgcnVuSmF2YVNj
cmlwdFByb21wdChXZWJQYWdlUHJveHkqIHBhZ2UsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29u
c3QgU3RyaW5nJiBkZWZhdWx0VmFsdWUsIFdlYkZyYW1lUHJveHkqIGZyYW1lLCBjb25zdCBTZWN1
cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luRGF0YSwgc3RkOjpmdW5jdGlvbjx2b2lkIChj
b25zdCBTdHJpbmcmKT4gY29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlCiAgICAgICAgIHsKICAg
ICAgICAgICAgIGlmIChtX2NsaWVudC5ydW5KYXZhU2NyaXB0UHJvbXB0KSB7Ci0gICAgICAgICAg
ICAgICAgUmVmUHRyPFJ1bkphdmFTY3JpcHRQcm9tcHRSZXN1bHRMaXN0ZW5lcj4gbGlzdGVuZXIg
PSBSdW5KYXZhU2NyaXB0UHJvbXB0UmVzdWx0TGlzdGVuZXI6OmNyZWF0ZShXVEY6Om1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKTsKKyAgICAgICAgICAgICAgICBSZWZQdHI8UnVuSmF2YVNjcmlwdFBy
b21wdFJlc3VsdExpc3RlbmVyPiBsaXN0ZW5lciA9IFJ1bkphdmFTY3JpcHRQcm9tcHRSZXN1bHRM
aXN0ZW5lcjo6Y3JlYXRlKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAgICAg
ICAgICBSZWZQdHI8QVBJOjpTZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW4gPSBBUEk6OlNl
Y3VyaXR5T3JpZ2luOjpjcmVhdGUoc2VjdXJpdHlPcmlnaW5EYXRhLnByb3RvY29sLCBzZWN1cml0
eU9yaWdpbkRhdGEuaG9zdCwgc2VjdXJpdHlPcmlnaW5EYXRhLnBvcnQpOwogICAgICAgICAgICAg
ICAgIG1fY2xpZW50LnJ1bkphdmFTY3JpcHRQcm9tcHQodG9BUEkocGFnZSksIHRvQVBJKG1lc3Nh
Z2UuaW1wbCgpKSwgdG9BUEkoZGVmYXVsdFZhbHVlLmltcGwoKSksIHRvQVBJKGZyYW1lKSwgdG9B
UEkoc2VjdXJpdHlPcmlnaW4uZ2V0KCkpLCB0b0FQSShsaXN0ZW5lci5nZXQoKSksIG1fY2xpZW50
LmJhc2UuY2xpZW50SW5mbyk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjMwNyw3ICsy
MzA3LDcgQEAgdm9pZCBXS1BhZ2VTZXRQYWdlTmF2aWdhdGlvbkNsaWVudChXS1BhZ2VSZWYgcGFn
ZVJlZiwgY29uc3QgV0tQYWdlTmF2aWdhdGlvbkNsaWUKICAgICBXZWJQYWdlUHJveHkqIHdlYlBh
Z2VQcm94eSA9IHRvSW1wbChwYWdlUmVmKTsKIAogICAgIGF1dG8gbmF2aWdhdGlvbkNsaWVudCA9
IHN0ZDo6bWFrZV91bmlxdWU8TmF2aWdhdGlvbkNsaWVudD4od2tDbGllbnQpOwotICAgIHdlYlBh
Z2VQcm94eS0+c2V0TmF2aWdhdGlvbkNsaWVudChXVEY6Om1vdmUobmF2aWdhdGlvbkNsaWVudCkp
OworICAgIHdlYlBhZ2VQcm94eS0+c2V0TmF2aWdhdGlvbkNsaWVudChXVEZNb3ZlKG5hdmlnYXRp
b25DbGllbnQpKTsKIH0KIAogdm9pZCBXS1BhZ2VTZXRTZXNzaW9uKFdLUGFnZVJlZiBwYWdlUmVm
LCBXS1Nlc3Npb25SZWYgc2Vzc2lvbikKQEAgLTI1NDUsNyArMjU0NSw3IEBAIFdLQXJyYXlSZWYg
V0tQYWdlQ29weVJlbGF0ZWRQYWdlcyhXS1BhZ2VSZWYgcGFnZVJlZikKICAgICAgICAgICAgIHJl
bGF0ZWRQYWdlcy5hcHBlbmQocGFnZSk7CiAgICAgfQogCi0gICAgcmV0dXJuIHRvQVBJKCZBUEk6
OkFycmF5OjpjcmVhdGUoV1RGOjptb3ZlKHJlbGF0ZWRQYWdlcykpLmxlYWtSZWYoKSk7CisgICAg
cmV0dXJuIHRvQVBJKCZBUEk6OkFycmF5OjpjcmVhdGUoV1RGTW92ZShyZWxhdGVkUGFnZXMpKS5s
ZWFrUmVmKCkpOwogfQogCiB2b2lkIFdLUGFnZVNldE1heVN0YXJ0TWVkaWFXaGVuSW5XaW5kb3co
V0tQYWdlUmVmIHBhZ2VSZWYsIGJvb2wgbWF5U3RhcnRNZWRpYSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1Jlc291cmNlQ2FjaGVNYW5hZ2VyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1Jlc291cmNlQ2FjaGVNYW5hZ2VyLmNwcApp
bmRleCA2ZmFhODMzOTdkZTc2MDcxNTY1MjQ0NTE2NDU2NTFiNGZiMDdiOTAzLi4wZTNjN2EyZDY1
NmUxMWJlYTVlMzcxOWU4NTAyNjg4ODBiZWE5ZmEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0MvV0tSZXNvdXJjZUNhY2hlTWFuYWdlci5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUmVzb3VyY2VDYWNoZU1hbmFnZXIuY3BwCkBAIC01
OSw3ICs1OSw3IEBAIHZvaWQgV0tSZXNvdXJjZUNhY2hlTWFuYWdlckdldENhY2hlT3JpZ2lucyhX
S1Jlc291cmNlQ2FjaGVNYW5hZ2VyUmVmIGNhY2hlTWFuYWdlCiAgICAgICAgICAgICAgICAgc2Vj
dXJpdHlPcmlnaW5zLmFwcGVuZChBUEk6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoKm9yaWdpbikp
OwogICAgICAgICB9CiAKLSAgICAgICAgY2FsbGJhY2sodG9BUEkoQVBJOjpBcnJheTo6Y3JlYXRl
KFdURjo6bW92ZShzZWN1cml0eU9yaWdpbnMpKS5wdHIoKSksIG51bGxwdHIsIGNvbnRleHQpOwor
ICAgICAgICBjYWxsYmFjayh0b0FQSShBUEk6OkFycmF5OjpjcmVhdGUoV1RGTW92ZShzZWN1cml0
eU9yaWdpbnMpKS5wdHIoKSksIG51bGxwdHIsIGNvbnRleHQpOwogICAgIH0pOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tTZXNzaW9uU3RhdGVSZWYu
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLU2Vzc2lvblN0YXRlUmVmLmNw
cAppbmRleCBkNzNmZDJjMjg4ZTUxMDAwNjQ5Y2QxNmU2YTY0ODY3Mzc2NDRiODNkLi45OGU3MTc1
MTlkNTZhMjc1YTUwNDExNWZjZDg2ZmFlZjQ1NWMwZDY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tTZXNzaW9uU3RhdGVSZWYuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1Nlc3Npb25TdGF0ZVJlZi5jcHAKQEAgLTQzLDcgKzQz
LDcgQEAgV0tTZXNzaW9uU3RhdGVSZWYgV0tTZXNzaW9uU3RhdGVDcmVhdGVGcm9tRGF0YShXS0Rh
dGFSZWYgZGF0YSkKICAgICBpZiAoIVdlYktpdDo6ZGVjb2RlTGVnYWN5U2Vzc2lvblN0YXRlKFdl
YktpdDo6dG9JbXBsKGRhdGEpLT5ieXRlcygpLCBXZWJLaXQ6OnRvSW1wbChkYXRhKS0+c2l6ZSgp
LCBzZXNzaW9uU3RhdGUpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBX
ZWJLaXQ6OnRvQVBJKCZBUEk6OlNlc3Npb25TdGF0ZTo6Y3JlYXRlKFdURjo6bW92ZShzZXNzaW9u
U3RhdGUpKS5sZWFrUmVmKCkpOworICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKCZBUEk6OlNlc3Np
b25TdGF0ZTo6Y3JlYXRlKFdURk1vdmUoc2Vzc2lvblN0YXRlKSkubGVha1JlZigpKTsKIH0KIAog
V0tEYXRhUmVmIFdLU2Vzc2lvblN0YXRlQ29weURhdGEoV0tTZXNzaW9uU3RhdGVSZWYgc2Vzc2lv
blN0YXRlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL21hYy9X
S0NvbnRleHRQcml2YXRlTWFjLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL21h
Yy9XS0NvbnRleHRQcml2YXRlTWFjLm1tCmluZGV4IDQzYTIzNjJjZWU3ZDI0M2FjM2Q2ZTQ2MWZi
ZDc1NzRmYWQ3NjUyNjMuLmJmZTNkZjc2OTU2NjgxM2QwNzE2Zjk4OGU5N2Q0MzU1YzFkOTY1NTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9tYWMvV0tDb250ZXh0
UHJpdmF0ZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvbWFjL1dL
Q29udGV4dFByaXZhdGVNYWMubW0KQEAgLTkxLDcgKzkxLDcgQEAgdm9pZCBXS0NvbnRleHRHZXRJ
bmZvRm9ySW5zdGFsbGVkUGx1Z0lucyhXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgV0tDb250ZXh0
R2V0SW4KICAgICBmb3IgKGNvbnN0IGF1dG8mIHBsdWdpbjogcGx1Z2lucykKICAgICAgICAgcGx1
Z2luSW5mb0RpY3Rpb25hcmllcy51bmNoZWNrZWRBcHBlbmQoY3JlYXRlUGx1Z2luSW5mb3JtYXRp
b25EaWN0aW9uYXJ5KHBsdWdpbikpOwogCi0gICAgUmVmUHRyPEFQSTo6QXJyYXk+IGFycmF5ID0g
QVBJOjpBcnJheTo6Y3JlYXRlKFdURjo6bW92ZShwbHVnaW5JbmZvRGljdGlvbmFyaWVzKSk7Cisg
ICAgUmVmUHRyPEFQSTo6QXJyYXk+IGFycmF5ID0gQVBJOjpBcnJheTo6Y3JlYXRlKFdURk1vdmUo
cGx1Z2luSW5mb0RpY3Rpb25hcmllcykpOwogCiAgICAgdG9JbXBsKGNvbnRleHRSZWYpLT5yZWYo
KTsKICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeKCkgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL21hYy9XS1BhZ2VQcml2
YXRlTWFjLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL21hYy9XS1BhZ2VQcml2
YXRlTWFjLm1tCmluZGV4IDE3MGM2ZDhlNDRlN2Q0ZDAzZjJjMmY3MDRmMWMwZGEzZGQ0MWI5MzAu
LjYwMWQ3ZTNlZTVhNWFlYjcxZWI0NTEwNmVmMTE1M2JjNmJlOWU0OTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9tYWMvV0tQYWdlUHJpdmF0ZU1hYy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvbWFjL1dLUGFnZVByaXZhdGVNYWMubW0K
QEAgLTUxLDcgKzUxLDcgQEAgLSAoaWQpaW5pdFdpdGhQYWdlOihSZWZQdHI8V2ViUGFnZVByb3h5
PiYmKXBhZ2UKICAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKICAgICAgICAgcmV0dXJu
IG5pbDsKIAotICAgIF9wYWdlID0gV1RGOjptb3ZlKHBhZ2UpOworICAgIF9wYWdlID0gV1RGTW92
ZShwYWdlKTsKICAgICBfb2JzZXJ2ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VMb2FkU3RhdGVP
YnNlcnZlcj4oc2VsZiwgQCJVUkwiKTsKICAgICBfcGFnZS0+cGFnZUxvYWRTdGF0ZSgpLmFkZE9i
c2VydmVyKCpfb2JzZXJ2ZXIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLQnJvd3NpbmdDb250ZXh0R3JvdXAubW0gYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLQnJvd3NpbmdDb250ZXh0R3JvdXAubW0KaW5kZXggNDY3MDlm
N2M3NjQ2NTg0Y2FkNWJiMjM5ZGY2OGYyMDM2MjViYjI0Ni4uZjYwNGIxNTAyNDgxMjgzNjQ5ZTZi
NjMwNDNkMWRkOTBhZDI1MmQ0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4dEdyb3VwLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tCcm93c2luZ0NvbnRleHRHcm91cC5tbQpAQCAtMTI2LDcg
KzEyNiw3IEBAIHN0YXRpYyBXS1JldGFpblB0cjxXS0FycmF5UmVmPiBjcmVhdGVXS0FycmF5KE5T
QXJyYXkgKmFycmF5KQogICAgICAgICAgICAgc3RyaW5ncy51bmNoZWNrZWRBcHBlbmQoYWRvcHRS
ZWYodG9JbXBsKFdLU3RyaW5nQ3JlYXRlV2l0aENGU3RyaW5nKChDRlN0cmluZ1JlZillbnRyeSkp
KSk7CiAgICAgfQogCi0gICAgcmV0dXJuIHRvQVBJKCZBUEk6OkFycmF5OjpjcmVhdGUoV1RGOjpt
b3ZlKHN0cmluZ3MpKS5sZWFrUmVmKCkpOworICAgIHJldHVybiB0b0FQSSgmQVBJOjpBcnJheTo6
Y3JlYXRlKFdURk1vdmUoc3RyaW5ncykpLmxlYWtSZWYoKSk7CiB9CiAKIC0odm9pZClhZGRVc2Vy
U3R5bGVTaGVldDooTlNTdHJpbmcgKilzb3VyY2UgYmFzZVVSTDooTlNVUkwgKiliYXNlVVJMIHdo
aXRlbGlzdGVkVVJMUGF0dGVybnM6KE5TQXJyYXkgKil3aGl0ZWxpc3QgYmxhY2tsaXN0ZWRVUkxQ
YXR0ZXJuczooTlNBcnJheSAqKWJsYWNrbGlzdCBtYWluRnJhbWVPbmx5OihCT09MKW1haW5GcmFt
ZU9ubHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcu
bW0KaW5kZXggZmZmOGQxNzZiMWQ4NzlhYTlkMDFjMDA2ODYxYmYzNGFjYzA0YzE3Yi4uNjI3ZWEy
NjhkZjg0YWJkNmJmNDNjM2I0NmRmY2E2MzQxNWEyOWEwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTM3OCw3ICszNzgsNyBAQCAt
IChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZTooQ0dSZWN0KWZyYW1lIGNvbmZpZ3VyYXRpb246
KFdLV2ViVmlld0NvbmZpZ3VyYXRpbwogCiAgICAgW3NlbGYgYWRkU3Vidmlldzpfc2Nyb2xsVmll
dy5nZXQoKV07CiAKLSAgICBfY29udGVudFZpZXcgPSBhZG9wdE5TKFtbV0tDb250ZW50VmlldyBh
bGxvY10gaW5pdFdpdGhGcmFtZTpib3VuZHMgcHJvY2Vzc1Bvb2w6cHJvY2Vzc1Bvb2wgY29uZmln
dXJhdGlvbjpXVEY6Om1vdmUocGFnZUNvbmZpZ3VyYXRpb24pIHdlYlZpZXc6c2VsZl0pOworICAg
IF9jb250ZW50VmlldyA9IGFkb3B0TlMoW1tXS0NvbnRlbnRWaWV3IGFsbG9jXSBpbml0V2l0aEZy
YW1lOmJvdW5kcyBwcm9jZXNzUG9vbDpwcm9jZXNzUG9vbCBjb25maWd1cmF0aW9uOldURk1vdmUo
cGFnZUNvbmZpZ3VyYXRpb24pIHdlYlZpZXc6c2VsZl0pOwogCiAgICAgX3BhZ2UgPSBbX2NvbnRl
bnRWaWV3IHBhZ2VdOwogICAgIF9wYWdlLT5zZXREZXZpY2VPcmllbnRhdGlvbihkZXZpY2VPcmll
bnRhdGlvbigpKTsKQEAgLTQwOCw3ICs0MDgsNyBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhG
cmFtZTooQ0dSZWN0KWZyYW1lIGNvbmZpZ3VyYXRpb246KFdLV2ViVmlld0NvbmZpZ3VyYXRpbwog
I2VuZGlmCiAKICNpZiBQTEFURk9STShNQUMpCi0gICAgX2ltcGwgPSBzdGQ6Om1ha2VfdW5pcXVl
PFdlYktpdDo6V2ViVmlld0ltcGw+KHNlbGYsIHNlbGYsIHByb2Nlc3NQb29sLCBXVEY6Om1vdmUo
cGFnZUNvbmZpZ3VyYXRpb24pKTsKKyAgICBfaW1wbCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0
OjpXZWJWaWV3SW1wbD4oc2VsZiwgc2VsZiwgcHJvY2Vzc1Bvb2wsIFdURk1vdmUocGFnZUNvbmZp
Z3VyYXRpb24pKTsKICAgICBfcGFnZSA9ICZfaW1wbC0+cGFnZSgpOwogCiAgICAgX2ltcGwtPnNl
dEF1dG9tYXRpY2FsbHlBZGp1c3RzQ29udGVudEluc2V0cyh0cnVlKTsKQEAgLTExOTEsOCArMTE5
MSw4IEBAIC0gKFBhc3NSZWZQdHI8V2ViS2l0OjpWaWV3U25hcHNob3Q+KV90YWtlVmlld1NuYXBz
aG90CiAgICAgQ0FSZW5kZXJTZXJ2ZXJSZW5kZXJMYXllcldpdGhUcmFuc2Zvcm0oTUFDSF9QT1JU
X05VTEwsIHNlbGYubGF5ZXIuY29udGV4dC5jb250ZXh0SWQsIHJlaW50ZXJwcmV0X2Nhc3Q8dWlu
dDY0X3Q+KHNlbGYubGF5ZXIpLCBzdXJmYWNlLT5zdXJmYWNlKCksIDAsIDAsICZ0cmFuc2Zvcm0p
OwogCiAgICAgUmVmUHRyPFdlYktpdDo6Vmlld1NuYXBzaG90PiB2aWV3U25hcHNob3QgPSBXZWJL
aXQ6OlZpZXdTbmFwc2hvdDo6Y3JlYXRlKG51bGxwdHIpOwotICAgIFdlYkNvcmU6OklPU3VyZmFj
ZTo6Y29udmVydFRvRm9ybWF0KFdURjo6bW92ZShzdXJmYWNlKSwgV2ViQ29yZTo6SU9TdXJmYWNl
OjpGb3JtYXQ6OllVVjQyMiwgW3ZpZXdTbmFwc2hvdF0oc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6
OklPU3VyZmFjZT4gY29udmVydGVkU3VyZmFjZSkgewotICAgICAgICB2aWV3U25hcHNob3QtPnNl
dFN1cmZhY2UoV1RGOjptb3ZlKGNvbnZlcnRlZFN1cmZhY2UpKTsKKyAgICBXZWJDb3JlOjpJT1N1
cmZhY2U6OmNvbnZlcnRUb0Zvcm1hdChXVEZNb3ZlKHN1cmZhY2UpLCBXZWJDb3JlOjpJT1N1cmZh
Y2U6OkZvcm1hdDo6WVVWNDIyLCBbdmlld1NuYXBzaG90XShzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29y
ZTo6SU9TdXJmYWNlPiBjb252ZXJ0ZWRTdXJmYWNlKSB7CisgICAgICAgIHZpZXdTbmFwc2hvdC0+
c2V0U3VyZmFjZShXVEZNb3ZlKGNvbnZlcnRlZFN1cmZhY2UpKTsKICAgICB9KTsKIAogICAgIHJl
dHVybiB2aWV3U25hcHNob3Q7CkBAIC0zMDcwLDcgKzMwNzAsNyBAQCAtICh2b2lkKV9yZXN0b3Jl
RnJvbVNlc3Npb25TdGF0ZURhdGE6KE5TRGF0YSAqKXNlc3Npb25TdGF0ZURhdGEKICAgICBpZiAo
IVdlYktpdDo6ZGVjb2RlTGVnYWN5U2Vzc2lvblN0YXRlKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4
X3QqPihzZXNzaW9uU3RhdGVEYXRhLmJ5dGVzKSwgc2Vzc2lvblN0YXRlRGF0YS5sZW5ndGgsIHNl
c3Npb25TdGF0ZSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIF9wYWdlLT5yZXN0b3JlRnJvbVNl
c3Npb25TdGF0ZShXVEY6Om1vdmUoc2Vzc2lvblN0YXRlKSwgdHJ1ZSk7CisgICAgX3BhZ2UtPnJl
c3RvcmVGcm9tU2Vzc2lvblN0YXRlKFdURk1vdmUoc2Vzc2lvblN0YXRlKSwgdHJ1ZSk7CiB9CiAK
IC0gKFdLTmF2aWdhdGlvbiAqKV9yZXN0b3JlU2Vzc2lvblN0YXRlOihfV0tTZXNzaW9uU3RhdGUg
KilzZXNzaW9uU3RhdGUgYW5kTmF2aWdhdGU6KEJPT0wpbmF2aWdhdGUKQEAgLTM0MzksNyArMzQz
OSw3IEBAIC0gKHZvaWQpX3NldElucHV0RGVsZWdhdGU6KGlkIDxfV0tJbnB1dERlbGVnYXRlPilp
bnB1dERlbGVnYXRlCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogCi0gICAgICAg
ICAgICBSZWZQdHI8V2ViS2l0OjpXZWJGb3JtU3VibWlzc2lvbkxpc3RlbmVyUHJveHk+IGxvY2Fs
TGlzdGVuZXIgPSBXVEY6Om1vdmUobGlzdGVuZXIpOworICAgICAgICAgICAgUmVmUHRyPFdlYktp
dDo6V2ViRm9ybVN1Ym1pc3Npb25MaXN0ZW5lclByb3h5PiBsb2NhbExpc3RlbmVyID0gV1RGTW92
ZShsaXN0ZW5lcik7CiAgICAgICAgICAgICBSZWZQdHI8V2ViS2l0OjpDb21wbGV0aW9uSGFuZGxl
ckNhbGxDaGVja2VyPiBjaGVja2VyID0gV2ViS2l0OjpDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVj
a2VyOjpjcmVhdGUoaW5wdXREZWxlZ2F0ZS5nZXQoKSwgQHNlbGVjdG9yKF93ZWJWaWV3OndpbGxT
dWJtaXRGb3JtVmFsdWVzOnVzZXJPYmplY3Q6c3VibWlzc2lvbkhhbmRsZXI6KSk7CiAgICAgICAg
ICAgICBbaW5wdXREZWxlZ2F0ZSBfd2ViVmlldzptX3dlYlZpZXcgd2lsbFN1Ym1pdEZvcm1WYWx1
ZXM6dmFsdWVNYXAuZ2V0KCkgdXNlck9iamVjdDp1c2VyT2JqZWN0IHN1Ym1pc3Npb25IYW5kbGVy
Oltsb2NhbExpc3RlbmVyLCBjaGVja2VyXSB7CiAgICAgICAgICAgICAgICAgY2hlY2tlci0+ZGlk
Q2FsbENvbXBsZXRpb25IYW5kbGVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW0KaW5kZXggMGU5
Yzk2NWE4MzYwNDlkNDIzMmE0YjE2ZTJiZGE5ZjE1N2IwMDI2OC4uZmExZjQ0ZmIxMTM2OGJmZmZh
OWYyNjkwODE0OGQyOGNjNDQ3MzYwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbQpAQCAtNjYs
NyArNjYsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldChUJiYgdCkKICAgICB7Ci0gICAgICAg
IG1fdmFsdWUgPSBXVEY6Om1vdmUodCk7CisgICAgICAgIG1fdmFsdWUgPSBXVEZNb3ZlKHQpOwog
ICAgICAgICBtX2lzSW5pdGlhbGl6ZWQgPSB0cnVlOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0gYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQpp
bmRleCBmYTUzYzUyZTIwYWIxZGM3OTMyODJlYTA1NTdlMTBmMWI3Y2E3YzgzLi5kNGQwNTJiNzlm
OTZmZmY4MmZhZmVlMTM1Y2FlYjhjYzAyMTQzYjEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQpAQCAtODMs
OSArODMsOSBAQCAtICh2b2lkKWZldGNoRGF0YVJlY29yZHNPZlR5cGVzOihOU1NldCAqKWRhdGFU
eXBlcyBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoVwogICAgICAgICBlbGVtZW50cy5yZXNl
cnZlSW5pdGlhbENhcGFjaXR5KHdlYnNpdGVEYXRhUmVjb3Jkcy5zaXplKCkpOwogCiAgICAgICAg
IGZvciAoYXV0byYgd2Vic2l0ZURhdGFSZWNvcmQgOiB3ZWJzaXRlRGF0YVJlY29yZHMpCi0gICAg
ICAgICAgICBlbGVtZW50cy51bmNoZWNrZWRBcHBlbmQoQVBJOjpXZWJzaXRlRGF0YVJlY29yZDo6
Y3JlYXRlKFdURjo6bW92ZSh3ZWJzaXRlRGF0YVJlY29yZCkpKTsKKyAgICAgICAgICAgIGVsZW1l
bnRzLnVuY2hlY2tlZEFwcGVuZChBUEk6OldlYnNpdGVEYXRhUmVjb3JkOjpjcmVhdGUoV1RGTW92
ZSh3ZWJzaXRlRGF0YVJlY29yZCkpKTsKIAotICAgICAgICBjb21wbGV0aW9uSGFuZGxlckNvcHko
d3JhcHBlcihBUEk6OkFycmF5OjpjcmVhdGUoV1RGOjptb3ZlKGVsZW1lbnRzKSkpKTsKKyAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXJDb3B5KHdyYXBwZXIoQVBJOjpBcnJheTo6Y3JlYXRlKFdURk1v
dmUoZWxlbWVudHMpKSkpOwogCiAgICAgICAgIEJsb2NrX3JlbGVhc2UoY29tcGxldGlvbkhhbmRs
ZXJDb3B5KTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLm1tIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24ubW0KaW5kZXgg
ZmExODAzNzUzYzM4OWNiYTIwZTAzOWViODgwMDA5NDY2NTlkNGI1ZC4uOThkZTU0ZTkzY2RhNWEw
MGNmMTYxMzZhZGQzNjlhMzk2MDJkYzU5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24ubW0KKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b24ubW0KQEAgLTEwMyw3ICsxMDMsNyBAQCAtICh2b2lkKXNldENhY2hlUGFydGl0aW9uZWRVUkxT
Y2hlbWVzOihOU0FycmF5ICopY2FjaGVQYXJ0aXRpb25lZFVSTFNjaGVtZXMKICAgICAgICAgICAg
IHNjaGVtZXMuYXBwZW5kKFN0cmluZygoTlNTdHJpbmcgKil1cmxTY2hlbWUpKTsKICAgICB9CiAg
ICAgCi0gICAgX3Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi0+c2V0Q2FjaGVQYXJ0aXRpb25lZFVS
TFNjaGVtZXMoV1RGOjptb3ZlKHNjaGVtZXMpKTsKKyAgICBfcHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uLT5zZXRDYWNoZVBhcnRpdGlvbmVkVVJMU2NoZW1lcyhXVEZNb3ZlKHNjaGVtZXMpKTsKIH0K
IAogLSAoTlNTdHJpbmcgKilkZXNjcmlwdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tTZXNzaW9uU3RhdGUubW0gYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0NvY29hL19XS1Nlc3Npb25TdGF0ZS5tbQppbmRleCBmODc3MDVhYTJkMDU4
MWJkMzcxNDM0YWM4YTdmMGNhNzJkZTEwNzJmLi41YjM1MmYzNDY2NjRlOTJhYzUxOGFkYWRjMmFh
ZWNjMjc3ZjNiMWRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS1Nlc3Npb25TdGF0ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0NvY29hL19XS1Nlc3Npb25TdGF0ZS5tbQpAQCAtNTAsNyArNTAsNyBAQCAtIChpbnN0YW5jZXR5
cGUpX2luaXRXaXRoU2Vzc2lvblN0YXRlOihXZWJLaXQ6OlNlc3Npb25TdGF0ZSlzZXNzaW9uU3Rh
dGUKICAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKICAgICAgICAgcmV0dXJuIG5pbDsK
IAotICAgIF9zZXNzaW9uU3RhdGUgPSBXVEY6Om1vdmUoc2Vzc2lvblN0YXRlKTsKKyAgICBfc2Vz
c2lvblN0YXRlID0gV1RGTW92ZShzZXNzaW9uU3RhdGUpOwogCiAgICAgcmV0dXJuIHNlbGY7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJD
b250ZW50RXh0ZW5zaW9uU3RvcmUubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS1VzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmUubW0KaW5kZXggMzk4MThiM2FmNjI0ZWM3
MDNiZmE5MmFiOTkwYTE0ZDYyZGUyMzg5Ny4uYjQyYmU4ZDM3Mjc5MTBlZjk1MDlmNTNjNGU4OWM4
YjI2OGNmMTU4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9fV0tVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLVXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZS5tbQpAQCAtNjAs
NyArNjAsNyBAQCAtICh2b2lkKWNvbXBpbGVDb250ZW50RXh0ZW5zaW9uRm9ySWRlbnRpZmllcjoo
TlNTdHJpbmcgKilpZGVudGlmaWVyIGVuY29kZWRDb250ZQogICAgIFtlbmNvZGVkQ29udGVudEV4
dGVuc2lvbiByZWxlYXNlXTsKICAgICBlbmNvZGVkQ29udGVudEV4dGVuc2lvbiA9IG5pbDsKIAot
ICAgIF91c2VyQ29udGVudEV4dGVuc2lvblN0b3JlLT5jb21waWxlQ29udGVudEV4dGVuc2lvbihp
ZGVudGlmaWVyLCBXVEY6Om1vdmUoanNvbiksIFtoYW5kbGVyXShSZWZQdHI8QVBJOjpVc2VyQ29u
dGVudEV4dGVuc2lvbj4gY29udGVudEV4dGVuc2lvbiwgc3RkOjplcnJvcl9jb2RlIGVycm9yKSB7
CisgICAgX3VzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmUtPmNvbXBpbGVDb250ZW50RXh0ZW5zaW9u
KGlkZW50aWZpZXIsIFdURk1vdmUoanNvbiksIFtoYW5kbGVyXShSZWZQdHI8QVBJOjpVc2VyQ29u
dGVudEV4dGVuc2lvbj4gY29udGVudEV4dGVuc2lvbiwgc3RkOjplcnJvcl9jb2RlIGVycm9yKSB7
CiAgICAgICAgIGlmIChlcnJvcikgewogICAgICAgICAgICAgYXV0byByYXdIYW5kbGVyID0gKHZv
aWQgKF4pKF9XS1VzZXJDb250ZW50RmlsdGVyICosIE5TRXJyb3IgKikpaGFuZGxlci5nZXQoKTsK
ICAgICAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX2RhdGFiYXNlX21hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvZXdrX2RhdGFiYXNlX21hbmFnZXIuY3BwCmluZGV4IDAzN2QxYzAwM2MxMTZmZmU4NTdm
M2EwOGM1M2JhYmY2YWE1OWE3ZTguLmRhY2Y3OGZhOTQ4NzBhNzFiYmE1NjA0ZDMzYzliYWI1MjFl
NzJkYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19k
YXRhYmFzZV9tYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfZGF0YWJhc2VfbWFuYWdlci5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgdm9pZCBFd2tEYXRh
YmFzZU1hbmFnZXI6OmdldERhdGFiYXNlT3JpZ2lucyhFd2tfRGF0YWJhc2VfTWFuYWdlcl9HZXRf
RGF0YWJhc2VfT3IKICAgICBmb3IgKGNvbnN0IGF1dG8mIG9yaWdpbklkZW50aWZpZXIgOiBvcmln
aW5zKQogICAgICAgICBzZWN1cml0eU9yaWdpbnMudW5jaGVja2VkQXBwZW5kKEFQSTo6U2VjdXJp
dHlPcmlnaW46OmNyZWF0ZSgqb3JpZ2luSWRlbnRpZmllcikpOwogCi0gICAgYXJyYXlDYWxsYmFj
ay0+cGVyZm9ybUNhbGxiYWNrV2l0aFJldHVyblZhbHVlKEFQSTo6QXJyYXk6OmNyZWF0ZShXVEY6
Om1vdmUoc2VjdXJpdHlPcmlnaW5zKSkucHRyKCkpOworICAgIGFycmF5Q2FsbGJhY2stPnBlcmZv
cm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShBUEk6OkFycmF5OjpjcmVhdGUoV1RGTW92ZShzZWN1
cml0eU9yaWdpbnMpKS5wdHIoKSk7CiB9CiAKIEVpbmFfTGlzdCogRXdrRGF0YWJhc2VNYW5hZ2Vy
OjpjcmVhdGVPcmlnaW5MaXN0KFdLQXJyYXlSZWYgb3JpZ2lucykgY29uc3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbnRleHRNZW51SXRlbS5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb250ZXh0TWVudUl0
ZW0uY3BwCmluZGV4IDRlZTgwZjU3MTE3ZDI1Y2VlOTEzNmE2NjI3YjYxNTVhM2Q2NjM5MjMuLjVh
M2E0NzI3MzU4YjBmNDYwODRmODdlYzk0OGU0ZGMyMjU0OTQwOTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvbnRleHRNZW51SXRlbS5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29udGV4dE1lbnVJdGVt
LmNwcApAQCAtMTA3LDcgKzEwNyw3IEBAIFdlYkNvbnRleHRNZW51SXRlbUd0ayB3ZWJraXRDb250
ZXh0TWVudUl0ZW1Ub1dlYkNvbnRleHRNZW51SXRlbUd0ayhXZWJLaXRDb250ZXh0CiAgICAgaWYg
KGl0ZW0tPnByaXYtPnN1Yk1lbnUpIHsKICAgICAgICAgVmVjdG9yPFdlYkNvbnRleHRNZW51SXRl
bUd0az4gc3ViTWVudUl0ZW1zOwogICAgICAgICB3ZWJraXRDb250ZXh0TWVudVBvcHVsYXRlKGl0
ZW0tPnByaXYtPnN1Yk1lbnUuZ2V0KCksIHN1Yk1lbnVJdGVtcyk7Ci0gICAgICAgIHJldHVybiBX
ZWJDb250ZXh0TWVudUl0ZW1HdGsoKml0ZW0tPnByaXYtPm1lbnVJdGVtLCBXVEY6Om1vdmUoc3Vi
TWVudUl0ZW1zKSk7CisgICAgICAgIHJldHVybiBXZWJDb250ZXh0TWVudUl0ZW1HdGsoKml0ZW0t
PnByaXYtPm1lbnVJdGVtLCBXVEZNb3ZlKHN1Yk1lbnVJdGVtcykpOwogICAgIH0KIAogICAgIHJl
dHVybiAqaXRlbS0+cHJpdi0+bWVudUl0ZW07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRGaWxlQ2hvb3NlclJlcXVlc3QuY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0RmlsZUNob29zZXJSZXF1ZXN0LmNwcAppbmRl
eCBiMjM1OTc2NjAwMjRmMjA4ODZkY2NmOWQ1YmFiZjFiZGRiNzIzMjczLi44Zjk0MWFjMWE5NWU4
YTUxY2U1MzIxOWYyNzAyZWU5YmU2MTBkZmI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRGaWxlQ2hvb3NlclJlcXVlc3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEZpbGVDaG9vc2VyUmVxdWVzdC5jcHAK
QEAgLTMxNSw3ICszMTUsNyBAQCB2b2lkIHdlYmtpdF9maWxlX2Nob29zZXJfcmVxdWVzdF9zZWxl
Y3RfZmlsZXMoV2ViS2l0RmlsZUNob29zZXJSZXF1ZXN0KiByZXF1ZXN0LAogICAgIGdfcHRyX2Fy
cmF5X2FkZChzZWxlY3RlZEZpbGVzLmdldCgpLCAwKTsKIAogICAgIC8vIFNlbGVjdCB0aGUgZmls
ZXMgaW4gV2ViQ29yZSBhbmQgdXBkYXRlIGxvY2FsIHByaXZhdGUgYXR0cmlidXRlcy4KLSAgICBy
ZXF1ZXN0LT5wcml2LT5saXN0ZW5lci0+Y2hvb3NlRmlsZXMoQVBJOjpBcnJheTo6Y3JlYXRlKFdU
Rjo6bW92ZShjaG9vc2VuRmlsZXMpKS5wdHIoKSk7CisgICAgcmVxdWVzdC0+cHJpdi0+bGlzdGVu
ZXItPmNob29zZUZpbGVzKEFQSTo6QXJyYXk6OmNyZWF0ZShXVEZNb3ZlKGNob29zZW5GaWxlcykp
LnB0cigpKTsKICAgICByZXF1ZXN0LT5wcml2LT5zZWxlY3RlZEZpbGVzID0gc2VsZWN0ZWRGaWxl
czsKICAgICByZXF1ZXN0LT5wcml2LT5oYW5kbGVkUmVxdWVzdCA9IHRydWU7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXROb3RpZmljYXRpb25Q
cm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXROb3Rp
ZmljYXRpb25Qcm92aWRlci5jcHAKaW5kZXggN2VkYzZjY2ZkYWM4YjE4ZjBjMTAzYWYyZjQ1ZjNl
NWNkMGNhMzIxYi4uNjIwNzUwYTQ0NzAzZTZlYWEwZjU2Njg2NGJlNzExMGQ3M2UyOWVmMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Tm90aWZpY2F0
aW9uUHJvdmlkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdE5vdGlmaWNhdGlvblByb3ZpZGVyLmNwcApAQCAtOTMsNyArOTMsNyBAQCB2b2lkIFdlYktp
dE5vdGlmaWNhdGlvblByb3ZpZGVyOjpub3RpZmljYXRpb25DbG9zZUNhbGxiYWNrKFdlYktpdE5v
dGlmaWNhdGlvbiogbgogICAgIHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEID0gd2Via2l0X25vdGlm
aWNhdGlvbl9nZXRfaWQobm90aWZpY2F0aW9uKTsKICAgICBWZWN0b3I8UmVmUHRyPEFQSTo6T2Jq
ZWN0Pj4gYXJyYXlJRHM7CiAgICAgYXJyYXlJRHMuYXBwZW5kKEFQSTo6VUludDY0OjpjcmVhdGUo
bm90aWZpY2F0aW9uSUQpKTsKLSAgICBwcm92aWRlci0+bV9ub3RpZmljYXRpb25NYW5hZ2VyLT5w
cm92aWRlckRpZENsb3NlTm90aWZpY2F0aW9ucyhBUEk6OkFycmF5OjpjcmVhdGUoV1RGOjptb3Zl
KGFycmF5SURzKSkucHRyKCkpOworICAgIHByb3ZpZGVyLT5tX25vdGlmaWNhdGlvbk1hbmFnZXIt
PnByb3ZpZGVyRGlkQ2xvc2VOb3RpZmljYXRpb25zKEFQSTo6QXJyYXk6OmNyZWF0ZShXVEZNb3Zl
KGFycmF5SURzKSkucHRyKCkpOwogICAgIHByb3ZpZGVyLT5tX25vdGlmaWNhdGlvbnMucmVtb3Zl
KG5vdGlmaWNhdGlvbklEKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJDb250ZXh0LmNwcAppbmRleCA1MWI0MDNhN2ZjYWNkNDdlYWM3
MTFkY2Q4MTFjOTI2ZjBhYTU5NjJmLi42NDcwOTFiZjMzODU3YTJiOTgyZGQ2NzE1MjYwN2Q0NzVl
YjhhNWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRXZWJDb250ZXh0LmNwcApAQCAtMTA4OSw3ICsxMDg5LDcgQEAgdm9pZCB3ZWJraXRfd2Vi
X2NvbnRleHRfcHJlZmV0Y2hfZG5zKFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IGNo
YXIqIGhvc3QKIAogICAgIEFQSTo6RGljdGlvbmFyeTo6TWFwVHlwZSBtZXNzYWdlOwogICAgIG1l
c3NhZ2Uuc2V0KFN0cmluZzo6ZnJvbVVURjgoIkhvc3RuYW1lIiksIEFQSTo6U3RyaW5nOjpjcmVh
dGUoU3RyaW5nOjpmcm9tVVRGOChob3N0bmFtZSkpKTsKLSAgICBjb250ZXh0LT5wcml2LT5jb250
ZXh0LT5wb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUoU3RyaW5nOjpmcm9tVVRGOCgiUHJlZmV0
Y2hETlMiKSwgQVBJOjpEaWN0aW9uYXJ5OjpjcmVhdGUoV1RGOjptb3ZlKG1lc3NhZ2UpKS5wdHIo
KSk7CisgICAgY29udGV4dC0+cHJpdi0+Y29udGV4dC0+cG9zdE1lc3NhZ2VUb0luamVjdGVkQnVu
ZGxlKFN0cmluZzo6ZnJvbVVURjgoIlByZWZldGNoRE5TIiksIEFQSTo6RGljdGlvbmFyeTo6Y3Jl
YXRlKFdURk1vdmUobWVzc2FnZSkpLnB0cigpKTsKIH0KIAogLyoqCkBAIC0xMzEwLDcgKzEzMTAs
NyBAQCB2b2lkIHdlYmtpdFdlYkNvbnRleHRDcmVhdGVQYWdlRm9yV2ViVmlldyhXZWJLaXRXZWJD
b250ZXh0KiBjb250ZXh0LCBXZWJLaXRXZWJWaQogICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRV
c2VyQ29udGVudENvbnRyb2xsZXIodXNlckNvbnRlbnRNYW5hZ2VyID8gd2Via2l0VXNlckNvbnRl
bnRNYW5hZ2VyR2V0VXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkodXNlckNvbnRlbnRNYW5hZ2Vy
KSA6IG51bGxwdHIpOwogICAgIHBhZ2VDb25maWd1cmF0aW9uLT5zZXRXZWJzaXRlRGF0YVN0b3Jl
KCZ3ZWJraXRXZWJzaXRlRGF0YU1hbmFnZXJHZXREYXRhU3RvcmUoY29udGV4dC0+cHJpdi0+d2Vi
c2l0ZURhdGFNYW5hZ2VyLmdldCgpKSk7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnNldFNlc3Np
b25JRChwYWdlQ29uZmlndXJhdGlvbi0+d2Vic2l0ZURhdGFTdG9yZSgpLT53ZWJzaXRlRGF0YVN0
b3JlKCkuc2Vzc2lvbklEKCkpOwotICAgIHdlYmtpdFdlYlZpZXdCYXNlQ3JlYXRlV2ViUGFnZSh3
ZWJWaWV3QmFzZSwgV1RGOjptb3ZlKHBhZ2VDb25maWd1cmF0aW9uKSk7CisgICAgd2Via2l0V2Vi
Vmlld0Jhc2VDcmVhdGVXZWJQYWdlKHdlYlZpZXdCYXNlLCBXVEZNb3ZlKHBhZ2VDb25maWd1cmF0
aW9uKSk7CiAKICAgICBXZWJQYWdlUHJveHkqIHBhZ2UgPSB3ZWJraXRXZWJWaWV3QmFzZUdldFBh
Z2Uod2ViVmlld0Jhc2UpOwogICAgIGNvbnRleHQtPnByaXYtPndlYlZpZXdzLnNldChwYWdlLT5w
YWdlSUQoKSwgd2ViVmlldyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFdlYlZpZXcuY3BwCmluZGV4IDZiMjVjN2I4YzZkZTFiNmU5YWY0YWFjYzJiOGQ0
YTA5YzkzMzY5ZTkuLjE5MDJkOWY4MzA2MzZjMzFjNDZiNzc5ODJhMTgzZWNmNzhmY2FmNWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcu
Y3BwCkBAIC0zNTUyLDcgKzM1NTIsNyBAQCB2b2lkIHdlYmtpdF93ZWJfdmlld19nZXRfc25hcHNo
b3QoV2ViS2l0V2ViVmlldyogd2ViVmlldywgV2ViS2l0U25hcHNob3RSZWdpb24gcgogICAgIG1l
c3NhZ2Uuc2V0KFN0cmluZzo6ZnJvbVVURjgoIlRyYW5zcGFyZW50QmFja2dyb3VuZCIpLCBBUEk6
OkJvb2xlYW46OmNyZWF0ZShvcHRpb25zICYgV0VCS0lUX1NOQVBTSE9UX09QVElPTlNfVFJBTlNQ
QVJFTlRfQkFDS0dST1VORCkpOwogCiAgICAgd2ViVmlldy0+cHJpdi0+c25hcHNob3RSZXN1bHRz
TWFwLnNldChjYWxsYmFja0lELCBhZG9wdEdSZWYoZ190YXNrX25ldyh3ZWJWaWV3LCBjYW5jZWxs
YWJsZSwgY2FsbGJhY2ssIHVzZXJEYXRhKSkpOwotICAgIGdldFBhZ2Uod2ViVmlldyktPnBvc3RN
ZXNzYWdlVG9JbmplY3RlZEJ1bmRsZShTdHJpbmc6OmZyb21VVEY4KCJHZXRTbmFwc2hvdCIpLCBB
UEk6OkRpY3Rpb25hcnk6OmNyZWF0ZShXVEY6Om1vdmUobWVzc2FnZSkpLnB0cigpKTsKKyAgICBn
ZXRQYWdlKHdlYlZpZXcpLT5wb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUoU3RyaW5nOjpmcm9t
VVRGOCgiR2V0U25hcHNob3QiKSwgQVBJOjpEaWN0aW9uYXJ5OjpjcmVhdGUoV1RGTW92ZShtZXNz
YWdlKSkucHRyKCkpOwogfQogCiAvKioKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcAppbmRleCBkYWRiMWY2OWQ3ZDlkNWY0
ZGNmNDUzNDhmMmI3MGM4MjBmMzJlY2E5Li4wZGU5Zjc1ZWJjODZmZWYzNDAxODZmZGNmOGY1MTIw
ZDllNTZjZTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRXZWJWaWV3QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCkBAIC04NjgsNyArODY4LDcgQEAgc3RhdGljIGdib29s
ZWFuIHdlYmtpdFdlYlZpZXdCYXNlVG91Y2hFdmVudChHdGtXaWRnZXQqIHdpZGdldCwgR2RrRXZl
bnRUb3VjaCogZXYKICAgICBjYXNlIEdES19UT1VDSF9CRUdJTjogewogICAgICAgICBBU1NFUlQo
IXByaXYtPnRvdWNoRXZlbnRzLmNvbnRhaW5zKHNlcXVlbmNlKSk7CiAgICAgICAgIEdVbmlxdWVQ
dHI8R2RrRXZlbnQ+IGV2ZW50KGdka19ldmVudF9jb3B5KHRvdWNoRXZlbnQpKTsKLSAgICAgICAg
cHJpdi0+dG91Y2hFdmVudHMuYWRkKHNlcXVlbmNlLCBXVEY6Om1vdmUoZXZlbnQpKTsKKyAgICAg
ICAgcHJpdi0+dG91Y2hFdmVudHMuYWRkKHNlcXVlbmNlLCBXVEZNb3ZlKGV2ZW50KSk7CiAgICAg
ICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIEdES19UT1VDSF9VUERBVEU6IHsKQEAgLTg4Nyw3
ICs4ODcsNyBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0V2ViVmlld0Jhc2VUb3VjaEV2ZW50KEd0
a1dpZGdldCogd2lkZ2V0LCBHZGtFdmVudFRvdWNoKiBldgogCiAgICAgVmVjdG9yPFdlYlBsYXRm
b3JtVG91Y2hQb2ludD4gdG91Y2hQb2ludHM7CiAgICAgd2Via2l0V2ViVmlld0Jhc2VHZXRUb3Vj
aFBvaW50c0ZvckV2ZW50KHdlYlZpZXdCYXNlLCB0b3VjaEV2ZW50LCB0b3VjaFBvaW50cyk7Ci0g
ICAgcHJpdi0+cGFnZVByb3h5LT5oYW5kbGVUb3VjaEV2ZW50KE5hdGl2ZVdlYlRvdWNoRXZlbnQo
cmVpbnRlcnByZXRfY2FzdDxHZGtFdmVudCo+KGV2ZW50KSwgV1RGOjptb3ZlKHRvdWNoUG9pbnRz
KSkpOworICAgIHByaXYtPnBhZ2VQcm94eS0+aGFuZGxlVG91Y2hFdmVudChOYXRpdmVXZWJUb3Vj
aEV2ZW50KHJlaW50ZXJwcmV0X2Nhc3Q8R2RrRXZlbnQqPihldmVudCksIFdURk1vdmUodG91Y2hQ
b2ludHMpKSk7CiAKICAgICByZXR1cm4gVFJVRTsKIH0KQEAgLTExMDIsNyArMTEwMiw3IEBAIHZv
aWQgd2Via2l0V2ViVmlld0Jhc2VDcmVhdGVXZWJQYWdlKFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJr
aXRXZWJWaWV3QmFzZSwgUmVmPEFQCiB7CiAgICAgV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlKiBw
cml2ID0gd2Via2l0V2ViVmlld0Jhc2UtPnByaXY7CiAgICAgV2ViUHJvY2Vzc1Bvb2wqIGNvbnRl
eHQgPSBjb25maWd1cmF0aW9uLT5wcm9jZXNzUG9vbCgpOwotICAgIHByaXYtPnBhZ2VQcm94eSA9
IGNvbnRleHQtPmNyZWF0ZVdlYlBhZ2UoKnByaXYtPnBhZ2VDbGllbnQsIFdURjo6bW92ZShjb25m
aWd1cmF0aW9uKSk7CisgICAgcHJpdi0+cGFnZVByb3h5ID0gY29udGV4dC0+Y3JlYXRlV2ViUGFn
ZSgqcHJpdi0+cGFnZUNsaWVudCwgV1RGTW92ZShjb25maWd1cmF0aW9uKSk7CiAgICAgcHJpdi0+
cGFnZVByb3h5LT5pbml0aWFsaXplV2ViUGFnZSgpOwogCiAgICAgcHJpdi0+aW5wdXRNZXRob2RG
aWx0ZXIuc2V0UGFnZShwcml2LT5wYWdlUHJveHkuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYnNpdGVEYXRhTWFuYWdl
ci5jcHAKaW5kZXggOWQ2MTgzNzA3ODQ0YmM4ZDlmNzBlYjlhM2MwMzNmMzkwZTMyNDZjZi4uNzdk
NTZlZmZlY2MwMDdjNzIyOGYxYjhiZjI1Nzg4NzkzODk4NmM5YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJzaXRlRGF0YU1h
bmFnZXIuY3BwCkBAIC0yOTksNyArMjk5LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYnNpdGVf
ZGF0YV9tYW5hZ2VyX2NsYXNzX2luaXQoV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyQ2xhc3MKIFdl
YktpdFdlYnNpdGVEYXRhTWFuYWdlciogd2Via2l0V2Vic2l0ZURhdGFNYW5hZ2VyQ3JlYXRlKFdl
YnNpdGVEYXRhU3RvcmU6OkNvbmZpZ3VyYXRpb24mJiBjb25maWd1cmF0aW9uKQogewogICAgIFdl
YktpdFdlYnNpdGVEYXRhTWFuYWdlciogbWFuYWdlciA9IFdFQktJVF9XRUJTSVRFX0RBVEFfTUFO
QUdFUihnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VCU0lURV9EQVRBX01BTkFHRVIsIG51bGxw
dHIpKTsKLSAgICBtYW5hZ2VyLT5wcml2LT53ZWJzaXRlRGF0YVN0b3JlID0gQVBJOjpXZWJzaXRl
RGF0YVN0b3JlOjpjcmVhdGUoV1RGOjptb3ZlKGNvbmZpZ3VyYXRpb24pKTsKKyAgICBtYW5hZ2Vy
LT5wcml2LT53ZWJzaXRlRGF0YVN0b3JlID0gQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpjcmVhdGUo
V1RGTW92ZShjb25maWd1cmF0aW9uKSk7CiAKICAgICByZXR1cm4gbWFuYWdlcjsKIH0KQEAgLTMx
OCw3ICszMTgsNyBAQCBBUEk6OldlYnNpdGVEYXRhU3RvcmUmIHdlYmtpdFdlYnNpdGVEYXRhTWFu
YWdlckdldERhdGFTdG9yZShXZWJLaXRXZWJzaXRlRGF0YU1hbgogICAgICAgICBjb25maWd1cmF0
aW9uLndlYlNRTERhdGFiYXNlRGlyZWN0b3J5ID0gIXByaXYtPndlYlNRTERpcmVjdG9yeSA/CiAg
ICAgICAgICAgICBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRXZWJTUUxEYXRhYmFzZURp
cmVjdG9yeSgpIDogV2ViQ29yZTo6ZmlsZW5hbWVUb1N0cmluZyhwcml2LT53ZWJTUUxEaXJlY3Rv
cnkuZ2V0KCkpOwogICAgICAgICBjb25maWd1cmF0aW9uLm1lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rv
cnkgPSBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0
b3J5KCk7Ci0gICAgICAgIHByaXYtPndlYnNpdGVEYXRhU3RvcmUgPSBBUEk6OldlYnNpdGVEYXRh
U3RvcmU6OmNyZWF0ZShXVEY6Om1vdmUoY29uZmlndXJhdGlvbikpOworICAgICAgICBwcml2LT53
ZWJzaXRlRGF0YVN0b3JlID0gQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpjcmVhdGUoV1RGTW92ZShj
b25maWd1cmF0aW9uKSk7CiAgICAgfQogCiAgICAgcmV0dXJuICpwcml2LT53ZWJzaXRlRGF0YVN0
b3JlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3
Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCmluZGV4IDcx
MDRkNjRkNjM1Zjg5ZTFhOWI5YWRhODhmYmY3NjQ2N2QwOGZmMTEuLjhmODcwZTdlYjEyZTgwNzI1
OTVmZTlmOWU1NThlMDJjYWQ4OTc4YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvbWFjL1dLVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L21hYy9XS1ZpZXcubW0KQEAgLTg3MSw3ICs4NzEsNyBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdp
dGhGcmFtZTooTlNSZWN0KWZyYW1lIHByb2Nlc3NQb29sOihXZWJQcm9jZXNzUG9vbCYpcHJvY2Vz
cwogICAgIEluaXRpYWxpemVXZWJLaXQyKCk7CiAKICAgICBfZGF0YSA9IFtbV0tWaWV3RGF0YSBh
bGxvY10gaW5pdF07Ci0gICAgX2RhdGEtPl9pbXBsID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJWaWV3
SW1wbD4oc2VsZiwgd2ViVmlldywgcHJvY2Vzc1Bvb2wsIFdURjo6bW92ZShjb25maWd1cmF0aW9u
KSk7CisgICAgX2RhdGEtPl9pbXBsID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJWaWV3SW1wbD4oc2Vs
Ziwgd2ViVmlldywgcHJvY2Vzc1Bvb2wsIFdURk1vdmUoY29uZmlndXJhdGlvbikpOwogCiAgICAg
cmV0dXJuIHNlbGY7CiB9CkBAIC0xMDE0LDcgKzEwMTQsNyBAQCAtIChpZClpbml0V2l0aEZyYW1l
OihOU1JlY3QpZnJhbWUgY29udGV4dFJlZjooV0tDb250ZXh0UmVmKWNvbnRleHRSZWYgcGFnZUdy
b3VwUgogICAgIGNvbmZpZ3VyYXRpb24tPnNldFBhZ2VHcm91cCh0b0ltcGwocGFnZUdyb3VwUmVm
KSk7CiAgICAgY29uZmlndXJhdGlvbi0+c2V0UmVsYXRlZFBhZ2UodG9JbXBsKHJlbGF0ZWRQYWdl
KSk7CiAKLSAgICByZXR1cm4gW3NlbGYgaW5pdFdpdGhGcmFtZTpmcmFtZSBwcm9jZXNzUG9vbDoq
dG9JbXBsKGNvbnRleHRSZWYpIGNvbmZpZ3VyYXRpb246V1RGOjptb3ZlKGNvbmZpZ3VyYXRpb24p
IHdlYlZpZXc6bmlsXTsKKyAgICByZXR1cm4gW3NlbGYgaW5pdFdpdGhGcmFtZTpmcmFtZSBwcm9j
ZXNzUG9vbDoqdG9JbXBsKGNvbnRleHRSZWYpIGNvbmZpZ3VyYXRpb246V1RGTW92ZShjb25maWd1
cmF0aW9uKSB3ZWJWaWV3Om5pbF07CiB9CiAKIC0gKGlkKWluaXRXaXRoRnJhbWU6KE5TUmVjdClm
cmFtZSBjb25maWd1cmF0aW9uUmVmOihXS1BhZ2VDb25maWd1cmF0aW9uUmVmKWNvbmZpZ3VyYXRp
b25SZWYKQEAgLTEwMjIsNyArMTAyMiw3IEBAIC0gKGlkKWluaXRXaXRoRnJhbWU6KE5TUmVjdClm
cmFtZSBjb25maWd1cmF0aW9uUmVmOihXS1BhZ2VDb25maWd1cmF0aW9uUmVmKWNvbmZpCiAgICAg
UmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb24gPSB0b0ltcGwoY29uZmln
dXJhdGlvblJlZiktPmNvcHkoKTsKICAgICBhdXRvJiBwcm9jZXNzUG9vbCA9ICpjb25maWd1cmF0
aW9uLT5wcm9jZXNzUG9vbCgpOwogCi0gICAgcmV0dXJuIFtzZWxmIGluaXRXaXRoRnJhbWU6ZnJh
bWUgcHJvY2Vzc1Bvb2w6cHJvY2Vzc1Bvb2wgY29uZmlndXJhdGlvbjpXVEY6Om1vdmUoY29uZmln
dXJhdGlvbikgd2ViVmlldzpuaWxdOworICAgIHJldHVybiBbc2VsZiBpbml0V2l0aEZyYW1lOmZy
YW1lIHByb2Nlc3NQb29sOnByb2Nlc3NQb29sIGNvbmZpZ3VyYXRpb246V1RGTW92ZShjb25maWd1
cmF0aW9uKSB3ZWJWaWV3Om5pbF07CiB9CiAKIC0gKEJPT0wpd2FudHNVcGRhdGVMYXllcgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5t
bSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KaW5k
ZXggMGJkZjA5ZWQ4YzQyNjcxZWM1NmI5NTFlZjgyMTM4NWIzYjU4MDk5Yi4uOWI4ZTcyMTE5Yjcz
ZGMyZTU2OTA1MzQxMWEwMDc5NDI1MjdjN2M3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCkBAIC0yNjgsNyArMjY4LDcgQEAgc3Rh
dGljIHZvaWQgdHJ5QXBwTGluayhSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uQWN0aW9uPiBuYXZpZ2F0
aW9uQWN0aW9uLCBjb25zdCBTdHIKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8q
IGxvY2FsQ29tcGxldGlvbkhhbmRsZXIgPSBuZXcgc3RkOjpmdW5jdGlvbjx2b2lkIChib29sKT4o
V1RGOjptb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgYXV0byogbG9jYWxDb21wbGV0aW9u
SGFuZGxlciA9IG5ldyBzdGQ6OmZ1bmN0aW9uPHZvaWQgKGJvb2wpPihXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7CiAgICAgW0xTQXBwTGluayBvcGVuV2l0aFVSTDpuYXZpZ2F0aW9uQWN0aW9u
LT5yZXF1ZXN0KCkudXJsKCkgY29tcGxldGlvbkhhbmRsZXI6W2xvY2FsQ29tcGxldGlvbkhhbmRs
ZXJdKEJPT0wgc3VjY2VzcywgTlNFcnJvciAqKSB7CiAgICAgICAgIGRpc3BhdGNoX2FzeW5jKGRp
c3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtsb2NhbENvbXBsZXRpb25IYW5kbGVyLCBzdWNjZXNz
XSB7CiAgICAgICAgICAgICAoKmxvY2FsQ29tcGxldGlvbkhhbmRsZXIpKHN1Y2Nlc3MpOwpAQCAt
Mjg2LDcgKzI4Niw3IEBAIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50Ojpk
ZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFdlYlBhZ2VQCiAKICAgICBpZiAoIW1fbmF2
aWdhdGlvblN0YXRlLm1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy53ZWJWaWV3RGVjaWRlUG9s
aWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkRlY2lzaW9uSGFuZGxlcikgewogICAgICAgICBSZWZQdHI8
QVBJOjpOYXZpZ2F0aW9uQWN0aW9uPiBsb2NhbE5hdmlnYXRpb25BY3Rpb24gPSAmbmF2aWdhdGlv
bkFjdGlvbjsKLSAgICAgICAgUmVmUHRyPFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eT4gbG9j
YWxMaXN0ZW5lciA9IFdURjo6bW92ZShsaXN0ZW5lcik7CisgICAgICAgIFJlZlB0cjxXZWJGcmFt
ZVBvbGljeUxpc3RlbmVyUHJveHk+IGxvY2FsTGlzdGVuZXIgPSBXVEZNb3ZlKGxpc3RlbmVyKTsK
IAogICAgICAgICB0cnlBcHBMaW5rKGxvY2FsTmF2aWdhdGlvbkFjdGlvbiwgbWFpbkZyYW1lVVJM
U3RyaW5nLCBbbG9jYWxMaXN0ZW5lciwgbG9jYWxOYXZpZ2F0aW9uQWN0aW9uXSAoYm9vbCBmb2xs
b3dlZExpbmtUb0FwcCkgewogICAgICAgICAgICAgaWYgKGZvbGxvd2VkTGlua1RvQXBwKSB7CkBA
IC0zMjIsNyArMzIyLDcgQEAgdm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6
OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oV2ViUGFnZVAKICAgICAgICAgcmV0dXJu
OwogCiAgICAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbkFjdGlvbj4gbG9jYWxOYXZpZ2F0aW9uQWN0
aW9uID0gJm5hdmlnYXRpb25BY3Rpb247Ci0gICAgUmVmUHRyPFdlYkZyYW1lUG9saWN5TGlzdGVu
ZXJQcm94eT4gbG9jYWxMaXN0ZW5lciA9IFdURjo6bW92ZShsaXN0ZW5lcik7CisgICAgUmVmUHRy
PFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eT4gbG9jYWxMaXN0ZW5lciA9IFdURk1vdmUobGlz
dGVuZXIpOwogICAgIFJlZlB0cjxDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyPiBjaGVja2Vy
ID0gQ29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6Y3JlYXRlKG5hdmlnYXRpb25EZWxlZ2F0
ZS5nZXQoKSwgQHNlbGVjdG9yKHdlYlZpZXc6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlv
bjpkZWNpc2lvbkhhbmRsZXI6KSk7CiAgICAgW25hdmlnYXRpb25EZWxlZ2F0ZSB3ZWJWaWV3Om1f
bmF2aWdhdGlvblN0YXRlLm1fd2ViVmlldyBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9u
OndyYXBwZXIobmF2aWdhdGlvbkFjdGlvbikgZGVjaXNpb25IYW5kbGVyOltsb2NhbExpc3RlbmVy
LCBsb2NhbE5hdmlnYXRpb25BY3Rpb24sIGNoZWNrZXIsIG1haW5GcmFtZVVSTFN0cmluZ10oV0tO
YXZpZ2F0aW9uQWN0aW9uUG9saWN5IGFjdGlvblBvbGljeSkgewogICAgICAgICBjaGVja2VyLT5k
aWRDYWxsQ29tcGxldGlvbkhhbmRsZXIoKTsKQEAgLTM4Nyw3ICszODcsNyBAQCB2b2lkIE5hdmln
YXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJl
c3BvbnNlKFdlYlBhZwogICAgIGlmICghbmF2aWdhdGlvbkRlbGVnYXRlKQogICAgICAgICByZXR1
cm47CiAKLSAgICBSZWZQdHI8V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5PiBsb2NhbExpc3Rl
bmVyID0gV1RGOjptb3ZlKGxpc3RlbmVyKTsKKyAgICBSZWZQdHI8V2ViRnJhbWVQb2xpY3lMaXN0
ZW5lclByb3h5PiBsb2NhbExpc3RlbmVyID0gV1RGTW92ZShsaXN0ZW5lcik7CiAgICAgUmVmUHRy
PENvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI+IGNoZWNrZXIgPSBDb21wbGV0aW9uSGFuZGxl
ckNhbGxDaGVja2VyOjpjcmVhdGUobmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpLCBAc2VsZWN0b3Io
d2ViVmlldzpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2U6ZGVjaXNpb25IYW5kbGVy
OikpOwogICAgIFtuYXZpZ2F0aW9uRGVsZWdhdGUgd2ViVmlldzptX25hdmlnYXRpb25TdGF0ZS5t
X3dlYlZpZXcgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlOndyYXBwZXIobmF2aWdh
dGlvblJlc3BvbnNlKSBkZWNpc2lvbkhhbmRsZXI6W2xvY2FsTGlzdGVuZXIsIGNoZWNrZXJdKFdL
TmF2aWdhdGlvblJlc3BvbnNlUG9saWN5IHJlc3BvbnNlUG9saWN5KSB7CiAgICAgICAgIGNoZWNr
ZXItPmRpZENhbGxDb21wbGV0aW9uSGFuZGxlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCmluZGV4IGEyMTY0Y2JkMWUyZTIwNmIxZTIzMGE3NTRj
YmY3Mjk1MjBkMTFjMmIuLjYyY2JkZGU0NDRhMWI4MTg1OTg3OGFjNjYwYjQ1Y2E1NzkwMWJkNWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KQEAg
LTQzNCw3ICs0MzQsNyBAQCBzdGF0aWMgTlNUcmFja2luZ0FyZWFPcHRpb25zIHRyYWNraW5nQXJl
YU9wdGlvbnMoKQogV2ViVmlld0ltcGw6OldlYlZpZXdJbXBsKE5TVmlldyA8V2ViVmlld0ltcGxE
ZWxlZ2F0ZT4gKnZpZXcsIFdLV2ViVmlldyAqb3V0ZXJXZWJWaWV3LCBXZWJQcm9jZXNzUG9vbCYg
cHJvY2Vzc1Bvb2wsIFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiYmIGNvbmZpZ3VyYXRpb24p
CiAgICAgOiBtX3ZpZXcodmlldykKICAgICAsIG1fcGFnZUNsaWVudChzdGQ6Om1ha2VfdW5pcXVl
PFBhZ2VDbGllbnRJbXBsPih2aWV3LCBvdXRlcldlYlZpZXcpKQotICAgICwgbV9wYWdlKHByb2Nl
c3NQb29sLmNyZWF0ZVdlYlBhZ2UoKm1fcGFnZUNsaWVudCwgV1RGOjptb3ZlKGNvbmZpZ3VyYXRp
b24pKSkKKyAgICAsIG1fcGFnZShwcm9jZXNzUG9vbC5jcmVhdGVXZWJQYWdlKCptX3BhZ2VDbGll
bnQsIFdURk1vdmUoY29uZmlndXJhdGlvbikpKQogICAgICwgbV93ZWFrUHRyRmFjdG9yeSh0aGlz
KQogICAgICwgbV9uZWVkc1ZpZXdGcmFtZUluV2luZG93Q29vcmRpbmF0ZXMobV9wYWdlLT5wcmVm
ZXJlbmNlcygpLnBsdWdpbnNFbmFibGVkKCkpCiAgICAgLCBtX2ludHJpbnNpY0NvbnRlbnRTaXpl
KENHU2l6ZU1ha2UoTlNWaWV3Tm9JbnN0cmluc2ljTWV0cmljLCBOU1ZpZXdOb0luc3RyaW5zaWNN
ZXRyaWMpKQpAQCAtMjk0NCw3ICsyOTQ0LDcgQEAgUmVmUHRyPFZpZXdTbmFwc2hvdD4gV2ViVmll
d0ltcGw6OnRha2VWaWV3U25hcHNob3QoKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBz
dXJmYWNlLT5zZXRJc1ZvbGF0aWxlKHRydWUpOwogCi0gICAgcmV0dXJuIFZpZXdTbmFwc2hvdDo6
Y3JlYXRlKFdURjo6bW92ZShzdXJmYWNlKSk7CisgICAgcmV0dXJuIFZpZXdTbmFwc2hvdDo6Y3Jl
YXRlKFdURk1vdmUoc3VyZmFjZSkpOwogfQogCiB2b2lkIFdlYlZpZXdJbXBsOjpzYXZlQmFja0Zv
cndhcmRTbmFwc2hvdEZvckN1cnJlbnRJdGVtKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFBy
b3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nv
b3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5LmNwcAppbmRleCBmNzZmNmU1NGY0YjE3MWMxZDZm
MDU5NDAxYzY1MDJmZjE0M2VhYzc3Li5kZTFmMGFmOGVmYTcwNTc4ZDYwMmEzNzM2ZTk4ZWVkYzc0
NDI4OGI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRH
cmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVI
b3N0UHJveHkuY3BwCkBAIC01NCw3ICs1NCw3IEBAIHZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVI
b3N0UHJveHk6OnVwZGF0ZVZpZXdwb3J0KCkKIAogdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhv
c3RQcm94eTo6ZGlzcGF0Y2hVcGRhdGUoc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGZ1bmN0aW9uKQog
ewotICAgIG1fc2NlbmUtPmFwcGVuZFVwZGF0ZShXVEY6Om1vdmUoZnVuY3Rpb24pKTsKKyAgICBt
X3NjZW5lLT5hcHBlbmRVcGRhdGUoV1RGTW92ZShmdW5jdGlvbikpOwogfQogCiB2b2lkIENvb3Jk
aW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5Ojpjb21taXRDb29yZGluYXRlZEdyYXBoaWNzU3RhdGUo
Y29uc3QgQ29vcmRpbmF0ZWRHcmFwaGljc1N0YXRlJiBncmFwaGljc1N0YXRlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0RhdGFiYXNlcy9EYXRhYmFzZVByb2Nlc3NQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRGF0YWJhc2VzL0RhdGFiYXNlUHJvY2Vz
c1Byb3h5LmNwcAppbmRleCA2MDRlOWQ4YzU2NzM2ZGE0MTdkYzg2ZTk5MDkzZDQ3MWVhYjZlMjM1
Li4yYzhlMDcxM2YxYzkzMWQ3NzY0ZThmNjFjMTVkZjhmMzdmNWE4ODk4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRGF0YWJhc2VzL0RhdGFiYXNlUHJvY2Vzc1Byb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRGF0YWJhc2VzL0RhdGFiYXNlUHJvY2Vz
c1Byb3h5LmNwcApAQCAtODksNyArODksNyBAQCB2b2lkIERhdGFiYXNlUHJvY2Vzc1Byb3h5Ojpm
ZXRjaFdlYnNpdGVEYXRhKFNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYnNpdGVEYXRhVHlwZQogICAg
IEFTU0VSVChjYW5TZW5kTWVzc2FnZSgpKTsKIAogICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBn
ZW5lcmF0ZUNhbGxiYWNrSUQoKTsKLSAgICBtX3BlbmRpbmdGZXRjaFdlYnNpdGVEYXRhQ2FsbGJh
Y2tzLmFkZChjYWxsYmFja0lELCBXVEY6Om1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBt
X3BlbmRpbmdGZXRjaFdlYnNpdGVEYXRhQ2FsbGJhY2tzLmFkZChjYWxsYmFja0lELCBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSk7CiAKICAgICBzZW5kKE1lc3NhZ2VzOjpEYXRhYmFzZVByb2Nl
c3M6OkZldGNoV2Vic2l0ZURhdGEoc2Vzc2lvbklELCBkYXRhVHlwZXMsIGNhbGxiYWNrSUQpLCAw
KTsKIH0KQEAgLTk4LDcgKzk4LDcgQEAgdm9pZCBEYXRhYmFzZVByb2Nlc3NQcm94eTo6ZGVsZXRl
V2Vic2l0ZURhdGEoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2Vic2kKIHsKICAgICBh
dXRvIGNhbGxiYWNrSUQgPSBnZW5lcmF0ZUNhbGxiYWNrSUQoKTsKIAotICAgIG1fcGVuZGluZ0Rl
bGV0ZVdlYnNpdGVEYXRhQ2FsbGJhY2tzLmFkZChjYWxsYmFja0lELCBXVEY6Om1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKKyAgICBtX3BlbmRpbmdEZWxldGVXZWJzaXRlRGF0YUNhbGxiYWNrcy5h
ZGQoY2FsbGJhY2tJRCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgIHNlbmQoTWVz
c2FnZXM6OkRhdGFiYXNlUHJvY2Vzczo6RGVsZXRlV2Vic2l0ZURhdGEoc2Vzc2lvbklELCBkYXRh
VHlwZXMsIG1vZGlmaWVkU2luY2UsIGNhbGxiYWNrSUQpLCAwKTsKIH0KIApAQCAtMTA3LDcgKzEw
Nyw3IEBAIHZvaWQgRGF0YWJhc2VQcm9jZXNzUHJveHk6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yT3Jp
Z2lucyhTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJzCiAgICAgQVNTRVJUKGNhblNlbmRNZXNzYWdl
KCkpOwogCiAgICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IGdlbmVyYXRlQ2FsbGJhY2tJRCgpOwot
ICAgIG1fcGVuZGluZ0RlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2luc0NhbGxiYWNrcy5hZGQoY2Fs
bGJhY2tJRCwgV1RGOjptb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgbV9wZW5kaW5nRGVs
ZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zQ2FsbGJhY2tzLmFkZChjYWxsYmFja0lELCBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSk7CiAKICAgICBWZWN0b3I8U2VjdXJpdHlPcmlnaW5EYXRhPiBv
cmlnaW5EYXRhOwogICAgIGZvciAoYXV0byYgb3JpZ2luIDogb3JpZ2lucykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9HZW5lcmljQ2FsbGJhY2suaCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9HZW5lcmljQ2FsbGJhY2suaAppbmRleCA5M2NhM2U4MzU2NThkNDMzNzA4
MWZhNTY1MTI1MDI4NzM4NTM2ZDVmLi44NGNlM2RlMDQwODVhMmY0ZDk3Y2IwYzUxYjNhY2JkNmU5
NWJiMjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvR2VuZXJpY0NhbGxi
YWNrLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0dlbmVyaWNDYWxsYmFjay5oCkBA
IC0xOTMsNyArMTkzLDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIFQ+CiAg
ICAgdWludDY0X3QgcHV0KHN0ZDo6ZnVuY3Rpb248dm9pZCAoVC4uLik+IGZ1bmN0aW9uLCBjb25z
dCBQcm9jZXNzVGhyb3R0bGVyOjpCYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbiYgYWN0aXZpdHlUb2tl
bikKICAgICB7Ci0gICAgICAgIGF1dG8gY2FsbGJhY2sgPSBHZW5lcmljQ2FsbGJhY2tUeXBlPHNp
emVvZi4uLihUKSwgVC4uLj46OnR5cGU6OmNyZWF0ZShXVEY6Om1vdmUoZnVuY3Rpb24pLCBhY3Rp
dml0eVRva2VuKTsKKyAgICAgICAgYXV0byBjYWxsYmFjayA9IEdlbmVyaWNDYWxsYmFja1R5cGU8
c2l6ZW9mLi4uKFQpLCBULi4uPjo6dHlwZTo6Y3JlYXRlKFdURk1vdmUoZnVuY3Rpb24pLCBhY3Rp
dml0eVRva2VuKTsKICAgICAgICAgcmV0dXJuIHB1dChjYWxsYmFjayk7CiAgICAgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvSW5zcGVjdG9yU2VydmVyL1dlYlNvY2tl
dFNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvSW5zcGVjdG9yU2VydmVyL1dl
YlNvY2tldFNlcnZlci5jcHAKaW5kZXggMTI1NmMyNzI4OTlhMjIzZTlkZWVjNGI4MmVmNzgyYzU2
MzdkZDRlMi4uYzUzNGI0ZmNiZjUzMDlkZDUzZDcwMjc3ZjEwOGE0MTUwMjVkMDc1MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0luc3BlY3RvclNlcnZlci9XZWJTb2NrZXRT
ZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9JbnNwZWN0b3JTZXJ2ZXIv
V2ViU29ja2V0U2VydmVyLmNwcApAQCAtNzksNyArNzksNyBAQCB2b2lkIFdlYlNvY2tldFNlcnZl
cjo6Y2xvc2UoKQogCiB2b2lkIFdlYlNvY2tldFNlcnZlcjo6ZGlkQWNjZXB0Q29ubmVjdGlvbihz
dGQ6OnVuaXF1ZV9wdHI8V2ViU29ja2V0U2VydmVyQ29ubmVjdGlvbj4gY29ubmVjdGlvbikKIHsK
LSAgICBtX2Nvbm5lY3Rpb25zLmFwcGVuZChXVEY6Om1vdmUoY29ubmVjdGlvbikpOworICAgIG1f
Y29ubmVjdGlvbnMuYXBwZW5kKFdURk1vdmUoY29ubmVjdGlvbikpOwogfQogCiB2b2lkIFdlYlNv
Y2tldFNlcnZlcjo6ZGlkQ2xvc2VXZWJTb2NrZXRTZXJ2ZXJDb25uZWN0aW9uKFdlYlNvY2tldFNl
cnZlckNvbm5lY3Rpb24qIGNvbm5lY3Rpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvSW5zcGVjdG9yU2VydmVyL3NvdXAvV2ViU29ja2V0U2VydmVyU291cC5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvSW5zcGVjdG9yU2VydmVyL3NvdXAvV2ViU29ja2V0U2Vy
dmVyU291cC5jcHAKaW5kZXggNDFlMjZiZTg5YjEzNzUyYzM4N2ViNzhhYTQyNWU2MjkwMzI5MjE2
MS4uMjIwNzFhNDFhZmVkNzZhMWFjM2Q2OWJiN2JkNjdiY2RlYTk3MmQ1OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0luc3BlY3RvclNlcnZlci9zb3VwL1dlYlNvY2tldFNl
cnZlclNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9JbnNwZWN0b3JTZXJ2
ZXIvc291cC9XZWJTb2NrZXRTZXJ2ZXJTb3VwLmNwcApAQCAtNDgsNyArNDgsNyBAQCBzdGF0aWMg
Z2Jvb2xlYW4gY29ubmVjdGlvbkNhbGxiYWNrKEdTb2NrZXRTZXJ2aWNlKiAvKnNlcnZpY2UqLywg
R1NvY2tldENvbm5lY3RpbwogCiAgICAgYXV0byB3ZWJTb2NrZXRDb25uZWN0aW9uID0gc3RkOjpt
YWtlX3VuaXF1ZTxXZWJTb2NrZXRTZXJ2ZXJDb25uZWN0aW9uPihzZXJ2ZXItPmNsaWVudCgpLCBz
ZXJ2ZXIpOwogICAgIHdlYlNvY2tldENvbm5lY3Rpb24tPnNldFNvY2tldEhhbmRsZShTb2NrZXRT
dHJlYW1IYW5kbGU6OmNyZWF0ZShjb25uZWN0aW9uLCB3ZWJTb2NrZXRDb25uZWN0aW9uLmdldCgp
KSk7Ci0gICAgc2VydmVyLT5kaWRBY2NlcHRDb25uZWN0aW9uKFdURjo6bW92ZSh3ZWJTb2NrZXRD
b25uZWN0aW9uKSk7CisgICAgc2VydmVyLT5kaWRBY2NlcHRDb25uZWN0aW9uKFdURk1vdmUod2Vi
U29ja2V0Q29ubmVjdGlvbikpOwogCiAgICAgcmV0dXJuIFRSVUU7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3Bw
CmluZGV4IDFhZWQ1YTFhMTY4N2Y5MDUzOWI0ZTczODg1MjU4NmFjYWJhOTc0M2MuLjA1YjAzZDA4
MjQ5ZDBjMjY2NGZjNDY1NDM1MmIxMDU1ZmY2YTdiNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCkBAIC0x
MjcsNyArMTI3LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpmZXRjaFdlYnNpdGVEYXRh
KFNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYnNpdGVEYXRhVHlwZXMKICAgICBhdXRvIHRva2VuID0g
dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKTsKIAogICAgIG1fcGVuZGluZ0Zl
dGNoV2Vic2l0ZURhdGFDYWxsYmFja3MuYWRkKGNhbGxiYWNrSUQsIFt0b2tlbiwgY29tcGxldGlv
bkhhbmRsZXJdKFdlYnNpdGVEYXRhIHdlYnNpdGVEYXRhKSB7Ci0gICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKFdURjo6bW92ZSh3ZWJzaXRlRGF0YSkpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihXVEZNb3ZlKHdlYnNpdGVEYXRhKSk7CiAgICAgfSk7CiAKICAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJQcm9jZXNzOjpGZXRjaFdlYnNpdGVEYXRhKHNlc3Npb25JRCwgZGF0YVR5cGVzLCBjYWxsYmFj
a0lEKSwgMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTm90aWZpY2F0
aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcAppbmRl
eCAxYzdhMzAyMWYyOTBmM2Y4N2U3NzQ3YzU1YTRjNzA1ZmNhNTk2ZGM0Li42MjYzNTE2ODczMjIw
MTk2N2I4MmQ0Y2U4OGMyOGU5MzNhZmE4N2I5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlv
bk1hbmFnZXJQcm94eS5jcHAKQEAgLTIxNSw3ICsyMTUsNyBAQCB2b2lkIFdlYk5vdGlmaWNhdGlv
bk1hbmFnZXJQcm94eTo6cHJvdmlkZXJEaWRDbG9zZU5vdGlmaWNhdGlvbnMoQVBJOjpBcnJheSog
Z2xvYgogICAgICAgICAgICAgaWYgKHBhZ2VJdCA9PSBwYWdlTm90aWZpY2F0aW9uSURzLmVuZCgp
KSB7CiAgICAgICAgICAgICAgICAgVmVjdG9yPHVpbnQ2NF90PiBuZXdWZWN0b3I7CiAgICAgICAg
ICAgICAgICAgbmV3VmVjdG9yLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoc2l6ZSk7Ci0gICAgICAg
ICAgICAgICAgcGFnZUl0ID0gcGFnZU5vdGlmaWNhdGlvbklEcy5hZGQod2ViUGFnZSwgV1RGOjpt
b3ZlKG5ld1ZlY3RvcikpLml0ZXJhdG9yOworICAgICAgICAgICAgICAgIHBhZ2VJdCA9IHBhZ2VO
b3RpZmljYXRpb25JRHMuYWRkKHdlYlBhZ2UsIFdURk1vdmUobmV3VmVjdG9yKSkuaXRlcmF0b3I7
CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIHVpbnQ2NF90IHBhZ2VOb3RpZmljYXRpb25J
RCA9IGl0LT52YWx1ZS5zZWNvbmQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25Qcm92aWRlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25Qcm92aWRlci5jcHAK
aW5kZXggNDU1Y2NkZmYxMDYyYjk5MDRiNDhkYzA3MmQxOTVlYTExNDg0NDhhMC4uYTJhODNhZGEw
OTVkZTA0Y2I0N2Y2MTdkZjA3ZTViMjBmNTBkN2U3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlv
blByb3ZpZGVyLmNwcApAQCAtNzIsNyArNzIsNyBAQCB2b2lkIFdlYk5vdGlmaWNhdGlvblByb3Zp
ZGVyOjpjbGVhck5vdGlmaWNhdGlvbnMoY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYgbm90aWZpYwog
ICAgIGZvciAoY29uc3QgYXV0byYgbm90aWZpY2F0aW9uSUQgOiBub3RpZmljYXRpb25JRHMpCiAg
ICAgICAgIGFycmF5SURzLnVuY2hlY2tlZEFwcGVuZChBUEk6OlVJbnQ2NDo6Y3JlYXRlKG5vdGlm
aWNhdGlvbklEKSk7CiAKLSAgICBtX2NsaWVudC5jbGVhck5vdGlmaWNhdGlvbnModG9BUEkoQVBJ
OjpBcnJheTo6Y3JlYXRlKFdURjo6bW92ZShhcnJheUlEcykpLnB0cigpKSwgbV9jbGllbnQuYmFz
ZS5jbGllbnRJbmZvKTsKKyAgICBtX2NsaWVudC5jbGVhck5vdGlmaWNhdGlvbnModG9BUEkoQVBJ
OjpBcnJheTo6Y3JlYXRlKFdURk1vdmUoYXJyYXlJRHMpKS5wdHIoKSksIG1fY2xpZW50LmJhc2Uu
Y2xpZW50SW5mbyk7CiB9CiAKIHZvaWQgV2ViTm90aWZpY2F0aW9uUHJvdmlkZXI6OmFkZE5vdGlm
aWNhdGlvbk1hbmFnZXIoV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5KiBtYW5hZ2VyKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VMb2FkU3RhdGUuY3BwIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VMb2FkU3RhdGUuY3BwCmluZGV4IDQyY2Y2MTkwNDRm
OGEzZTFiM2E4ZjFmMzc5ZmI3OThmZDNmYTcxNGIuLjI3MjM1MmZkZmJlODcwODRjZDk3ZDVkZjNi
NTE0MmE3MGUzNThiZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdl
TG9hZFN0YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUxvYWRTdGF0
ZS5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgUGFnZUxvYWRTdGF0ZTo6VHJhbnNhY3Rpb246OlRyYW5z
YWN0aW9uKFBhZ2VMb2FkU3RhdGUmIHBhZ2VMb2FkU3RhdGUpCiB9CiAKIFBhZ2VMb2FkU3RhdGU6
OlRyYW5zYWN0aW9uOjpUcmFuc2FjdGlvbihUcmFuc2FjdGlvbiYmIG90aGVyKQotICAgIDogbV93
ZWJQYWdlUHJveHkoV1RGOjptb3ZlKG90aGVyLm1fd2ViUGFnZVByb3h5KSkKKyAgICA6IG1fd2Vi
UGFnZVByb3h5KFdURk1vdmUob3RoZXIubV93ZWJQYWdlUHJveHkpKQogICAgICwgbV9wYWdlTG9h
ZFN0YXRlKG90aGVyLm1fcGFnZUxvYWRTdGF0ZSkKIHsKICAgICBvdGhlci5tX3BhZ2VMb2FkU3Rh
dGUgPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdp
bnMvUGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1BsdWdpbnMvUGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXIuY3BwCmluZGV4IDM0ODQyZDg3ZGYzMjMw
Y2JmNDlmZDg5ZjRkZTFiZDk2OTYzNzA5OTIuLjI1MDc1OTI0ZWI1YjYzMDg4OTg2YzJiNjhmYWQx
N2RmMDZkOWI3MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5z
L1BsdWdJbkF1dG9TdGFydFByb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvUGx1Z2lucy9QbHVnSW5BdXRvU3RhcnRQcm92aWRlci5jcHAKQEAgLTk5LDEwICs5OSwxMCBA
QCBSZWY8QVBJOjpEaWN0aW9uYXJ5PiBQbHVnSW5BdXRvU3RhcnRQcm92aWRlcjo6YXV0b1N0YXJ0
T3JpZ2luc1RhYmxlQ29weSgpIGNvbnN0CiAgICAgICAgICAgICAgICAgaGFzaE1hcC5zZXQoU3Ry
aW5nOjpudW1iZXIob3JpZ2luSGFzaC5rZXkpLCBBUEk6OkRvdWJsZTo6Y3JlYXRlKG9yaWdpbkhh
c2gudmFsdWUpKTsKICAgICAgICAgfQogICAgICAgICBpZiAoaGFzaE1hcC5zaXplKCkpCi0gICAg
ICAgICAgICBtYXAuc2V0KHN0cmluZ09yaWdpbkhhc2gua2V5LCBBUEk6OkRpY3Rpb25hcnk6OmNy
ZWF0ZShXVEY6Om1vdmUoaGFzaE1hcCkpKTsKKyAgICAgICAgICAgIG1hcC5zZXQoc3RyaW5nT3Jp
Z2luSGFzaC5rZXksIEFQSTo6RGljdGlvbmFyeTo6Y3JlYXRlKFdURk1vdmUoaGFzaE1hcCkpKTsK
ICAgICB9CiAKLSAgICByZXR1cm4gQVBJOjpEaWN0aW9uYXJ5OjpjcmVhdGUoV1RGOjptb3ZlKG1h
cCkpOworICAgIHJldHVybiBBUEk6OkRpY3Rpb25hcnk6OmNyZWF0ZShXVEZNb3ZlKG1hcCkpOwog
fQogCiB2b2lkIFBsdWdJbkF1dG9TdGFydFByb3ZpZGVyOjpzZXRBdXRvU3RhcnRPcmlnaW5zVGFi
bGUoQVBJOjpEaWN0aW9uYXJ5JiB0YWJsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NNYW5hZ2VyLmNwcAppbmRleCBjYzVkNWVi
MGMyNDRmNWMwMjBhYWQ3ZmM1ZWFkODRiMTA1NWIwYjU1Li40N2VhYTA5NTAxN2YxMzllZDYyYzE2
ZGJhMTNkNmIzOTk1N2RkYjI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5Qcm9jZXNzTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc01hbmFnZXIuY3BwCkBAIC03Myw3ICs3Myw3IEBA
IHVpbnQ2NF90IFBsdWdpblByb2Nlc3NNYW5hZ2VyOjpwbHVnaW5Qcm9jZXNzVG9rZW4oY29uc3Qg
UGx1Z2luTW9kdWxlSW5mbyYgcGx1Z2luCiAgICAgYXR0cmlidXRlcy5wcm9jZXNzVHlwZSA9IHBs
dWdpblByb2Nlc3NUeXBlOwogICAgIGF0dHJpYnV0ZXMuc2FuZGJveFBvbGljeSA9IHBsdWdpblBy
b2Nlc3NTYW5kYm94UG9saWN5OwogCi0gICAgbV9wbHVnaW5Qcm9jZXNzVG9rZW5zLmFwcGVuZChz
dGQ6Om1ha2VfcGFpcihXVEY6Om1vdmUoYXR0cmlidXRlcyksIHRva2VuKSk7CisgICAgbV9wbHVn
aW5Qcm9jZXNzVG9rZW5zLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihXVEZNb3ZlKGF0dHJpYnV0ZXMp
LCB0b2tlbikpOwogICAgIG1fa25vd25Ub2tlbnMuYWRkKHRva2VuKTsKIAogICAgIHJldHVybiB0
b2tlbjsKQEAgLTk5LDIwICs5OSwyMCBAQCB2b2lkIFBsdWdpblByb2Nlc3NNYW5hZ2VyOjpmZXRj
aFdlYnNpdGVEYXRhKGNvbnN0IFBsdWdpbk1vZHVsZUluZm8mIHBsdWdpbiwgc3RkOgogewogICAg
IFBsdWdpblByb2Nlc3NQcm94eSogcGx1Z2luUHJvY2VzcyA9IGdldE9yQ3JlYXRlUGx1Z2luUHJv
Y2VzcyhwbHVnaW5Qcm9jZXNzVG9rZW4ocGx1Z2luLCBQbHVnaW5Qcm9jZXNzVHlwZU5vcm1hbCwg
UGx1Z2luUHJvY2Vzc1NhbmRib3hQb2xpY3lOb3JtYWwpKTsKIAotICAgIHBsdWdpblByb2Nlc3Mt
PmZldGNoV2Vic2l0ZURhdGEoV1RGOjptb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgcGx1
Z2luUHJvY2Vzcy0+ZmV0Y2hXZWJzaXRlRGF0YShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
CiB9CiAKIHZvaWQgUGx1Z2luUHJvY2Vzc01hbmFnZXI6OmRlbGV0ZVdlYnNpdGVEYXRhKGNvbnN0
IFBsdWdpbk1vZHVsZUluZm8mIHBsdWdpbiwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGlt
ZV9wb2ludCBtb2RpZmllZFNpbmNlLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+IGNvbXBsZXRpb25I
YW5kbGVyKQogewogICAgIFBsdWdpblByb2Nlc3NQcm94eSogcGx1Z2luUHJvY2VzcyA9IGdldE9y
Q3JlYXRlUGx1Z2luUHJvY2VzcyhwbHVnaW5Qcm9jZXNzVG9rZW4ocGx1Z2luLCBQbHVnaW5Qcm9j
ZXNzVHlwZU5vcm1hbCwgUGx1Z2luUHJvY2Vzc1NhbmRib3hQb2xpY3lOb3JtYWwpKTsKIAotICAg
IHBsdWdpblByb2Nlc3MtPmRlbGV0ZVdlYnNpdGVEYXRhKG1vZGlmaWVkU2luY2UsIFdURjo6bW92
ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIHBsdWdpblByb2Nlc3MtPmRlbGV0ZVdlYnNpdGVE
YXRhKG1vZGlmaWVkU2luY2UsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAogdm9p
ZCBQbHVnaW5Qcm9jZXNzTWFuYWdlcjo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JIb3N0TmFtZXMoY29u
c3QgUGx1Z2luTW9kdWxlSW5mbyYgcGx1Z2luLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgaG9zdE5h
bWVzLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+IGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIFBs
dWdpblByb2Nlc3NQcm94eSogcGx1Z2luUHJvY2VzcyA9IGdldE9yQ3JlYXRlUGx1Z2luUHJvY2Vz
cyhwbHVnaW5Qcm9jZXNzVG9rZW4ocGx1Z2luLCBQbHVnaW5Qcm9jZXNzVHlwZU5vcm1hbCwgUGx1
Z2luUHJvY2Vzc1NhbmRib3hQb2xpY3lOb3JtYWwpKTsKLSAgICBwbHVnaW5Qcm9jZXNzLT5kZWxl
dGVXZWJzaXRlRGF0YUZvckhvc3ROYW1lcyhob3N0TmFtZXMsIFdURjo6bW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOworICAgIHBsdWdpblByb2Nlc3MtPmRlbGV0ZVdlYnNpdGVEYXRhRm9ySG9zdE5h
bWVzKGhvc3ROYW1lcywgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCiBQbHVnaW5Q
cm9jZXNzUHJveHkqIFBsdWdpblByb2Nlc3NNYW5hZ2VyOjpnZXRPckNyZWF0ZVBsdWdpblByb2Nl
c3ModWludDY0X3QgcGx1Z2luUHJvY2Vzc1Rva2VuKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5jcHAKaW5kZXggMDI3NDFl
NTNkMTBmNWNkYTRlYjFmOGNlZjI3NTdmMDliY2I5MTczYi4uZjc4MTdjNzdhMzcyZmJkNTM0Y2Zl
YWE3MDZlYjQ0YTg3OTRkOGExOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuY3BwCkBAIC0xMTMsNyArMTEzLDcgQEAg
dm9pZCBQbHVnaW5Qcm9jZXNzUHJveHk6OmdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKFBhc3NS
ZWZQdHI8TWVzc2FnZXM6OldlYlByb2MKIHZvaWQgUGx1Z2luUHJvY2Vzc1Byb3h5OjpmZXRjaFdl
YnNpdGVEYXRhKHN0ZDo6ZnVuY3Rpb248dm9pZCAoVmVjdG9yPFN0cmluZz4pPiBjb21wbGV0aW9u
SGFuZGxlcikKIHsKICAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gZ2VuZXJhdGVDYWxsYmFja0lE
KCk7Ci0gICAgbV9wZW5kaW5nRmV0Y2hXZWJzaXRlRGF0YUNhbGxiYWNrcy5zZXQoY2FsbGJhY2tJ
RCwgV1RGOjptb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgbV9wZW5kaW5nRmV0Y2hXZWJz
aXRlRGF0YUNhbGxiYWNrcy5zZXQoY2FsbGJhY2tJRCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpOwogCiAgICAgaWYgKHN0YXRlKCkgPT0gU3RhdGU6OkxhdW5jaGluZykgewogICAgICAgICBt
X3BlbmRpbmdGZXRjaFdlYnNpdGVEYXRhUmVxdWVzdHMuYXBwZW5kKGNhbGxiYWNrSUQpOwpAQCAt
MTI2LDcgKzEyNiw3IEBAIHZvaWQgUGx1Z2luUHJvY2Vzc1Byb3h5OjpmZXRjaFdlYnNpdGVEYXRh
KHN0ZDo6ZnVuY3Rpb248dm9pZCAoVmVjdG9yPFN0cmluZz4pPiBjCiB2b2lkIFBsdWdpblByb2Nl
c3NQcm94eTo6ZGVsZXRlV2Vic2l0ZURhdGEoc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGlt
ZV9wb2ludCBtb2RpZmllZFNpbmNlLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+IGNvbXBsZXRpb25I
YW5kbGVyKQogewogICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBnZW5lcmF0ZUNhbGxiYWNrSUQo
KTsKLSAgICBtX3BlbmRpbmdEZWxldGVXZWJzaXRlRGF0YUNhbGxiYWNrcy5zZXQoY2FsbGJhY2tJ
RCwgV1RGOjptb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgbV9wZW5kaW5nRGVsZXRlV2Vi
c2l0ZURhdGFDYWxsYmFja3Muc2V0KGNhbGxiYWNrSUQsIFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKTsKIAogICAgIGlmIChzdGF0ZSgpID09IFN0YXRlOjpMYXVuY2hpbmcpIHsKICAgICAgICAg
bV9wZW5kaW5nRGVsZXRlV2Vic2l0ZURhdGFSZXF1ZXN0cy5hcHBlbmQoeyBtb2RpZmllZFNpbmNl
LCBjYWxsYmFja0lEIH0pOwpAQCAtMTM5LDcgKzEzOSw3IEBAIHZvaWQgUGx1Z2luUHJvY2Vzc1By
b3h5OjpkZWxldGVXZWJzaXRlRGF0YShzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3Bv
aW50CiB2b2lkIFBsdWdpblByb2Nlc3NQcm94eTo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JIb3N0TmFt
ZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGhvc3ROYW1lcywgc3RkOjpmdW5jdGlvbjx2b2lkICgp
PiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gZ2VuZXJh
dGVDYWxsYmFja0lEKCk7Ci0gICAgbV9wZW5kaW5nRGVsZXRlV2Vic2l0ZURhdGFGb3JIb3N0TmFt
ZXNDYWxsYmFja3Muc2V0KGNhbGxiYWNrSUQsIFdURjo6bW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OworICAgIG1fcGVuZGluZ0RlbGV0ZVdlYnNpdGVEYXRhRm9ySG9zdE5hbWVzQ2FsbGJhY2tzLnNl
dChjYWxsYmFja0lELCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAKICAgICBpZiAoc3Rh
dGUoKSA9PSBTdGF0ZTo6TGF1bmNoaW5nKSB7CiAgICAgICAgIG1fcGVuZGluZ0RlbGV0ZVdlYnNp
dGVEYXRhRm9ySG9zdE5hbWVzUmVxdWVzdHMuYXBwZW5kKHsgaG9zdE5hbWVzLCBjYWxsYmFja0lE
IH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Njcm9sbGluZy9SZW1v
dGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9TY3JvbGxpbmcvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eS5jcHAKaW5kZXggOTBk
ZTRhYzg3ZDg0Mjk0ODI3NzE0MDhkM2FmYjg5NzVhNTc0OTY0NS4uNGI0MzczMzIwMjJhNTZlOTY2
YTM3N2I0MDg3N2UzOTdiODdmYWJlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1Njcm9sbGluZy9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU2Nyb2xsaW5nL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5h
dG9yUHJveHkuY3BwCkBAIC05Miw3ICs5Miw3IEBAIHZvaWQgUmVtb3RlU2Nyb2xsaW5nQ29vcmRp
bmF0b3JQcm94eTo6dXBkYXRlU2Nyb2xsaW5nVHJlZShjb25zdCBSZW1vdGVTY3JvbGxpbmdDCiAg
ICAgfQogCiAgICAgY29ubmVjdFN0YXRlTm9kZUxheWVycygqc3RhdGVUcmVlLCAqbGF5ZXJUcmVl
SG9zdCk7Ci0gICAgbV9zY3JvbGxpbmdUcmVlLT5jb21taXROZXdUcmVlU3RhdGUoV1RGOjptb3Zl
KHN0YXRlVHJlZSkpOworICAgIG1fc2Nyb2xsaW5nVHJlZS0+Y29tbWl0TmV3VHJlZVN0YXRlKFdU
Rk1vdmUoc3RhdGVUcmVlKSk7CiAKICAgICBtX3JlcXVlc3RlZFNjcm9sbEluZm8gPSBudWxscHRy
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1N0YXRpc3RpY3NSZXF1
ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TdGF0aXN0aWNzUmVxdWVzdC5jcHAK
aW5kZXggODA2ZTEwZjAwZmYzZjE0NGYxN2ZiN2IwMjY4ZTExZmFjYTE2ZjE1OS4uYmY1MWQyMzRi
NzExZTBlN2E2ZWNlOWMyNDgxY2ExYmVhMjVjYmU3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1N0YXRpc3RpY3NSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvU3RhdGlzdGljc1JlcXVlc3QuY3BwCkBAIC05MCw3ICs5MCw3IEBAIHZvaWQgU3Rh
dGlzdGljc1JlcXVlc3Q6OmNvbXBsZXRlZFJlcXVlc3QodWludDY0X3QgcmVxdWVzdElELCBjb25z
dCBTdGF0aXN0aWNzRGF0CiAgICAgICAgIGZvciAoY29uc3QgYXV0byYgc3RhdGlzdGljIDogZGF0
YS53ZWJDb3JlQ2FjaGVTdGF0aXN0aWNzKQogICAgICAgICAgICAgY2FjaGVTdGF0aXN0aWNzLnVu
Y2hlY2tlZEFwcGVuZChjcmVhdGVEaWN0aW9uYXJ5RnJvbUhhc2hNYXAoc3RhdGlzdGljKSk7CiAK
LSAgICAgICAgbV9yZXNwb25zZURpY3Rpb25hcnktPnNldCgiV2ViQ29yZUNhY2hlU3RhdGlzdGlj
cyIsIEFQSTo6QXJyYXk6OmNyZWF0ZShXVEY6Om1vdmUoY2FjaGVTdGF0aXN0aWNzKSkpOworICAg
ICAgICBtX3Jlc3BvbnNlRGljdGlvbmFyeS0+c2V0KCJXZWJDb3JlQ2FjaGVTdGF0aXN0aWNzIiwg
QVBJOjpBcnJheTo6Y3JlYXRlKFdURk1vdmUoY2FjaGVTdGF0aXN0aWNzKSkpOwogICAgIH0KIAog
ICAgIGlmIChtX291dHN0YW5kaW5nUmVxdWVzdHMuaXNFbXB0eSgpKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZS5j
cHAKaW5kZXggYTk5NjcwN2MxNDkwYmNkZDg3YWJkZjc2YzNlY2YyNWMxNTI0ZDZiMi4uMTM2NzQz
OGFmZTZkNGI1NzhkMGRhOGQyMjhjZjFlNzM1MTBiZDJiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1N0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlLmNwcApA
QCAtNDgsMTMgKzQ4LDEzIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBQYXNzUmVmUHRyPExvY2Fs
U3RvcmFnZURhdGFiYXNlPiBMb2NhbFN0b3JhZ2VEYXRhYmFzZTo6Y3JlYXRlKFBhc3NSZWZQdHI8
V29ya1F1ZXVlPiBxdWV1ZSwgUGFzc1JlZlB0cjxMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI+
IHRyYWNrZXIsIFJlZjxTZWN1cml0eU9yaWdpbj4mJiBzZWN1cml0eU9yaWdpbikKIHsKLSAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IExvY2FsU3RvcmFnZURhdGFiYXNlKHF1ZXVlLCB0cmFja2VyLCBX
VEY6Om1vdmUoc2VjdXJpdHlPcmlnaW4pKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBMb2Nh
bFN0b3JhZ2VEYXRhYmFzZShxdWV1ZSwgdHJhY2tlciwgV1RGTW92ZShzZWN1cml0eU9yaWdpbikp
KTsKIH0KIAogTG9jYWxTdG9yYWdlRGF0YWJhc2U6OkxvY2FsU3RvcmFnZURhdGFiYXNlKFBhc3NS
ZWZQdHI8V29ya1F1ZXVlPiBxdWV1ZSwgUGFzc1JlZlB0cjxMb2NhbFN0b3JhZ2VEYXRhYmFzZVRy
YWNrZXI+IHRyYWNrZXIsIFJlZjxTZWN1cml0eU9yaWdpbj4mJiBzZWN1cml0eU9yaWdpbikKICAg
ICA6IG1fcXVldWUocXVldWUpCiAgICAgLCBtX3RyYWNrZXIodHJhY2tlcikKLSAgICAsIG1fc2Vj
dXJpdHlPcmlnaW4oV1RGOjptb3ZlKHNlY3VyaXR5T3JpZ2luKSkKKyAgICAsIG1fc2VjdXJpdHlP
cmlnaW4oV1RGTW92ZShzZWN1cml0eU9yaWdpbikpCiAgICAgLCBtX2RhdGFiYXNlUGF0aChtX3Ry
YWNrZXItPmRhdGFiYXNlUGF0aChtX3NlY3VyaXR5T3JpZ2luLnB0cigpKSkKICAgICAsIG1fZmFp
bGVkVG9PcGVuRGF0YWJhc2UoZmFsc2UpCiAgICAgLCBtX2RpZEltcG9ydEl0ZW1zKGZhbHNlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZU1hbmFn
ZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZU1hbmFnZXIu
Y3BwCmluZGV4IDFjZDg0ZmRlZTY5YjZjODFlMTdmOGU5MGU4ZDdlZDE5ZDg1NDdlYTEuLmZkYzgx
OTZkNDFiZjNiY2MzNGEzNjc1NTVhNjEzZDhmN2YwNzAyZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5jcHAKQEAgLTEyNCw3ICsx
MjQsNyBAQCBwdWJsaWM6CiAgICAgICAgIGlmIChzbG90KQogICAgICAgICAgICAgcmV0dXJuICpz
bG90OwogCi0gICAgICAgIGF1dG8gc3RvcmFnZUFyZWEgPSBTdG9yYWdlQXJlYTo6Y3JlYXRlKG51
bGxwdHIsIFdURjo6bW92ZShzZWN1cml0eU9yaWdpbiksIG1fcXVvdGFJbkJ5dGVzKTsKKyAgICAg
ICAgYXV0byBzdG9yYWdlQXJlYSA9IFN0b3JhZ2VBcmVhOjpjcmVhdGUobnVsbHB0ciwgV1RGTW92
ZShzZWN1cml0eU9yaWdpbiksIG1fcXVvdGFJbkJ5dGVzKTsKICAgICAgICAgc2xvdCA9ICZzdG9y
YWdlQXJlYS5nZXQoKTsKIAogICAgICAgICByZXR1cm4gc3RvcmFnZUFyZWE7CkBAIC0xNjgsMTMg
KzE2OCwxMyBAQCBwcml2YXRlOgogCiBSZWY8U3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VBcmVhPiBT
dG9yYWdlTWFuYWdlcjo6U3RvcmFnZUFyZWE6OmNyZWF0ZShMb2NhbFN0b3JhZ2VOYW1lc3BhY2Uq
IGxvY2FsU3RvcmFnZU5hbWVzcGFjZSwgUmVmPFNlY3VyaXR5T3JpZ2luPiYmIHNlY3VyaXR5T3Jp
Z2luLCB1bnNpZ25lZCBxdW90YUluQnl0ZXMpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
U3RvcmFnZUFyZWEobG9jYWxTdG9yYWdlTmFtZXNwYWNlLCBXVEY6Om1vdmUoc2VjdXJpdHlPcmln
aW4pLCBxdW90YUluQnl0ZXMpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdG9yYWdlQXJl
YShsb2NhbFN0b3JhZ2VOYW1lc3BhY2UsIFdURk1vdmUoc2VjdXJpdHlPcmlnaW4pLCBxdW90YUlu
Qnl0ZXMpKTsKIH0KIAogU3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VBcmVhOjpTdG9yYWdlQXJlYShM
b2NhbFN0b3JhZ2VOYW1lc3BhY2UqIGxvY2FsU3RvcmFnZU5hbWVzcGFjZSwgUmVmPFNlY3VyaXR5
T3JpZ2luPiYmIHNlY3VyaXR5T3JpZ2luLCB1bnNpZ25lZCBxdW90YUluQnl0ZXMpCiAgICAgOiBt
X2xvY2FsU3RvcmFnZU5hbWVzcGFjZShsb2NhbFN0b3JhZ2VOYW1lc3BhY2UpCiAgICAgLCBtX2Rp
ZEltcG9ydEl0ZW1zRnJvbURhdGFiYXNlKGZhbHNlKQotICAgICwgbV9zZWN1cml0eU9yaWdpbihX
VEY6Om1vdmUoc2VjdXJpdHlPcmlnaW4pKQorICAgICwgbV9zZWN1cml0eU9yaWdpbihXVEZNb3Zl
KHNlY3VyaXR5T3JpZ2luKSkKICAgICAsIG1fcXVvdGFJbkJ5dGVzKHF1b3RhSW5CeXRlcykKICAg
ICAsIG1fc3RvcmFnZU1hcChTdG9yYWdlTWFwOjpjcmVhdGUobV9xdW90YUluQnl0ZXMpKQogewpA
QCAtMzM1LDcgKzMzNSw3IEBAIFJlZjxTdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUFyZWE+IFN0b3Jh
Z2VNYW5hZ2VyOjpMb2NhbFN0b3JhZ2VOYW1lc3BhY2U6OmdldE9yQ3JlCiAgICAgaWYgKHNsb3Qp
CiAgICAgICAgIHJldHVybiAqc2xvdDsKIAotICAgIGF1dG8gc3RvcmFnZUFyZWEgPSBTdG9yYWdl
QXJlYTo6Y3JlYXRlKHRoaXMsIFdURjo6bW92ZShzZWN1cml0eU9yaWdpbiksIG1fcXVvdGFJbkJ5
dGVzKTsKKyAgICBhdXRvIHN0b3JhZ2VBcmVhID0gU3RvcmFnZUFyZWE6OmNyZWF0ZSh0aGlzLCBX
VEZNb3ZlKHNlY3VyaXR5T3JpZ2luKSwgbV9xdW90YUluQnl0ZXMpOwogICAgIHNsb3QgPSAmc3Rv
cmFnZUFyZWEuZ2V0KCk7CiAKICAgICByZXR1cm4gc3RvcmFnZUFyZWE7CkBAIC00NDEsNyArNDQx
LDcgQEAgUmVmPFN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQXJlYT4gU3RvcmFnZU1hbmFnZXI6OlNl
c3Npb25TdG9yYWdlTmFtZXNwYWNlOjpnZXRPckMKIHsKICAgICBhdXRvJiBzbG90ID0gbV9zdG9y
YWdlQXJlYU1hcC5hZGQoc2VjdXJpdHlPcmlnaW4ucHRyKCksIG51bGxwdHIpLml0ZXJhdG9yLT52
YWx1ZTsKICAgICBpZiAoIXNsb3QpCi0gICAgICAgIHNsb3QgPSBTdG9yYWdlQXJlYTo6Y3JlYXRl
KDAsIFdURjo6bW92ZShzZWN1cml0eU9yaWdpbiksIG1fcXVvdGFJbkJ5dGVzKTsKKyAgICAgICAg
c2xvdCA9IFN0b3JhZ2VBcmVhOjpjcmVhdGUoMCwgV1RGTW92ZShzZWN1cml0eU9yaWdpbiksIG1f
cXVvdGFJbkJ5dGVzKTsKIAogICAgIHJldHVybiAqc2xvdDsKIH0KQEAgLTU2MiwxMSArNTYyLDEx
IEBAIHZvaWQgU3RvcmFnZU1hbmFnZXI6OmdldFNlc3Npb25TdG9yYWdlT3JpZ2lucyhzdGQ6OmZ1
bmN0aW9uPHZvaWQgKEhhc2hTZXQ8UmVmUHRyCiAKICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBz
ZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSA6IHN0b3JhZ2VNYW5hZ2VyLT5tX3Nlc3Npb25TdG9yYWdl
TmFtZXNwYWNlcy52YWx1ZXMoKSkgewogICAgICAgICAgICAgZm9yIChhdXRvJiBvcmlnaW4gOiBz
ZXNzaW9uU3RvcmFnZU5hbWVzcGFjZS0+b3JpZ2lucygpKQotICAgICAgICAgICAgICAgIG9yaWdp
bnMuYWRkKFdURjo6bW92ZShvcmlnaW4pKTsKKyAgICAgICAgICAgICAgICBvcmlnaW5zLmFkZChX
VEZNb3ZlKG9yaWdpbikpOwogICAgICAgICB9CiAKICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRp
c3BhdGNoKFtvcmlnaW5zLCBjb21wbGV0aW9uSGFuZGxlcl0oKSBtdXRhYmxlIHsKLSAgICAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURjo6bW92ZShvcmlnaW5zKSk7CisgICAgICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKG9yaWdpbnMpKTsKICAgICAgICAgfSk7CiAgICAgfSk7
CiB9CkBAIC02MTAsMTUgKzYxMCwxNSBAQCB2b2lkIFN0b3JhZ2VNYW5hZ2VyOjpnZXRMb2NhbFN0
b3JhZ2VPcmlnaW5zKHN0ZDo6ZnVuY3Rpb248dm9pZCAoSGFzaFNldDxSZWZQdHI8VwogICAgICAg
ICBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+IG9yaWdpbnM7CiAKICAgICAgICAgZm9y
IChhdXRvJiBvcmlnaW4gOiBzdG9yYWdlTWFuYWdlci0+bV9sb2NhbFN0b3JhZ2VEYXRhYmFzZVRy
YWNrZXItPm9yaWdpbnMoKSkKLSAgICAgICAgICAgIG9yaWdpbnMuYWRkKFdURjo6bW92ZShvcmln
aW4pKTsKKyAgICAgICAgICAgIG9yaWdpbnMuYWRkKFdURk1vdmUob3JpZ2luKSk7CiAKICAgICAg
ICAgZm9yIChhdXRvJiB0cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UgOiBzdG9yYWdlTWFu
YWdlci0+bV90cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2VzLnZhbHVlcygpKSB7CiAgICAg
ICAgICAgICBmb3IgKGF1dG8mIG9yaWdpbiA6IHRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFj
ZS0+b3JpZ2lucygpKQotICAgICAgICAgICAgICAgIG9yaWdpbnMuYWRkKFdURjo6bW92ZShvcmln
aW4pKTsKKyAgICAgICAgICAgICAgICBvcmlnaW5zLmFkZChXVEZNb3ZlKG9yaWdpbikpOwogICAg
ICAgICB9CiAKICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtvcmlnaW5zLCBjb21w
bGV0aW9uSGFuZGxlcl0oKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KFdURjo6bW92ZShvcmlnaW5zKSk7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZN
b3ZlKG9yaWdpbnMpKTsKICAgICAgICAgfSk7CiAgICAgfSk7CiB9CkBAIC02MzEsNyArNjMxLDcg
QEAgdm9pZCBTdG9yYWdlTWFuYWdlcjo6Z2V0TG9jYWxTdG9yYWdlT3JpZ2luRGV0YWlscyhzdGQ6
OmZ1bmN0aW9uPHZvaWQgKFZlY3RvcjxMb2MKICAgICAgICAgYXV0byBvcmlnaW5EZXRhaWxzID0g
c3RvcmFnZU1hbmFnZXItPm1fbG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLT5vcmlnaW5EZXRh
aWxzKCk7CiAKICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtvcmlnaW5EZXRhaWxz
LCBjb21wbGV0aW9uSGFuZGxlcl0oKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKFdURjo6bW92ZShvcmlnaW5EZXRhaWxzKSk7CisgICAgICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihXVEZNb3ZlKG9yaWdpbkRldGFpbHMpKTsKICAgICAgICAgfSk7CiAgICAgfSk7CiB9
CkBAIC03MzgsNyArNzM4LDcgQEAgdm9pZCBTdG9yYWdlTWFuYWdlcjo6Y3JlYXRlVHJhbnNpZW50
TG9jYWxTdG9yYWdlTWFwKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwKICAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgICBhcmVhLT5hZGRMaXN0ZW5lcihjb25uZWN0aW9uLCBzdG9yYWdl
TWFwSUQpOwogICAgICAgICBtX3N0b3JhZ2VBcmVhc0J5Q29ubmVjdGlvbi5yZW1vdmUoaXQpOwot
ICAgICAgICBtX3N0b3JhZ2VBcmVhc0J5Q29ubmVjdGlvbi5hZGQoeyAmY29ubmVjdGlvbiwgc3Rv
cmFnZU1hcElEIH0sIFdURjo6bW92ZShhcmVhKSk7CisgICAgICAgIG1fc3RvcmFnZUFyZWFzQnlD
b25uZWN0aW9uLmFkZCh7ICZjb25uZWN0aW9uLCBzdG9yYWdlTWFwSUQgfSwgV1RGTW92ZShhcmVh
KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTc1Miw3ICs3NTIsNyBAQCB2b2lkIFN0
b3JhZ2VNYW5hZ2VyOjpjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VNYXAoSVBDOjpDb25uZWN0
aW9uJiBjb25uZWN0aW9uLAogICAgIGF1dG8gc3RvcmFnZUFyZWEgPSB0cmFuc2llbnRMb2NhbFN0
b3JhZ2VOYW1lc3BhY2UtPmdldE9yQ3JlYXRlU3RvcmFnZUFyZWEoc2VjdXJpdHlPcmlnaW5EYXRh
LnNlY3VyaXR5T3JpZ2luKCkpOwogICAgIHN0b3JhZ2VBcmVhLT5hZGRMaXN0ZW5lcihjb25uZWN0
aW9uLCBzdG9yYWdlTWFwSUQpOwogCi0gICAgc2xvdCA9IFdURjo6bW92ZShzdG9yYWdlQXJlYSk7
CisgICAgc2xvdCA9IFdURk1vdmUoc3RvcmFnZUFyZWEpOwogfQogCiB2b2lkIFN0b3JhZ2VNYW5h
Z2VyOjpjcmVhdGVTZXNzaW9uU3RvcmFnZU1hcChJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24s
IHVpbnQ2NF90IHN0b3JhZ2VNYXBJRCwgdWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlELCBjb25z
dCBTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luRGF0YSkKQEAgLTc4MSw3ICs3ODEs
NyBAQCB2b2lkIFN0b3JhZ2VNYW5hZ2VyOjpjcmVhdGVTZXNzaW9uU3RvcmFnZU1hcChJUEM6OkNv
bm5lY3Rpb24mIGNvbm5lY3Rpb24sIHVpbnQ2NAogICAgIGF1dG8gc3RvcmFnZUFyZWEgPSBzZXNz
aW9uU3RvcmFnZU5hbWVzcGFjZS0+Z2V0T3JDcmVhdGVTdG9yYWdlQXJlYShzZWN1cml0eU9yaWdp
bkRhdGEuc2VjdXJpdHlPcmlnaW4oKSk7CiAgICAgc3RvcmFnZUFyZWEtPmFkZExpc3RlbmVyKGNv
bm5lY3Rpb24sIHN0b3JhZ2VNYXBJRCk7CiAKLSAgICBzbG90ID0gV1RGOjptb3ZlKHN0b3JhZ2VB
cmVhKTsKKyAgICBzbG90ID0gV1RGTW92ZShzdG9yYWdlQXJlYSk7CiB9CiAKIHZvaWQgU3RvcmFn
ZU1hbmFnZXI6OmRlc3Ryb3lTdG9yYWdlTWFwKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwg
dWludDY0X3Qgc3RvcmFnZU1hcElEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1VzZXJDb250ZW50L1dlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJTY3JpcHRNZXNzYWdlSGFuZGxlci5jcHAKaW5k
ZXggZjllMmVkNGQ1ZmM0OGY5MzJmOTViZjBiYTc2ODM5MGNhZTRhMWJmZC4uYmZhY2YwNDFhNDJj
ODBhYWVmYjRmMjYzMGJlODJkZjkyOWE5MjIxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViU2NyaXB0TWVzc2FnZUhhbmRs
ZXIuY3BwCkBAIC01NiwxMiArNTYsMTIgQEAgc3RhdGljIHVpbnQ2NF90IGdlbmVyYXRlSWRlbnRp
ZmllcigpCiAKIFBhc3NSZWZQdHI8V2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI+IFdlYlNjcmlwdE1l
c3NhZ2VIYW5kbGVyOjpjcmVhdGUoc3RkOjp1bmlxdWVfcHRyPENsaWVudD4gY2xpZW50LCBjb25z
dCBTdHJpbmcmIG5hbWUpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJTY3JpcHRNZXNz
YWdlSGFuZGxlcihXVEY6Om1vdmUoY2xpZW50KSwgbmFtZSkpOworICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXIoV1RGTW92ZShjbGllbnQpLCBuYW1lKSk7CiB9
CiAKIFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyOjpXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcihzdGQ6
OnVuaXF1ZV9wdHI8Q2xpZW50PiBjbGllbnQsIGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICA6IG1f
aWRlbnRpZmllcihnZW5lcmF0ZUlkZW50aWZpZXIoKSkKLSAgICAsIG1fY2xpZW50KFdURjo6bW92
ZShjbGllbnQpKQorICAgICwgbV9jbGllbnQoV1RGTW92ZShjbGllbnQpKQogICAgICwgbV9uYW1l
KG5hbWUpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvVXNlckNv
bnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmNwcApp
bmRleCBlMzg5MmVjYzkzM2FhODlkMDU5Y2FmZmU5M2FlYWIzNTMwZTMyNTI0Li40YjJjNmRlMzBj
MWVmZGYxNDI5MzRiM2ZjMzQ5MGU5MTFjMGJmNjRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVu
dENvbnRyb2xsZXJQcm94eS5jcHAKQEAgLTExOCw3ICsxMTgsNyBAQCB2b2lkIFdlYlVzZXJDb250
ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVBbGxVc2VyU2NyaXB0cygpCiAKIHZvaWQgV2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmFkZFVzZXJTdHlsZVNoZWV0KFdlYkNvcmU6OlVzZXJT
dHlsZVNoZWV0IHVzZXJTdHlsZVNoZWV0KQogewotICAgIG1fdXNlclN0eWxlU2hlZXRzLmFwcGVu
ZChXVEY6Om1vdmUodXNlclN0eWxlU2hlZXQpKTsKKyAgICBtX3VzZXJTdHlsZVNoZWV0cy5hcHBl
bmQoV1RGTW92ZSh1c2VyU3R5bGVTaGVldCkpOwogCiAgICAgZm9yIChXZWJQcm9jZXNzUHJveHkq
IHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKICAgICAgICAgcHJvY2Vzcy0+Y29ubmVjdGlvbigpLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OkFkZFVzZXJTdHlsZVNoZWV0
cyh7IG1fdXNlclN0eWxlU2hlZXRzLmxhc3QoKSB9KSwgbV9pZGVudGlmaWVyKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuY3BwIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5jcHAKaW5kZXgg
YzVmNTZkODgyMzI4YTRiMzI5ZGZmNThjZWM0ODU4YTFmMDZhYWZjMC4uMTM1MTUxZjgxZmM1Y2Zh
N2QzOWEyNWZlYjI0YjFiNjBjMzZjY2MyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5jcHAKQEAgLTIwMyw3ICsyMDMsNyBAQCB2b2lk
IFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6U25hcHNob3RSZW1vdmFsVHJhY2tlcjo6bG9nKGNvbnN0
IFN0cmluZyYgbG9nKSBjb25zdAogdm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OlNuYXBzaG90
UmVtb3ZhbFRyYWNrZXI6OnN0YXJ0KEV2ZW50cyBkZXNpcmVkRXZlbnRzLCBzdGQ6OmZ1bmN0aW9u
PHZvaWQoKT4gcmVtb3ZhbENhbGxiYWNrKQogewogICAgIG1fb3V0c3RhbmRpbmdFdmVudHMgPSBk
ZXNpcmVkRXZlbnRzOwotICAgIG1fcmVtb3ZhbENhbGxiYWNrID0gV1RGOjptb3ZlKHJlbW92YWxD
YWxsYmFjayk7CisgICAgbV9yZW1vdmFsQ2FsbGJhY2sgPSBXVEZNb3ZlKHJlbW92YWxDYWxsYmFj
ayk7CiAgICAgbV9zdGFydFRpbWUgPSBzdGQ6OmNocm9ubzo6c3RlYWR5X2Nsb2NrOjpub3coKTsK
IAogICAgIGxvZygic3RhcnQiKTsKQEAgLTI2Miw3ICsyNjIsNyBAQCB2b2lkIFZpZXdHZXN0dXJl
Q29udHJvbGxlcjo6U25hcHNob3RSZW1vdmFsVHJhY2tlcjo6ZmlyZVJlbW92YWxDYWxsYmFja0lt
bWVkaWF0ZQogewogICAgIG1fd2F0Y2hkb2dUaW1lci5zdG9wKCk7CiAKLSAgICBhdXRvIHJlbW92
YWxDYWxsYmFjayA9IFdURjo6bW92ZShtX3JlbW92YWxDYWxsYmFjayk7CisgICAgYXV0byByZW1v
dmFsQ2FsbGJhY2sgPSBXVEZNb3ZlKG1fcmVtb3ZhbENhbGxiYWNrKTsKICAgICBpZiAocmVtb3Zh
bENhbGxiYWNrKSB7CiAgICAgICAgIGxvZygicmVtb3Zpbmcgc25hcHNob3QiKTsKICAgICAgICAg
cmVzZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJCYWNrRm9y
d2FyZExpc3QuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkTGlz
dC5jcHAKaW5kZXggZTlmYjNlMjk5MGMzNGIyOGI0ODFmN2NiMGI5M2MzMzUwNmEwNGFjZS4uMjcz
NDMxMjMyYjJjYjU0MjgzN2YyMjFjNmYxZWRmNWEzZjkyODA3MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkTGlzdC5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkTGlzdC5jcHAKQEAgLTE2MCw3ICsxNjAsNyBA
QCB2b2lkIFdlYkJhY2tGb3J3YXJkTGlzdDo6YWRkSXRlbShXZWJCYWNrRm9yd2FyZExpc3RJdGVt
KiBuZXdJdGVtKQogICAgICAgICAgICAgbV9lbnRyaWVzLmluc2VydChtX2N1cnJlbnRJbmRleCwg
bmV3SXRlbSk7CiAgICAgfQogCi0gICAgbV9wYWdlLT5kaWRDaGFuZ2VCYWNrRm9yd2FyZExpc3Qo
bmV3SXRlbSwgV1RGOjptb3ZlKHJlbW92ZWRJdGVtcykpOworICAgIG1fcGFnZS0+ZGlkQ2hhbmdl
QmFja0ZvcndhcmRMaXN0KG5ld0l0ZW0sIFdURk1vdmUocmVtb3ZlZEl0ZW1zKSk7CiB9CiAKIHZv
aWQgV2ViQmFja0ZvcndhcmRMaXN0Ojpnb1RvSXRlbShXZWJCYWNrRm9yd2FyZExpc3RJdGVtKiBp
dGVtKQpAQCAtMjg4LDcgKzI4OCw3IEBAIFJlZjxBUEk6OkFycmF5PiBXZWJCYWNrRm9yd2FyZExp
c3Q6OmJhY2tMaXN0QXNBUElBcnJheVdpdGhMaW1pdCh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAg
dmVjdG9yLnVuY2hlY2tlZEFwcGVuZChtX2VudHJpZXNbaV0uZ2V0KCkpOwogICAgIH0KIAotICAg
IHJldHVybiBBUEk6OkFycmF5OjpjcmVhdGUoV1RGOjptb3ZlKHZlY3RvcikpOworICAgIHJldHVy
biBBUEk6OkFycmF5OjpjcmVhdGUoV1RGTW92ZSh2ZWN0b3IpKTsKIH0KIAogUmVmPEFQSTo6QXJy
YXk+IFdlYkJhY2tGb3J3YXJkTGlzdDo6Zm9yd2FyZExpc3RBc0FQSUFycmF5V2l0aExpbWl0KHVu
c2lnbmVkIGxpbWl0KSBjb25zdApAQCAtMzEyLDcgKzMxMiw3IEBAIFJlZjxBUEk6OkFycmF5PiBX
ZWJCYWNrRm9yd2FyZExpc3Q6OmZvcndhcmRMaXN0QXNBUElBcnJheVdpdGhMaW1pdCh1bnNpZ25l
ZCBsaW1pCiAgICAgICAgIHZlY3Rvci51bmNoZWNrZWRBcHBlbmQobV9lbnRyaWVzW2ldLmdldCgp
KTsKICAgICB9CiAKLSAgICByZXR1cm4gQVBJOjpBcnJheTo6Y3JlYXRlKFdURjo6bW92ZSh2ZWN0
b3IpKTsKKyAgICByZXR1cm4gQVBJOjpBcnJheTo6Y3JlYXRlKFdURk1vdmUodmVjdG9yKSk7CiB9
CiAKIHZvaWQgV2ViQmFja0ZvcndhcmRMaXN0OjpyZW1vdmVBbGxJdGVtcygpCkBAIC0zMjcsMTIg
KzMyNywxMiBAQCB2b2lkIFdlYkJhY2tGb3J3YXJkTGlzdDo6cmVtb3ZlQWxsSXRlbXMoKQogICAg
ICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgZGlkUmVtb3ZlSXRlbSgqZW50cnkpOwotICAg
ICAgICByZW1vdmVkSXRlbXMuYXBwZW5kKFdURjo6bW92ZShlbnRyeSkpOworICAgICAgICByZW1v
dmVkSXRlbXMuYXBwZW5kKFdURk1vdmUoZW50cnkpKTsKICAgICB9CiAKICAgICBtX2VudHJpZXMu
Y2xlYXIoKTsKICAgICBtX2hhc0N1cnJlbnRJbmRleCA9IGZhbHNlOwotICAgIG1fcGFnZS0+ZGlk
Q2hhbmdlQmFja0ZvcndhcmRMaXN0KG51bGxwdHIsIFdURjo6bW92ZShyZW1vdmVkSXRlbXMpKTsK
KyAgICBtX3BhZ2UtPmRpZENoYW5nZUJhY2tGb3J3YXJkTGlzdChudWxscHRyLCBXVEZNb3ZlKHJl
bW92ZWRJdGVtcykpOwogfQogCiB2b2lkIFdlYkJhY2tGb3J3YXJkTGlzdDo6Y2xlYXIoKQpAQCAt
MzYyLDcgKzM2Miw3IEBAIHZvaWQgV2ViQmFja0ZvcndhcmRMaXN0OjpjbGVhcigpCiAKICAgICAg
ICAgbV9lbnRyaWVzLmNsZWFyKCk7CiAgICAgICAgIG1faGFzQ3VycmVudEluZGV4ID0gZmFsc2U7
Ci0gICAgICAgIG1fcGFnZS0+ZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0KG51bGxwdHIsIFdURjo6
bW92ZShyZW1vdmVkSXRlbXMpKTsKKyAgICAgICAgbV9wYWdlLT5kaWRDaGFuZ2VCYWNrRm9yd2Fy
ZExpc3QobnVsbHB0ciwgV1RGTW92ZShyZW1vdmVkSXRlbXMpKTsKIAogICAgICAgICByZXR1cm47
CiAgICAgfQpAQCAtMzg5LDcgKzM4OSw3IEBAIHZvaWQgV2ViQmFja0ZvcndhcmRMaXN0OjpjbGVh
cigpCiAgICAgICAgIG1faGFzQ3VycmVudEluZGV4ID0gZmFsc2U7CiAgICAgfQogCi0gICAgbV9w
YWdlLT5kaWRDaGFuZ2VCYWNrRm9yd2FyZExpc3QobnVsbHB0ciwgV1RGOjptb3ZlKHJlbW92ZWRJ
dGVtcykpOworICAgIG1fcGFnZS0+ZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0KG51bGxwdHIsIFdU
Rk1vdmUocmVtb3ZlZEl0ZW1zKSk7CiB9CiAKIEJhY2tGb3J3YXJkTGlzdFN0YXRlIFdlYkJhY2tG
b3J3YXJkTGlzdDo6YmFja0ZvcndhcmRMaXN0U3RhdGUoY29uc3Qgc3RkOjpmdW5jdGlvbjxib29s
IChXZWJCYWNrRm9yd2FyZExpc3RJdGVtJik+JiBmaWx0ZXIpIGNvbnN0CkBAIC00MjcsMTEgKzQy
NywxMSBAQCB2b2lkIFdlYkJhY2tGb3J3YXJkTGlzdDo6cmVzdG9yZUZyb21TdGF0ZShCYWNrRm9y
d2FyZExpc3RTdGF0ZSBiYWNrRm9yd2FyZExpc3RTdAogCiAgICAgZm9yIChhdXRvJiBiYWNrRm9y
d2FyZExpc3RJdGVtU3RhdGUgOiBiYWNrRm9yd2FyZExpc3RTdGF0ZS5pdGVtcykgewogICAgICAg
ICBiYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUuaWRlbnRpZmllciA9IGdlbmVyYXRlV2ViQmFja0Zv
cndhcmRJdGVtSUQoKTsKLSAgICAgICAgaXRlbXMudW5jaGVja2VkQXBwZW5kKFdlYkJhY2tGb3J3
YXJkTGlzdEl0ZW06OmNyZWF0ZShXVEY6Om1vdmUoYmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlKSwg
bV9wYWdlLT5wYWdlSUQoKSkpOworICAgICAgICBpdGVtcy51bmNoZWNrZWRBcHBlbmQoV2ViQmFj
a0ZvcndhcmRMaXN0SXRlbTo6Y3JlYXRlKFdURk1vdmUoYmFja0ZvcndhcmRMaXN0SXRlbVN0YXRl
KSwgbV9wYWdlLT5wYWdlSUQoKSkpOwogICAgIH0KICAgICBtX2hhc0N1cnJlbnRJbmRleCA9ICEh
YmFja0ZvcndhcmRMaXN0U3RhdGUuY3VycmVudEluZGV4OwogICAgIG1fY3VycmVudEluZGV4ID0g
YmFja0ZvcndhcmRMaXN0U3RhdGUuY3VycmVudEluZGV4LnZhbHVlT3IoMCk7Ci0gICAgbV9lbnRy
aWVzID0gV1RGOjptb3ZlKGl0ZW1zKTsKKyAgICBtX2VudHJpZXMgPSBXVEZNb3ZlKGl0ZW1zKTsK
IH0KIAogVmVjdG9yPEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZT4gV2ViQmFja0ZvcndhcmRMaXN0
OjppdGVtU3RhdGVzKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJDb29raWVNYW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YkNvb2tpZU1hbmFnZXJQcm94eS5jcHAKaW5kZXggMGQyMzI4Mzc2YWJjZjllNWY5YjU0YjAzZWIw
YThmY2VmNTA2NWQ1Yi4uMWU2NWZjMTVkMGNhMDliZGU4YjM4YjFiODI3NzQyMGE0YmJlMDVjOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94
eS5jcHAKQEAgLTEwMCw3ICsxMDAsNyBAQCB2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGVy
ZWZXZWJDb250ZXh0U3VwcGxlbWVudCgpCiAKIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5Ojpn
ZXRIb3N0bmFtZXNXaXRoQ29va2llcyhzdGQ6OmZ1bmN0aW9uPHZvaWQgKEFQSTo6QXJyYXkqLCBD
YWxsYmFja0Jhc2U6OkVycm9yKT4gY2FsbGJhY2tGdW5jdGlvbikKIHsKLSAgICBSZWZQdHI8QXJy
YXlDYWxsYmFjaz4gY2FsbGJhY2sgPSBBcnJheUNhbGxiYWNrOjpjcmVhdGUoV1RGOjptb3ZlKGNh
bGxiYWNrRnVuY3Rpb24pKTsKKyAgICBSZWZQdHI8QXJyYXlDYWxsYmFjaz4gY2FsbGJhY2sgPSBB
cnJheUNhbGxiYWNrOjpjcmVhdGUoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSk7CiAgICAgdWlu
dDY0X3QgY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7CiAgICAgbV9hcnJheUNh
bGxiYWNrcy5zZXQoY2FsbGJhY2tJRCwgY2FsbGJhY2sucmVsZWFzZSgpKTsKIApAQCAtMTY3LDcg
KzE2Nyw3IEBAIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpzZXRIVFRQQ29va2llQWNjZXB0
UG9saWN5KEhUVFBDb29raWVBY2NlcHRQb2xpY3kgcG9sCiAKIHZvaWQgV2ViQ29va2llTWFuYWdl
clByb3h5OjpnZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHN0ZDo6ZnVuY3Rpb248dm9pZCAoSFRU
UENvb2tpZUFjY2VwdFBvbGljeSwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+IGNhbGxiYWNrRnVuY3Rp
b24pCiB7Ci0gICAgUmVmUHRyPEhUVFBDb29raWVBY2NlcHRQb2xpY3lDYWxsYmFjaz4gY2FsbGJh
Y2sgPSBIVFRQQ29va2llQWNjZXB0UG9saWN5Q2FsbGJhY2s6OmNyZWF0ZShXVEY6Om1vdmUoY2Fs
bGJhY2tGdW5jdGlvbikpOworICAgIFJlZlB0cjxIVFRQQ29va2llQWNjZXB0UG9saWN5Q2FsbGJh
Y2s+IGNhbGxiYWNrID0gSFRUUENvb2tpZUFjY2VwdFBvbGljeUNhbGxiYWNrOjpjcmVhdGUoV1RG
TW92ZShjYWxsYmFja0Z1bmN0aW9uKSk7CiAKICAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gY2Fs
bGJhY2stPmNhbGxiYWNrSUQoKTsKICAgICBtX2h0dHBDb29raWVBY2NlcHRQb2xpY3lDYWxsYmFj
a3Muc2V0KGNhbGxiYWNrSUQsIGNhbGxiYWNrLnJlbGVhc2UoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRm9ybUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViRm9ybUNsaWVudC5jcHAKaW5kZXggMGNkN2FhODM4YzdmYjUxOTk3MjJkNWY2
ZTYzYWNjZmU4Y2Q1MzM1MC4uNzE2YjdiZDYwZGZiYjM1NTkwNTRhMTc2YTdkZDc3NjJiZDY4NWIw
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkZvcm1DbGllbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJGb3JtQ2xpZW50LmNwcApAQCAtNDks
NyArNDksNyBAQCB2b2lkIFdlYkZvcm1DbGllbnQ6OndpbGxTdWJtaXRGb3JtKFdlYlBhZ2VQcm94
eSYgcGFnZSwgV2ViRnJhbWVQcm94eSYgZnJhbWUsIFdlYgogICAgIEFQSTo6RGljdGlvbmFyeTo6
TWFwVHlwZSBtYXA7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0ZXh0RmllbGRWYWx1ZXMu
c2l6ZSgpOyArK2kpCiAgICAgICAgIG1hcC5zZXQodGV4dEZpZWxkVmFsdWVzW2ldLmZpcnN0LCBB
UEk6OlN0cmluZzo6Y3JlYXRlKHRleHRGaWVsZFZhbHVlc1tpXS5zZWNvbmQpKTsKLSAgICBSZWY8
QVBJOjpEaWN0aW9uYXJ5PiB0ZXh0RmllbGRzTWFwID0gQVBJOjpEaWN0aW9uYXJ5OjpjcmVhdGUo
V1RGOjptb3ZlKG1hcCkpOworICAgIFJlZjxBUEk6OkRpY3Rpb25hcnk+IHRleHRGaWVsZHNNYXAg
PSBBUEk6OkRpY3Rpb25hcnk6OmNyZWF0ZShXVEZNb3ZlKG1hcCkpOwogICAgIG1fY2xpZW50Lndp
bGxTdWJtaXRGb3JtKHRvQVBJKCZwYWdlKSwgdG9BUEkoJmZyYW1lKSwgdG9BUEkoJnNvdXJjZUZy
YW1lKSwgdG9BUEkodGV4dEZpZWxkc01hcC5wdHIoKSksIHRvQVBJKHVzZXJEYXRhKSwgdG9BUEko
Jmxpc3RlbmVyLmdldCgpKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkZyYW1lTGlzdGVuZXJQcm94eS5oIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkZyYW1lTGlzdGVuZXJQcm94eS5oCmluZGV4IDE3
MDJhZjZjMzViOTcxMDJmMTA5YzkyZWYxM2JiNTQ5NzJkNzMzYjAuLjZhODdmNmUzNDU4ZTA3OTFk
YzJmY2UwZjQxNWFjYzFjMTQ4ZjBhODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJGcmFtZUxpc3RlbmVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViRnJhbWVMaXN0ZW5lclByb3h5LmgKQEAgLTQ1LDcgKzQ1LDcgQEAgcHVibGljOgogICAg
IHVpbnQ2NF90IGxpc3RlbmVySUQoKSBjb25zdCB7IHJldHVybiBtX2xpc3RlbmVySUQ7IH0KIAog
ICAgIEFQSTo6TmF2aWdhdGlvbiogbmF2aWdhdGlvbigpIHsgcmV0dXJuIG1fbmF2aWdhdGlvbi5n
ZXQoKTsgfQotICAgIHZvaWQgc2V0TmF2aWdhdGlvbihSZWY8QVBJOjpOYXZpZ2F0aW9uPiYmIG5h
dmlnYXRpb24pIHsgbV9uYXZpZ2F0aW9uID0gV1RGOjptb3ZlKG5hdmlnYXRpb24pOyB9CisgICAg
dm9pZCBzZXROYXZpZ2F0aW9uKFJlZjxBUEk6Ok5hdmlnYXRpb24+JiYgbmF2aWdhdGlvbikgeyBt
X25hdmlnYXRpb24gPSBXVEZNb3ZlKG5hdmlnYXRpb24pOyB9CiAKIHByb3RlY3RlZDoKICAgICBX
ZWJGcmFtZUxpc3RlbmVyUHJveHkoV2ViRnJhbWVQcm94eSosIHVpbnQ2NF90IGxpc3RlbmVySUQp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmgKaW5kZXggM2JjODZhM2Zi
MTI1YjFhNjFkNGNkZWEwNjljMjZjOGU5OGIyNThhMC4uMmVlODA0ODliOGNiOTAyY2Q2MTg3NmI1
MWJjMTllMDc1MTI5NjU3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YkZyYW1lUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRnJhbWVQcm94
eS5oCkBAIC0xMjEsNyArMTIxLDcgQEAgcHVibGljOgogICAgIFdlYkZvcm1TdWJtaXNzaW9uTGlz
dGVuZXJQcm94eSYgc2V0VXBGb3JtU3VibWlzc2lvbkxpc3RlbmVyUHJveHkodWludDY0X3QgbGlz
dGVuZXJJRCk7CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCi0gICAgdm9pZCBjb250
ZW50RmlsdGVyRGlkQmxvY2tMb2FkKFdlYkNvcmU6OkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxl
ciBjb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIpIHsgbV9jb250ZW50RmlsdGVyVW5ibG9ja0hh
bmRsZXIgPSBXVEY6Om1vdmUoY29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyKTsgfQorICAgIHZv
aWQgY29udGVudEZpbHRlckRpZEJsb2NrTG9hZChXZWJDb3JlOjpDb250ZW50RmlsdGVyVW5ibG9j
a0hhbmRsZXIgY29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyKSB7IG1fY29udGVudEZpbHRlclVu
YmxvY2tIYW5kbGVyID0gV1RGTW92ZShjb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIpOyB9CiAg
ICAgYm9vbCBkaWRIYW5kbGVDb250ZW50RmlsdGVyVW5ibG9ja05hdmlnYXRpb24oY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYkdyYW1tYXJEZXRhaWwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYkdyYW1tYXJEZXRhaWwuY3BwCmluZGV4IGE2NGIyYjZkMDE1ZTM1MzZhOWQ2MjAz
ODY3ODU3ZmRkYmU0OTY2YzAuLjBmZTFiZmIzMWNiMDgwNDAzZmIzYzJmMzgyZDM5MzNiMTIzYjhi
ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJHcmFtbWFyRGV0YWls
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViR3JhbW1hckRldGFpbC5jcHAK
QEAgLTYxLDcgKzYxLDcgQEAgUmVmPEFQSTo6QXJyYXk+IFdlYkdyYW1tYXJEZXRhaWw6Omd1ZXNz
ZXMoKSBjb25zdAogICAgIFZlY3RvcjxSZWZQdHI8QVBJOjpPYmplY3Q+ID4gd2tHdWVzc2VzKG51
bUd1ZXNzZXMpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1HdWVzc2VzOyArK2kp
CiAgICAgICAgIHdrR3Vlc3Nlc1tpXSA9IEFQSTo6U3RyaW5nOjpjcmVhdGUobV9ncmFtbWFyRGV0
YWlsLmd1ZXNzZXNbaV0pOwotICAgIHJldHVybiBBUEk6OkFycmF5OjpjcmVhdGUoV1RGOjptb3Zl
KHdrR3Vlc3NlcykpOworICAgIHJldHVybiBBUEk6OkFycmF5OjpjcmVhdGUoV1RGTW92ZSh3a0d1
ZXNzZXMpKTsKIH0KIAogV2ViR3JhbW1hckRldGFpbDo6V2ViR3JhbW1hckRldGFpbChjb25zdCBX
ZWJDb3JlOjpHcmFtbWFyRGV0YWlsJiBncmFtbWFyRGV0YWlsKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5jcHAKaW5kZXggZjY1YzAyNTkxMzMwMGI0ODVi
MDA1ZjIzMTJmN2Q4ZjI2MzFlN2I2ZC4uYzY0MzNlYjg2YjYyODRhNzc5OThjNDQ3OTc4NTM3NWMy
MzE2OWYyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3Rv
clByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJv
eHkuY3BwCkBAIC01MjcsNyArNTI3LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6Y3JlYXRl
SW5zcGVjdG9yUGFnZShJUEM6OkF0dGFjaG1lbnQgY29ubmVjdGlvbklkZW50aWZpZXIKICAgICBp
ZiAoIW1faW5zcGVjdG9yUGFnZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9jb25uZWN0aW9u
SWRlbnRpZmllciA9IFdURjo6bW92ZShjb25uZWN0aW9uSWRlbnRpZmllcik7CisgICAgbV9jb25u
ZWN0aW9uSWRlbnRpZmllciA9IFdURk1vdmUoY29ubmVjdGlvbklkZW50aWZpZXIpOwogCiAgICAg
bV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6
OkVzdGFibGlzaENvbm5lY3Rpb24obV9jb25uZWN0aW9uSWRlbnRpZmllciwgbV9pbnNwZWN0ZWRQ
YWdlLT5wYWdlSUQoKSwgbV91bmRlclRlc3QsIGluc3BlY3Rpb25MZXZlbCgpKSwgbV9pbnNwZWN0
b3JQYWdlLT5wYWdlSUQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJNZWRpYUNhY2hlTWFuYWdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJNZWRpYUNhY2hlTWFuYWdlclByb3h5LmNwcAppbmRleCA5NWJiOTY2Mzk5YjAyZGI5MTZi
NTQ4YmU3NDYwMTJlZDZlNGYyZjJlLi5lN2RiY2Q3MTVhNGFkZWYyNDE2ZWY0NjQ2NDEzY2QzNjkx
MDg0OGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViTWVkaWFDYWNo
ZU1hbmFnZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYk1lZGlh
Q2FjaGVNYW5hZ2VyUHJveHkuY3BwCkBAIC04Miw3ICs4Miw3IEBAIHZvaWQgV2ViTWVkaWFDYWNo
ZU1hbmFnZXJQcm94eTo6ZGVyZWZXZWJDb250ZXh0U3VwcGxlbWVudCgpCiAKIHZvaWQgV2ViTWVk
aWFDYWNoZU1hbmFnZXJQcm94eTo6Z2V0SG9zdG5hbWVzV2l0aE1lZGlhQ2FjaGUoc3RkOjpmdW5j
dGlvbjx2b2lkIChBUEk6OkFycmF5KiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+IGNhbGxiYWNrRnVu
Y3Rpb24pCiB7Ci0gICAgUmVmUHRyPEFycmF5Q2FsbGJhY2s+IGNhbGxiYWNrID0gQXJyYXlDYWxs
YmFjazo6Y3JlYXRlKFdURjo6bW92ZShjYWxsYmFja0Z1bmN0aW9uKSk7CisgICAgUmVmUHRyPEFy
cmF5Q2FsbGJhY2s+IGNhbGxiYWNrID0gQXJyYXlDYWxsYmFjazo6Y3JlYXRlKFdURk1vdmUoY2Fs
bGJhY2tGdW5jdGlvbikpOwogICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2Fs
bGJhY2tJRCgpOwogICAgIG1fYXJyYXlDYWxsYmFja3Muc2V0KGNhbGxiYWNrSUQsIGNhbGxiYWNr
LnJlbGVhc2UoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAK
aW5kZXggODNkZDNmMTBjZDY1Yjg0ZTAwMTJhOWI0ZmVhYTY3YjIzMDNkODlmMi4uYTdjMWJhYmEy
ZjNlZTk3MGQwYmE0YTNmNzVjN2ViM2E2MDIxOWNmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTI0NCw3ICsyNDQsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8
RXhjZWVkZWREYXRhYmFzZVF1b3RhUmVjb3Jkczo6UmVjb3JkPiBFeGNlZWRlZERhdGFiYXNlUXVv
dGFSZWNvcgogCiB2b2lkIEV4Y2VlZGVkRGF0YWJhc2VRdW90YVJlY29yZHM6OmFkZChzdGQ6OnVu
aXF1ZV9wdHI8RXhjZWVkZWREYXRhYmFzZVF1b3RhUmVjb3Jkczo6UmVjb3JkPiByZWNvcmQpCiB7
Ci0gICAgbV9yZWNvcmRzLmFwcGVuZChXVEY6Om1vdmUocmVjb3JkKSk7CisgICAgbV9yZWNvcmRz
LmFwcGVuZChXVEZNb3ZlKHJlY29yZCkpOwogfQogCiBFeGNlZWRlZERhdGFiYXNlUXVvdGFSZWNv
cmRzOjpSZWNvcmQqIEV4Y2VlZGVkRGF0YWJhc2VRdW90YVJlY29yZHM6Om5leHQoKQpAQCAtMjk4
LDEyICsyOTgsMTIgQEAgcHJpdmF0ZToKIAogUmVmPFdlYlBhZ2VQcm94eT4gV2ViUGFnZVByb3h5
OjpjcmVhdGUoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNz
LCB1aW50NjRfdCBwYWdlSUQsIFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiYmIGNvbmZpZ3Vy
YXRpb24pCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViUGFnZVByb3h5KHBhZ2VDbGll
bnQsIHByb2Nlc3MsIHBhZ2VJRCwgV1RGOjptb3ZlKGNvbmZpZ3VyYXRpb24pKSk7CisgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgV2ViUGFnZVByb3h5KHBhZ2VDbGllbnQsIHByb2Nlc3MsIHBhZ2VJ
RCwgV1RGTW92ZShjb25maWd1cmF0aW9uKSkpOwogfQogCiBXZWJQYWdlUHJveHk6OldlYlBhZ2VQ
cm94eShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIHVp
bnQ2NF90IHBhZ2VJRCwgUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+JiYgY29uZmlndXJhdGlv
bikKICAgICA6IG1fcGFnZUNsaWVudChwYWdlQ2xpZW50KQotICAgICwgbV9jb25maWd1cmF0aW9u
KFdURjo6bW92ZShjb25maWd1cmF0aW9uKSkKKyAgICAsIG1fY29uZmlndXJhdGlvbihXVEZNb3Zl
KGNvbmZpZ3VyYXRpb24pKQogICAgICwgbV9sb2FkZXJDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxB
UEk6OkxvYWRlckNsaWVudD4oKSkKICAgICAsIG1fcG9saWN5Q2xpZW50KHN0ZDo6bWFrZV91bmlx
dWU8QVBJOjpQb2xpY3lDbGllbnQ+KCkpCiAgICAgLCBtX2Zvcm1DbGllbnQoc3RkOjptYWtlX3Vu
aXF1ZTxBUEk6OkZvcm1DbGllbnQ+KCkpCkBAIC01NTIsMTIgKzU1MiwxMiBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6c2V0UHJlZmVyZW5jZXMoV2ViUHJlZmVyZW5jZXMmIHByZWZlcmVuY2VzKQogICAg
IAogdm9pZCBXZWJQYWdlUHJveHk6OnNldEhpc3RvcnlDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQ
STo6SGlzdG9yeUNsaWVudD4gaGlzdG9yeUNsaWVudCkKIHsKLSAgICBtX2hpc3RvcnlDbGllbnQg
PSBXVEY6Om1vdmUoaGlzdG9yeUNsaWVudCk7CisgICAgbV9oaXN0b3J5Q2xpZW50ID0gV1RGTW92
ZShoaXN0b3J5Q2xpZW50KTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldE5hdmlnYXRpb25D
bGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6TmF2aWdhdGlvbkNsaWVudD4gbmF2aWdhdGlvbkNs
aWVudCkKIHsKLSAgICBtX25hdmlnYXRpb25DbGllbnQgPSBXVEY6Om1vdmUobmF2aWdhdGlvbkNs
aWVudCk7CisgICAgbV9uYXZpZ2F0aW9uQ2xpZW50ID0gV1RGTW92ZShuYXZpZ2F0aW9uQ2xpZW50
KTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldExvYWRlckNsaWVudChzdGQ6OnVuaXF1ZV9w
dHI8QVBJOjpMb2FkZXJDbGllbnQ+IGxvYWRlckNsaWVudCkKQEAgLTU2Nyw3ICs1NjcsNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6c2V0TG9hZGVyQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6Okxv
YWRlckNsaWVudD4gbG9hZGVyQ2xpZQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9s
b2FkZXJDbGllbnQgPSBXVEY6Om1vdmUobG9hZGVyQ2xpZW50KTsKKyAgICBtX2xvYWRlckNsaWVu
dCA9IFdURk1vdmUobG9hZGVyQ2xpZW50KTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldFBv
bGljeUNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpQb2xpY3lDbGllbnQ+IHBvbGljeUNsaWVu
dCkKQEAgLTU3Nyw3ICs1NzcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0UG9saWN5Q2xpZW50
KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OlBvbGljeUNsaWVudD4gcG9saWN5Q2xpZQogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgbV9wb2xpY3lDbGllbnQgPSBXVEY6Om1vdmUocG9saWN5Q2xp
ZW50KTsKKyAgICBtX3BvbGljeUNsaWVudCA9IFdURk1vdmUocG9saWN5Q2xpZW50KTsKIH0KIAog
dm9pZCBXZWJQYWdlUHJveHk6OnNldEZvcm1DbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6Rm9y
bUNsaWVudD4gZm9ybUNsaWVudCkKQEAgLTU4Nyw3ICs1ODcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6c2V0Rm9ybUNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpGb3JtQ2xpZW50PiBmb3JtQ2xp
ZW50KQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9mb3JtQ2xpZW50ID0gV1RGOjpt
b3ZlKGZvcm1DbGllbnQpOworICAgIG1fZm9ybUNsaWVudCA9IFdURk1vdmUoZm9ybUNsaWVudCk7
CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRVSUNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJ
OjpVSUNsaWVudD4gdWlDbGllbnQpCkBAIC01OTcsNyArNTk3LDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OnNldFVJQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OlVJQ2xpZW50PiB1aUNsaWVudCkK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fdWlDbGllbnQgPSBXVEY6Om1vdmUodWlD
bGllbnQpOworICAgIG1fdWlDbGllbnQgPSBXVEZNb3ZlKHVpQ2xpZW50KTsKIAogICAgIGlmICgh
aXNWYWxpZCgpKQogICAgICAgICByZXR1cm47CkBAIC02MTMsNyArNjEzLDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OnNldEZpbmRDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6RmluZENsaWVudD4g
ZmluZENsaWVudCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICBtX2ZpbmRDbGll
bnQgPSBXVEY6Om1vdmUoZmluZENsaWVudCk7CisgICAgbV9maW5kQ2xpZW50ID0gV1RGTW92ZShm
aW5kQ2xpZW50KTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldEZpbmRNYXRjaGVzQ2xpZW50
KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkZpbmRNYXRjaGVzQ2xpZW50PiBmaW5kTWF0Y2hlc0NsaWVu
dCkKQEAgLTYyMyw3ICs2MjMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0RmluZE1hdGNoZXND
bGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6RmluZE1hdGNoZXNDbGllbnQ+CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBtX2ZpbmRNYXRjaGVzQ2xpZW50ID0gV1RGOjptb3ZlKGZpbmRN
YXRjaGVzQ2xpZW50KTsKKyAgICBtX2ZpbmRNYXRjaGVzQ2xpZW50ID0gV1RGTW92ZShmaW5kTWF0
Y2hlc0NsaWVudCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXREaWFnbm9zdGljTG9nZ2lu
Z0NsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpEaWFnbm9zdGljTG9nZ2luZ0NsaWVudD4gZGlh
Z25vc3RpY0xvZ2dpbmdDbGllbnQpCkBAIC02MzMsNyArNjMzLDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OnNldERpYWdub3N0aWNMb2dnaW5nQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkRpYWdu
b3N0aWNMb2cKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fZGlhZ25vc3RpY0xvZ2dp
bmdDbGllbnQgPSBXVEY6Om1vdmUoZGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQpOworICAgIG1fZGlh
Z25vc3RpY0xvZ2dpbmdDbGllbnQgPSBXVEZNb3ZlKGRpYWdub3N0aWNMb2dnaW5nQ2xpZW50KTsK
IH0KIAogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQpAQCAtNjQ0LDcgKzY0NCw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpzZXRDb250ZXh0TWVudUNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpD
b250ZXh0TWVudUNsaWVudD4KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fY29udGV4
dE1lbnVDbGllbnQgPSBXVEY6Om1vdmUoY29udGV4dE1lbnVDbGllbnQpOworICAgIG1fY29udGV4
dE1lbnVDbGllbnQgPSBXVEZNb3ZlKGNvbnRleHRNZW51Q2xpZW50KTsKIH0KICNlbmRpZgogCkBA
IC03MzAsNyArNzMwLDcgQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojpy
ZWF0dGFjaFRvV2ViUHJvY2Vzc0ZvclJlbG9hZCgpCiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpHb1RvQmFja0ZvcndhcmRJdGVtKG5hdmlnYXRpb24tPm5hdmlnYXRpb25J
RCgpLCBtX2JhY2tGb3J3YXJkTGlzdC0+Y3VycmVudEl0ZW0oKS0+aXRlbUlEKCkpLCBtX3BhZ2VJ
RCk7CiAgICAgbV9wcm9jZXNzLT5yZXNwb25zaXZlbmVzc1RpbWVyKCkuc3RhcnQoKTsKIAotICAg
IHJldHVybiBXVEY6Om1vdmUobmF2aWdhdGlvbik7CisgICAgcmV0dXJuIFdURk1vdmUobmF2aWdh
dGlvbik7CiB9CiAKIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6cmVhdHRh
Y2hUb1dlYlByb2Nlc3NXaXRoSXRlbShXZWJCYWNrRm9yd2FyZExpc3RJdGVtKiBpdGVtKQpAQCAt
NzUyLDcgKzc1Miw3IEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6cmVh
dHRhY2hUb1dlYlByb2Nlc3NXaXRoSXRlbShXZWJCYWNrRm9yd2FyCiAgICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHb1RvQmFja0ZvcndhcmRJdGVtKG5hdmlnYXRpb24tPm5h
dmlnYXRpb25JRCgpLCBpdGVtLT5pdGVtSUQoKSksIG1fcGFnZUlEKTsKICAgICBtX3Byb2Nlc3Mt
PnJlc3BvbnNpdmVuZXNzVGltZXIoKS5zdGFydCgpOwogCi0gICAgcmV0dXJuIFdURjo6bW92ZShu
YXZpZ2F0aW9uKTsKKyAgICByZXR1cm4gV1RGTW92ZShuYXZpZ2F0aW9uKTsKIH0KIAogdm9pZCBX
ZWJQYWdlUHJveHk6OnNldFNlc3Npb25JRChTZXNzaW9uSUQgc2Vzc2lvbklEKQpAQCAtODk0LDcg
Kzg5NCw3IEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bG9hZFJlcXVl
c3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpMb2FkUmVxdWVzdChuYXZpZ2F0aW9uLT5uYXZpZ2F0aW9uSUQoKSwg
cmVxdWVzdCwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgKHVpbnQ2NF90KXNob3VsZE9wZW5FeHRl
cm5hbFVSTHNQb2xpY3ksIFVzZXJEYXRhKHByb2Nlc3MoKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5k
bGVzKHVzZXJEYXRhKS5nZXQoKSkpLCBtX3BhZ2VJRCk7CiAgICAgbV9wcm9jZXNzLT5yZXNwb25z
aXZlbmVzc1RpbWVyKCkuc3RhcnQoKTsKIAotICAgIHJldHVybiBXVEY6Om1vdmUobmF2aWdhdGlv
bik7CisgICAgcmV0dXJuIFdURk1vdmUobmF2aWdhdGlvbik7CiB9CiAKIFJlZlB0cjxBUEk6Ok5h
dmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bG9hZEZpbGUoY29uc3QgU3RyaW5nJiBmaWxlVVJMU3Ry
aW5nLCBjb25zdCBTdHJpbmcmIHJlc291cmNlRGlyZWN0b3J5VVJMU3RyaW5nLCBBUEk6Ok9iamVj
dCogdXNlckRhdGEpCkBAIC05MzIsNyArOTMyLDcgQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4g
V2ViUGFnZVByb3h5Ojpsb2FkRmlsZShjb25zdCBTdHJpbmcmIGZpbGVVUkxTdHJpbmcsIGNvbnMK
ICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRSZXF1ZXN0KG5hdmln
YXRpb24tPm5hdmlnYXRpb25JRCgpLCBmaWxlVVJMLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCAo
dWludDY0X3QpU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkTm90QWxsb3csIFVz
ZXJEYXRhKHByb2Nlc3MoKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVzZXJEYXRhKS5nZXQo
KSkpLCBtX3BhZ2VJRCk7CiAgICAgbV9wcm9jZXNzLT5yZXNwb25zaXZlbmVzc1RpbWVyKCkuc3Rh
cnQoKTsKIAotICAgIHJldHVybiBXVEY6Om1vdmUobmF2aWdhdGlvbik7CisgICAgcmV0dXJuIFdU
Rk1vdmUobmF2aWdhdGlvbik7CiB9CiAKIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQ
cm94eTo6bG9hZERhdGEoQVBJOjpEYXRhKiBkYXRhLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBj
b25zdCBTdHJpbmcmIGVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VVUkwsIEFQSTo6T2JqZWN0
KiB1c2VyRGF0YSkKQEAgLTk1Myw3ICs5NTMsNyBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBX
ZWJQYWdlUHJveHk6OmxvYWREYXRhKEFQSTo6RGF0YSogZGF0YSwgY29uc3QgU3RyaW5nJiBNSQog
ICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TG9hZERhdGEobmF2aWdhdGlv
bi0+bmF2aWdhdGlvbklEKCksIGRhdGEtPmRhdGFSZWZlcmVuY2UoKSwgTUlNRVR5cGUsIGVuY29k
aW5nLCBiYXNlVVJMLCBVc2VyRGF0YShwcm9jZXNzKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxl
cyh1c2VyRGF0YSkuZ2V0KCkpKSwgbV9wYWdlSUQpOwogICAgIG1fcHJvY2Vzcy0+cmVzcG9uc2l2
ZW5lc3NUaW1lcigpLnN0YXJ0KCk7CiAKLSAgICByZXR1cm4gV1RGOjptb3ZlKG5hdmlnYXRpb24p
OworICAgIHJldHVybiBXVEZNb3ZlKG5hdmlnYXRpb24pOwogfQogCiAvLyBGSVhNRTogR2V0IHJp
ZCBvZiBsb2FkSFRNTFN0cmluZyBhbmQganVzdCB1c2UgbG9hZERhdGEgaW5zdGVhZC4KQEAgLTk3
NSw3ICs5NzUsNyBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxvYWRI
VE1MU3RyaW5nKGNvbnN0IFN0cmluZyYgaHRtbFN0cmluZywgYwogICAgIG1fcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6TG9hZEhUTUxTdHJpbmcobmF2aWdhdGlvbi0+bmF2aWdhdGlv
bklEKCksIGh0bWxTdHJpbmcsIGJhc2VVUkwsIFVzZXJEYXRhKHByb2Nlc3MoKS50cmFuc2Zvcm1P
YmplY3RzVG9IYW5kbGVzKHVzZXJEYXRhKS5nZXQoKSkpLCBtX3BhZ2VJRCk7CiAgICAgbV9wcm9j
ZXNzLT5yZXNwb25zaXZlbmVzc1RpbWVyKCkuc3RhcnQoKTsKIAotICAgIHJldHVybiBXVEY6Om1v
dmUobmF2aWdhdGlvbik7CisgICAgcmV0dXJuIFdURk1vdmUobmF2aWdhdGlvbik7CiB9CiAKIHZv
aWQgV2ViUGFnZVByb3h5Ojpsb2FkQWx0ZXJuYXRlSFRNTFN0cmluZyhjb25zdCBTdHJpbmcmIGh0
bWxTdHJpbmcsIGNvbnN0IFN0cmluZyYgYmFzZVVSTCwgY29uc3QgU3RyaW5nJiB1bnJlYWNoYWJs
ZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKQpAQCAtMTA3MCw3ICsxMDcwLDcgQEAgUmVmUHRy
PEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5OjpyZWxvYWQoYm9vbCByZWxvYWRGcm9tT3Jp
Z2luLCBib29sIGNvbnRlbnQKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OlJlbG9hZChuYXZpZ2F0aW9uLT5uYXZpZ2F0aW9uSUQoKSwgcmVsb2FkRnJvbU9yaWdpbiwgY29u
dGVudEJsb2NrZXJzRW5hYmxlZCwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSksIG1fcGFnZUlEKTsK
ICAgICBtX3Byb2Nlc3MtPnJlc3BvbnNpdmVuZXNzVGltZXIoKS5zdGFydCgpOwogCi0gICAgcmV0
dXJuIFdURjo6bW92ZShuYXZpZ2F0aW9uKTsKKyAgICByZXR1cm4gV1RGTW92ZShuYXZpZ2F0aW9u
KTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnJlY29yZE5hdmlnYXRpb25TbmFwc2hvdCgpCkBA
IC0xMTY4LDcgKzExNjgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ2hhbmdlQmFja0Zvcndh
cmRMaXN0KFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIGFkZGVkLCBWZWN0bwogewogICAgIFBhZ2VD
bGllbnRQcm90ZWN0b3IgcHJvdGVjdG9yKG1fcGFnZUNsaWVudCk7CiAKLSAgICBtX2xvYWRlckNs
aWVudC0+ZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0KCp0aGlzLCBhZGRlZCwgV1RGOjptb3ZlKHJl
bW92ZWQpKTsKKyAgICBtX2xvYWRlckNsaWVudC0+ZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0KCp0
aGlzLCBhZGRlZCwgV1RGTW92ZShyZW1vdmVkKSk7CiAKICAgICBhdXRvIHRyYW5zYWN0aW9uID0g
bV9wYWdlTG9hZFN0YXRlLnRyYW5zYWN0aW9uKCk7CiAKQEAgLTE1MjIsNyArMTUyMiw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpzZXRJbml0aWFsRm9jdXMoYm9vbCBmb3J3YXJkLCBib29sIGlzS2V5
Ym9hcmRFdmVudFZhbGlkLCBjb25zCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICB1aW50
NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURjo6bW92ZShjYWxsYmFja0Z1bmN0
aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsK
KyAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJh
Y2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9r
ZW4oKSk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRJbml0aWFs
Rm9jdXMoZm9yd2FyZCwgaXNLZXlib2FyZEV2ZW50VmFsaWQsIGtleWJvYXJkRXZlbnQsIGNhbGxi
YWNrSUQpLCBtX3BhZ2VJRCk7CiB9CiAKQEAgLTE1NDcsNyArMTU0Nyw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5Ojp2YWxpZGF0ZUNvbW1hbmQoY29uc3QgU3RyaW5nJiBjb21tYW5kTmFtZSwgc3RkOjpm
dW5jdGlvbjx2b2lkCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICB1aW50NjRfdCBjYWxs
YmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURjo6bW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9w
cm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICB1aW50
NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlv
biksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAg
ICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpWYWxpZGF0ZUNvbW1hbmQoY29t
bWFuZE5hbWUsIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CiB9CiAKQEAgLTE3NzcsNyArMTc3Nyw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IE5hdGl2ZVdlYldo
ZWVsRXZlbnQmIGV2ZW50KQogCiAgICAgYXV0byBjb2FsZXNjZWRXaGVlbEV2ZW50ID0gc3RkOjpt
YWtlX3VuaXF1ZTxWZWN0b3I8TmF0aXZlV2ViV2hlZWxFdmVudD4+KCk7CiAgICAgY29hbGVzY2Vk
V2hlZWxFdmVudC0+YXBwZW5kKGV2ZW50KTsKLSAgICBtX2N1cnJlbnRseVByb2Nlc3NlZFdoZWVs
RXZlbnRzLmFwcGVuZChXVEY6Om1vdmUoY29hbGVzY2VkV2hlZWxFdmVudCkpOworICAgIG1fY3Vy
cmVudGx5UHJvY2Vzc2VkV2hlZWxFdmVudHMuYXBwZW5kKFdURk1vdmUoY29hbGVzY2VkV2hlZWxF
dmVudCkpOwogICAgIHNlbmRXaGVlbEV2ZW50KGV2ZW50KTsKIH0KIApAQCAtMTc4NSw3ICsxNzg1
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnByb2Nlc3NOZXh0UXVldWVkV2hlZWxFdmVudCgpCiB7
CiAgICAgYXV0byBuZXh0Q29hbGVzY2VkRXZlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxO
YXRpdmVXZWJXaGVlbEV2ZW50Pj4oKTsKICAgICBXZWJXaGVlbEV2ZW50IG5leHRXaGVlbEV2ZW50
ID0gY29hbGVzY2VkV2hlZWxFdmVudChtX3doZWVsRXZlbnRRdWV1ZSwgKm5leHRDb2FsZXNjZWRF
dmVudC5nZXQoKSk7Ci0gICAgbV9jdXJyZW50bHlQcm9jZXNzZWRXaGVlbEV2ZW50cy5hcHBlbmQo
V1RGOjptb3ZlKG5leHRDb2FsZXNjZWRFdmVudCkpOworICAgIG1fY3VycmVudGx5UHJvY2Vzc2Vk
V2hlZWxFdmVudHMuYXBwZW5kKFdURk1vdmUobmV4dENvYWxlc2NlZEV2ZW50KSk7CiAgICAgc2Vu
ZFdoZWVsRXZlbnQobmV4dFdoZWVsRXZlbnQpOwogfQogCkBAIC0yMTYyLDcgKzIxNjIsNyBAQCBS
ZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OnJlc3RvcmVGcm9tU2Vzc2lvblN0
YXRlKFNlc3Npb25TdGF0ZSBzZXNzaQogICAgIGJvb2wgaGFzQmFja0ZvcndhcmRMaXN0ID0gISFz
ZXNzaW9uU3RhdGUuYmFja0ZvcndhcmRMaXN0U3RhdGUuY3VycmVudEluZGV4OwogCiAgICAgaWYg
KGhhc0JhY2tGb3J3YXJkTGlzdCkgewotICAgICAgICBtX2JhY2tGb3J3YXJkTGlzdC0+cmVzdG9y
ZUZyb21TdGF0ZShXVEY6Om1vdmUoc2Vzc2lvblN0YXRlLmJhY2tGb3J3YXJkTGlzdFN0YXRlKSk7
CisgICAgICAgIG1fYmFja0ZvcndhcmRMaXN0LT5yZXN0b3JlRnJvbVN0YXRlKFdURk1vdmUoc2Vz
c2lvblN0YXRlLmJhY2tGb3J3YXJkTGlzdFN0YXRlKSk7CiAKICAgICAgICAgZm9yIChjb25zdCBh
dXRvJiBlbnRyeSA6IG1fYmFja0ZvcndhcmRMaXN0LT5lbnRyaWVzKCkpCiAgICAgICAgICAgICBw
cm9jZXNzKCkucmVnaXN0ZXJOZXdXZWJCYWNrRm9yd2FyZExpc3RJdGVtKGVudHJ5LmdldCgpKTsK
QEAgLTI1ODcsNyArMjU4Nyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5N
YWluRnJhbWUoY29uc3QgU3RyaW5nJiBzY3JpcHQsIHN0ZDo6ZnVuY3Rpb248CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0
KFdURjo6bW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNr
Z3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxs
YmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVy
KCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpSdW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoc2NyaXB0LCBjYWxsYmFja0lE
KSwgbV9wYWdlSUQpOwogfQogCkBAIC0yNTk4LDcgKzI1OTgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6Z2V0UmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb24oc3RkOjpmdW5jdGlvbjx2b2lk
IChjb25zdAogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIHVpbnQ2NF90IGNhbGxi
YWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGOjptb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3By
b2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIHVpbnQ2
NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9u
KSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAg
ICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFJlbmRlclRyZWVFeHRlcm5h
bFJlcHJlc2VudGF0aW9uKGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CiB9CiAKQEAgLTI2MDksNyAr
MjYwOSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRTb3VyY2VGb3JGcmFtZShXZWJGcmFtZVBy
b3h5KiBmcmFtZSwgc3RkOjpmdW5jdGlvbjx2b2lkIChjCiAgICAgICAgIHJldHVybjsKICAgICB9
CiAgICAgCi0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEY6Om1v
dmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFj
dGl2aXR5VG9rZW4oKSk7CisgICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1
dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tn
cm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1fbG9hZERlcGVuZGVudFN0cmluZ0NhbGxiYWNr
SURzLmFkZChjYWxsYmFja0lEKTsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OkdldFNvdXJjZUZvckZyYW1lKGZyYW1lLT5mcmFtZUlEKCksIGNhbGxiYWNrSUQpLCBtX3Bh
Z2VJRCk7CiB9CkBAIC0yNjIxLDcgKzI2MjEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0Q29u
dGVudHNBc1N0cmluZyhzdGQ6OmZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIENhbGxiYQog
ICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBt
X2NhbGxiYWNrcy5wdXQoV1RGOjptb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRo
cm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIHVpbnQ2NF90IGNhbGxi
YWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9j
ZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAgICBtX2xvYWRE
ZXBlbmRlbnRTdHJpbmdDYWxsYmFja0lEcy5hZGQoY2FsbGJhY2tJRCk7CiAgICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRDb250ZW50c0FzU3RyaW5nKGNhbGxiYWNrSUQp
LCBtX3BhZ2VJRCk7CiB9CkBAIC0yNjMzLDcgKzI2MzMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
Z2V0Qnl0ZWNvZGVQcm9maWxlKHN0ZDo6ZnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgQ2Fs
bGJhYwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIHVpbnQ2NF90IGNhbGxiYWNr
SUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGOjptb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nl
c3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIHVpbnQ2NF90
IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwg
bV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAgICBt
X2xvYWREZXBlbmRlbnRTdHJpbmdDYWxsYmFja0lEcy5hZGQoY2FsbGJhY2tJRCk7CiAgICAgbV9w
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRCeXRlY29kZVByb2ZpbGUoY2FsbGJh
Y2tJRCksIG1fcGFnZUlEKTsKIH0KQEAgLTI2NDYsNyArMjY0Niw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpnZXRDb250ZW50c0FzTUhUTUxEYXRhKHN0ZDo6ZnVuY3Rpb248dm9pZCAoQVBJOjpEYXRh
KiwgQ2FsbGJhCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICB1aW50NjRfdCBjYWxsYmFj
a0lEID0gbV9jYWxsYmFja3MucHV0KFdURjo6bW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9j
ZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICB1aW50NjRf
dCBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiks
IG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRDb250ZW50c0FzTUhUTUxEYXRh
KGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CiB9CiAjZW5kaWYKQEAgLTI2NTgsNyArMjY1OCw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpnZXRTZWxlY3Rpb25PckNvbnRlbnRzQXNTdHJpbmcoc3RkOjpm
dW5jdGlvbjx2b2lkIChjb25zdCBTdHJpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0g
ICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEY6Om1vdmUoY2FsbGJh
Y2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9r
ZW4oKSk7CisgICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3Zl
KGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rp
dml0eVRva2VuKCkpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0
U2VsZWN0aW9uT3JDb250ZW50c0FzU3RyaW5nKGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CiB9CiAK
QEAgLTI2NjksNyArMjY2OSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRTZWxlY3Rpb25Bc1dl
YkFyY2hpdmVEYXRhKHN0ZDo6ZnVuY3Rpb248dm9pZCAoQVBJOjpEYXRhKiwKICAgICAgICAgcmV0
dXJuOwogICAgIH0KICAgICAKLSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFja3Mu
cHV0KFdURjo6bW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5i
YWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9j
YWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0
bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpHZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKGNhbGxiYWNrSUQp
LCBtX3BhZ2VJRCk7CiB9CiAKQEAgLTI2ODAsNyArMjY4MCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpnZXRNYWluUmVzb3VyY2VEYXRhT2ZGcmFtZShXZWJGcmFtZVByb3h5KiBmcmFtZSwgc3RkOjpm
dW5jdGlvCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgdWludDY0X3QgY2FsbGJh
Y2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEY6Om1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJv
Y2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgdWludDY0
X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24p
LCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAg
IG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0TWFpblJlc291cmNlRGF0YU9m
RnJhbWUoZnJhbWUtPmZyYW1lSUQoKSwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKIH0KIApAQCAt
MjY5MSw3ICsyNjkxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldFJlc291cmNlRGF0YUZyb21G
cmFtZShXZWJGcmFtZVByb3h5KiBmcmFtZSwgQVBJOjpVUkwqIHJlc28KICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICAKLSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0
KFdURjo6bW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNr
Z3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxs
YmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVy
KCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpHZXRSZXNvdXJjZURhdGFGcm9tRnJhbWUoZnJhbWUtPmZyYW1lSUQoKSwg
cmVzb3VyY2VVUkwtPnN0cmluZygpLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQogCkBAIC0y
NzAyLDcgKzI3MDIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0V2ViQXJjaGl2ZU9mRnJhbWUo
V2ViRnJhbWVQcm94eSogZnJhbWUsIHN0ZDo6ZnVuY3Rpb248dm9pZAogICAgICAgICByZXR1cm47
CiAgICAgfQogICAgIAotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQo
V1RGOjptb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tn
cm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxi
YWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIo
KS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OkdldFdlYkFyY2hpdmVPZkZyYW1lKGZyYW1lLT5mcmFtZUlEKCksIGNhbGxi
YWNrSUQpLCBtX3BhZ2VJRCk7CiB9CiAKQEAgLTMyNzAsNyArMzI3MCw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKHVpbnQ2NF90IGZyYW1lSUQs
IGNvbnN0IFNlY3VyCiAgICAgaWYgKCFuYXZpZ2F0aW9uSUQgJiYgZnJhbWUtPmlzTWFpbkZyYW1l
KCkpIHsKICAgICAgICAgYXV0byBuYXZpZ2F0aW9uID0gbV9uYXZpZ2F0aW9uU3RhdGUtPmNyZWF0
ZUxvYWRSZXF1ZXN0TmF2aWdhdGlvbihyZXF1ZXN0KTsKICAgICAgICAgbmV3TmF2aWdhdGlvbklE
ID0gbmF2aWdhdGlvbi0+bmF2aWdhdGlvbklEKCk7Ci0gICAgICAgIGxpc3RlbmVyLT5zZXROYXZp
Z2F0aW9uKFdURjo6bW92ZShuYXZpZ2F0aW9uKSk7CisgICAgICAgIGxpc3RlbmVyLT5zZXROYXZp
Z2F0aW9uKFdURk1vdmUobmF2aWdhdGlvbikpOwogICAgIH0KIAogI2lmIEVOQUJMRShDT05URU5U
X0ZJTFRFUklORykKQEAgLTMzMDIsOSArMzMwMiw5IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNp
ZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFNlY3Vy
CiAKICAgICAgICAgYXV0byBuYXZpZ2F0aW9uQWN0aW9uID0gQVBJOjpOYXZpZ2F0aW9uQWN0aW9u
OjpjcmVhdGUobmF2aWdhdGlvbkFjdGlvbkRhdGEsIHNvdXJjZUZyYW1lSW5mby5nZXQoKSwgZGVz
dGluYXRpb25GcmFtZUluZm8uZ2V0KCksIHJlcXVlc3QsIG9yaWdpbmFsUmVxdWVzdC51cmwoKSwg
c2hvdWxkT3BlbkFwcExpbmtzKTsKIAotICAgICAgICBtX25hdmlnYXRpb25DbGllbnQtPmRlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oKnRoaXMsIG5hdmlnYXRpb25BY3Rpb24uZ2V0KCks
IFdURjo6bW92ZShsaXN0ZW5lciksIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0
cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOworICAgICAgICBtX25hdmlnYXRpb25DbGllbnQt
PmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oKnRoaXMsIG5hdmlnYXRpb25BY3Rpb24u
Z2V0KCksIFdURk1vdmUobGlzdGVuZXIpLCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09i
amVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKICAgICB9IGVsc2UKLSAgICAgICAgbV9w
b2xpY3lDbGllbnQtPmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oKnRoaXMsIGZyYW1l
LCBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgb3JpZ2luYXRpbmdGcmFtZSwgb3JpZ2luYWxSZXF1ZXN0
LCByZXF1ZXN0LCBXVEY6Om1vdmUobGlzdGVuZXIpLCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhhbmRs
ZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKKyAgICAgICAgbV9wb2xpY3lD
bGllbnQtPmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oKnRoaXMsIGZyYW1lLCBuYXZp
Z2F0aW9uQWN0aW9uRGF0YSwgb3JpZ2luYXRpbmdGcmFtZSwgb3JpZ2luYWxSZXF1ZXN0LCByZXF1
ZXN0LCBXVEZNb3ZlKGxpc3RlbmVyKSwgbV9wcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmpl
Y3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CiAKICAgICBtX3Nob3VsZFN1cHByZXNzQXBw
TGlua3NJbk5leHROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24gPSBmYWxzZTsKICAgICBtX2luRGVj
aWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbiA9IGZhbHNlOwpAQCAtMzMzNSwxMCArMzMzNSwx
MCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKHVp
bnQ2NF90IGZyYW1lSUQsIGNvbnN0IFNlY3VyaQogICAgICAgICBib29sIHNob3VsZE9wZW5BcHBM
aW5rcyA9ICFob3N0c0FyZUVxdWFsKFVSTChQYXJzZWRVUkxTdHJpbmcsIG1fbWFpbkZyYW1lLT51
cmwoKSksIHJlcXVlc3QudXJsKCkpOwogICAgICAgICBhdXRvIG5hdmlnYXRpb25BY3Rpb24gPSBB
UEk6Ok5hdmlnYXRpb25BY3Rpb246OmNyZWF0ZShuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgc291cmNl
RnJhbWVJbmZvLmdldCgpLCBudWxscHRyLCByZXF1ZXN0LCByZXF1ZXN0LnVybCgpLCBzaG91bGRP
cGVuQXBwTGlua3MpOwogCi0gICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+ZGVjaWRlUG9saWN5
Rm9yTmF2aWdhdGlvbkFjdGlvbigqdGhpcywgbmF2aWdhdGlvbkFjdGlvbi5nZXQoKSwgV1RGOjpt
b3ZlKGxpc3RlbmVyKSwgbV9wcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJE
YXRhLm9iamVjdCgpKS5nZXQoKSk7CisgICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+ZGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbigqdGhpcywgbmF2aWdhdGlvbkFjdGlvbi5nZXQoKSwg
V1RGTW92ZShsaXN0ZW5lciksIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1
c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOwogCiAgICAgfSBlbHNlCi0gICAgICAgIG1fcG9saWN5
Q2xpZW50LT5kZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oKnRoaXMsICpmcmFtZSwgbmF2
aWdhdGlvbkFjdGlvbkRhdGEsIHJlcXVlc3QsIGZyYW1lTmFtZSwgV1RGOjptb3ZlKGxpc3RlbmVy
KSwgbV9wcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgp
KS5nZXQoKSk7CisgICAgICAgIG1fcG9saWN5Q2xpZW50LT5kZWNpZGVQb2xpY3lGb3JOZXdXaW5k
b3dBY3Rpb24oKnRoaXMsICpmcmFtZSwgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIHJlcXVlc3QsIGZy
YW1lTmFtZSwgV1RGTW92ZShsaXN0ZW5lciksIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1Rv
T2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94
eTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UodWludDY0X3QgZnJhbWVJRCwgY29uc3QgU2VjdXJp
dHlPcmlnaW5EYXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBib29sIGNhblNob3dN
SU1FVHlwZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQpA
QCAtMzM1NCw5ICszMzU0LDkgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvclJl
c3BvbnNlKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFNlY3VyaXR5T3JpZ2kKIAogICAgIGlmICht
X25hdmlnYXRpb25DbGllbnQpIHsKICAgICAgICAgYXV0byBuYXZpZ2F0aW9uUmVzcG9uc2UgPSBB
UEk6Ok5hdmlnYXRpb25SZXNwb25zZTo6Y3JlYXRlKEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoKmZy
YW1lLCBmcmFtZVNlY3VyaXR5T3JpZ2luLnNlY3VyaXR5T3JpZ2luKCkpLmdldCgpLCByZXF1ZXN0
LCByZXNwb25zZSwgY2FuU2hvd01JTUVUeXBlKTsKLSAgICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50
LT5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2UoKnRoaXMsIG5hdmlnYXRpb25SZXNw
b25zZS5nZXQoKSwgV1RGOjptb3ZlKGxpc3RlbmVyKSwgbV9wcm9jZXNzLT50cmFuc2Zvcm1IYW5k
bGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CisgICAgICAgIG1fbmF2aWdh
dGlvbkNsaWVudC0+ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlKCp0aGlzLCBuYXZp
Z2F0aW9uUmVzcG9uc2UuZ2V0KCksIFdURk1vdmUobGlzdGVuZXIpLCBtX3Byb2Nlc3MtPnRyYW5z
Zm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKICAgICB9IGVs
c2UKLSAgICAgICAgbV9wb2xpY3lDbGllbnQtPmRlY2lkZVBvbGljeUZvclJlc3BvbnNlKCp0aGlz
LCAqZnJhbWUsIHJlc3BvbnNlLCByZXF1ZXN0LCBjYW5TaG93TUlNRVR5cGUsIFdURjo6bW92ZShs
aXN0ZW5lciksIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5v
YmplY3QoKSkuZ2V0KCkpOworICAgICAgICBtX3BvbGljeUNsaWVudC0+ZGVjaWRlUG9saWN5Rm9y
UmVzcG9uc2UoKnRoaXMsICpmcmFtZSwgcmVzcG9uc2UsIHJlcXVlc3QsIGNhblNob3dNSU1FVHlw
ZSwgV1RGTW92ZShsaXN0ZW5lciksIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0
cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVj
aWRlUG9saWN5Rm9yUmVzcG9uc2VTeW5jKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFNlY3VyaXR5
T3JpZ2luRGF0YSYgZnJhbWVTZWN1cml0eU9yaWdpbiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgYm9vbCBjYW5TaG93TUlN
RVR5cGUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSwgYm9v
bCYgcmVjZWl2ZWRQb2xpY3lBY3Rpb24sIHVpbnQ2NF90JiBwb2xpY3lBY3Rpb24sIERvd25sb2Fk
SUQmIGRvd25sb2FkSUQpCkBAIC00MDg4LDcgKzQwODgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
ZGlkRmFpbFRvRmluZFN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZykKIAogYm9vbCBXZWJQYWdl
UHJveHk6OnNlbmRNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxJUEM6Ok1lc3NhZ2VFbmNvZGVyPiBl
bmNvZGVyLCB1bnNpZ25lZCBtZXNzYWdlU2VuZEZsYWdzKQogewotICAgIHJldHVybiBtX3Byb2Nl
c3MtPnNlbmRNZXNzYWdlKFdURjo6bW92ZShlbmNvZGVyKSwgbWVzc2FnZVNlbmRGbGFncyk7Cisg
ICAgcmV0dXJuIG1fcHJvY2Vzcy0+c2VuZE1lc3NhZ2UoV1RGTW92ZShlbmNvZGVyKSwgbWVzc2Fn
ZVNlbmRGbGFncyk7CiB9CiAKIElQQzo6Q29ubmVjdGlvbiogV2ViUGFnZVByb3h5OjptZXNzYWdl
U2VuZGVyQ29ubmVjdGlvbigpCkBAIC01MjA0LDcgKzUyMDQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6ZXhjZWVkZWREYXRhYmFzZVF1b3RhKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYg
b3JpZ2luSQogICAgIHN0ZDo6dW5pcXVlX3B0cjxFeGNlZWRlZERhdGFiYXNlUXVvdGFSZWNvcmRz
OjpSZWNvcmQ+IG5ld1JlY29yZCA9IHJlY29yZHMuY3JlYXRlUmVjb3JkKGZyYW1lSUQsCiAgICAg
ICAgIG9yaWdpbklkZW50aWZpZXIsIGRhdGFiYXNlTmFtZSwgZGlzcGxheU5hbWUsIGN1cnJlbnRR
dW90YSwgY3VycmVudE9yaWdpblVzYWdlLAogICAgICAgICBjdXJyZW50RGF0YWJhc2VVc2FnZSwg
ZXhwZWN0ZWRVc2FnZSwgcmVwbHkpOwotICAgIHJlY29yZHMuYWRkKFdURjo6bW92ZShuZXdSZWNv
cmQpKTsKKyAgICByZWNvcmRzLmFkZChXVEZNb3ZlKG5ld1JlY29yZCkpOwogCiAgICAgaWYgKHJl
Y29yZHMuYXJlQmVpbmdQcm9jZXNzZWQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNTc2Miw3ICs1
NzYyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldE1hcmtlZFJhbmdlQXN5bmMoc3RkOjpmdW5j
dGlvbjx2b2lkIChFZGl0aW5nUmFuZ2UsIENhbGxiYWMKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGOjptb3ZlKGNh
bGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0
eVRva2VuKCkpOworICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RG
TW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5k
QWN0aXZpdHlUb2tlbigpKTsKICAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
R2V0TWFya2VkUmFuZ2VBc3luYyhjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQogCkBAIC01Nzcz
LDcgKzU3NzMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U2VsZWN0ZWRSYW5nZUFzeW5jKHN0
ZDo6ZnVuY3Rpb248dm9pZCAoRWRpdGluZ1JhbmdlLCBDYWxsYgogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEY6Om1v
dmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFj
dGl2aXR5VG9rZW4oKSk7CisgICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1
dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tn
cm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpHZXRTZWxlY3RlZFJhbmdlQXN5bmMoY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKIH0KIApA
QCAtNTc4NCw3ICs1Nzg0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNoYXJhY3RlckluZGV4Rm9y
UG9pbnRBc3luYyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIHMKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQo
V1RGOjptb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tn
cm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxi
YWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIo
KS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6Q2hhcmFjdGVySW5kZXhGb3JQb2ludEFzeW5jKHBvaW50LCBjYWxsYmFja0lE
KSwgbV9wYWdlSUQpOwogfQogCkBAIC01Nzk1LDcgKzU3OTUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6Zmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2VBc3luYyhjb25zdCBFZGl0aW5nUmFuZ2UmIHJh
bmdlLCBzdAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgdWludDY0X3QgY2FsbGJhY2tJ
RCA9IG1fY2FsbGJhY2tzLnB1dChXVEY6Om1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vz
cy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgdWludDY0X3Qg
Y2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBt
X3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIHBy
b2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpGaXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5n
ZUFzeW5jKHJhbmdlLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQogCkBAIC01ODM5LDcgKzU4
MzksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dGFrZVNuYXBzaG90KEludFJlY3QgcmVjdCwgSW50
U2l6ZSBiaXRtYXBTaXplLCBTbmFwc2hvdE9wdGlvbgogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEY6Om1vdmUoY2Fs
bGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5
VG9rZW4oKSk7CisgICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZN
b3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRB
Y3Rpdml0eVRva2VuKCkpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
VGFrZVNuYXBzaG90KHJlY3QsIGJpdG1hcFNpemUsIG9wdGlvbnMsIGNhbGxiYWNrSUQpLCBtX3Bh
Z2VJRCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3Bw
CmluZGV4IGM5NjgwYTVhOWUxNTAzZDMxZjA2NTg4MTZlNDU1NmUyZTI5MmZkMjYuLjdhZWYzMjNm
NTQwMDc2NDYxODA2ZDc4N2M4YzE1Zjg2OTE3MGI4NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAtMjY2LDcgKzI2Niw3IEBAIHZvaWQgV2ViUHJv
Y2Vzc1Bvb2w6OnNldEhpc3RvcnlDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6TGVnYWN5Q29u
dGV4dEhpc3RvcnlDCiAgICAgaWYgKCFoaXN0b3J5Q2xpZW50KQogICAgICAgICBtX2hpc3RvcnlD
bGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6TGVnYWN5Q29udGV4dEhpc3RvcnlDbGllbnQ+
KCk7CiAgICAgZWxzZQotICAgICAgICBtX2hpc3RvcnlDbGllbnQgPSBXVEY6Om1vdmUoaGlzdG9y
eUNsaWVudCk7CisgICAgICAgIG1faGlzdG9yeUNsaWVudCA9IFdURk1vdmUoaGlzdG9yeUNsaWVu
dCk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldERvd25sb2FkQ2xpZW50KHN0ZDo6dW5p
cXVlX3B0cjxBUEk6OkRvd25sb2FkQ2xpZW50PiBkb3dubG9hZENsaWVudCkKQEAgLTI3NCw3ICsy
NzQsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZXREb3dubG9hZENsaWVudChzdGQ6OnVuaXF1
ZV9wdHI8QVBJOjpEb3dubG9hZENsaWVudD4gZG93bgogICAgIGlmICghZG93bmxvYWRDbGllbnQp
CiAgICAgICAgIG1fZG93bmxvYWRDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6RG93bmxv
YWRDbGllbnQ+KCk7CiAgICAgZWxzZQotICAgICAgICBtX2Rvd25sb2FkQ2xpZW50ID0gV1RGOjpt
b3ZlKGRvd25sb2FkQ2xpZW50KTsKKyAgICAgICAgbV9kb3dubG9hZENsaWVudCA9IFdURk1vdmUo
ZG93bmxvYWRDbGllbnQpOwogfQogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpzZXRNYXhpbXVtTnVt
YmVyT2ZQcm9jZXNzZXModW5zaWduZWQgbWF4aW11bU51bWJlck9mUHJvY2Vzc2VzKQpAQCAtNzU4
LDcgKzc1OCw3IEBAIFJlZjxXZWJQYWdlUHJveHk+IFdlYlByb2Nlc3NQb29sOjpjcmVhdGVXZWJQ
YWdlKFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFJlZjxBUEk6CiAgICAgfSBlbHNlCiAgICAgICAg
IHByb2Nlc3MgPSAmY3JlYXRlTmV3V2ViUHJvY2Vzc1Jlc3BlY3RpbmdQcm9jZXNzQ291bnRMaW1p
dCgpOwogCi0gICAgcmV0dXJuIHByb2Nlc3MtPmNyZWF0ZVdlYlBhZ2UocGFnZUNsaWVudCwgV1RG
Ojptb3ZlKHBhZ2VDb25maWd1cmF0aW9uKSk7CisgICAgcmV0dXJuIHByb2Nlc3MtPmNyZWF0ZVdl
YlBhZ2UocGFnZUNsaWVudCwgV1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbikpOwogfQogCiBEb3du
bG9hZFByb3h5KiBXZWJQcm9jZXNzUG9vbDo6ZG93bmxvYWQoV2ViUGFnZVByb3h5KiBpbml0aWF0
aW5nUGFnZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQpAQCAtMTA5MCw3ICsxMDkw
LDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6Z2V0U3RhdGlzdGljcyh1aW50MzJfdCBzdGF0aXN0
aWNzTWFzaywgc3RkOjpmdW5jdGlvbjx2b2lkICgKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIFJlZlB0cjxTdGF0aXN0aWNzUmVxdWVzdD4gcmVxdWVzdCA9IFN0YXRpc3RpY3NSZXF1ZXN0
OjpjcmVhdGUoRGljdGlvbmFyeUNhbGxiYWNrOjpjcmVhdGUoV1RGOjptb3ZlKGNhbGxiYWNrRnVu
Y3Rpb24pKSk7CisgICAgUmVmUHRyPFN0YXRpc3RpY3NSZXF1ZXN0PiByZXF1ZXN0ID0gU3RhdGlz
dGljc1JlcXVlc3Q6OmNyZWF0ZShEaWN0aW9uYXJ5Q2FsbGJhY2s6OmNyZWF0ZShXVEZNb3ZlKGNh
bGxiYWNrRnVuY3Rpb24pKSk7CiAKICAgICBpZiAoc3RhdGlzdGljc01hc2sgJiBTdGF0aXN0aWNz
UmVxdWVzdFR5cGVXZWJDb250ZW50KQogICAgICAgICByZXF1ZXN0V2ViQ29udGVudFN0YXRpc3Rp
Y3MocmVxdWVzdC5nZXQoKSk7CkBAIC0xMjIwLDE3ICsxMjIwLDE3IEBAIHZvaWQgV2ViUHJvY2Vz
c1Bvb2w6OnBsdWdpbkluZm9TdG9yZURpZExvYWRQbHVnaW5zKFBsdWdpbkluZm9TdG9yZSogc3Rv
cmUpCiAgICAgICAgIG1pbWVUeXBlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHBsdWdpbk1vZHVs
ZS5pbmZvLm1pbWVzLnNpemUoKSk7CiAgICAgICAgIGZvciAoY29uc3QgYXV0byYgbWltZUNsYXNz
SW5mbyA6IHBsdWdpbk1vZHVsZS5pbmZvLm1pbWVzKQogICAgICAgICAgICAgbWltZVR5cGVzLnVu
Y2hlY2tlZEFwcGVuZChBUEk6OlN0cmluZzo6Y3JlYXRlKG1pbWVDbGFzc0luZm8udHlwZSkpOwot
ICAgICAgICBtYXAuc2V0KEFTQ0lJTGl0ZXJhbCgibWltZXMiKSwgQVBJOjpBcnJheTo6Y3JlYXRl
KFdURjo6bW92ZShtaW1lVHlwZXMpKSk7CisgICAgICAgIG1hcC5zZXQoQVNDSUlMaXRlcmFsKCJt
aW1lcyIpLCBBUEk6OkFycmF5OjpjcmVhdGUoV1RGTW92ZShtaW1lVHlwZXMpKSk7CiAKICNpZiBQ
TEFURk9STShDT0NPQSkKICAgICAgICAgbWFwLnNldChBU0NJSUxpdGVyYWwoImJ1bmRsZUlkIiks
IEFQSTo6U3RyaW5nOjpjcmVhdGUocGx1Z2luTW9kdWxlLmJ1bmRsZUlkZW50aWZpZXIpKTsKICAg
ICAgICAgbWFwLnNldChBU0NJSUxpdGVyYWwoInZlcnNpb24iKSwgQVBJOjpTdHJpbmc6OmNyZWF0
ZShwbHVnaW5Nb2R1bGUudmVyc2lvblN0cmluZykpOwogI2VuZGlmCiAKLSAgICAgICAgcGx1Z2lu
cy51bmNoZWNrZWRBcHBlbmQoQVBJOjpEaWN0aW9uYXJ5OjpjcmVhdGUoV1RGOjptb3ZlKG1hcCkp
KTsKKyAgICAgICAgcGx1Z2lucy51bmNoZWNrZWRBcHBlbmQoQVBJOjpEaWN0aW9uYXJ5OjpjcmVh
dGUoV1RGTW92ZShtYXApKSk7CiAgICAgfQogCi0gICAgbV9jbGllbnQucGx1Z0luSW5mb3JtYXRp
b25CZWNhbWVBdmFpbGFibGUodGhpcywgQVBJOjpBcnJheTo6Y3JlYXRlKFdURjo6bW92ZShwbHVn
aW5zKSkucHRyKCkpOworICAgIG1fY2xpZW50LnBsdWdJbkluZm9ybWF0aW9uQmVjYW1lQXZhaWxh
YmxlKHRoaXMsIEFQSTo6QXJyYXk6OmNyZWF0ZShXVEZNb3ZlKHBsdWdpbnMpKS5wdHIoKSk7CiB9
CiAKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldFBsdWdpbkxvYWRDbGllbnRQb2xpY3koV2ViQ29y
ZTo6UGx1Z2luTG9hZENsaWVudFBvbGljeSBwb2xpY3ksIGNvbnN0IFN0cmluZyYgaG9zdCwgY29u
c3QgU3RyaW5nJiBidW5kbGVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHZlcnNpb25TdHJpbmcp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCmluZGV4IGFi
ZWI3MjFkNTkwNjk0ZmU1ODQ4ZmQ3MGYzODE1YmRhMDAzZjBlMzYuLjc0ZWFjMTljMDZiYmVlNzEy
YTc3ZDg5NDUxNmUyYmU3NTE4MGMxOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUHJveHkuY3BwCkBAIC0yMjEsNyArMjIxLDcgQEAgV2ViUGFnZVByb3h5KiBXZWJQ
cm9jZXNzUHJveHk6OndlYlBhZ2UodWludDY0X3QgcGFnZUlEKQogUmVmPFdlYlBhZ2VQcm94eT4g
V2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVXZWJQYWdlKFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFJl
ZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiYmIHBhZ2VDb25maWd1cmF0aW9uKQogewogICAgIHVp
bnQ2NF90IHBhZ2VJRCA9IGdlbmVyYXRlUGFnZUlEKCk7Ci0gICAgUmVmPFdlYlBhZ2VQcm94eT4g
d2ViUGFnZSA9IFdlYlBhZ2VQcm94eTo6Y3JlYXRlKHBhZ2VDbGllbnQsICp0aGlzLCBwYWdlSUQs
IFdURjo6bW92ZShwYWdlQ29uZmlndXJhdGlvbikpOworICAgIFJlZjxXZWJQYWdlUHJveHk+IHdl
YlBhZ2UgPSBXZWJQYWdlUHJveHk6OmNyZWF0ZShwYWdlQ2xpZW50LCAqdGhpcywgcGFnZUlELCBX
VEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uKSk7CiAKICAgICBtX3BhZ2VNYXAuc2V0KHBhZ2VJRCwg
d2ViUGFnZS5wdHIoKSk7CiAgICAgZ2xvYmFsUGFnZU1hcCgpLnNldChwYWdlSUQsIHdlYlBhZ2Uu
cHRyKCkpOwpAQCAtMzg3LDcgKzM4Nyw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjphZGRCYWNr
Rm9yd2FyZEl0ZW0odWludDY0X3QgaXRlbUlELCB1aW50NjRfdCBwYWdlSUQsIGNvbnN0CiAgICAg
ICAgIEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSBiYWNrRm9yd2FyZExpc3RJdGVtU3RhdGU7CiAg
ICAgICAgIGJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZS5pZGVudGlmaWVyID0gaXRlbUlEOwogICAg
ICAgICBiYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUucGFnZVN0YXRlID0gcGFnZVN0YXRlOwotICAg
ICAgICBiYWNrRm9yd2FyZExpc3RJdGVtID0gV2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6Y3JlYXRl
KFdURjo6bW92ZShiYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUpLCBwYWdlSUQpOworICAgICAgICBi
YWNrRm9yd2FyZExpc3RJdGVtID0gV2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6Y3JlYXRlKFdURk1v
dmUoYmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlKSwgcGFnZUlEKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIApAQCAtNzE5LDcgKzcxOSw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpmZXRjaFdl
YnNpdGVEYXRhKFNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYnNpdGVEYXRhVHlwZXMgZGF0CiAgICAg
YXV0byB0b2tlbiA9IHRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCk7CiAKICAg
ICBtX3BlbmRpbmdGZXRjaFdlYnNpdGVEYXRhQ2FsbGJhY2tzLmFkZChjYWxsYmFja0lELCBbdG9r
ZW4sIGNvbXBsZXRpb25IYW5kbGVyXShXZWJzaXRlRGF0YSB3ZWJzaXRlRGF0YSkgewotICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihXVEY6Om1vdmUod2Vic2l0ZURhdGEpKTsKKyAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoV1RGTW92ZSh3ZWJzaXRlRGF0YSkpOwogICAgIH0pOwogCiAgICAgc2Vu
ZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6RmV0Y2hXZWJzaXRlRGF0YShzZXNzaW9uSUQsIGRhdGFU
eXBlcywgY2FsbGJhY2tJRCksIDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhUmVjb3JkLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVJlY29yZC5jcHAKaW5kZXggZjgwODE0YTAx
N2JjN2NiNGNjZjBkZmI5ZGRjMWE0NWVmMTMxZGVlOS4uMWFhMmMwZWI3ZTU5MjdhOWQ5ZThkMzVl
YjM5MGVkMWY0ZGQ1MjczYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhUmVjb3JkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFSZWNvcmQuY3BwCkBAIC04NSw3ICs4NSw3IEBA
IHZvaWQgV2Vic2l0ZURhdGFSZWNvcmQ6OmFkZChXZWJzaXRlRGF0YVR5cGVzIHR5cGUsIFJlZlB0
cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpCiB7CiAgICAgdHlwZXMgfD0gdHlwZTsKIAotICAgIG9y
aWdpbnMuYWRkKFdURjo6bW92ZShvcmlnaW4pKTsKKyAgICBvcmlnaW5zLmFkZChXVEZNb3ZlKG9y
aWdpbikpOwogfQogCiB2b2lkIFdlYnNpdGVEYXRhUmVjb3JkOjphZGRDb29raWVIb3N0TmFtZShj
b25zdCBTdHJpbmcmIGhvc3ROYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCmluZGV4IDkzNjE2MmE3OTA0
ODA4NGE1MTQzY2RhYTZlMDExMmVjMjM3MDA2NGYuLmNlMGFlN2UyNjAyYTg1YWIxZDZhYmIzMTQy
OGY1MjU3MDM5NDhkMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJz
aXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKQEAgLTY2LDE3ICs2NiwxNyBAQCBS
ZWY8V2Vic2l0ZURhdGFTdG9yZT4gV2Vic2l0ZURhdGFTdG9yZTo6Y3JlYXRlTm9uUGVyc2lzdGVu
dCgpCiAKIFJlZjxXZWJzaXRlRGF0YVN0b3JlPiBXZWJzaXRlRGF0YVN0b3JlOjpjcmVhdGUoQ29u
ZmlndXJhdGlvbiBjb25maWd1cmF0aW9uKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdl
YnNpdGVEYXRhU3RvcmUoV1RGOjptb3ZlKGNvbmZpZ3VyYXRpb24pKSk7CisgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgV2Vic2l0ZURhdGFTdG9yZShXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKSk7CiB9
CiAKIFdlYnNpdGVEYXRhU3RvcmU6OldlYnNpdGVEYXRhU3RvcmUoQ29uZmlndXJhdGlvbiBjb25m
aWd1cmF0aW9uKQogICAgIDogbV9pZGVudGlmaWVyKGdlbmVyYXRlSWRlbnRpZmllcigpKQogICAg
ICwgbV9zZXNzaW9uSUQoV2ViQ29yZTo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpCi0g
ICAgLCBtX25ldHdvcmtDYWNoZURpcmVjdG9yeShXVEY6Om1vdmUoY29uZmlndXJhdGlvbi5uZXR3
b3JrQ2FjaGVEaXJlY3RvcnkpKQotICAgICwgbV9hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KFdU
Rjo6bW92ZShjb25maWd1cmF0aW9uLmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkpKQotICAgICwg
bV93ZWJTUUxEYXRhYmFzZURpcmVjdG9yeShXVEY6Om1vdmUoY29uZmlndXJhdGlvbi53ZWJTUUxE
YXRhYmFzZURpcmVjdG9yeSkpCi0gICAgLCBtX21lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoV1RG
Ojptb3ZlKGNvbmZpZ3VyYXRpb24ubWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSkpCi0gICAgLCBt
X3N0b3JhZ2VNYW5hZ2VyKFN0b3JhZ2VNYW5hZ2VyOjpjcmVhdGUoV1RGOjptb3ZlKGNvbmZpZ3Vy
YXRpb24ubG9jYWxTdG9yYWdlRGlyZWN0b3J5KSkpCisgICAgLCBtX25ldHdvcmtDYWNoZURpcmVj
dG9yeShXVEZNb3ZlKGNvbmZpZ3VyYXRpb24ubmV0d29ya0NhY2hlRGlyZWN0b3J5KSkKKyAgICAs
IG1fYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeShXVEZNb3ZlKGNvbmZpZ3VyYXRpb24uYXBwbGlj
YXRpb25DYWNoZURpcmVjdG9yeSkpCisgICAgLCBtX3dlYlNRTERhdGFiYXNlRGlyZWN0b3J5KFdU
Rk1vdmUoY29uZmlndXJhdGlvbi53ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSkpCisgICAgLCBtX21l
ZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoV1RGTW92ZShjb25maWd1cmF0aW9uLm1lZGlhS2V5c1N0
b3JhZ2VEaXJlY3RvcnkpKQorICAgICwgbV9zdG9yYWdlTWFuYWdlcihTdG9yYWdlTWFuYWdlcjo6
Y3JlYXRlKFdURk1vdmUoY29uZmlndXJhdGlvbi5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkpKSkKICAg
ICAsIG1fcXVldWUoV29ya1F1ZXVlOjpjcmVhdGUoImNvbS5hcHBsZS5XZWJLaXQuV2Vic2l0ZURh
dGFTdG9yZSIpKQogewogICAgIHBsYXRmb3JtSW5pdGlhbGl6ZSgpOwpAQCAtMTU0LDcgKzE1NCw3
IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6ZmV0Y2hEYXRhKFdlYnNpdGVEYXRhVHlwZXMgZGF0
YVR5cGVzLCBzdGQ6OmZ1bmN0aW9uPHZvaWQKIHsKICAgICBzdHJ1Y3QgQ2FsbGJhY2tBZ2dyZWdh
dG9yIGZpbmFsIDogVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Q2FsbGJhY2tBZ2dyZWdhdG9yPiB7CiAg
ICAgICAgIGV4cGxpY2l0IENhbGxiYWNrQWdncmVnYXRvcihzdGQ6OmZ1bmN0aW9uPHZvaWQgKFZl
Y3RvcjxXZWJzaXRlRGF0YVJlY29yZD4pPiBjb21wbGV0aW9uSGFuZGxlcikKLSAgICAgICAgICAg
IDogY29tcGxldGlvbkhhbmRsZXIoV1RGOjptb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkKKyAgICAg
ICAgICAgIDogY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpCiAg
ICAgICAgIHsKICAgICAgICAgfQogCkBAIC0xODAsOSArMTgwLDkgQEAgdm9pZCBXZWJzaXRlRGF0
YVN0b3JlOjpmZXRjaERhdGEoV2Vic2l0ZURhdGFUeXBlcyBkYXRhVHlwZXMsIHN0ZDo6ZnVuY3Rp
b248dm9pZAogCiAgICAgICAgICAgICAgICAgYXV0byYgcmVjb3JkID0gbV93ZWJzaXRlRGF0YVJl
Y29yZHMuYWRkKGRpc3BsYXlOYW1lLCBXZWJzaXRlRGF0YVJlY29yZCB7IH0pLml0ZXJhdG9yLT52
YWx1ZTsKICAgICAgICAgICAgICAgICBpZiAoIXJlY29yZC5kaXNwbGF5TmFtZSkKLSAgICAgICAg
ICAgICAgICAgICAgcmVjb3JkLmRpc3BsYXlOYW1lID0gV1RGOjptb3ZlKGRpc3BsYXlOYW1lKTsK
KyAgICAgICAgICAgICAgICAgICAgcmVjb3JkLmRpc3BsYXlOYW1lID0gV1RGTW92ZShkaXNwbGF5
TmFtZSk7CiAKLSAgICAgICAgICAgICAgICByZWNvcmQuYWRkKGVudHJ5LnR5cGUsIFdURjo6bW92
ZShlbnRyeS5vcmlnaW4pKTsKKyAgICAgICAgICAgICAgICByZWNvcmQuYWRkKGVudHJ5LnR5cGUs
IFdURk1vdmUoZW50cnkub3JpZ2luKSk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGZv
ciAoYXV0byYgaG9zdE5hbWUgOiB3ZWJzaXRlRGF0YS5ob3N0TmFtZXNXaXRoQ29va2llcykgewpA
QCAtMTkyLDcgKzE5Miw3IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6ZmV0Y2hEYXRhKFdlYnNp
dGVEYXRhVHlwZXMgZGF0YVR5cGVzLCBzdGQ6OmZ1bmN0aW9uPHZvaWQKIAogICAgICAgICAgICAg
ICAgIGF1dG8mIHJlY29yZCA9IG1fd2Vic2l0ZURhdGFSZWNvcmRzLmFkZChkaXNwbGF5TmFtZSwg
V2Vic2l0ZURhdGFSZWNvcmQgeyB9KS5pdGVyYXRvci0+dmFsdWU7CiAgICAgICAgICAgICAgICAg
aWYgKCFyZWNvcmQuZGlzcGxheU5hbWUpCi0gICAgICAgICAgICAgICAgICAgIHJlY29yZC5kaXNw
bGF5TmFtZSA9IFdURjo6bW92ZShkaXNwbGF5TmFtZSk7CisgICAgICAgICAgICAgICAgICAgIHJl
Y29yZC5kaXNwbGF5TmFtZSA9IFdURk1vdmUoZGlzcGxheU5hbWUpOwogCiAgICAgICAgICAgICAg
ICAgcmVjb3JkLmFkZENvb2tpZUhvc3ROYW1lKGhvc3ROYW1lKTsKICAgICAgICAgICAgIH0KQEAg
LTIwNSw3ICsyMDUsNyBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OmZldGNoRGF0YShXZWJzaXRl
RGF0YVR5cGVzIGRhdGFUeXBlcywgc3RkOjpmdW5jdGlvbjx2b2lkCiAKICAgICAgICAgICAgICAg
ICBhdXRvJiByZWNvcmQgPSBtX3dlYnNpdGVEYXRhUmVjb3Jkcy5hZGQoZGlzcGxheU5hbWUsIFdl
YnNpdGVEYXRhUmVjb3JkIHsgfSkuaXRlcmF0b3ItPnZhbHVlOwogICAgICAgICAgICAgICAgIGlm
ICghcmVjb3JkLmRpc3BsYXlOYW1lKQotICAgICAgICAgICAgICAgICAgICByZWNvcmQuZGlzcGxh
eU5hbWUgPSBXVEY6Om1vdmUoZGlzcGxheU5hbWUpOworICAgICAgICAgICAgICAgICAgICByZWNv
cmQuZGlzcGxheU5hbWUgPSBXVEZNb3ZlKGRpc3BsYXlOYW1lKTsKIAogICAgICAgICAgICAgICAg
IHJlY29yZC5hZGRQbHVnaW5EYXRhSG9zdE5hbWUoaG9zdE5hbWUpOwogICAgICAgICAgICAgfQpA
QCAtMjI2LDkgKzIyNiw5IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6ZmV0Y2hEYXRhKFdlYnNp
dGVEYXRhVHlwZXMgZGF0YVR5cGVzLCBzdGQ6OmZ1bmN0aW9uPHZvaWQKICAgICAgICAgICAgICAg
ICByZWNvcmRzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoY2FsbGJhY2tBZ2dyZWdhdG9yLT5tX3dl
YnNpdGVEYXRhUmVjb3Jkcy5zaXplKCkpOwogCiAgICAgICAgICAgICAgICAgZm9yIChhdXRvJiBy
ZWNvcmQgOiBjYWxsYmFja0FnZ3JlZ2F0b3ItPm1fd2Vic2l0ZURhdGFSZWNvcmRzLnZhbHVlcygp
KQotICAgICAgICAgICAgICAgICAgICByZWNvcmRzLnVuY2hlY2tlZEFwcGVuZChXVEY6Om1vdmUo
cmVjb3JkKSk7CisgICAgICAgICAgICAgICAgICAgIHJlY29yZHMudW5jaGVja2VkQXBwZW5kKFdU
Rk1vdmUocmVjb3JkKSk7CiAKLSAgICAgICAgICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPmNv
bXBsZXRpb25IYW5kbGVyKFdURjo6bW92ZShyZWNvcmRzKSk7CisgICAgICAgICAgICAgICAgY2Fs
bGJhY2tBZ2dyZWdhdG9yLT5jb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlY29yZHMpKTsKICAg
ICAgICAgICAgIH0pOwogICAgICAgICB9CiAKQEAgLTIzOCw3ICsyMzgsNyBAQCB2b2lkIFdlYnNp
dGVEYXRhU3RvcmU6OmZldGNoRGF0YShXZWJzaXRlRGF0YVR5cGVzIGRhdGFUeXBlcywgc3RkOjpm
dW5jdGlvbjx2b2lkCiAgICAgICAgIEhhc2hNYXA8U3RyaW5nLCBXZWJzaXRlRGF0YVJlY29yZD4g
bV93ZWJzaXRlRGF0YVJlY29yZHM7CiAgICAgfTsKIAotICAgIFJlZlB0cjxDYWxsYmFja0FnZ3Jl
Z2F0b3I+IGNhbGxiYWNrQWdncmVnYXRvciA9IGFkb3B0UmVmKG5ldyBDYWxsYmFja0FnZ3JlZ2F0
b3IoV1RGOjptb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkpOworICAgIFJlZlB0cjxDYWxsYmFja0Fn
Z3JlZ2F0b3I+IGNhbGxiYWNrQWdncmVnYXRvciA9IGFkb3B0UmVmKG5ldyBDYWxsYmFja0FnZ3Jl
Z2F0b3IoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpKTsKIAogICAgIGF1dG8gbmV0d29ya1By
b2Nlc3NBY2Nlc3NUeXBlID0gY29tcHV0ZU5ldHdvcmtQcm9jZXNzQWNjZXNzVHlwZUZvckRhdGFG
ZXRjaChkYXRhVHlwZXMsICFpc1BlcnNpc3RlbnQoKSk7CiAgICAgaWYgKG5ldHdvcmtQcm9jZXNz
QWNjZXNzVHlwZSAhPSBQcm9jZXNzQWNjZXNzVHlwZTo6Tm9uZSkgewpAQCAtMjU5LDcgKzI1OSw3
IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6ZmV0Y2hEYXRhKFdlYnNpdGVEYXRhVHlwZXMgZGF0
YVR5cGVzLCBzdGQ6OmZ1bmN0aW9uPHZvaWQKIAogICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdh
dG9yLT5hZGRQZW5kaW5nQ2FsbGJhY2soKTsKICAgICAgICAgICAgIHByb2Nlc3NQb29sLT5uZXR3
b3JrUHJvY2VzcygpLT5mZXRjaFdlYnNpdGVEYXRhKG1fc2Vzc2lvbklELCBkYXRhVHlwZXMsIFtj
YWxsYmFja0FnZ3JlZ2F0b3IsIHByb2Nlc3NQb29sXShXZWJzaXRlRGF0YSB3ZWJzaXRlRGF0YSkg
ewotICAgICAgICAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+cmVtb3ZlUGVuZGluZ0NhbGxi
YWNrKFdURjo6bW92ZSh3ZWJzaXRlRGF0YSkpOworICAgICAgICAgICAgICAgIGNhbGxiYWNrQWdn
cmVnYXRvci0+cmVtb3ZlUGVuZGluZ0NhbGxiYWNrKFdURk1vdmUod2Vic2l0ZURhdGEpKTsKICAg
ICAgICAgICAgIH0pOwogICAgICAgICB9CiAgICAgfQpAQCAtMjg0LDcgKzI4NCw3IEBAIHZvaWQg
V2Vic2l0ZURhdGFTdG9yZTo6ZmV0Y2hEYXRhKFdlYnNpdGVEYXRhVHlwZXMgZGF0YVR5cGVzLCBz
dGQ6OmZ1bmN0aW9uPHZvaWQKIAogICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5hZGRQ
ZW5kaW5nQ2FsbGJhY2soKTsKICAgICAgICAgICAgIHByb2Nlc3MtPmZldGNoV2Vic2l0ZURhdGEo
bV9zZXNzaW9uSUQsIGRhdGFUeXBlcywgW2NhbGxiYWNrQWdncmVnYXRvcl0oV2Vic2l0ZURhdGEg
d2Vic2l0ZURhdGEpIHsKLSAgICAgICAgICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPnJlbW92
ZVBlbmRpbmdDYWxsYmFjayhXVEY6Om1vdmUod2Vic2l0ZURhdGEpKTsKKyAgICAgICAgICAgICAg
ICBjYWxsYmFja0FnZ3JlZ2F0b3ItPnJlbW92ZVBlbmRpbmdDYWxsYmFjayhXVEZNb3ZlKHdlYnNp
dGVEYXRhKSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfQogICAgIH0KQEAgLTI5OCw3ICsy
OTgsNyBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OmZldGNoRGF0YShXZWJzaXRlRGF0YVR5cGVz
IGRhdGFUeXBlcywgc3RkOjpmdW5jdGlvbjx2b2lkCiAgICAgICAgICAgICB3aGlsZSAoIW9yaWdp
bnMuaXNFbXB0eSgpKQogICAgICAgICAgICAgICAgIHdlYnNpdGVEYXRhLmVudHJpZXMuYXBwZW5k
KFdlYnNpdGVEYXRhOjpFbnRyeSB7IG9yaWdpbnMudGFrZUFueSgpLCBXZWJzaXRlRGF0YVR5cGVT
ZXNzaW9uU3RvcmFnZSB9KTsKIAotICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5yZW1v
dmVQZW5kaW5nQ2FsbGJhY2soV1RGOjptb3ZlKHdlYnNpdGVEYXRhKSk7CisgICAgICAgICAgICBj
YWxsYmFja0FnZ3JlZ2F0b3ItPnJlbW92ZVBlbmRpbmdDYWxsYmFjayhXVEZNb3ZlKHdlYnNpdGVE
YXRhKSk7CiAgICAgICAgIH0pOwogICAgIH0KIApAQCAtMzExLDcgKzMxMSw3IEBAIHZvaWQgV2Vi
c2l0ZURhdGFTdG9yZTo6ZmV0Y2hEYXRhKFdlYnNpdGVEYXRhVHlwZXMgZGF0YVR5cGVzLCBzdGQ6
OmZ1bmN0aW9uPHZvaWQKICAgICAgICAgICAgIHdoaWxlICghb3JpZ2lucy5pc0VtcHR5KCkpCiAg
ICAgICAgICAgICAgICAgd2Vic2l0ZURhdGEuZW50cmllcy5hcHBlbmQoV2Vic2l0ZURhdGE6OkVu
dHJ5IHsgb3JpZ2lucy50YWtlQW55KCksIFdlYnNpdGVEYXRhVHlwZUxvY2FsU3RvcmFnZSB9KTsK
IAotICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5yZW1vdmVQZW5kaW5nQ2FsbGJhY2so
V1RGOjptb3ZlKHdlYnNpdGVEYXRhKSk7CisgICAgICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3It
PnJlbW92ZVBlbmRpbmdDYWxsYmFjayhXVEZNb3ZlKHdlYnNpdGVEYXRhKSk7CiAgICAgICAgIH0p
OwogICAgIH0KIApAQCAtMzMyLDcgKzMzMiw3IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6ZmV0
Y2hEYXRhKFdlYnNpdGVEYXRhVHlwZXMgZGF0YVR5cGVzLCBzdGQ6OmZ1bmN0aW9uPHZvaWQKICAg
ICAgICAgICAgICAgICBmb3IgKGF1dG8mIG9yaWdpbiA6IG9yaWdpbnMpCiAgICAgICAgICAgICAg
ICAgICAgIHdlYnNpdGVEYXRhLmVudHJpZXMuYXBwZW5kKFdlYnNpdGVEYXRhOjpFbnRyeSB7IG9y
aWdpbiwgV2Vic2l0ZURhdGFUeXBlT2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGUgfSk7CiAKLSAg
ICAgICAgICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPnJlbW92ZVBlbmRpbmdDYWxsYmFjayhX
VEY6Om1vdmUod2Vic2l0ZURhdGEpKTsKKyAgICAgICAgICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0
b3ItPnJlbW92ZVBlbmRpbmdDYWxsYmFjayhXVEZNb3ZlKHdlYnNpdGVEYXRhKSk7CiAgICAgICAg
ICAgICB9KTsKICAgICAgICAgfSk7CiAgICAgfQpAQCAtMzQ5LDkgKzM0OSw5IEBAIHZvaWQgV2Vi
c2l0ZURhdGFTdG9yZTo6ZmV0Y2hEYXRhKFdlYnNpdGVEYXRhVHlwZXMgZGF0YVR5cGVzLCBzdGQ6
OmZ1bmN0aW9uPHZvaWQKICAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbY2Fs
bGJhY2tBZ2dyZWdhdG9yLCBvcmlnaW5zXSgpIG11dGFibGUgewogICAgICAgICAgICAgICAgIFdl
YnNpdGVEYXRhIHdlYnNpdGVEYXRhOwogICAgICAgICAgICAgICAgIGZvciAoYXV0byYgb3JpZ2lu
IDogb3JpZ2lucykKLSAgICAgICAgICAgICAgICAgICAgd2Vic2l0ZURhdGEuZW50cmllcy5hcHBl
bmQoV2Vic2l0ZURhdGE6OkVudHJ5IHsgV1RGOjptb3ZlKG9yaWdpbiksIFdlYnNpdGVEYXRhVHlw
ZVdlYlNRTERhdGFiYXNlcyB9KTsKKyAgICAgICAgICAgICAgICAgICAgd2Vic2l0ZURhdGEuZW50
cmllcy5hcHBlbmQoV2Vic2l0ZURhdGE6OkVudHJ5IHsgV1RGTW92ZShvcmlnaW4pLCBXZWJzaXRl
RGF0YVR5cGVXZWJTUUxEYXRhYmFzZXMgfSk7CiAKLSAgICAgICAgICAgICAgICBjYWxsYmFja0Fn
Z3JlZ2F0b3ItPnJlbW92ZVBlbmRpbmdDYWxsYmFjayhXVEY6Om1vdmUod2Vic2l0ZURhdGEpKTsK
KyAgICAgICAgICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPnJlbW92ZVBlbmRpbmdDYWxsYmFj
ayhXVEZNb3ZlKHdlYnNpdGVEYXRhKSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfSk7CiAg
ICAgfQpAQCAtMzYzLDcgKzM2Myw3IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6ZmV0Y2hEYXRh
KFdlYnNpdGVEYXRhVHlwZXMgZGF0YVR5cGVzLCBzdGQ6OmZ1bmN0aW9uPHZvaWQKIAogICAgICAg
ICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5hZGRQZW5kaW5nQ2FsbGJhY2soKTsKICAgICAgICAg
ICAgIHByb2Nlc3NQb29sLT5kYXRhYmFzZVByb2Nlc3MoKS0+ZmV0Y2hXZWJzaXRlRGF0YShtX3Nl
c3Npb25JRCwgZGF0YVR5cGVzLCBbY2FsbGJhY2tBZ2dyZWdhdG9yLCBwcm9jZXNzUG9vbF0oV2Vi
c2l0ZURhdGEgd2Vic2l0ZURhdGEpIHsKLSAgICAgICAgICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0
b3ItPnJlbW92ZVBlbmRpbmdDYWxsYmFjayhXVEY6Om1vdmUod2Vic2l0ZURhdGEpKTsKKyAgICAg
ICAgICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPnJlbW92ZVBlbmRpbmdDYWxsYmFjayhXVEZN
b3ZlKHdlYnNpdGVEYXRhKSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfQogICAgIH0KQEAg
LTM4MCw5ICszODAsOSBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OmZldGNoRGF0YShXZWJzaXRl
RGF0YVR5cGVzIGRhdGFUeXBlcywgc3RkOjpmdW5jdGlvbjx2b2lkCiAgICAgICAgICAgICBSdW5M
b29wOjptYWluKCkuZGlzcGF0Y2goW2NhbGxiYWNrQWdncmVnYXRvciwgb3JpZ2luc10oKSBtdXRh
YmxlIHsKICAgICAgICAgICAgICAgICBXZWJzaXRlRGF0YSB3ZWJzaXRlRGF0YTsKICAgICAgICAg
ICAgICAgICBmb3IgKGF1dG8mIG9yaWdpbiA6IG9yaWdpbnMpCi0gICAgICAgICAgICAgICAgICAg
IHdlYnNpdGVEYXRhLmVudHJpZXMuYXBwZW5kKFdlYnNpdGVEYXRhOjpFbnRyeSB7IFdURjo6bW92
ZShvcmlnaW4pLCBXZWJzaXRlRGF0YVR5cGVNZWRpYUtleXMgfSk7CisgICAgICAgICAgICAgICAg
ICAgIHdlYnNpdGVEYXRhLmVudHJpZXMuYXBwZW5kKFdlYnNpdGVEYXRhOjpFbnRyeSB7IFdURk1v
dmUob3JpZ2luKSwgV2Vic2l0ZURhdGFUeXBlTWVkaWFLZXlzIH0pOwogCi0gICAgICAgICAgICAg
ICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5yZW1vdmVQZW5kaW5nQ2FsbGJhY2soV1RGOjptb3ZlKHdl
YnNpdGVEYXRhKSk7CisgICAgICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5yZW1vdmVQ
ZW5kaW5nQ2FsbGJhY2soV1RGTW92ZSh3ZWJzaXRlRGF0YSkpOwogICAgICAgICAgICAgfSk7CiAg
ICAgICAgIH0pOwogICAgIH0KQEAgLTM5MywxMyArMzkzLDEzIEBAIHZvaWQgV2Vic2l0ZURhdGFT
dG9yZTo6ZmV0Y2hEYXRhKFdlYnNpdGVEYXRhVHlwZXMgZGF0YVR5cGVzLCBzdGQ6OmZ1bmN0aW9u
PHZvaWQKICAgICAgICAgcHVibGljOgogICAgICAgICAgICAgc3RhdGljIHZvaWQgZmV0Y2hEYXRh
KFJlZjxDYWxsYmFja0FnZ3JlZ2F0b3I+JiYgY2FsbGJhY2tBZ2dyZWdhdG9yLCBWZWN0b3I8UGx1
Z2luTW9kdWxlSW5mbz4mJiBwbHVnaW5zKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
IG5ldyBTdGF0ZShXVEY6Om1vdmUoY2FsbGJhY2tBZ2dyZWdhdG9yKSwgV1RGOjptb3ZlKHBsdWdp
bnMpKTsKKyAgICAgICAgICAgICAgICBuZXcgU3RhdGUoV1RGTW92ZShjYWxsYmFja0FnZ3JlZ2F0
b3IpLCBXVEZNb3ZlKHBsdWdpbnMpKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICBwcml2YXRl
OgogICAgICAgICAgICAgU3RhdGUoUmVmPENhbGxiYWNrQWdncmVnYXRvcj4mJiBjYWxsYmFja0Fn
Z3JlZ2F0b3IsIFZlY3RvcjxQbHVnaW5Nb2R1bGVJbmZvPiYmIHBsdWdpbnMpCi0gICAgICAgICAg
ICAgICAgOiBtX2NhbGxiYWNrQWdncmVnYXRvcihXVEY6Om1vdmUoY2FsbGJhY2tBZ2dyZWdhdG9y
KSkKLSAgICAgICAgICAgICAgICAsIG1fcGx1Z2lucyhXVEY6Om1vdmUocGx1Z2lucykpCisgICAg
ICAgICAgICAgICAgOiBtX2NhbGxiYWNrQWdncmVnYXRvcihXVEZNb3ZlKGNhbGxiYWNrQWdncmVn
YXRvcikpCisgICAgICAgICAgICAgICAgLCBtX3BsdWdpbnMoV1RGTW92ZShwbHVnaW5zKSkKICAg
ICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBtX2NhbGxiYWNrQWdncmVnYXRvci0+YWRkUGVu
ZGluZ0NhbGxiYWNrKCk7CiAKQEAgLTQxNSw5ICs0MTUsOSBAQCB2b2lkIFdlYnNpdGVEYXRhU3Rv
cmU6OmZldGNoRGF0YShXZWJzaXRlRGF0YVR5cGVzIGRhdGFUeXBlcywgc3RkOjpmdW5jdGlvbjx2
b2lkCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgaWYgKG1fcGx1Z2lucy5pc0VtcHR5
KCkpIHsKICAgICAgICAgICAgICAgICAgICAgV2Vic2l0ZURhdGEgd2Vic2l0ZURhdGE7Ci0gICAg
ICAgICAgICAgICAgICAgIHdlYnNpdGVEYXRhLmhvc3ROYW1lc1dpdGhQbHVnaW5EYXRhID0gV1RG
Ojptb3ZlKG1faG9zdE5hbWVzKTsKKyAgICAgICAgICAgICAgICAgICAgd2Vic2l0ZURhdGEuaG9z
dE5hbWVzV2l0aFBsdWdpbkRhdGEgPSBXVEZNb3ZlKG1faG9zdE5hbWVzKTsKIAotICAgICAgICAg
ICAgICAgICAgICBtX2NhbGxiYWNrQWdncmVnYXRvci0+cmVtb3ZlUGVuZGluZ0NhbGxiYWNrKFdU
Rjo6bW92ZSh3ZWJzaXRlRGF0YSkpOworICAgICAgICAgICAgICAgICAgICBtX2NhbGxiYWNrQWdn
cmVnYXRvci0+cmVtb3ZlUGVuZGluZ0NhbGxiYWNrKFdURk1vdmUod2Vic2l0ZURhdGEpKTsKIAog
ICAgICAgICAgICAgICAgICAgICBkZWxldGUgdGhpczsKICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuOwpAQCAtNDI2LDcgKzQyNiw3IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6ZmV0Y2hEYXRh
KFdlYnNpdGVEYXRhVHlwZXMgZGF0YVR5cGVzLCBzdGQ6OmZ1bmN0aW9uPHZvaWQKICAgICAgICAg
ICAgICAgICBhdXRvIHBsdWdpbiA9IG1fcGx1Z2lucy50YWtlTGFzdCgpOwogICAgICAgICAgICAg
ICAgIFBsdWdpblByb2Nlc3NNYW5hZ2VyOjpzaW5nbGV0b24oKS5mZXRjaFdlYnNpdGVEYXRhKHBs
dWdpbiwgW3RoaXNdKFZlY3RvcjxTdHJpbmc+IGhvc3ROYW1lcykgewogICAgICAgICAgICAgICAg
ICAgICBmb3IgKGF1dG8mIGhvc3ROYW1lIDogaG9zdE5hbWVzKQotICAgICAgICAgICAgICAgICAg
ICAgICAgbV9ob3N0TmFtZXMuYWRkKFdURjo6bW92ZShob3N0TmFtZSkpOworICAgICAgICAgICAg
ICAgICAgICAgICAgbV9ob3N0TmFtZXMuYWRkKFdURk1vdmUoaG9zdE5hbWUpKTsKICAgICAgICAg
ICAgICAgICAgICAgZmV0Y2hXZWJzaXRlRGF0YUZvck5leHRQbHVnaW4oKTsKICAgICAgICAgICAg
ICAgICB9KTsKICAgICAgICAgICAgIH0KQEAgLTQ3OSw3ICs0NzksNyBAQCB2b2lkIFdlYnNpdGVE
YXRhU3RvcmU6OnJlbW92ZURhdGEoV2Vic2l0ZURhdGFUeXBlcyBkYXRhVHlwZXMsIHN0ZDo6Y2hy
b25vOjpzeXN0ZQogewogICAgIHN0cnVjdCBDYWxsYmFja0FnZ3JlZ2F0b3IgOiBUaHJlYWRTYWZl
UmVmQ291bnRlZDxDYWxsYmFja0FnZ3JlZ2F0b3I+IHsKICAgICAgICAgZXhwbGljaXQgQ2FsbGJh
Y2tBZ2dyZWdhdG9yIChzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+IGNvbXBsZXRpb25IYW5kbGVyKQot
ICAgICAgICAgICAgOiBjb21wbGV0aW9uSGFuZGxlcihXVEY6Om1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKQorICAgICAgICAgICAgOiBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSkKICAgICAgICAgewogICAgICAgICB9CiAKQEAgLTQ5OSwxNCArNDk5LDE0IEBAIHZv
aWQgV2Vic2l0ZURhdGFTdG9yZTo6cmVtb3ZlRGF0YShXZWJzaXRlRGF0YVR5cGVzIGRhdGFUeXBl
cywgc3RkOjpjaHJvbm86OnN5c3RlCiAgICAgICAgIHZvaWQgY2FsbElmTmVlZGVkKCkKICAgICAg
ICAgewogICAgICAgICAgICAgaWYgKCFwZW5kaW5nQ2FsbGJhY2tzKQotICAgICAgICAgICAgICAg
IFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChXVEY6Om1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsK
KyAgICAgICAgICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpOwogICAgICAgICB9CiAKICAgICAgICAgdW5zaWduZWQgcGVuZGluZ0NhbGxi
YWNrcyA9IDA7CiAgICAgICAgIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4gY29tcGxldGlvbkhhbmRs
ZXI7CiAgICAgfTsKIAotICAgIFJlZlB0cjxDYWxsYmFja0FnZ3JlZ2F0b3I+IGNhbGxiYWNrQWdn
cmVnYXRvciA9IGFkb3B0UmVmKG5ldyBDYWxsYmFja0FnZ3JlZ2F0b3IoV1RGOjptb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSkpOworICAgIFJlZlB0cjxDYWxsYmFja0FnZ3JlZ2F0b3I+IGNhbGxiYWNr
QWdncmVnYXRvciA9IGFkb3B0UmVmKG5ldyBDYWxsYmFja0FnZ3JlZ2F0b3IoV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpKTsKIAogICAgIGF1dG8gbmV0d29ya1Byb2Nlc3NBY2Nlc3NUeXBlID0g
Y29tcHV0ZU5ldHdvcmtQcm9jZXNzQWNjZXNzVHlwZUZvckRhdGFSZW1vdmFsKGRhdGFUeXBlcywg
IWlzUGVyc2lzdGVudCgpKTsKICAgICBpZiAobmV0d29ya1Byb2Nlc3NBY2Nlc3NUeXBlICE9IFBy
b2Nlc3NBY2Nlc3NUeXBlOjpOb25lKSB7CkBAIC02NDgsMTMgKzY0OCwxMyBAQCB2b2lkIFdlYnNp
dGVEYXRhU3RvcmU6OnJlbW92ZURhdGEoV2Vic2l0ZURhdGFUeXBlcyBkYXRhVHlwZXMsIHN0ZDo6
Y2hyb25vOjpzeXN0ZQogICAgICAgICBwdWJsaWM6CiAgICAgICAgICAgICBzdGF0aWMgdm9pZCBk
ZWxldGVEYXRhKFJlZjxDYWxsYmFja0FnZ3JlZ2F0b3I+JiYgY2FsbGJhY2tBZ2dyZWdhdG9yLCBW
ZWN0b3I8UGx1Z2luTW9kdWxlSW5mbz4mJiBwbHVnaW5zLCBzdGQ6OmNocm9ubzo6c3lzdGVtX2Ns
b2NrOjp0aW1lX3BvaW50IG1vZGlmaWVkU2luY2UpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgbmV3IFN0YXRlKFdURjo6bW92ZShjYWxsYmFja0FnZ3JlZ2F0b3IpLCBXVEY6Om1vdmUo
cGx1Z2lucyksIG1vZGlmaWVkU2luY2UpOworICAgICAgICAgICAgICAgIG5ldyBTdGF0ZShXVEZN
b3ZlKGNhbGxiYWNrQWdncmVnYXRvciksIFdURk1vdmUocGx1Z2lucyksIG1vZGlmaWVkU2luY2Up
OwogICAgICAgICAgICAgfQogCiAgICAgICAgIHByaXZhdGU6CiAgICAgICAgICAgICBTdGF0ZShS
ZWY8Q2FsbGJhY2tBZ2dyZWdhdG9yPiYmIGNhbGxiYWNrQWdncmVnYXRvciwgVmVjdG9yPFBsdWdp
bk1vZHVsZUluZm8+JiYgcGx1Z2lucywgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9w
b2ludCBtb2RpZmllZFNpbmNlKQotICAgICAgICAgICAgICAgIDogbV9jYWxsYmFja0FnZ3JlZ2F0
b3IoV1RGOjptb3ZlKGNhbGxiYWNrQWdncmVnYXRvcikpCi0gICAgICAgICAgICAgICAgLCBtX3Bs
dWdpbnMoV1RGOjptb3ZlKHBsdWdpbnMpKQorICAgICAgICAgICAgICAgIDogbV9jYWxsYmFja0Fn
Z3JlZ2F0b3IoV1RGTW92ZShjYWxsYmFja0FnZ3JlZ2F0b3IpKQorICAgICAgICAgICAgICAgICwg
bV9wbHVnaW5zKFdURk1vdmUocGx1Z2lucykpCiAgICAgICAgICAgICAgICAgLCBtX21vZGlmaWVk
U2luY2UobW9kaWZpZWRTaW5jZSkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBtX2Nh
bGxiYWNrQWdncmVnYXRvci0+YWRkUGVuZGluZ0NhbGxiYWNrKCk7CkBAIC03MDYsNyArNzA2LDcg
QEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpyZW1vdmVEYXRhKFdlYnNpdGVEYXRhVHlwZXMgZGF0
YVR5cGVzLCBjb25zdCBWZWN0b3I8V2Vic2kKIAogICAgIHN0cnVjdCBDYWxsYmFja0FnZ3JlZ2F0
b3IgOiBUaHJlYWRTYWZlUmVmQ291bnRlZDxDYWxsYmFja0FnZ3JlZ2F0b3I+IHsKICAgICAgICAg
ZXhwbGljaXQgQ2FsbGJhY2tBZ2dyZWdhdG9yIChzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+IGNvbXBs
ZXRpb25IYW5kbGVyKQotICAgICAgICAgICAgOiBjb21wbGV0aW9uSGFuZGxlcihXVEY6Om1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKQorICAgICAgICAgICAgOiBjb21wbGV0aW9uSGFuZGxlcihXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkKICAgICAgICAgewogICAgICAgICB9CiAKQEAgLTcyNiwx
NCArNzI2LDE0IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6cmVtb3ZlRGF0YShXZWJzaXRlRGF0
YVR5cGVzIGRhdGFUeXBlcywgY29uc3QgVmVjdG9yPFdlYnNpCiAgICAgICAgIHZvaWQgY2FsbElm
TmVlZGVkKCkKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFwZW5kaW5nQ2FsbGJhY2tzKQot
ICAgICAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChXVEY6Om1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKKyAgICAgICAgICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2go
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAgICB9CiAKICAgICAgICAgdW5zaWdu
ZWQgcGVuZGluZ0NhbGxiYWNrcyA9IDA7CiAgICAgICAgIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4g
Y29tcGxldGlvbkhhbmRsZXI7CiAgICAgfTsKIAotICAgIFJlZlB0cjxDYWxsYmFja0FnZ3JlZ2F0
b3I+IGNhbGxiYWNrQWdncmVnYXRvciA9IGFkb3B0UmVmKG5ldyBDYWxsYmFja0FnZ3JlZ2F0b3Io
V1RGOjptb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkpOworICAgIFJlZlB0cjxDYWxsYmFja0FnZ3Jl
Z2F0b3I+IGNhbGxiYWNrQWdncmVnYXRvciA9IGFkb3B0UmVmKG5ldyBDYWxsYmFja0FnZ3JlZ2F0
b3IoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpKTsKIAogICAgIGF1dG8gbmV0d29ya1Byb2Nl
c3NBY2Nlc3NUeXBlID0gY29tcHV0ZU5ldHdvcmtQcm9jZXNzQWNjZXNzVHlwZUZvckRhdGFSZW1v
dmFsKGRhdGFUeXBlcywgIWlzUGVyc2lzdGVudCgpKTsKICAgICBpZiAobmV0d29ya1Byb2Nlc3NB
Y2Nlc3NUeXBlICE9IFByb2Nlc3NBY2Nlc3NUeXBlOjpOb25lKSB7CkBAIC04OTYsMTQgKzg5Niwx
NCBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnJlbW92ZURhdGEoV2Vic2l0ZURhdGFUeXBlcyBk
YXRhVHlwZXMsIGNvbnN0IFZlY3RvcjxXZWJzaQogICAgICAgICBwdWJsaWM6CiAgICAgICAgICAg
ICBzdGF0aWMgdm9pZCBkZWxldGVEYXRhKFJlZjxDYWxsYmFja0FnZ3JlZ2F0b3I+JiYgY2FsbGJh
Y2tBZ2dyZWdhdG9yLCBWZWN0b3I8UGx1Z2luTW9kdWxlSW5mbz4mJiBwbHVnaW5zLCBWZWN0b3I8
U3RyaW5nPiYmIGhvc3ROYW1lcykKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBuZXcg
U3RhdGUoV1RGOjptb3ZlKGNhbGxiYWNrQWdncmVnYXRvciksIFdURjo6bW92ZShwbHVnaW5zKSwg
V1RGOjptb3ZlKGhvc3ROYW1lcykpOworICAgICAgICAgICAgICAgIG5ldyBTdGF0ZShXVEZNb3Zl
KGNhbGxiYWNrQWdncmVnYXRvciksIFdURk1vdmUocGx1Z2lucyksIFdURk1vdmUoaG9zdE5hbWVz
KSk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgcHJpdmF0ZToKICAgICAgICAgICAgIFN0YXRl
KFJlZjxDYWxsYmFja0FnZ3JlZ2F0b3I+JiYgY2FsbGJhY2tBZ2dyZWdhdG9yLCBWZWN0b3I8UGx1
Z2luTW9kdWxlSW5mbz4mJiBwbHVnaW5zLCBWZWN0b3I8U3RyaW5nPiYmIGhvc3ROYW1lcykKLSAg
ICAgICAgICAgICAgICA6IG1fY2FsbGJhY2tBZ2dyZWdhdG9yKFdURjo6bW92ZShjYWxsYmFja0Fn
Z3JlZ2F0b3IpKQotICAgICAgICAgICAgICAgICwgbV9wbHVnaW5zKFdURjo6bW92ZShwbHVnaW5z
KSkKLSAgICAgICAgICAgICAgICAsIG1faG9zdE5hbWVzKFdURjo6bW92ZShob3N0TmFtZXMpKQor
ICAgICAgICAgICAgICAgIDogbV9jYWxsYmFja0FnZ3JlZ2F0b3IoV1RGTW92ZShjYWxsYmFja0Fn
Z3JlZ2F0b3IpKQorICAgICAgICAgICAgICAgICwgbV9wbHVnaW5zKFdURk1vdmUocGx1Z2lucykp
CisgICAgICAgICAgICAgICAgLCBtX2hvc3ROYW1lcyhXVEZNb3ZlKGhvc3ROYW1lcykpCiAgICAg
ICAgICAgICB7CiAgICAgICAgICAgICAgICAgbV9jYWxsYmFja0FnZ3JlZ2F0b3ItPmFkZFBlbmRp
bmdDYWxsYmFjaygpOwogCkBAIC05MzUsNyArOTM1LDcgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3Jl
OjpyZW1vdmVEYXRhKFdlYnNpdGVEYXRhVHlwZXMgZGF0YVR5cGVzLCBjb25zdCBWZWN0b3I8V2Vi
c2kKICAgICAgICAgICAgIFZlY3RvcjxTdHJpbmc+IG1faG9zdE5hbWVzOwogICAgICAgICB9Owog
Ci0gICAgICAgIFN0YXRlOjpkZWxldGVEYXRhKCpjYWxsYmFja0FnZ3JlZ2F0b3IsIHBsdWdpbnMo
KSwgV1RGOjptb3ZlKGhvc3ROYW1lcykpOworICAgICAgICBTdGF0ZTo6ZGVsZXRlRGF0YSgqY2Fs
bGJhY2tBZ2dyZWdhdG9yLCBwbHVnaW5zKCksIFdURk1vdmUoaG9zdE5hbWVzKSk7CiAgICAgfQog
I2VuZGlmCiAKQEAgLTEwMzksNyArMTAzOSw3IEBAIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW4+PiBXZWJzaXRlRGF0YVN0b3JlOjptZWRpYUtleU9yaWdpbnMoY29uc3QKICAg
ICAgICAgYXV0byBtZWRpYUtleUlkZW50aWZpZXIgPSBXZWJDb3JlOjpwYXRoR2V0RmlsZU5hbWUo
b3JpZ2luUGF0aCk7CiAKICAgICAgICAgaWYgKGF1dG8gc2VjdXJpdHlPcmlnaW4gPSBXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbjo6bWF5YmVDcmVhdGVGcm9tRGF0YWJhc2VJZGVudGlmaWVyKG1lZGlh
S2V5SWRlbnRpZmllcikpCi0gICAgICAgICAgICBvcmlnaW5zLmFwcGVuZChXVEY6Om1vdmUoc2Vj
dXJpdHlPcmlnaW4pKTsKKyAgICAgICAgICAgIG9yaWdpbnMuYXBwZW5kKFdURk1vdmUoc2VjdXJp
dHlPcmlnaW4pKTsKICAgICB9CiAKICAgICByZXR1cm4gb3JpZ2luczsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvSW5wdXRNZXRob2RDb250ZXh0RWZsLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvSW5wdXRNZXRob2RDb250ZXh0RWZsLmNwcAppbmRl
eCBmMmIyYWI5MmNjMjM1N2JmY2Q0YmY4MDVhNmEwYTkwYjdlNjQyYzAzLi5jZjI4NmE5MTk1OTg3
MWY0YmU0Yzc0NzVlYzI5ODk1YmJkMmMyYzhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvZWZsL0lucHV0TWV0aG9kQ29udGV4dEVmbC5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL2VmbC9JbnB1dE1ldGhvZENvbnRleHRFZmwuY3BwCkBAIC0zMyw3ICszMyw3
IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBJbnB1dE1ldGhvZENvbnRleHRFZmw6OklucHV0TWV0
aG9kQ29udGV4dEVmbChFd2tWaWV3KiB2aWV3LCBFZmxVbmlxdWVQdHI8RWNvcmVfSU1GX0NvbnRl
eHQ+IGNvbnRleHQpCiAgICAgOiBtX3ZpZXcodmlldykKLSAgICAsIG1fY29udGV4dChXVEY6Om1v
dmUoY29udGV4dCkpCisgICAgLCBtX2NvbnRleHQoV1RGTW92ZShjb250ZXh0KSkKICAgICAsIG1f
Zm9jdXNlZChmYWxzZSkKIHsKICAgICBBU1NFUlQobV9jb250ZXh0KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvSW5wdXRNZXRob2RDb250ZXh0RWZsLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL0lucHV0TWV0aG9kQ29udGV4dEVmbC5oCmluZGV4IDll
OWU5NGI3NDlkNDc0MDkyMjQ3MjMyOGE1NDEwN2M0N2QyODliZmQuLmE0OGY4YjdkOGY0Yjg3MGY5
MmI2MWUwZGMxYzQ2NTA4OWQxMjc2ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9lZmwvSW5wdXRNZXRob2RDb250ZXh0RWZsLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2VmbC9JbnB1dE1ldGhvZENvbnRleHRFZmwuaApAQCAtMzcsNyArMzcsNyBAQCBwdWJs
aWM6CiAgICAgICAgIGlmICghY29udGV4dCkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwog
Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPElucHV0TWV0aG9kQ29udGV4dEVmbD4o
dmlld0ltcGwsIFdURjo6bW92ZShjb250ZXh0KSk7CisgICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPElucHV0TWV0aG9kQ29udGV4dEVmbD4odmlld0ltcGwsIFdURk1vdmUoY29udGV4dCkp
OwogICAgIH0KICAgICBJbnB1dE1ldGhvZENvbnRleHRFZmwoRXdrVmlldyosIEVmbFVuaXF1ZVB0
cjxFY29yZV9JTUZfQ29udGV4dD4pOwogICAgIH5JbnB1dE1ldGhvZENvbnRleHRFZmwoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViQ29udGV4dE1lbnVQcm94
eUVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYkNvbnRleHRNZW51UHJv
eHlFZmwuY3BwCmluZGV4IDAxYzQxMmI3MGM3MDhhNTdkMjBlZTk5ODViZGQ1ZjBlZmE4Nzg3OTku
LjAxNmIxNzUyY2MyMzQzNmM2ZjQ4NDc0NGNiMGNhODRmM2YyN2FjZWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViQ29udGV4dE1lbnVQcm94eUVmbC5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJDb250ZXh0TWVudVByb3h5RWZsLmNw
cApAQCAtODEsNyArODEsNyBAQCB2b2lkIFdlYkNvbnRleHRNZW51UHJveHlFZmw6OnNob3dDb250
ZXh0TWVudSgpCiAgICAgICAgIG1lbnVJdGVtcy51bmNoZWNrZWRBcHBlbmQobWVudUl0ZW0pOwog
CiAgICAgaWYgKG1fZXdrVmlldykKLSAgICAgICAgbV9ld2tWaWV3LT5zaG93Q29udGV4dE1lbnUo
dG9BUEkobV9jb250ZXh0Lm1lbnVMb2NhdGlvbigpKSwgdG9BUEkoQVBJOjpBcnJheTo6Y3JlYXRl
KFdURjo6bW92ZShtZW51SXRlbXMpKS5wdHIoKSkpOworICAgICAgICBtX2V3a1ZpZXctPnNob3dD
b250ZXh0TWVudSh0b0FQSShtX2NvbnRleHQubWVudUxvY2F0aW9uKCkpLCB0b0FQSShBUEk6OkFy
cmF5OjpjcmVhdGUoV1RGTW92ZShtZW51SXRlbXMpKS5wdHIoKSkpOwogfQogCiB2b2lkIFdlYkNv
bnRleHRNZW51UHJveHlFZmw6OmhpZGVDb250ZXh0TWVudSgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlVJUG9wdXBNZW51Q2xpZW50LmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViVUlQb3B1cE1lbnVDbGllbnQuY3BwCmluZGV4IDZlMWMw
MjUxOTYzZGUzOWZhYTk3NWVkMTIwMzZjMzllNzU1NTFjZTQuLmM5ZWViOTMwNmZjNDkzMjBmZDA3
OGQyZjNmZjA1NDlmMWRkMGNkZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9lZmwvV2ViVUlQb3B1cE1lbnVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9lZmwvV2ViVUlQb3B1cE1lbnVDbGllbnQuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIHZvaWQg
V2ViVUlQb3B1cE1lbnVDbGllbnQ6OnNob3dQb3B1cE1lbnUoV2ViUGFnZVByb3h5KiBwYWdlUHJv
eHksIFdlYlBvcHVwTWVudVByCiAKICAgICBSZWZQdHI8QVBJOjpBcnJheT4gSXRlbXNBcnJheTsK
ICAgICBpZiAoIXdlYlBvcHVwSXRlbXMuaXNFbXB0eSgpKQotICAgICAgICBJdGVtc0FycmF5ID0g
QVBJOjpBcnJheTo6Y3JlYXRlKFdURjo6bW92ZSh3ZWJQb3B1cEl0ZW1zKSk7CisgICAgICAgIEl0
ZW1zQXJyYXkgPSBBUEk6OkFycmF5OjpjcmVhdGUoV1RGTW92ZSh3ZWJQb3B1cEl0ZW1zKSk7CiAK
ICAgICBtX2NsaWVudC5zaG93UG9wdXBNZW51KHRvQVBJKHBhZ2VQcm94eSksIHRvQVBJKHN0YXRp
Y19jYXN0PFdlYlBvcHVwTWVudUxpc3RlbmVyRWZsKj4ocG9wdXBNZW51UHJveHkpKSwgdG9BUEko
cmVjdCksIHRvQVBJKHRleHREaXJlY3Rpb24pLCBwYWdlU2NhbGVGYWN0b3IsIHRvQVBJKEl0ZW1z
QXJyYXkuZ2V0KCkpLCBzZWxlY3RlZEluZGV4LCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9JbnB1dE1ldGhvZEZp
bHRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL0lucHV0TWV0aG9kRmlsdGVy
LmNwcAppbmRleCAwMDc0YjM4M2Y0OWU3ZTdkMzYzMzlmNDZiM2Q4ZWNiNGQ5YWQ5YjEyLi5mYzA5
OGFjNjdiZjVhNjA0NTBlMDViODJhMTZhNzBiYzU2YmRlZGJkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL0lucHV0TWV0aG9kRmlsdGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL0lucHV0TWV0aG9kRmlsdGVyLmNwcApAQCAtMTY1LDcgKzE2
NSw3IEBAIHZvaWQgSW5wdXRNZXRob2RGaWx0ZXI6OmZpbHRlcktleUV2ZW50KEdka0V2ZW50S2V5
KiBldmVudCwgRmlsdGVyS2V5RXZlbnRDb21wbGV0CiAjZWxzZQogICAgIEFTU0VSVChtX3BhZ2Up
OwogI2VuZGlmCi0gICAgbV9maWx0ZXJLZXlFdmVudENvbXBsZXRpb25IYW5kbGVyID0gV1RGOjpt
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICBtX2ZpbHRlcktleUV2ZW50Q29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKTsKICAgICBpZiAoIW1fZW5hYmxlZCkg
ewogICAgICAgICBoYW5kbGVLZXlib2FyZEV2ZW50KGV2ZW50KTsKICAgICAgICAgcmV0dXJuOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9LZXlCaW5kaW5nVHJhbnNs
YXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL0tleUJpbmRpbmdUcmFuc2xh
dG9yLmNwcAppbmRleCAzOTkxODI0NmMxNGY0MTRmN2EyMTc1NGVkNDY2Mzk5ZTVlNjdkODA1Li5m
MTc5ZjE2ZjA1ODY4NDVlODAzZGYzN2VjNjkzNTZmMmUyYzlmMTY1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL0tleUJpbmRpbmdUcmFuc2xhdG9yLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL0tleUJpbmRpbmdUcmFuc2xhdG9yLmNwcApAQCAt
MTk2LDcgKzE5Niw3IEBAIFZlY3RvcjxTdHJpbmc+IEtleUJpbmRpbmdUcmFuc2xhdG9yOjpjb21t
YW5kc0ZvcktleUV2ZW50KEdka0V2ZW50S2V5KiBldmVudCkKIAogICAgIGd0a19iaW5kaW5nc19h
Y3RpdmF0ZV9ldmVudChHX09CSkVDVChtX25hdGl2ZVdpZGdldC5nZXQoKSksIGV2ZW50KTsKICAg
ICBpZiAoIW1fcGVuZGluZ0VkaXRvckNvbW1hbmRzLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJu
IFdURjo6bW92ZShtX3BlbmRpbmdFZGl0b3JDb21tYW5kcyk7CisgICAgICAgIHJldHVybiBXVEZN
b3ZlKG1fcGVuZGluZ0VkaXRvckNvbW1hbmRzKTsKIAogICAgIC8vIFNwZWNpYWwtY2FzZSBlbnRl
ciBrZXlzIGZvciB3ZSB3YW50IHRoZW0gdG8gd29yayByZWdhcmRsZXNzIG9mIG1vZGlmaWVyLgog
ICAgIGlmICgoZXZlbnQtPmtleXZhbCA9PSBHREtfS0VZX1JldHVybiB8fCBldmVudC0+a2V5dmFs
ID09IEdES19LRVlfS1BfRW50ZXIgfHwgZXZlbnQtPmtleXZhbCA9PSBHREtfS0VZX0lTT19FbnRl
cikpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1JlZGlyZWN0ZWRY
Q29tcG9zaXRlV2luZG93LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvUmVkaXJl
Y3RlZFhDb21wb3NpdGVXaW5kb3cuY3BwCmluZGV4IDFiNDk2OGRlODI0ZTViYTkyNzhjNzJmNjgx
YTdhNTQ2MWZmM2JkOTguLjYyYWJhYjViMGI4YzczODEwMzM0NGZhOWRiZjlmNmJiZWYzNjJkYTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvUmVkaXJlY3RlZFhDb21w
b3NpdGVXaW5kb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvUmVkaXJl
Y3RlZFhDb21wb3NpdGVXaW5kb3cuY3BwCkBAIC01OSw3ICs1OSw3IEBAIHB1YmxpYzoKICAgICB7
CiAgICAgICAgIGlmIChtX25vdGlmeUZ1bmN0aW9ucy5pc0VtcHR5KCkpCiAgICAgICAgICAgICBn
ZGtfd2luZG93X2FkZF9maWx0ZXIobnVsbHB0ciwgcmVpbnRlcnByZXRfY2FzdDxHZGtGaWx0ZXJG
dW5jPigmZmlsdGVyWERhbWFnZUV2ZW50KSwgdGhpcyk7Ci0gICAgICAgIG1fbm90aWZ5RnVuY3Rp
b25zLmFkZCh3aW5kb3csIFdURjo6bW92ZShub3RpZnlGdW5jdGlvbikpOworICAgICAgICBtX25v
dGlmeUZ1bmN0aW9ucy5hZGQod2luZG93LCBXVEZNb3ZlKG5vdGlmeUZ1bmN0aW9uKSk7CiAgICAg
fQogCiAgICAgdm9pZCByZW1vdmUoV2luZG93IHdpbmRvdykKQEAgLTE4Myw3ICsxODMsNyBAQCBS
ZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdzo6UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3coR2Rr
V2luZG93KiBwYXJlbnRXaW5kb3csCiAgICAgICAgICZ3aW5kb3dBdHRyaWJ1dGVzKTsKICAgICBY
TWFwV2luZG93KG1fZGlzcGxheSwgbV93aW5kb3cuZ2V0KCkpOwogCi0gICAgeERhbWFnZU5vdGlm
aWVyKCkuYWRkKG1fd2luZG93LmdldCgpLCBXVEY6Om1vdmUoZGFtYWdlTm90aWZ5KSk7CisgICAg
eERhbWFnZU5vdGlmaWVyKCkuYWRkKG1fd2luZG93LmdldCgpLCBXVEZNb3ZlKGRhbWFnZU5vdGlm
eSkpOwogCiAgICAgd2hpbGUgKDEpIHsKICAgICAgICAgWEV2ZW50IGV2ZW50OwpAQCAtMjc2LDcg
KzI3Niw3IEBAIGNhaXJvX3N1cmZhY2VfdCogUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c6OnN1
cmZhY2UoKQogICAgIH0KIAogICAgIGNsZWFudXBQaXhtYXBBbmRQaXhtYXBTdXJmYWNlKCk7Ci0g
ICAgbV9waXhtYXAgPSBXVEY6Om1vdmUobmV3UGl4bWFwKTsKKyAgICBtX3BpeG1hcCA9IFdURk1v
dmUobmV3UGl4bWFwKTsKICAgICBtX3N1cmZhY2UgPSBuZXdTdXJmYWNlOwogICAgIHJldHVybiBt
X3N1cmZhY2UuZ2V0KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
aW9zL1dLQWN0aW9uU2hlZXRBc3Npc3RhbnQubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
aW9zL1dLQWN0aW9uU2hlZXRBc3Npc3RhbnQubW0KaW5kZXggMDk1YzAyOTZhMDI3MDdiNDJiNWVi
YzkzZGYxM2E2OWEzMTMwYWEyMS4uNjZhMjE3ODhiZjFlOWEwYmY2Y2Y3OTU1ZmRkYzg1OWI2Zjdi
ZmVkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0FjdGlvblNo
ZWV0QXNzaXN0YW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tBY3Rp
b25TaGVldEFzc2lzdGFudC5tbQpAQCAtMjc5LDcgKzI3OSw3IEBAIC0gKHZvaWQpc2hvd0ltYWdl
U2hlZXQKICAgICBhdXRvIGVsZW1lbnRJbmZvID0gYWRvcHROUyhbW19XS0FjdGl2YXRlZEVsZW1l
bnRJbmZvIGFsbG9jXSBfaW5pdFdpdGhUeXBlOl9XS0FjdGl2YXRlZEVsZW1lbnRUeXBlSW1hZ2Ug
VVJMOnRhcmdldFVSTCBsb2NhdGlvbjpwb3NpdGlvbkluZm9ybWF0aW9uLnBvaW50IHRpdGxlOnBv
c2l0aW9uSW5mb3JtYXRpb24udGl0bGUgcmVjdDpwb3NpdGlvbkluZm9ybWF0aW9uLmJvdW5kcyBp
bWFnZTpwb3NpdGlvbkluZm9ybWF0aW9uLmltYWdlLmdldCgpXSk7CiAgICAgYXV0byBkZWZhdWx0
QWN0aW9ucyA9IFtzZWxmIGRlZmF1bHRBY3Rpb25zRm9ySW1hZ2VTaGVldDplbGVtZW50SW5mby5n
ZXQoKV07CiAKLSAgICBSZXRhaW5QdHI8TlNBcnJheT4gYWN0aW9ucyA9IFtkZWxlZ2F0ZSBhY3Rp
b25TaGVldEFzc2lzdGFudDpzZWxmIGRlY2lkZUFjdGlvbnNGb3JFbGVtZW50OmVsZW1lbnRJbmZv
LmdldCgpIGRlZmF1bHRBY3Rpb25zOldURjo6bW92ZShkZWZhdWx0QWN0aW9ucyldOworICAgIFJl
dGFpblB0cjxOU0FycmF5PiBhY3Rpb25zID0gW2RlbGVnYXRlIGFjdGlvblNoZWV0QXNzaXN0YW50
OnNlbGYgZGVjaWRlQWN0aW9uc0ZvckVsZW1lbnQ6ZWxlbWVudEluZm8uZ2V0KCkgZGVmYXVsdEFj
dGlvbnM6V1RGTW92ZShkZWZhdWx0QWN0aW9ucyldOwogCiAgICAgaWYgKCFbYWN0aW9ucyBjb3Vu
dF0pCiAgICAgICAgIHJldHVybjsKQEAgLTI4OCw3ICsyODgsNyBAQCAtICh2b2lkKXNob3dJbWFn
ZVNoZWV0CiAgICAgaWYgKCFfaW50ZXJhY3Rpb25TaGVldCkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgX2VsZW1lbnRJbmZvID0gV1RGOjptb3ZlKGVsZW1lbnRJbmZvKTsKKyAgICBfZWxlbWVudElu
Zm8gPSBXVEZNb3ZlKGVsZW1lbnRJbmZvKTsKIAogICAgIGlmICghW19pbnRlcmFjdGlvblNoZWV0
IHByZXNlbnRTaGVldF0pCiAgICAgICAgIFtzZWxmIGNsZWFudXBTaGVldF07CkBAIC0zOTMsNyAr
MzkzLDcgQEAgLSAodm9pZClzaG93TGlua1NoZWV0CiAgICAgYXV0byBlbGVtZW50SW5mbyA9IGFk
b3B0TlMoW1tfV0tBY3RpdmF0ZWRFbGVtZW50SW5mbyBhbGxvY10gX2luaXRXaXRoVHlwZTpfV0tB
Y3RpdmF0ZWRFbGVtZW50VHlwZUxpbmsgVVJMOnRhcmdldFVSTCBsb2NhdGlvbjpwb3NpdGlvbklu
Zm9ybWF0aW9uLnBvaW50IHRpdGxlOnBvc2l0aW9uSW5mb3JtYXRpb24udGl0bGUgcmVjdDpwb3Np
dGlvbkluZm9ybWF0aW9uLmJvdW5kcyBpbWFnZTpwb3NpdGlvbkluZm9ybWF0aW9uLmltYWdlLmdl
dCgpXSk7CiAgICAgYXV0byBkZWZhdWx0QWN0aW9ucyA9IFtzZWxmIGRlZmF1bHRBY3Rpb25zRm9y
TGlua1NoZWV0OmVsZW1lbnRJbmZvLmdldCgpXTsKIAotICAgIFJldGFpblB0cjxOU0FycmF5PiBh
Y3Rpb25zID0gW2RlbGVnYXRlIGFjdGlvblNoZWV0QXNzaXN0YW50OnNlbGYgZGVjaWRlQWN0aW9u
c0ZvckVsZW1lbnQ6ZWxlbWVudEluZm8uZ2V0KCkgZGVmYXVsdEFjdGlvbnM6V1RGOjptb3ZlKGRl
ZmF1bHRBY3Rpb25zKV07CisgICAgUmV0YWluUHRyPE5TQXJyYXk+IGFjdGlvbnMgPSBbZGVsZWdh
dGUgYWN0aW9uU2hlZXRBc3Npc3RhbnQ6c2VsZiBkZWNpZGVBY3Rpb25zRm9yRWxlbWVudDplbGVt
ZW50SW5mby5nZXQoKSBkZWZhdWx0QWN0aW9uczpXVEZNb3ZlKGRlZmF1bHRBY3Rpb25zKV07CiAK
ICAgICBpZiAoIVthY3Rpb25zIGNvdW50XSkKICAgICAgICAgcmV0dXJuOwpAQCAtNDAyLDcgKzQw
Miw3IEBAIC0gKHZvaWQpc2hvd0xpbmtTaGVldAogICAgIGlmICghX2ludGVyYWN0aW9uU2hlZXQp
CiAgICAgICAgIHJldHVybjsKIAotICAgIF9lbGVtZW50SW5mbyA9IFdURjo6bW92ZShlbGVtZW50
SW5mbyk7CisgICAgX2VsZW1lbnRJbmZvID0gV1RGTW92ZShlbGVtZW50SW5mbyk7CiAKICAgICBp
ZiAoIVtfaW50ZXJhY3Rpb25TaGVldCBwcmVzZW50U2hlZXRdKQogICAgICAgICBbc2VsZiBjbGVh
bnVwU2hlZXRdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0Nv
bnRlbnRWaWV3Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3
Lm1tCmluZGV4IGFjZDZlZjA5NmQ1NjI3MjE1MjRjODRhOTdmM2U1ZTNiZDBiODY0ZmYuLjJjYTJl
NDBkMTk5NDU2ZTFkMzQzOTJlYTNmZWJmMGZiMTE1NjE1NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW0KQEAgLTE4Nyw3ICsxODcsNyBAQCAtIChp
bnN0YW5jZXR5cGUpX2NvbW1vbkluaXRpYWxpemF0aW9uV2l0aFByb2Nlc3NQb29sOihXZWJLaXQ6
OldlYlByb2Nlc3NQb29sJilwcgogewogICAgIEFTU0VSVChfcGFnZUNsaWVudCk7CiAKLSAgICBf
cGFnZSA9IHByb2Nlc3NQb29sLmNyZWF0ZVdlYlBhZ2UoKl9wYWdlQ2xpZW50LCBXVEY6Om1vdmUo
Y29uZmlndXJhdGlvbikpOworICAgIF9wYWdlID0gcHJvY2Vzc1Bvb2wuY3JlYXRlV2ViUGFnZSgq
X3BhZ2VDbGllbnQsIFdURk1vdmUoY29uZmlndXJhdGlvbikpOwogICAgIF9wYWdlLT5pbml0aWFs
aXplV2ViUGFnZSgpOwogICAgIF9wYWdlLT5zZXRJbnRyaW5zaWNEZXZpY2VTY2FsZUZhY3Rvcihz
Y3JlZW5TY2FsZUZhY3RvcihbVUlTY3JlZW4gbWFpblNjcmVlbl0pKTsKICAgICBfcGFnZS0+c2V0
VXNlRml4ZWRMYXlvdXQodHJ1ZSk7CkBAIC0yMzAsNyArMjMwLDcgQEAgLSAoaW5zdGFuY2V0eXBl
KWluaXRXaXRoRnJhbWU6KENHUmVjdClmcmFtZSBwcm9jZXNzUG9vbDooV2ViS2l0OjpXZWJQcm9j
ZXNzUG9vbCYKICAgICBfcGFnZUNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8UGFnZUNsaWVudElt
cGw+KHNlbGYsIHdlYlZpZXcpOwogICAgIF93ZWJWaWV3ID0gd2ViVmlldzsKIAotICAgIHJldHVy
biBbc2VsZiBfY29tbW9uSW5pdGlhbGl6YXRpb25XaXRoUHJvY2Vzc1Bvb2w6cHJvY2Vzc1Bvb2wg
Y29uZmlndXJhdGlvbjpXVEY6Om1vdmUoY29uZmlndXJhdGlvbildOworICAgIHJldHVybiBbc2Vs
ZiBfY29tbW9uSW5pdGlhbGl6YXRpb25XaXRoUHJvY2Vzc1Bvb2w6cHJvY2Vzc1Bvb2wgY29uZmln
dXJhdGlvbjpXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pXTsKIH0KIAogLSAodm9pZClkZWFsbG9jCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRl
cmFjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0lu
dGVyYWN0aW9uLm1tCmluZGV4IGEwMjMyMGQ5YjA5Y2YzZjM4ZDAzZjlhOTc3YjgxYmUwOGI5NmUw
MjQuLjc1YjM2M2U3MThhZTRlMzk0ZDdhNmI3YmU4MTBiZDYyZDUwODcwOTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0
aW9uLm1tCkBAIC0zNDU1LDcgKzM0NTUsNyBAQCAtIChCT09MKWFjdGlvblNoZWV0QXNzaXN0YW50
OihXS0FjdGlvblNoZWV0QXNzaXN0YW50ICopYXNzaXN0YW50IHNob3VsZEluY2x1ZGVBcAogCiAt
IChSZXRhaW5QdHI8TlNBcnJheT4pYWN0aW9uU2hlZXRBc3Npc3RhbnQ6KFdLQWN0aW9uU2hlZXRB
c3Npc3RhbnQgKilhc3Npc3RhbnQgZGVjaWRlQWN0aW9uc0ZvckVsZW1lbnQ6KF9XS0FjdGl2YXRl
ZEVsZW1lbnRJbmZvICopZWxlbWVudCBkZWZhdWx0QWN0aW9uczooUmV0YWluUHRyPE5TQXJyYXk+
KWRlZmF1bHRBY3Rpb25zCiB7Ci0gICAgcmV0dXJuIF9wYWdlLT51aUNsaWVudCgpLmFjdGlvbnNG
b3JFbGVtZW50KGVsZW1lbnQsIFdURjo6bW92ZShkZWZhdWx0QWN0aW9ucykpOworICAgIHJldHVy
biBfcGFnZS0+dWlDbGllbnQoKS5hY3Rpb25zRm9yRWxlbWVudChlbGVtZW50LCBXVEZNb3ZlKGRl
ZmF1bHRBY3Rpb25zKSk7CiB9CiAKIC0gKHZvaWQpYWN0aW9uU2hlZXRBc3Npc3RhbnQ6KFdLQWN0
aW9uU2hlZXRBc3Npc3RhbnQgKilhc3Npc3RhbnQgd2lsbFN0YXJ0SW50ZXJhY3Rpb25XaXRoRWxl
bWVudDooX1dLQWN0aXZhdGVkRWxlbWVudEluZm8gKillbGVtZW50CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLR2VvbG9jYXRpb25Qcm92aWRlcklPUy5tbSBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TLm1tCmlu
ZGV4IDNlMThmMWYzMDkyNWU2ZTM0MTAyNTI5OTlkMjFmNGE0MzcyMjBlNGIuLjI0NzgxMDQ0ODE2
NWY0YjM4Nzk4NjRmM2Y1MjA0MmNiMmJkZmU1YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9pb3MvV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TLm1tCkBAIC0xNzIs
NyArMTcyLDcgQEAgQGltcGxlbWVudGF0aW9uIFdLR2VvbG9jYXRpb25Qcm92aWRlcklPUyAoV2Vi
R2VvbG9jYXRpb25Db3JlTG9jYXRpb25VcGRhdGVMaXN0ZW4KIC0gKHZvaWQpZ2VvbG9jYXRpb25B
dXRob3JpemF0aW9uR3JhbnRlZAogewogICAgIC8vIFN0ZXAgMjogYXNrIHRoZSB1c2VyIGlmIHRo
ZSB0aGlzIHBhcnRpY3VsYXIgcGFnZSBjYW4gdXNlIGdlbG9jYXRpb24uCi0gICAgVmVjdG9yPEdl
b2xvY2F0aW9uUmVxdWVzdERhdGE+IHJlcXVlc3RzID0gV1RGOjptb3ZlKF9yZXF1ZXN0c1dhaXRp
bmdGb3JDb3JlTG9jYXRpb25BdXRob3JpemF0aW9uKTsKKyAgICBWZWN0b3I8R2VvbG9jYXRpb25S
ZXF1ZXN0RGF0YT4gcmVxdWVzdHMgPSBXVEZNb3ZlKF9yZXF1ZXN0c1dhaXRpbmdGb3JDb3JlTG9j
YXRpb25BdXRob3JpemF0aW9uKTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIHJlcXVlc3QgOiByZXF1
ZXN0cykgewogICAgICAgICBib29sIHJlcXVpcmVzVXNlckF1dGhvcml6YXRpb24gPSB0cnVlOwog
CkBAIC0xOTgsNyArMTk4LDcgQEAgLSAodm9pZClnZW9sb2NhdGlvbkF1dGhvcml6YXRpb25HcmFu
dGVkCiAKIC0gKHZvaWQpZ2VvbG9jYXRpb25BdXRob3JpemF0aW9uRGVuaWVkCiB7Ci0gICAgVmVj
dG9yPEdlb2xvY2F0aW9uUmVxdWVzdERhdGE+IHJlcXVlc3RzID0gV1RGOjptb3ZlKF9yZXF1ZXN0
c1dhaXRpbmdGb3JDb3JlTG9jYXRpb25BdXRob3JpemF0aW9uKTsKKyAgICBWZWN0b3I8R2VvbG9j
YXRpb25SZXF1ZXN0RGF0YT4gcmVxdWVzdHMgPSBXVEZNb3ZlKF9yZXF1ZXN0c1dhaXRpbmdGb3JD
b3JlTG9jYXRpb25BdXRob3JpemF0aW9uKTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIHJlcXVlc3RE
YXRhIDogcmVxdWVzdHMpCiAgICAgICAgIHJlcXVlc3REYXRhLnBlcm1pc3Npb25SZXF1ZXN0LT5k
ZW55KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLUERG
Vmlldy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tQREZWaWV3Lm1tCmluZGV4
IGI2N2VhZDM1ZGMwZjRkMDViNzM3MzQ5ODY1MTc3ZThiZWUwNWQ5NWYuLmNjZGNhNTMzMDQ4YjE0
Y2UxM2ZjYTdhNDVlNTUxZWJiZGYxNzE1Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9pb3MvV0tQREZWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9p
b3MvV0tQREZWaWV3Lm1tCkBAIC03MzYsNyArNzM2LDcgQEAgLSAoQk9PTClhY3Rpb25TaGVldEFz
c2lzdGFudDooV0tBY3Rpb25TaGVldEFzc2lzdGFudCAqKWFzc2lzdGFudCBzaG91bGRJbmNsdWRl
QXAKIAogLSAoUmV0YWluUHRyPE5TQXJyYXk+KWFjdGlvblNoZWV0QXNzaXN0YW50OihXS0FjdGlv
blNoZWV0QXNzaXN0YW50ICopYXNzaXN0YW50IGRlY2lkZUFjdGlvbnNGb3JFbGVtZW50OihfV0tB
Y3RpdmF0ZWRFbGVtZW50SW5mbyAqKWVsZW1lbnQgZGVmYXVsdEFjdGlvbnM6KFJldGFpblB0cjxO
U0FycmF5PilkZWZhdWx0QWN0aW9ucwogewotICAgIHJldHVybiBfd2ViVmlldy0+X3BhZ2UtPnVp
Q2xpZW50KCkuYWN0aW9uc0ZvckVsZW1lbnQoZWxlbWVudCwgV1RGOjptb3ZlKGRlZmF1bHRBY3Rp
b25zKSk7CisgICAgcmV0dXJuIF93ZWJWaWV3LT5fcGFnZS0+dWlDbGllbnQoKS5hY3Rpb25zRm9y
RWxlbWVudChlbGVtZW50LCBXVEZNb3ZlKGRlZmF1bHRBY3Rpb25zKSk7CiB9CiAKICNwcmFnbWEg
bWFyayBQYXNzd29yZCBwcm90ZWN0aW9uIFVJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCmluZGV4IGM0Mzk1NGI3MWU0ZjY0NDQxZDhhOGY5NWJl
OTgxZDIyNGNiZjliMzguLjEzNTQxZTdiOTA5NGE3ZjA4NzEwYzU4OWZjZDkzOWU3N2E2M2U2OTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9T
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1t
CkBAIC0zNzMsNyArMzczLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNlbGVjdFdpdGhHZXN0dXJl
KGNvbnN0IFdlYkNvcmU6OkludFBvaW50IHBvaW50LCBXZWJDb3JlOjpUZXgKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQo
V1RGOjptb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tn
cm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxi
YWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIo
KS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlNlbGVjdFdpdGhHZXN0dXJlKHBvaW50LCAodWludDMyX3QpZ3JhbnVsYXJp
dHksIGdlc3R1cmVUeXBlLCBnZXN0dXJlU3RhdGUsIGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWRO
b2RlLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQogCkBAIC0zODQsNyArMzg0LDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OnVwZGF0ZVNlbGVjdGlvbldpdGhUb3VjaGVzKGNvbnN0IFdlYkNvcmU6
OkludFBvaW50IHBvaW50LCB1aW4KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHVpbnQ2
NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGOjptb3ZlKGNhbGxiYWNrRnVuY3Rp
b24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwor
ICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFj
a0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tl
bigpKTsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVwZGF0ZVNlbGVj
dGlvbldpdGhUb3VjaGVzKHBvaW50LCB0b3VjaGVzLCBiYXNlSXNTdGFydCwgY2FsbGJhY2tJRCks
IG1fcGFnZUlEKTsKIH0KICAgICAKQEAgLTQwNSw3ICs0MDUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6cmVxdWVzdEF1dG9jb3JyZWN0aW9uRGF0YShjb25zdCBTdHJpbmcmIHRleHRGb3JBdXRvY29y
cmVjdGlvbgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgdWludDY0X3QgY2FsbGJhY2tJ
RCA9IG1fY2FsbGJhY2tzLnB1dChXVEY6Om1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vz
cy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgdWludDY0X3Qg
Y2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBt
X3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVxdWVzdEF1dG9jb3JyZWN0aW9uRGF0
YSh0ZXh0Rm9yQXV0b2NvcnJlY3Rpb24sIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CiB9CiAKQEAg
LTQxNiw3ICs0MTYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6YXBwbHlBdXRvY29ycmVjdGlvbihj
b25zdCBTdHJpbmcmIGNvcnJlY3Rpb24sIGNvbnN0IFN0cmluZyYgbwogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEY6
Om1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3Vu
ZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tz
LnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJh
Y2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6QXBwbHlBdXRvY29ycmVjdGlvbihjb3JyZWN0aW9uLCBvcmlnaW5hbFRleHQsIGNh
bGxiYWNrSUQpLCBtX3BhZ2VJRCk7CiB9CiAKQEAgLTQyNyw3ICs0MjcsNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6ZXhlY3V0ZUVkaXRDb21tYW5kKGNvbnN0IFN0cmluZyYgY29tbWFuZE5hbWUsIHN0
ZDo6ZnVuY3Rpb248dgogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIHVpbnQ2NF90
IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGOjptb3ZlKGNhbGxiYWNrRnVuY3Rpb24p
LCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAg
IHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1
bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigp
KTsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkV4ZWN1dGVFZGl0Q29t
bWFuZFdpdGhDYWxsYmFjayhjb21tYW5kTmFtZSwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKIH0K
IApAQCAtNDQ1LDcgKzQ0NSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZWxlY3RUZXh0V2l0aEdy
YW51bGFyaXR5QXRQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCBwb2luCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAgICAgCi0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tz
LnB1dChXVEY6Om1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCku
YmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1f
Y2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90
dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6U2VsZWN0VGV4dFdpdGhHcmFudWxhcml0eUF0UG9pbnQocG9pbnQs
IHN0YXRpY19jYXN0PHVpbnQzMl90PihncmFudWxhcml0eSksIGlzSW50ZXJhY3RpbmdXaXRoQXNz
aXN0ZWROb2RlLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwogfQogCkBAIC00NTYsNyArNDU2LDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OnNlbGVjdFBvc2l0aW9uQXRCb3VuZGFyeVdpdGhEaXJlY3Rp
b24oY29uc3QgV2ViQ29yZTo6SW50UG9pbnQKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAK
LSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURjo6bW92ZShjYWxs
YmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlU
b2tlbigpKTsKKyAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1v
dmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFj
dGl2aXR5VG9rZW4oKSk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpT
ZWxlY3RQb3NpdGlvbkF0Qm91bmRhcnlXaXRoRGlyZWN0aW9uKHBvaW50LCBzdGF0aWNfY2FzdDx1
aW50MzJfdD4oZ3JhbnVsYXJpdHkpLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oZGlyZWN0aW9uKSwg
aXNJbnRlcmFjdGluZ1dpdGhBc3Npc3RlZE5vZGUsIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CiB9
CiAKQEAgLTQ2Nyw3ICs0NjcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bW92ZVNlbGVjdGlvbkF0
Qm91bmRhcnlXaXRoRGlyZWN0aW9uKFdlYkNvcmU6OlRleHRHcmFudWxhcml0eQogICAgICAgICBy
ZXR1cm47CiAgICAgfQogICAgIAotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNr
cy5wdXQoV1RGOjptb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigp
LmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBt
X2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJv
dHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAgICBtX3Byb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6Ok1vdmVTZWxlY3Rpb25BdEJvdW5kYXJ5V2l0aERpcmVjdGlvbihz
dGF0aWNfY2FzdDx1aW50MzJfdD4oZ3JhbnVsYXJpdHkpLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4o
ZGlyZWN0aW9uKSwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKIH0KICAgICAKQEAgLTQ3OCw3ICs0
NzgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2VsZWN0UG9zaXRpb25BdFBvaW50KGNvbnN0IFdl
YkNvcmU6OkludFBvaW50IHBvaW50LCBib29sIGlzSQogICAgICAgICByZXR1cm47CiAgICAgfQog
ICAgIAotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGOjptb3Zl
KGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rp
dml0eVRva2VuKCkpOworICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQo
V1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3Jv
dW5kQWN0aXZpdHlUb2tlbigpKTsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OlNlbGVjdFBvc2l0aW9uQXRQb2ludChwb2ludCwgaXNJbnRlcmFjdGluZ1dpdGhBc3Npc3Rl
ZE5vZGUsIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CiB9CiAKQEAgLTQ4OSw3ICs0ODksNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6YmVnaW5TZWxlY3Rpb25JbkRpcmVjdGlvbihXZWJDb3JlOjpTZWxl
Y3Rpb25EaXJlY3Rpb24gZGlyZWN0aQogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAg
IHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGOjptb3ZlKGNhbGxiYWNr
RnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2Vu
KCkpOworICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShj
YWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZp
dHlUb2tlbigpKTsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkJlZ2lu
U2VsZWN0aW9uSW5EaXJlY3Rpb24oZGlyZWN0aW9uLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwog
fQogCkBAIC01MDAsNyArNTAwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnVwZGF0ZVNlbGVjdGlv
bldpdGhFeHRlbnRQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwKICAgICAgICAg
cmV0dXJuOwogICAgIH0KICAgICAKLSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFj
a3MucHV0KFdURjo6bW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIo
KS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICB1aW50NjRfdCBjYWxsYmFja0lEID0g
bV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhy
b3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgbV9wcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpVcGRhdGVTZWxlY3Rpb25XaXRoRXh0ZW50UG9pbnQocG9pbnQs
IGlzSW50ZXJhY3RpbmdXaXRoQXNzaXN0ZWROb2RlLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwog
ICAgIAogfQpAQCAtNTEyLDcgKzUxMiw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVTZWxl
Y3Rpb25XaXRoRXh0ZW50UG9pbnRBbmRCb3VuZGFyeShjb25zdCBXZWJDb3JlOjpJbnRQCiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2Fs
bGJhY2tzLnB1dChXVEY6Om1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0
bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgdWludDY0X3QgY2FsbGJhY2tJ
RCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3Mt
PnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1fcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VXBkYXRlU2VsZWN0aW9uV2l0aEV4dGVudFBvaW50QW5k
Qm91bmRhcnkocG9pbnQsIGdyYW51bGFyaXR5LCBpc0ludGVyYWN0aW5nV2l0aEFzc2lzdGVkTm9k
ZSwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKICAgICAKIH0KQEAgLTUyNCw3ICs1MjQsNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdERpY3RhdGlvbkNvbnRleHQoc3RkOjpmdW5jdGlvbjx2
b2lkIChjb25zdCBTdHJpbmcmLCBjbwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgdWlu
dDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEY6Om1vdmUoY2FsbGJhY2tGdW5j
dGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7
CisgICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxi
YWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRv
a2VuKCkpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVxdWVzdERp
Y3RhdGlvbkNvbnRleHQoY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKIH0KIApAQCAtNTM1LDcgKzUz
NSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0QXV0b2NvcnJlY3Rpb25Db250ZXh0KHN0
ZDo6ZnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nCiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURjo6bW92ZShjYWxs
YmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlU
b2tlbigpKTsKKyAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1v
dmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFj
dGl2aXR5VG9rZW4oKSk7CiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpS
ZXF1ZXN0QXV0b2NvcnJlY3Rpb25Db250ZXh0KGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CiB9CiAK
QEAgLTU1MSw3ICs1NTEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0TG9va3VwQ29udGV4dEF0
UG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50LCBzdGQ6OgogICAgICAgICByZXR1
cm47CiAgICAgfQogICAgIAotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5w
dXQoV1RGOjptb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJh
Y2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBtX2Nh
bGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRs
ZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OkdldExvb2t1cENvbnRleHRBdFBvaW50KHBvaW50LCBjYWxsYmFja0lE
KSwgbV9wYWdlSUQpOwogfQogCkBAIC01NjIsNyArNTYyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OnNlbGVjdFdpdGhUd29Ub3VjaGVzKGNvbnN0IFdlYkNvcmU6OkludFBvaW50IGZyb20sIGNvbnN0
IFdlYkMKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQg
PSBtX2NhbGxiYWNrcy5wdXQoV1RGOjptb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3Mt
PnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIHVpbnQ2NF90IGNh
bGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9w
cm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNlbGVjdFdpdGhUd29Ub3VjaGVzKGZyb20s
IHRvLCBnZXN0dXJlVHlwZSwgZ2VzdHVyZVN0YXRlLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwog
fQogCkBAIC02NTQsNyArNjU0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6Om1vdmVTZWxlY3Rpb25C
eU9mZnNldChpbnQzMl90IG9mZnNldCwgc3RkOjpmdW5jdGlvbjx2b2lkIChDYWwKICAgICAgICAg
cmV0dXJuOwogICAgIH0KICAgICAKLSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFj
a3MucHV0KFdURjo6bW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIo
KS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICB1aW50NjRfdCBjYWxsYmFja0lEID0g
bV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhy
b3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgbV9wcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpNb3ZlU2VsZWN0aW9uQnlPZmZzZXQob2Zmc2V0LCBjYWxsYmFj
a0lEKSwgbV9wYWdlSUQpOwogfQogCkBAIC04NzAsNyArODcwLDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OmZvY3VzTmV4dEFzc2lzdGVkTm9kZShib29sIGlzRm9yd2FyZCwgc3RkOjpmdW5jdGlvbjx2
b2lkIChDYWwKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICB1aW50NjRfdCBjYWxs
YmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURjo6bW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9w
cm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICB1aW50
NjRfdCBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlv
biksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAg
ICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkZvY3VzTmV4dEFzc2lzdGVkTm9k
ZShpc0ZvcndhcmQsIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5
LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXJQcm94eS5oCmluZGV4IDU1NjM2YzMyMzU5ZDhmMDJhNzdiMjllNTBhNDI3MWJlY2Y5ZDBhYTYu
LmE3YmQ4NmMzYjdmZWZlNGYwY2ZhNjFlZGFhZDRjNWRlNDY3NTkyYWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyUHJveHkuaApAQCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBpbnZhbGlk
YXRlKCkgeyBtX21hbmFnZXIgPSBudWxscHRyOyB9CiAKICAgICBVSVZpZXcgKmxheWVySG9zdFZp
ZXcoKSBjb25zdCB7IHJldHVybiBtX2xheWVySG9zdFZpZXcuZ2V0KCk7IH0KLSAgICB2b2lkIHNl
dExheWVySG9zdFZpZXcoUmV0YWluUHRyPFVJVmlldz4mJiBsYXllckhvc3RWaWV3KSB7IG1fbGF5
ZXJIb3N0VmlldyA9IFdURjo6bW92ZShsYXllckhvc3RWaWV3KTsgfQorICAgIHZvaWQgc2V0TGF5
ZXJIb3N0VmlldyhSZXRhaW5QdHI8VUlWaWV3PiYmIGxheWVySG9zdFZpZXcpIHsgbV9sYXllckhv
c3RWaWV3ID0gV1RGTW92ZShsYXllckhvc3RWaWV3KTsgfQogCiBwcml2YXRlOgogICAgIFdlYlZp
ZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dChXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkm
IG1hbmFnZXIsIHVpbnQ2NF90IGNvbnRleHRJZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubW0K
aW5kZXggMmMyN2MwNDkyMDQ5NzVkOTEzNDhhODNlYWIwZWVlYTMyNzAzMWZlNS4uNGY3MTY0MDdl
NzRiMGRjMjI3MTQwZjFmZWQ3Y2UwMjFmMmU2ZmRhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubW0KKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJv
eHkubW0KQEAgLTMwOCw3ICszMDgsNyBAQCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6
Ok1vZGVsSW50ZXJmYWNlVHVwbGUgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclBybwogICAgIGlu
dGVyZmFjZS0+c2V0V2ViVmlkZW9GdWxsc2NyZWVuTW9kZWwoJm1vZGVsLmdldCgpKTsKICAgICBp
bnRlcmZhY2UtPnNldFdlYlZpZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyKCZtb2RlbC5nZXQo
KSk7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3R1cGxlKFdURjo6bW92ZShtb2RlbCksIFdURjo6
bW92ZShpbnRlcmZhY2UpKTsKKyAgICByZXR1cm4gc3RkOjptYWtlX3R1cGxlKFdURk1vdmUobW9k
ZWwpLCBXVEZNb3ZlKGludGVyZmFjZSkpOwogfQogCiBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
UHJveHk6Ok1vZGVsSW50ZXJmYWNlVHVwbGUmIFdlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94
eTo6ZW5zdXJlTW9kZWxBbmRJbnRlcmZhY2UodWludDY0X3QgY29udGV4dElkKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0ZpbGVVcGxvYWRQYW5lbC5t
bSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGaWxlVXBsb2FkUGFuZWwu
bW0KaW5kZXggYTZiNjQ1MWZkMzllNDdhMWQwNjJlNzUxYTZhYWE3MzI0NTM3OTVlYi4uZjgwZGUw
MjE1NTExNGM4MDdjOGYzNmRiN2U0MDEzZTZlZWQxYmY2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0ZpbGVVcGxvYWRQYW5lbC5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRmlsZVVwbG9hZFBhbmVsLm1tCkBAIC0z
NDcsNyArMzQ3LDcgQEAgLSAodm9pZClfY2hvb3NlRmlsZXM6KE5TQXJyYXkgKilmaWxlVVJMcyBk
aXNwbGF5U3RyaW5nOihOU1N0cmluZyAqKWRpc3BsYXlTdHJpbmcKICAgICB1cmxzLnJlc2VydmVJ
bml0aWFsQ2FwYWNpdHkoY291bnQpOwogICAgIGZvciAoTlNVUkwgKmZpbGVVUkwgaW4gZmlsZVVS
THMpCiAgICAgICAgIHVybHMudW5jaGVja2VkQXBwZW5kKGFkb3B0UmVmKHRvSW1wbChXS1VSTENy
ZWF0ZVdpdGhDRlVSTCgoQ0ZVUkxSZWYpZmlsZVVSTCkpKSk7Ci0gICAgUmVmPEFQSTo6QXJyYXk+
IGZpbGVVUkxzUmVmID0gQVBJOjpBcnJheTo6Y3JlYXRlKFdURjo6bW92ZSh1cmxzKSk7CisgICAg
UmVmPEFQSTo6QXJyYXk+IGZpbGVVUkxzUmVmID0gQVBJOjpBcnJheTo6Y3JlYXRlKFdURk1vdmUo
dXJscykpOwogCiAgICAgTlNEYXRhICpqcGVnID0gVUlJbWFnZUpQRUdSZXByZXNlbnRhdGlvbihp
Y29uSW1hZ2UsIDEuMCk7CiAgICAgUmVmUHRyPEFQSTo6RGF0YT4gaWNvbkltYWdlRGF0YVJlZiA9
IGFkb3B0UmVmKHRvSW1wbChXS0RhdGFDcmVhdGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1bnNp
Z25lZCBjaGFyKj4oW2pwZWcgYnl0ZXNdKSwgW2pwZWcgbGVuZ3RoXSkpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvTGVnYWN5U2Vzc2lvblN0YXRlQ29kaW5nLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvTGVnYWN5U2Vzc2lvblN0YXRlQ29kaW5n
LmNwcAppbmRleCBkY2Q2MzNhMDkxZjI2YWMwMjUxMWM0NzI5NDc1YmJhODAwYTg3NTExLi5iMWRk
MDg3MTE0NGMwMWJiZGNjOWNlZjQxMzQwMjkzYTY5MDljMTdmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvbWFjL0xlZ2FjeVNlc3Npb25TdGF0ZUNvZGluZy5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9MZWdhY3lTZXNzaW9uU3RhdGVDb2RpbmcuY3Bw
CkBAIC0xODYsNyArMTg2LDcgQEAgcHVibGljOgogICAgIE1hbGxvY1B0cjx1aW50OF90PiBmaW5p
c2hFbmNvZGluZyhzaXplX3QmIHNpemUpCiAgICAgewogICAgICAgICBzaXplID0gbV9idWZmZXJT
aXplOwotICAgICAgICByZXR1cm4gV1RGOjptb3ZlKG1fYnVmZmVyKTsKKyAgICAgICAgcmV0dXJu
IFdURk1vdmUobV9idWZmZXIpOwogICAgIH0KIAogcHJpdmF0ZToKQEAgLTgzNyw3ICs4MzcsNyBA
QCBzdGF0aWMgdm9pZCBkZWNvZGVGb3JtRGF0YShIaXN0b3J5RW50cnlEYXRhRGVjb2RlciYgZGVj
b2RlciwgSFRUUEJvZHkmIGZvcm1EYXRhKQogICAgICAgICBpZiAoIWRlY29kZXIuaXNWYWxpZCgp
KQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGZvcm1EYXRhLmVsZW1lbnRzLmFwcGVu
ZChXVEY6Om1vdmUoZm9ybURhdGFFbGVtZW50KSk7CisgICAgICAgIGZvcm1EYXRhLmVsZW1lbnRz
LmFwcGVuZChXVEZNb3ZlKGZvcm1EYXRhRWxlbWVudCkpOwogICAgIH0KIAogICAgIGJvb2wgaGFz
R2VuZXJhdGVkRmlsZXM7CkBAIC04NjIsNyArODYyLDcgQEAgc3RhdGljIHZvaWQgZGVjb2RlQmFj
a0ZvcndhcmRUcmVlTm9kZShIaXN0b3J5RW50cnlEYXRhRGVjb2RlciYgZGVjb2RlciwgRnJhbWVT
dGEKICAgICAgICAgaWYgKCFkZWNvZGVyLmlzVmFsaWQoKSkKICAgICAgICAgICAgIHJldHVybjsK
IAotICAgICAgICBmcmFtZVN0YXRlLmNoaWxkcmVuLmFwcGVuZChXVEY6Om1vdmUoY2hpbGRGcmFt
ZVN0YXRlKSk7CisgICAgICAgIGZyYW1lU3RhdGUuY2hpbGRyZW4uYXBwZW5kKFdURk1vdmUoY2hp
bGRGcmFtZVN0YXRlKSk7CiAgICAgfQogCiAgICAgZGVjb2RlciA+PiBmcmFtZVN0YXRlLmRvY3Vt
ZW50U2VxdWVuY2VOdW1iZXI7CkBAIC04NzcsNyArODc3LDcgQEAgc3RhdGljIHZvaWQgZGVjb2Rl
QmFja0ZvcndhcmRUcmVlTm9kZShIaXN0b3J5RW50cnlEYXRhRGVjb2RlciYgZGVjb2RlciwgRnJh
bWVTdGEKICAgICAgICAgaWYgKCFkZWNvZGVyLmlzVmFsaWQoKSkKICAgICAgICAgICAgIHJldHVy
bjsKIAotICAgICAgICBmcmFtZVN0YXRlLmRvY3VtZW50U3RhdGUuYXBwZW5kKFdURjo6bW92ZShz
dGF0ZSkpOworICAgICAgICBmcmFtZVN0YXRlLmRvY3VtZW50U3RhdGUuYXBwZW5kKFdURk1vdmUo
c3RhdGUpKTsKICAgICB9CiAKICAgICBTdHJpbmcgZm9ybUNvbnRlbnRUeXBlOwpAQCAtODg4LDEx
ICs4ODgsMTEgQEAgc3RhdGljIHZvaWQgZGVjb2RlQmFja0ZvcndhcmRUcmVlTm9kZShIaXN0b3J5
RW50cnlEYXRhRGVjb2RlciYgZGVjb2RlciwgRnJhbWVTdGEKIAogICAgIGlmIChoYXNGb3JtRGF0
YSkgewogICAgICAgICBIVFRQQm9keSBodHRwQm9keTsKLSAgICAgICAgaHR0cEJvZHkuY29udGVu
dFR5cGUgPSBXVEY6Om1vdmUoZm9ybUNvbnRlbnRUeXBlKTsKKyAgICAgICAgaHR0cEJvZHkuY29u
dGVudFR5cGUgPSBXVEZNb3ZlKGZvcm1Db250ZW50VHlwZSk7CiAKICAgICAgICAgZGVjb2RlRm9y
bURhdGEoZGVjb2RlciwgaHR0cEJvZHkpOwogCi0gICAgICAgIGZyYW1lU3RhdGUuaHR0cEJvZHkg
PSBXVEY6Om1vdmUoaHR0cEJvZHkpOworICAgICAgICBmcmFtZVN0YXRlLmh0dHBCb2R5ID0gV1RG
TW92ZShodHRwQm9keSk7CiAgICAgfQogCiAgICAgZGVjb2RlciA+PiBmcmFtZVN0YXRlLml0ZW1T
ZXF1ZW5jZU51bWJlcjsKQEAgLTkxNiw3ICs5MTYsNyBAQCBzdGF0aWMgdm9pZCBkZWNvZGVCYWNr
Rm9yd2FyZFRyZWVOb2RlKEhpc3RvcnlFbnRyeURhdGFEZWNvZGVyJiBkZWNvZGVyLCBGcmFtZVN0
YQogICAgICAgICBWZWN0b3I8dWludDhfdD4gc3RhdGVPYmplY3REYXRhOwogICAgICAgICBkZWNv
ZGVyID4+IHN0YXRlT2JqZWN0RGF0YTsKIAotICAgICAgICBmcmFtZVN0YXRlLnN0YXRlT2JqZWN0
RGF0YSA9IFdURjo6bW92ZShzdGF0ZU9iamVjdERhdGEpOworICAgICAgICBmcmFtZVN0YXRlLnN0
YXRlT2JqZWN0RGF0YSA9IFdURk1vdmUoc3RhdGVPYmplY3REYXRhKTsKICAgICB9CiAKICAgICBk
ZWNvZGVyID4+IGZyYW1lU3RhdGUudGFyZ2V0OwpAQCAtMTAwMCw3ICsxMDAwLDcgQEAgc3RhdGlj
IGJvb2wgZGVjb2RlU2Vzc2lvbkhpc3RvcnlFbnRyaWVzKENGQXJyYXlSZWYgZW50cmllc0FycmF5
LCBWZWN0b3I8QmFja0ZvcncKICAgICAgICAgaWYgKCFkZWNvZGVTZXNzaW9uSGlzdG9yeUVudHJ5
KGVudHJ5RGljdGlvbmFyeSwgZW50cnkpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0g
ICAgICAgIGVudHJpZXMuYXBwZW5kKFdURjo6bW92ZShlbnRyeSkpOworICAgICAgICBlbnRyaWVz
LmFwcGVuZChXVEZNb3ZlKGVudHJ5KSk7CiAgICAgfQogCiAgICAgcmV0dXJuIHRydWU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdp
bmdBcmVhUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1JlbW90ZUxheWVy
VHJlZURyYXdpbmdBcmVhUHJveHkubW0KaW5kZXggMWY3YTU0MjEzZTViN2U0MTZiMGI0ODAzOTY4
NjVjZmRkMjQzYjc2Ny4uODhiN2VmNDUwMTQyMmZhNjVhNWIzYzRkYWNkYjU3MzU4ZDc2MDE2OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9SZW1vdGVMYXllclRyZWVE
cmF3aW5nQXJlYVByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUmVt
b3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5tbQpAQCAtNDE4LDcgKzQxOCw3IEBAIHZvaWQg
UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6ZGlzcGF0Y2hBZnRlckVuc3VyaW5nRHJh
d2luZyhzdGQ6OmZ1bmN0aW9uCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX3dlYlBh
Z2VQcm94eS5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6RHJhd2luZ0FyZWE6OkFkZFRyYW5zYWN0
aW9uQ2FsbGJhY2tJRChtX2NhbGxiYWNrcy5wdXQoV1RGOjptb3ZlKGNhbGxiYWNrRnVuY3Rpb24p
LCBudWxscHRyKSksIG1fd2ViUGFnZVByb3h5LnBhZ2VJRCgpKTsKKyAgICBtX3dlYlBhZ2VQcm94
eS5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6RHJhd2luZ0FyZWE6OkFkZFRyYW5zYWN0aW9uQ2Fs
bGJhY2tJRChtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbnVsbHB0
cikpLCBtX3dlYlBhZ2VQcm94eS5wYWdlSUQoKSk7CiB9CiAKIHZvaWQgUmVtb3RlTGF5ZXJUcmVl
RHJhd2luZ0FyZWFQcm94eTo6aGlkZUNvbnRlbnRVbnRpbFBlbmRpbmdVcGRhdGUoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIu
aCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVmlld0dlc3R1cmVDb250cm9sbGVyLmgK
aW5kZXggNzg2ZWI2NjY5MmQyOWE1NTUyYmIwYWM1ODIyOTBhOWU3MDdkYzc4OC4uMzI5NjNkMWU0
N2E5ZTA4MTNmYjhjMDM5ZmFiZTRiMTQwZTM0OTdlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvbWFjL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5oCkBAIC0xMDIsNyArMTAy
LDcgQEAgcHVibGljOgogICAgIHZvaWQgd2hlZWxFdmVudFdhc05vdEhhbmRsZWRCeVdlYkNvcmUo
TlNFdmVudCAqZXZlbnQpIHsgbV9wZW5kaW5nU3dpcGVUcmFja2VyLmV2ZW50V2FzTm90SGFuZGxl
ZEJ5V2ViQ29yZShldmVudCk7IH0KICAgICB2b2lkIGdlc3R1cmVFdmVudFdhc05vdEhhbmRsZWRC
eVdlYkNvcmUoTlNFdmVudCAqLCBXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdpbik7CiAKLSAgICB2
b2lkIHNldEN1c3RvbVN3aXBlVmlld3MoVmVjdG9yPFJldGFpblB0cjxOU1ZpZXc+PiB2aWV3cykg
eyBtX2N1c3RvbVN3aXBlVmlld3MgPSBXVEY6Om1vdmUodmlld3MpOyB9CisgICAgdm9pZCBzZXRD
dXN0b21Td2lwZVZpZXdzKFZlY3RvcjxSZXRhaW5QdHI8TlNWaWV3Pj4gdmlld3MpIHsgbV9jdXN0
b21Td2lwZVZpZXdzID0gV1RGTW92ZSh2aWV3cyk7IH0KICAgICB2b2lkIHNldEN1c3RvbVN3aXBl
Vmlld3NUb3BDb250ZW50SW5zZXQoZmxvYXQgdG9wQ29udGVudEluc2V0KSB7IG1fY3VzdG9tU3dp
cGVWaWV3c1RvcENvbnRlbnRJbnNldCA9IHRvcENvbnRlbnRJbnNldDsgfQogICAgIFdlYkNvcmU6
OkZsb2F0UmVjdCB3aW5kb3dSZWxhdGl2ZUJvdW5kc0ZvckN1c3RvbVN3aXBlVmlld3MoKSBjb25z
dDsKICAgICB2b2lkIHNldERpZE1vdmVTd2lwZVNuYXBzaG90Q2FsbGJhY2sodm9pZCheKShDR1Jl
Y3QpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVmlld0dlc3R1
cmVDb250cm9sbGVyTWFjLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9WaWV3R2Vz
dHVyZUNvbnRyb2xsZXJNYWMubW0KaW5kZXggYzI4MmRlYmJiMzhlMmVmZTFkNzAxMGMyYjgwZDQz
NmQ3Nzc4NWQyOS4uNTU3Y2ZiZDRkMDRmNjVmMjVjNTIyZTgwZTUxNzRmYTA4YzkzZmZlOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRyb2xs
ZXJNYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9WaWV3R2VzdHVyZUNv
bnRyb2xsZXJNYWMubW0KQEAgLTI3OCw3ICsyNzgsNyBAQCBzdGF0aWMgYm9vbCBkZWx0YVNob3Vs
ZENhbmNlbFN3aXBlKGZsb2F0IHgsIGZsb2F0IHkpCiB9CiAKIFZpZXdHZXN0dXJlQ29udHJvbGxl
cjo6UGVuZGluZ1N3aXBlVHJhY2tlcjo6UGVuZGluZ1N3aXBlVHJhY2tlcihXZWJQYWdlUHJveHkm
IHdlYlBhZ2VQcm94eSwgc3RkOjpmdW5jdGlvbjx2b2lkKE5TRXZlbnQgKiwgU3dpcGVEaXJlY3Rp
b24pPiB0cmFja1N3aXBlQ2FsbGJhY2spCi0gICAgOiBtX3RyYWNrU3dpcGVDYWxsYmFjayhXVEY6
Om1vdmUodHJhY2tTd2lwZUNhbGxiYWNrKSkKKyAgICA6IG1fdHJhY2tTd2lwZUNhbGxiYWNrKFdU
Rk1vdmUodHJhY2tTd2lwZUNhbGxiYWNrKSkKICAgICAsIG1fd2ViUGFnZVByb3h5KHdlYlBhZ2VQ
cm94eSkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVmll
d1NuYXBzaG90U3RvcmUubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1ZpZXdTbmFw
c2hvdFN0b3JlLm1tCmluZGV4IDcyMmIxYjE0OTQxYjAxMjhmNzFmYjQ5MWMxMTQxNTVjOGM3Mjdl
ODcuLjNmOGZjZmYxYTQxZTFjZDRlODRlMDhkMmZmY2RjMTU1MGQxZmQ4MmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVmlld1NuYXBzaG90U3RvcmUubW0KKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9WaWV3U25hcHNob3RTdG9yZS5tbQpAQCAtMTM0
LDcgKzEzNCw3IEBAIHZvaWQgVmlld1NuYXBzaG90U3RvcmU6OmRpc2NhcmRTbmFwc2hvdEltYWdl
cygpCiAjaWYgVVNFKElPU1VSRkFDRSkKIFJlZjxWaWV3U25hcHNob3Q+IFZpZXdTbmFwc2hvdDo6
Y3JlYXRlKHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IHN1cmZhY2UpCiB7Ci0gICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgVmlld1NuYXBzaG90KFdURjo6bW92ZShzdXJmYWNlKSkpOworICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFZpZXdTbmFwc2hvdChXVEZNb3ZlKHN1cmZhY2UpKSk7CiB9CiAj
ZWxzZQogUmVmPFZpZXdTbmFwc2hvdD4gVmlld1NuYXBzaG90OjpjcmVhdGUodWludDMyX3Qgc2xv
dElELCBJbnRTaXplIHNpemUsIHNpemVfdCBpbWFnZVNpemVJbkJ5dGVzKQpAQCAtMTQ1LDcgKzE0
NSw3IEBAIFJlZjxWaWV3U25hcHNob3Q+IFZpZXdTbmFwc2hvdDo6Y3JlYXRlKHVpbnQzMl90IHNs
b3RJRCwgSW50U2l6ZSBzaXplLCBzaXplX3QgaW1hCiAKICNpZiBVU0UoSU9TVVJGQUNFKQogVmll
d1NuYXBzaG90OjpWaWV3U25hcHNob3Qoc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gc3VyZmFj
ZSkKLSAgICA6IG1fc3VyZmFjZShXVEY6Om1vdmUoc3VyZmFjZSkpCisgICAgOiBtX3N1cmZhY2Uo
V1RGTW92ZShzdXJmYWNlKSkKICNlbHNlCiBWaWV3U25hcHNob3Q6OlZpZXdTbmFwc2hvdCh1aW50
MzJfdCBzbG90SUQsIEludFNpemUgc2l6ZSwgc2l6ZV90IGltYWdlU2l6ZUluQnl0ZXMpCiAgICAg
OiBtX3Nsb3RJRChzbG90SUQpCkBAIC0xNzEsNyArMTcxLDcgQEAgdm9pZCBWaWV3U25hcHNob3Q6
OnNldFN1cmZhY2Uoc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OklPU3VyZmFjZT4gc3VyZmFjZSkK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fc3VyZmFjZSA9IFdURjo6bW92ZShzdXJm
YWNlKTsKKyAgICBtX3N1cmZhY2UgPSBXVEZNb3ZlKHN1cmZhY2UpOwogICAgIFZpZXdTbmFwc2hv
dFN0b3JlOjpzaW5nbGV0b24oKS5kaWRBZGRJbWFnZVRvU25hcHNob3QoKnRoaXMpOwogfQogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94
eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1t
CmluZGV4IDAzODUzZDA2MTc3ZThhNzQyYTA0ZWRhYzFjMWVmMmRlODdkOWM2MTAuLjUyMmY4MTVk
OWFkYWRkZDhhMDFhZmQ4NzI4NmJlZDlhZGUyZGM3ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCkBAIC0xNzUsNyArMTc1LDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmF0dHJpYnV0ZWRTdWJzdHJpbmdGb3JDaGFyYWN0ZXJSYW5nZUFzeW5j
KGNvbnN0IEVkaXRpbmdSYW5nZSYKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHVpbnQ2
NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGOjptb3ZlKGNhbGxiYWNrRnVuY3Rp
b24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwor
ICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFj
a0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tl
bigpKTsKIAogICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpBdHRyaWJ1dGVk
U3Vic3RyaW5nRm9yQ2hhcmFjdGVyUmFuZ2VBc3luYyhyYW5nZSwgY2FsbGJhY2tJRCksIG1fcGFn
ZUlEKTsKIH0KQEAgLTIwMSw3ICsyMDEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Zm9udEF0U2Vs
ZWN0aW9uKHN0ZDo6ZnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgZG91YmxlLCBibwogICAg
ICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBtX2Nh
bGxiYWNrcy5wdXQoV1RGOjptb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90
dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIHVpbnQ2NF90IGNhbGxiYWNr
SUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNz
LT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAgICAKICAgICBwcm9j
ZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Rm9udEF0U2VsZWN0aW9uKGNhbGxiYWNrSUQp
LCBtX3BhZ2VJRCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5jcHAKaW5kZXggMDA3ZTQx
NDEwZDE0YzNhMDRmM2E4M2RiY2UzMjQ5MzU1NTRhNDI3MC4uNDRjMjllODgzZTJlOTg3NWYzZTJk
MmU0NTQ2YTZlYTE0NzJmYTA5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcApAQCAt
MTkyLDcgKzE5Miw3IEBAIHN0YXRpYyBQYXNzUmVmUHRyPEFQSTo6QXJyYXk+IGNvbnRleHRNZW51
SXRlbXMoY29uc3QgV2ViQ29udGV4dE1lbnUmIGNvbnRleHRNZW51CiAgICAgZm9yIChjb25zdCBh
dXRvJiBpdGVtIDogaXRlbXMpCiAgICAgICAgIG1lbnVJdGVtcy51bmNoZWNrZWRBcHBlbmQoV2Vi
Q29udGV4dE1lbnVJdGVtOjpjcmVhdGUoaXRlbSkpOwogCi0gICAgcmV0dXJuIEFQSTo6QXJyYXk6
OmNyZWF0ZShXVEY6Om1vdmUobWVudUl0ZW1zKSk7CisgICAgcmV0dXJuIEFQSTo6QXJyYXk6OmNy
ZWF0ZShXVEZNb3ZlKG1lbnVJdGVtcykpOwogfQogI2VuZGlmCiAKQEAgLTY3OCw1ICs2NzgsNSBA
QCBXS0FycmF5UmVmIFdLQnVuZGxlUGFnZUNvcHlPcmlnaW5zV2l0aEFwcGxpY2F0aW9uQ2FjaGUo
V0tCdW5kbGVQYWdlUmVmIHBhZ2UpCiAgICAgZm9yIChjb25zdCBhdXRvJiBvcmlnaW4gOiBvcmln
aW5zKQogICAgICAgICBvcmlnaW5JZGVudGlmaWVycy51bmNoZWNrZWRBcHBlbmQoQVBJOjpTdHJp
bmc6OmNyZWF0ZShvcmlnaW4tPmRhdGFiYXNlSWRlbnRpZmllcigpKSk7CiAKLSAgICByZXR1cm4g
dG9BUEkoJkFQSTo6QXJyYXk6OmNyZWF0ZShXVEY6Om1vdmUob3JpZ2luSWRlbnRpZmllcnMpKS5s
ZWFrUmVmKCkpOworICAgIHJldHVybiB0b0FQSSgmQVBJOjpBcnJheTo6Y3JlYXRlKFdURk1vdmUo
b3JpZ2luSWRlbnRpZmllcnMpKS5sZWFrUmVmKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2VPdmVybGF5
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tC
dW5kbGVQYWdlT3ZlcmxheS5jcHAKaW5kZXggZTE5YWRiOWU5NGFmYjA5NzA1Nzg1MWNjNGQzMGMz
OTE5Yjk1NDFkMC4uZmM2YjYzNWU5Zjc2NGYxOWU2MzU1NDU1N2E4NDY4NmQ3MzczNmQwNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9X
S0J1bmRsZVBhZ2VPdmVybGF5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZU92ZXJsYXkuY3BwCkBAIC0yMjUsNyArMjI1
LDcgQEAgV0tUeXBlSUQgV0tCdW5kbGVQYWdlT3ZlcmxheUdldFR5cGVJRCgpCiBXS0J1bmRsZVBh
Z2VPdmVybGF5UmVmIFdLQnVuZGxlUGFnZU92ZXJsYXlDcmVhdGUoV0tCdW5kbGVQYWdlT3Zlcmxh
eUNsaWVudEJhc2UqIHdrQ2xpZW50KQogewogICAgIGF1dG8gY2xpZW50SW1wbCA9IHN0ZDo6bWFr
ZV91bmlxdWU8UGFnZU92ZXJsYXlDbGllbnRJbXBsPih3a0NsaWVudCk7Ci0gICAgcmV0dXJuIHRv
QVBJKCZXZWJQYWdlT3ZlcmxheTo6Y3JlYXRlKFdURjo6bW92ZShjbGllbnRJbXBsKSkubGVha1Jl
ZigpKTsKKyAgICByZXR1cm4gdG9BUEkoJldlYlBhZ2VPdmVybGF5OjpjcmVhdGUoV1RGTW92ZShj
bGllbnRJbXBsKSkubGVha1JlZigpKTsKIH0KIAogdm9pZCBXS0J1bmRsZVBhZ2VPdmVybGF5U2V0
QWNjZXNzaWJpbGl0eUNsaWVudChXS0J1bmRsZVBhZ2VPdmVybGF5UmVmIGJ1bmRsZVBhZ2VPdmVy
bGF5UmVmLCBXS0J1bmRsZVBhZ2VPdmVybGF5QWNjZXNzaWJpbGl0eUNsaWVudEJhc2UqIGNsaWVu
dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2VmbC9ld2tfZXh0ZW5zaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2VmbC9ld2tfZXh0ZW5zaW9uLmNwcAppbmRleCAwNmIwMmMzYzJhYzdh
OWZjMzA1YmU1YmI4MmI4MGQ2ODVhNjgzOTQ5Li43MWY2NzU2YThhMDU2OGYxODRkNWM2Njg2NDNk
ODljNWIxZmNkNGY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9lZmwvZXdrX2V4dGVuc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZWZsL2V3a19leHRlbnNpb24uY3BwCkBAIC04
Myw3ICs4Myw3IEBAIHZvaWQgRXdrRXh0ZW5zaW9uOjpkaWRDcmVhdGVQYWdlKFdLQnVuZGxlUmVm
LCBXS0J1bmRsZVBhZ2VSZWYgd2tQYWdlLCBjb25zdCB2b2lkCiAgICAgICAgICAgICBpdC0+cGFn
ZV9hZGQoZXdrUGFnZS5nZXQoKSwgaXQtPmRhdGEpOwogICAgIH0KIAotICAgIHNlbGYtPm1fcGFn
ZU1hcC5hZGQocGFnZSwgV1RGOjptb3ZlKGV3a1BhZ2UpKTsKKyAgICBzZWxmLT5tX3BhZ2VNYXAu
YWRkKHBhZ2UsIFdURk1vdmUoZXdrUGFnZSkpOwogfQogCiB2b2lkIEV3a0V4dGVuc2lvbjo6d2ls
bERlc3Ryb3lQYWdlKFdLQnVuZGxlUmVmLCBXS0J1bmRsZVBhZ2VSZWYgd2tQYWdlLCBjb25zdCB2
b2lkKiBjbGllbnRJbmZvKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYlBhZ2UuY3BwCmluZGV4
IDI2NzU1OGViZWU0NDc5YjUzYjE5NDUyNWEyYTJkN2YyMThjMmRmNjQuLmZhYTg1NzhhMDc1MGYz
NDAxMDJlODYzNWEyODdkNTI2MDM1OGU4NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJQYWdlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2Vi
UGFnZS5jcHAKQEAgLTEyMCw3ICsxMjAsNyBAQCBzdGF0aWMgV2ViS2l0RnJhbWUqIHdlYmtpdEZy
YW1lR2V0T3JDcmVhdGUoV2ViRnJhbWUqIHdlYkZyYW1lKQogCiAgICAgc3RkOjp1bmlxdWVfcHRy
PFdlYktpdEZyYW1lV3JhcHBlcj4gd3JhcHBlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0RnJh
bWVXcmFwcGVyPigqd2ViRnJhbWUpOwogICAgIHdyYXBwZXJQdHIgPSB3cmFwcGVyLmdldCgpOwot
ICAgIHdlYkZyYW1lTWFwKCkuc2V0KHdlYkZyYW1lLCBXVEY6Om1vdmUod3JhcHBlcikpOworICAg
IHdlYkZyYW1lTWFwKCkuc2V0KHdlYkZyYW1lLCBXVEZNb3ZlKHdyYXBwZXIpKTsKICAgICByZXR1
cm4gd3JhcHBlclB0ci0+d2Via2l0RnJhbWUoKTsKIH0KIApAQCAtMTk4LDcgKzE5OCw3IEBAIHN0
YXRpYyB2b2lkIGRpZEluaXRpYXRlTG9hZEZvclJlc291cmNlKFdLQnVuZGxlUGFnZVJlZiBwYWdl
LCBXS0J1bmRsZUZyYW1lUmVmIGZyCiAgICAgbWVzc2FnZS5zZXQoU3RyaW5nOjpmcm9tVVRGOCgi
RnJhbWUiKSwgdG9JbXBsKGZyYW1lKSk7CiAgICAgbWVzc2FnZS5zZXQoU3RyaW5nOjpmcm9tVVRG
OCgiSWRlbnRpZmllciIpLCBBUEk6OlVJbnQ2NDo6Y3JlYXRlKGlkZW50aWZpZXIpKTsKICAgICBt
ZXNzYWdlLnNldChTdHJpbmc6OmZyb21VVEY4KCJSZXF1ZXN0IiksIHRvSW1wbChyZXF1ZXN0KSk7
Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuaW5qZWN0ZWRCdW5kbGUoKS0+cG9zdE1lc3Nh
Z2UoU3RyaW5nOjpmcm9tVVRGOCgiV2ViUGFnZS5EaWRJbml0aWF0ZUxvYWRGb3JSZXNvdXJjZSIp
LCBBUEk6OkRpY3Rpb25hcnk6OmNyZWF0ZShXVEY6Om1vdmUobWVzc2FnZSkpLnB0cigpKTsKKyAg
ICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5pbmplY3RlZEJ1bmRsZSgpLT5wb3N0TWVzc2FnZShT
dHJpbmc6OmZyb21VVEY4KCJXZWJQYWdlLkRpZEluaXRpYXRlTG9hZEZvclJlc291cmNlIiksIEFQ
STo6RGljdGlvbmFyeTo6Y3JlYXRlKFdURk1vdmUobWVzc2FnZSkpLnB0cigpKTsKIH0KIAogc3Rh
dGljIFdLVVJMUmVxdWVzdFJlZiB3aWxsU2VuZFJlcXVlc3RGb3JGcmFtZShXS0J1bmRsZVBhZ2VS
ZWYgcGFnZSwgV0tCdW5kbGVGcmFtZVJlZiwgdWludDY0X3QgaWRlbnRpZmllciwgV0tVUkxSZXF1
ZXN0UmVmIHdrUmVxdWVzdCwgV0tVUkxSZXNwb25zZVJlZiB3a1JlZGlyZWN0UmVzcG9uc2UsIGNv
bnN0IHZvaWQqIGNsaWVudEluZm8pCkBAIC0yMjMsNyArMjIzLDcgQEAgc3RhdGljIFdLVVJMUmVx
dWVzdFJlZiB3aWxsU2VuZFJlcXVlc3RGb3JGcmFtZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tC
dW5kbGVGcmEKICAgICBtZXNzYWdlLnNldChTdHJpbmc6OmZyb21VVEY4KCJSZXF1ZXN0IiksIG5l
d1JlcXVlc3QucHRyKCkpOwogICAgIGlmICghcmVkaXJlY3RSZXNvdXJjZVJlc3BvbnNlLmlzTnVs
bCgpKQogICAgICAgICBtZXNzYWdlLnNldChTdHJpbmc6OmZyb21VVEY4KCJSZWRpcmVjdFJlc3Bv
bnNlIiksIHRvSW1wbCh3a1JlZGlyZWN0UmVzcG9uc2UpKTsKLSAgICBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5pbmplY3RlZEJ1bmRsZSgpLT5wb3N0TWVzc2FnZShTdHJpbmc6OmZyb21VVEY4KCJX
ZWJQYWdlLkRpZFNlbmRSZXF1ZXN0Rm9yUmVzb3VyY2UiKSwgQVBJOjpEaWN0aW9uYXJ5OjpjcmVh
dGUoV1RGOjptb3ZlKG1lc3NhZ2UpKS5wdHIoKSk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkuaW5qZWN0ZWRCdW5kbGUoKS0+cG9zdE1lc3NhZ2UoU3RyaW5nOjpmcm9tVVRGOCgiV2ViUGFn
ZS5EaWRTZW5kUmVxdWVzdEZvclJlc291cmNlIiksIEFQSTo6RGljdGlvbmFyeTo6Y3JlYXRlKFdU
Rk1vdmUobWVzc2FnZSkpLnB0cigpKTsKIAogICAgIHJldHVybiB0b0FQSSgmbmV3UmVxdWVzdC5s
ZWFrUmVmKCkpOwogfQpAQCAtMjM0LDcgKzIzNCw3IEBAIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVS
ZXNwb25zZUZvclJlc291cmNlKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRsZUZyYW1lUmVm
CiAgICAgbWVzc2FnZS5zZXQoU3RyaW5nOjpmcm9tVVRGOCgiUGFnZSIpLCB0b0ltcGwocGFnZSkp
OwogICAgIG1lc3NhZ2Uuc2V0KFN0cmluZzo6ZnJvbVVURjgoIklkZW50aWZpZXIiKSwgQVBJOjpV
SW50NjQ6OmNyZWF0ZShpZGVudGlmaWVyKSk7CiAgICAgbWVzc2FnZS5zZXQoU3RyaW5nOjpmcm9t
VVRGOCgiUmVzcG9uc2UiKSwgdG9JbXBsKHJlc3BvbnNlKSk7Ci0gICAgV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkuaW5qZWN0ZWRCdW5kbGUoKS0+cG9zdE1lc3NhZ2UoU3RyaW5nOjpmcm9tVVRGOCgi
V2ViUGFnZS5EaWRSZWNlaXZlUmVzcG9uc2VGb3JSZXNvdXJjZSIpLCBBUEk6OkRpY3Rpb25hcnk6
OmNyZWF0ZShXVEY6Om1vdmUobWVzc2FnZSkpLnB0cigpKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5pbmplY3RlZEJ1bmRsZSgpLT5wb3N0TWVzc2FnZShTdHJpbmc6OmZyb21VVEY4KCJX
ZWJQYWdlLkRpZFJlY2VpdmVSZXNwb25zZUZvclJlc291cmNlIiksIEFQSTo6RGljdGlvbmFyeTo6
Y3JlYXRlKFdURk1vdmUobWVzc2FnZSkpLnB0cigpKTsKIAogICAgIC8vIFBvc3Qgb24gdGhlIGNv
bnNvbGUgYXMgd2VsbCB0byBiZSBjb25zaXN0ZW50IHdpdGggdGhlIGluc3BlY3Rvci4KICAgICBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNvdXJjZVJlc3BvbnNlID0gdG9JbXBsKHJlc3BvbnNl
KS0+cmVzb3VyY2VSZXNwb25zZSgpOwpAQCAtMjU1LDcgKzI1NSw3IEBAIHN0YXRpYyB2b2lkIGRp
ZFJlY2VpdmVDb250ZW50TGVuZ3RoRm9yUmVzb3VyY2UoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdL
QnVuZGxlRnJhCiAgICAgbWVzc2FnZS5zZXQoU3RyaW5nOjpmcm9tVVRGOCgiUGFnZSIpLCB0b0lt
cGwocGFnZSkpOwogICAgIG1lc3NhZ2Uuc2V0KFN0cmluZzo6ZnJvbVVURjgoIklkZW50aWZpZXIi
KSwgQVBJOjpVSW50NjQ6OmNyZWF0ZShpZGVudGlmaWVyKSk7CiAgICAgbWVzc2FnZS5zZXQoU3Ry
aW5nOjpmcm9tVVRGOCgiQ29udGVudExlbmd0aCIpLCBBUEk6OlVJbnQ2NDo6Y3JlYXRlKGxlbmd0
aCkpOwotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmluamVjdGVkQnVuZGxlKCktPnBvc3RN
ZXNzYWdlKFN0cmluZzo6ZnJvbVVURjgoIldlYlBhZ2UuRGlkUmVjZWl2ZUNvbnRlbnRMZW5ndGhG
b3JSZXNvdXJjZSIpLCBBUEk6OkRpY3Rpb25hcnk6OmNyZWF0ZShXVEY6Om1vdmUobWVzc2FnZSkp
LnB0cigpKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5pbmplY3RlZEJ1bmRsZSgpLT5w
b3N0TWVzc2FnZShTdHJpbmc6OmZyb21VVEY4KCJXZWJQYWdlLkRpZFJlY2VpdmVDb250ZW50TGVu
Z3RoRm9yUmVzb3VyY2UiKSwgQVBJOjpEaWN0aW9uYXJ5OjpjcmVhdGUoV1RGTW92ZShtZXNzYWdl
KSkucHRyKCkpOwogfQogCiBzdGF0aWMgdm9pZCBkaWRGaW5pc2hMb2FkRm9yUmVzb3VyY2UoV0tC
dW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVuZGxlRnJhbWVSZWYsIHVpbnQ2NF90IGlkZW50aWZpZXIs
IGNvbnN0IHZvaWQqKQpAQCAtMjYzLDcgKzI2Myw3IEBAIHN0YXRpYyB2b2lkIGRpZEZpbmlzaExv
YWRGb3JSZXNvdXJjZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVGcmFtZVJlZiwgdWlu
CiAgICAgQVBJOjpEaWN0aW9uYXJ5OjpNYXBUeXBlIG1lc3NhZ2U7CiAgICAgbWVzc2FnZS5zZXQo
U3RyaW5nOjpmcm9tVVRGOCgiUGFnZSIpLCB0b0ltcGwocGFnZSkpOwogICAgIG1lc3NhZ2Uuc2V0
KFN0cmluZzo6ZnJvbVVURjgoIklkZW50aWZpZXIiKSwgQVBJOjpVSW50NjQ6OmNyZWF0ZShpZGVu
dGlmaWVyKSk7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuaW5qZWN0ZWRCdW5kbGUoKS0+
cG9zdE1lc3NhZ2UoU3RyaW5nOjpmcm9tVVRGOCgiV2ViUGFnZS5EaWRGaW5pc2hMb2FkRm9yUmVz
b3VyY2UiKSwgQVBJOjpEaWN0aW9uYXJ5OjpjcmVhdGUoV1RGOjptb3ZlKG1lc3NhZ2UpKS5wdHIo
KSk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuaW5qZWN0ZWRCdW5kbGUoKS0+cG9zdE1l
c3NhZ2UoU3RyaW5nOjpmcm9tVVRGOCgiV2ViUGFnZS5EaWRGaW5pc2hMb2FkRm9yUmVzb3VyY2Ui
KSwgQVBJOjpEaWN0aW9uYXJ5OjpjcmVhdGUoV1RGTW92ZShtZXNzYWdlKSkucHRyKCkpOwogfQog
CiBzdGF0aWMgdm9pZCBkaWRGYWlsTG9hZEZvclJlc291cmNlKFdLQnVuZGxlUGFnZVJlZiBwYWdl
LCBXS0J1bmRsZUZyYW1lUmVmLCB1aW50NjRfdCBpZGVudGlmaWVyLCBXS0Vycm9yUmVmIGVycm9y
LCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQpAQCAtMjcyLDcgKzI3Miw3IEBAIHN0YXRpYyB2b2lk
IGRpZEZhaWxMb2FkRm9yUmVzb3VyY2UoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVuZGxlRnJh
bWVSZWYsIHVpbnQ2CiAgICAgbWVzc2FnZS5zZXQoU3RyaW5nOjpmcm9tVVRGOCgiUGFnZSIpLCB0
b0ltcGwocGFnZSkpOwogICAgIG1lc3NhZ2Uuc2V0KFN0cmluZzo6ZnJvbVVURjgoIklkZW50aWZp
ZXIiKSwgQVBJOjpVSW50NjQ6OmNyZWF0ZShpZGVudGlmaWVyKSk7CiAgICAgbWVzc2FnZS5zZXQo
U3RyaW5nOjpmcm9tVVRGOCgiRXJyb3IiKSwgdG9JbXBsKGVycm9yKSk7Ci0gICAgV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkuaW5qZWN0ZWRCdW5kbGUoKS0+cG9zdE1lc3NhZ2UoU3RyaW5nOjpmcm9t
VVRGOCgiV2ViUGFnZS5EaWRGYWlsTG9hZEZvclJlc291cmNlIiksIEFQSTo6RGljdGlvbmFyeTo6
Y3JlYXRlKFdURjo6bW92ZShtZXNzYWdlKSkucHRyKCkpOworICAgIFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLmluamVjdGVkQnVuZGxlKCktPnBvc3RNZXNzYWdlKFN0cmluZzo6ZnJvbVVURjgoIldl
YlBhZ2UuRGlkRmFpbExvYWRGb3JSZXNvdXJjZSIpLCBBUEk6OkRpY3Rpb25hcnk6OmNyZWF0ZShX
VEZNb3ZlKG1lc3NhZ2UpKS5wdHIoKSk7CiAKICAgICAvLyBQb3N0IG9uIHRoZSBjb25zb2xlIGFz
IHdlbGwgdG8gYmUgY29uc2lzdGVudCB3aXRoIHRoZSBpbnNwZWN0b3IuCiAgICAgY29uc3QgUmVz
b3VyY2VFcnJvciYgcmVzb3VyY2VFcnJvciA9IHRvSW1wbChlcnJvciktPnBsYXRmb3JtRXJyb3Io
KTsKQEAgLTU3OSw3ICs1NzksNyBAQCB2b2lkIHdlYmtpdFdlYlBhZ2VEaWRSZWNlaXZlTWVzc2Fn
ZShXZWJLaXRXZWJQYWdlKiBwYWdlLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2VOYQogICAgICAgICBt
ZXNzYWdlUmVwbHkuc2V0KCJQYWdlIiwgd2ViUGFnZSk7CiAgICAgICAgIG1lc3NhZ2VSZXBseS5z
ZXQoIkNhbGxiYWNrSUQiLCBBUEk6OlVJbnQ2NDo6Y3JlYXRlKGNhbGxiYWNrSUQpKTsKICAgICAg
ICAgbWVzc2FnZVJlcGx5LnNldCgiU25hcHNob3QiLCBzbmFwc2hvdEltYWdlKTsKLSAgICAgICAg
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuaW5qZWN0ZWRCdW5kbGUoKS0+cG9zdE1lc3NhZ2UoIldl
YlBhZ2UuRGlkR2V0U25hcHNob3QiLCBBUEk6OkRpY3Rpb25hcnk6OmNyZWF0ZShXVEY6Om1vdmUo
bWVzc2FnZVJlcGx5KSkucHRyKCkpOworICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5p
bmplY3RlZEJ1bmRsZSgpLT5wb3N0TWVzc2FnZSgiV2ViUGFnZS5EaWRHZXRTbmFwc2hvdCIsIEFQ
STo6RGljdGlvbmFyeTo6Y3JlYXRlKFdURk1vdmUobWVzc2FnZVJlcGx5KSkucHRyKCkpOwogICAg
IH0gZWxzZQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nl
c3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNv
bnRleHRDb250cm9sbGVyLm1tCmluZGV4IDZjNTQ3MGIyOTFjOGFkYThkYjg1NmY5MDJiNzhjZGQx
YzM0YjJlNTguLjUwODAzNTgwZGNkODU3MDUzNDYyY2I3N2IyMDI2MWNlYjk1ZTBiNmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9X
S1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW0KKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1Bs
dWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5tbQpAQCAtNDkwLDcgKzQ5MCw3IEBAIC0gKHZv
aWQpX3NldEZvcm1EZWxlZ2F0ZTooaWQgPFdLV2ViUHJvY2Vzc1BsdWdJbkZvcm1EZWxlZ2F0ZVBy
aXZhdGU+KWZvcm1EZWxlZ2F0CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBbYXJjaGl2ZXIg
ZmluaXNoRW5jb2RpbmddOwogCi0gICAgICAgICAgICB1c2VyRGF0YSA9IEFQSTo6RGF0YTo6Y3Jl
YXRlV2l0aG91dENvcHlpbmcoV1RGOjptb3ZlKGRhdGEpKTsKKyAgICAgICAgICAgIHVzZXJEYXRh
ID0gQVBJOjpEYXRhOjpjcmVhdGVXaXRob3V0Q29weWluZyhXVEZNb3ZlKGRhdGEpKTsKICAgICAg
ICAgfQogCiAgICAgICAgIHZpcnR1YWwgdm9pZCB3aWxsU3VibWl0Rm9ybShXZWJQYWdlKiwgSFRN
TEZvcm1FbGVtZW50KiBmb3JtRWxlbWVudCwgV2ViRnJhbWUqIGZyYW1lLCBXZWJGcmFtZSogc291
cmNlRnJhbWUsIGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8V1RGOjpTdHJpbmcsIFdURjo6U3RyaW5n
Pj4mIHZhbHVlcywgUmVmUHRyPEFQSTo6T2JqZWN0PiYgdXNlckRhdGEpIG92ZXJyaWRlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGUuY3BwCmluZGV4IDdlN2M2NDBlMzQ2ZDA2NTA1NzQyMWQzNzdhMjY2ZTQ4OWIz
MWUxYzUuLjFjYWZiOWM0OTVhNmI4ODUxMDAzMjk2NTZmMTQ0ZWRmYmIwMzhhMTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGUuY3BwCkBAIC00MDAsNyArNDAwLDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZTo6
YWRkVXNlclNjcmlwdChXZWJQYWdlR3JvdXBQcm94eSogcGFnZUdyb3VwLCBJbmplY3RlZEJ1bmRs
ZVMKICAgICAvLyB1cmwgaXMgbm90IGZyb20gVVJMOjpzdHJpbmcoKSwgaS5lLiBpdCBoYXMgbm90
IGFscmVhZHkgYmVlbiBwYXJzZWQgYnkgVVJMLCBzbyB3ZSBoYXZlIHRvIHVzZSB0aGUgcmVsYXRp
dmUgVVJMIGNvbnN0cnVjdG9yIGZvciBVUkwgaW5zdGVhZCBvZiB0aGUgUGFyc2VkVVJMU3RyaW5n
VGFnIHZlcnNpb24uCiAgICAgYXV0byB1c2VyU2NyaXB0ID0gc3RkOjptYWtlX3VuaXF1ZTxVc2Vy
U2NyaXB0Pihzb3VyY2UsIFVSTChVUkwoKSwgdXJsKSwgd2hpdGVsaXN0ID8gd2hpdGVsaXN0LT50
b1N0cmluZ1ZlY3RvcigpIDogVmVjdG9yPFN0cmluZz4oKSwgYmxhY2tsaXN0ID8gYmxhY2tsaXN0
LT50b1N0cmluZ1ZlY3RvcigpIDogVmVjdG9yPFN0cmluZz4oKSwgaW5qZWN0aW9uVGltZSwgaW5q
ZWN0ZWRGcmFtZXMpOwogCi0gICAgcGFnZUdyb3VwLT51c2VyQ29udGVudENvbnRyb2xsZXIoKS5h
ZGRVc2VyU2NyaXB0KHNjcmlwdFdvcmxkLT5jb3JlV29ybGQoKSwgV1RGOjptb3ZlKHVzZXJTY3Jp
cHQpKTsKKyAgICBwYWdlR3JvdXAtPnVzZXJDb250ZW50Q29udHJvbGxlcigpLmFkZFVzZXJTY3Jp
cHQoc2NyaXB0V29ybGQtPmNvcmVXb3JsZCgpLCBXVEZNb3ZlKHVzZXJTY3JpcHQpKTsKIH0KIAog
dm9pZCBJbmplY3RlZEJ1bmRsZTo6YWRkVXNlclN0eWxlU2hlZXQoV2ViUGFnZUdyb3VwUHJveHkq
IHBhZ2VHcm91cCwgSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCogc2NyaXB0V29ybGQsIGNvbnN0
IFN0cmluZyYgc291cmNlLCBjb25zdCBTdHJpbmcmIHVybCwgQVBJOjpBcnJheSogd2hpdGVsaXN0
LCBBUEk6OkFycmF5KiBibGFja2xpc3QsIFdlYkNvcmU6OlVzZXJDb250ZW50SW5qZWN0ZWRGcmFt
ZXMgaW5qZWN0ZWRGcmFtZXMpCkBAIC00MDgsNyArNDA4LDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRs
ZTo6YWRkVXNlclN0eWxlU2hlZXQoV2ViUGFnZUdyb3VwUHJveHkqIHBhZ2VHcm91cCwgSW5qZWN0
ZWRCdW4KICAgICAvLyB1cmwgaXMgbm90IGZyb20gVVJMOjpzdHJpbmcoKSwgaS5lLiBpdCBoYXMg
bm90IGFscmVhZHkgYmVlbiBwYXJzZWQgYnkgVVJMLCBzbyB3ZSBoYXZlIHRvIHVzZSB0aGUgcmVs
YXRpdmUgVVJMIGNvbnN0cnVjdG9yIGZvciBVUkwgaW5zdGVhZCBvZiB0aGUgUGFyc2VkVVJMU3Ry
aW5nVGFnIHZlcnNpb24uCiAgICAgYXV0byB1c2VyU3R5bGVTaGVldCA9IHN0ZDo6bWFrZV91bmlx
dWU8VXNlclN0eWxlU2hlZXQ+KHNvdXJjZSwgVVJMKFVSTCgpLCB1cmwpLCB3aGl0ZWxpc3QgPyB3
aGl0ZWxpc3QtPnRvU3RyaW5nVmVjdG9yKCkgOiBWZWN0b3I8U3RyaW5nPigpLCBibGFja2xpc3Qg
PyBibGFja2xpc3QtPnRvU3RyaW5nVmVjdG9yKCkgOiBWZWN0b3I8U3RyaW5nPigpLCBpbmplY3Rl
ZEZyYW1lcywgVXNlclN0eWxlVXNlckxldmVsKTsKIAotICAgIHBhZ2VHcm91cC0+dXNlckNvbnRl
bnRDb250cm9sbGVyKCkuYWRkVXNlclN0eWxlU2hlZXQoc2NyaXB0V29ybGQtPmNvcmVXb3JsZCgp
LCBXVEY6Om1vdmUodXNlclN0eWxlU2hlZXQpLCBJbmplY3RJbkV4aXN0aW5nRG9jdW1lbnRzKTsK
KyAgICBwYWdlR3JvdXAtPnVzZXJDb250ZW50Q29udHJvbGxlcigpLmFkZFVzZXJTdHlsZVNoZWV0
KHNjcmlwdFdvcmxkLT5jb3JlV29ybGQoKSwgV1RGTW92ZSh1c2VyU3R5bGVTaGVldCksIEluamVj
dEluRXhpc3RpbmdEb2N1bWVudHMpOwogfQogCiB2b2lkIEluamVjdGVkQnVuZGxlOjpyZW1vdmVV
c2VyU2NyaXB0KFdlYlBhZ2VHcm91cFByb3h5KiBwYWdlR3JvdXAsIEluamVjdGVkQnVuZGxlU2Ny
aXB0V29ybGQqIHNjcmlwdFdvcmxkLCBjb25zdCBTdHJpbmcmIHVybCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVCYWNr
Rm9yd2FyZExpc3RJdGVtLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtLmNwcAppbmRleCA5NmZiNTJk
ZjBkZjg4NTM2NDU3YzVmYWRmM2M3YTA3MjkyYTcxNjE5Li45MWEwNmVlMmJjZGU3NzBlODgwMzFj
OGYzZjEyM2Q1MmY3ZmY1ZjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbS5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZUJhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwCkBAIC00MCw3ICs0MCw3IEBAIFJlZjxBUEk6OkFycmF5
PiBJbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW06OmNoaWxkcmVuKCkgY29uc3QKICAg
ICBmb3IgKGNvbnN0IGF1dG8mIGNoaWxkIDogbV9pdGVtLT5jaGlsZHJlbigpKQogICAgICAgICBj
aGlsZHJlbi51bmNoZWNrZWRBcHBlbmQoSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVt
OjpjcmVhdGUoY29uc3RfY2FzdDxIaXN0b3J5SXRlbSo+KGNoaWxkLnB0cigpKSkpOwogCi0gICAg
cmV0dXJuIEFQSTo6QXJyYXk6OmNyZWF0ZShXVEY6Om1vdmUoY2hpbGRyZW4pKTsKKyAgICByZXR1
cm4gQVBJOjpBcnJheTo6Y3JlYXRlKFdURk1vdmUoY2hpbGRyZW4pKTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50LmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlQ29u
dGV4dE1lbnVDbGllbnQuY3BwCmluZGV4IDM4ZDUxN2VjMmY1MDMwNWViNWQ0MDU0M2VjNWE2OWFj
MGIzYjE0YzYuLmQwNDMzM2FlOWY2MTIzZGQxN2UzNzMxYmJlZDliMGE0M2JlYzhiOTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQu
Y3BwCkBAIC02MCw3ICs2MCw3IEBAIGJvb2wgSW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4dE1lbnVD
bGllbnQ6OmdldEN1c3RvbU1lbnVGcm9tRGVmYXVsdEl0ZW1zKFdlYlBhZ2UmCiAKICAgICBXS0Fy
cmF5UmVmIG5ld01lbnVXSyA9IG51bGxwdHI7CiAgICAgV0tUeXBlUmVmIHVzZXJEYXRhVG9QYXNz
ID0gbnVsbHB0cjsKLSAgICBtX2NsaWVudC5nZXRDb250ZXh0TWVudUZyb21EZWZhdWx0TWVudSh0
b0FQSSgmcGFnZSksIHRvQVBJKCZJbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQ6OmNyZWF0ZSho
aXRUZXN0UmVzdWx0KS5nZXQoKSksIHRvQVBJKEFQSTo6QXJyYXk6OmNyZWF0ZShXVEY6Om1vdmUo
ZGVmYXVsdE1lbnVJdGVtcykpLnB0cigpKSwgJm5ld01lbnVXSywgJnVzZXJEYXRhVG9QYXNzLCBt
X2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgIG1fY2xpZW50LmdldENvbnRleHRNZW51RnJv
bURlZmF1bHRNZW51KHRvQVBJKCZwYWdlKSwgdG9BUEkoJkluamVjdGVkQnVuZGxlSGl0VGVzdFJl
c3VsdDo6Y3JlYXRlKGhpdFRlc3RSZXN1bHQpLmdldCgpKSwgdG9BUEkoQVBJOjpBcnJheTo6Y3Jl
YXRlKFdURk1vdmUoZGVmYXVsdE1lbnVJdGVtcykpLnB0cigpKSwgJm5ld01lbnVXSywgJnVzZXJE
YXRhVG9QYXNzLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogICAgIFJlZlB0cjxBUEk6OkFy
cmF5PiBhcnJheSA9IGFkb3B0UmVmKHRvSW1wbChuZXdNZW51V0spKTsKICAgICB1c2VyRGF0YSA9
IGFkb3B0UmVmKHRvSW1wbCh1c2VyRGF0YVRvUGFzcykpOwogICAgIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VG
b3JtQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGVQYWdlRm9ybUNsaWVudC5jcHAKaW5kZXggYzc2NmFmMzQ5YTJlMTU5MWM1
MGM2ODZiNmRhYTljNzMxN2M1YzNhNy4uZDY0MmRjMGI2NDMxNzllYWU4ZjMxZDA3ZDUzYzdhOTcz
NTZjNzgxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VGb3JtQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUZvcm1DbGllbnQu
Y3BwCkBAIC0xMzYsNyArMTM2LDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VGb3JtQ2xpZW50
Ojp3aWxsU2VuZFN1Ym1pdEV2ZW50KFdlYlBhZ2UqIHBhZ2UsIEhUTUxGb3JtRWwKICAgICBBUEk6
OkRpY3Rpb25hcnk6Ok1hcFR5cGUgbWFwOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdmFs
dWVzLnNpemUoKTsgKytpKQogICAgICAgICBtYXAuc2V0KHZhbHVlc1tpXS5maXJzdCwgQVBJOjpT
dHJpbmc6OmNyZWF0ZSh2YWx1ZXNbaV0uc2Vjb25kKSk7Ci0gICAgYXV0byB0ZXh0RmllbGRzTWFw
ID0gQVBJOjpEaWN0aW9uYXJ5OjpjcmVhdGUoV1RGOjptb3ZlKG1hcCkpOworICAgIGF1dG8gdGV4
dEZpZWxkc01hcCA9IEFQSTo6RGljdGlvbmFyeTo6Y3JlYXRlKFdURk1vdmUobWFwKSk7CiAKICAg
ICBtX2NsaWVudC53aWxsU2VuZFN1Ym1pdEV2ZW50KHRvQVBJKHBhZ2UpLCB0b0FQSShub2RlSGFu
ZGxlLmdldCgpKSwgdG9BUEkoZnJhbWUpLCB0b0FQSShzb3VyY2VGcmFtZSksIHRvQVBJKHRleHRG
aWVsZHNNYXAucHRyKCkpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogfQpAQCAtMTUxLDcg
KzE1MSw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlRm9ybUNsaWVudDo6d2lsbFN1Ym1pdEZv
cm0oV2ViUGFnZSogcGFnZSwgSFRNTEZvcm1FbGVtZW50CiAgICAgQVBJOjpEaWN0aW9uYXJ5OjpN
YXBUeXBlIG1hcDsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHZhbHVlcy5zaXplKCk7ICsr
aSkKICAgICAgICAgbWFwLnNldCh2YWx1ZXNbaV0uZmlyc3QsIEFQSTo6U3RyaW5nOjpjcmVhdGUo
dmFsdWVzW2ldLnNlY29uZCkpOwotICAgIGF1dG8gdGV4dEZpZWxkc01hcCA9IEFQSTo6RGljdGlv
bmFyeTo6Y3JlYXRlKFdURjo6bW92ZShtYXApKTsKKyAgICBhdXRvIHRleHRGaWVsZHNNYXAgPSBB
UEk6OkRpY3Rpb25hcnk6OmNyZWF0ZShXVEZNb3ZlKG1hcCkpOwogCiAgICAgV0tUeXBlUmVmIHVz
ZXJEYXRhVG9QYXNzID0gMDsKICAgICBtX2NsaWVudC53aWxsU3VibWl0Rm9ybSh0b0FQSShwYWdl
KSwgdG9BUEkobm9kZUhhbmRsZS5nZXQoKSksIHRvQVBJKGZyYW1lKSwgdG9BUEkoc291cmNlRnJh
bWUpLCB0b0FQSSh0ZXh0RmllbGRzTWFwLnB0cigpKSwgJnVzZXJEYXRhVG9QYXNzLCBtX2NsaWVu
dC5iYXNlLmNsaWVudEluZm8pOwpAQCAtMTY5LDcgKzE2OSw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5k
bGVQYWdlRm9ybUNsaWVudDo6ZGlkQXNzb2NpYXRlRm9ybUNvbnRyb2xzKFdlYlBhZ2UqIHBhZ2Us
IGNvbnN0CiAgICAgZm9yIChjb25zdCBhdXRvJiBlbGVtZW50IDogZWxlbWVudHMpCiAgICAgICAg
IGVsZW1lbnRIYW5kbGVzLnVuY2hlY2tlZEFwcGVuZChJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU6
OmdldE9yQ3JlYXRlKGVsZW1lbnQuZ2V0KCkpKTsKIAotICAgIG1fY2xpZW50LmRpZEFzc29jaWF0
ZUZvcm1Db250cm9scyh0b0FQSShwYWdlKSwgdG9BUEkoQVBJOjpBcnJheTo6Y3JlYXRlKFdURjo6
bW92ZShlbGVtZW50SGFuZGxlcykpLnB0cigpKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsK
KyAgICBtX2NsaWVudC5kaWRBc3NvY2lhdGVGb3JtQ29udHJvbHModG9BUEkocGFnZSksIHRvQVBJ
KEFQSTo6QXJyYXk6OmNyZWF0ZShXVEZNb3ZlKGVsZW1lbnRIYW5kbGVzKSkucHRyKCkpLCBtX2Ns
aWVudC5iYXNlLmNsaWVudEluZm8pOwogfQogCiBib29sIEluamVjdGVkQnVuZGxlUGFnZUZvcm1D
bGllbnQ6OnNob3VsZE5vdGlmeU9uRm9ybUNoYW5nZXMoV2ViUGFnZSogcGFnZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGVQYWdlUmVzb3VyY2VMb2FkQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlUmVzb3VyY2VMb2FkQ2xpZW50LmNwcApp
bmRleCBiOTJkZjQ3MGZhMTIxODNiMmMwNDY2NWUyNTAyNWM5YzYzMGE4OTI4Li4xMzJlMjZkYzg3
ZjNlMmI0ZGE2NTgzMWZmM2EzZTc4OTU2YzFjN2I0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZVJlc291cmNlTG9h
ZENsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZVBhZ2VSZXNvdXJjZUxvYWRDbGllbnQuY3BwCkBAIC01NSw3ICs1NSw3
IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlUmVzb3VyY2VMb2FkQ2xpZW50Ojp3aWxsU2VuZFJl
cXVlc3RGb3JGcmFtZShXZWJQYWdlKiBwYWdlCiAgICAgICAgIFJlZlB0cjxGb3JtRGF0YT4gcmV0
dXJuZWRIVFRQQm9keSA9IHJldHVybmVkUmVzb3VyY2VSZXF1ZXN0Lmh0dHBCb2R5KCk7CiAgICAg
ICAgIHJlcXVlc3QudXBkYXRlRnJvbURlbGVnYXRlUHJlc2VydmluZ09sZFByb3BlcnRpZXMocmV0
dXJuZWRSZXNvdXJjZVJlcXVlc3QpOwogICAgICAgICBpZiAocmV0dXJuZWRIVFRQQm9keSkKLSAg
ICAgICAgICAgIHJlcXVlc3Quc2V0SFRUUEJvZHkoV1RGOjptb3ZlKHJldHVybmVkSFRUUEJvZHkp
KTsKKyAgICAgICAgICAgIHJlcXVlc3Quc2V0SFRUUEJvZHkoV1RGTW92ZShyZXR1cm5lZEhUVFBC
b2R5KSk7CiAgICAgfSBlbHNlCiAgICAgICAgIHJlcXVlc3QgPSB7IH07CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3Bw
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNw
cAppbmRleCA5ODQ4MGRhNjE0ZjBkYTgxNzcyZWM2MzNlYzJmZTE1OTU0YjI0NGEwLi4yMjA3M2Vk
NmY4NjFlMjJjOWNlZDBlMzQyMTRiOWJlZjhlMWM3NTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTgz
LDcgKzgzLDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KGNvbnN0
IFJlc291cmNlUmVxdWVzdCYgcHJvcG9zZWRSZXF1ZXN0LAogICAgIGlmIChtX2NvcmVMb2FkZXIt
PmRvY3VtZW50TG9hZGVyKCktPmFwcGxpY2F0aW9uQ2FjaGVIb3N0KCktPm1heWJlTG9hZEZhbGxi
YWNrRm9yUmVkaXJlY3QobV9jb3JlTG9hZGVyLmdldCgpLCBuZXdSZXF1ZXN0LCByZWRpcmVjdFJl
c3BvbnNlKSkKICAgICAgICAgcmV0dXJuOwogICAgIC8vIEZJWE1FOiBEbyB3ZSBuZWVkIHRvIHVw
ZGF0ZSBOZXR3b3JrUmVzb3VyY2VMb2FkZXIgY2xpZW50Q3JlZGVudGlhbFBvbGljeSBpbiBjYXNl
IGxvYWRlciBwb2xpY3kgaXMgRG9Ob3RBc2tDbGllbnRGb3JDcm9zc09yaWdpbkNyZWRlbnRpYWxz
PwotICAgIG1fY29yZUxvYWRlci0+d2lsbFNlbmRSZXF1ZXN0KFdURjo6bW92ZShuZXdSZXF1ZXN0
KSwgcmVkaXJlY3RSZXNwb25zZSwgW3Byb3RlY3RdKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3Qp
IHsKKyAgICBtX2NvcmVMb2FkZXItPndpbGxTZW5kUmVxdWVzdChXVEZNb3ZlKG5ld1JlcXVlc3Qp
LCByZWRpcmVjdFJlc3BvbnNlLCBbcHJvdGVjdF0oUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkg
ewogICAgICAgICBpZiAoIXByb3RlY3QtPm1fY29yZUxvYWRlcikKICAgICAgICAgICAgIHJldHVy
bjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNj
YXBlL05ldHNjYXBlQnJvd3NlckZ1bmNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZUJyb3dzZXJGdW5jcy5jcHAKaW5kZXggY2M2ZTc0ZDk5
NjY3Y2I1MGVhMzc4MzZkYTBlMzZkNTgwZDcwMTQyNy4uMzkzNzMzYmRhMGZiYmQ0YjVlMGY0NWE3
NzRhN2Y4ZmY2YzFmYTczMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL05ldHNjYXBlL05ldHNjYXBlQnJvd3NlckZ1bmNzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVCcm93c2VyRnVuY3MuY3Bw
CkBAIC0zMDMsNyArMzAzLDcgQEAgc3RhdGljIE5QRXJyb3IgTlBOX1Bvc3RVUkwoTlBQIG5wcCwg
Y29uc3QgY2hhciogdXJsLCBjb25zdCBjaGFyKiB0YXJnZXQsIHVpbnQzMl8KICAgICAgICAgcmV0
dXJuIGVycm9yOwogCiAgICAgUmVmUHRyPE5ldHNjYXBlUGx1Z2luPiBwbHVnaW4gPSBOZXRzY2Fw
ZVBsdWdpbjo6ZnJvbU5QUChucHApOwotICAgIHBsdWdpbi0+bG9hZFVSTCgiUE9TVCIsIG1ha2VV
UkxTdHJpbmcodXJsKSwgdGFyZ2V0LCBXVEY6Om1vdmUoaGVhZGVyRmllbGRzKSwgcG9zdERhdGEs
IGZhbHNlLCAwKTsKKyAgICBwbHVnaW4tPmxvYWRVUkwoIlBPU1QiLCBtYWtlVVJMU3RyaW5nKHVy
bCksIHRhcmdldCwgV1RGTW92ZShoZWFkZXJGaWVsZHMpLCBwb3N0RGF0YSwgZmFsc2UsIDApOwog
ICAgIHJldHVybiBOUEVSUl9OT19FUlJPUjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAK
aW5kZXggOTNlZjM2ZDRlMTYxYzJjOWFiNTUxMDcxOWMxYzU0MGUxNmI1MTY3OC4uYjhhNjNjZDNh
YTJhY2RhODQ1OTJiZjA3YTAwZjYxN2RmMmQwNzJhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4u
Y3BwCkBAIC0zNjIsNyArMzYyLDcgQEAgdWludDMyX3QgTmV0c2NhcGVQbHVnaW46OnNjaGVkdWxl
VGltZXIodW5zaWduZWQgaW50ZXJ2YWwsIGJvb2wgcmVwZWF0LCB2b2lkICgqdGkKICAgICAKICAg
ICAvLyBGSVhNRTogQmFzZWQgb24gdGhlIHBsdWctaW4gdmlzaWJpbGl0eSwgZmlndXJlIG91dCBp
ZiB3ZSBzaG91bGQgdGhyb3R0bGUgdGhlIHRpbWVyLCBvciBpZiB3ZSBzaG91bGQgc3RhcnQgaXQg
YXQgYWxsLgogICAgIHRpbWVyLT5zdGFydCgpOwotICAgIG1fdGltZXJzLnNldCh0aW1lcklELCBX
VEY6Om1vdmUodGltZXIpKTsKKyAgICBtX3RpbWVycy5zZXQodGltZXJJRCwgV1RGTW92ZSh0aW1l
cikpOwogCiAgICAgcmV0dXJuIHRpbWVySUQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvbWFjL05ldHNjYXBlUGx1Z2luTWFjLm1tIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL21hYy9OZXRzY2FwZVBs
dWdpbk1hYy5tbQppbmRleCA5MGNkMWM1MWM3NGY2MjcwOGE3MDc0MzQ3NTJhODBmMTY4ZWNlZjdk
Li41ZTY1NzVkYTY4YzAyZmNkZWM3YzFhYjM5ODkyMDU3YzA3NDQ5Y2U5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvbWFjL05ldHNjYXBlUGx1
Z2luTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2Fw
ZS9tYWMvTmV0c2NhcGVQbHVnaW5NYWMubW0KQEAgLTk5OSw3ICs5OTksNyBAQCBzdGF0aWMgYm9v
bCBjb252ZXJ0U3RyaW5nVG9LZXlDb2RlcyhTdHJpbmdWaWV3IHN0cmluZywgU2NyaXB0Q29kZSBz
Y3JpcHRDb2RlLCBWZQogICAgIGlmIChzdGF0dXMgIT0gbm9FcnIpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAotICAgIGtleUNvZGVzID0gV1RGOjptb3ZlKG91dHB1dERhdGEpOworICAgIGtleUNv
ZGVzID0gV1RGTW92ZShvdXRwdXREYXRhKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9EZXByZWNh
dGVkUERGUGx1Z2luLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9E
ZXByZWNhdGVkUERGUGx1Z2luLm1tCmluZGV4IDk0Njc0NTkzY2UyYjE2ZDQxYmRjMzFkMDA4M2E1
NTFjNGMzN2ZjMWUuLmI3NzE5OWI4MmQ1ODY2ZGY2OTAzNTk4ODYxMjdjNTU5NjQ3NDdjNmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvRGVwcmVjYXRl
ZFBERlBsdWdpbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERG
L0RlcHJlY2F0ZWRQREZQbHVnaW4ubW0KQEAgLTUyNyw3ICs1MjcsNyBAQCBQREZQbHVnaW46OlBE
RlBsdWdpbihXZWJGcmFtZSogZnJhbWUpCiAgICAgICAgIFJlZjxFbGVtZW50PiBhbm5vdGF0aW9u
U3R5bGVFbGVtZW50ID0gZG9jdW1lbnQtPmNyZWF0ZUVsZW1lbnQoc3R5bGVUYWcsIGZhbHNlKTsK
ICAgICAgICAgYW5ub3RhdGlvblN0eWxlRWxlbWVudC0+c2V0VGV4dENvbnRlbnQoYW5ub3RhdGlv
blN0eWxlLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKIAotICAgICAgICBtX2Fubm90YXRpb25Db250
YWluZXItPmFwcGVuZENoaWxkKFdURjo6bW92ZShhbm5vdGF0aW9uU3R5bGVFbGVtZW50KSk7Cisg
ICAgICAgIG1fYW5ub3RhdGlvbkNvbnRhaW5lci0+YXBwZW5kQ2hpbGQoV1RGTW92ZShhbm5vdGF0
aW9uU3R5bGVFbGVtZW50KSk7CiAgICAgICAgIGRvY3VtZW50LT5ib2R5T3JGcmFtZXNldCgpLT5h
cHBlbmRDaGlsZCgqbV9hbm5vdGF0aW9uQ29udGFpbmVyKTsKICAgICB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KaW5kZXggZWMz
M2Y1MzhlOTk5NWFiMjc3OTFlYzY5NGJjNDkzN2ViNDliMjExNy4uYmI2ZDVlZDc3YWY0ZmI1ODIw
YjVkYjRlMzIyMDkwZTAwMjYyNzM3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KQEAgLTM4Miw3ICszODIsNyBAQCAtIChpZClp
bml0V2l0aEFuaW1hdGlvbkNvbXBsZXRpb25IYW5kbGVyOihzdGQ6OmZ1bmN0aW9uPHZvaWQgKGJv
b2wpPiljb21wbGV0aW9uSAogICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQogICAgICAg
ICByZXR1cm4gbmlsOwogCi0gICAgX2NvbXBsZXRpb25IYW5kbGVyID0gV1RGOjptb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKTsKKyAgICBfY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKTsKIAogICAgIHJldHVybiBzZWxmOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5DaG9pY2VBbm5vdGF0aW9uLm1t
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5DaG9pY2VB
bm5vdGF0aW9uLm1tCmluZGV4IDcxMTE1NjFjNGRiM2M2NzgzZWMyMmNkZDdiZDEyYjM1M2QwMzU4
MmQuLjYwOGE5MmU2N2Y1ZWQ2ZTIzZDA5ZTAzYTI1MGFiMjUzYjNjYzM2MmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luQ2hvaWNlQW5u
b3RhdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BE
RlBsdWdpbkNob2ljZUFubm90YXRpb24ubW0KQEAgLTkwLDcgKzkwLDcgQEAgUGFzc1JlZlB0cjxF
bGVtZW50PiBQREZQbHVnaW5DaG9pY2VBbm5vdGF0aW9uOjpjcmVhdGVBbm5vdGF0aW9uRWxlbWVu
dCgpCiAgICAgICAgIGlmIChjaG9pY2UgPT0gc2VsZWN0ZWRDaG9pY2UpCiAgICAgICAgICAgICBj
aG9pY2VPcHRpb24tPnNldEF0dHJpYnV0ZShzZWxlY3RlZEF0dHIsICJzZWxlY3RlZCIpOwogCi0g
ICAgICAgIHN0eWxlZEVsZW1lbnQtPmFwcGVuZENoaWxkKFdURjo6bW92ZShjaG9pY2VPcHRpb24p
KTsKKyAgICAgICAgc3R5bGVkRWxlbWVudC0+YXBwZW5kQ2hpbGQoV1RGTW92ZShjaG9pY2VPcHRp
b24pKTsKICAgICB9CiAKICAgICByZXR1cm4gZWxlbWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZUFyZWFNYXAuY3BwCmluZGV4IDU0ZGRkNzY3
MzQyNTVkYTU1MWE4MmU4NjYyZjNlYWQwMjVmYWQ0YjAuLjZiMjRjZjQ3MzIyMmZkMGMzMjY4YTVk
NzUxMTQ5MTA2YzY1N2Y2MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
U3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9TdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLmNwcApAQCAtNTUsNyArNTUsNyBAQCBzdGF0aWMgdWlu
dDY0X3QgZ2VuZXJhdGVTdG9yYWdlTWFwSUQoKQogCiBSZWY8U3RvcmFnZUFyZWFNYXA+IFN0b3Jh
Z2VBcmVhTWFwOjpjcmVhdGUoU3RvcmFnZU5hbWVzcGFjZUltcGwqIHN0b3JhZ2VOYW1lc3BhY2Us
IFJlZjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4mJiBzZWN1cml0eU9yaWdpbikKIHsKLSAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBTdG9yYWdlQXJlYU1hcChzdG9yYWdlTmFtZXNwYWNlLCBXVEY6
Om1vdmUoc2VjdXJpdHlPcmlnaW4pKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3RvcmFn
ZUFyZWFNYXAoc3RvcmFnZU5hbWVzcGFjZSwgV1RGTW92ZShzZWN1cml0eU9yaWdpbikpKTsKIH0K
IAogU3RvcmFnZUFyZWFNYXA6OlN0b3JhZ2VBcmVhTWFwKFN0b3JhZ2VOYW1lc3BhY2VJbXBsKiBz
dG9yYWdlTmFtZXNwYWNlLCBSZWY8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+JiYgc2VjdXJpdHlP
cmlnaW4pCkBAIC02NCw3ICs2NCw3IEBAIFN0b3JhZ2VBcmVhTWFwOjpTdG9yYWdlQXJlYU1hcChT
dG9yYWdlTmFtZXNwYWNlSW1wbCogc3RvcmFnZU5hbWVzcGFjZSwgUmVmPFdlYkNvCiAgICAgLCBt
X3N0b3JhZ2VUeXBlKHN0b3JhZ2VOYW1lc3BhY2UtPnN0b3JhZ2VUeXBlKCkpCiAgICAgLCBtX3N0
b3JhZ2VOYW1lc3BhY2VJRChzdG9yYWdlTmFtZXNwYWNlLT5zdG9yYWdlTmFtZXNwYWNlSUQoKSkK
ICAgICAsIG1fcXVvdGFJbkJ5dGVzKHN0b3JhZ2VOYW1lc3BhY2UtPnF1b3RhSW5CeXRlcygpKQot
ICAgICwgbV9zZWN1cml0eU9yaWdpbihXVEY6Om1vdmUoc2VjdXJpdHlPcmlnaW4pKQorICAgICwg
bV9zZWN1cml0eU9yaWdpbihXVEZNb3ZlKHNlY3VyaXR5T3JpZ2luKSkKICAgICAsIG1fY3VycmVu
dFNlZWQoMCkKICAgICAsIG1faGFzUGVuZGluZ0NsZWFyKGZhbHNlKQogICAgICwgbV9oYXNQZW5k
aW5nR2V0VmFsdWVzKGZhbHNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9TdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAKaW5kZXggMWIzMWMwMjE3YTgy
OWJkMWE3MTAyMGRkZjBhYzY3NzYwZDRjMjk1Ni4uMThjNzdmOTY3MmI4NWM1OWE1MzhmNTkzNmMx
ODkxMTNkNDc2YjhiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9TdG9y
YWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwCkBAIC04Myw3ICs4Myw3IEBAIFJl
ZlB0cjxTdG9yYWdlQXJlYT4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OnN0b3JhZ2VBcmVhKFJlZlB0
cjxTZWN1cml0eU9yaWdpbj4mJiBzCiAgICAgfSBlbHNlCiAgICAgICAgIG1hcCA9IHNsb3Q7CiAK
LSAgICByZXR1cm4gU3RvcmFnZUFyZWFJbXBsOjpjcmVhdGUoV1RGOjptb3ZlKG1hcCkpOworICAg
IHJldHVybiBTdG9yYWdlQXJlYUltcGw6OmNyZWF0ZShXVEZNb3ZlKG1hcCkpOwogfQogCiBSZWZQ
dHI8U3RvcmFnZU5hbWVzcGFjZT4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNvcHkoUGFnZSogbmV3
UGFnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvVXNlckNvbnRlbnQv
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
VXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmNwcAppbmRleCBjZjNmNDZhODcy
NmYxYzM5OTUzMzllMDc4ODYxYWUwMGNmYzQ1MDk3Li4xY2ZiZDk2MTQ1MzY1N2VkNDNmY2FmZmFj
NmRiNDI5MWQ0OWFhYzQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Vz
ZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuY3BwCkBA
IC0xODgsNyArMTg4LDcgQEAgdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OmFkZFVzZXJD
b250ZW50RXh0ZW5zaW9ucyhjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFMKIHsKICAgICBmb3IgKGNv
bnN0IGF1dG8mIHVzZXJDb250ZW50RXh0ZW5zaW9uIDogdXNlckNvbnRlbnRFeHRlbnNpb25zKSB7
CiAgICAgICAgIFdlYkNvbXBpbGVkQ29udGVudEV4dGVuc2lvbkRhdGEgY29udGVudEV4dGVuc2lv
bkRhdGEgPSB1c2VyQ29udGVudEV4dGVuc2lvbi5zZWNvbmQ7Ci0gICAgICAgIFJlZlB0cjxXZWJD
b21waWxlZENvbnRlbnRFeHRlbnNpb24+IGNvbXBpbGVkQ29udGVudEV4dGVuc2lvbiA9IFdlYkNv
bXBpbGVkQ29udGVudEV4dGVuc2lvbjo6Y3JlYXRlKFdURjo6bW92ZShjb250ZW50RXh0ZW5zaW9u
RGF0YSkpOworICAgICAgICBSZWZQdHI8V2ViQ29tcGlsZWRDb250ZW50RXh0ZW5zaW9uPiBjb21w
aWxlZENvbnRlbnRFeHRlbnNpb24gPSBXZWJDb21waWxlZENvbnRlbnRFeHRlbnNpb246OmNyZWF0
ZShXVEZNb3ZlKGNvbnRlbnRFeHRlbnNpb25EYXRhKSk7CiAgICAgICAgIG1fdXNlckNvbnRlbnRD
b250cm9sbGVyLT5hZGRVc2VyQ29udGVudEV4dGVuc2lvbih1c2VyQ29udGVudEV4dGVuc2lvbi5m
aXJzdCwgY29tcGlsZWRDb250ZW50RXh0ZW5zaW9uKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nlc3Npb25TdGF0ZUNvbnZl
cnNpb24uY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9TZXNz
aW9uU3RhdGVDb252ZXJzaW9uLmNwcAppbmRleCBkN2ZlMTljNDE5MjE1MTEwYWVmMDg4Zjc4YmY4
MGM0NzI1MDU0NWM2Li5lMzJlYWJiYjg2MzBiYzRlNjNhNGY0Y2JkYWUzOTA3NDI0N2Y5ZDQzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nlc3Np
b25TdGF0ZUNvbnZlcnNpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvU2Vzc2lvblN0YXRlQ29udmVyc2lvbi5jcHAKQEAgLTYyLDcgKzYyLDcgQEAg
c3RhdGljIEhUVFBCb2R5IHRvSFRUUEJvZHkoY29uc3QgRm9ybURhdGEmIGZvcm1EYXRhKQogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAotICAgICAgICBodHRwQm9keS5lbGVtZW50cy5h
cHBlbmQoV1RGOjptb3ZlKGVsZW1lbnQpKTsKKyAgICAgICAgaHR0cEJvZHkuZWxlbWVudHMuYXBw
ZW5kKFdURk1vdmUoZWxlbWVudCkpOwogICAgIH0KIAogICAgIHJldHVybiBodHRwQm9keTsKQEAg
LTkxLDcgKzkxLDcgQEAgc3RhdGljIEZyYW1lU3RhdGUgdG9GcmFtZVN0YXRlKGNvbnN0IEhpc3Rv
cnlJdGVtJiBoaXN0b3J5SXRlbSkKICAgICAgICAgSFRUUEJvZHkgaHR0cEJvZHkgPSB0b0hUVFBC
b2R5KCpmb3JtRGF0YSk7CiAgICAgICAgIGh0dHBCb2R5LmNvbnRlbnRUeXBlID0gaGlzdG9yeUl0
ZW0uZm9ybUNvbnRlbnRUeXBlKCk7CiAKLSAgICAgICAgZnJhbWVTdGF0ZS5odHRwQm9keSA9IFdU
Rjo6bW92ZShodHRwQm9keSk7CisgICAgICAgIGZyYW1lU3RhdGUuaHR0cEJvZHkgPSBXVEZNb3Zl
KGh0dHBCb2R5KTsKICAgICB9CiAKICNpZiBQTEFURk9STShJT1MpCkBAIC0xMDQsNyArMTA0LDcg
QEAgc3RhdGljIEZyYW1lU3RhdGUgdG9GcmFtZVN0YXRlKGNvbnN0IEhpc3RvcnlJdGVtJiBoaXN0
b3J5SXRlbSkKIAogICAgIGZvciAoYXV0byYgY2hpbGRIaXN0b3J5SXRlbSA6IGhpc3RvcnlJdGVt
LmNoaWxkcmVuKCkpIHsKICAgICAgICAgRnJhbWVTdGF0ZSBjaGlsZEZyYW1lU3RhdGUgPSB0b0Zy
YW1lU3RhdGUoY2hpbGRIaXN0b3J5SXRlbSk7Ci0gICAgICAgIGZyYW1lU3RhdGUuY2hpbGRyZW4u
YXBwZW5kKFdURjo6bW92ZShjaGlsZEZyYW1lU3RhdGUpKTsKKyAgICAgICAgZnJhbWVTdGF0ZS5j
aGlsZHJlbi5hcHBlbmQoV1RGTW92ZShjaGlsZEZyYW1lU3RhdGUpKTsKICAgICB9CiAKICAgICBy
ZXR1cm4gZnJhbWVTdGF0ZTsKQEAgLTE4Miw3ICsxODIsNyBAQCBzdGF0aWMgdm9pZCBhcHBseUZy
YW1lU3RhdGUoSGlzdG9yeUl0ZW0mIGhpc3RvcnlJdGVtLCBjb25zdCBGcmFtZVN0YXRlJiBmcmFt
ZVN0YQogICAgICAgICBSZWY8SGlzdG9yeUl0ZW0+IGNoaWxkSGlzdG9yeUl0ZW0gPSBIaXN0b3J5
SXRlbTo6Y3JlYXRlKGNoaWxkRnJhbWVTdGF0ZS51cmxTdHJpbmcsIFN0cmluZygpKTsKICAgICAg
ICAgYXBwbHlGcmFtZVN0YXRlKGNoaWxkSGlzdG9yeUl0ZW0sIGNoaWxkRnJhbWVTdGF0ZSk7CiAK
LSAgICAgICAgaGlzdG9yeUl0ZW0uYWRkQ2hpbGRJdGVtKFdURjo6bW92ZShjaGlsZEhpc3RvcnlJ
dGVtKSk7CisgICAgICAgIGhpc3RvcnlJdGVtLmFkZENoaWxkSXRlbShXVEZNb3ZlKGNoaWxkSGlz
dG9yeUl0ZW0pKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAK
aW5kZXggNGQ2MDc5ZDgxMWI0MjdiYThjOWNjMzQ2MmQ3MmVhMGFmZGFjZjM0Yi4uOWIzMzg0OWI4
MDYyZmZjMmMxMjJmYmJjNjhjYjgyZjEwOGE1ZGM2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5jcHAKQEAgLTY5MSw3ICs2OTEsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvclJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9ucwog
CiAgICAgYm9vbCBjYW5TaG93TUlNRVR5cGUgPSB3ZWJQYWdlLT5jYW5TaG93TUlNRVR5cGUocmVz
cG9uc2UubWltZVR5cGUoKSk7CiAKLSAgICB1aW50NjRfdCBsaXN0ZW5lcklEID0gbV9mcmFtZS0+
c2V0VXBQb2xpY3lMaXN0ZW5lcihXVEY6Om1vdmUoZnVuY3Rpb24pKTsKKyAgICB1aW50NjRfdCBs
aXN0ZW5lcklEID0gbV9mcmFtZS0+c2V0VXBQb2xpY3lMaXN0ZW5lcihXVEZNb3ZlKGZ1bmN0aW9u
KSk7CiAgICAgYm9vbCByZWNlaXZlZFBvbGljeUFjdGlvbjsKICAgICB1aW50NjRfdCBwb2xpY3lB
Y3Rpb247CiAgICAgRG93bmxvYWRJRCBkb3dubG9hZElEOwpAQCAtNzI3LDcgKzcyNyw3IEBAIHZv
aWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93
QWN0aW9uKGNvbnN0IE5hdmlnYXRpCiAgICAgfQogCiAKLSAgICB1aW50NjRfdCBsaXN0ZW5lcklE
ID0gbV9mcmFtZS0+c2V0VXBQb2xpY3lMaXN0ZW5lcihXVEY6Om1vdmUoZnVuY3Rpb24pKTsKKyAg
ICB1aW50NjRfdCBsaXN0ZW5lcklEID0gbV9mcmFtZS0+c2V0VXBQb2xpY3lMaXN0ZW5lcihXVEZN
b3ZlKGZ1bmN0aW9uKSk7CiAKICAgICBOYXZpZ2F0aW9uQWN0aW9uRGF0YSBuYXZpZ2F0aW9uQWN0
aW9uRGF0YTsKICAgICBuYXZpZ2F0aW9uQWN0aW9uRGF0YS5uYXZpZ2F0aW9uVHlwZSA9IGFjdGlv
bi0+bmF2aWdhdGlvblR5cGUoKTsKQEAgLTc2Nyw3ICs3NjcsNyBAQCB2b2lkIFdlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oY29uc3Qg
TmF2aWdhdAogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIHVpbnQ2NF90IGxpc3Rl
bmVySUQgPSBtX2ZyYW1lLT5zZXRVcFBvbGljeUxpc3RlbmVyKFdURjo6bW92ZShmdW5jdGlvbikp
OworICAgIHVpbnQ2NF90IGxpc3RlbmVySUQgPSBtX2ZyYW1lLT5zZXRVcFBvbGljeUxpc3RlbmVy
KFdURk1vdmUoZnVuY3Rpb24pKTsKICAgICBib29sIHJlY2VpdmVkUG9saWN5QWN0aW9uOwogICAg
IHVpbnQ2NF90IG5ld05hdmlnYXRpb25JRDsKICAgICB1aW50NjRfdCBwb2xpY3lBY3Rpb247CkBA
IC04NzQsNyArODc0LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hXaWxs
U3VibWl0Rm9ybShQYXNzUmVmUHRyPEZvcm1TdGF0ZT4gcHJwRm9ybVMKICAgICB3ZWJQYWdlLT5p
bmplY3RlZEJ1bmRsZUZvcm1DbGllbnQoKS53aWxsU3VibWl0Rm9ybSh3ZWJQYWdlLCBmb3JtLCBt
X2ZyYW1lLCBzb3VyY2VGcmFtZSwgdmFsdWVzLCB1c2VyRGF0YSk7CiAKIAotICAgIHVpbnQ2NF90
IGxpc3RlbmVySUQgPSBtX2ZyYW1lLT5zZXRVcFBvbGljeUxpc3RlbmVyKFdURjo6bW92ZShmdW5j
dGlvbikpOworICAgIHVpbnQ2NF90IGxpc3RlbmVySUQgPSBtX2ZyYW1lLT5zZXRVcFBvbGljeUxp
c3RlbmVyKFdURk1vdmUoZnVuY3Rpb24pKTsKIAogICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6V2lsbFN1Ym1pdEZvcm0obV9mcmFtZS0+ZnJhbWVJRCgpLCBzb3VyY2VG
cmFtZS0+ZnJhbWVJRCgpLCB2YWx1ZXMsIGxpc3RlbmVySUQsIFVzZXJEYXRhKFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXModXNlckRhdGEuZ2V0KCkpLmdl
dCgpKSkpOwogfQpAQCAtMTcwMiw3ICsxNzAyLDcgQEAgUGFzc1JlZlB0cjxGcmFtZU5ldHdvcmtp
bmdDb250ZXh0PiBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlTmV0d29ya2luZ0NvbnRleHQK
IHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNvbnRlbnRGaWx0ZXJEaWRCbG9ja0xvYWQoV2Vi
Q29yZTo6Q29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyIHVuYmxvY2tIYW5kbGVyKQogewogICAg
IGlmICghdW5ibG9ja0hhbmRsZXIubmVlZHNVSVByb2Nlc3MoKSkgewotICAgICAgICBtX2ZyYW1l
LT5jb3JlRnJhbWUoKS0+bG9hZGVyKCkucG9saWN5Q2hlY2tlcigpLnNldENvbnRlbnRGaWx0ZXJV
bmJsb2NrSGFuZGxlcihXVEY6Om1vdmUodW5ibG9ja0hhbmRsZXIpKTsKKyAgICAgICAgbV9mcmFt
ZS0+Y29yZUZyYW1lKCktPmxvYWRlcigpLnBvbGljeUNoZWNrZXIoKS5zZXRDb250ZW50RmlsdGVy
VW5ibG9ja0hhbmRsZXIoV1RGTW92ZSh1bmJsb2NrSGFuZGxlcikpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYlBhc3RlYm9hcmRPdmVycmlkZXMuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQYXN0ZWJvYXJkT3ZlcnJpZGVzLmNwcAppbmRleCAxYTEz
MWYyYzJlZGVmZjEzYzk3YTYzZmViYTNjNjI1ZmMyYjJlMmE0Li5mMWVjNmUyYWE1YTk4MmY0ODRj
Y2ZjNzk1MzA2OThmZjJkMDk4MTdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBhc3RlYm9hcmRPdmVycmlkZXMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGFzdGVib2FyZE92ZXJyaWRl
cy5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAgdm9pZCBXZWJQYXN0ZWJvYXJkT3ZlcnJpZGVzOjphZGRP
dmVycmlkZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHIKIAogICAgIGlm
IChhZGRSZXN1bHQuaXNOZXdFbnRyeSkgewogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8SGFzaE1h
cDxTdHJpbmcsIFZlY3Rvcjx1aW50OF90Pj4+IHR5cGVNYXAgPSBzdGQ6Om1ha2VfdW5pcXVlPEhh
c2hNYXA8U3RyaW5nLCBWZWN0b3I8dWludDhfdD4+PigpOwotICAgICAgICBhZGRSZXN1bHQuaXRl
cmF0b3ItPnZhbHVlID0gV1RGOjptb3ZlKHR5cGVNYXApOworICAgICAgICBhZGRSZXN1bHQuaXRl
cmF0b3ItPnZhbHVlID0gV1RGTW92ZSh0eXBlTWFwKTsKICAgICB9CiAKICAgICBhZGRSZXN1bHQu
aXRlcmF0b3ItPnZhbHVlLT5zZXQodHlwZSwgZGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2d0ay9XZWJFZGl0b3JDbGllbnRHdGsuY3Bw
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9ndGsvV2ViRWRpdG9y
Q2xpZW50R3RrLmNwcAppbmRleCAzYmQ5NjU1ODljYjZmN2E5OGRkOWUxMTg4OWYzZjY0OTVmOTIw
OWY0Li4wYTliYWIzYmViMGFiNDQyNzM1YzljNzk2NThjYzU4MWEzNTNhZTUyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2d0ay9XZWJFZGl0b3JD
bGllbnRHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvZ3RrL1dlYkVkaXRvckNsaWVudEd0ay5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgYm9vbCBXZWJF
ZGl0b3JDbGllbnQ6OmV4ZWN1dGVQZW5kaW5nRWRpdG9yQ29tbWFuZHMoRnJhbWUqIGZyYW1lLCBj
b25zdCBWZWN0b3I8V1QKICAgICAgICAgaWYgKGNvbW1hbmQuaXNUZXh0SW5zZXJ0aW9uKCkgJiYg
IWFsbG93VGV4dEluc2VydGlvbikKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAg
ICBjb21tYW5kcy5hcHBlbmQoV1RGOjptb3ZlKGNvbW1hbmQpKTsKKyAgICAgICAgY29tbWFuZHMu
YXBwZW5kKFdURk1vdmUoY29tbWFuZCkpOwogICAgIH0KIAogICAgIGZvciAoYXV0byYgY29tbWFu
ZCA6IGNvbW1hbmRzKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvRmluZENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0ZpbmRDb250cm9sbGVyLmNwcAppbmRleCBkMzBlN2M4YjZhOGZlYmUwNGZjYzAxMmQyZGI0
ZDBjNTAwZDUyZDBlLi5iZjVjZDE3YzJjNWFjYjE1ZTY1M2NiNWI3OTRmN2Q1YTQxMDQxZTE0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xs
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJv
bGxlci5jcHAKQEAgLTI2NSw3ICsyNjUsNyBAQCB2b2lkIEZpbmRDb250cm9sbGVyOjpmaW5kU3Ry
aW5nTWF0Y2hlcyhjb25zdCBTdHJpbmcmIHN0cmluZywgRmluZE9wdGlvbnMgb3B0aW9ucwogICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9maW5kTWF0Y2hlcy5zaXplKCk7ICsraSkgewogICAg
ICAgICBWZWN0b3I8SW50UmVjdD4gcmVjdHM7CiAgICAgICAgIG1fZmluZE1hdGNoZXNbaV0tPmFi
c29sdXRlVGV4dFJlY3RzKHJlY3RzKTsKLSAgICAgICAgbWF0Y2hSZWN0cy5hcHBlbmQoV1RGOjpt
b3ZlKHJlY3RzKSk7CisgICAgICAgIG1hdGNoUmVjdHMuYXBwZW5kKFdURk1vdmUocmVjdHMpKTsK
ICAgICB9CiAKICAgICBtX3dlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlk
RmluZFN0cmluZ01hdGNoZXMoc3RyaW5nLCBtYXRjaFJlY3RzLCBpbmRleEZvclNlbGVjdGlvbikp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdVcGRh
dGVEaXNwYXRjaGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3
VXBkYXRlRGlzcGF0Y2hlci5jcHAKaW5kZXggZDk3MTZlYjUwMTlhYTdhN2VjNWMzNzliNTU1MDNk
M2MwMDYyNTgzYi4uZjY1YjAyZjQyOTExM2RhOTkzZGU2NTFhYTNkMDc3M2FjOTE4OThkNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdVcGRhdGVEaXNw
YXRjaGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld1Vw
ZGF0ZURpc3BhdGNoZXIuY3BwCkBAIC03OSw3ICs3OSw3IEBAIHZvaWQgVmlld1VwZGF0ZURpc3Bh
dGNoZXI6OmRpc3BhdGNoVmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlKCkKICAgICBIYXNoTWFwPHVp
bnQ2NF90LCBVcGRhdGVEYXRhPiB1cGRhdGU7CiAgICAgewogICAgICAgICBMb2NrSG9sZGVyIGxv
Y2tlcigmbV9kYXRhTXV0ZXgpOwotICAgICAgICB1cGRhdGUgPSBXVEY6Om1vdmUobV9sYXRlc3RV
cGRhdGUpOworICAgICAgICB1cGRhdGUgPSBXVEZNb3ZlKG1fbGF0ZXN0VXBkYXRlKTsKICAgICB9
CiAKICAgICBmb3IgKGF1dG8mIHNsb3QgOiB1cGRhdGUpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCmluZGV4IDkxNTMwYTc2ZTkwNTI2YzJhNDAx
NGNiYWE2ZjRjM2VhMGY4ZGZhYzcuLmEyMjE5MmQ5NWM5MDkwNWQwM2IwMGM0OGFmYzY5NWNmNTli
ODVmMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJG
cmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1l
LmNwcApAQCAtMTI4LDcgKzEyOCw3IEBAIFBhc3NSZWZQdHI8V2ViRnJhbWU+IFdlYkZyYW1lOjpj
cmVhdGVTdWJmcmFtZShXZWJQYWdlKiBwYWdlLCBjb25zdCBTdHJpbmcmIGZyYW1lCiAgICAgZnJh
bWUtPm1fY29yZUZyYW1lLT50cmVlKCkuc2V0TmFtZShmcmFtZU5hbWUpOwogICAgIGlmIChvd25l
ckVsZW1lbnQpIHsKICAgICAgICAgQVNTRVJUKG93bmVyRWxlbWVudC0+ZG9jdW1lbnQoKS5mcmFt
ZSgpKTsKLSAgICAgICAgb3duZXJFbGVtZW50LT5kb2N1bWVudCgpLmZyYW1lKCktPnRyZWUoKS5h
cHBlbmRDaGlsZChXVEY6Om1vdmUoY29yZUZyYW1lKSk7CisgICAgICAgIG93bmVyRWxlbWVudC0+
ZG9jdW1lbnQoKS5mcmFtZSgpLT50cmVlKCkuYXBwZW5kQ2hpbGQoV1RGTW92ZShjb3JlRnJhbWUp
KTsKICAgICB9CiAgICAgZnJhbWUtPm1fY29yZUZyYW1lLT5pbml0KCk7CiAgICAgcmV0dXJuIGZy
YW1lLnJlbGVhc2UoKTsKQEAgLTEzNiw3ICsxMzYsNyBAQCBQYXNzUmVmUHRyPFdlYkZyYW1lPiBX
ZWJGcmFtZTo6Y3JlYXRlU3ViZnJhbWUoV2ViUGFnZSogcGFnZSwgY29uc3QgU3RyaW5nJiBmcmFt
ZQogCiBQYXNzUmVmUHRyPFdlYkZyYW1lPiBXZWJGcmFtZTo6Y3JlYXRlKHN0ZDo6dW5pcXVlX3B0
cjxXZWJGcmFtZUxvYWRlckNsaWVudD4gZnJhbWVMb2FkZXJDbGllbnQpCiB7Ci0gICAgUmVmUHRy
PFdlYkZyYW1lPiBmcmFtZSA9IGFkb3B0UmVmKG5ldyBXZWJGcmFtZShXVEY6Om1vdmUoZnJhbWVM
b2FkZXJDbGllbnQpKSk7CisgICAgUmVmUHRyPFdlYkZyYW1lPiBmcmFtZSA9IGFkb3B0UmVmKG5l
dyBXZWJGcmFtZShXVEZNb3ZlKGZyYW1lTG9hZGVyQ2xpZW50KSkpOwogCiAgICAgLy8gQWRkIGV4
cGxpY3QgcmVmKCkgdGhhdCB3aWxsIGJlIGJhbGFuY2VkIGluIFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjpmcmFtZUxvYWRlckRlc3Ryb3llZCgpLgogICAgIGZyYW1lLT5yZWYoKTsKQEAgLTE0OSw3ICsx
NDksNyBAQCBXZWJGcmFtZTo6V2ViRnJhbWUoc3RkOjp1bmlxdWVfcHRyPFdlYkZyYW1lTG9hZGVy
Q2xpZW50PiBmcmFtZUxvYWRlckNsaWVudCkKICAgICAsIG1fcG9saWN5TGlzdGVuZXJJRCgwKQog
ICAgICwgbV9wb2xpY3lGdW5jdGlvbigwKQogICAgICwgbV9wb2xpY3lEb3dubG9hZElEKDApCi0g
ICAgLCBtX2ZyYW1lTG9hZGVyQ2xpZW50KFdURjo6bW92ZShmcmFtZUxvYWRlckNsaWVudCkpCisg
ICAgLCBtX2ZyYW1lTG9hZGVyQ2xpZW50KFdURk1vdmUoZnJhbWVMb2FkZXJDbGllbnQpKQogICAg
ICwgbV9sb2FkTGlzdGVuZXIoMCkKICAgICAsIG1fZnJhbWVJRChnZW5lcmF0ZUZyYW1lSUQoKSkK
ICNpZiBQTEFURk9STShJT1MpCkBAIC0yMzMsNyArMjMzLDcgQEAgdm9pZCBXZWJGcmFtZTo6ZGlk
UmVjZWl2ZVBvbGljeURlY2lzaW9uKHVpbnQ2NF90IGxpc3RlbmVySUQsIFBvbGljeUFjdGlvbiBh
Y3Rpb24KIAogICAgIEFTU0VSVChtX3BvbGljeUZ1bmN0aW9uKTsKIAotICAgIEZyYW1lUG9saWN5
RnVuY3Rpb24gZnVuY3Rpb24gPSBXVEY6Om1vdmUobV9wb2xpY3lGdW5jdGlvbik7CisgICAgRnJh
bWVQb2xpY3lGdW5jdGlvbiBmdW5jdGlvbiA9IFdURk1vdmUobV9wb2xpY3lGdW5jdGlvbik7CiAK
ICAgICBpbnZhbGlkYXRlUG9saWN5TGlzdGVuZXIoKTsKIApAQCAtNDQ1LDcgKzQ0NSw3IEBAIFJl
ZjxBUEk6OkFycmF5PiBXZWJGcmFtZTo6Y2hpbGRGcmFtZXMoKQogICAgICAgICB2ZWN0b3IudW5j
aGVja2VkQXBwZW5kKHdlYkZyYW1lKTsKICAgICB9CiAKLSAgICByZXR1cm4gQVBJOjpBcnJheTo6
Y3JlYXRlKFdURjo6bW92ZSh2ZWN0b3IpKTsKKyAgICByZXR1cm4gQVBJOjpBcnJheTo6Y3JlYXRl
KFdURk1vdmUodmVjdG9yKSk7CiB9CiAKIFN0cmluZyBXZWJGcmFtZTo6bGF5ZXJUcmVlQXNUZXh0
KCkgY29uc3QKQEAgLTgyNiw3ICs4MjYsNyBAQCBQYXNzUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4g
V2ViRnJhbWU6OmNyZWF0ZVNlbGVjdGlvblNuYXBzaG90KCkgY29uc3QKICAgICBhdXRvIGdyYXBo
aWNzQ29udGV4dCA9IHNoYXJlZFNuYXBzaG90LT5jcmVhdGVHcmFwaGljc0NvbnRleHQoKTsKICAg
ICBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvciA9IGNvcmVGcmFtZSgpLT5wYWdlKCktPmRldmljZVNj
YWxlRmFjdG9yKCk7CiAgICAgZ3JhcGhpY3NDb250ZXh0LT5zY2FsZShGbG9hdFNpemUoZGV2aWNl
U2NhbGVGYWN0b3IsIGRldmljZVNjYWxlRmFjdG9yKSk7Ci0gICAgZ3JhcGhpY3NDb250ZXh0LT5k
cmF3Q29uc3VtaW5nSW1hZ2VCdWZmZXIoV1RGOjptb3ZlKHNuYXBzaG90KSwgRmxvYXRQb2ludCgp
KTsKKyAgICBncmFwaGljc0NvbnRleHQtPmRyYXdDb25zdW1pbmdJbWFnZUJ1ZmZlcihXVEZNb3Zl
KHNuYXBzaG90KSwgRmxvYXRQb2ludCgpKTsKIAogICAgIHJldHVybiBzaGFyZWRTbmFwc2hvdC5y
ZWxlYXNlKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAKaW5kZXggOGQ5YWY4YTA4NTk4ZDY3NjBiZDMxZmQ2ODhlYzNiZDM0ZDM3OTEyYy4uNmE1
ZGM3YmExYmM2NTRjNzUyZGYzYWU0MTI1OGY2MTQ4ODM5ZjA4YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtNjIwLDcgKzYyMCw3IEBAIHZv
aWQgV2ViUGFnZTo6c2V0SW5qZWN0ZWRCdW5kbGVDb250ZXh0TWVudUNsaWVudChzdGQ6OnVuaXF1
ZV9wdHI8QVBJOjpJbmplY3RlZEJ1CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX2Nv
bnRleHRNZW51Q2xpZW50ID0gV1RGOjptb3ZlKGNvbnRleHRNZW51Q2xpZW50KTsKKyAgICBtX2Nv
bnRleHRNZW51Q2xpZW50ID0gV1RGTW92ZShjb250ZXh0TWVudUNsaWVudCk7CiB9CiAjZW5kaWYK
IApAQCAtNjM2LDcgKzYzNiw3IEBAIHZvaWQgV2ViUGFnZTo6c2V0SW5qZWN0ZWRCdW5kbGVGb3Jt
Q2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkluamVjdGVkQnVuZGxlOjpGCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBtX2Zvcm1DbGllbnQgPSBXVEY6Om1vdmUoZm9ybUNsaWVudCk7
CisgICAgbV9mb3JtQ2xpZW50ID0gV1RGTW92ZShmb3JtQ2xpZW50KTsKIH0KIAogdm9pZCBXZWJQ
YWdlOjppbml0aWFsaXplSW5qZWN0ZWRCdW5kbGVMb2FkZXJDbGllbnQoV0tCdW5kbGVQYWdlTG9h
ZGVyQ2xpZW50QmFzZSogY2xpZW50KQpAQCAtNjc1LDcgKzY3NSw3IEBAIHZvaWQgV2ViUGFnZTo6
c2V0SW5qZWN0ZWRCdW5kbGVVSUNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpJbmplY3RlZEJ1
bmRsZTo6UGFnCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX3VpQ2xpZW50ID0gV1RG
Ojptb3ZlKHVpQ2xpZW50KTsKKyAgICBtX3VpQ2xpZW50ID0gV1RGTW92ZSh1aUNsaWVudCk7CiB9
CiAKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCkBAIC04NDAsNyArODQwLDcgQEAgUmVmPEFQ
STo6QXJyYXk+IFdlYlBhZ2U6OnRyYWNrZWRSZXBhaW50UmVjdHMoKQogICAgIGZvciAoY29uc3Qg
YXV0byYgcmVwYWludFJlY3QgOiB2aWV3LT50cmFja2VkUmVwYWludFJlY3RzKCkpCiAgICAgICAg
IHJlcGFpbnRSZWN0cy51bmNoZWNrZWRBcHBlbmQoQVBJOjpSZWN0OjpjcmVhdGUodG9BUEkocmVw
YWludFJlY3QpKSk7CiAKLSAgICByZXR1cm4gQVBJOjpBcnJheTo6Y3JlYXRlKFdURjo6bW92ZShy
ZXBhaW50UmVjdHMpKTsKKyAgICByZXR1cm4gQVBJOjpBcnJheTo6Y3JlYXRlKFdURk1vdmUocmVw
YWludFJlY3RzKSk7CiB9CiAKIFBsdWdpblZpZXcqIFdlYlBhZ2U6OmZvY3VzZWRQbHVnaW5WaWV3
Rm9yRnJhbWUoRnJhbWUmIGZyYW1lKQpAQCAtNDk2Miw3ICs0OTYyLDcgQEAgUmVmPERvY3VtZW50
TG9hZGVyPiBXZWJQYWdlOjpjcmVhdGVEb2N1bWVudExvYWRlcihGcmFtZSYgZnJhbWUsIGNvbnN0
IFJlc291cmNlUmUKICAgICAgICAgfQogICAgIH0KIAotICAgIHJldHVybiBXVEY6Om1vdmUoZG9j
dW1lbnRMb2FkZXIpOworICAgIHJldHVybiBXVEZNb3ZlKGRvY3VtZW50TG9hZGVyKTsKIH0KIAog
dm9pZCBXZWJQYWdlOjp1cGRhdGVDYWNoZWREb2N1bWVudExvYWRlcihXZWJEb2N1bWVudExvYWRl
ciYgZG9jdW1lbnRMb2FkZXIsIEZyYW1lJiBmcmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlR3JvdXBQcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZUdyb3VwUHJveHkuY3BwCmluZGV4IGFlNTUz
MmFlNDM5YTFhOThmMjU3MTVlMDA1ZGEzNjc1NzI3OTE5ZGEuLjRkYjVlNDMxYzBmN2Y1OTVlMzgw
MWVlM2YyY2M0YzQ3OWMyMWY4ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlR3JvdXBQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2VHcm91cFByb3h5LmNwcApAQCAtMTAwLDcgKzEwMCw3IEBA
IHZvaWQgV2ViUGFnZUdyb3VwUHJveHk6OnJlbW92ZUFsbFVzZXJDb250ZW50KCkKICNpZiBFTkFC
TEUoQ09OVEVOVF9FWFRFTlNJT05TKQogdm9pZCBXZWJQYWdlR3JvdXBQcm94eTo6YWRkVXNlckNv
bnRlbnRFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBuYW1lLCBXZWJDb21waWxlZENvbnRlbnRFeHRl
bnNpb25EYXRhIGNvbnRlbnRFeHRlbnNpb25EYXRhKQogewotICAgIFJlZlB0cjxXZWJDb21waWxl
ZENvbnRlbnRFeHRlbnNpb24+IGNvbXBpbGVkQ29udGVudEV4dGVuc2lvbiA9IFdlYkNvbXBpbGVk
Q29udGVudEV4dGVuc2lvbjo6Y3JlYXRlKFdURjo6bW92ZShjb250ZW50RXh0ZW5zaW9uRGF0YSkp
OworICAgIFJlZlB0cjxXZWJDb21waWxlZENvbnRlbnRFeHRlbnNpb24+IGNvbXBpbGVkQ29udGVu
dEV4dGVuc2lvbiA9IFdlYkNvbXBpbGVkQ29udGVudEV4dGVuc2lvbjo6Y3JlYXRlKFdURk1vdmUo
Y29udGVudEV4dGVuc2lvbkRhdGEpKTsKICAgICB1c2VyQ29udGVudENvbnRyb2xsZXIoKS5hZGRV
c2VyQ29udGVudEV4dGVuc2lvbihuYW1lLCBjb21waWxlZENvbnRlbnRFeHRlbnNpb24pOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZU92
ZXJsYXkuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2VPdmVy
bGF5LmNwcAppbmRleCA2YmFkYzg2YzUzZWMzMDI2ZDA4Y2E3YTU5ZjI4YmI0YWY2MzkzNjc5Li5l
ODAyZWQzYmIyNmM2OGRiYTI4YjcyNDQ5N2RjODhiMjNlOTk0YWViIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZU92ZXJsYXkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlT3ZlcmxheS5jcHAKQEAgLTQ0
LDEyICs0NCwxMiBAQCBzdGF0aWMgSGFzaE1hcDxQYWdlT3ZlcmxheSosIFdlYlBhZ2VPdmVybGF5
Kj4mIG92ZXJsYXlNYXAoKQogCiBSZWY8V2ViUGFnZU92ZXJsYXk+IFdlYlBhZ2VPdmVybGF5Ojpj
cmVhdGUoc3RkOjp1bmlxdWVfcHRyPFdlYlBhZ2VPdmVybGF5OjpDbGllbnQ+IGNsaWVudCwgUGFn
ZU92ZXJsYXk6Ok92ZXJsYXlUeXBlIG92ZXJsYXlUeXBlKQogewotICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFdlYlBhZ2VPdmVybGF5KFdURjo6bW92ZShjbGllbnQpLCBvdmVybGF5VHlwZSkpOwor
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlBhZ2VPdmVybGF5KFdURk1vdmUoY2xpZW50KSwg
b3ZlcmxheVR5cGUpKTsKIH0KIAogV2ViUGFnZU92ZXJsYXk6OldlYlBhZ2VPdmVybGF5KHN0ZDo6
dW5pcXVlX3B0cjxXZWJQYWdlT3ZlcmxheTo6Q2xpZW50PiBjbGllbnQsIFBhZ2VPdmVybGF5OjpP
dmVybGF5VHlwZSBvdmVybGF5VHlwZSkKICAgICA6IG1fb3ZlcmxheShQYWdlT3ZlcmxheTo6Y3Jl
YXRlKCp0aGlzLCBvdmVybGF5VHlwZSkpCi0gICAgLCBtX2NsaWVudChXVEY6Om1vdmUoY2xpZW50
KSkKKyAgICAsIG1fY2xpZW50KFdURk1vdmUoY2xpZW50KSkKIHsKICAgICBBU1NFUlQobV9jbGll
bnQpOwogICAgIG92ZXJsYXlNYXAoKS5hZGQobV9vdmVybGF5LmdldCgpLCB0aGlzKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvTGF5ZXJUcmVlSG9z
dEd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0xheWVyVHJl
ZUhvc3RHdGsuY3BwCmluZGV4IGM4ZDUxNjJlNjgzNzcyNGQwNDE2ODExZDY0Y2ZhNTRiMzc5NDAw
ZjYuLjViODNjNzIzZTlmOGVmMjZkYmI0ODZhZDRiZWJiMWUzM2YwOWY5MTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvTGF5ZXJUcmVlSG9zdEd0ay5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9MYXllclRyZWVI
b3N0R3RrLmNwcApAQCAtNjIsNyArNjIsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIG5h
bWVzcGFjZSBXZWJLaXQgewogCiBMYXllclRyZWVIb3N0R3RrOjpSZW5kZXJGcmFtZVNjaGVkdWxl
cjo6UmVuZGVyRnJhbWVTY2hlZHVsZXIoc3RkOjpmdW5jdGlvbjxib29sKCk+IHJlbmRlcmVyKQot
ICAgIDogbV9yZW5kZXJlcihXVEY6Om1vdmUocmVuZGVyZXIpKQorICAgIDogbV9yZW5kZXJlcihX
VEZNb3ZlKHJlbmRlcmVyKSkKICAgICAsIG1fdGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAm
TGF5ZXJUcmVlSG9zdEd0azo6UmVuZGVyRnJhbWVTY2hlZHVsZXI6OnJlbmRlckZyYW1lKQogewog
ICAgIC8vIFdlIHVzZSBhIFJ1bkxvb3AgdGltZXIgYmVjYXVzZSBvdGhlcndpc2UgR1RLKyBldmVu
dCBoYW5kbGluZyBkdXJpbmcgZHJhZ2dpbmcgY2FuIHN0YXJ2ZSBXZWJDb3JlIHRpbWVycywgd2hp
Y2ggaGF2ZSBhIGxvd2VyIHByaW9yaXR5LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCmluZGV4IGZhZTI3YWQ3YTM2ZTA2ZDhhOGQ0
YTQ3OTAxOTE0OWQxN2NhYTVmNmIuLjU0OTg4NDMzZWRjZWE4NTE3NDRmMmJiNWNjNDU2MTg3NDIy
ZGFmNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3Mv
V2ViUGFnZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9z
L1dlYlBhZ2VJT1MubW0KQEAgLTI5OTYsNyArMjk5Niw3IEBAIHZvaWQgV2ViUGFnZTo6Y29tcHV0
ZVBhZ2VzRm9yUHJpbnRpbmdBbmRTdGFydERyYXdpbmdUb1BERih1aW50NjRfdCBmcmFtZUlELCBj
b25zCiAgICAgZG91YmxlIHRvdGFsU2NhbGVGYWN0b3IgPSAxOwogICAgIGNvbXB1dGVQYWdlc0Zv
clByaW50aW5nSW1wbChmcmFtZUlELCBwcmludEluZm8sIHBhZ2VSZWN0cywgdG90YWxTY2FsZUZh
Y3Rvcik7CiAgICAgc3RkOjpzaXplX3QgcGFnZUNvdW50ID0gcGFnZVJlY3RzLnNpemUoKTsKLSAg
ICByZXBseS0+c2VuZChXVEY6Om1vdmUocGFnZVJlY3RzKSwgdG90YWxTY2FsZUZhY3Rvcik7Cisg
ICAgcmVwbHktPnNlbmQoV1RGTW92ZShwYWdlUmVjdHMpLCB0b3RhbFNjYWxlRmFjdG9yKTsKIAog
ICAgIFJldGFpblB0cjxDRk11dGFibGVEYXRhUmVmPiBwZGZQYWdlRGF0YTsKICAgICBkcmF3UGFn
ZXNUb1BERkltcGwoZnJhbWVJRCwgcHJpbnRJbmZvLCBmaXJzdFBhZ2UsIHBhZ2VDb3VudCAtIGZp
cnN0UGFnZSwgcGRmUGFnZURhdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlLm1tIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlLm1t
CmluZGV4IGJiNDVmMTk5M2VjYmNkMTRmNTBmMTRlNTNlZTdjODc2YzljM2YwZjguLmQzNWU2YmJi
NDAzMzRmZDI0MDUwZGFlYzg1MWIxMGQ4MTI4NDMwMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1DQUFuaW1hdGlvblJlbW90ZS5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FBbmlt
YXRpb25SZW1vdGUubW0KQEAgLTQyMSw3ICs0MjEsNyBAQCB2b2lkIFBsYXRmb3JtQ0FBbmltYXRp
b25SZW1vdGU6OnNldFRpbWluZ0Z1bmN0aW9uKGNvbnN0IFRpbWluZ0Z1bmN0aW9uKiB2YWx1ZSwg
YgogICAgIFZlY3RvcjxSZWZQdHI8VGltaW5nRnVuY3Rpb24+PiB0aW1pbmdGdW5jdGlvbnM7CiAg
ICAgdGltaW5nRnVuY3Rpb25zLmFwcGVuZCh2YWx1ZS0+Y2xvbmUoKSk7CiAKLSAgICBtX3Byb3Bl
cnRpZXMudGltaW5nRnVuY3Rpb25zID0gV1RGOjptb3ZlKHRpbWluZ0Z1bmN0aW9ucyk7CisgICAg
bV9wcm9wZXJ0aWVzLnRpbWluZ0Z1bmN0aW9ucyA9IFdURk1vdmUodGltaW5nRnVuY3Rpb25zKTsK
ICAgICBtX3Byb3BlcnRpZXMucmV2ZXJzZVRpbWluZ0Z1bmN0aW9ucyA9IHJldmVyc2U7CiB9CiAK
QEAgLTU4NSw3ICs1ODUsNyBAQCB2b2lkIFBsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGU6OnNldFZh
bHVlcyhjb25zdCBWZWN0b3I8ZmxvYXQ+JiB2YWx1ZXMpCiAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCB2YWx1ZXMuc2l6ZSgpOyArK2kpCiAgICAgICAgIGtleWZyYW1lcy51bmNoZWNrZWRBcHBl
bmQoS2V5ZnJhbWVWYWx1ZSh2YWx1ZXNbaV0pKTsKICAgICAKLSAgICBtX3Byb3BlcnRpZXMua2V5
VmFsdWVzID0gV1RGOjptb3ZlKGtleWZyYW1lcyk7CisgICAgbV9wcm9wZXJ0aWVzLmtleVZhbHVl
cyA9IFdURk1vdmUoa2V5ZnJhbWVzKTsKIH0KIAogdm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uUmVt
b3RlOjpzZXRWYWx1ZXMoY29uc3QgVmVjdG9yPFRyYW5zZm9ybWF0aW9uTWF0cml4PiYgdmFsdWVz
KQpAQCAtNTk5LDcgKzU5OSw3IEBAIHZvaWQgUGxhdGZvcm1DQUFuaW1hdGlvblJlbW90ZTo6c2V0
VmFsdWVzKGNvbnN0IFZlY3RvcjxUcmFuc2Zvcm1hdGlvbk1hdHJpeD4mIHZhCiAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCB2YWx1ZXMuc2l6ZSgpOyArK2kpCiAgICAgICAgIGtleWZyYW1lcy51
bmNoZWNrZWRBcHBlbmQoS2V5ZnJhbWVWYWx1ZSh2YWx1ZXNbaV0pKTsKICAgICAKLSAgICBtX3By
b3BlcnRpZXMua2V5VmFsdWVzID0gV1RGOjptb3ZlKGtleWZyYW1lcyk7CisgICAgbV9wcm9wZXJ0
aWVzLmtleVZhbHVlcyA9IFdURk1vdmUoa2V5ZnJhbWVzKTsKIH0KIAogdm9pZCBQbGF0Zm9ybUNB
QW5pbWF0aW9uUmVtb3RlOjpzZXRWYWx1ZXMoY29uc3QgVmVjdG9yPEZsb2F0UG9pbnQzRD4mIHZh
bHVlcykKQEAgLTYxMyw3ICs2MTMsNyBAQCB2b2lkIFBsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGU6
OnNldFZhbHVlcyhjb25zdCBWZWN0b3I8RmxvYXRQb2ludDNEPiYgdmFsdWVzKQogICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgdmFsdWVzLnNpemUoKTsgKytpKQogICAgICAgICBrZXlmcmFtZXMu
dW5jaGVja2VkQXBwZW5kKEtleWZyYW1lVmFsdWUodmFsdWVzW2ldKSk7CiAgICAgCi0gICAgbV9w
cm9wZXJ0aWVzLmtleVZhbHVlcyA9IFdURjo6bW92ZShrZXlmcmFtZXMpOworICAgIG1fcHJvcGVy
dGllcy5rZXlWYWx1ZXMgPSBXVEZNb3ZlKGtleWZyYW1lcyk7CiB9CiAKIHZvaWQgUGxhdGZvcm1D
QUFuaW1hdGlvblJlbW90ZTo6c2V0VmFsdWVzKGNvbnN0IFZlY3RvcjxDb2xvcj4mIHZhbHVlcykK
QEAgLTYyNyw3ICs2MjcsNyBAQCB2b2lkIFBsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGU6OnNldFZh
bHVlcyhjb25zdCBWZWN0b3I8Q29sb3I+JiB2YWx1ZXMpCiAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCB2YWx1ZXMuc2l6ZSgpOyArK2kpCiAgICAgICAgIGtleWZyYW1lcy51bmNoZWNrZWRBcHBl
bmQoS2V5ZnJhbWVWYWx1ZSh2YWx1ZXNbaV0pKTsKICAgICAKLSAgICBtX3Byb3BlcnRpZXMua2V5
VmFsdWVzID0gV1RGOjptb3ZlKGtleWZyYW1lcyk7CisgICAgbV9wcm9wZXJ0aWVzLmtleVZhbHVl
cyA9IFdURk1vdmUoa2V5ZnJhbWVzKTsKIH0KIAogdm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uUmVt
b3RlOjpzZXRWYWx1ZXMoY29uc3QgVmVjdG9yPFJlZlB0cjxGaWx0ZXJPcGVyYXRpb24+PiYgdmFs
dWVzLCBpbnQgaW50ZXJuYWxGaWx0ZXJQcm9wZXJ0eUluZGV4KQpAQCAtNjQzLDcgKzY0Myw3IEBA
IHZvaWQgUGxhdGZvcm1DQUFuaW1hdGlvblJlbW90ZTo6c2V0VmFsdWVzKGNvbnN0IFZlY3RvcjxS
ZWZQdHI8RmlsdGVyT3BlcmF0aW9uPj4mCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB2YWx1
ZXMuc2l6ZSgpOyArK2kpCiAgICAgICAgIGtleWZyYW1lcy51bmNoZWNrZWRBcHBlbmQoS2V5ZnJh
bWVWYWx1ZSh2YWx1ZXNbaV0pKTsKICAgICAKLSAgICBtX3Byb3BlcnRpZXMua2V5VmFsdWVzID0g
V1RGOjptb3ZlKGtleWZyYW1lcyk7CisgICAgbV9wcm9wZXJ0aWVzLmtleVZhbHVlcyA9IFdURk1v
dmUoa2V5ZnJhbWVzKTsKIH0KIAogdm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlOjpjb3B5
VmFsdWVzRnJvbShjb25zdCBQbGF0Zm9ybUNBQW5pbWF0aW9uJiB2YWx1ZSkKQEAgLTY2OSw3ICs2
NjksNyBAQCB2b2lkIFBsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGU6OnNldFRpbWluZ0Z1bmN0aW9u
cyhjb25zdCBWZWN0b3I8Y29uc3QgVGltaW5nRnVuYwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgdmFsdWVzLnNpemUoKTsgKytpKQogICAgICAgICB0aW1pbmdGdW5jdGlvbnMudW5jaGVja2Vk
QXBwZW5kKHZhbHVlc1tpXS0+Y2xvbmUoKSk7CiAgICAgCi0gICAgbV9wcm9wZXJ0aWVzLnRpbWlu
Z0Z1bmN0aW9ucyA9IFdURjo6bW92ZSh0aW1pbmdGdW5jdGlvbnMpOworICAgIG1fcHJvcGVydGll
cy50aW1pbmdGdW5jdGlvbnMgPSBXVEZNb3ZlKHRpbWluZ0Z1bmN0aW9ucyk7CiAgICAgbV9wcm9w
ZXJ0aWVzLnJldmVyc2VUaW1pbmdGdW5jdGlvbnMgPSByZXZlcnNlOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJlZUNv
bnRleHQubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxh
eWVyVHJlZUNvbnRleHQubW0KaW5kZXggY2VhNDUyYjE2ZTQwYTUzZmZjNjE3ZThkMjc0MjY1Zjcz
YjM1NjZjMS4uZWNmODc3MjFkMTI0N2Q0MWVmMTgwMzA1ZDhhMmEyODkwNjlkNzFjNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVMYXllclRy
ZWVDb250ZXh0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMv
UmVtb3RlTGF5ZXJUcmVlQ29udGV4dC5tbQpAQCAtNjYsNyArNjYsNyBAQCB2b2lkIFJlbW90ZUxh
eWVyVHJlZUNvbnRleHQ6OmxheWVyV2FzQ3JlYXRlZChQbGF0Zm9ybUNBTGF5ZXJSZW1vdGUmIGxh
eWVyLCBQbGF0ZgogICAgICAgICBjcmVhdGlvblByb3BlcnRpZXMuaG9zdGluZ0RldmljZVNjYWxl
RmFjdG9yID0gZGV2aWNlU2NhbGVGYWN0b3IoKTsKICAgICB9CiAKLSAgICBtX2NyZWF0ZWRMYXll
cnMuYWRkKGxheWVySUQsIFdURjo6bW92ZShjcmVhdGlvblByb3BlcnRpZXMpKTsKKyAgICBtX2Ny
ZWF0ZWRMYXllcnMuYWRkKGxheWVySUQsIFdURk1vdmUoY3JlYXRpb25Qcm9wZXJ0aWVzKSk7CiAg
ICAgbV9saXZlTGF5ZXJzLmFkZChsYXllcklELCAmbGF5ZXIpOwogfQogCkBAIC0xMTUsOCArMTE1
LDggQEAgdm9pZCBSZW1vdGVMYXllclRyZWVDb250ZXh0OjpidWlsZFRyYW5zYWN0aW9uKFJlbW90
ZUxheWVyVHJlZVRyYW5zYWN0aW9uJiB0cmFuc2EKIAogICAgIFZlY3RvcjxSZW1vdGVMYXllclRy
ZWVUcmFuc2FjdGlvbjo6TGF5ZXJDcmVhdGlvblByb3BlcnRpZXM+IGNyZWF0ZWRMYXllclByb3Bl
cnRpZXM7CiAgICAgY29weVZhbHVlc1RvVmVjdG9yKG1fY3JlYXRlZExheWVycywgY3JlYXRlZExh
eWVyUHJvcGVydGllcyk7Ci0gICAgdHJhbnNhY3Rpb24uc2V0Q3JlYXRlZExheWVycyhXVEY6Om1v
dmUoY3JlYXRlZExheWVyUHJvcGVydGllcykpOwotICAgIHRyYW5zYWN0aW9uLnNldERlc3Ryb3ll
ZExheWVySURzKFdURjo6bW92ZShtX2Rlc3Ryb3llZExheWVycykpOworICAgIHRyYW5zYWN0aW9u
LnNldENyZWF0ZWRMYXllcnMoV1RGTW92ZShjcmVhdGVkTGF5ZXJQcm9wZXJ0aWVzKSk7CisgICAg
dHJhbnNhY3Rpb24uc2V0RGVzdHJveWVkTGF5ZXJJRHMoV1RGTW92ZShtX2Rlc3Ryb3llZExheWVy
cykpOwogICAgIAogICAgIG1fY3JlYXRlZExheWVycy5jbGVhcigpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVMYXllclRyZWVEcmF3
aW5nQXJlYS5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3Rl
TGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0KaW5kZXggZDFjZGI1NjcxNzRlYTU4NWM1ODQ5ZmMwOTEw
ZjY2MmNkZjQ1YjMzMC4uYTdhNGYwMzM4NWM3N2Q4MGQ4MmRkZDk0OTVkYzYxMmY5OWZjMTJkNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVM
YXllclRyZWVEcmF3aW5nQXJlYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tCkBAIC0zNzgsNyArMzc4LDcg
QEAgdm9pZCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6Zmx1c2hMYXllcnMoKQogICAgIC8v
IEZJWE1FOiBNaW5pbWl6ZSB0aGVzZSB0cmFuc2FjdGlvbnMgaWYgbm90aGluZyBjaGFuZ2VkLgog
ICAgIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uIGxheWVyVHJhbnNhY3Rpb247CiAgICAgbGF5
ZXJUcmFuc2FjdGlvbi5zZXRUcmFuc2FjdGlvbklEKHRha2VOZXh0VHJhbnNhY3Rpb25JRCgpKTsK
LSAgICBsYXllclRyYW5zYWN0aW9uLnNldENhbGxiYWNrSURzKFdURjo6bW92ZShtX3BlbmRpbmdD
YWxsYmFja0lEcykpOworICAgIGxheWVyVHJhbnNhY3Rpb24uc2V0Q2FsbGJhY2tJRHMoV1RGTW92
ZShtX3BlbmRpbmdDYWxsYmFja0lEcykpOwogICAgIG1fcmVtb3RlTGF5ZXJUcmVlQ29udGV4dC0+
YnVpbGRUcmFuc2FjdGlvbihsYXllclRyYW5zYWN0aW9uLCAqZG93bmNhc3Q8R3JhcGhpY3NMYXll
ckNBUmVtb3RlPigqbV9yb290TGF5ZXIpLnBsYXRmb3JtQ0FMYXllcigpKTsKICAgICBiYWNraW5n
U3RvcmVDb2xsZWN0aW9uLndpbGxDb21taXRMYXllclRyZWUobGF5ZXJUcmFuc2FjdGlvbik7CiAg
ICAgbV93ZWJQYWdlLndpbGxDb21taXRMYXllclRyZWUobGF5ZXJUcmFuc2FjdGlvbik7CkBAIC00
MjAsNyArNDIwLDcgQEAgdm9pZCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6Zmx1c2hMYXll
cnMoKQogICAgIGlmIChoYWRBbnlDaGFuZ2VkQmFja2luZ1N0b3JlKQogICAgICAgICBiYWNraW5n
U3RvcmVDb2xsZWN0aW9uLnNjaGVkdWxlVm9sYXRpbGl0eVRpbWVyKCk7CiAKLSAgICBSZWZQdHI8
QmFja2luZ1N0b3JlRmx1c2hlcj4gYmFja2luZ1N0b3JlRmx1c2hlciA9IEJhY2tpbmdTdG9yZUZs
dXNoZXI6OmNyZWF0ZShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVj
dGlvbigpLCBXVEY6Om1vdmUoY29tbWl0RW5jb2RlciksIFdURjo6bW92ZShjb250ZXh0c1RvRmx1
c2gpKTsKKyAgICBSZWZQdHI8QmFja2luZ1N0b3JlRmx1c2hlcj4gYmFja2luZ1N0b3JlRmx1c2hl
ciA9IEJhY2tpbmdTdG9yZUZsdXNoZXI6OmNyZWF0ZShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5w
YXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLCBXVEZNb3ZlKGNvbW1pdEVuY29kZXIpLCBXVEZNb3Zl
KGNvbnRleHRzVG9GbHVzaCkpOwogICAgIG1fcGVuZGluZ0JhY2tpbmdTdG9yZUZsdXNoZXIgPSBi
YWNraW5nU3RvcmVGbHVzaGVyOwogCiAgICAgdWludDY0X3QgcGFnZUlEID0gbV93ZWJQYWdlLnBh
Z2VJRCgpOwpAQCAtNDcxLDEzICs0NzEsMTMgQEAgYm9vbCBSZW1vdGVMYXllclRyZWVEcmF3aW5n
QXJlYTo6bWFya0xheWVyc1ZvbGF0aWxlSW1tZWRpYXRlbHlJZlBvc3NpYmxlKCkKIAogUmVmPFJl
bW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjpCYWNraW5nU3RvcmVGbHVzaGVyPiBSZW1vdGVMYXll
clRyZWVEcmF3aW5nQXJlYTo6QmFja2luZ1N0b3JlRmx1c2hlcjo6Y3JlYXRlKElQQzo6Q29ubmVj
dGlvbiogY29ubmVjdGlvbiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6TWVzc2FnZUVuY29kZXI+IGVu
Y29kZXIsIFZlY3RvcjxSZXRhaW5QdHI8Q0dDb250ZXh0UmVmPj4gY29udGV4dHNUb0ZsdXNoKQog
ewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjpC
YWNraW5nU3RvcmVGbHVzaGVyKGNvbm5lY3Rpb24sIFdURjo6bW92ZShlbmNvZGVyKSwgV1RGOjpt
b3ZlKGNvbnRleHRzVG9GbHVzaCkpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVM
YXllclRyZWVEcmF3aW5nQXJlYTo6QmFja2luZ1N0b3JlRmx1c2hlcihjb25uZWN0aW9uLCBXVEZN
b3ZlKGVuY29kZXIpLCBXVEZNb3ZlKGNvbnRleHRzVG9GbHVzaCkpKTsKIH0KIAogUmVtb3RlTGF5
ZXJUcmVlRHJhd2luZ0FyZWE6OkJhY2tpbmdTdG9yZUZsdXNoZXI6OkJhY2tpbmdTdG9yZUZsdXNo
ZXIoSVBDOjpDb25uZWN0aW9uKiBjb25uZWN0aW9uLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpNZXNz
YWdlRW5jb2Rlcj4gZW5jb2RlciwgVmVjdG9yPFJldGFpblB0cjxDR0NvbnRleHRSZWY+PiBjb250
ZXh0c1RvRmx1c2gpCiAgICAgOiBtX2Nvbm5lY3Rpb24oY29ubmVjdGlvbikKLSAgICAsIG1fY29t
bWl0RW5jb2RlcihXVEY6Om1vdmUoZW5jb2RlcikpCi0gICAgLCBtX2NvbnRleHRzVG9GbHVzaChX
VEY6Om1vdmUoY29udGV4dHNUb0ZsdXNoKSkKKyAgICAsIG1fY29tbWl0RW5jb2RlcihXVEZNb3Zl
KGVuY29kZXIpKQorICAgICwgbV9jb250ZXh0c1RvRmx1c2goV1RGTW92ZShjb250ZXh0c1RvRmx1
c2gpKQogICAgICwgbV9oYXNGbHVzaGVkKGZhbHNlKQogewogfQpAQCAtNDkwLDcgKzQ5MCw3IEBA
IHZvaWQgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OkJhY2tpbmdTdG9yZUZsdXNoZXI6OmZs
dXNoKCkKICAgICAgICAgQ0dDb250ZXh0Rmx1c2goY29udGV4dC5nZXQoKSk7CiAgICAgbV9oYXNG
bHVzaGVkID0gdHJ1ZTsKIAotICAgIG1fY29ubmVjdGlvbi0+c2VuZE1lc3NhZ2UoV1RGOjptb3Zl
KG1fY29tbWl0RW5jb2RlcikpOworICAgIG1fY29ubmVjdGlvbi0+c2VuZE1lc3NhZ2UoV1RGTW92
ZShtX2NvbW1pdEVuY29kZXIpKTsKIH0KIAogdm9pZCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJl
YTo6dmlld1N0YXRlRGlkQ2hhbmdlKFZpZXdTdGF0ZTo6RmxhZ3MsIGJvb2wgd2FudHNEaWRVcGRh
dGVWaWV3U3RhdGUsIGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggZWJhOGZlOTc1M2QyMmZhYTEwYTJiYTcwY2M2MTI2
MmY5ZDcwOWNmZi4uMWNiNjgyNWY0NTViYzhjZjQyNzNkZGFhY2E2ZDMzYzQ3Y2NmNzg4OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC0yNTAsNyArMjUwLDcg
QEAgdm9pZCBXZWJQcm9jZXNzOjppbml0aWFsaXplV2ViUHJvY2VzcyhXZWJQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKICAgICBXZWJDb3JlOjpNZW1vcnlQcmVzc3VyZUhh
bmRsZXI6OlJlbGllZkxvZ2dlcjo6c2V0TG9nZ2luZ0VuYWJsZWQocGFyYW1ldGVycy5zaG91bGRF
bmFibGVNZW1vcnlQcmVzc3VyZVJlbGllZkxvZ2dpbmcpOwogI2VuZGlmCiAKLSAgICBwbGF0Zm9y
bUluaXRpYWxpemVXZWJQcm9jZXNzKFdURjo6bW92ZShwYXJhbWV0ZXJzKSk7CisgICAgcGxhdGZv
cm1Jbml0aWFsaXplV2ViUHJvY2VzcyhXVEZNb3ZlKHBhcmFtZXRlcnMpKTsKIAogICAgIFdURjo6
c2V0Q3VycmVudFRocmVhZElzVXNlckluaXRpYXRlZCgpOwogCkBAIC0xMzU1LDcgKzEzNTUsNyBA
QCBSZWZQdHI8QVBJOjpPYmplY3Q+IFdlYlByb2Nlc3M6OnRyYW5zZm9ybU9iamVjdHNUb0hhbmRs
ZXMoQVBJOjpPYmplY3QqIG9iamVjdCkKICAgICAgICAgICAgICAgICBXZWJQYWdlR3JvdXBEYXRh
IHBhZ2VHcm91cERhdGE7CiAgICAgICAgICAgICAgICAgcGFnZUdyb3VwRGF0YS5wYWdlR3JvdXBJ
RCA9IHN0YXRpY19jYXN0PGNvbnN0IFdlYlBhZ2VHcm91cFByb3h5Jj4ob2JqZWN0KS5wYWdlR3Jv
dXBJRCgpOwogCi0gICAgICAgICAgICAgICAgcmV0dXJuIEFQSTo6UGFnZUdyb3VwSGFuZGxlOjpj
cmVhdGUoV1RGOjptb3ZlKHBhZ2VHcm91cERhdGEpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4g
QVBJOjpQYWdlR3JvdXBIYW5kbGU6OmNyZWF0ZShXVEZNb3ZlKHBhZ2VHcm91cERhdGEpKTsKICAg
ICAgICAgICAgIH0KIAogI2lmIFBMQVRGT1JNKENPQ09BKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQppbmRleCBjMWZiMDE0ZTM3Mjgz
Mzc3NzE2ZjhmY2RlMzExMDlkMDhhM2YwNTIzLi5mNjdlYzBmMmI4MTkwNjBlNmFjMDAyMGUxODI3
M2Y3MzViMzU5NmIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29h
L1dlYlByb2Nlc3NDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29h
L1dlYlByb2Nlc3NDb2NvYS5tbQpAQCAtMTQ4LDcgKzE0OCw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6
cGxhdGZvcm1Jbml0aWFsaXplV2ViUHJvY2VzcyhXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
JiYgcGFyCiAgICAgUGFnZTo6c2V0VGFiU3VzcGVuc2lvbkVuYWJsZWQocGFyYW1ldGVycy5zaG91
bGRFbmFibGVUYWJTdXNwZW5zaW9uKTsKICNlbmRpZgogCi0gICAgbV9jb21wb3NpdGluZ1JlbmRl
clNlcnZlclBvcnQgPSBXVEY6Om1vdmUocGFyYW1ldGVycy5hY2NlbGVyYXRlZENvbXBvc2l0aW5n
UG9ydCk7CisgICAgbV9jb21wb3NpdGluZ1JlbmRlclNlcnZlclBvcnQgPSBXVEZNb3ZlKHBhcmFt
ZXRlcnMuYWNjZWxlcmF0ZWRDb21wb3NpdGluZ1BvcnQpOwogICAgIG1fcHJlc2VudGVyQXBwbGlj
YXRpb25QaWQgPSBwYXJhbWV0ZXJzLnByZXNlbnRlckFwcGxpY2F0aW9uUGlkOwogCiAgICAgTWVt
b3J5UHJlc3N1cmVIYW5kbGVyOjpSZWxpZWZMb2dnZXI6OnNldExvZ2dpbmdFbmFibGVkKHBhcmFt
ZXRlcnMuc2hvdWxkRW5hYmxlTWVtb3J5UHJlc3N1cmVSZWxpZWZMb2dnaW5nKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXIubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyLm1tCmluZGV4IGYxMTgwZjZmNjRhZGNjMGU4ZTFmOTRhOTUyYWRkMzY4ZTE2NzVhZjMu
LjI5ODAxYjIwMjJlMzRhOTc5MTAxZGFjMGJmZTU1OGY0NDJhYjY1MDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvaW9zL1dlYlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0K
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuTWFu
YWdlci5tbQpAQCAtODAsNyArODAsNyBAQCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250
ZXh0Ojp+V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dCgpCiAKIHZvaWQgV2ViVmlk
ZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dDo6c2V0TGF5ZXJIb3N0aW5nQ29udGV4dChzdGQ6
OnVuaXF1ZV9wdHI8TGF5ZXJIb3N0aW5nQ29udGV4dD4mJiBjb250ZXh0KQogewotICAgIG1fbGF5
ZXJIb3N0aW5nQ29udGV4dCA9IFdURjo6bW92ZShjb250ZXh0KTsKKyAgICBtX2xheWVySG9zdGlu
Z0NvbnRleHQgPSBXVEZNb3ZlKGNvbnRleHQpOwogfQogCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZUNvbnRleHQ6OnJlc2V0TWVkaWFTdGF0ZSgpCkBAIC0xOTUsNyArMTk1LDcgQEAg
V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6TW9kZWxJbnRlcmZhY2VUdXBsZSBXZWJWaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyOjpjcmVhdGUKICAgICBpbnRlcmZhY2UtPnNldExheWVySG9zdGluZ0Nv
bnRleHQoTGF5ZXJIb3N0aW5nQ29udGV4dDo6Y3JlYXRlRm9yRXh0ZXJuYWxIb3N0aW5nUHJvY2Vz
cygpKTsKICAgICBtb2RlbC0+c2V0V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlKGludGVyZmFj
ZS5nZXQoKSk7CiAKLSAgICByZXR1cm4gc3RkOjptYWtlX3R1cGxlKFdURjo6bW92ZShtb2RlbCks
IFdURjo6bW92ZShpbnRlcmZhY2UpKTsKKyAgICByZXR1cm4gc3RkOjptYWtlX3R1cGxlKFdURk1v
dmUobW9kZWwpLCBXVEZNb3ZlKGludGVyZmFjZSkpOwogfQogCiBXZWJWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyOjpNb2RlbEludGVyZmFjZVR1cGxlJiBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpl
bnN1cmVNb2RlbEFuZEludGVyZmFjZSh1aW50NjRfdCBjb250ZXh0SWQpCkBAIC0zMTYsNyArMzE2
LDcgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpzZXRTZWVrYWJsZVJhbmdlcyh1
aW50NjRfdCBjb250ZXh0SWQsIGNvbnN0IFdlYkMKICAgICAgICAgcmFuZ2VzVmVjdG9yLmFwcGVu
ZChzdGQ6OnBhaXI8ZG91YmxlLGRvdWJsZT4oc3RhcnQsIGVuZCkpOwogICAgIH0KIAotICAgIG1f
cGFnZS0+c2VuZChNZXNzYWdlczo6V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpTZXRT
ZWVrYWJsZVJhbmdlc1ZlY3Rvcihjb250ZXh0SWQsIFdURjo6bW92ZShyYW5nZXNWZWN0b3IpKSwg
bV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJWaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyUHJveHk6OlNldFNlZWthYmxlUmFuZ2VzVmVjdG9yKGNvbnRleHRJZCwg
V1RGTW92ZShyYW5nZXNWZWN0b3IpKSwgbV9wYWdlLT5wYWdlSUQoKSk7CiB9CiAKIHZvaWQgV2Vi
VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6c2V0Q2FuUGxheUZhc3RSZXZlcnNlKHVpbnQ2NF90IGNv
bnRleHRJZCwgYm9vbCB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3Mvc291cC9XZWJLaXRTb3VwUmVxdWVzdElucHV0U3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3Mvc291cC9XZWJLaXRTb3VwUmVxdWVzdElucHV0U3RyZWFtLmNwcAppbmRleCBm
NjMxN2ZkMzA3ZmM2MWU1OTZhNWZmNTI4N2QwOTVmMGQwMzdkNzUyLi5hM2NkYzhkMDllMTgyMjM5
ODk0MmFjMzA0Y2U1MGIwYWVhY2ZhMzQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL3NvdXAvV2ViS2l0U291cFJlcXVlc3RJbnB1dFN0cmVhbS5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9zb3VwL1dlYktpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW0uY3Bw
CkBAIC0xNzksNyArMTc5LDcgQEAgdm9pZCB3ZWJraXRTb3VwUmVxdWVzdElucHV0U3RyZWFtRGlk
RmFpbFdpdGhFcnJvcihXZWJLaXRTb3VwUmVxdWVzdElucHV0U3RyZWFtKgogICAgICAgICBnX3Rh
c2tfcmV0dXJuX2Vycm9yKGRhdGEtPnRhc2suZ2V0KCksIGVycm9yLnJlbGVhc2UoKSk7CiAgICAg
fSBlbHNlIHsKICAgICAgICAgc3RyZWFtLT5wcml2LT5jb250ZW50TGVuZ3RoID0gc3RyZWFtLT5w
cml2LT5ieXRlc1JlY2VpdmVkOwotICAgICAgICBzdHJlYW0tPnByaXYtPmVycm9yID0gV1RGOjpt
b3ZlKGVycm9yKTsKKyAgICAgICAgc3RyZWFtLT5wcml2LT5lcnJvciA9IFdURk1vdmUoZXJyb3Ip
OwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdl
TG9nCmluZGV4IDM0MTA4NmQ4ZjY1MGRlYzE2NDYyYjY5ZjIwN2IxODVlYmNlMDNlZDAuLjcyOTIz
YjI0MjAzNTkyMTlhMWEwM2Y3N2I5MGRlYWM2NTJhYzM1OGYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0No
YW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MSBAQAorMjAxNS0xMi0z
MSAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CisKKyAgICAgICAgUmVwbGFjZSBXVEY6
Om1vdmUgd2l0aCBXVEZNb3ZlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNTI2MDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuaDoKKyAgICAgICAgKFRlc3RS
dW5uZXI6OnNldEFsbG93ZWRIb3N0cyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL0RS
VERhdGFPYmplY3QuY3BwOgorICAgICAgICAoRFJURGF0YU9iamVjdDo6U2V0RGF0YSk6CisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRGVxdWUuY3BwOgorICAgICAgICAoVGVzdFdl
YktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFzaE1h
cC5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dURi9IYXNoU2V0LmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRF
U1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL05ha2VkUHRyLmNwcDoKKyAg
ICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV1RGL1JlZi5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpwYXNzV2l0aFJlZik6Cisg
ICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL1dURi9SZWZQdHIuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVmVjdG9yLmNwcDoKKyAgICAgICAgKFRlc3RX
ZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1dURlN0
cmluZy5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL1dURi9ucy9SZXRhaW5QdHIubW06CisgICAgICAgIChUZXN0V2ViS2l0
QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ2FsY3Vs
YXRpb25WYWx1ZS5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpjcmVhdGVUZXN0VmFsdWUp
OgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL0NvbnRlbnRFeHRlbnNpb25zLmNwcDoKKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6OkluTWVtb3J5Q29tcGlsZWRDb250ZW50RXh0ZW5zaW9uOjpjcmVhdGVGcm9tRmlsdGVy
KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkluTWVtb3J5Q29tcGlsZWRDb250ZW50RXh0ZW5z
aW9uOjpjcmVhdGUpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6SW5NZW1vcnlDb21waWxlZENv
bnRlbnRFeHRlbnNpb246OkluTWVtb3J5Q29tcGlsZWRDb250ZW50RXh0ZW5zaW9uKToKKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6OmNyZWF0ZU5GQXMpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6
VEVTVF9GKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvREZBQ29tYmlu
ZXIuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Y29tYmluZSk6CisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0RGQUhlbHBlcnMuaDoKKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6OmNyZWF0ZU5GQXMpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Mi9jb2NvYS9XZWFrT2JqQ1B0ci5tbToKKyAgICAgICAgKFRFU1QpOgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9XZWJQcm9jZXNzVGVzdC5jcHA6CisgICAgICAgIChX
ZWJQcm9jZXNzVGVzdDo6YWRkKToKKwogMjAxNS0xMi0zMSAgRGF2aWQgS2lsemVyICA8ZGRraWx6
ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIxOTQ0NzApOiBGaXggd2Fybmlu
Z3MgdW5jb3ZlcmVkIGJ5IG1pZ3JhdGluZyB0byBXVEZfTU9WRQpkaWZmIC0tZ2l0IGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1
bm5lci5oCmluZGV4IGFiNzc5YWUwZjEyMTJlMzgzZWI3OTY5YzE5MGEyOGZlODdlOTZjMTEuLmQ1
MWFjNmZlYjhmZDg1N2FjNDc1NzVkZDcyYjE5ZWM4YTkyZjM0N2MgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9U
ZXN0UnVubmVyLmgKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBhZGREaXNh
bGxvd2VkVVJMKEpTU3RyaW5nUmVmIHVybCk7CiAgICAgY29uc3Qgc3RkOjpzZXQ8c3RkOjpzdHJp
bmc+JiBhbGxvd2VkSG9zdHMoKSBjb25zdCB7IHJldHVybiBtX2FsbG93ZWRIb3N0czsgfQotICAg
IHZvaWQgc2V0QWxsb3dlZEhvc3RzKHN0ZDo6c2V0PHN0ZDo6c3RyaW5nPiBob3N0cykgeyBtX2Fs
bG93ZWRIb3N0cyA9IFdURjo6bW92ZShob3N0cyk7IH0KKyAgICB2b2lkIHNldEFsbG93ZWRIb3N0
cyhzdGQ6OnNldDxzdGQ6OnN0cmluZz4gaG9zdHMpIHsgbV9hbGxvd2VkSG9zdHMgPSBXVEZNb3Zl
KGhvc3RzKTsgfQogICAgIHZvaWQgYWRkVVJMVG9SZWRpcmVjdChzdGQ6OnN0cmluZyBvcmlnaW4s
IHN0ZDo6c3RyaW5nIGRlc3RpbmF0aW9uKTsKICAgICBjb25zdCBzdGQ6OnN0cmluZyYgcmVkaXJl
Y3Rpb25EZXN0aW5hdGlvbkZvclVSTChzdGQ6OnN0cmluZyk7CiAgICAgdm9pZCBjbGVhckFsbEFw
cGxpY2F0aW9uQ2FjaGVzKCk7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4v
RFJURGF0YU9iamVjdC5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRFJURGF0YU9iamVj
dC5jcHAKaW5kZXggYTZkYmVhM2Y3ODNhYWEzNDY3MzBhOWU3Mzk4NWQ1YmY3Y2U4MmI2Ny4uZDA3
YjE2ODQ2NWE0MmFmOGI4YzY1NjgwNDVhOGUxYTBiZWUwZDU2OCAxMDA2NDQKLS0tIGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvd2luL0RSVERhdGFPYmplY3QuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL3dpbi9EUlREYXRhT2JqZWN0LmNwcApAQCAtMjU2LDEzICsyNTYsMTMgQEAgU1RETUVU
SE9ESU1QIERSVERhdGFPYmplY3Q6OlNldERhdGEoX0luXyBGT1JNQVRFVEMqIHBmb3JtYXRldGMs
IF9Jbl8gU1RHTUVESVVNKgogICAgIFplcm9NZW1vcnkocFN0Z01lZC5nZXQoKSwgc2l6ZW9mKFNU
R01FRElVTSkpOwogCiAgICAgKmZvcm1hdGV0YyA9ICpwZm9ybWF0ZXRjOwotICAgIG1fZm9ybWF0
cy5hcHBlbmQoV1RGOjptb3ZlKGZvcm1hdGV0YykpOworICAgIG1fZm9ybWF0cy5hcHBlbmQoV1RG
TW92ZShmb3JtYXRldGMpKTsKIAogICAgIGlmIChmUmVsZWFzZSkKICAgICAgICAgKnBTdGdNZWQg
PSAqcG1lZGl1bTsKICAgICBlbHNlCiAgICAgICAgIENvcHlNZWRpdW0ocFN0Z01lZC5nZXQoKSwg
cG1lZGl1bSwgcGZvcm1hdGV0Yyk7Ci0gICAgbV9tZWRpdW0uYXBwZW5kKFdURjo6bW92ZShwU3Rn
TWVkKSk7CisgICAgbV9tZWRpdW0uYXBwZW5kKFdURk1vdmUocFN0Z01lZCkpOwogCiAgICAgcmV0
dXJuIFNfT0s7CiB9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9E
ZXF1ZS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9EZXF1ZS5jcHAKaW5kZXgg
ZGI5YjBhYzEzNTRkNTI1MDdjNjE0ZTgwMzQxYzA0ZDg1MGExOTZkMy4uODNmMWY4MmVlMmVjOWI4
NDEyNzVmN2FlNjRlNzQ0Y2MxYjQ5ZTU3MCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XVEYvRGVxdWUuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RG
L0RlcXVlLmNwcApAQCAtMTUzLDcgKzE1Myw3IEBAIFRFU1QoV1RGX0RlcXVlLCBNb3ZlQ29uc3Ry
dWN0b3IpCiAKICAgICBFWFBFQ1RfRVEoMTB1LCBkZXF1ZS5zaXplKCkpOwogCi0gICAgRGVxdWU8
TW92ZU9ubHksIDQ+IGRlcXVlMiA9IFdURjo6bW92ZShkZXF1ZSk7CisgICAgRGVxdWU8TW92ZU9u
bHksIDQ+IGRlcXVlMiA9IFdURk1vdmUoZGVxdWUpOwogCiAgICAgRVhQRUNUX0VRKDEwdSwgZGVx
dWUyLnNpemUoKSk7CiAKQEAgLTE3Nyw3ICsxNzcsNyBAQCBURVNUKFdURl9EZXF1ZSwgTW92ZUFz
c2lnbm1lbnRPcGVyYXRvcikKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgMTA7ICsraSkK
ICAgICAgICAgZGVxdWUyLmFwcGVuZChNb3ZlT25seShpICogMikpOwogCi0gICAgZGVxdWUxID0g
V1RGOjptb3ZlKGRlcXVlMik7CisgICAgZGVxdWUxID0gV1RGTW92ZShkZXF1ZTIpOwogCiAgICAg
RVhQRUNUX0VRKDEwdSwgZGVxdWUyLnNpemUoKSk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV1RGL0hhc2hNYXAuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XVEYvSGFzaE1hcC5jcHAKaW5kZXggYTI4MWYyMzBhN2VjZDgxYjU1MzQ2NTA4NTQyZDAyNTZk
NmQ2Y2RkYi4uMGM0MzMxMWJmMzMwY2I4MTM4MjRmNmVhZjE0YWY4ZGU5YzdlOTViMiAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFzaE1hcC5jcHAKKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFzaE1hcC5jcHAKQEAgLTkyLDcgKzkyLDcgQEAg
VEVTVChXVEZfSGFzaE1hcCwgTW92ZU9ubHlWYWx1ZXMpCiAKICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IDEwMDsgKytpKSB7CiAgICAgICAgIE1vdmVPbmx5IG1vdmVPbmx5KGkgKyAxKTsKLSAg
ICAgICAgbW92ZU9ubHlWYWx1ZXMuc2V0KGkgKyAxLCBXVEY6Om1vdmUobW92ZU9ubHkpKTsKKyAg
ICAgICAgbW92ZU9ubHlWYWx1ZXMuc2V0KGkgKyAxLCBXVEZNb3ZlKG1vdmVPbmx5KSk7CiAgICAg
fQogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCAxMDA7ICsraSkgewpAQCAtMTE1LDcgKzEx
NSw3IEBAIFRFU1QoV1RGX0hhc2hNYXAsIE1vdmVPbmx5S2V5cykKIAogICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgMTAwOyArK2kpIHsKICAgICAgICAgTW92ZU9ubHkgbW92ZU9ubHkoaSArIDEp
OwotICAgICAgICBtb3ZlT25seUtleXMuc2V0KFdURjo6bW92ZShtb3ZlT25seSksIGkgKyAxKTsK
KyAgICAgICAgbW92ZU9ubHlLZXlzLnNldChXVEZNb3ZlKG1vdmVPbmx5KSwgaSArIDEpOwogICAg
IH0KIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgMTAwOyArK2kpIHsKQEAgLTE3OSw3ICsx
NzksNyBAQCBURVNUKFdURl9IYXNoTWFwLCBVbmlxdWVQdHJLZXkpCiAgICAgSGFzaE1hcDxzdGQ6
OnVuaXF1ZV9wdHI8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4sIGludD4gbWFwOwogCiAg
ICAgYXV0byB1bmlxdWVQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnN0cnVjdG9yRGVzdHJ1Y3Rv
ckNvdW50ZXI+KCk7Ci0gICAgbWFwLmFkZChXVEY6Om1vdmUodW5pcXVlUHRyKSwgMik7CisgICAg
bWFwLmFkZChXVEZNb3ZlKHVuaXF1ZVB0ciksIDIpOwogCiAgICAgRVhQRUNUX0VRKDF1LCBDb25z
dHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyOjpjb25zdHJ1Y3Rpb25Db3VudCk7CiAgICAgRVhQRUNU
X0VRKDB1LCBDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyOjpkZXN0cnVjdGlvbkNvdW50KTsK
QEAgLTE5OCw3ICsxOTgsNyBAQCBURVNUKFdURl9IYXNoTWFwLCBVbmlxdWVQdHJLZXlfQ3VzdG9t
RGVsZXRlcikKICAgICBIYXNoTWFwPHN0ZDo6dW5pcXVlX3B0cjxDb25zdHJ1Y3RvckRlc3RydWN0
b3JDb3VudGVyLCBEZWxldGVyQ291bnRlcjxDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyPj4s
IGludD4gbWFwOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNv
dW50ZXIsIERlbGV0ZXJDb3VudGVyPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+PiB1bmlx
dWVQdHIobmV3IENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXIoKSwgRGVsZXRlckNvdW50ZXI8
Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcj4oKSk7Ci0gICAgbWFwLmFkZChXVEY6Om1vdmUo
dW5pcXVlUHRyKSwgMik7CisgICAgbWFwLmFkZChXVEZNb3ZlKHVuaXF1ZVB0ciksIDIpOwogCiAg
ICAgRVhQRUNUX0VRKDF1LCBDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyOjpjb25zdHJ1Y3Rp
b25Db3VudCk7CiAgICAgRVhQRUNUX0VRKDB1LCBDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVy
OjpkZXN0cnVjdGlvbkNvdW50KTsKQEAgLTIxOSw3ICsyMTksNyBAQCBURVNUKFdURl9IYXNoTWFw
LCBVbmlxdWVQdHJLZXlfRmluZFVzaW5nUmF3UG9pbnRlcikKIAogICAgIGF1dG8gdW5pcXVlUHRy
ID0gc3RkOjptYWtlX3VuaXF1ZTxpbnQ+KDUpOwogICAgIGludCogcHRyID0gdW5pcXVlUHRyLmdl
dCgpOwotICAgIG1hcC5hZGQoV1RGOjptb3ZlKHVuaXF1ZVB0ciksIDIpOworICAgIG1hcC5hZGQo
V1RGTW92ZSh1bmlxdWVQdHIpLCAyKTsKIAogICAgIGF1dG8gaXQgPSBtYXAuZmluZChwdHIpOwog
ICAgIEFTU0VSVF9UUlVFKGl0ICE9IG1hcC5lbmQoKSk7CkBAIC0yMzMsNyArMjMzLDcgQEAgVEVT
VChXVEZfSGFzaE1hcCwgVW5pcXVlUHRyS2V5X0NvbnRhaW5zVXNpbmdSYXdQb2ludGVyKQogCiAg
ICAgYXV0byB1bmlxdWVQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPGludD4oNSk7CiAgICAgaW50KiBw
dHIgPSB1bmlxdWVQdHIuZ2V0KCk7Ci0gICAgbWFwLmFkZChXVEY6Om1vdmUodW5pcXVlUHRyKSwg
Mik7CisgICAgbWFwLmFkZChXVEZNb3ZlKHVuaXF1ZVB0ciksIDIpOwogCiAgICAgRVhQRUNUX0VR
KHRydWUsIG1hcC5jb250YWlucyhwdHIpKTsKIH0KQEAgLTI0NCw3ICsyNDQsNyBAQCBURVNUKFdU
Rl9IYXNoTWFwLCBVbmlxdWVQdHJLZXlfR2V0VXNpbmdSYXdQb2ludGVyKQogCiAgICAgYXV0byB1
bmlxdWVQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPGludD4oNSk7CiAgICAgaW50KiBwdHIgPSB1bmlx
dWVQdHIuZ2V0KCk7Ci0gICAgbWFwLmFkZChXVEY6Om1vdmUodW5pcXVlUHRyKSwgMik7CisgICAg
bWFwLmFkZChXVEZNb3ZlKHVuaXF1ZVB0ciksIDIpOwogCiAgICAgaW50IHZhbHVlID0gbWFwLmdl
dChwdHIpOwogICAgIEVYUEVDVF9FUSgyLCB2YWx1ZSk7CkBAIC0yNTgsNyArMjU4LDcgQEAgVEVT
VChXVEZfSGFzaE1hcCwgVW5pcXVlUHRyS2V5X1JlbW92ZVVzaW5nUmF3UG9pbnRlcikKIAogICAg
IGF1dG8gdW5pcXVlUHRyID0gc3RkOjptYWtlX3VuaXF1ZTxDb25zdHJ1Y3RvckRlc3RydWN0b3JD
b3VudGVyPigpOwogICAgIENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXIqIHB0ciA9IHVuaXF1
ZVB0ci5nZXQoKTsKLSAgICBtYXAuYWRkKFdURjo6bW92ZSh1bmlxdWVQdHIpLCAyKTsKKyAgICBt
YXAuYWRkKFdURk1vdmUodW5pcXVlUHRyKSwgMik7CiAKICAgICBFWFBFQ1RfRVEoMXUsIENvbnN0
cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI6OmNvbnN0cnVjdGlvbkNvdW50KTsKICAgICBFWFBFQ1Rf
RVEoMHUsIENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI6OmRlc3RydWN0aW9uQ291bnQpOwpA
QCAtMjc4LDcgKzI3OCw3IEBAIFRFU1QoV1RGX0hhc2hNYXAsIFVuaXF1ZVB0cktleV9UYWtlVXNp
bmdSYXdQb2ludGVyKQogCiAgICAgYXV0byB1bmlxdWVQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPENv
bnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+KCk7CiAgICAgQ29uc3RydWN0b3JEZXN0cnVjdG9y
Q291bnRlciogcHRyID0gdW5pcXVlUHRyLmdldCgpOwotICAgIG1hcC5hZGQoV1RGOjptb3ZlKHVu
aXF1ZVB0ciksIDIpOworICAgIG1hcC5hZGQoV1RGTW92ZSh1bmlxdWVQdHIpLCAyKTsKIAogICAg
IEVYUEVDVF9FUSgxdSwgQ29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcjo6Y29uc3RydWN0aW9u
Q291bnQpOwogICAgIEVYUEVDVF9FUSgwdSwgQ29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcjo6
ZGVzdHJ1Y3Rpb25Db3VudCk7CkBAIC0zMTgsNyArMzE4LDcgQEAgVEVTVChXVEZfSGFzaE1hcCwg
UmVmUHRyS2V5X0FkZFVzaW5nTW92ZSkKIAogICAgIERlcml2ZWRSZWZMb2dnZXIgYSgiYSIpOwog
ICAgIFJlZlB0cjxSZWZMb2dnZXI+IHB0cigmYSk7Ci0gICAgbWFwLmFkZChXVEY6Om1vdmUocHRy
KSwgMCk7CisgICAgbWFwLmFkZChXVEZNb3ZlKHB0ciksIDApOwogCiAgICAgRVhQRUNUX1NUUkVR
KCJyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwogfQpAQCAtMzkzLDcgKzM5Myw3IEBA
IFRFU1QoV1RGX0hhc2hNYXAsIFJlZlB0cktleV9BZGRVc2luZ01vdmVLZXlBbHJlYWR5UHJlc2Vu
dCkKIAogICAgIHsKICAgICAgICAgUmVmUHRyPFJlZkxvZ2dlcj4gcHRyMigmYSk7Ci0gICAgICAg
IGF1dG8gYWRkUmVzdWx0ID0gbWFwLmFkZChXVEY6Om1vdmUocHRyMiksIDApOworICAgICAgICBh
dXRvIGFkZFJlc3VsdCA9IG1hcC5hZGQoV1RGTW92ZShwdHIyKSwgMCk7CiAgICAgICAgIEVYUEVD
VF9GQUxTRShhZGRSZXN1bHQuaXNOZXdFbnRyeSk7CiAgICAgfQogCkBAIC00MjksNyArNDI5LDcg
QEAgVEVTVChXVEZfSGFzaE1hcCwgUmVmUHRyS2V5X1NldFVzaW5nTW92ZSkKIAogICAgIERlcml2
ZWRSZWZMb2dnZXIgYSgiYSIpOwogICAgIFJlZlB0cjxSZWZMb2dnZXI+IHB0cigmYSk7Ci0gICAg
bWFwLnNldChXVEY6Om1vdmUocHRyKSwgMCk7CisgICAgbWFwLnNldChXVEZNb3ZlKHB0ciksIDAp
OwogCiAgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOwog
fQpAQCAtNTAwLDcgKzUwMCw3IEBAIFRFU1QoV1RGX0hhc2hNYXAsIFJlZlB0cktleV9TZXRVc2lu
Z01vdmVLZXlBbHJlYWR5UHJlc2VudCkKIAogICAgIHsKICAgICAgICAgUmVmUHRyPFJlZkxvZ2dl
cj4gcHRyMigmYSk7Ci0gICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbWFwLnNldChXVEY6Om1vdmUo
cHRyMiksIDEpOworICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1hcC5zZXQoV1RGTW92ZShwdHIy
KSwgMSk7CiAgICAgICAgIEVYUEVDVF9GQUxTRShhZGRSZXN1bHQuaXNOZXdFbnRyeSk7CiAgICAg
ICAgIEVYUEVDVF9FUSgxLCBtYXAuZ2V0KHB0ci5nZXQoKSkpOwogICAgIH0KZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0hhc2hTZXQuY3BwIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XVEYvSGFzaFNldC5jcHAKaW5kZXggNzljYjVlNzI3MThjYzUyYWYyMjc3
NDIxNjNiM2ZhYTk5YmNkNmRiZS4uNTU0YjJmNGY3NDhmNmYyZDUwYWM4OTAwYmEzYjI5ZTg2NWE4
NjI5YSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFzaFNldC5j
cHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFzaFNldC5jcHAKQEAgLTg0
LDcgKzg0LDcgQEAgVEVTVChXVEZfSGFzaFNldCwgTW92ZU9ubHkpCiAKICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IDEwMDsgKytpKSB7CiAgICAgICAgIE1vdmVPbmx5IG1vdmVPbmx5KGkgKyAx
KTsKLSAgICAgICAgaGFzaFNldC5hZGQoV1RGOjptb3ZlKG1vdmVPbmx5KSk7CisgICAgICAgIGhh
c2hTZXQuYWRkKFdURk1vdmUobW92ZU9ubHkpKTsKICAgICB9CiAKICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IDEwMDsgKytpKQpAQCAtMTI1LDcgKzEyNSw3IEBAIFRFU1QoV1RGX0hhc2hTZXQs
IFVuaXF1ZVB0cktleSkKICAgICBIYXNoU2V0PHN0ZDo6dW5pcXVlX3B0cjxDb25zdHJ1Y3RvckRl
c3RydWN0b3JDb3VudGVyPj4gc2V0OwogCiAgICAgYXV0byB1bmlxdWVQdHIgPSBzdGQ6Om1ha2Vf
dW5pcXVlPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+KCk7Ci0gICAgc2V0LmFkZChXVEY6
Om1vdmUodW5pcXVlUHRyKSk7CisgICAgc2V0LmFkZChXVEZNb3ZlKHVuaXF1ZVB0cikpOwogCiAg
ICAgRVhQRUNUX0VRKDF1LCBDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyOjpjb25zdHJ1Y3Rp
b25Db3VudCk7CiAgICAgRVhQRUNUX0VRKDB1LCBDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVy
OjpkZXN0cnVjdGlvbkNvdW50KTsKQEAgLTE0Miw3ICsxNDIsNyBAQCBURVNUKFdURl9IYXNoU2V0
LCBVbmlxdWVQdHJLZXlfRmluZFVzaW5nUmF3UG9pbnRlcikKIAogICAgIGF1dG8gdW5pcXVlUHRy
ID0gc3RkOjptYWtlX3VuaXF1ZTxpbnQ+KDUpOwogICAgIGludCogcHRyID0gdW5pcXVlUHRyLmdl
dCgpOwotICAgIHNldC5hZGQoV1RGOjptb3ZlKHVuaXF1ZVB0cikpOworICAgIHNldC5hZGQoV1RG
TW92ZSh1bmlxdWVQdHIpKTsKIAogICAgIGF1dG8gaXQgPSBzZXQuZmluZChwdHIpOwogICAgIEFT
U0VSVF9UUlVFKGl0ICE9IHNldC5lbmQoKSk7CkBAIC0xNTYsNyArMTU2LDcgQEAgVEVTVChXVEZf
SGFzaFNldCwgVW5pcXVlUHRyS2V5X0NvbnRhaW5zVXNpbmdSYXdQb2ludGVyKQogCiAgICAgYXV0
byB1bmlxdWVQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPGludD4oNSk7CiAgICAgaW50KiBwdHIgPSB1
bmlxdWVQdHIuZ2V0KCk7Ci0gICAgc2V0LmFkZChXVEY6Om1vdmUodW5pcXVlUHRyKSk7CisgICAg
c2V0LmFkZChXVEZNb3ZlKHVuaXF1ZVB0cikpOwogCiAgICAgRVhQRUNUX0VRKHRydWUsIHNldC5j
b250YWlucyhwdHIpKTsKIH0KQEAgLTE2OSw3ICsxNjksNyBAQCBURVNUKFdURl9IYXNoU2V0LCBV
bmlxdWVQdHJLZXlfUmVtb3ZlVXNpbmdSYXdQb2ludGVyKQogCiAgICAgYXV0byB1bmlxdWVQdHIg
PSBzdGQ6Om1ha2VfdW5pcXVlPENvbnN0cnVjdG9yRGVzdHJ1Y3RvckNvdW50ZXI+KCk7CiAgICAg
Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlciogcHRyID0gdW5pcXVlUHRyLmdldCgpOwotICAg
IHNldC5hZGQoV1RGOjptb3ZlKHVuaXF1ZVB0cikpOworICAgIHNldC5hZGQoV1RGTW92ZSh1bmlx
dWVQdHIpKTsKIAogICAgIEVYUEVDVF9FUSgxdSwgQ29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRl
cjo6Y29uc3RydWN0aW9uQ291bnQpOwogICAgIEVYUEVDVF9FUSgwdSwgQ29uc3RydWN0b3JEZXN0
cnVjdG9yQ291bnRlcjo6ZGVzdHJ1Y3Rpb25Db3VudCk7CkBAIC0xODksNyArMTg5LDcgQEAgVEVT
VChXVEZfSGFzaFNldCwgVW5pcXVlUHRyS2V5X1Rha2VVc2luZ1Jhd1BvaW50ZXIpCiAKICAgICBh
dXRvIHVuaXF1ZVB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8Q29uc3RydWN0b3JEZXN0cnVjdG9yQ291
bnRlcj4oKTsKICAgICBDb25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyKiBwdHIgPSB1bmlxdWVQ
dHIuZ2V0KCk7Ci0gICAgc2V0LmFkZChXVEY6Om1vdmUodW5pcXVlUHRyKSk7CisgICAgc2V0LmFk
ZChXVEZNb3ZlKHVuaXF1ZVB0cikpOwogCiAgICAgRVhQRUNUX0VRKDF1LCBDb25zdHJ1Y3RvckRl
c3RydWN0b3JDb3VudGVyOjpjb25zdHJ1Y3Rpb25Db3VudCk7CiAgICAgRVhQRUNUX0VRKDB1LCBD
b25zdHJ1Y3RvckRlc3RydWN0b3JDb3VudGVyOjpkZXN0cnVjdGlvbkNvdW50KTsKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL05ha2VkUHRyLmNwcCBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV1RGL05ha2VkUHRyLmNwcAppbmRleCAzMTA1NjAyZjczNzYwN2M5
M2QwOTAzZWMxYzI5YmVhY2U4ZmJjMTQ4Li5mNGI0ODM2Y2Q0MDZkZWY0NjhhMWY3ZjM4YzI0NjJk
ZjYxNTg3OWE4IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9OYWtl
ZFB0ci5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvTmFrZWRQdHIuY3Bw
CkBAIC02OCwxNCArNjgsMTQgQEAgVEVTVChXVEZfTmFrZWRQdHIsIEJhc2ljKQogCiAgICAgewog
ICAgICAgICBOYWtlZFB0cjxSZWZMb2dnZXI+IHAxID0gJmE7Ci0gICAgICAgIE5ha2VkUHRyPFJl
ZkxvZ2dlcj4gcDIgPSBXVEY6Om1vdmUocDEpOworICAgICAgICBOYWtlZFB0cjxSZWZMb2dnZXI+
IHAyID0gV1RGTW92ZShwMSk7CiAgICAgICAgIEFTU0VSVF9FUSgmYSwgcDEuZ2V0KCkpOwogICAg
ICAgICBBU1NFUlRfRVEoJmEsIHAyLmdldCgpKTsKICAgICB9CiAKICAgICB7CiAgICAgICAgIE5h
a2VkUHRyPFJlZkxvZ2dlcj4gcDEgPSAmYTsKLSAgICAgICAgTmFrZWRQdHI8UmVmTG9nZ2VyPiBw
MihXVEY6Om1vdmUocDEpKTsKKyAgICAgICAgTmFrZWRQdHI8UmVmTG9nZ2VyPiBwMihXVEZNb3Zl
KHAxKSk7CiAgICAgICAgIEFTU0VSVF9FUSgmYSwgcDEuZ2V0KCkpOwogICAgICAgICBBU1NFUlRf
RVEoJmEsIHAyLmdldCgpKTsKICAgICB9CkBAIC04OSw3ICs4OSw3IEBAIFRFU1QoV1RGX05ha2Vk
UHRyLCBCYXNpYykKIAogICAgIHsKICAgICAgICAgTmFrZWRQdHI8RGVyaXZlZFJlZkxvZ2dlcj4g
cDEgPSAmYTsKLSAgICAgICAgTmFrZWRQdHI8UmVmTG9nZ2VyPiBwMiA9IFdURjo6bW92ZShwMSk7
CisgICAgICAgIE5ha2VkUHRyPFJlZkxvZ2dlcj4gcDIgPSBXVEZNb3ZlKHAxKTsKICAgICAgICAg
QVNTRVJUX0VRKCZhLCBwMS5nZXQoKSk7CiAgICAgICAgIEFTU0VSVF9FUSgmYSwgcDIuZ2V0KCkp
OwogICAgIH0KQEAgLTEzNyw3ICsxMzcsNyBAQCBURVNUKFdURl9OYWtlZFB0ciwgQXNzaWdubWVu
dCkKICAgICAgICAgTmFrZWRQdHI8UmVmTG9nZ2VyPiBwMigmYik7CiAgICAgICAgIEFTU0VSVF9F
USgmYSwgcDEuZ2V0KCkpOwogICAgICAgICBBU1NFUlRfRVEoJmIsIHAyLmdldCgpKTsKLSAgICAg
ICAgcDEgPSBXVEY6Om1vdmUocDIpOworICAgICAgICBwMSA9IFdURk1vdmUocDIpOwogICAgICAg
ICBBU1NFUlRfRVEoJmIsIHAxLmdldCgpKTsKICAgICAgICAgQVNTRVJUX0VRKCZiLCBwMi5nZXQo
KSk7CiAgICAgfQpAQCAtMTY0LDcgKzE2NCw3IEBAIFRFU1QoV1RGX05ha2VkUHRyLCBBc3NpZ25t
ZW50KQogICAgICAgICBOYWtlZFB0cjxEZXJpdmVkUmVmTG9nZ2VyPiBwMigmYyk7CiAgICAgICAg
IEFTU0VSVF9FUSgmYSwgcDEuZ2V0KCkpOwogICAgICAgICBBU1NFUlRfRVEoJmMsIHAyLmdldCgp
KTsKLSAgICAgICAgcDEgPSBXVEY6Om1vdmUocDIpOworICAgICAgICBwMSA9IFdURk1vdmUocDIp
OwogICAgICAgICBBU1NFUlRfRVEoJmMsIHAxLmdldCgpKTsKICAgICAgICAgQVNTRVJUX0VRKCZj
LCBwMi5nZXQoKSk7CiAgICAgfQpAQCAtMTg0LDcgKzE4NCw3IEBAIFRFU1QoV1RGX05ha2VkUHRy
LCBBc3NpZ25tZW50KQogI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XdW5rbm93
bi1wcmFnbWFzIgogI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1Xc2VsZi1tb3Zl
IgogI2VuZGlmCi0gICAgICAgIHB0ciA9IFdURjo6bW92ZShwdHIpOworICAgICAgICBwdHIgPSBX
VEZNb3ZlKHB0cik7CiAjaWYgQ09NUElMRVIoQ0xBTkcpCiAjcHJhZ21hIGNsYW5nIGRpYWdub3N0
aWMgcG9wCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RG
L1JlZi5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9SZWYuY3BwCmluZGV4IDhj
NjIyZDA3Yjc2ZDBjZmVlMDQwYWFmOTc0OTZhZDE5ZTU2MDZlMzMuLmMzNTYwNmUyMzc3NjU5ZmEy
MTBkMDhlNjBlNTc0MGQ2ZDJkYTg5MWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV1RGL1JlZi5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUmVm
LmNwcApAQCAtOTksNyArOTksNyBAQCBURVNUKFdURl9SZWYsIEFzc2lnbm1lbnQpCiAKIHN0YXRp
YyBSZWY8UmVmTG9nZ2VyPiBwYXNzV2l0aFJlZihSZWY8UmVmTG9nZ2VyPiYmIHJlZmVyZW5jZSkK
IHsKLSAgICByZXR1cm4gV1RGOjptb3ZlKHJlZmVyZW5jZSk7CisgICAgcmV0dXJuIFdURk1vdmUo
cmVmZXJlbmNlKTsKIH0KIAogc3RhdGljIFJlZlB0cjxSZWZMb2dnZXI+IHBhc3NXaXRoUGFzc1Jl
ZlB0cihQYXNzUmVmUHRyPFJlZkxvZ2dlcj4gcmVmZXJlbmNlKQpAQCAtMTQzLDcgKzE0Myw3IEBA
IFRFU1QoV1RGX1JlZiwgUmV0dXJuVmFsdWUpCiAKICAgICB7CiAgICAgICAgIFJlZlB0cjxEZXJp
dmVkUmVmTG9nZ2VyPiBwdHIoJmEpOwotICAgICAgICBSZWZQdHI8UmVmTG9nZ2VyPiBwdHIyKFdU
Rjo6bW92ZShwdHIpKTsKKyAgICAgICAgUmVmUHRyPFJlZkxvZ2dlcj4gcHRyMihXVEZNb3ZlKHB0
cikpOwogICAgICAgICBBU1NFUlRfRVEobnVsbHB0ciwgcHRyLmdldCgpKTsKICAgICAgICAgQVNT
RVJUX0VRKCZhLCBwdHIyLmdldCgpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dURi9SZWZQdHIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
VEYvUmVmUHRyLmNwcAppbmRleCA0MjM4ZWU4ZDc1NzE2MzEyNmRmOWJhOTEzOTFjMGNiMDE1OGYz
ODU1Li5hZWJlOThjNDgyZDE1NjNkMTczYzA2MjgyZmZiNjVlMDA5MjJkYjY5IDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9SZWZQdHIuY3BwCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV1RGL1JlZlB0ci5jcHAKQEAgLTY5LDcgKzY5LDcgQEAgVEVTVChX
VEZfUmVmUHRyLCBCYXNpYykKIAogICAgIHsKICAgICAgICAgUmVmUHRyPFJlZkxvZ2dlcj4gcDEg
PSAmYTsKLSAgICAgICAgUmVmUHRyPFJlZkxvZ2dlcj4gcDIgPSBXVEY6Om1vdmUocDEpOworICAg
ICAgICBSZWZQdHI8UmVmTG9nZ2VyPiBwMiA9IFdURk1vdmUocDEpOwogICAgICAgICBBU1NFUlRf
RVEobnVsbHB0ciwgcDEuZ2V0KCkpOwogICAgICAgICBBU1NFUlRfRVEoJmEsIHAyLmdldCgpKTsK
ICAgICB9CkBAIC03Nyw3ICs3Nyw3IEBAIFRFU1QoV1RGX1JlZlB0ciwgQmFzaWMpCiAKICAgICB7
CiAgICAgICAgIFJlZlB0cjxSZWZMb2dnZXI+IHAxID0gJmE7Ci0gICAgICAgIFJlZlB0cjxSZWZM
b2dnZXI+IHAyKFdURjo6bW92ZShwMSkpOworICAgICAgICBSZWZQdHI8UmVmTG9nZ2VyPiBwMihX
VEZNb3ZlKHAxKSk7CiAgICAgICAgIEFTU0VSVF9FUShudWxscHRyLCBwMS5nZXQoKSk7CiAgICAg
ICAgIEFTU0VSVF9FUSgmYSwgcDIuZ2V0KCkpOwogICAgIH0KQEAgLTkzLDcgKzkzLDcgQEAgVEVT
VChXVEZfUmVmUHRyLCBCYXNpYykKIAogICAgIHsKICAgICAgICAgUmVmUHRyPERlcml2ZWRSZWZM
b2dnZXI+IHAxID0gJmE7Ci0gICAgICAgIFJlZlB0cjxSZWZMb2dnZXI+IHAyID0gV1RGOjptb3Zl
KHAxKTsKKyAgICAgICAgUmVmUHRyPFJlZkxvZ2dlcj4gcDIgPSBXVEZNb3ZlKHAxKTsKICAgICAg
ICAgQVNTRVJUX0VRKG51bGxwdHIsIHAxLmdldCgpKTsKICAgICAgICAgQVNTRVJUX0VRKCZhLCBw
Mi5nZXQoKSk7CiAgICAgfQpAQCAtMTIxLDcgKzEyMSw3IEBAIFRFU1QoV1RGX1JlZlB0ciwgQXNz
aWduUGFzc1JlZlRvUmVmUHRyKQogICAgIERlcml2ZWRSZWZMb2dnZXIgYSgiYSIpOwogICAgIHsK
ICAgICAgICAgUmVmPFJlZkxvZ2dlcj4gcGFzc1JlZihhKTsKLSAgICAgICAgUmVmUHRyPFJlZkxv
Z2dlcj4gcHRyID0gV1RGOjptb3ZlKHBhc3NSZWYpOworICAgICAgICBSZWZQdHI8UmVmTG9nZ2Vy
PiBwdHIgPSBXVEZNb3ZlKHBhc3NSZWYpOwogICAgICAgICBBU1NFUlRfRVEoJmEsIHB0ci5nZXQo
KSk7CiAgICAgICAgIHB0ci5yZWxlYXNlKCk7CiAgICAgICAgIEFTU0VSVF9FUShudWxscHRyLCBw
dHIuZ2V0KCkpOwpAQCAtMjA0LDcgKzIwNCw3IEBAIFRFU1QoV1RGX1JlZlB0ciwgQXNzaWdubWVu
dCkKICAgICAgICAgQVNTRVJUX0VRKCZhLCBwMS5nZXQoKSk7CiAgICAgICAgIEFTU0VSVF9FUSgm
YiwgcDIuZ2V0KCkpOwogICAgICAgICBsb2coKSA8PCAifCAiOwotICAgICAgICBwMSA9IFdURjo6
bW92ZShwMik7CisgICAgICAgIHAxID0gV1RGTW92ZShwMik7CiAgICAgICAgIEFTU0VSVF9FUSgm
YiwgcDEuZ2V0KCkpOwogICAgICAgICBBU1NFUlRfRVEobnVsbHB0ciwgcDIuZ2V0KCkpOwogICAg
ICAgICBsb2coKSA8PCAifCAiOwpAQCAtMjUwLDcgKzI1MCw3IEBAIFRFU1QoV1RGX1JlZlB0ciwg
QXNzaWdubWVudCkKICAgICAgICAgQVNTRVJUX0VRKCZhLCBwMS5nZXQoKSk7CiAgICAgICAgIEFT
U0VSVF9FUSgmYywgcDIuZ2V0KCkpOwogICAgICAgICBsb2coKSA8PCAifCAiOwotICAgICAgICBw
MSA9IFdURjo6bW92ZShwMik7CisgICAgICAgIHAxID0gV1RGTW92ZShwMik7CiAgICAgICAgIEFT
U0VSVF9FUSgmYywgcDEuZ2V0KCkpOwogICAgICAgICBBU1NFUlRfRVEobnVsbHB0ciwgcDIuZ2V0
KCkpOwogICAgICAgICBsb2coKSA8PCAifCAiOwpAQCAtMjc1LDcgKzI3NSw3IEBAIFRFU1QoV1RG
X1JlZlB0ciwgQXNzaWdubWVudCkKICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICIt
V3Vua25vd24tcHJhZ21hcyIKICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV3Nl
bGYtbW92ZSIKICNlbmRpZgotICAgICAgICBwdHIgPSBXVEY6Om1vdmUocHRyKTsKKyAgICAgICAg
cHRyID0gV1RGTW92ZShwdHIpOwogI2lmIENPTVBJTEVSKENMQU5HKQogI3ByYWdtYSBjbGFuZyBk
aWFnbm9zdGljIHBvcAogI2VuZGlmCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dURi9WZWN0b3IuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVmVjdG9y
LmNwcAppbmRleCBiZWMyMjQxNDEwZjM3Y2U5MjVmZmViNzczOTQzNzEzYWE3MTczZWIxLi42NTY3
YWM1NTliY2U2MWE1NzY1NTNjMDIyZTBhOWYzZTQ2YTMzOGU3IDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9WZWN0b3IuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV1RGL1ZlY3Rvci5jcHAKQEAgLTI0Nyw3ICsyNDcsNyBAQCBURVNUKFdURl9WZWN0
b3IsIE1vdmVPbmx5X1VuY2hlY2tlZEFwcGVuZCkKICAgICB2ZWN0b3IucmVzZXJ2ZUluaXRpYWxD
YXBhY2l0eSgxMDApOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgMTAwOyArK2kpIHsKICAg
ICAgICAgTW92ZU9ubHkgbW92ZU9ubHkoaSk7Ci0gICAgICAgIHZlY3Rvci51bmNoZWNrZWRBcHBl
bmQoV1RGOjptb3ZlKG1vdmVPbmx5KSk7CisgICAgICAgIHZlY3Rvci51bmNoZWNrZWRBcHBlbmQo
V1RGTW92ZShtb3ZlT25seSkpOwogICAgICAgICBFWFBFQ1RfRVEoMFUsIG1vdmVPbmx5LnZhbHVl
KCkpOwogICAgIH0KIApAQCAtMjYxLDcgKzI2MSw3IEBAIFRFU1QoV1RGX1ZlY3RvciwgTW92ZU9u
bHlfQXBwZW5kKQogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCAxMDA7ICsraSkgewogICAg
ICAgICBNb3ZlT25seSBtb3ZlT25seShpKTsKLSAgICAgICAgdmVjdG9yLmFwcGVuZChXVEY6Om1v
dmUobW92ZU9ubHkpKTsKKyAgICAgICAgdmVjdG9yLmFwcGVuZChXVEZNb3ZlKG1vdmVPbmx5KSk7
CiAgICAgICAgIEVYUEVDVF9FUSgwVSwgbW92ZU9ubHkudmFsdWUoKSk7CiAgICAgfQogCkBAIC0y
NzUsNyArMjc1LDcgQEAgVEVTVChXVEZfVmVjdG9yLCBNb3ZlT25seV9BcHBlbmQpCiAKICAgICAg
ICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCBpOyArK2opCiAgICAgICAgICAgICB2ZWN0b3IuYXBw
ZW5kKGopOwotICAgICAgICB2ZWN0b3IuYXBwZW5kKFdURjo6bW92ZSh2ZWN0b3JbMF0pKTsKKyAg
ICAgICAgdmVjdG9yLmFwcGVuZChXVEZNb3ZlKHZlY3RvclswXSkpOwogCiAgICAgICAgIEVYUEVD
VF9FUSgwVSwgdmVjdG9yWzBdLnZhbHVlKCkpOwogCkBAIC0yOTEsNyArMjkxLDcgQEAgVEVTVChX
VEZfVmVjdG9yLCBNb3ZlT25seV9JbnNlcnQpCiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IDEwMDsgKytpKSB7CiAgICAgICAgIE1vdmVPbmx5IG1vdmVPbmx5KGkpOwotICAgICAgICB2ZWN0
b3IuaW5zZXJ0KDAsIFdURjo6bW92ZShtb3ZlT25seSkpOworICAgICAgICB2ZWN0b3IuaW5zZXJ0
KDAsIFdURk1vdmUobW92ZU9ubHkpKTsKICAgICAgICAgRVhQRUNUX0VRKDBVLCBtb3ZlT25seS52
YWx1ZSgpKTsKICAgICB9CiAKQEAgLTMwMSw3ICszMDEsNyBAQCBURVNUKFdURl9WZWN0b3IsIE1v
dmVPbmx5X0luc2VydCkKIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgMjAwOyBpICs9IDIp
IHsKICAgICAgICAgTW92ZU9ubHkgbW92ZU9ubHkoMTAwMCArIGkpOwotICAgICAgICB2ZWN0b3Iu
aW5zZXJ0KGksIFdURjo6bW92ZShtb3ZlT25seSkpOworICAgICAgICB2ZWN0b3IuaW5zZXJ0KGks
IFdURk1vdmUobW92ZU9ubHkpKTsKICAgICAgICAgRVhQRUNUX0VRKDBVLCBtb3ZlT25seS52YWx1
ZSgpKTsKICAgICB9CiAKQEAgLTMyMCw3ICszMjAsNyBAQCBURVNUKFdURl9WZWN0b3IsIE1vdmVP
bmx5X1Rha2VMYXN0KQogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCAxMDA7ICsraSkgewog
ICAgICAgICBNb3ZlT25seSBtb3ZlT25seShpKTsKLSAgICAgICAgdmVjdG9yLmFwcGVuZChXVEY6
Om1vdmUobW92ZU9ubHkpKTsKKyAgICAgICAgdmVjdG9yLmFwcGVuZChXVEZNb3ZlKG1vdmVPbmx5
KSk7CiAgICAgICAgIEVYUEVDVF9FUSgwVSwgbW92ZU9ubHkudmFsdWUoKSk7CiAgICAgfQogCmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9XVEZTdHJpbmcuY3BwIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvV1RGU3RyaW5nLmNwcAppbmRleCAxM2E2NDk2
MjdmMzAzMGVjYjQ2NzFmYzE1ZWMxYzNkNWM4YjFkZTg0Li5lODA5ZGRhYzQyMjMzYTdkNzVjZWEy
MGEyNGFlZjJjMmNkM2Y1NzUyIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dURi9XVEZTdHJpbmcuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1dU
RlN0cmluZy5jcHAKQEAgLTE1Niw3ICsxNTYsNyBAQCBURVNUKFdURiwgU3RyaW5nUmVwbGFjZVdp
dGhMaXRlcmFsKQogVEVTVChXVEYsIFN0cmluZ0lzb2xhdGVkQ29weSkKIHsKICAgICBTdHJpbmcg
b3JpZ2luYWwgPSAiMTIzNCI7Ci0gICAgYXV0byBjb3B5ID0gV1RGOjptb3ZlKG9yaWdpbmFsKS5p
c29sYXRlZENvcHkoKTsKKyAgICBhdXRvIGNvcHkgPSBXVEZNb3ZlKG9yaWdpbmFsKS5pc29sYXRl
ZENvcHkoKTsKICAgICBBU1NFUlRfRkFMU0Uob3JpZ2luYWwuaW1wbCgpID09IGNvcHkuaW1wbCgp
KTsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvbnMvUmV0
YWluUHRyLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvbnMvUmV0YWluUHRyLm1t
CmluZGV4IDY2ZWI2Njk2NTkyZDEyNGIxOTczYWNjN2FjYmJjNWNiMzI1MTJjYzMuLmY5MjVjZTdj
Zjk1OTM1MDE2ZDUzZWE2MzAxODJhMWQxODIwNTk3ZmMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV1RGL25zL1JldGFpblB0ci5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dURi9ucy9SZXRhaW5QdHIubW0KQEAgLTU1LDcgKzU1LDcgQEAgVEVTVChSZXRh
aW5QdHIsIE1vdmVBc3NpZ25tZW50RnJvbVNhbWVUeXBlKQogICAgIFJldGFpblB0cjxOU1N0cmlu
Zz4gdGVtcCA9IHN0cmluZzsKIAogICAgIC8vIFRoaXMgc2hvdWxkIGludm9rZSBSZXRhaW5QdHIn
cyBtb3ZlIGFzc2lnbm1lbnQgb3BlcmF0b3IuCi0gICAgcHRyID0gV1RGOjptb3ZlKHRlbXApOwor
ICAgIHB0ciA9IFdURk1vdmUodGVtcCk7CiAKICAgICBFWFBFQ1RfRVEoc3RyaW5nLCBwdHIpOwog
ICAgIEVYUEVDVF9FUSgoTlNTdHJpbmcgKikwLCB0ZW1wKTsKQEAgLTc3LDcgKzc3LDcgQEAgVEVT
VChSZXRhaW5QdHIsIE1vdmVBc3NpZ25tZW50RnJvbVNpbWlsYXJUeXBlKQogICAgIFJldGFpblB0
cjxOU011dGFibGVTdHJpbmc+IHRlbXAgPSBzdHJpbmc7CiAKICAgICAvLyBUaGlzIHNob3VsZCBp
bnZva2UgUmV0YWluUHRyJ3MgbW92ZSBhc3NpZ25tZW50IG9wZXJhdG9yLgotICAgIHB0ciA9IFdU
Rjo6bW92ZSh0ZW1wKTsKKyAgICBwdHIgPSBXVEZNb3ZlKHRlbXApOwogCiAgICAgRVhQRUNUX0VR
KHN0cmluZywgcHRyKTsKICAgICBFWFBFQ1RfRVEoKE5TU3RyaW5nICopMCwgdGVtcCk7CkBAIC05
Nyw3ICs5Nyw3IEBAIFRFU1QoUmV0YWluUHRyLCBDb25zdHJ1Y3Rpb25Gcm9tU2FtZVR5cGUpCiAg
ICAgUmV0YWluUHRyPE5TU3RyaW5nPiB0ZW1wID0gc3RyaW5nOwogCiAgICAgLy8gVGhpcyBzaG91
bGQgaW52b2tlIFJldGFpblB0cidzIG1vdmUgY29uc3RydWN0b3IuCi0gICAgUmV0YWluUHRyPE5T
U3RyaW5nPiBwdHIyKFdURjo6bW92ZSh0ZW1wKSk7CisgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBw
dHIyKFdURk1vdmUodGVtcCkpOwogCiAgICAgRVhQRUNUX0VRKHN0cmluZywgcHRyMik7CiAgICAg
RVhQRUNUX0VRKChOU1N0cmluZyAqKTAsIHRlbXApOwpAQCAtMTE3LDcgKzExNyw3IEBAIFRFU1Qo
UmV0YWluUHRyLCBDb25zdHJ1Y3Rpb25Gcm9tU2ltaWxhclR5cGUpCiAgICAgUmV0YWluUHRyPE5T
TXV0YWJsZVN0cmluZz4gdGVtcCA9IHN0cmluZzsKIAogICAgIC8vIFRoaXMgc2hvdWxkIGludm9r
ZSBSZXRhaW5QdHIncyBtb3ZlIGNvbnN0cnVjdG9yLgotICAgIFJldGFpblB0cjxOU1N0cmluZz4g
cHRyMihXVEY6Om1vdmUodGVtcCkpOworICAgIFJldGFpblB0cjxOU1N0cmluZz4gcHRyMihXVEZN
b3ZlKHRlbXApKTsKIAogICAgIEVYUEVDVF9FUShzdHJpbmcsIHB0cjIpOwogICAgIEVYUEVDVF9F
USgoTlNTdHJpbmcgKikwLCB0ZW1wKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9DYWxjdWxhdGlvblZhbHVlLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9DYWxjdWxhdGlvblZhbHVlLmNwcAppbmRleCBlNmNkMTViNTJhYTEwYWI0
ZGU5ZjE5YWFlYzE4YTZhMTY4YzZkY2EzLi4yODZmMzBmZDBkN2Q1YjJiODQwZWU4YWFiMzAxODI1
MDQwZWFkZDQ5IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
Q2FsY3VsYXRpb25WYWx1ZS5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJD
b3JlL0NhbGN1bGF0aW9uVmFsdWUuY3BwCkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKIHN0YXRp
YyBSZWY8V2ViQ29yZTo6Q2FsY3VsYXRpb25WYWx1ZT4gY3JlYXRlVGVzdFZhbHVlKCkKIHsKICAg
ICBhdXRvIG5vZGUgPSBzdGQ6Om1ha2VfdW5pcXVlPENhbGN1bGF0aW9uRGVsZXRpb25UZXN0Tm9k
ZT4oKTsKLSAgICByZXR1cm4gV2ViQ29yZTo6Q2FsY3VsYXRpb25WYWx1ZTo6Y3JlYXRlKFdURjo6
bW92ZShub2RlKSwgV2ViQ29yZTo6Q2FsY3VsYXRpb25SYW5nZUFsbCk7CisgICAgcmV0dXJuIFdl
YkNvcmU6OkNhbGN1bGF0aW9uVmFsdWU6OmNyZWF0ZShXVEZNb3ZlKG5vZGUpLCBXZWJDb3JlOjpD
YWxjdWxhdGlvblJhbmdlQWxsKTsKIH0KIAogVEVTVChDYWxjdWxhdGlvblZhbHVlLCBMZW5ndGhD
b25zdHJ1Y3Rpb24pCkBAIC03Myw3ICs3Myw3IEBAIFRFU1QoQ2FsY3VsYXRpb25WYWx1ZSwgTGVu
Z3RoQ29uc3RydWN0aW9uKQogICAgIHsKICAgICAgICAgV2ViQ29yZTo6TGVuZ3RoIGxlbmd0aEMo
KnZhbHVlKTsKICAgICAgICAgRVhQRUNUX0VRKDJVLCB2YWx1ZS0+cmVmQ291bnQoKSk7Ci0gICAg
ICAgIFdlYkNvcmU6Okxlbmd0aCBsZW5ndGhEKFdURjo6bW92ZShsZW5ndGhDKSk7CisgICAgICAg
IFdlYkNvcmU6Okxlbmd0aCBsZW5ndGhEKFdURk1vdmUobGVuZ3RoQykpOwogICAgICAgICBFWFBF
Q1RfRVEoMlUsIHZhbHVlLT5yZWZDb3VudCgpKTsKICAgICB9CiAKQEAgLTEyMyw3ICsxMjMsNyBA
QCBURVNUKENhbGN1bGF0aW9uVmFsdWUsIExlbmd0aENvbnN0cnVjdGlvblJlbGVhc2VkVmFsdWUp
CiAgICAgICAgIGF1dG8qIHJhd1ZhbHVlID0gdmFsdWUuZ2V0KCk7CiAgICAgICAgIFdlYkNvcmU6
Okxlbmd0aCBsZW5ndGhDKHZhbHVlLnJlbGVhc2VOb25OdWxsKCkpOwogICAgICAgICBFWFBFQ1Rf
RVEoMVUsIHJhd1ZhbHVlLT5yZWZDb3VudCgpKTsKLSAgICAgICAgV2ViQ29yZTo6TGVuZ3RoIGxl
bmd0aEQoV1RGOjptb3ZlKGxlbmd0aEMpKTsKKyAgICAgICAgV2ViQ29yZTo6TGVuZ3RoIGxlbmd0
aEQoV1RGTW92ZShsZW5ndGhDKSk7CiAgICAgICAgIEVYUEVDVF9FUSgxVSwgcmF3VmFsdWUtPnJl
ZkNvdW50KCkpOwogCiAgICAgICAgIEVYUEVDVF9FUSgwVSwgZGVsZXRpb25Db3VudCk7CkBAIC0x
NTMsNyArMTUzLDcgQEAgVEVTVChDYWxjdWxhdGlvblZhbHVlLCBMZW5ndGhBc3NpZ25tZW50KQog
ICAgICAgICBXZWJDb3JlOjpMZW5ndGggbGVuZ3RoQygqdmFsdWUpOwogICAgICAgICBFWFBFQ1Rf
RVEoMlUsIHZhbHVlLT5yZWZDb3VudCgpKTsKICAgICAgICAgV2ViQ29yZTo6TGVuZ3RoIGxlbmd0
aEQ7Ci0gICAgICAgIGxlbmd0aEQgPSBXVEY6Om1vdmUobGVuZ3RoQyk7CisgICAgICAgIGxlbmd0
aEQgPSBXVEZNb3ZlKGxlbmd0aEMpOwogICAgICAgICBFWFBFQ1RfRVEoMlUsIHZhbHVlLT5yZWZD
b3VudCgpKTsKICAgICB9CiAKQEAgLTE4OCw3ICsxODgsNyBAQCBURVNUKENhbGN1bGF0aW9uVmFs
dWUsIExlbmd0aEFzc2lnbm1lbnQpCiAgICAgICAgIEVYUEVDVF9FUSgyVSwgdmFsdWUtPnJlZkNv
dW50KCkpOwogICAgICAgICBXZWJDb3JlOjpMZW5ndGggbGVuZ3RoSCgqdmFsdWUyKTsKICAgICAg
ICAgRVhQRUNUX0VRKDJVLCB2YWx1ZTItPnJlZkNvdW50KCkpOwotICAgICAgICBsZW5ndGhHID0g
V1RGOjptb3ZlKGxlbmd0aEgpOworICAgICAgICBsZW5ndGhHID0gV1RGTW92ZShsZW5ndGhIKTsK
ICAgICAgICAgRVhQRUNUX0VRKDFVLCB2YWx1ZS0+cmVmQ291bnQoKSk7CiAgICAgICAgIEVYUEVD
VF9FUSgyVSwgdmFsdWUyLT5yZWZDb3VudCgpKTsKICAgICB9CkBAIC0yMjYsNyArMjI2LDcgQEAg
VEVTVChDYWxjdWxhdGlvblZhbHVlLCBMZW5ndGhBc3NpZ25tZW50UmVsZWFzZWRWYWx1ZSkKICAg
ICAgICAgV2ViQ29yZTo6TGVuZ3RoIGxlbmd0aEModmFsdWUucmVsZWFzZU5vbk51bGwoKSk7CiAg
ICAgICAgIEVYUEVDVF9FUSgxVSwgcmF3VmFsdWUtPnJlZkNvdW50KCkpOwogICAgICAgICBXZWJD
b3JlOjpMZW5ndGggbGVuZ3RoRDsKLSAgICAgICAgbGVuZ3RoRCA9IFdURjo6bW92ZShsZW5ndGhD
KTsKKyAgICAgICAgbGVuZ3RoRCA9IFdURk1vdmUobGVuZ3RoQyk7CiAgICAgICAgIEVYUEVDVF9F
USgxVSwgcmF3VmFsdWUtPnJlZkNvdW50KCkpOwogCiAgICAgICAgIEVYUEVDVF9FUSgwVSwgZGVs
ZXRpb25Db3VudCk7CkBAIC0yNzEsNyArMjcxLDcgQEAgVEVTVChDYWxjdWxhdGlvblZhbHVlLCBM
ZW5ndGhBc3NpZ25tZW50UmVsZWFzZWRWYWx1ZSkKICAgICAgICAgV2ViQ29yZTo6TGVuZ3RoIGxl
bmd0aEgodmFsdWUyLnJlbGVhc2VOb25OdWxsKCkpOwogICAgICAgICBFWFBFQ1RfRVEoMVUsIHJh
d1ZhbHVlMi0+cmVmQ291bnQoKSk7CiAKLSAgICAgICAgbGVuZ3RoRyA9IFdURjo6bW92ZShsZW5n
dGhIKTsKKyAgICAgICAgbGVuZ3RoRyA9IFdURk1vdmUobGVuZ3RoSCk7CiAgICAgICAgIEVYUEVD
VF9FUSgxVSwgZGVsZXRpb25Db3VudCk7CiAgICAgICAgIEVYUEVDVF9FUSgxVSwgcmF3VmFsdWUy
LT5yZWZDb3VudCgpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvQ29udGVudEV4dGVuc2lvbnMuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL0NvbnRlbnRFeHRlbnNpb25zLmNwcAppbmRleCA1ZjhiMzdhNjdiMmU5MmI4
NWMxNzQ1MDRhMGMwNjY2ZjA4Nzk2NTU3Li5kM2MxMGFmYzdkNzllYTRjM2EzZWU5NWY4NWY3YWMy
MjgwYmM0NDUzIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
Q29udGVudEV4dGVuc2lvbnMuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9Db250ZW50RXh0ZW5zaW9ucy5jcHAKQEAgLTE0NywxOSArMTQ3LDE5IEBAIHB1YmxpYzoK
ICAgICB7CiAgICAgICAgIENvbXBpbGVkQ29udGVudEV4dGVuc2lvbkRhdGEgZXh0ZW5zaW9uRGF0
YTsKICAgICAgICAgSW5NZW1vcnlDb250ZW50RXh0ZW5zaW9uQ29tcGlsYXRpb25DbGllbnQgY2xp
ZW50KGV4dGVuc2lvbkRhdGEpOwotICAgICAgICBhdXRvIGNvbXBpbGVyRXJyb3IgPSBDb250ZW50
RXh0ZW5zaW9uczo6Y29tcGlsZVJ1bGVMaXN0KGNsaWVudCwgV1RGOjptb3ZlKGZpbHRlcikpOwor
ICAgICAgICBhdXRvIGNvbXBpbGVyRXJyb3IgPSBDb250ZW50RXh0ZW5zaW9uczo6Y29tcGlsZVJ1
bGVMaXN0KGNsaWVudCwgV1RGTW92ZShmaWx0ZXIpKTsKICAgICAgICAgaWYgKGNvbXBpbGVyRXJy
b3IpIHsKICAgICAgICAgICAgIC8vIENvbXBpbGluZyBzaG91bGQgYWx3YXlzIHN1Y2NlZWQgaGVy
ZS4gV2UgaGF2ZSBvdGhlciB0ZXN0cyBmb3IgY29tcGlsZSBmYWlsdXJlcy4KICAgICAgICAgICAg
IEVYUEVDVF9UUlVFKGZhbHNlKTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAg
ICB9CiAKLSAgICAgICAgcmV0dXJuIEluTWVtb3J5Q29tcGlsZWRDb250ZW50RXh0ZW5zaW9uOjpj
cmVhdGUoV1RGOjptb3ZlKGV4dGVuc2lvbkRhdGEpKTsKKyAgICAgICAgcmV0dXJuIEluTWVtb3J5
Q29tcGlsZWRDb250ZW50RXh0ZW5zaW9uOjpjcmVhdGUoV1RGTW92ZShleHRlbnNpb25EYXRhKSk7
CiAgICAgfQogCiAgICAgc3RhdGljIFJlZlB0cjxJbk1lbW9yeUNvbXBpbGVkQ29udGVudEV4dGVu
c2lvbj4gY3JlYXRlKENvbXBpbGVkQ29udGVudEV4dGVuc2lvbkRhdGEmJiBkYXRhKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbk1lbW9yeUNvbXBpbGVkQ29udGVudEV4dGVu
c2lvbihXVEY6Om1vdmUoZGF0YSkpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbk1l
bW9yeUNvbXBpbGVkQ29udGVudEV4dGVuc2lvbihXVEZNb3ZlKGRhdGEpKSk7CiAgICAgfQogCiAg
ICAgdmlydHVhbCB+SW5NZW1vcnlDb21waWxlZENvbnRlbnRFeHRlbnNpb24oKQpAQCAtMTc3LDcg
KzE3Nyw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBJbk1lbW9yeUNvbXBpbGVkQ29udGVu
dEV4dGVuc2lvbihDb21waWxlZENvbnRlbnRFeHRlbnNpb25EYXRhJiYgZGF0YSkKLSAgICAgICAg
OiBtX2RhdGEoV1RGOjptb3ZlKGRhdGEpKQorICAgICAgICA6IG1fZGF0YShXVEZNb3ZlKGRhdGEp
KQogICAgIHsKICAgICB9CiAKQEAgLTIyNCw3ICsyMjQsNyBAQCBzdGF0aWMgVmVjdG9yPENvbnRl
bnRFeHRlbnNpb25zOjpORkE+IGNyZWF0ZU5GQXMoQ29udGVudEV4dGVuc2lvbnM6OkNvbWJpbmVk
VVJMRgogICAgIFZlY3RvcjxDb250ZW50RXh0ZW5zaW9uczo6TkZBPiBuZmFzOwogCiAgICAgY29t
YmluZWRVUkxGaWx0ZXJzLnByb2Nlc3NORkFzKHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6
bWF4KCksIFsmXShDb250ZW50RXh0ZW5zaW9uczo6TkZBJiYgbmZhKSB7Ci0gICAgICAgIG5mYXMu
YXBwZW5kKFdURjo6bW92ZShuZmEpKTsKKyAgICAgICAgbmZhcy5hcHBlbmQoV1RGTW92ZShuZmEp
KTsKICAgICB9KTsKIAogICAgIHJldHVybiBuZmFzOwpAQCAtMTA4NSw3ICsxMDg1LDcgQEAgVEVT
VF9GKENvbnRlbnRFeHRlbnNpb25UZXN0LCBMYXJnZUp1bXBzKQogICAgIAogICAgIFZlY3RvcjxD
b250ZW50RXh0ZW5zaW9uczo6TkZBPiBuZmFzOwogICAgIGNvbWJpbmVkVVJMRmlsdGVycy5wcm9j
ZXNzTkZBcyhzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpLCBbJl0oQ29udGVudEV4
dGVuc2lvbnM6Ok5GQSYmIG5mYSkgewotICAgICAgICBuZmFzLmFwcGVuZChXVEY6Om1vdmUobmZh
KSk7CisgICAgICAgIG5mYXMuYXBwZW5kKFdURk1vdmUobmZhKSk7CiAgICAgfSk7CiAgICAgRVhQ
RUNUX0VRKG5mYXMuc2l6ZSgpLCAxdWxsKTsKICAgICAKQEAgLTE0ODEsNyArMTQ4MSw3IEBAIFRF
U1RfRihDb250ZW50RXh0ZW5zaW9uVGVzdCwgU3BsaXR0aW5nTGFyZ2VORkFzKQogICAgICAgICAK
ICAgICAgICAgVmVjdG9yPENvbnRlbnRFeHRlbnNpb25zOjpORkE+IG5mYXM7CiAgICAgICAgIGNv
bWJpbmVkVVJMRmlsdGVycy5wcm9jZXNzTkZBcyhpLCBbJl0oQ29udGVudEV4dGVuc2lvbnM6Ok5G
QSYmIG5mYSkgewotICAgICAgICAgICAgbmZhcy5hcHBlbmQoV1RGOjptb3ZlKG5mYSkpOworICAg
ICAgICAgICAgbmZhcy5hcHBlbmQoV1RGTW92ZShuZmEpKTsKICAgICAgICAgfSk7CiAgICAgICAg
IEVYUEVDVF9FUShuZmFzLnNpemUoKSwgZXhwZWN0ZWRORkFDb3VudHNbaV0pOwogICAgICAgICAK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9ERkFDb21iaW5l
ci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvREZBQ29tYmluZXIuY3Bw
CmluZGV4IDMwYmM4NTk5N2JlNTU2YzgyNGY3ZmViYzQ2OTk0NDMzNjJkYTZiNDcuLmQ1M2ViYjc1
YTM0NmY2Y2RmZGI5YTU2ZWJiZjEwMjgyNjg3OTY3OWYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9ERkFDb21iaW5lci5jcHAKKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJDb3JlL0RGQUNvbWJpbmVyLmNwcApAQCAtNDYsNyArNDYsNyBAQCBW
ZWN0b3I8REZBPiBjb21iaW5lKFZlY3RvcjxERkE+IGRmYXMsIHVuc2lnbmVkIG1pbmltdW1TaXpl
KQogewogICAgIERGQUNvbWJpbmVyIGNvbWJpbmVyOwogICAgIGZvciAoREZBJiBkZmEgOiBkZmFz
KQotICAgICAgICBjb21iaW5lci5hZGRERkEoV1RGOjptb3ZlKGRmYSkpOworICAgICAgICBjb21i
aW5lci5hZGRERkEoV1RGTW92ZShkZmEpKTsKIAogICAgIFZlY3RvcjxERkE+IG91dHB1dDsKICAg
ICBjb21iaW5lci5jb21iaW5lREZBcyhtaW5pbXVtU2l6ZSwgWyZvdXRwdXRdKERGQSYmIGRmYSkg
ewpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0RGQUhlbHBl
cnMuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9ERkFIZWxwZXJzLmgKaW5k
ZXggNDMyYWYyM2NhZjQ3NjVhOTQ2Yjg3MzFiYzA2YmM2NWU3ODQ3ZTZiZS4uOGM2NDAyNzYwYjll
NTI1NzAyMjk2N2FlZmQxYTI2N2M4MDViYjdiNyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL0RGQUhlbHBlcnMuaAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvREZBSGVscGVycy5oCkBAIC00Nyw3ICs0Nyw3IEBAIHN0YXRpYyBWZWN0
b3I8Q29udGVudEV4dGVuc2lvbnM6Ok5GQT4gY3JlYXRlTkZBcyhDb250ZW50RXh0ZW5zaW9uczo6
Q29tYmluZWRVUkxGCiAgICAgVmVjdG9yPENvbnRlbnRFeHRlbnNpb25zOjpORkE+IG5mYXM7CiAK
ICAgICBjb21iaW5lZFVSTEZpbHRlcnMucHJvY2Vzc05GQXMoc3RkOjpudW1lcmljX2xpbWl0czxz
aXplX3Q+OjptYXgoKSwgWyZdKENvbnRlbnRFeHRlbnNpb25zOjpORkEmJiBuZmEpIHsKLSAgICAg
ICAgbmZhcy5hcHBlbmQoV1RGOjptb3ZlKG5mYSkpOworICAgICAgICBuZmFzLmFwcGVuZChXVEZN
b3ZlKG5mYSkpOwogICAgIH0pOwogCiAgICAgcmV0dXJuIG5mYXM7CmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvY29jb2EvV2Vha09iakNQdHIubW0gYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvY29jb2EvV2Vha09iakNQdHIubW0KaW5kZXgg
ZGFmYmJiMzk2NzQ2Y2EyOTI4MTU4Yzg4ZmQ3MGNlZDJkZmE5MGU5YS4uNDgzNTQxOWVmMGI0YTMw
ZWEzZDcyZWI3NjQ3YTAyM2QwYjFlZTExOCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXQyL2NvY29hL1dlYWtPYmpDUHRyLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Mi9jb2NvYS9XZWFrT2JqQ1B0ci5tbQpAQCAtMTQyLDcgKzE0Miw3
IEBAIFRFU1QoV2ViS2l0Ml9XZWFrT2JqQ1B0ciwgTW92ZUNvbnN0cnVjdG9yKQogewogICAgIGlk
IG9iamVjdCA9IFtbTlNPYmplY3QgYWxsb2NdIGluaXRdOwogICAgIFdlYWtPYmpDUHRyPGlkPiB3
ZWFrMShvYmplY3QpOwotICAgIFdlYWtPYmpDUHRyPGlkPiB3ZWFrMihXVEY6Om1vdmUod2VhazEp
KTsKKyAgICBXZWFrT2JqQ1B0cjxpZD4gd2VhazIoV1RGTW92ZSh3ZWFrMSkpOwogCiAgICAgRVhQ
RUNUX0VRKHdlYWsxLmdldCgpLCAodm9pZCopbmlsKTsKICAgICBFWFBFQ1RfRVEod2VhazIuZ2V0
KCksIG9iamVjdCk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dDJHdGsvV2ViUHJvY2Vzc1Rlc3QuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXQyR3RrL1dlYlByb2Nlc3NUZXN0LmNwcAppbmRleCBjY2Q2ZjE3OWFmOWYxNzg2NzE5MGE1ODkz
Y2QwZmU3NmZhNTc4ZWUwLi5iYzA1ODY5M2Q3NjE5OGNmOTAyZTI5ZmZkYjk1OGQ1M2FhNjhiYTk2
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvV2ViUHJv
Y2Vzc1Rlc3QuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9X
ZWJQcm9jZXNzVGVzdC5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgc3RhdGljIFRlc3RzTWFwJiB0ZXN0
c01hcCgpCiAKIHZvaWQgV2ViUHJvY2Vzc1Rlc3Q6OmFkZChjb25zdCBTdHJpbmcmIHRlc3ROYW1l
LCBzdGQ6OmZ1bmN0aW9uPHN0ZDo6dW5pcXVlX3B0cjxXZWJQcm9jZXNzVGVzdD4gKCk+IGNsb3N1
cmUpCiB7Ci0gICAgdGVzdHNNYXAoKS5hZGQodGVzdE5hbWUsIFdURjo6bW92ZShjbG9zdXJlKSk7
CisgICAgdGVzdHNNYXAoKS5hZGQodGVzdE5hbWUsIFdURk1vdmUoY2xvc3VyZSkpOwogfQogCiB2
b2lkIFdlYlByb2Nlc3NUZXN0Ojphc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVz
KEdPYmplY3QqIG9iamVjdCkK
</data>

          </attachment>
      

    </bug>

</bugzilla>